{"version":3,"file":"kendo.window.min.js","names":["factory","define","amd","$","undefined$1","templates","kendo","window","Widget","ui","TabKeyTrap","Popup","Draggable","isPlainObject","activeElement","_activeElement","outerWidth","_outerWidth","outerHeight","_outerHeight","extend","each","template","BODY","NS","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KCONTENTFRAME","LOADING","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","VISIBLE","HIDDEN","CURSOR","OPEN","ACTIVATE","DEACTIVATE","CLOSE","REFRESH","RESIZESTART","RESIZEEND","DRAGSTART","DRAGEND","RESTORE","ERROR","OVERFLOW","DATADOCOVERFLOWRULE","ZINDEX","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","WINDOWEVENTSHANDLED","zero","isLocalUrl","SIZE","small","medium","large","defined","x","toInt","element","property","parseInt","css","constrain","value","low","high","isNaN","toString","indexOf","Math","max","min","Infinity","executableScript","this","type","toLowerCase","getPosition","elem","result","top","offsetTop","left","offsetLeft","parent","offsetParent","parentOverflowX","parentOverflowY","scrollTop","scrollLeft","Window","init","options","wrapper","visibility","display","position","content","windowContent","globalWindow","id","that","offset","suppressActions","actions","length","fn","call","appendTo","containment","draggable","first","url","find","filter","remove","is","document","body","contains","visible","closest","addClass","attr","_createWindow","title","_dimensions","minTop","minLeft","maxTop","maxLeft","_position","refresh","toFront","modal","children","_overlay","opacity","on","_buttonEnter","bind","_buttonLeave","_windowActionHandler","_keydown","_focus","_blur","_keydownContent","data","widgetInstance","not","i","_resizable","_draggable","pinned","pin","role","add","support","mousedown","touchScroller","_resizeHandler","_onDocumentResize","_marker","guid","substring","trigger","notify","_tabKeyTrap","trap","shouldTrap","e","currentTarget","removeClass","width","height","maxHeight","sizeClass","size","dimensions","contentBoxSizing","lrBorderWidth","tbBorderWidth","paddingTop","_isPinned","_updateBoundaries","maxWidth","minWidth","minHeight","hide","containmentTop","containmentLeft","parseFloat","Number","replace","innerWidth","innerHeight","clientWidth","scrollbar","clientHeight","_animationOptions","animation","open","effects","close","_resize","resize","resizable","resizing","off","destroy","target","toggleMaximization","split","index","handler","append","resizeHandle","WindowResizing","dragging","WindowDragging","dragHandle","_actions","container","windowSpecificCommands","map","action","name","html","render","setOptions","doc","cachedOptions","JSON","parse","stringify","_containerScrollTop","_containerScrollLeft","scrollable","restore","_enableDocumentScrolling","events","zoom","direction","fade","duration","properties","scale","autoFocus","isMaximized","isMinimized","_closable","inArray","keys","keyCode","ESC","stopPropagation","_close","handled","newWidth","newHeight","w","h","distance","_closing","altKey","unpin","UP","maximize","DOWN","minimize","getOffset","ctrlKey","LEFT","RIGHT","preventDefault","overlay","zIndex","insertBefore","preventScroll","_stopDocumentScrolling","_actionForIcon","icon","exec","className","_modals","windowInstance","windowElements","modals","_object","push","sort","a","b","style","widget","center","newTop","newLeft","documentWindow","_scrollIsAppended","encoded","titleBar","titleElement","arguments","text","htmlEncode","prepend","titlebar","scrollContainer","angular","elements","empty","dataItem","otherModalsVisible","showOptions","contentElement","kendoStop","Fade","overlayFx","fx","fadeIn","endValue","play","show","kendoAnimate","complete","_activate","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","fadeOut","startValue","last","systemTriggered","defaultPrevented","userTriggered","reverse","_deactivate","iframe","lastModal","_actionable","_shouldFocus","active","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","setTimeout","focus","windowTop","restoreOptions","end","removeAttr","_sizingAction","actionId","callback","eq","before","toggle","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","get","overflow","removeData","win","wnd","zoomLevel","showIframe","initOptions","src","contentFrame","_triggerRefresh","_ajaxRequest","toggleClass","_ajaxComplete","clearTimeout","_loadingIconTimeout","_ajaxError","xhr","status","_ajaxSuccess","contentTemplate","prop","_showLoading","ajax","dataType","cache","error","success","_destroy","unbind","iframeSrcAttributes","contentHtml","isRtl","getAttribute","editor","owner","_preventDragging","group","dragstart","drag","dragend","userEvents","addOverlay","removeOverlay","dragcancel","ref","prototype","elementPadding","initialPosition","resizeDirection","initialSize","containerOffset","marginTop","marginLeft","test","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","rtl","leftRtlOffset","scrollOffset","location","y","newWindowTop","reset","initialWindowPosition","initialPointerPosition","startPosition","client","axis","transforms","_finishDrag","plugin","jQuery"],"sources":["kendo.window.js"],"mappings":"CAAA,SAAWA,GACW,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,wBAAyB,mBAAoBD,GAClGA,IAFJ,EAGG,YAeK,SAAUG,EAAGC,GACT,IAYIC,EAZAC,EAAQC,OAAOD,MACfE,EAASF,EAAMG,GAAGD,OAClBE,EAAaJ,EAAMG,GAAGE,MAAMD,WAC5BE,EAAYN,EAAMG,GAAGG,UACrBC,EAAgBV,EAAEU,cAClBC,EAAgBR,EAAMS,eACtBC,EAAaV,EAAMW,YACnBC,EAAcZ,EAAMa,aACpBC,EAASjB,EAAEiB,OACXC,EAAOlB,EAAEkB,KACTC,EAAWhB,EAAMgB,SACjBC,EAAO,OAEPC,EAAK,eACLC,EAAW,oBAEXC,EAAU,YACVC,EAAe,kBACfC,EAAkBD,EAAe,MACjCE,EAAiB,oBAEjBC,EAAuB,mBACvBC,EAAW,aACXC,EAAgB,kBAChBC,EAAU,cACVC,EAAc,UACdC,EAAgB,UAChBC,EAAiB,qBACjBC,EAAc,wBAEdC,EAAU,WACVC,EAAS,SACTC,EAAS,SAETC,EAAO,OACPC,EAAW,WACXC,EAAa,aACbC,EAAQ,QACRC,EAAU,UAGVC,EAAc,cAEdC,EAAY,YACZC,EAAY,YACZC,EAAU,UACVC,EAAU,UAEVC,EAAQ,QACRC,EAAW,WACXC,EAAsB,yBACtBC,EAAS,SACTC,EAAoB,gFACpBC,EAAO,WACPC,EAAS,aACTC,EAAYF,EAAO,IAAMC,EACzBE,EAAmB,sCACnBC,EAAc,kCACdC,EAAsB,sBACtBC,EAAO,aACPC,GAAazD,EAAMyD,WACnBC,GAAO,CACHC,MAAO,cACPC,OAAQ,cACRC,MAAO,eAGf,SAASC,GAAQC,GACb,YAAoB,IAALA,EAGnB,SAASC,GAAMC,EAASC,GACpB,OAAOC,SAASF,EAAQG,IAAIF,GAAW,KAAO,EAGlD,SAASG,GAAUC,EAAOC,EAAKC,GAY3B,OATIF,GAASG,MAAMH,IAAUA,EAAMI,WAAWC,QAAQ,MAAQ,EACxCL,EAEAM,KAAKC,IACnBD,KAAKE,IAAIX,SAASG,EAAO,IAAKE,IAASO,IAAWP,EAAOL,SAASK,EAAM,KACxED,KAASQ,IAAWR,EAAMJ,SAASI,EAAK,KAOpD,SAASS,KACL,OAAQC,KAAKC,MAAQD,KAAKC,KAAKC,cAAcR,QAAQ,WAAa,EAItE,SAASS,GAAYC,GAIjB,IAHA,IAAIC,EAAS,CAAEC,IAAKF,EAAKG,UAAWC,KAAMJ,EAAKK,YAC3CC,EAASN,EAAKO,aAEXD,GAAQ,CACXL,EAAOC,KAAOI,EAAOH,UACrBF,EAAOG,MAAQE,EAAOD,WAEtB,IAAIG,EAAkBhG,EAAE8F,GAAQvB,IAAI,aAChC0B,EAAkBjG,EAAE8F,GAAQvB,IAAI,aAEZ,SAApB0B,GAAkD,WAApBA,IAC9BR,EAAOC,KAAOI,EAAOI,WAGD,SAApBF,GAAkD,WAApBA,IAC9BP,EAAOG,MAAQE,EAAOK,YAG1BL,EAASA,EAAOC,aAGpB,OAAON,EAGX,IAAIW,GAAS/F,EAAOY,OAAO,CACvBoF,KAAM,SAASjC,EAASkC,GACpB,IACIC,EAEAC,EAAYC,EAASC,EAErBC,EACAC,EAEAC,EAEAC,EAVAC,EAAO3B,KAEP4B,EAAS,GAOTC,EAAkBX,GAAWA,EAAQY,UAAYZ,EAAQY,QAAQC,OAGrE9G,EAAO+G,GAAGf,KAAKgB,KAAKN,EAAM3C,EAASkC,GAEnCI,GADAJ,EAAUS,EAAKT,SACII,SACnBtC,EAAU2C,EAAK3C,QACfuC,EAAUL,EAAQK,QAClBE,EAAe7G,EAAEI,QAEb6G,IACAX,EAAQY,QAAU,IAGtBH,EAAKO,SAAWtH,EAAEsG,EAAQgB,UAE1BP,EAAKQ,YAAcjB,EAAQkB,UAAUD,YAAcvH,EAAEsG,EAAQkB,UAAUD,aAAaE,QAAU,KAE1Fd,IAAYjG,EAAciG,KAC1BA,EAAUL,EAAQK,QAAU,CAAEe,IAAKf,IAIvCvC,EAAQuD,KAAK,UAAUC,OAAOzC,IAAkB0C,SAE3CzD,EAAQ0B,SAASgC,GAAGf,EAAKO,WAAcP,EAAKQ,aAAgBb,EAAShB,MAAQzF,GAAeyG,EAASd,OAAS3F,IAC3GmE,EAAQ0D,GAAG3F,IACX6E,EAAS5C,EAAQ4C,UACL,IAEZR,EAAapC,EAAQG,IAAI,cACzBkC,EAAUrC,EAAQG,IAAI,WAEtBH,EAAQG,IAAI,CAAEiC,WAAYpE,EAAQqE,QAAS,KAGvCO,EADAe,SAASC,KAAKC,SAAS7D,EAAQ,IACtBA,EAAQ4C,SAER,CAAEtB,IAAK,EAAGE,KAAM,GAG7BxB,EAAQG,IAAI,CAAEiC,WAAYA,EAAYC,QAASA,KAG/CC,EAAShB,MAAQzF,IACjByG,EAAShB,IAAMsB,EAAOtB,KAEtBgB,EAASd,OAAS3F,IAClByG,EAASd,KAAOoB,EAAOpB,OAI1B3B,GAAQqC,EAAQ4B,UAAgC,OAApB5B,EAAQ4B,UACrC5B,EAAQ4B,QAAU9D,EAAQ0D,GAAG3F,IAGjCoE,EAAUQ,EAAKR,QAAUnC,EAAQ+D,QAAQ5G,GAEpC6C,EAAQ0D,GAAG,sBAAyBvB,EAAQ,KAC7CnC,EAAQgE,SAAS,oBACjBhE,EAAQiE,KAAK,WAAY,GACzBtB,EAAKuB,cAAclE,EAASkC,GAC5BC,EAAUQ,EAAKR,QAAUnC,EAAQ+D,QAAQ5G,GAEzCwF,EAAKwB,MAAMxB,EAAKT,QAAQiC,OACxBxB,EAAKyB,eAGTzB,EAAK0B,OAAS1B,EAAK2B,SAAWxD,IAC9B6B,EAAK4B,OAAS5B,EAAK6B,QAAU1D,IAC7B6B,EAAK8B,YAEDlC,GACAI,EAAK+B,QAAQnC,GAGbL,EAAQ4B,SACRnB,EAAKgC,QAAQ,MAAOzC,EAAQ0C,OAGhCpC,EAAgBL,EAAQ0C,SAASvH,GAE7B4E,EAAQ4B,SAAW5B,EAAQ0C,OAC3BjC,EAAKmC,SAAS3C,EAAQuB,GAAG3F,IAAUoC,IAAI,CAAE4E,QAAS,KAGtD5C,EACK6C,GAAG,aAAe/H,EAAImC,EAAkBuD,EAAKsC,aAAaC,KAAKvC,IAC/DqC,GAAG,aAAe/H,EAAImC,EAAkBuD,EAAKwC,aAAaD,KAAKvC,IAC/DqC,GAAG,QAAU/H,EAAI,KAAOmC,EAAkBuD,EAAKyC,qBAAqBF,KAAKvC,IACzEqC,GAAG,UAAY/H,EAAI0F,EAAMA,EAAK0C,SAASH,KAAKvC,IAC5CqC,GAAG,QAAU/H,EAAI0F,EAAK2C,OAAOJ,KAAKvC,IAClCqC,GAAG,OAAS/H,EAAI0F,EAAK4C,MAAML,KAAKvC,IAErCH,EACKwC,GAAG,UAAY/H,EAAI0F,EAAMA,EAAK6C,gBAAgBN,KAAKvC,IAE1CH,EAAce,KAAK,IAAM9F,GAAe,KAElCgF,EAAagD,KAAKnG,KAElCmD,EAAauC,GAAG,OAAS/H,GAAI,WACzB,IAAI+C,EAAUpE,EAAE+H,SAASpH,eAAemF,OAAOpE,GAC3C0C,EAAQ+C,QACahH,EAAM2J,eAAe1F,GAC3BsF,YAIvB7C,EAAauC,GAAG,QAAU/H,GAAI,WAC1BrB,EAAE0B,GAAgBqI,IA7Nb,qBA6NiC7I,MAAK,SAAS8I,EAAG5F,GACnDjE,EAAM2J,eAAe9J,EAAEoE,IAAUuF,cAIzC9C,EAAagD,KAAKnG,GAAqB,IAG3C0B,KAAK6E,aAEL7E,KAAK8E,aAED5D,EAAQ6D,QAAU/E,KAAKmB,QAAQuB,GAAG,aAClCf,EAAKqD,OAGTtD,EAAK1C,EAAQiE,KAAK,SAEdvB,GAAU,aACVP,EAAQ8B,KAAK,CACLgC,KAAQ,SACR,kBAAmBvD,IACpBmC,SAASxH,GACXwH,SAASzH,GACT6G,KAAK,KAAMvB,IAGpBP,EAAQ+D,IAAI/D,EAAQ0C,SAAS,oBAAsBxH,IAC9C2H,GAAGjJ,EAAMoK,QAAQC,UAAYnJ,EAAI0F,EAAKgC,QAAQO,KAAKvC,IAExDA,EAAK0D,cAAgBtK,EAAMsK,cAAcrG,GAEzC2C,EAAK2D,eAAiB3D,EAAK4D,kBAAkBrB,KAAKvC,GAElDA,EAAK6D,QAAUzK,EAAM0K,OAAOC,UAAU,EAAG,GAEzC9K,EAAEI,QAAQgJ,GAAG,SAAW/H,EAAK0F,EAAK6D,QAAS7D,EAAK2D,gBAE5CpE,EAAQ4B,UACRnB,EAAKgE,QAAQzI,GACbyE,EAAKgE,QAAQxI,IAGjBpC,EAAM6K,OAAOjE,GAET3B,KAAKkB,QAAQ0C,QACb5D,KAAK6F,YAAc,IAAI1K,EAAWgG,GAClCnB,KAAK6F,YAAYC,OACjB9F,KAAK6F,YAAYE,WAAa,WAC1B,OAAO5E,EAAQsD,KAAK,cAKhCR,aAAc,SAAS+B,GACnBpL,EAAEoL,EAAEC,eAAejD,SAASrG,IAGhCwH,aAAc,SAAS6B,GACnBpL,EAAEoL,EAAEC,eAAeC,YAAYvJ,IAGnC2H,OAAQ,WACJtE,KAAKmB,QAAQ6B,SAASpG,IAG1B2H,MAAO,WACHvE,KAAKmB,QAAQ+E,YAAYtJ,IAG7BwG,YAAa,WACT,IAAIjC,EAAUnB,KAAKmB,QACfD,EAAUlB,KAAKkB,QACfiF,EAAQjF,EAAQiF,MAChBC,EAASlF,EAAQkF,OACjBC,EAAYnF,EAAQmF,UACpBC,EAAYpF,EAAQqF,KACpBC,EAAa,CAAC,WAAW,YAAY,WAAW,aAChDC,EAAgD,eAA7BtF,EAAQhC,IAAI,cAE/BuH,EAAgBD,EAAmB1H,GAAMoC,EAAS,qBAAuBpC,GAAMoC,EAAS,sBAAwB,EAChHwF,EAAgBF,EAAmB1H,GAAMoC,EAAS,oBAAsBpC,GAAMoC,EAAS,uBAAyB,EAChHyF,EAAaH,EAAmB1H,GAAMoC,EAAS,eAAiB,EAEhEnB,KAAKmC,cAAgBnC,KAAK6G,YAC1B7G,KAAK8G,oBACL5F,EAAQmF,UAAY1G,KAAKE,IAAIG,KAAKmC,YAAYiE,QAAUO,EAAgBC,GAAaP,GACrFnF,EAAQ6F,SAAWpH,KAAKE,IAAIG,KAAKmC,YAAYgE,MAAQO,EAAexF,EAAQ6F,WAGhF,IAAK,IAAInC,EAAI,EAAGA,EAAI4B,EAAWzE,OAAQ6C,IAAK,CACxC,IAAIvF,EAAQ6B,EAAQsF,EAAW5B,KAAO,GAClCvF,GAASS,KACTqB,EAAQhC,IAAIqH,EAAW5B,GAAIvF,GAI/BgH,GAAavG,KACbE,KAAKhB,QAAQG,IAAI,YAAakH,GAG9BF,EACAhF,EAAQ1F,WAAW2D,GAAU+G,EAAOjF,EAAQ8F,SAAU9F,EAAQ6F,WAG9D5F,EAAQ1F,WAAW,IAGnB2K,EACAjF,EAAQxF,YAAYyD,GAAUgH,EAAQlF,EAAQ+F,UAAW/F,EAAQmF,YAGjElF,EAAQxF,YAAY,IAGnBuF,EAAQ4B,SACT3B,EAAQ+E,YAAYpJ,GAAaoK,OAGjCZ,GAAa7H,GAAK6H,IAClBnF,EAAQ6B,SAASvE,GAAK6H,KAI9B7C,UAAW,WACP,IAEI0D,EAAgBC,EAFhBjG,EAAUnB,KAAKmB,QACfG,EAAWtB,KAAKkB,QAAQI,SAG5BtB,KAAK8G,oBAED9G,KAAKmC,cACLb,EAAShB,IAAMgB,EAAShB,KAAO,EAC/BgB,EAASd,KAAOc,EAASd,MAAQ,EAEjC2G,EAAiB7F,EAAShB,IAAIb,WAAWC,QAAQ,KAAO,EACpDR,SAASc,KAAKmC,YAAYiE,QAAUiB,WAAW/F,EAAShB,KAAO,KAAM,IACrEgB,EAAShB,IAEb8G,EAAkB9F,EAASd,KAAKf,WAAWC,QAAQ,KAAO,EACtDR,SAASc,KAAKmC,YAAYgE,OAASkB,WAAW/F,EAASd,MAAQ,KAAM,IACrEc,EAASd,KAEbc,EAAShB,IAAMlB,GAAU+H,EAAgBnH,KAAKqD,OAAQrD,KAAKuD,QAC3DjC,EAASd,KAAOpB,GAAUgI,EAAiBpH,KAAKsD,QAAStD,KAAKwD,UAG9DlC,EAAShB,KAAOgB,EAAShB,IAAIb,WAAWC,QAAQ,MAAQ,IACxD4B,EAAShB,IAAMgH,OAAOhG,EAAShB,IAAIiH,QAAQ,KAAM,MAGjDjG,EAASd,MAAQc,EAASd,KAAKf,WAAWC,QAAQ,MAAQ,IAC1D4B,EAASd,KAAO8G,OAAOhG,EAASd,KAAK+G,QAAQ,KAAM,MAGlC,IAAjBjG,EAAShB,MACTgB,EAAShB,IAAMgB,EAAShB,IAAIb,YAGV,IAAlB6B,EAASd,OACTc,EAASd,KAAOc,EAASd,KAAKf,YAGlC0B,EAAQhC,IAAI,CACRmB,IAAKgB,EAAShB,KAAO,GACrBE,KAAMc,EAASd,MAAQ,MAI/BsG,kBAAmB,WACf,IAAI3E,EAAcnC,KAAKmC,YAEvB,IAAKA,EACD,OAAO,KAGXA,EAAYgE,MAAQhE,EAAYqF,aAChCrF,EAAYiE,OAASjE,EAAYsF,cAE7BvI,SAASiD,EAAYgE,MAAO,IAAMhE,EAAY,GAAGuF,cACjDvF,EAAYgE,OAASpL,EAAMoK,QAAQwC,aAGnCzI,SAASiD,EAAYiE,OAAQ,IAAMjE,EAAY,GAAGyF,eAClDzF,EAAYiE,QAAUrL,EAAMoK,QAAQwC,aAGxCxF,EAAYb,SAAWnB,GAAYgC,EAAY,IAE3CnC,KAAK6G,WACL7G,KAAKqD,OAASrD,KAAKsD,SAAWxD,IAC9BE,KAAKuD,OAASvD,KAAKwD,QAAU1D,MAE7BE,KAAKqD,OAASlB,EAAYrB,YAC1Bd,KAAKsD,QAAUnB,EAAYpB,aAC3Bf,KAAKwD,QAAUxD,KAAKsD,QAAUnB,EAAYgE,MAAQ1K,EAAWuE,KAAKmB,SAAS,GAC3EnB,KAAKuD,OAASvD,KAAKqD,OAASlB,EAAYiE,OAASzK,EAAYqE,KAAKmB,SAAS,KAInF0G,kBAAmB,SAASnG,GACxB,IAAIoG,EAAY9H,KAAKkB,QAAQ4G,UAM7B,OAAOA,GAAaA,EAAUpG,IALT,CACjBqG,KAAM,CAAEC,QAAS,IACjBC,MAAO,CAAEf,MAAM,EAAMc,QAAS,KAGkBtG,IAGxDwG,QAAS,WACLnN,EAAMoN,OAAOnI,KAAKhB,QAAQ6E,aAG9BgB,WAAY,WACR,IAAIuD,EAAYpI,KAAKkB,QAAQkH,UACzBjH,EAAUnB,KAAKmB,QAEfnB,KAAKqI,WACLlH,EACKmH,IAAI,WAAarM,GACjB4H,SAAStH,GAAsBkG,SAEpCzC,KAAKqI,SAASE,UACdvI,KAAKqI,SAAW,MAGhBD,IACAjH,EAAQ6C,GAAG,WAAa/H,EAAII,EAAiB,SAAU2J,GAC9CpL,EAAEoL,EAAEwC,QAAQzF,QAAQ,oBAAoBhB,QACzC/B,KAAKyI,sBAEVvE,KAAKlE,OAERlE,EAAK,sBAAsB4M,MAAM,MAAM,SAASC,EAAOC,GACnDzH,EAAQ0H,OAAO/N,EAAUgO,aAAaF,OAG1C5I,KAAKqI,SAAW,IAAIU,GAAe/I,OAGvCmB,EAAU,MAGd2D,WAAY,WACR,IAAI1C,EAAYpC,KAAKkB,QAAQkB,UAEzBpC,KAAKgJ,WACLhJ,KAAKgJ,SAAST,UACdvI,KAAKgJ,SAAW,MAEhB5G,IACApC,KAAKgJ,SAAW,IAAIC,GAAejJ,KAAMoC,EAAU8G,YAAc7M,KAIzE8M,SAAU,WACN,IAAIjI,EAAUlB,KAAKkB,QACfY,EAAUZ,EAAQY,QAClBiD,EAAS7D,EAAQ6D,OAEjBqE,EADWpJ,KAAKmB,QAAQ0C,SAASxH,GACZkG,KAAK,qBAC1B8G,EAAyB,CAAE,WAAY,YAE3CvH,EAAUlH,EAAE0O,IAAIxH,GAAS,SAASyH,GAE9B,OADAA,EAASxE,GAAmC,QAAzBwE,EAAOrJ,cAA0B,QAAUqJ,EACvD,CAAEC,KAAOH,EAAuB3J,QAAQ6J,EAAOrJ,gBAAmB,EAAK,UAAYqJ,EAASA,MAGvGH,EAAUK,KAAK1O,EAAM2O,OAAO5O,EAAUyO,OAAQzH,KAGlD6H,WAAY,SAASzI,GACjB,IAAIS,EAAO3B,KACPsG,EAAY3E,EAAKT,QAAQqF,KACzBqD,EAAM5J,KAAKmC,cAAgBR,EAAKkF,UAAY7G,KAAKmC,YAAcvH,EAAE+H,UAEjEkH,EAAgBC,KAAKC,MAAMD,KAAKE,UAAU9I,IAC9CrF,EAAOqF,EAAQI,SAAUK,EAAKT,QAAQI,UACtCzF,EAAOqF,EAAQI,SAAUuI,EAAcvI,UAEvCK,EAAKsI,oBAAsBL,EAAI9I,YAC/Ba,EAAKuI,qBAAuBN,EAAI7I,aAEhC9F,EAAO+G,GAAG2H,WAAW1H,KAAKN,EAAMT,GAChC,IAAIiJ,GAAyC,IAA5BxI,EAAKT,QAAQiJ,WAe9B,GAbAxI,EAAKyI,eAEwB,IAAlBlJ,EAAQiC,OACfxB,EAAKwB,MAAMjC,EAAQiC,OAGvBxB,EAAKR,QAAQ+E,YAAYzH,GAAK6H,IAC9B3E,EAAKyB,cAELzB,EAAK8B,YACL9B,EAAKkD,aACLlD,EAAKmD,aACLnD,EAAKwH,gBACwB,IAAlBjI,EAAQ0C,MAAuB,CACtC,IAAId,GAAmC,IAAzBnB,EAAKT,QAAQ4B,QAC3BnB,EAAK0I,2BACL1I,EAAKmC,SAAS5C,EAAQ0C,OAASd,GAGnCnB,EAAK3C,QAAQG,IAAItB,EAAUsM,EAAa,GAAK,WAGjDG,OAAQ,CACJpN,EACAC,EACAC,EACAC,EAngBO,WACA,WAqgBPC,EACAK,EACAJ,EArgBK,SAugBLC,EACAC,EACAC,EApgBW,eAsgBXE,GAGJsD,QAAS,CACLsI,KAAM,SACN1B,UAAW,CACPC,KAAM,CACFC,QAAS,CAAEuC,KAAM,CAAEC,UAAW,MAAQC,KAAM,CAAED,UAAW,OACzDE,SAAU,KAEdzC,MAAO,CACHD,QAAS,CAAEuC,KAAM,CAAEC,UAAW,MAAOG,WAAY,CAAEC,MAAO,KAASH,KAAM,CAAED,UAAW,QACtFE,SAAU,IACVxD,MAAM,IAGd/D,MAAO,GACPrB,QAAS,CAAC,SACV+I,WAAW,EACXjH,OAAO,EACP2C,KAAM,OACN6B,WAAW,EACXhG,WAAW,EACX4E,SAAU,GACVC,UAAW,GACXF,SAAUjH,IACVuG,UAAWvG,IACXiF,QAAQ,EACRoF,YAAY,EACZ7I,SAAU,GACVC,QAAS,KACTuB,QAAS,KACTsD,OAAQ,KACRD,MAAO,KACPjE,SAAU,OACV4I,aAAa,EACbC,aAAa,GAGjBC,UAAW,WACP,OAAOpQ,EAAEqQ,QAAQ,QAASrQ,EAAE0O,IAAItJ,KAAKkB,QAAQY,SAAS,SAAShD,GAAK,OAAOA,EAAEoB,mBAAsB,GAGvGsE,gBAAiB,SAASwB,GACtB,IACIkF,EAAOnQ,EAAMmQ,KACHlF,EAAEmF,SAEDD,EAAKE,KAJTpL,KAIqBgL,cAC5BhF,EAAEqF,kBALKrL,KAMFsL,QAAO,KAIpBjH,SAAU,SAAS2B,GACf,IAKIpE,EAAQ2J,EAIRC,EAAUC,EAAWC,EAAGC,EATxBhK,EAAO3B,KACPkB,EAAUS,EAAKT,QACfgK,EAAOnQ,EAAMmQ,KACbC,EAAUnF,EAAEmF,QACZhK,EAAUQ,EAAKR,QAEfyK,EAAW,GACXd,EAAc5J,EAAQ4J,YACtBC,EAAc7J,EAAQ6J,YAGtBI,GAAWD,EAAKE,KAAOzJ,EAAKqJ,cAC5BhF,EAAEqF,kBACF1J,EAAK2J,QAAO,IAGZtF,EAAEwC,QAAUxC,EAAEC,eAAiBtE,EAAKkK,WAKpC7F,EAAE8F,QAAqB,IAAXX,GACZxJ,EAAK+B,UAILsC,EAAE8F,QAAqB,IAAXX,IACRxJ,EAAKT,QAAQ6D,OACbpD,EAAKoK,QAELpK,EAAKqD,OAKTgB,EAAE8F,QAAUX,GAAWD,EAAKc,GACxBjB,GACApJ,EAAKyI,UACLzI,EAAKR,QAAQwE,QAAQ,UACbmF,IACRnJ,EAAKsK,WACLtK,EAAKR,QAAQwE,QAAQ,UAElBK,EAAE8F,QAAUX,GAAWD,EAAKgB,OAC9BnB,GAAgBD,EAGVA,IACPnJ,EAAKyI,UACLzI,EAAKR,QAAQwE,QAAQ,WAJrBhE,EAAKwK,WACLxK,EAAKR,QAAQwE,QAAQ,WAO7B/D,EAAS7G,EAAMqR,UAAUjL,GAErBQ,EAAKQ,cAAgBR,EAAKkF,YAC1BjF,EAASD,EAAKT,QAAQI,WAGtBJ,EAAQkB,WAAc4D,EAAEqG,SAAYrG,EAAE8F,QAAWhB,IACjDnJ,EAAKmF,oBACDqE,GAAWD,EAAKc,IAChBpK,EAAOtB,IAAMlB,GAAUwC,EAAOtB,IAAMsL,EAAUjK,EAAK0B,OAAQ1B,EAAK4B,QAChEgI,EAAUpK,EAAQhC,IAAI,MAAOyC,EAAOtB,MAC7B6K,GAAWD,EAAKgB,MACvBtK,EAAOtB,IAAMlB,GAAUwC,EAAOtB,IAAMsL,EAAUjK,EAAK0B,OAAQ1B,EAAK4B,QAChEgI,EAAUpK,EAAQhC,IAAI,MAAOyC,EAAOtB,MAC7B6K,GAAWD,EAAKoB,MACvB1K,EAAOpB,KAAOpB,GAAUwC,EAAOpB,KAAOoL,EAAUjK,EAAK2B,QAAS3B,EAAK6B,SACnE+H,EAAUpK,EAAQhC,IAAI,OAAQyC,EAAOpB,OAC9B2K,GAAWD,EAAKqB,QACvB3K,EAAOpB,KAAOpB,GAAUwC,EAAOpB,KAAOoL,EAAUjK,EAAK2B,QAAS3B,EAAK6B,SACnE+H,EAAUpK,EAAQhC,IAAI,OAAQyC,EAAOpB,QAIzCU,EAAQkH,WAAapC,EAAEqG,UAAYvB,IAAgBC,IAC/CI,GAAWD,EAAKc,IAChBT,GAAU,EACVE,EAAYtK,EAAQxF,cAAgBiQ,GAC7BT,GAAWD,EAAKgB,OACvBX,GAAU,EAENE,EADA9J,EAAKQ,cAAgBR,EAAKkF,UACdlH,KAAKE,IAAIsB,EAAQxF,cAAgBiQ,EACzCjK,EAAKQ,YAAYiE,OAASxE,EAAOtB,IAAMvB,GAAMoC,EAAS,eACtDpC,GAAMoC,EAAS,qBAAuBpC,GAAMoC,EAAS,mBAE7CA,EAAQxF,cAAgBiQ,GAEtCT,GAAWD,EAAKoB,MAClBf,GAAU,EACVC,EAAWrK,EAAQ1F,aAAemQ,GAC3BT,GAAWD,EAAKqB,QACvBhB,GAAU,EAENC,EADA7J,EAAKQ,cAAgBR,EAAKkF,UACflH,KAAKE,IAAIsB,EAAQ1F,aAAemQ,EACvBjK,EAAKQ,YAAYgE,MAAQvE,EAAOpB,KAChCzB,GAAMoC,EAAS,mBAAqBpC,GAAMoC,EAAS,qBAE5DA,EAAQ1F,aAAemQ,GAItCL,IACAG,EAAItM,GAAUoM,EAAUtK,EAAQ8F,SAAU9F,EAAQ6F,UAClD4E,EAAIvM,GAAUqM,EAAWvK,EAAQ+F,UAAW/F,EAAQmF,WAE/C7G,MAAMkM,KACPvK,EAAQ1F,WAAWiQ,GACnB/J,EAAKT,QAAQiF,MAAQuF,EAAI,MAExBlM,MAAMmM,KACPxK,EAAQxF,YAAYgQ,GACpBhK,EAAKT,QAAQkF,OAASuF,EAAI,MAG9BhK,EAAKwG,WAIToD,GACAvF,EAAEwG,mBAIV1I,SAAU,SAAShB,GACf,IAAI2J,EAAUzM,KAAKmC,YAAcnC,KAAKmC,YAAY0B,SAASrH,GAAYwD,KAAKkC,SAAS2B,SAASrH,GAC1F2E,EAAUnB,KAAKmB,QACfE,EAAUyB,EAAU,QAAU,OAC9B4J,EAASxN,SAASiC,EAAQhC,IAAIpB,GAAS,IAAM,EAiBjD,OAfK0O,EAAQ1K,SACT0K,EAAU7R,EAAE,8BAGhB6R,EACKE,aAAaxL,EAAQ,IACrBhC,IAAI,CACDuN,OAAQA,EACRrL,QAASA,IAGbrB,KAAKkB,QAAQ0C,MAAMgJ,gBAAkB5M,KAAKmC,aAC1CnC,KAAK6M,yBAGFJ,GAGXK,eAAgB,SAASC,GAErB,MAAO,CACH,YAAa,SACb,sBAAuB,WACvB,sBAAuB,WACvB,qBAAsB,UACtB,cAAe,UACf,UAAW,MACX,YAAa,SARD,iBAAiBC,KAAKD,EAAK,GAAGE,WAAW,KAY7D7I,qBAAsB,SAAS4B,GAC3B,IAAIhG,KAAK6L,SAAT,CAGA,IAAIkB,EAAOnS,EAAEoL,EAAEwC,QAAQzF,QAAQ,oBAAoBR,KAAK,WACpDgH,EAASvJ,KAAK8M,eAAeC,GAEjC,OAAIxD,GACAvD,EAAEwG,iBACFxM,KAAKuJ,MACE,QAHX,IAOJ2D,QAAS,WAML,IALA,IAEIC,EAFAxL,EAAO3B,KACPoN,EAAiBxS,EAAEuB,EAAUY,GAE7BsQ,EAAS,GAEJzI,EAAI,EAAGA,EAAIwI,EAAerL,OAAQ6C,GAAK,GAC5CuI,EAAiBxL,EAAK2L,QAAQ1S,EAAEwS,EAAexI,OAG3CuI,EAAejM,SACfiM,EAAejM,QAAQ0C,OACvBuJ,EAAejM,QAAQ4B,SACvBqK,EAAejM,QAAQgB,WAAaP,EAAKT,QAAQgB,YAC/CiL,EAAehL,aAAgBR,EAAKQ,aAAegL,EAAehL,YAAY,KAAOR,EAAKQ,YAAY,KACpGkL,EAAOE,KAAKJ,EAAehM,QAAQ,IAU/C,OANAkM,EAAOG,MAAK,SAASC,EAAGC,GACpB,OAAOD,EAAEE,MAAMjB,OAASgB,EAAEC,MAAMjB,UAGpC/K,EAAO,KAEA/G,EAAEyS,IAGbC,QAAS,SAAStO,GACd,IAAIuC,EAAUvC,EAAQ6E,SAASvH,GAC3BsR,EAAS7S,EAAM2J,eAAenD,GAElC,OAAIqM,GAIG/S,GAGXgT,OAAQ,WACJ,IAMIC,EAAQC,EANRpM,EAAO3B,KACPsB,EAAWK,EAAKT,QAAQI,SACxBH,EAAUQ,EAAKR,QACf6M,EAAiBpT,EAAEI,QACnB8F,EAAY,EACZC,EAAa,EAGjB,OAAIY,EAAKT,QAAQ4J,cAIbnJ,EAAKT,QAAQ6D,SAAWpD,EAAKkF,WAC7BlF,EAAKqD,MAGJrD,EAAKT,QAAQ6D,SACdjE,EAAYkN,EAAelN,YAC3BC,EAAaiN,EAAejN,cAG5Bf,KAAKmC,cAAgBR,EAAKT,QAAQ6D,QAClC+I,EAAS9N,KAAKqD,QAAUrD,KAAKuD,OAASvD,KAAKqD,QAAU,EACrD0K,EAAU/N,KAAKsD,SAAWtD,KAAKwD,QAAUxD,KAAKsD,SAAW,IAEzD3B,EAAKsM,mBAAoB,EACzBF,EAAUhN,EAAapB,KAAKC,IAAI,GAAIoO,EAAe7H,QAAUhF,EAAQ1F,cAAgB,GACrFqS,EAAShN,EAAYnB,KAAKC,IAAI,GAAIoO,EAAe5H,SAAWjF,EAAQxF,cAAgBoD,GAAMoC,EAAS,eAAiB,IAGxHA,EAAQhC,IAAI,CACRqB,KAAMuN,EACNzN,IAAKwN,IAGTxM,EAAShB,IAAMwN,EACfxM,EAASd,KAAOuN,GA3BLpM,GAgCfwB,MAAO,SAASA,GACZ,IACI9D,EADAsC,EAAO3B,KAEPkO,GAAU,EACV/M,EAAUQ,EAAKR,QACfgN,EAAWhN,EAAQ0C,SAASxH,GAC5B+R,EAAeD,EAAStK,SAASzH,GAErC,OAAKiS,UAAUtM,QAIXnH,EAAEU,cAAc6H,IAChB9D,OAA8B,IAAf8D,EAAMmL,KAAuBnL,EAAMmL,KAAO,GACzDJ,GAA4B,IAAlB/K,EAAM+K,SAEhB7O,EAAQ8D,GAGE,IAAV9D,GACA8B,EAAQ6B,SAAS,sBACjB7B,EAAQhC,IAAI,cAAe,GAC3BgP,EAAS1L,UAEJ0L,EAASpM,OAOVqM,EAAa3E,KAAKyE,EAAUnT,EAAMwT,WAAWlP,GAASA,IANtD8B,EAAQqN,QAAQ1T,EAAU2T,SAAS,CAC/BtL,MAAO+K,EAAUnT,EAAMwT,WAAWlP,GAASA,KAE/CsC,EAAKwH,WACLgF,EAAWhN,EAAQ0C,SAASxH,IAMpCsF,EAAKT,QAAQiC,MAAQ9D,EAEdsC,GA5BIyM,EAAa3E,QA+B5BlI,QAAS,SAASkI,EAAMhF,GACpB,IAAIlD,EAAUvB,KAAKmB,QAAQ0C,SAASvH,GAChCoS,EAAkBnN,EAAQsC,SAAS,wBAIvC,OAFAtC,EAAUmN,EAAgB,GAAKA,EAAkBnN,EAE5C1C,GAAQ4K,IAIbzJ,KAAK2O,QAAQ,WAAW,WACpB,MAAO,CAAEC,SAAUrN,EAAQsC,eAG/B9I,EAAMwN,QAAQvI,KAAKhB,QAAQ6E,YAE3BtC,EAAQsN,QAAQpF,KAAKA,GAErBzJ,KAAK2O,QAAQ,WAAW,WAEpB,IADA,IAAIlB,EAAI,GACC7I,EAAIrD,EAAQQ,SAAU6C,GAAK,GAChC6I,EAAEF,KAAK,CAAEuB,SAAUrK,IAEvB,MAAO,CACHmK,SAAUrN,EAAQsC,WAClBY,KAAMgJ,MAIPzN,MAtBIuB,EAAQkI,QAyBvB1B,KAAM,WACF,IAKI0E,EAASsC,EALTpN,EAAO3B,KACPmB,EAAUQ,EAAKR,QACfD,EAAUS,EAAKT,QACf8N,EAAchP,KAAK6H,kBAAkB,QACrCoH,EAAiB9N,EAAQ0C,SAASvH,GAGlCsN,EADqB5J,KAAKmC,cAAgBR,EAAKkF,UACpB7G,KAAKmC,YAAcvH,EAAE+H,UAEpD,IAAKhB,EAAKgE,QAAQzI,GAAO,CAerB,GAdIyE,EAAKkK,UACL1K,EAAQ+N,WAAU,GAAM,GAG5BvN,EAAKkK,UAAW,EAEhBlK,EAAKgC,UAEDzC,EAAQ2J,WACRlJ,EAAKR,QAAQwE,QAAQ,SAGzBzE,EAAQ4B,SAAU,EAEd5B,EAAQ0C,MAAO,CAMf,GALAmL,IAAuBpN,EAAKuL,UAAUnL,QACtC0K,EAAU9K,EAAKmC,SAASiL,IAEhBG,WAAU,GAAM,GAEpBF,EAAYtE,UAAY3P,EAAMiN,QAAQmH,OAASJ,EAAoB,CACnE,IAAIK,EAAYrU,EAAMsU,GAAG5C,GAAS6C,SAClCF,EAAU1E,SAASsE,EAAYtE,UAAY,GAC3C0E,EAAUG,SAAS,IACnBH,EAAUI,YAEV/C,EAAQtN,IAAI,UAAW,IAG3BsN,EAAQgD,OAER7U,EAAEI,QAAQgJ,GAAG,QAAU9H,GAAU,WACzBiF,EAAQsD,KAAK,aAAe7J,EAAE+H,SAASpH,eAAewH,QAAQ5B,GAASY,QACxEJ,EAAKR,QAAQwE,QAAQ,YAK3BxE,EAAQuB,GAAG3F,KACZkS,EAAe9P,IAAItB,EAAUb,GAE7B2E,EAAKR,QAAQoB,KAAKnE,GAAkB4E,SAAS,iBAE7C7B,EAAQ6B,SAASlG,GAAaoS,YAAYQ,aAAa,CACnD1H,QAASgH,EAAYhH,QACrB0C,SAAUsE,EAAYtE,SACtBiF,SAAU3P,KAAK4P,UAAU1L,KAAKlE,SAe1C,OAVIkB,EAAQ4J,cACRnJ,EAAKsI,oBAAsBL,EAAI9I,YAC/Ba,EAAKuI,qBAAuBN,EAAI7I,aAChCY,EAAKkL,0BAGL7M,KAAKkB,QAAQ6D,SAAW/E,KAAK6G,WAC7B7G,KAAKgF,MAGFrD,GAGXiO,UAAW,WACP,IAAIzF,GAAyC,IAA5BnK,KAAKkB,QAAQiJ,WAE1BnK,KAAKkB,QAAQ2J,WACb7K,KAAKmB,QAAQwE,QAAQ,SAGzB3F,KAAKhB,QAAQG,IAAItB,EAAUsM,EAAa,GAAK,UAC7CpP,EAAMoN,OAAOnI,KAAKhB,QAAQ6E,YAE1B7D,KAAK2F,QAAQxI,IAGjB0S,eAAgB,SAASC,GACrB,IAAIzC,EAASrN,KAAKkN,UACdhM,EAAUlB,KAAKkB,QACf6O,EAAc7O,EAAQ0C,QAAUyJ,EAAOtL,OACvCiO,EAAchQ,KAAK6H,kBAAkB,SAEzC,GAAIkI,EAAa,CACb,IAAKD,GAAqBE,EAAYtF,UAAY3P,EAAMiN,QAAQmH,KAAM,CAClE,IAAIC,EAAYrU,EAAMsU,GAAGnO,EAAQ0C,MAAQ5D,KAAK8D,UAAS,GAAQlJ,EAAEC,IAAcoV,UAC/Eb,EAAU1E,SAASsF,EAAYtF,UAAY,GAC3C0E,EAAUc,WAAW,IACrBd,EAAUI,YAEVxP,KAAK8D,UAAS,GAAOrB,SAErBvB,EAAQ0C,MAAMgJ,eACd5M,KAAKqK,gCAEFgD,EAAOtL,SACd/B,KAAKsN,QAAQD,EAAO8C,QAAQrM,UAAS,GAEjC5C,EAAQ0C,MAAMgJ,eACd5M,KAAK6M,2BAKjBvB,OAAQ,SAAS8E,GACb,IAOIC,EAPA1O,EAAO3B,KACPmB,EAAUQ,EAAKR,QACfD,EAAUS,EAAKT,QACf8N,EAAchP,KAAK6H,kBAAkB,QACrCmI,EAAchQ,KAAK6H,kBAAkB,SAErC+B,EADqB5J,KAAKmC,cAAgBR,EAAKkF,UACpB7G,KAAKmC,YAAcvH,EAAE+H,UAGhDhB,EAAKkK,WAITwE,EAAmB1O,EAAKgE,QAAQtI,EAAO,CAAEiT,eAAgBF,IACzDzO,EAAKkK,UAAYwE,EAEblP,EAAQuB,GAAG3F,KAAasT,IACxBnP,EAAQ4B,SAAU,EAElBlI,EAAEuB,GAASL,MAAK,SAAS8I,EAAG5F,GACxB,IAAIiQ,EAAiBrU,EAAEoE,GAAS6E,SAASvH,GAGrC0C,GAAWmC,GAAW8N,EAAe1M,KAAK,MAAQ9F,GAAesF,OAAS,GAC1EkN,EAAepL,SAASrH,GAAUiG,YAI1CzC,KAAK6P,iBAGLlO,EAAKR,QAAQoB,KAAKnE,GAAkB8H,YAAY,iBAEhD/E,EAAQ+N,YAAYQ,aAAa,CAC7B1H,QAASgI,EAAYhI,SAAWgH,EAAYhH,QAC5CuI,SAAiC,IAAxBP,EAAYO,QACrB7F,SAAUsF,EAAYtF,SACtBiF,SAAU3P,KAAKwQ,YAAYtM,KAAKlE,QAEpCpF,EAAEI,QAAQsN,IAAIpM,IAGdyF,EAAKT,QAAQ4J,cACbnJ,EAAK0I,2BACD1I,EAAKsI,qBAAuBtI,EAAKsI,oBAAsB,GACvDL,EAAI9I,UAAUa,EAAKsI,qBAEnBtI,EAAKuI,sBAAwBvI,EAAKuI,qBAAuB,GACzDN,EAAI7I,WAAWY,EAAKuI,uBAIxBvI,EAAKT,QAAQuP,QACb9O,EAAKR,QAAQwE,QAAQ,UAI7B6K,YAAa,WACT,IAAI7O,EAAO3B,KASX,GAPA2B,EAAKR,QACA+E,YAAYpJ,GACZoK,OACA/H,IAAI,UAAW,IAEpBwC,EAAKgE,QAAQvI,GAETuE,EAAKT,QAAQ0C,MAAO,CACpB,IAAI8M,EAAY/O,EAAK2L,QAAQ3L,EAAKuL,UAAUiD,QACxCO,GACAA,EAAU/M,YAKtBsE,MAAO,WAEH,OADAjI,KAAKsL,QAAO,GACLtL,MAGX2Q,YAAa,SAAS3R,GAClB,OAAOpE,EAAEoE,GAAS0D,GAAGtE,EAAmB,IAAMA,EAAmB,mFAGrEwS,aAAc,SAASpI,GACnB,IAAIqI,EAAStV,IACTyD,EAAUgB,KAAKmB,QAEnB,OAAOnB,KAAKkB,QAAQ2J,YACfjQ,EAAEiW,GAAQnO,GAAG1D,KACbgB,KAAK2Q,YAAYnI,MAChBxJ,EAAQuD,KAAKsO,GAAQ9O,SAAW/C,EAAQuD,KAAKiG,GAAQzG,SAG/D4B,QAAS,SAASqC,EAAG8K,GACjB,IAAInP,EAAO3B,KACPmB,EAAUQ,EAAKR,QACf4P,EAAgB5P,EAAQ,GACxB6P,EAAqBrP,EAAKQ,cAAgBR,EAAKkF,UAC/CoK,EAAgBjR,KAAK6H,kBAAkB,QACvC6E,GAAUvL,EAAQhC,IAAIpB,GACtBmT,EAAiBxE,EACjBlE,EAAUxC,GAAKA,EAAEwC,QAAW,KA2BhC,GAzBA5N,EAAEuB,GAASL,MAAK,SAAS8I,EAAG5F,GACxB,IAAImS,EAAevW,EAAEoE,GACjBoS,EAAYD,EAAahS,IAAIpB,GAC7BkR,EAAiBkC,EAAatN,SAASvH,GAEtCkD,MAAM4R,KACP1E,EAAS/M,KAAKC,KAAKwR,EAAW1E,IAGlCvL,EAAQsD,KAAK,UAAWzF,GAAW+R,GAI/B/R,GAAW+R,GACX9B,EAAe1M,KAAK,IAAM9F,GAAesF,SACxCkN,EAAe1M,KAAK/F,GAAUuF,QAC/BkN,EAAepG,OAAO/N,EAAU2R,cAInCtL,EAAQ,GAAGwM,MAAMjB,QAAUwE,EAAiBxE,IAC7CvL,EAAQhC,IAAIpB,EAAQ2O,EAAS,GAEjC/K,EAAK3C,QAAQuD,KAAK,gBAAgBE,SAE9Bd,EAAKiP,aAAapI,GAAS,CACtBsI,GACDO,YAAW,WACP1P,EAAKR,QAAQmQ,UACdL,EAAgBA,EAAcvG,SAAW,GAGhD,IAAI5J,EAAYkQ,EAAqBrP,EAAKQ,YAAYrB,YAAclG,EAAEI,QAAQ8F,YAC1EyQ,EAAYrS,SAASiC,EAAQG,WAAWhB,IAAK,KAE5CqB,EAAKT,QAAQ6D,QAAUwM,EAAY,GAAKA,EAAYzQ,IACjDA,EAAY,EACZlG,EAAEI,QAAQ8F,UAAUyQ,GAEpBpQ,EAAQhC,IAAI,MAAO2B,IAO/B,OAFAK,EAAU,KAEHQ,GAGX8G,mBAAoB,WAChB,OAAIzI,KAAK6L,SACE7L,KAGJA,KAAKA,KAAKkB,QAAQ4J,YAAc,UAAY,eAGvDV,QAAS,WACL,IAAIzI,EAAO3B,KACPkB,EAAUS,EAAKT,QACf+F,EAAY/F,EAAQ+F,UACpBuK,EAAiB7P,EAAK6P,eAEtBpI,EAAYzH,EAAKQ,cAAgBR,EAAKkF,UAAYlF,EAAKQ,YAAcvH,EAAE+H,UAE3E,OAAKzB,EAAQ4J,aAAgB5J,EAAQ6J,aAIjC9D,GAAaA,GAAanH,KAC1B6B,EAAKR,QAAQhC,IAAI,aAAc8H,GAG/BuK,IAAmBtQ,EAAQ4J,cAC3B0G,EAAepL,OAAShH,GAAUoS,EAAepL,OAAQzE,EAAKT,QAAQ+F,UAAWtF,EAAKT,QAAQmF,WAE1EnF,EAAQI,SAAShB,IAAMpB,SAASsS,EAAepL,OAAQ,IAAMzE,EAAK4B,SAGlFrC,EAAQI,SAAShB,IAAMlB,GAAU8B,EAAQI,SAAShB,IAAKqB,EAAK0B,OAAQ1B,EAAK4B,OAASrE,SAASsS,EAAepL,OAAQ,KAElHvK,EAAO2V,EAAgB,CACnBhR,KAAMU,EAAQI,SAASd,KACvBF,IAAKY,EAAQI,SAAShB,QAKlCqB,EAAKR,QACAhC,IAAI,CACDmC,SAAUJ,EAAQ6D,OAAS,QAAU,WACrCvE,KAAMgR,EAAehR,KACrBF,IAAKkR,EAAelR,IACpB6F,MAAOqL,EAAerL,MACtBC,OAAQoL,EAAepL,SAE1BF,YAAYrJ,GACZ0F,KAAK,sCAAsCkN,OAAOgC,MAClDlP,KAAK,0CAA0C7B,SAAS+B,SAASgP,MAAMA,MACvElP,KAAKvE,GAAmB0C,SAAS+O,OAAOgC,MAAMA,MAC9ClP,KAAKpE,GAAWuC,SAAS+O,OAE1BvO,EAAQ4J,YACRnJ,EAAKR,QAAQoB,KAAK,wBAAwB7B,SAASiF,QAAQ,SACpDzE,EAAQ6J,aACfpJ,EAAKR,QAAQoB,KAAK,wBAAwB7B,SAASiF,QAAQ,SAG/DhE,EAAKT,QAAQiF,MAAQqL,EAAerL,MACpCxE,EAAKT,QAAQkF,OAASoL,EAAepL,OAEhCzE,EAAKT,QAAQ0C,MAAMgJ,eACpBjL,EAAK0I,2BAGL1I,EAAKsI,qBAAuBtI,EAAKsI,oBAAsB,GACvDb,EAAUtI,UAAUa,EAAKsI,qBAEzBtI,EAAKuI,sBAAwBvI,EAAKuI,qBAAuB,GACzDd,EAAUrI,WAAWY,EAAKuI,sBAG9BhJ,EAAQ4J,YAAc5J,EAAQ6J,aAAc,EAE5CpJ,EAAKR,QAAQuQ,WAAW,oBAExB/P,EAAKwG,SAELxG,EAAKgE,QAAQhI,GAENgE,GAhEIA,GAmEfgQ,cAAe,SAASC,EAAUC,GAC9B,IAAIlQ,EAAO3B,KACPmB,EAAUQ,EAAKR,QACfwM,EAAQxM,EAAQ,GAAGwM,MACnBzM,EAAUS,EAAKT,QAEnB,OAAIA,EAAQ4J,aAAe5J,EAAQ6J,cAInCpJ,EAAK6P,eAAiB,CAClBrL,MAAOwH,EAAMxH,MACbC,OAAQuH,EAAMvH,QAGlBjF,EACK0C,SAAStH,GAAsB2K,OAAOuK,MACtC5N,SAASxH,GAAiBkG,KAAKvE,GAAmB0C,SAASwG,OAC3D4K,GAAG,GAAGC,OAAOjX,EAAUyO,OAAO,CAAEC,KAAM,oBAE3CqI,EAAS5P,KAAKN,GAEdA,EAAKR,QAAQ0C,SAASxH,GAAiBkG,KAAKpE,GAAWuC,SAASsR,OAAoB,aAAbJ,GAEvEjQ,EAAKgE,QAAQiM,GAEbzQ,EAAQoB,KAAK,uBAAuB7B,SAASiF,QAAQ,UAnB1ChE,GAwBfsK,SAAU,WA+BN,OA9BAjM,KAAK2R,cAAc,YAAY,WAC3B,IAAIhQ,EAAO3B,KACPmB,EAAUQ,EAAKR,QACf6P,EAAqBhR,KAAKmC,cAAgBR,EAAKkF,UAC/CvF,EAAWH,EAAQG,WACnBsI,EAAMhP,EAAE+H,UAEZ9G,EAAO8F,EAAK6P,eAAgB,CACxBhR,KAAMc,EAASd,MAAQwQ,EAAqBhR,KAAKmC,YAAYpB,aAAe,GAC5ET,IAAKgB,EAAShB,KAAO0Q,EAAqBhR,KAAKmC,YAAYrB,YAAc,KAG7Ed,KAAKiK,oBAAsB+G,EAAqBhR,KAAKmC,YAAYrB,YAAc8I,EAAI9I,YACnFd,KAAKkK,qBAAuB8G,EAAqBhR,KAAKmC,YAAYpB,aAAe6I,EAAI7I,aAErFY,EAAKkL,yBAEL1L,EACKhC,IAAI,CACDmB,IAAK0Q,EAAqBhR,KAAKmC,YAAYrB,YAAc,EACzDN,KAAMwQ,EAAqBhR,KAAKmC,YAAYpB,aAAe,EAC3DO,SAAU0P,EAAqB,WAAa,UAE/ChO,SAASnG,GAEd8E,EAAKT,QAAQ4J,aAAc,EAE3BnJ,EAAK4D,uBAGFvF,MAGX6M,uBAAwB,WACpB,IAAIlL,EAAO3B,KACPmC,EAAcR,EAAKQ,YAEvB,GAAIA,IAAgBR,EAAKkF,UAOrB,OANAlF,EAAKsQ,mBAAmB9P,GACxBA,EAAYhD,IAAItB,EAAUb,QAC1B2E,EAAKR,QAAQhC,IAAI,CACb4H,SAAU5E,EAAYqF,aACtBnB,UAAWlE,EAAYsF,gBAK/B,IAAIyK,EAAQtX,EAAE,QACd+G,EAAKsQ,mBAAmBC,GACxBA,EAAM/S,IAAItB,EAAUb,GAEpB,IAAImV,EAAQvX,EAAE,QACd+G,EAAKsQ,mBAAmBE,GACxBA,EAAMhT,IAAItB,EAAUb,IAGxBqN,yBAA0B,WACtB,IAAI1I,EAAO3B,KACPmC,EAAcR,EAAKQ,YAEvB,GAAIA,IAAgBR,EAAKkF,UAMrB,OALAlF,EAAKyQ,qBAAqBjQ,QAC1BR,EAAKR,QAAQhC,IAAI,CACb4H,SAAU5E,EAAYgE,MACtBE,UAAWlE,EAAYiE,SAK/BzE,EAAKyQ,qBAAqBxX,EAAE+H,SAASC,OACrCjB,EAAKyQ,qBAAqBxX,EAAE,UAGhCqX,mBAAoB,SAASI,GACzB,IAAIrS,KAAKsS,kBAAkBD,GAA3B,CAIA,IAAIE,EAAeF,EAASG,IAAI,GAAG7E,MAAM8E,SAEb,iBAAjBF,GACPF,EAAS5N,KAAK3G,EAAqByU,KAI3CD,kBAAmB,SAASD,GACxB,MAAqD,iBAAvCA,EAAS5N,KAAK3G,IAGhCsU,qBAAsB,SAASC,GAC3B,IAAIE,EAAeF,EAAS5N,KAAK3G,GAEZ,OAAjByU,GAAyBA,IAAiB1X,GAC1CwX,EAASlT,IAAItB,EAAU0U,GACvBF,EAASK,WAAW5U,IAEpBuU,EAASlT,IAAItB,EAAU,KAI/BiN,YAAa,WACT,OAAO9K,KAAKkB,QAAQ4J,aAGxBqB,SAAU,WAkBN,OAjBAnM,KAAK2R,cAAc,YAAY,WAC3B,IAAIhQ,EAAO3B,KAEX2B,EAAKR,QAAQhC,IAAI,CACbiH,OAAQ,GACRa,UAAW,KAGftF,EAAK3C,QAAQkI,OAEbvF,EAAKT,QAAQ6J,aAAc,KAG/B/K,KAAKmB,QAAQ8B,KAAK,mBAAoBjD,KAAKhB,QAAQiE,KAAK,qBAExDjD,KAAK8G,oBAEE9G,MAGX+K,YAAa,WACT,OAAO/K,KAAKkB,QAAQ6J,aAGxB/F,IAAK,WACD,IAAIrD,EAAO3B,KACP2S,EAAM/X,EAAEI,QACRmG,EAAUQ,EAAKR,QACfD,EAAUS,EAAKT,QACfI,EAAWJ,EAAQI,SACnBhB,EAAMN,KAAKmC,YAAchC,GAAYgB,EAAQ,IAAIb,IAAMvB,GAAMiB,KAAKmC,YAAa,kBAAoBpD,GAAMoC,EAAS,OAClHX,EAAOR,KAAKmC,YAAchC,GAAYgB,EAAQ,IAAIX,KAAOzB,GAAMiB,KAAKmC,YAAa,mBAAqBpD,GAAMoC,EAAS,QAEpHQ,EAAKT,QAAQ4J,cACdxJ,EAAShB,IAAMA,EACfgB,EAASd,KAAOA,GAEZmB,EAAKsM,mBAAuBjO,KAAKmC,aAAoD,UAArCnC,KAAKmC,YAAYhD,IAAI,cAErEmC,EAAShB,KAAOqS,EAAI7R,YACpBQ,EAASd,MAAQmS,EAAI5R,aACrBY,EAAKsM,mBAAoB,GAG7B9M,EAAQhC,IAAItD,EAAOyF,EAAU,CAAEA,SAAU,WACzCH,EAAQ0C,SAASxH,GAAiBkG,KAAKtE,GAAM+E,SAAS,aAAakD,YAAY,WAE/EvE,EAAKkF,WAAY,EACjBlF,EAAKT,QAAQ6D,QAAS,EAElB/E,KAAKmC,cACLjB,EAAQ6F,SAAW7F,EAAQmF,UAAYvG,IACvCqB,EAAQhC,IAAI,CACR4H,SAAU,GACVV,UAAW,QAM3B0F,MAAO,WACH,IAAIpK,EAAO3B,KACP2S,EAAM/X,EAAEI,QACRmG,EAAUQ,EAAKR,QACfD,EAAUS,EAAKT,QACfI,EAAWK,EAAKT,QAAQI,SACxBa,EAAcR,EAAKQ,YACnB7B,EAAMpB,SAASiC,EAAQhC,IAAI,OAAQ,IAAMwT,EAAI7R,YAC7CN,EAAOtB,SAASiC,EAAQhC,IAAI,QAAS,IAAMwT,EAAI5R,aAE9CY,EAAKT,QAAQ4J,cACdnJ,EAAKkF,WAAY,EACjBlF,EAAKsM,mBAAoB,EACzBtM,EAAKT,QAAQ6D,QAAS,EAElB5C,IACAR,EAAKmF,oBAEL5F,EAAQ6F,SAAWpH,KAAKE,IAAIsC,EAAYgE,MAAOjF,EAAQ6F,UACvD7F,EAAQmF,UAAY1G,KAAKE,IAAIsC,EAAYiE,OAASrH,GAAMoC,EAAS,eAAgBD,EAAQmF,WAEzFlF,EAAQhC,IAAI,CACR4H,SAAU7F,EAAQ6F,SAClBV,UAAWnF,EAAQmF,YAInB/F,EADAA,EAAM6B,EAAYb,SAAShB,IACrBqB,EAAK0B,OACJ/C,EAAM6B,EAAYb,SAAShB,IAAM6B,EAAYiE,OAC9CzE,EAAK4B,OAELjD,EAAM6B,EAAYrB,aAAeqB,EAAYb,SAAShB,IAAMvB,GAAMoD,EAAa,qBAIrF3B,EADAA,EAAO2B,EAAYb,SAASd,KACrBmB,EAAK2B,QACL9C,EAAO2B,EAAYb,SAASd,KAAO2B,EAAYgE,MAC/CxE,EAAK6B,QAELhD,EAAO2B,EAAYpB,cAAgBoB,EAAYb,SAASd,KAAOzB,GAAMoD,EAAa,uBAKjGb,EAAShB,IAAMlB,GAAUkB,EAAKqB,EAAK0B,OAAQ1B,EAAK4B,QAChDjC,EAASd,KAAOpB,GAAUoB,EAAMmB,EAAK2B,QAAS3B,EAAK6B,SAEnDrC,EAAQhC,IAAItD,EAAOyF,EAAU,CAAEA,SAAU,MACzCH,EAAQ0C,SAASxH,GAAiBkG,KAAKrE,GAAQ8E,SAAS,WAAWkD,YAAY,eAIvFX,kBAAmB,WACf,IAKImG,EAAGC,EALHhK,EAAO3B,KACPmB,EAAUQ,EAAKR,QACfyR,EAAMhY,EAAEI,QACR6X,EAAY9X,EAAMoK,QAAQ0N,YAC1BpM,EAAgD,eAA7BtF,EAAQhC,IAAI,cAGnC,GAAKwC,EAAKT,QAAQ4J,YAAlB,CAIA,IAAIpE,EAAgBD,EAAmB1H,GAAMoC,EAAS,qBAAuBpC,GAAMoC,EAAS,sBAAwB,EAChHwF,EAAgBF,EAAmB1H,GAAMoC,EAAS,oBAAsBpC,GAAMoC,EAAS,uBAAyB,EAChHyF,EAAaH,EAAmB1H,GAAMoC,EAAS,eAAiB,EAEhEQ,EAAKQ,cAAgBR,EAAKkF,WAC1B6E,EAAI/J,EAAKQ,YAAYqF,aAAed,EACpCiF,EAAIhK,EAAKQ,YAAYsF,eAAiBd,EAAgBC,KAEtD8E,EAAIkH,EAAIzM,QAAU0M,EAAYnM,EAC9BiF,EAAIiH,EAAIxM,SAAWyM,GAAalM,EAAgBC,IAGpDzF,EAAQhC,IAAI,CACRgH,MAAOuF,EACPtF,OAAQuF,IAEZhK,EAAKT,QAAQiF,MAAQuF,EACrB/J,EAAKT,QAAQkF,OAASuF,EAEtBhK,EAAKwG,WAGTzE,QAAS,SAASxC,GACd,IAGIuP,EACAqC,EACAxQ,EALAX,EAAO3B,KACP+S,EAAcpR,EAAKT,QACnBlC,EAAUpE,EAAE+G,EAAK3C,SAiDrB,OA5CK1D,EAAc4F,KACfA,EAAU,CAAEoB,IAAKpB,IAGrBA,EAAUrF,EAAOkX,EAAYxR,QAASL,GAEtC4R,EAAajU,GAAQkU,EAAYtC,QAAUsC,EAAYtC,OAASvP,EAAQuP,QAExEnO,EAAMpB,EAAQoB,MAGLzD,GAAQiU,KACTA,GAActU,GAAW8D,IAGxBwQ,IAIDrC,EAASzR,EAAQuD,KAAK,IAAM9F,GAAe,IAIvCgU,EAAOuC,IAAM1Q,GAAOmO,EAAOuC,IAG3BhU,EAAQyK,KAAK3O,EAAUmY,aAAapX,EAAO,GAAIkX,EAAa,CAAExR,QAASL,MAG3ElC,EAAQuD,KAAK,IAAM9F,GACd6L,IAAI,OAASrM,GACb+H,GAAG,OAAS/H,EAAI+D,KAAKkT,gBAAgBhP,KAAKlE,QAd/C2B,EAAKwR,aAAajS,KAiBlBA,EAAQnF,UAER4F,EAAKJ,QAAQxF,EAASmF,EAAQnF,SAAjBA,CAA2B,KAG5C4F,EAAKgE,QAAQrI,IAGjB0B,EAAQoU,YAAY,2BAA4BN,GAEzCnR,GAGXuR,gBAAiB,WACblT,KAAK2F,QAAQrI,IAGjB+V,cAAe,WACXC,aAAatT,KAAKuT,qBAClBvT,KAAKmB,QAAQoB,KAAKlE,GAAa6H,YAAYxJ,IAG/C8W,WAAY,SAASC,EAAKC,GACtB1T,KAAK2F,QAAQ/H,EAAO,CAAE8V,OAAQA,EAAQD,IAAKA,KAG/CE,aAAc,SAASC,GACnB,OAAO,SAASnP,GACZ,IAAIgF,EAAOhF,EACPmP,IACAnK,EAAO1N,EAAS6X,EAAT7X,CAA0B0I,GAAQ,KAG7CzE,KAAKuB,QAAQkI,EAAMhF,GACnBzE,KAAKhB,QAAQ6U,KAAK,YAAa,GAE/B7T,KAAK2F,QAAQrI,KAIrBwW,aAAc,WACV9T,KAAKmB,QAAQoB,KAAKlE,GAAa2E,SAAStG,IAG5CyW,aAAc,SAASjS,GACnBlB,KAAKuT,oBAAsBlC,WAAWrR,KAAK8T,aAAa5P,KAAKlE,MAAO,KAEpEpF,EAAEmZ,KAAKlY,EAAO,CACVoE,KAAM,MACN+T,SAAU,OACVC,OAAO,EACPC,MAAOlU,KAAKwT,WAAWtP,KAAKlE,MAC5B2P,SAAU3P,KAAKqT,cAAcnP,KAAKlE,MAClCmU,QAASnU,KAAK2T,aAAazS,EAAQnF,UAAUmI,KAAKlE,OACnDkB,KAGPkT,SAAU,WACFpU,KAAKqI,UACLrI,KAAKqI,SAASE,UAGdvI,KAAKgJ,UACLhJ,KAAKgJ,SAAST,UAGlBvI,KAAKmB,QAAQmH,IAAIrM,GACZ4H,SAASvH,GAAgBgM,IAAIrM,GAAIwV,MACjClP,KAAK,uCAAuC+F,IAAIrM,GAErDrB,EAAEI,QAAQsN,IAAI,SAAWrM,EAAK+D,KAAKwF,SACnC5K,EAAEI,QAAQsN,IAAIpM,GACdtB,EAAEI,QAAQsN,IAAIrM,GAEdqX,aAAatT,KAAKuT,qBAElBtY,EAAO+G,GAAGuG,QAAQtG,KAAKjC,MAEvBA,KAAKqU,OAAOxZ,GAEZE,EAAMwN,QAAQvI,KAAKmB,UAGvBoH,QAAS,WACLvI,KAAKoU,WAEDpU,KAAKkB,QAAQ0C,OACb5D,KAAK6P,gBAAe,GAGxB7P,KAAKmB,QAAQ0N,QAAQpM,SAErBzC,KAAKmB,QAAUnB,KAAKkC,SAAWlC,KAAKhB,QAAUpE,KAGlDsI,cAAe,WACX,IAEIoR,EACAnT,EAHAoT,EAAcvU,KAAKhB,QACnBkC,EAAUlB,KAAKkB,QAGfsT,EAAQzZ,EAAMoK,QAAQqP,MAAMD,IAEL,IAAvBrT,EAAQiJ,YACRoK,EAAYpV,IAAI,WAAY,UAGhCgC,EAAUvG,EAAEE,EAAUqG,QAAQD,IAI9BoT,EAAsBC,EAAYhS,KAAK,gCAAgC+G,KAAI,WACvE,IAAI0J,EAAMhT,KAAKyU,aAAa,OAE5B,OADAzU,KAAKgT,IAAM,GACJA,KAIX7R,EACKiS,YAAY,QAASoB,GACrBvR,KAAK,WAAY,GACjB4F,OAAO0L,GACPhS,KAAK,gCAAgCzG,MAAK,SAAS6M,GAEpD3I,KAAKgT,IAAMsB,EAAoB3L,MAG/B3I,KAAKmC,YACLnC,KAAKmC,YAAYqM,QAAQrN,GAClBnB,KAAKkC,UACZf,EAAQe,SAASlC,KAAKkC,UAG1Bf,EAAQoB,KAAK,mBACRpD,IAAIqV,EAAQ,OAAS,QAAS/Y,EAAW0F,EAAQoB,KAAK,sBAAwB,IAEnFgS,EAAYpV,IAAI,aAAc,IAAIsQ,OAElC8E,EAAYhS,KAAK,sBAAsBzG,MAAK,WACxC,IAAI4Y,EAAS9Z,EAAEoF,MAAMyE,KAAK,eAEtBiQ,GACAA,EAAOhR,aAIfvC,EAAUoT,EAAc,QAsChC,SAASxL,GAAe6J,GACpB,IAAIjR,EAAO3B,KACX2B,EAAKgT,MAAQ/B,EACbjR,EAAKiT,kBAAmB,EACxBjT,EAAKmD,WAAa,IAAIzJ,EAAUuX,EAAIzR,QAAS,CACzCqB,OAAQ,oBACRqS,MAAOjC,EAAIzR,QAAQO,GAAK,YACxBoT,UAAWnT,EAAKmT,UAAU5Q,KAAKvC,GAC/BoT,KAAMpT,EAAKoT,KAAK7Q,KAAKvC,GACrBqT,QAASrT,EAAKqT,QAAQ9Q,KAAKvC,KAG/BA,EAAKmD,WAAWmQ,WAAW/Q,KAAK,QAASvC,EAAKuT,WAAWhR,KAAKvC,IAC9DA,EAAKmD,WAAWmQ,WAAW/Q,KAAK,UAAWvC,EAAKwT,cAAcjR,KAAKvC,IAoLvE,SAASsH,GAAe2J,EAAK1J,GACzB,IAAIvH,EAAO3B,KACX2B,EAAKgT,MAAQ/B,EACbjR,EAAKiT,kBAAmB,EACxBjT,EAAKmD,WAAa,IAAIzJ,EAAUuX,EAAIzR,QAAS,CACzCqB,OAAQ0G,EACR2L,MAAOjC,EAAIzR,QAAQO,GAAK,UACxBoT,UAAWnT,EAAKmT,UAAU5Q,KAAKvC,GAC/BoT,KAAMpT,EAAKoT,KAAK7Q,KAAKvC,GACrBqT,QAASrT,EAAKqT,QAAQ9Q,KAAKvC,GAC3ByT,WAAYzT,EAAKyT,WAAWlR,KAAKvC,KAGrCA,EAAKmD,WAAWmQ,WAAW5J,iBAAkB,EAhPjDvQ,EAAY,CACRqG,QAASpF,GAAS,WAAc,MAAO,2CACvCwN,OAAQxN,GAAS,SAAUsZ,GACnB,IAAI7L,EAAO6L,EAAI7L,KAEf,MAAO,kJAAoJA,EAApJ,2CACqCA,EAAKtJ,cAD1C,mBAKfuO,SAAU1S,GAAS,SAAUsZ,GAGrB,MAAO,wEAFKA,EAAIlS,MAET,gEAMfsJ,QAAS,gCACTwG,aAAclX,GAAS,SAAUsZ,GACzB,IAAIlS,EAAQkS,EAAIlS,MACZ5B,EAAU8T,EAAI9T,QAElB,MAAO,kCAAoC4B,EAAQ,YAAc1G,EAA1D,UACA8E,EAAW,IADX,mEAMfuH,aAAc/M,GAAS,SAAU0I,GAAQ,MAAQ,2DAA6DA,EAAO,eAoBzHsE,GAAeuM,UAAY,CACvBJ,WAAY,WACRlV,KAAK2U,MAAMxT,QAAQ0H,OAAO/N,EAAU2R,UAExC0I,cAAe,WACXnV,KAAK2U,MAAMxT,QAAQoB,KAAK/F,GAAUiG,UAEtCqS,UAAW,SAAS9O,GAChB,IAAIrE,EAAO3B,KACP4S,EAAMjR,EAAKgT,MACXxT,EAAUyR,EAAIzR,QAGlB,GADAQ,EAAKiT,iBAAmBhC,EAAIjN,QAAQpI,IAChCoE,EAAKiT,iBAAT,CAIAjT,EAAK4T,eAAiBrW,SAASiC,EAAQhC,IAAI,eAAgB,IAC3DwC,EAAK6T,gBAAkBza,EAAMqR,UAAUjL,EAAS,YAEhDQ,EAAK8T,gBAAkBzP,EAAEC,cAAc4N,KAAK,aAAatM,QAAQ,4BAA6B,IAE9F5F,EAAK+T,YAAc,CACfvP,MAAOhF,EAAQ1F,aACf2K,OAAQjF,EAAQxF,eAGpBiX,EAAI9L,oBAEJnF,EAAKgU,gBAAkB/C,EAAIzQ,YAAcyQ,EAAIzQ,YAAYb,SAAWvG,EAAMqR,UAAUwG,EAAI1Q,UAExF,IAAIvB,EAAeQ,EAAQR,eAE3B,GAAIA,EAAa+B,GAAG,QAChBf,EAAKgU,gBAAgBrV,IAAMqB,EAAKgU,gBAAgBnV,KAAO,MACpD,CACH,IAAIoV,EAAYjV,EAAaxB,IAAI,cAC7B0W,EAAalV,EAAaxB,IAAI,eAElC,IADiBZ,EAAKuX,KAAKF,KAAerX,EAAKuX,KAAKD,GACrC,CACX,IAAIE,EAAkB5V,GAAYgB,EAAQ,IACtC6U,EAAuBD,EAAgBvV,KAAOmB,EAAKgU,gBAAgBnV,KAAOmB,EAAK6T,gBAAgBhV,KAC/FyV,EAAsBF,EAAgBzV,IAAMqB,EAAKgU,gBAAgBrV,IAAMqB,EAAK6T,gBAAgBlV,IAEhGqB,EAAKuU,sBAAwBF,EAAuB,EAAIA,EAAuB,EAC/ErU,EAAKwU,qBAAuBF,EAAsB,EAAIA,EAAsB,EAE5EtU,EAAK6T,gBAAgBhV,MAAQmB,EAAKuU,sBAClCvU,EAAK6T,gBAAgBlV,KAAOqB,EAAKwU,sBAIzChV,EACK0C,SAAStH,GAAsBoI,IAAIqB,EAAEC,eAAeiB,OAEzDtM,EAAEoB,GAAMmD,IAAIlC,EAAQ+I,EAAEC,cAAc9G,IAAIlC,MAE5C8X,KAAM,SAAS/O,GACX,IAAIhG,KAAK4U,iBAAT,CAGA,IAaIpJ,EAAUC,EACV2K,EAAcC,EAdd1U,EAAO3B,KACP4S,EAAMjR,EAAKgT,MACXxT,EAAUyR,EAAIzR,QACdD,EAAU0R,EAAI1R,QACdI,EAAWJ,EAAQI,SACnBkJ,EAAY7I,EAAK8T,gBACjBE,EAAkBhU,EAAKgU,gBACvBH,EAAkB7T,EAAK6T,gBACvBE,EAAc/T,EAAK+T,YACnB1E,EAAqB4B,EAAIzQ,cAAgByQ,EAAI/L,UAC7CyP,EAAMvb,EAAMoK,QAAQqP,MAAM5B,EAAIzQ,aAC9BoU,EAAgBvF,GAAsBsF,GAAO1D,EAAIzQ,YAAYqF,aAAeoL,EAAIzQ,YAAYgE,MAAQpL,EAAMoK,QAAQwC,YAAc,EAChI6O,EAAexF,EAAqB,CAAE1Q,IAAKsS,EAAIzQ,YAAYrB,YAAaN,KAAMoS,EAAIzQ,YAAYpB,cAAiB,CAAET,IAAK,EAAGE,KAAM,GAG/H1B,EAAIa,KAAKC,IAAIoG,EAAElH,EAAE2X,SAAU,GAC3BC,EAAI/W,KAAKC,IAAIoG,EAAE0Q,EAAED,SAAU,GAEvBjM,EAAU9K,QAAQ,MAAQ,GAGtB8L,EADAoH,EAAIzQ,aAAerD,EAAI4W,EAAYvP,OAASyM,EAAIpP,QAAUgT,EAAahW,KAAOmV,EAAgBnV,KAAO+V,EAC1F3D,EAAIpP,QAAU+S,EAAgBf,EAAgBhV,KAAOkV,EAAYvP,MAAQqQ,EAAahW,KAEtF1B,EAAI0W,EAAgBhV,KAAOmV,EAAgBnV,KAG1DW,EAAQ1F,WAAW2D,GAAUoM,EAAUtK,EAAQ8F,SAAU9F,EAAQ6F,YAC1DyD,EAAU9K,QAAQ,MAAQ,IAEjC8L,EAAWpM,IADXiX,EAAcb,EAAgBhV,KAAOkV,EAAYvP,MAAQwP,EAAgBnV,MACtC1B,EAAGoC,EAAQ8F,SAAU9F,EAAQ6F,UAChEzF,EAASd,KAAO6V,EAAc7K,EAAWmK,EAAgBnV,KAAO+V,GAAiB5U,EAAKuU,uBAAyB,GAAKM,EAAahW,KAE7HoS,EAAIzQ,aAAeb,EAASd,MAAQoS,EAAItP,UACxChC,EAASd,KAAOoS,EAAItP,QACpBkI,EAAWpM,GAAUiX,EAAcE,EAAgBjV,EAASd,KAAOmV,EAAgBnV,KAAOgW,EAAahW,KAAMU,EAAQ8F,SAAU9F,EAAQ6F,WAG3I5F,EAAQhC,IAAI,CACRqB,KAAMc,EAASd,KACf2F,MAAOqF,KAIf,IAAImL,EAAeD,EACf9D,EAAI1R,QAAQ6D,SACZ4R,GAAgB/b,EAAEI,QAAQ8F,aAE1B0J,EAAU9K,QAAQ,MAAQ,GAC1B+L,EAAYkL,EAAenB,EAAgBlV,IAAMqB,EAAK4T,eAAiBI,EAAgBrV,IAEnFqW,EAAejB,EAAYtP,OAASzE,EAAK4T,gBAAkB3C,EAAIrP,OAASoS,EAAgBrV,IAAMkW,EAAalW,MAC3GmL,EAAYmH,EAAIrP,OAASiS,EAAgBlV,IAAMoV,EAAYtP,OAASoQ,EAAalW,KAGrFa,EAAQxF,YAAYyD,GAAUqM,EAAWvK,EAAQ+F,UAAW/F,EAAQmF,aAC7DmE,EAAU9K,QAAQ,MAAQ,IAEjC+L,EAAYrM,IADZgX,EAAeZ,EAAgBlV,IAAMoV,EAAYtP,OAASuP,EAAgBrV,KACrCqW,EAAczV,EAAQ+F,UAAW/F,EAAQmF,WAC9E/E,EAAShB,IAAM8V,EAAe3K,EAAYkK,EAAgBrV,KAAOqB,EAAKwU,sBAAwB,GAAKK,EAAalW,IAE5GgB,EAAShB,KAAOsS,EAAIvP,QAAUuP,EAAIzQ,cAClCb,EAAShB,IAAMsS,EAAIvP,OACnBoI,EAAYrM,GAAUgX,EAAe9U,EAAShB,IAAMqV,EAAgBrV,IAAMkW,EAAalW,IAAKY,EAAQ+F,UAAW/F,EAAQmF,YAG3HlF,EAAQhC,IAAI,CACRmB,IAAKgB,EAAShB,IACd8F,OAAQqF,KAIZD,IACAoH,EAAI1R,QAAQiF,MAAQqF,EAAW,MAE/BC,IACAmH,EAAI1R,QAAQkF,OAASqF,EAAY,MAGrCmH,EAAIzK,WAEZ6M,QAAS,SAAShP,GACd,IAAIhG,KAAK4U,iBAAT,CAIA,IAAIjT,EAAO3B,KACP4S,EAAMjR,EAAKgT,MACXxT,EAAUyR,EAAIzR,QAkBlB,OAhBAA,EACK0C,SAAStH,GAAsBoI,IAAIqB,EAAEC,eAAewJ,OAEzD7U,EAAEoB,GAAMmD,IAAIlC,EAAQ,IAEhB2V,EAAIvN,eACJuN,EAAIvN,cAAcuR,QAGL,IAAb5Q,EAAEmF,SACFhK,EAAQhC,IAAIwC,EAAK6T,iBACZrW,IAAIwC,EAAK+T,aAGlB9C,EAAIjN,QAAQnI,IAEL,IAEX+K,QAAS,WACDvI,KAAK8E,YACL9E,KAAK8E,WAAWyD,UAGpBvI,KAAK8E,WAAa9E,KAAK2U,MAAQ,OAoBvC1L,GAAeqM,UAAY,CACvBR,UAAW,SAAS9O,GAChB,IAAI4M,EAAM5S,KAAK2U,MACXvS,EAAYwQ,EAAI1R,QAAQkB,UACxBpD,EAAU4T,EAAI5T,QACd8C,EAAU9C,EAAQuD,KAAK,qBACvBoT,EAAkB5a,EAAMqR,UAAUwG,EAAI1Q,UAE1ClC,KAAK4U,iBAAmBhC,EAAIjN,QAAQlI,KAAe2E,EAC/CpC,KAAK4U,kBAAoBhC,EAAI9H,gBAIjC8H,EAAIiE,sBAAwB9b,EAAMqR,UAAUwG,EAAIzR,QAAS,YAEzDyR,EAAIkE,uBAAyB,CACzBtW,KAAMoS,EAAI1R,QAAQI,SAASd,KAC3BF,IAAKsS,EAAI1R,QAAQI,SAAShB,KAG9BsS,EAAImE,cAAgB,CAChBvW,KAAMwF,EAAElH,EAAEkY,OAASpE,EAAIiE,sBAAsBrW,KAC7CF,IAAK0F,EAAE0Q,EAAEM,OAASpE,EAAIiE,sBAAsBvW,KAGhDsS,EAAI9L,oBACC8L,EAAIzQ,cACDL,EAAQC,OAAS,EACjB6Q,EAAItP,QAAU7H,EAAWqG,GAAW5C,SAAS4C,EAAQ3C,IAAI,SAAU,IAAM1D,EAAWuD,GAEpF4T,EAAItP,QAAU,GAAK7H,EAAWuD,GAGlC4T,EAAItP,SAAWqS,EAAgBnV,KAC/BoS,EAAIvP,QAAUsS,EAAgBrV,KAGlC1F,EAAEE,EAAU2R,SAASvK,SAAS0Q,EAAIzR,SAAShC,IAAI,CAAE4E,QAAS,IAE1D6O,EAAIzR,QAAQ0C,SAAStH,GAAsB2K,OAE3CtM,EAAEoB,GAAMmD,IAAIlC,EAAQ+I,EAAEC,cAAc9G,IAAIlC,MAG5C8X,KAAM,SAAS/O,GACX,IAGIxF,EACAF,EAJAsS,EAAM5S,KAAK2U,MACXrT,EAAWsR,EAAI1R,QAAQI,SACvB2V,EAAOrE,EAAI1R,QAAQkB,UAAU6U,KAI7BjX,KAAK4U,kBAAoBhC,EAAI9H,gBAI5BmM,GAA+B,MAAvBA,EAAK/W,gBACdM,EAAOwF,EAAElH,EAAEkY,OAASpE,EAAImE,cAAcvW,KAElCoS,EAAIzQ,cAAgByQ,EAAI/L,YACxBrG,GAAQoS,EAAIzQ,YAAYpB,cAG5BO,EAASd,KAAOpB,GAAUoB,EAAMoS,EAAItP,QAASsP,EAAIpP,UAGhDyT,GAA+B,MAAvBA,EAAK/W,gBACdI,EAAM0F,EAAE0Q,EAAEM,OAASpE,EAAImE,cAAczW,IAEjCsS,EAAIzQ,cAAgByQ,EAAI/L,YACxBvG,GAAOsS,EAAIzQ,YAAYrB,aAG3BQ,EAAShB,IAAMlB,GAAUkB,EAAKsS,EAAIvP,OAAQuP,EAAIrP,SAG9CxI,EAAMoK,QAAQ+R,WACdtc,EAAEgY,EAAIzR,SAAShC,IACX,YAAa,cACZmC,EAASd,KAAOoS,EAAIkE,uBAAuBtW,MAAQ,QACnDc,EAAShB,IAAMsS,EAAIkE,uBAAuBxW,KAAO,OAGtD1F,EAAEgY,EAAIzR,SAAShC,IAAImC,KAK3B6V,YAAa,WACT,IAAIvE,EAAM5S,KAAK2U,MAEf/B,EAAIzR,QACC0C,SAAStH,GAAsByV,QAAQY,EAAI1R,QAAQ6J,aAAa0G,MAChElP,KAAK/F,GAAUiG,SAEpB7H,EAAEoB,GAAMmD,IAAIlC,EAAQ,KAGxBmY,WAAY,SAASpP,GACbhG,KAAK4U,mBAGT5U,KAAKmX,cAELnR,EAAEC,cAAclD,QAAQ5G,GAASgD,IAAIa,KAAK2U,MAAMkC,yBAGpD7B,QAAS,WACL,IAAIpC,EAAM5S,KAAK2U,MAEf,IAAI3U,KAAK4U,mBAAoBhC,EAAI9H,cAYjC,OARAlQ,EAAEgY,EAAIzR,SACDhC,IAAIyT,EAAI1R,QAAQI,UAChBnC,IAAI,YAAa,IAEtBa,KAAKmX,cAELvE,EAAIjN,QAAQjI,IAEL,GAEX6K,QAAS,WACDvI,KAAK8E,YACL9E,KAAK8E,WAAWyD,UAGpBvI,KAAK8E,WAAa9E,KAAK2U,MAAQ,OAIvC5Z,EAAMG,GAAGkc,OAAOpW,IAxmEpB,CA0mEGhG,OAAOD,MAAMsc","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.draganddrop', 'kendo.popup'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"window\",\n name: \"Window\",\n category: \"web\",\n description: \"The Window widget displays content in a modal or non-modal HTML window.\",\n depends: [ \"draganddrop\", \"popup\" ],\n features: [ {\n id: \"window-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n TabKeyTrap = kendo.ui.Popup.TabKeyTrap,\n Draggable = kendo.ui.Draggable,\n isPlainObject = $.isPlainObject,\n activeElement = kendo._activeElement,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n extend = $.extend,\n each = $.each,\n template = kendo.template,\n BODY = \"body\",\n templates,\n NS = \".kendoWindow\",\n MODAL_NS = \".kendoWindowModal\",\n // classNames\n KWINDOW = \".k-window\",\n KWINDOWTITLE = \".k-window-title\",\n KWINDOWTITLEBAR = KWINDOWTITLE + \"bar\",\n KWINDOWCONTENT = \".k-window-content\",\n KDIALOGCONTENT = \".k-dialog-content\",\n KWINDOWRESIZEHANDLES = \".k-resize-handle\",\n KOVERLAY = \".k-overlay\",\n KCONTENTFRAME = \"k-content-frame\",\n LOADING = \"k-i-loading\",\n KHOVERSTATE = \"k-hover\",\n KFOCUSEDSTATE = \"k-focus\",\n MAXIMIZEDSTATE = \"k-window-maximized\",\n INLINE_FLEX = \"k-display-inline-flex\",\n // constants\n VISIBLE = \":visible\",\n HIDDEN = \"hidden\",\n CURSOR = \"cursor\",\n // events\n OPEN = \"open\",\n ACTIVATE = \"activate\",\n DEACTIVATE = \"deactivate\",\n CLOSE = \"close\",\n REFRESH = \"refresh\",\n MINIMIZE = \"minimize\",\n MAXIMIZE = \"maximize\",\n RESIZESTART = \"resizeStart\",\n RESIZE = \"resize\",\n RESIZEEND = \"resizeEnd\",\n DRAGSTART = \"dragstart\",\n DRAGEND = \"dragend\",\n RESTORE = \"restore\",\n KENDOKEYDOWN = \"kendoKeydown\",\n ERROR = \"error\",\n OVERFLOW = \"overflow\",\n DATADOCOVERFLOWRULE = \"original-overflow-rule\",\n ZINDEX = \"zIndex\",\n MINIMIZE_MAXIMIZE = \".k-window-actions .k-i-window-minimize,.k-window-actions .k-i-window-maximize\",\n KPIN = \".k-i-pin\",\n KUNPIN = \".k-i-unpin\",\n PIN_UNPIN = KPIN + \",\" + KUNPIN,\n TITLEBAR_BUTTONS = \".k-window-titlebar .k-window-action\",\n REFRESHICON = \".k-window-titlebar .k-i-refresh\",\n WINDOWEVENTSHANDLED = \"WindowEventsHandled\",\n zero = /^0[a-z]*$/i,\n isLocalUrl = kendo.isLocalUrl,\n SIZE = {\n small: \"k-window-sm\",\n medium: \"k-window-md\",\n large: \"k-window-lg\"\n };\n\n function defined(x) {\n return (typeof x != \"undefined\");\n }\n\n function toInt(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function constrain(value, low, high) {\n var normalizedValue;\n\n if (value && isNaN(value) && value.toString().indexOf(\"px\") < 0) {\n normalizedValue = value;\n } else {\n normalizedValue = Math.max(\n Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)),\n low === -Infinity ? low : parseInt(low, 10)\n );\n }\n\n return normalizedValue;\n }\n\n function executableScript() {\n return !this.type || this.type.toLowerCase().indexOf(\"script\") >= 0;\n }\n\n\n function getPosition(elem) {\n var result = { top: elem.offsetTop, left: elem.offsetLeft },\n parent = elem.offsetParent;\n\n while (parent) {\n result.top += parent.offsetTop;\n result.left += parent.offsetLeft;\n\n var parentOverflowX = $(parent).css(\"overflowX\");\n var parentOverflowY = $(parent).css(\"overflowY\");\n\n if (parentOverflowY === \"auto\" || parentOverflowY === \"scroll\") {\n result.top -= parent.scrollTop;\n }\n\n if (parentOverflowX === \"auto\" || parentOverflowX === \"scroll\") {\n result.left -= parent.scrollLeft;\n }\n\n parent = parent.offsetParent;\n }\n\n return result;\n }\n\n var Window = Widget.extend({\n init: function(element, options) {\n var that = this,\n wrapper,\n offset = {},\n visibility, display, position,\n isVisible = false,\n content,\n windowContent,\n windowFrame,\n globalWindow,\n suppressActions = options && options.actions && !options.actions.length,\n id;\n\n Widget.fn.init.call(that, element, options);\n options = that.options;\n position = options.position;\n element = that.element;\n content = options.content;\n globalWindow = $(window);\n\n if (suppressActions) {\n options.actions = [];\n }\n\n that.appendTo = $(options.appendTo);\n\n that.containment = options.draggable.containment ? $(options.draggable.containment).first() : null;\n\n if (content && !isPlainObject(content)) {\n content = options.content = { url: content };\n }\n\n // remove script blocks to prevent double-execution\n element.find(\"script\").filter(executableScript).remove();\n\n if (!element.parent().is(that.appendTo) && !that.containment && (position.top === undefined$1 || position.left === undefined$1)) {\n if (element.is(VISIBLE)) {\n offset = element.offset();\n isVisible = true;\n } else {\n visibility = element.css(\"visibility\");\n display = element.css(\"display\");\n\n element.css({ visibility: HIDDEN, display: \"\" });\n\n if (document.body.contains(element[0])) {\n offset = element.offset();\n } else {\n offset = { top: 0, left: 0 };\n }\n\n element.css({ visibility: visibility, display: display });\n }\n\n if (position.top === undefined$1) {\n position.top = offset.top;\n }\n if (position.left === undefined$1) {\n position.left = offset.left;\n }\n }\n\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n\n wrapper = that.wrapper = element.closest(KWINDOW);\n\n if (!element.is(\".k-window-content\") || !wrapper[0]) {\n element.addClass(\"k-window-content\");\n element.attr(\"tabindex\", 0);\n that._createWindow(element, options);\n wrapper = that.wrapper = element.closest(KWINDOW);\n\n that.title(that.options.title);\n that._dimensions();\n }\n\n that.minTop = that.minLeft = -Infinity;\n that.maxTop = that.maxLeft = Infinity;\n that._position();\n\n if (content) {\n that.refresh(content);\n }\n\n if (options.visible) {\n that.toFront(null, !options.modal);\n }\n\n windowContent = wrapper.children(KWINDOWCONTENT);\n\n if (options.visible && options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n }\n\n wrapper\n .on(\"mouseenter\" + NS, TITLEBAR_BUTTONS, that._buttonEnter.bind(that))\n .on(\"mouseleave\" + NS, TITLEBAR_BUTTONS, that._buttonLeave.bind(that))\n .on(\"click\" + NS, \"> \" + TITLEBAR_BUTTONS, that._windowActionHandler.bind(that))\n .on(\"keydown\" + NS, that, that._keydown.bind(that))\n .on(\"focus\" + NS, that._focus.bind(that))\n .on(\"blur\" + NS, that._blur.bind(that));\n\n windowContent\n .on(\"keydown\" + NS, that, that._keydownContent.bind(that));\n\n windowFrame = windowContent.find(\".\" + KCONTENTFRAME)[0];\n\n if (windowFrame && !globalWindow.data(WINDOWEVENTSHANDLED)) {\n\n globalWindow.on(\"blur\" + NS, function() {\n var element = $(document.activeElement).parent(KWINDOWCONTENT);\n if (element.length) {\n var windowInstance = kendo.widgetInstance(element);\n windowInstance._focus();\n }\n });\n\n globalWindow.on(\"focus\" + NS, function() {\n $(KWINDOWCONTENT).not(KDIALOGCONTENT).each(function(i, element) {\n kendo.widgetInstance($(element))._blur();\n });\n });\n\n globalWindow.data(WINDOWEVENTSHANDLED, true);\n }\n\n this._resizable();\n\n this._draggable();\n\n if (options.pinned && this.wrapper.is(\":visible\")) {\n that.pin();\n }\n\n id = element.attr(\"id\");\n if (id) {\n id = id + \"_wnd_title\";\n wrapper.attr({\n \"role\": \"dialog\",\n \"aria-labelledby\": id\n }).children(KWINDOWTITLEBAR)\n .children(KWINDOWTITLE)\n .attr(\"id\", id);\n }\n\n wrapper.add(wrapper.children(\".k-resize-handle,\" + KWINDOWTITLEBAR))\n .on(kendo.support.mousedown + NS, that.toFront.bind(that));\n\n that.touchScroller = kendo.touchScroller(element);\n\n that._resizeHandler = that._onDocumentResize.bind(that);\n\n that._marker = kendo.guid().substring(0, 8);\n\n $(window).on(\"resize\" + NS + that._marker, that._resizeHandler);\n\n if (options.visible) {\n that.trigger(OPEN);\n that.trigger(ACTIVATE);\n }\n\n kendo.notify(that);\n\n if (this.options.modal) {\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n this._tabKeyTrap.trap();\n this._tabKeyTrap.shouldTrap = function() {\n return wrapper.data(\"isFront\");\n };\n }\n },\n\n _buttonEnter: function(e) {\n $(e.currentTarget).addClass(KHOVERSTATE);\n },\n\n _buttonLeave: function(e) {\n $(e.currentTarget).removeClass(KHOVERSTATE);\n },\n\n _focus: function() {\n this.wrapper.addClass(KFOCUSEDSTATE);\n },\n\n _blur: function() {\n this.wrapper.removeClass(KFOCUSEDSTATE);\n },\n\n _dimensions: function() {\n var wrapper = this.wrapper;\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var maxHeight = options.maxHeight;\n var sizeClass = options.size;\n var dimensions = [\"minWidth\",\"minHeight\",\"maxWidth\",\"maxHeight\"];\n var contentBoxSizing = wrapper.css(\"box-sizing\") == \"content-box\";\n\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-left-width\") + toInt(wrapper, \"border-right-width\") : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-top-width\") + toInt(wrapper, \"border-bottom-width\") : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, \"padding-top\") : 0;\n\n if (this.containment && !this._isPinned) {\n this._updateBoundaries();\n options.maxHeight = Math.min(this.containment.height - (tbBorderWidth + paddingTop), maxHeight);\n options.maxWidth = Math.min(this.containment.width - lrBorderWidth, options.maxWidth);\n }\n\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]] || \"\";\n if (value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n\n if (maxHeight != Infinity) {\n this.element.css(\"maxHeight\", maxHeight);\n }\n\n if (width) {\n wrapper.outerWidth(constrain(width, options.minWidth, options.maxWidth));\n }\n else {\n wrapper.outerWidth(\"\");\n }\n\n if (height) {\n wrapper.outerHeight(constrain(height, options.minHeight, options.maxHeight));\n }\n else {\n wrapper.outerHeight(\"\");\n }\n\n if (!options.visible) {\n wrapper.removeClass(INLINE_FLEX).hide();\n }\n\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n\n _position: function() {\n var wrapper = this.wrapper,\n position = this.options.position,\n containmentTop, containmentLeft;\n\n this._updateBoundaries();\n\n if (this.containment) {\n position.top = position.top || 0;\n position.left = position.left || 0;\n\n containmentTop = position.top.toString().indexOf(\"%\") > 0 ?\n parseInt(this.containment.height * (parseFloat(position.top) / 100), 10) :\n position.top;\n\n containmentLeft = position.left.toString().indexOf(\"%\") > 0 ?\n parseInt(this.containment.width * (parseFloat(position.left) / 100), 10) :\n position.left;\n\n position.top = constrain(containmentTop, this.minTop, this.maxTop);\n position.left = constrain(containmentLeft, this.minLeft, this.maxLeft);\n }\n\n if (position.top && position.top.toString().indexOf(\"px\") > 0) {\n position.top = Number(position.top.replace(\"px\", \"\"));\n }\n\n if (position.left && position.left.toString().indexOf(\"px\") > 0) {\n position.left = Number(position.left.replace(\"px\", \"\"));\n }\n\n if (position.top === 0) {\n position.top = position.top.toString();\n }\n\n if (position.left === 0) {\n position.left = position.left.toString();\n }\n\n wrapper.css({\n top: position.top || \"\",\n left: position.left || \"\"\n });\n },\n\n _updateBoundaries: function() {\n var containment = this.containment;\n\n if (!containment) {\n return null;\n }\n\n containment.width = containment.innerWidth();\n containment.height = containment.innerHeight();\n\n if (parseInt(containment.width, 10) > containment[0].clientWidth) {\n containment.width -= kendo.support.scrollbar();\n }\n\n if (parseInt(containment.height, 10) > containment[0].clientHeight) {\n containment.height -= kendo.support.scrollbar();\n }\n\n containment.position = getPosition(containment[0]);\n\n if (this._isPinned) {\n this.minTop = this.minLeft = -Infinity;\n this.maxTop = this.maxLeft = Infinity;\n } else {\n this.minTop = containment.scrollTop();\n this.minLeft = containment.scrollLeft();\n this.maxLeft = this.minLeft + containment.width - outerWidth(this.wrapper, true);\n this.maxTop = this.minTop + containment.height - outerHeight(this.wrapper, true);\n }\n },\n\n _animationOptions: function(id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: { hide: true, effects: {} }\n };\n\n return animation && animation[id] || basicAnimation[id];\n },\n\n _resize: function() {\n kendo.resize(this.element.children());\n },\n\n _resizable: function() {\n var resizable = this.options.resizable;\n var wrapper = this.wrapper;\n\n if (this.resizing) {\n wrapper\n .off(\"dblclick\" + NS)\n .children(KWINDOWRESIZEHANDLES).remove();\n\n this.resizing.destroy();\n this.resizing = null;\n }\n\n if (resizable) {\n wrapper.on(\"dblclick\" + NS, KWINDOWTITLEBAR, (function(e) {\n if (!$(e.target).closest(\".k-window-action\").length) {\n this.toggleMaximization();\n }\n }).bind(this));\n\n each(\"n e s w se sw ne nw\".split(\" \"), function(index, handler) {\n wrapper.append(templates.resizeHandle(handler));\n });\n\n this.resizing = new WindowResizing(this);\n }\n\n wrapper = null;\n },\n\n _draggable: function() {\n var draggable = this.options.draggable;\n\n if (this.dragging) {\n this.dragging.destroy();\n this.dragging = null;\n }\n if (draggable) {\n this.dragging = new WindowDragging(this, draggable.dragHandle || KWINDOWTITLEBAR);\n }\n },\n\n _actions: function() {\n var options = this.options;\n var actions = options.actions;\n var pinned = options.pinned;\n var titlebar = this.wrapper.children(KWINDOWTITLEBAR);\n var container = titlebar.find(\".k-window-actions\");\n var windowSpecificCommands = [ \"maximize\", \"minimize\" ];\n\n actions = $.map(actions, function(action) {\n action = pinned && action.toLowerCase() === \"pin\" ? \"unpin\" : action;\n return { name: (windowSpecificCommands.indexOf(action.toLowerCase()) > - 1) ? \"window-\" + action : action };\n });\n\n container.html(kendo.render(templates.action, actions));\n },\n\n setOptions: function(options) {\n var that = this;\n var sizeClass = that.options.size;\n var doc = this.containment && !that._isPinned ? this.containment : $(document);\n // make a deep extend over options.position telerik/kendo-ui-core#844\n var cachedOptions = JSON.parse(JSON.stringify(options));\n extend(options.position, that.options.position);\n extend(options.position, cachedOptions.position);\n\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n\n Widget.fn.setOptions.call(that, options);\n var scrollable = that.options.scrollable !== false;\n\n that.restore();\n\n if (typeof options.title !== \"undefined\") {\n that.title(options.title);\n }\n\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n\n that._position();\n that._resizable();\n that._draggable();\n that._actions();\n if (typeof options.modal !== \"undefined\") {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n\n that.element.css(OVERFLOW, scrollable ? \"\" : \"hidden\");\n },\n\n events: [\n OPEN,\n ACTIVATE,\n DEACTIVATE,\n CLOSE,\n MINIMIZE,\n MAXIMIZE,\n REFRESH,\n RESTORE,\n RESIZESTART,\n RESIZE,\n RESIZEEND,\n DRAGSTART,\n DRAGEND,\n KENDOKEYDOWN,\n ERROR\n ],\n\n options: {\n name: \"Window\",\n animation: {\n open: {\n effects: { zoom: { direction: \"in\" }, fade: { direction: \"in\" } },\n duration: 350\n },\n close: {\n effects: { zoom: { direction: \"out\", properties: { scale: 0.7 } }, fade: { direction: \"out\" } },\n duration: 350,\n hide: true\n }\n },\n title: \"\",\n actions: [\"Close\"],\n autoFocus: true,\n modal: false,\n size: \"auto\",\n resizable: true,\n draggable: true,\n minWidth: 90,\n minHeight: 50,\n maxWidth: Infinity,\n maxHeight: Infinity,\n pinned: false,\n scrollable: true,\n position: {},\n content: null,\n visible: null,\n height: null,\n width: null,\n appendTo: \"body\",\n isMaximized: false,\n isMinimized: false\n },\n\n _closable: function() {\n return $.inArray(\"close\", $.map(this.options.actions, function(x) { return x.toLowerCase(); })) > -1;\n },\n\n _keydownContent: function(e) {\n var that = this,\n keys = kendo.keys,\n keyCode = e.keyCode;\n\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n },\n\n _keydown: function(e) {\n var that = this,\n options = that.options,\n keys = kendo.keys,\n keyCode = e.keyCode,\n wrapper = that.wrapper,\n offset, handled,\n distance = 10,\n isMaximized = options.isMaximized,\n isMinimized = options.isMinimized,\n newWidth, newHeight, w, h;\n\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n\n if (e.target != e.currentTarget || that._closing) {\n return;\n }\n\n // Refresh\n if (e.altKey && keyCode == 82) {// Alt + R\n that.refresh();\n }\n\n // Pin/Unpin\n if (e.altKey && keyCode == 80) {// Alt + P\n if (that.options.pinned) {\n that.unpin();\n } else {\n that.pin();\n }\n }\n\n // Maximize/Restore/Miminimize\n if (e.altKey && keyCode == keys.UP) {\n if (isMinimized) {\n that.restore();\n that.wrapper.trigger(\"focus\");\n } else if (!isMaximized) {\n that.maximize();\n that.wrapper.trigger(\"focus\");\n }\n } else if (e.altKey && keyCode == keys.DOWN) {\n if (!isMinimized && !isMaximized) {\n that.minimize();\n that.wrapper.trigger(\"focus\");\n } else if (isMaximized) {\n that.restore();\n that.wrapper.trigger(\"focus\");\n }\n }\n\n offset = kendo.getOffset(wrapper);\n\n if (that.containment && !that._isPinned) {\n offset = that.options.position;\n }\n\n if (options.draggable && !e.ctrlKey && !e.altKey && !isMaximized) {\n that._updateBoundaries();\n if (keyCode == keys.UP) {\n offset.top = constrain(offset.top - distance, that.minTop, that.maxTop);\n handled = wrapper.css(\"top\", offset.top);\n } else if (keyCode == keys.DOWN) {\n offset.top = constrain(offset.top + distance, that.minTop, that.maxTop);\n handled = wrapper.css(\"top\", offset.top);\n } else if (keyCode == keys.LEFT) {\n offset.left = constrain(offset.left - distance, that.minLeft, that.maxLeft);\n handled = wrapper.css(\"left\", offset.left);\n } else if (keyCode == keys.RIGHT) {\n offset.left = constrain(offset.left + distance, that.minLeft, that.maxLeft);\n handled = wrapper.css(\"left\", offset.left);\n }\n }\n\n if (options.resizable && e.ctrlKey && !isMaximized && !isMinimized) {\n if (keyCode == keys.UP) {\n handled = true;\n newHeight = wrapper.outerHeight() - distance;\n } else if (keyCode == keys.DOWN) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newHeight = Math.min(wrapper.outerHeight() + distance,\n that.containment.height - offset.top - toInt(wrapper, \"padding-top\") -\n toInt(wrapper, \"borderBottomWidth\") - toInt(wrapper, \"borderTopWidth\"));\n } else {\n newHeight = wrapper.outerHeight() + distance;\n }\n } if (keyCode == keys.LEFT) {\n handled = true;\n newWidth = wrapper.outerWidth() - distance;\n } else if (keyCode == keys.RIGHT) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newWidth = Math.min(wrapper.outerWidth() + distance,\n that.containment.width - offset.left -\n toInt(wrapper, \"borderLeftWidth\") - toInt(wrapper, \"borderRightWidth\"));\n } else {\n newWidth = wrapper.outerWidth() + distance;\n }\n }\n\n if (handled) {\n w = constrain(newWidth, options.minWidth, options.maxWidth);\n h = constrain(newHeight, options.minHeight, options.maxHeight);\n\n if (!isNaN(w)) {\n wrapper.outerWidth(w);\n that.options.width = w + \"px\";\n }\n if (!isNaN(h)) {\n wrapper.outerHeight(h);\n that.options.height = h + \"px\";\n }\n\n that.resize();\n }\n }\n\n if (handled) {\n e.preventDefault();\n }\n },\n\n _overlay: function(visible) {\n var overlay = this.containment ? this.containment.children(KOVERLAY) : this.appendTo.children(KOVERLAY),\n wrapper = this.wrapper,\n display = visible ? \"block\" : \"none\",\n zIndex = parseInt(wrapper.css(ZINDEX), 10) - 1;\n\n if (!overlay.length) {\n overlay = $(\"
\");\n }\n\n overlay\n .insertBefore(wrapper[0])\n .css({\n zIndex: zIndex,\n display: display\n });\n\n if (this.options.modal.preventScroll && !this.containment) {\n this._stopDocumentScrolling();\n }\n\n return overlay;\n },\n\n _actionForIcon: function(icon) {\n var iconClass = /\\bk-i(-\\w+)+\\b/.exec(icon[0].className)[0];\n return {\n \"k-i-close\": \"_close\",\n \"k-i-window-maximize\": \"maximize\",\n \"k-i-window-minimize\": \"minimize\",\n \"k-i-window-restore\": \"restore\",\n \"k-i-refresh\": \"refresh\",\n \"k-i-pin\": \"pin\",\n \"k-i-unpin\": \"unpin\"\n }[iconClass];\n },\n\n _windowActionHandler: function(e) {\n if (this._closing) {\n return;\n }\n var icon = $(e.target).closest(\".k-window-action\").find(\".k-icon\");\n var action = this._actionForIcon(icon);\n\n if (action) {\n e.preventDefault();\n this[action]();\n return false;\n }\n },\n\n _modals: function() {\n var that = this,\n windowElements = $(KWINDOW + VISIBLE),\n windowInstance,\n modals = [];\n\n for (var i = 0; i < windowElements.length; i += 1) {\n windowInstance = that._object($(windowElements[i]));\n\n if (windowInstance &&\n windowInstance.options &&\n windowInstance.options.modal &&\n windowInstance.options.visible &&\n windowInstance.options.appendTo === that.options.appendTo &&\n (!windowInstance.containment || (that.containment && windowInstance.containment[0] === that.containment[0]))) {\n modals.push(windowInstance.wrapper[0]);\n }\n }\n\n modals.sort(function(a, b) {\n return a.style.zIndex - b.style.zIndex;\n });\n\n that = null;\n\n return $(modals);\n },\n\n _object: function(element) {\n var content = element.children(KWINDOWCONTENT);\n var widget = kendo.widgetInstance(content);\n\n if (widget) {\n return widget;\n }\n\n return undefined$1;\n },\n\n center: function() {\n var that = this,\n position = that.options.position,\n wrapper = that.wrapper,\n documentWindow = $(window),\n scrollTop = 0,\n scrollLeft = 0,\n newTop, newLeft;\n\n if (that.options.isMaximized) {\n return that;\n }\n\n if (that.options.pinned && !that._isPinned) {\n that.pin();\n }\n\n if (!that.options.pinned) {\n scrollTop = documentWindow.scrollTop();\n scrollLeft = documentWindow.scrollLeft();\n }\n\n if (this.containment && !that.options.pinned) {\n newTop = this.minTop + (this.maxTop - this.minTop) / 2;\n newLeft = this.minLeft + (this.maxLeft - this.minLeft) / 2;\n } else {\n that._scrollIsAppended = true;\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.outerWidth()) / 2);\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.outerHeight() - toInt(wrapper, \"paddingTop\")) / 2);\n }\n\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n\n position.top = newTop;\n position.left = newLeft;\n\n return that;\n },\n\n title: function(title) {\n var that = this,\n value,\n encoded = true,\n wrapper = that.wrapper,\n titleBar = wrapper.children(KWINDOWTITLEBAR),\n titleElement = titleBar.children(KWINDOWTITLE);\n\n if (!arguments.length) {\n return titleElement.html();\n }\n\n if ($.isPlainObject(title)) {\n value = typeof title.text !== \"undefined\" ? title.text : \"\";\n encoded = title.encoded !== false;\n } else {\n value = title;\n }\n\n if (value === false) {\n wrapper.addClass(\"k-window-titleless\");\n wrapper.css(\"padding-top\", 0);\n titleBar.remove();\n } else {\n if (!titleBar.length) {\n wrapper.prepend(templates.titlebar({\n title: encoded ? kendo.htmlEncode(value) : value\n }));\n that._actions();\n titleBar = wrapper.children(KWINDOWTITLEBAR);\n } else {\n titleElement.html(encoded ? kendo.htmlEncode(value) : value);\n }\n }\n\n that.options.title = value;\n\n return that;\n },\n\n content: function(html, data) {\n var content = this.wrapper.children(KWINDOWCONTENT),\n scrollContainer = content.children(\".km-scroll-container\");\n\n content = scrollContainer[0] ? scrollContainer : content;\n\n if (!defined(html)) {\n return content.html();\n }\n\n this.angular(\"cleanup\", function() {\n return { elements: content.children() };\n });\n\n kendo.destroy(this.element.children());\n\n content.empty().html(html);\n\n this.angular(\"compile\", function() {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n\n return this;\n },\n\n open: function() {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n showOptions = this._animationOptions(\"open\"),\n contentElement = wrapper.children(KWINDOWCONTENT),\n overlay, otherModalsVisible,\n containmentContext = this.containment && !that._isPinned,\n doc = containmentContext ? this.containment : $(document);\n\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n\n that._closing = false;\n\n that.toFront();\n\n if (options.autoFocus) {\n that.wrapper.trigger(\"focus\");\n }\n\n options.visible = true;\n\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n\n overlay.kendoStop(true, true);\n\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css(\"opacity\", 0.5);\n }\n\n overlay.show();\n\n $(window).on(\"focus\" + MODAL_NS, function() {\n if (wrapper.data(\"isFront\") && !$(document.activeElement).closest(wrapper).length) {\n that.wrapper.trigger(\"focus\");\n }\n });\n }\n\n if (!wrapper.is(VISIBLE)) {\n contentElement.css(OVERFLOW, HIDDEN);\n\n that.wrapper.find(TITLEBAR_BUTTONS).addClass(\"k-button-flat\");\n\n wrapper.addClass(INLINE_FLEX).kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: this._activate.bind(this)\n });\n }\n }\n\n if (options.isMaximized) {\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n that._stopDocumentScrolling();\n }\n\n if (this.options.pinned && !this._isPinned) {\n this.pin();\n }\n\n return that;\n },\n\n _activate: function() {\n var scrollable = this.options.scrollable !== false;\n\n if (this.options.autoFocus) {\n this.wrapper.trigger(\"focus\");\n }\n\n this.element.css(OVERFLOW, scrollable ? \"\" : \"hidden\");\n kendo.resize(this.element.children());\n\n this.trigger(ACTIVATE);\n },\n\n _removeOverlay: function(suppressAnimation) {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n var hideOptions = this._animationOptions(\"close\");\n\n if (hideOverlay) {\n if (!suppressAnimation && hideOptions.duration && kendo.effects.Fade) {\n var overlayFx = kendo.fx(options.modal ? this._overlay(true) : $(undefined$1)).fadeOut();\n overlayFx.duration(hideOptions.duration || 0);\n overlayFx.startValue(0.5);\n overlayFx.play();\n } else {\n this._overlay(false).remove();\n }\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n }\n },\n\n _close: function(systemTriggered) {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n showOptions = this._animationOptions(\"open\"),\n hideOptions = this._animationOptions(\"close\"),\n containmentContext = this.containment && !that._isPinned,\n doc = containmentContext ? this.containment : $(document),\n defaultPrevented;\n\n if (that._closing) {\n return;\n }\n\n defaultPrevented = that.trigger(CLOSE, { userTriggered: !systemTriggered });\n that._closing = !defaultPrevented;\n\n if (wrapper.is(VISIBLE) && !defaultPrevented) {\n options.visible = false;\n\n $(KWINDOW).each(function(i, element) {\n var contentElement = $(element).children(KWINDOWCONTENT);\n\n // Remove overlay set by toFront\n if (element != wrapper && contentElement.find(\"> .\" + KCONTENTFRAME).length > 0) {\n contentElement.children(KOVERLAY).remove();\n }\n });\n\n this._removeOverlay();\n\n // Prevent close animation from stopping\n that.wrapper.find(TITLEBAR_BUTTONS).removeClass(\"k-button-flat\");\n\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: this._deactivate.bind(this)\n });\n $(window).off(MODAL_NS);\n }\n\n if (that.options.isMaximized) {\n that._enableDocumentScrolling();\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n doc.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n doc.scrollLeft(that._containerScrollLeft);\n }\n }\n\n if (that.options.iframe) {\n that.wrapper.trigger(\"blur\");\n }\n },\n\n _deactivate: function() {\n var that = this;\n\n that.wrapper\n .removeClass(INLINE_FLEX)\n .hide()\n .css(\"opacity\", \"\");\n\n that.trigger(DEACTIVATE);\n\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n }\n }\n },\n\n close: function() {\n this._close(true);\n return this;\n },\n\n _actionable: function(element) {\n return $(element).is(TITLEBAR_BUTTONS + \",\" + TITLEBAR_BUTTONS + \" .k-icon, :input, a, .k-input, .k-icon, [role='gridcell'], .k-input-value-text\");\n },\n\n _shouldFocus: function(target) {\n var active = activeElement(),\n element = this.wrapper;\n\n return this.options.autoFocus &&\n !$(active).is(element) &&\n !this._actionable(target) &&\n (!element.find(active).length || !element.find(target).length);\n },\n\n toFront: function(e, avoidFocus) {\n var that = this,\n wrapper = that.wrapper,\n currentWindow = wrapper[0],\n containmentContext = that.containment && !that._isPinned,\n openAnimation = this._animationOptions(\"open\"),\n zIndex = +wrapper.css(ZINDEX),\n originalZIndex = zIndex,\n target = (e && e.target) || null;\n\n $(KWINDOW).each(function(i, element) {\n var windowObject = $(element),\n zIndexNew = windowObject.css(ZINDEX),\n contentElement = windowObject.children(KWINDOWCONTENT);\n\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n\n wrapper.data(\"isFront\", element == currentWindow);\n // Add overlay to windows with iframes and lower z-index to prevent\n // trapping of events when resizing / dragging\n\n if (element != currentWindow &&\n contentElement.find(\".\" + KCONTENTFRAME).length &&\n !contentElement.find(KOVERLAY).length) {\n contentElement.append(templates.overlay);\n }\n });\n\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n that.element.find(\"> .k-overlay\").remove();\n\n if (that._shouldFocus(target)) {\n if (!avoidFocus) {\n setTimeout(function() {\n that.wrapper.focus();\n }, openAnimation ? openAnimation.duration : 0);\n }\n\n var scrollTop = containmentContext ? that.containment.scrollTop() : $(window).scrollTop(),\n windowTop = parseInt(wrapper.position().top, 10);\n\n if (!that.options.pinned && windowTop > 0 && windowTop < scrollTop) {\n if (scrollTop > 0) {\n $(window).scrollTop(windowTop);\n } else {\n wrapper.css(\"top\", scrollTop);\n }\n }\n }\n\n wrapper = null;\n\n return that;\n },\n\n toggleMaximization: function() {\n if (this._closing) {\n return this;\n }\n\n return this[this.options.isMaximized ? \"restore\" : \"maximize\"]();\n },\n\n restore: function() {\n var that = this;\n var options = that.options;\n var minHeight = options.minHeight;\n var restoreOptions = that.restoreOptions;\n var shouldRestrictTop;\n var container = that.containment && !that._isPinned ? that.containment : $(document);\n\n if (!options.isMaximized && !options.isMinimized) {\n return that;\n }\n\n if (minHeight && minHeight != Infinity) {\n that.wrapper.css(\"min-height\", minHeight);\n }\n\n if (restoreOptions && !options.isMaximized) {\n restoreOptions.height = constrain(restoreOptions.height, that.options.minHeight, that.options.maxHeight);\n\n shouldRestrictTop = options.position.top + parseInt(restoreOptions.height, 10) > that.maxTop;\n\n if (shouldRestrictTop) {\n options.position.top = constrain(options.position.top, that.minTop, that.maxTop - parseInt(restoreOptions.height, 10));\n\n extend(restoreOptions, {\n left: options.position.left,\n top: options.position.top\n });\n }\n }\n\n that.wrapper\n .css({\n position: options.pinned ? \"fixed\" : \"absolute\",\n left: restoreOptions.left,\n top: restoreOptions.top,\n width: restoreOptions.width,\n height: restoreOptions.height\n })\n .removeClass(MAXIMIZEDSTATE)\n .find(\".k-window-content,.k-resize-handle\").show().end()\n .find(\".k-window-titlebar .k-i-window-restore\").parent().remove().end().end()\n .find(MINIMIZE_MAXIMIZE).parent().show().end().end()\n .find(PIN_UNPIN).parent().show();\n\n if (options.isMaximized) {\n that.wrapper.find(\".k-i-window-maximize\").parent().trigger(\"focus\");\n } else if (options.isMinimized) {\n that.wrapper.find(\".k-i-window-minimize\").parent().trigger(\"focus\");\n }\n\n that.options.width = restoreOptions.width;\n that.options.height = restoreOptions.height;\n\n if (!that.options.modal.preventScroll) {\n that._enableDocumentScrolling();\n }\n\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n container.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n container.scrollLeft(that._containerScrollLeft);\n }\n\n options.isMaximized = options.isMinimized = false;\n\n that.wrapper.removeAttr(\"aria-labelled-by\");\n\n that.resize();\n\n that.trigger(RESTORE);\n\n return that;\n },\n\n _sizingAction: function(actionId, callback) {\n var that = this,\n wrapper = that.wrapper,\n style = wrapper[0].style,\n options = that.options;\n\n if (options.isMaximized || options.isMinimized) {\n return that;\n }\n\n that.restoreOptions = {\n width: style.width,\n height: style.height\n };\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).hide().end()\n .children(KWINDOWTITLEBAR).find(MINIMIZE_MAXIMIZE).parent().hide()\n .eq(0).before(templates.action({ name: \"window-restore\" }));\n\n callback.call(that);\n\n that.wrapper.children(KWINDOWTITLEBAR).find(PIN_UNPIN).parent().toggle(actionId !== \"maximize\");\n\n that.trigger(actionId);\n\n wrapper.find(\".k-i-window-restore\").parent().trigger(\"focus\");\n\n return that;\n },\n\n maximize: function() {\n this._sizingAction(\"maximize\", function() {\n var that = this,\n wrapper = that.wrapper,\n containmentContext = this.containment && !that._isPinned,\n position = wrapper.position(),\n doc = $(document);\n\n extend(that.restoreOptions, {\n left: position.left + (containmentContext ? this.containment.scrollLeft() : 0),\n top: position.top + (containmentContext ? this.containment.scrollTop() : 0)\n });\n\n this._containerScrollTop = containmentContext ? this.containment.scrollTop() : doc.scrollTop();\n this._containerScrollLeft = containmentContext ? this.containment.scrollLeft() : doc.scrollLeft();\n\n that._stopDocumentScrolling();\n\n wrapper\n .css({\n top: containmentContext ? this.containment.scrollTop() : 0,\n left: containmentContext ? this.containment.scrollLeft() : 0,\n position: containmentContext ? \"absolute\" : \"fixed\"\n })\n .addClass(MAXIMIZEDSTATE);\n\n that.options.isMaximized = true;\n\n that._onDocumentResize();\n });\n\n return this;\n },\n\n _stopDocumentScrolling: function() {\n var that = this;\n var containment = that.containment;\n\n if (containment && !that._isPinned) {\n that._storeOverflowRule(containment);\n containment.css(OVERFLOW, HIDDEN);\n that.wrapper.css({\n maxWidth: containment.innerWidth(),\n maxHeight: containment.innerHeight()\n });\n return;\n }\n\n var $body = $(\"body\");\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n\n var $html = $(\"html\");\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n },\n\n _enableDocumentScrolling: function() {\n var that = this;\n var containment = that.containment;\n\n if (containment && !that._isPinned) {\n that._restoreOverflowRule(containment);\n that.wrapper.css({\n maxWidth: containment.width,\n maxHeight: containment.height\n });\n return;\n }\n\n that._restoreOverflowRule($(document.body));\n that._restoreOverflowRule($(\"html\"));\n },\n\n _storeOverflowRule: function($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n\n var overflowRule = $element.get(0).style.overflow;\n\n if (typeof overflowRule === \"string\") {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n\n _isOverflowStored: function($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === \"string\";\n },\n\n _restoreOverflowRule: function($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n\n if (overflowRule !== null && overflowRule !== undefined$1) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, \"\");\n }\n },\n\n isMaximized: function() {\n return this.options.isMaximized;\n },\n\n minimize: function() {\n this._sizingAction(\"minimize\", function() {\n var that = this;\n\n that.wrapper.css({\n height: \"\",\n minHeight: \"\"\n });\n\n that.element.hide();\n\n that.options.isMinimized = true;\n });\n\n this.wrapper.attr(\"aria-labelled-by\", this.element.attr(\"aria-labelled-by\"));\n\n this._updateBoundaries();\n\n return this;\n },\n\n isMinimized: function() {\n return this.options.isMinimized;\n },\n\n pin: function() {\n var that = this,\n win = $(window),\n wrapper = that.wrapper,\n options = that.options,\n position = options.position,\n top = this.containment ? getPosition(wrapper[0]).top + toInt(this.containment, \"borderTopWidth\") : toInt(wrapper, \"top\"),\n left = this.containment ? getPosition(wrapper[0]).left + toInt(this.containment, \"borderLeftWidth\") : toInt(wrapper, \"left\");\n\n if (!that.options.isMaximized) {\n position.top = top;\n position.left = left;\n\n if (that._scrollIsAppended && (!this.containment || this.containment.css(\"position\") !== \"fixed\")) {\n\n position.top -= win.scrollTop();\n position.left -= win.scrollLeft();\n that._scrollIsAppended = false;\n }\n\n wrapper.css(extend(position, { position: \"fixed\" }));\n wrapper.children(KWINDOWTITLEBAR).find(KPIN).addClass(\"k-i-unpin\").removeClass(\"k-i-pin\");\n\n that._isPinned = true;\n that.options.pinned = true;\n\n if (this.containment) {\n options.maxWidth = options.maxHeight = Infinity;\n wrapper.css({\n maxWidth: \"\",\n maxHeight: \"\"\n });\n }\n }\n },\n\n unpin: function() {\n var that = this,\n win = $(window),\n wrapper = that.wrapper,\n options = that.options,\n position = that.options.position,\n containment = that.containment,\n top = parseInt(wrapper.css(\"top\"), 10) + win.scrollTop(),\n left = parseInt(wrapper.css(\"left\"), 10) + win.scrollLeft();\n\n if (!that.options.isMaximized) {\n that._isPinned = false;\n that._scrollIsAppended = true;\n that.options.pinned = false;\n\n if (containment) {\n that._updateBoundaries();\n\n options.maxWidth = Math.min(containment.width, options.maxWidth);\n options.maxHeight = Math.min(containment.height - toInt(wrapper, \"padding-top\"), options.maxHeight);\n\n wrapper.css({\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight\n });\n\n if (top < containment.position.top) {\n top = that.minTop;\n } else if (top > containment.position.top + containment.height) {\n top = that.maxTop;\n } else {\n top = top + containment.scrollTop() - (containment.position.top + toInt(containment, \"border-top-width\"));\n }\n\n if (left < containment.position.left) {\n left = that.minLeft;\n } else if (left > containment.position.left + containment.width) {\n left = that.maxLeft;\n } else {\n left = left + containment.scrollLeft() - (containment.position.left + toInt(containment, \"border-left-width\"));\n }\n\n }\n\n position.top = constrain(top, that.minTop, that.maxTop);\n position.left = constrain(left, that.minLeft, that.maxLeft);\n\n wrapper.css(extend(position, { position: \"\" }));\n wrapper.children(KWINDOWTITLEBAR).find(KUNPIN).addClass(\"k-i-pin\").removeClass(\"k-i-unpin\");\n }\n },\n\n _onDocumentResize: function() {\n var that = this,\n wrapper = that.wrapper,\n wnd = $(window),\n zoomLevel = kendo.support.zoomLevel(),\n contentBoxSizing = wrapper.css(\"box-sizing\") == \"content-box\",\n w, h;\n\n if (!that.options.isMaximized) {\n return;\n }\n\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-left-width\") + toInt(wrapper, \"border-right-width\") : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-top-width\") + toInt(wrapper, \"border-bottom-width\") : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, \"padding-top\") : 0;\n\n if (that.containment && !that._isPinned) {\n w = that.containment.innerWidth() - lrBorderWidth;\n h = that.containment.innerHeight() - (tbBorderWidth + paddingTop);\n } else {\n w = wnd.width() / zoomLevel - lrBorderWidth;\n h = wnd.height() / zoomLevel - (tbBorderWidth + paddingTop);\n }\n\n wrapper.css({\n width: w,\n height: h\n });\n that.options.width = w;\n that.options.height = h;\n\n that.resize();\n },\n\n refresh: function(options) {\n var that = this,\n initOptions = that.options,\n element = $(that.element),\n iframe,\n showIframe,\n url;\n\n if (!isPlainObject(options)) {\n options = { url: options };\n }\n\n options = extend(initOptions.content, options);\n\n showIframe = defined(initOptions.iframe) ? initOptions.iframe : options.iframe;\n\n url = options.url;\n\n if (url) {\n if (!defined(showIframe)) {\n showIframe = !isLocalUrl(url);\n }\n\n if (!showIframe) {\n // perform AJAX request\n that._ajaxRequest(options);\n } else {\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = url || iframe.src;\n } else {\n // render new iframe\n element.html(templates.contentFrame(extend({}, initOptions, { content: options })));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, this._triggerRefresh.bind(this));\n }\n } else {\n if (options.template) {\n // refresh template\n that.content(template(options.template)({}));\n }\n\n that.trigger(REFRESH);\n }\n\n element.toggleClass(\"k-window-iframecontent\", !!showIframe);\n\n return that;\n },\n\n _triggerRefresh: function() {\n this.trigger(REFRESH);\n },\n\n _ajaxComplete: function() {\n clearTimeout(this._loadingIconTimeout);\n this.wrapper.find(REFRESHICON).removeClass(LOADING);\n },\n\n _ajaxError: function(xhr, status) {\n this.trigger(ERROR, { status: status, xhr: xhr });\n },\n\n _ajaxSuccess: function(contentTemplate) {\n return function(data) {\n var html = data;\n if (contentTemplate) {\n html = template(contentTemplate)(data || {});\n }\n\n this.content(html, data);\n this.element.prop(\"scrollTop\", 0);\n\n this.trigger(REFRESH);\n };\n },\n\n _showLoading: function() {\n this.wrapper.find(REFRESHICON).addClass(LOADING);\n },\n\n _ajaxRequest: function(options) {\n this._loadingIconTimeout = setTimeout(this._showLoading.bind(this), 100);\n\n $.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: this._ajaxError.bind(this),\n complete: this._ajaxComplete.bind(this),\n success: this._ajaxSuccess(options.template).bind(this)\n }, options));\n },\n\n _destroy: function() {\n if (this.resizing) {\n this.resizing.destroy();\n }\n\n if (this.dragging) {\n this.dragging.destroy();\n }\n\n this.wrapper.off(NS)\n .children(KWINDOWCONTENT).off(NS).end()\n .find(\".k-resize-handle,.k-window-titlebar\").off(NS);\n\n $(window).off(\"resize\" + NS + this._marker);\n $(window).off(MODAL_NS);\n $(window).off(NS);\n\n clearTimeout(this._loadingIconTimeout);\n\n Widget.fn.destroy.call(this);\n\n this.unbind(undefined$1);\n\n kendo.destroy(this.wrapper);\n },\n\n destroy: function() {\n this._destroy();\n\n if (this.options.modal) {\n this._removeOverlay(true);\n }\n\n this.wrapper.empty().remove();\n\n this.wrapper = this.appendTo = this.element = $();\n },\n\n _createWindow: function() {\n var contentHtml = this.element,\n options = this.options,\n iframeSrcAttributes,\n wrapper,\n isRtl = kendo.support.isRtl(contentHtml);\n\n if (options.scrollable === false) {\n contentHtml.css(\"overflow\", \"hidden\");\n }\n\n wrapper = $(templates.wrapper(options));\n\n // Collect the src attributes of all iframes and then set them to empty string.\n // This seems to fix this IE9 \"feature\": http://msdn.microsoft.com/en-us/library/gg622929%28v=VS.85%29.aspx?ppud=4\n iframeSrcAttributes = contentHtml.find(\"iframe:not(.k-content-frame)\").map(function() {\n var src = this.getAttribute(\"src\");\n this.src = \"\";\n return src;\n });\n\n // Make sure the wrapper is appended to the body only once. IE9+ will throw exceptions if you move iframes in DOM\n wrapper\n .toggleClass(\"k-rtl\", isRtl)\n .attr(\"tabindex\", 0)\n .append(contentHtml)\n .find(\"iframe:not(.k-content-frame)\").each(function(index) {\n // Restore the src attribute of the iframes when they are part of the live DOM tree\n this.src = iframeSrcAttributes[index];\n });\n\n if (this.containment) {\n this.containment.prepend(wrapper);\n } else if (this.appendTo) {\n wrapper.appendTo(this.appendTo);\n }\n\n wrapper.find(\".k-window-title\")\n .css(isRtl ? \"left\" : \"right\", outerWidth(wrapper.find(\".k-window-actions\")) + 10);\n\n contentHtml.css(\"visibility\", \"\").show();\n\n contentHtml.find(\"[data-role=editor]\").each(function() {\n var editor = $(this).data(\"kendoEditor\");\n\n if (editor) {\n editor.refresh();\n }\n });\n\n wrapper = contentHtml = null;\n }\n });\n\n templates = {\n wrapper: template(function () { return \"
\"; }),\n action: template(function (ref) {\n var name = ref.name;\n\n return \"\" +\n \"\" +\n \"\";\n }\n ),\n titlebar: template(function (ref) {\n var title = ref.title;\n\n return \"
\" +\n \"\" + title + \"\" +\n \"
\" +\n \"
\";\n }\n ),\n overlay: \"
\",\n contentFrame: template(function (ref) {\n var title = ref.title;\n var content = ref.content;\n\n return \"\";\n }\n ),\n resizeHandle: template(function (data) { return (\"\"); })\n };\n\n\n function WindowResizing(wnd) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: \">\" + KWINDOWRESIZEHANDLES,\n group: wnd.wrapper.id + \"-resizing\",\n dragstart: that.dragstart.bind(that),\n drag: that.drag.bind(that),\n dragend: that.dragend.bind(that)\n });\n\n that._draggable.userEvents.bind(\"press\", that.addOverlay.bind(that));\n that._draggable.userEvents.bind(\"release\", that.removeOverlay.bind(that));\n }\n\n WindowResizing.prototype = {\n addOverlay: function() {\n this.owner.wrapper.append(templates.overlay);\n },\n removeOverlay: function() {\n this.owner.wrapper.find(KOVERLAY).remove();\n },\n dragstart: function(e) {\n var that = this;\n var wnd = that.owner;\n var wrapper = wnd.wrapper;\n\n that._preventDragging = wnd.trigger(RESIZESTART);\n if (that._preventDragging) {\n return;\n }\n\n that.elementPadding = parseInt(wrapper.css(\"padding-top\"), 10);\n that.initialPosition = kendo.getOffset(wrapper, \"position\");\n\n that.resizeDirection = e.currentTarget.prop(\"className\").replace(\"k-resize-handle k-resize-\", \"\");\n\n that.initialSize = {\n width: wrapper.outerWidth(),\n height: wrapper.outerHeight()\n };\n\n wnd._updateBoundaries();\n\n that.containerOffset = wnd.containment ? wnd.containment.position : kendo.getOffset(wnd.appendTo);\n\n var offsetParent = wrapper.offsetParent();\n\n if (offsetParent.is(\"html\")) {\n that.containerOffset.top = that.containerOffset.left = 0;\n } else {\n var marginTop = offsetParent.css(\"margin-top\");\n var marginLeft = offsetParent.css(\"margin-left\");\n var hasMargin = !zero.test(marginTop) || !zero.test(marginLeft);\n if (hasMargin) {\n var wrapperPosition = getPosition(wrapper[0]);\n var relativeElMarginLeft = wrapperPosition.left - that.containerOffset.left - that.initialPosition.left;\n var relativeElMarginTop = wrapperPosition.top - that.containerOffset.top - that.initialPosition.top;\n\n that._relativeElMarginLeft = relativeElMarginLeft > 1 ? relativeElMarginLeft : 0;\n that._relativeElMarginTop = relativeElMarginTop > 1 ? relativeElMarginTop : 0;\n\n that.initialPosition.left += that._relativeElMarginLeft;\n that.initialPosition.top += that._relativeElMarginTop;\n }\n }\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).not(e.currentTarget).hide();\n\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function(e) {\n if (this._preventDragging) {\n return;\n }\n var that = this,\n wnd = that.owner,\n wrapper = wnd.wrapper,\n options = wnd.options,\n position = options.position,\n direction = that.resizeDirection,\n containerOffset = that.containerOffset,\n initialPosition = that.initialPosition,\n initialSize = that.initialSize,\n containmentContext = wnd.containment && !wnd._isPinned,\n rtl = kendo.support.isRtl(wnd.containment),\n leftRtlOffset = containmentContext && rtl && wnd.containment.innerWidth() > wnd.containment.width ? kendo.support.scrollbar() : 0,\n scrollOffset = containmentContext ? { top: wnd.containment.scrollTop(), left: wnd.containment.scrollLeft() } : { top: 0, left: 0 },\n newWidth, newHeight,\n windowBottom, windowRight,\n x = Math.max(e.x.location, 0),\n y = Math.max(e.y.location, 0);\n\n if (direction.indexOf(\"e\") >= 0) {\n\n if (wnd.containment && x - initialSize.width >= wnd.maxLeft - scrollOffset.left + containerOffset.left + leftRtlOffset) {\n newWidth = wnd.maxLeft + leftRtlOffset - initialPosition.left + initialSize.width - scrollOffset.left;\n } else {\n newWidth = x - initialPosition.left - containerOffset.left;\n }\n\n wrapper.outerWidth(constrain(newWidth, options.minWidth, options.maxWidth));\n } else if (direction.indexOf(\"w\") >= 0) {\n windowRight = initialPosition.left + initialSize.width + containerOffset.left;\n newWidth = constrain(windowRight - x, options.minWidth, options.maxWidth);\n position.left = windowRight - newWidth - containerOffset.left - leftRtlOffset - (that._relativeElMarginLeft || 0) + scrollOffset.left;\n\n if (wnd.containment && position.left <= wnd.minLeft) {\n position.left = wnd.minLeft;\n newWidth = constrain(windowRight - leftRtlOffset - position.left - containerOffset.left + scrollOffset.left, options.minWidth, options.maxWidth);\n }\n\n wrapper.css({\n left: position.left,\n width: newWidth\n });\n }\n\n var newWindowTop = y;\n if (wnd.options.pinned) {\n newWindowTop -= $(window).scrollTop();\n }\n if (direction.indexOf(\"s\") >= 0) {\n newHeight = newWindowTop - initialPosition.top - that.elementPadding - containerOffset.top;\n\n if (newWindowTop - initialSize.height - that.elementPadding >= wnd.maxTop + containerOffset.top - scrollOffset.top) {\n newHeight = wnd.maxTop - initialPosition.top + initialSize.height - scrollOffset.top;\n }\n\n wrapper.outerHeight(constrain(newHeight, options.minHeight, options.maxHeight));\n } else if (direction.indexOf(\"n\") >= 0) {\n windowBottom = initialPosition.top + initialSize.height + containerOffset.top;\n newHeight = constrain(windowBottom - newWindowTop, options.minHeight, options.maxHeight);\n position.top = windowBottom - newHeight - containerOffset.top - (that._relativeElMarginTop || 0) + scrollOffset.top;\n\n if (position.top <= wnd.minTop && wnd.containment) {\n position.top = wnd.minTop;\n newHeight = constrain(windowBottom - position.top - containerOffset.top + scrollOffset.top, options.minHeight, options.maxHeight);\n }\n\n wrapper.css({\n top: position.top,\n height: newHeight\n });\n }\n\n if (newWidth) {\n wnd.options.width = newWidth + \"px\";\n }\n if (newHeight) {\n wnd.options.height = newHeight + \"px\";\n }\n\n wnd.resize();\n },\n dragend: function(e) {\n if (this._preventDragging) {\n return;\n }\n\n var that = this,\n wnd = that.owner,\n wrapper = wnd.wrapper;\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).not(e.currentTarget).show();\n\n $(BODY).css(CURSOR, \"\");\n\n if (wnd.touchScroller) {\n wnd.touchScroller.reset();\n }\n\n if (e.keyCode == 27) {\n wrapper.css(that.initialPosition)\n .css(that.initialSize);\n }\n\n wnd.trigger(RESIZEEND);\n\n return false;\n },\n destroy: function() {\n if (this._draggable) {\n this._draggable.destroy();\n }\n\n this._draggable = this.owner = null;\n }\n };\n\n function WindowDragging(wnd, dragHandle) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: dragHandle,\n group: wnd.wrapper.id + \"-moving\",\n dragstart: that.dragstart.bind(that),\n drag: that.drag.bind(that),\n dragend: that.dragend.bind(that),\n dragcancel: that.dragcancel.bind(that)\n });\n\n that._draggable.userEvents.stopPropagation = false;\n }\n\n WindowDragging.prototype = {\n dragstart: function(e) {\n var wnd = this.owner,\n draggable = wnd.options.draggable,\n element = wnd.element,\n actions = element.find(\".k-window-actions\"),\n containerOffset = kendo.getOffset(wnd.appendTo);\n\n this._preventDragging = wnd.trigger(DRAGSTART) || !draggable;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n wnd.initialWindowPosition = kendo.getOffset(wnd.wrapper, \"position\");\n\n wnd.initialPointerPosition = {\n left: wnd.options.position.left,\n top: wnd.options.position.top\n };\n\n wnd.startPosition = {\n left: e.x.client - wnd.initialWindowPosition.left,\n top: e.y.client - wnd.initialWindowPosition.top\n };\n\n wnd._updateBoundaries();\n if (!wnd.containment) {\n if (actions.length > 0) {\n wnd.minLeft = outerWidth(actions) + parseInt(actions.css(\"right\"), 10) - outerWidth(element);\n } else {\n wnd.minLeft = 20 - outerWidth(element); // at least 20px remain visible\n }\n\n wnd.minLeft -= containerOffset.left;\n wnd.minTop = -containerOffset.top;\n }\n\n $(templates.overlay).appendTo(wnd.wrapper).css({ opacity: 0 });\n\n wnd.wrapper.children(KWINDOWRESIZEHANDLES).hide();\n\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n\n drag: function(e) {\n var wnd = this.owner;\n var position = wnd.options.position;\n var axis = wnd.options.draggable.axis;\n var left;\n var top;\n\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n if (!axis || axis.toLowerCase() === \"x\") {\n left = e.x.client - wnd.startPosition.left;\n\n if (wnd.containment && !wnd._isPinned) {\n left += wnd.containment.scrollLeft();\n }\n\n position.left = constrain(left, wnd.minLeft, wnd.maxLeft);\n }\n\n if (!axis || axis.toLowerCase() === \"y\") {\n top = e.y.client - wnd.startPosition.top;\n\n if (wnd.containment && !wnd._isPinned) {\n top += wnd.containment.scrollTop();\n }\n\n position.top = constrain(top, wnd.minTop, wnd.maxTop);\n }\n\n if (kendo.support.transforms) {\n $(wnd.wrapper).css(\n \"transform\", \"translate(\" +\n (position.left - wnd.initialPointerPosition.left) + \"px, \" +\n (position.top - wnd.initialPointerPosition.top) + \"px)\"\n );\n } else {\n $(wnd.wrapper).css(position);\n }\n\n },\n\n _finishDrag: function() {\n var wnd = this.owner;\n\n wnd.wrapper\n .children(KWINDOWRESIZEHANDLES).toggle(!wnd.options.isMinimized).end()\n .find(KOVERLAY).remove();\n\n $(BODY).css(CURSOR, \"\");\n },\n\n dragcancel: function(e) {\n if (this._preventDragging) {\n return;\n }\n this._finishDrag();\n\n e.currentTarget.closest(KWINDOW).css(this.owner.initialWindowPosition);\n },\n\n dragend: function() {\n var wnd = this.owner;\n\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n $(wnd.wrapper)\n .css(wnd.options.position)\n .css(\"transform\", \"\");\n\n this._finishDrag();\n\n wnd.trigger(DRAGEND);\n\n return false;\n },\n destroy: function() {\n if (this._draggable) {\n this._draggable.destroy();\n }\n\n this._draggable = this.owner = null;\n }\n };\n\n kendo.ui.plugin(Window);\n\n })(window.kendo.jQuery);\n\n}));\n"]}