{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.forms/forms.js","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.ga-event-tracking/ga-event-tracking.js","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.hero-responsive/hero-responsive.js","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.media-query-breakpoints/mq_breakpoints.js","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.modals/modals.directional.js","webpack:///./node_modules/@bit/apollo-web-services.pattern-library.navbar/navbar-slide-collapse.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.autocomplete.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.binder.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.calendar.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.core.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.data.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.data.odata.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.data.xml.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.dateinput.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.datepicker.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.draganddrop.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.dropdownlist.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.editable.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.fx.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.list.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.listview.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.mobile.scroller.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.multiselect.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.numerictextbox.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.pager.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.popup.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.router.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.selectable.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.userevents.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.validator.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.virtuallist.js","webpack:///./node_modules/bootstrap/dist/js/npm.js","webpack:///./node_modules/bootstrap/js/affix.js","webpack:///./node_modules/bootstrap/js/alert.js","webpack:///./node_modules/bootstrap/js/button.js","webpack:///./node_modules/bootstrap/js/carousel.js","webpack:///./node_modules/bootstrap/js/collapse.js","webpack:///./node_modules/bootstrap/js/dropdown.js","webpack:///./node_modules/bootstrap/js/modal.js","webpack:///./node_modules/bootstrap/js/popover.js","webpack:///./node_modules/bootstrap/js/scrollspy.js","webpack:///./node_modules/bootstrap/js/tab.js","webpack:///./node_modules/bootstrap/js/tooltip.js","webpack:///./node_modules/bootstrap/js/transition.js","webpack:///./node_modules/image-map/dist/image-map.jquery.js","webpack:///./node_modules/jquery-file-download/index.js","webpack:///./node_modules/jquery-file-download/src/Scripts/jquery.fileDownload.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/owl.carousel/dist/owl.carousel.js","webpack:///./resources/js/app.js","webpack:///./resources/less/app.less?8b28"],"names":["window","$","jQuery","require","responsiveHero","e"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,E;;;;;;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;;;;;AC7DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA,gBAAgB,OAAO,KAAK,IAAI;AAChC,gBAAgB,IAAI;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,E;;;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kF;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL,CAAC,E;;;;;;;;;;;ACfD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,CAAC,E;;;;;;;;;;;AClBD;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA6C,qBAAqB;;AAElE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,sDAAsD,oBAAoB,EAAE;;AAE5E;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,yCAAyC,iCAAiC;AAC1E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd,UAAU;;AAEV;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,oCAAoC;AACrF;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,8FAAyB;;AAEnD,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,sFAAqB;;AAE/C,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACh6BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,6CAA6C;;AAE7C;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,EAAE,MAAM,EAAE;AAC9E;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,0DAA0D,cAAc;AACxE;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,oEAAoE,cAAc;AAClF;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+DAA+D,cAAc;AAC7E;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,4BAA4B;AACrE,8DAA8D,cAAc;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,yCAAyC,4BAA4B;AACrE;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA,0CAA0C,8BAA8B;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,cAAc;AACnE;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wDAAwD,cAAc;AACtE;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,cAAc;;AAEd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,cAAc;;AAEd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;;AAEA,8DAA8D,cAAc;AAC5E;AACA;;AAEA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD,cAAc;AACtE;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,cAAc;AACd,UAAU;AACV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA,cAAc;AACd,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,qDAAqD,cAAc;AACnE;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA,8CAA8C,IAAI,KAAK,KAAK;AAC5D;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,8CAA8C,cAAc;AAC5D;AACA;;AAEA;AACA;;AAEA,sCAAsC;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD,wGAAwG;AAChK;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,uBAAuB;AACjD;AACA;;AAEA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,cAAc;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD,cAAc;AACtE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,2CAA2C,cAAc;AACzD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC,cAAc;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAwB,iBAAiB;AACzC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,EAAE;;AAEF;;;AAGA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC9nEV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qLAAqL,sBAAsB;AAC3M,iHAAiH,sBAAsB;AACvI,6FAA6F,SAAS,sBAAsB;AAC5H,uFAAuF,sBAAsB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mEAAmE,UAAU;AAC7E;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAuC,uBAAuB,EAAE;AAChE;AACA;AACA,kBAAkB;AAClB,uCAAuC,uBAAuB,EAAE;;AAEhE;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kDAAkD,cAAc;AAChE;AACA;AACA,0DAA0D,cAAc;AACxE;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,mBAAmB;;AAEtD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,cAAc,EAAE;;AAEvE,gFAAgF,kDAAkD,mBAAmB,EAAE;AACvJ,oFAAoF,kDAAkD,uBAAuB,EAAE;AAC/J,oFAAoF,kDAAkD,yBAAyB,EAAE;AACjK,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kQAAkQ,0BAA0B;AAC5R,2EAA2E,eAAe,wBAAwB;AAClH,gHAAgH,6BAA6B;AAC7I;;AAEA;AACA;AACA;;AAEA,wEAAwE,sBAAsB;AAC9F;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,EAAE;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,cAAc,cAAc;AAC5B;AACA;AACA;AACA,0HAA0H,qBAAqB,EAAE;AACjJ;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,mBAAmB,OAAO;AAC1B;AACA,mBAAmB;;AAEnB;AACA;AACA,2HAA2H;AAC3H,UAAU;AACV,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G;AAC/G;;AAEA,+CAA+C;;AAE/C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACrgEV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oDAAQ;;AAElC,OAAO;;AAEP;AACA;;AAEA,iGAAiG,8CAA8C;AAC/I;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,aAAa,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA,2BAA2B,WAAW,MAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,YAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD,cAAc;AACpE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD,cAAc;AACpE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sDAAsD,cAAc;AACpE;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,kDAAkD,UAAU;AAC5D;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf,2BAA2B,aAAa;AACxC;AACA;AACA;;AAEA;AACA,6BAA6B,IAAI,KAAK;AACtC,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;;AAEA;AACA,UAAU;AACV;AACA,qCAAqC;AACrC;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qEAAqE;;AAErE;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA,0BAA0B,oBAAoB;AAC9C;AACA;;AAEA,+CAA+C,MAAM;;AAErD,kDAAkD;;AAElD;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,kEAAkE,EAAE,mBAAmB,EAAE;AACzF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,sBAAsB;;;AAGtB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C,mBAAmB,wDAAwD;AAC3E,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,WAAW;AACvC;AACA;;AAEA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B,UAAU;AACvC;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sGAAsG;;AAEtG;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mDAAmD,cAAc;AACjE;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;;AAEA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,8BAA8B,cAAc;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD,cAAc;AACpE;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,4DAA4D,2DAA2D;AACvH,6DAA6D,4DAA4D;AACzH;AACA,EAAE;;;AAGF;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C,wCAAwC,IAAI,KAAK,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,IAAI;AACzB,qBAAqB,IAAI;AACzB,qBAAqB,EAAE;AACvB,UAAU;AACV,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,iEAAiE,eAAe;AAChF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,cAAc;AAC7B;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,oEAAoE;AACpE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,cAAc;AACpC;AACA,gCAAgC,mCAAmC;AACnE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,qFAAqF,kEAAkE;AACvJ,4HAA4H,+BAA+B;;AAE3J;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,UAAU;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,YAAY;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,sDAAsD,kBAAkB,OAAO,WAAW;AAC1F,wCAAwC;AACxC;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4EAA4E,cAAc,EAAE;;AAE5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kHAAkH;AAClH,uIAAuI;;AAEvI;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,aAAa;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV,2CAA2C;;AAE3C;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,4HAA4H;;AAE5H;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC,iBAAiB,kBAAkB;AACnC,gBAAgB,gBAAgB;AAChC,cAAc,kBAAkB;AAChC,eAAe,oBAAoB;AACnC,kBAAkB,iBAAiB;AACnC,gBAAgB,iBAAiB;AACjC,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,8BAA8B,iDAAiD;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;;AAEA,sFAAsF;AACtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY,qDAAqD,EAAE;;AAE7E;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,0BAA0B,+BAA+B,6BAA6B;AACtK;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,kDAAkD,EAAE,YAAY,EAAE;AAClE;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,4EAA4E;AAC5E;AACA;;AAEA;AACA,iEAAiE;AACjE;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,kCAAkC,EAAE;AACpC,+BAA+B;AAC/B,qCAAqC;AACrC,qCAAqC;AACrC,uBAAuB,aAAa,EAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,wBAAwB,QAAQ;AAChC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA,wDAAwD,SAAS;AACjE;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,oCAAoC,YAAY,eAAe,EAAE;AACjE;;AAEA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV,8BAA8B;;AAE9B;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,sBAAsB;AACtB;AACA,cAAc;AACd;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;;AAEA;;AAEA;AACA,gCAAgC,gBAAgB;AAChD,gCAAgC,WAAW,MAAM;AACjD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA,wDAAwD,cAAc;AACtE;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD,cAAc;AAChE;AACA;;AAEA,sCAAsC;AACtC;;AAEA;AACA;;AAEA;AACA,sCAAsC;AACtC,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD,EAAE,gCAAgC,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,gCAAgC;AAChC;;AAEA,2EAA2E,SAAS;AACpF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gFAAgF,EAAE,MAAM,EAAE;AAC1F;;AAEA;;AAEA;AACA,gFAAgF,EAAE,MAAM,EAAE;AAC1F;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA,gCAAgC,oBAAoB,aAAa,EAAE,+BAA+B;;AAElG;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV,kBAAkB;;AAElB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;AACV;AACA,sBAAsB;AACtB,uBAAuB;AACvB;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,MAAM;;AAEN;AACA;AACA,uBAAuB,cAAc;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD,YAAY;AACpE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iDAAiD,YAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,2BAA2B;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAiE;AACjE;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;;AAGA,oCAAoC,2BAA2B,EAAE;AACjE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA,wBAAwB;AACxB,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iDAAiD,UAAU;AAC3D;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iCAAiC;;AAE/E;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,sDAAsD;AACtD;AACA;AACA,cAAc,mDAAmD;AACjE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,gDAAgD,uCAAuC,EAAE;AACzF;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,uBAAuB,EAAE;AACzB;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,mBAAmB;AAC3C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gCAAgC;;AAEhC;AACA,6CAA6C;AAC7C;AACA;AACA;;AAEA,kCAAkC,qBAAqB;AACvD;AACA;AACA,kDAAkD,oBAAoB;AACtE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;;AAEV;AACA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;AAEF,6BAA6B;;AAE7B,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACpnJV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,0BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kDAAkD,cAAc;AAChE;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA,mBAAmB,UAAU;AAC7B;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,8BAA8B,mBAAmB;AACjD;AACA;;AAEA;AACA,8CAA8C,aAAa,EAAE;AAC7D,UAAU;AACV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA,gCAAgC,eAAe;;AAE/C;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD,6BAA6B;;AAEpF;AACA;AACA,qEAAqE,aAAa,EAAE;AACpF;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C,kBAAkB;AAClB;AACA;AACA;;AAEA;;AAEA;;AAEA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA,sCAAsC,iCAAiC;AACvE;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,uCAAuC;AACvC;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,+CAA+C,6BAA6B;AAC5E;AACA;AACA,UAAU;;AAEV;AACA;AACA,sCAAsC,aAAa,EAAE;AACrD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,aAAa,EAAE;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wDAAwD,cAAc;AACtE;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,yDAAyD,cAAc;AACvE;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA,sBAAsB,cAAc;AACpC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,oBAAoB;AACxE;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB,qBAAqB;AACvC;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,0BAA0B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;AACA,yDAAyD,yBAAyB;AAClF;;AAEA,mDAAmD,gBAAgB,EAAE;AACrE;AACA;;AAEA;AACA;;AAEA;AACA,yDAAyD,yBAAyB;AAClF;;AAEA,4BAA4B,wBAAwB;AACpD,qDAAqD;AACrD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B,uBAAuB;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD,8EAA8E;AACnI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;;AAEA,wBAAwB,wBAAwB;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2DAA2D,cAAc;AACzE;AACA;;AAEA,sCAAsC,uCAAuC;AAC7E;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,gDAAgD,cAAc;AAC9D;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D,4EAA4E;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA,8CAA8C,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,oDAAoD,cAAc;AAClE;AACA;;AAEA;;AAEA,oDAAoD,cAAc;AAClE;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,mDAAmD,8BAA8B;AACjF;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,4BAA4B;AAC5B;;AAEA;AACA,qDAAqD,WAAW;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,WAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,cAAc;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA,sBAAsB;AACtB,kBAAkB;;AAElB;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC,yCAAyC;;AAEzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA,qCAAqC,oBAAoB;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C;AAC5C,iCAAiC;AACjC,0CAA0C;AAC1C,oCAAoC;AACpC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,2BAA2B;AAC5D;;AAEA;AACA;AACA,cAAc;AACd;;AAEA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA,cAAc;AACd;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,qBAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,cAAc;AAC/D;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,oBAAoB;AAC1E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB,cAAc;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8DAA8D,cAAc;AAC5E;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mDAAmD,cAAc;AACjE;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,uCAAuC,sBAAsB;AAC7D;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,oBAAoB;AACtD;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA,8BAA8B,oBAAoB;AAClD;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;;AAEA;AACA,0CAA0C,oBAAoB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,mCAAmC,iBAAiB;;AAEpD;AACA,kBAAkB;AAClB,cAAc;AACd;;AAEA;;AAEA,+BAA+B,iBAAiB;AAChD;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;;AAEA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,iCAAiC;;AAExE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,2DAA2D,uBAAuB,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,kDAAkD,cAAc;AAChE;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB;AACtB;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;;AAEA;AACA;;AAEA,yCAAyC,iBAAiB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,kBAAkB;AAClB;AACA,sCAAsC,uBAAuB;AAC7D;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,6CAA6C,aAAa;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD,QAAQ,oBAAoB,EAAE;AACjF;AACA,cAAc;AACd,oDAAoD,cAAc;AAClE,mDAAmD,uBAAuB;AAC1E;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,+DAA+D,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;;AAEA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,+BAA+B;;AAEtE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,8BAA8B;AAC5D;AACA;AACA;;AAEA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA,kCAAkC,mBAAmB;AACrD;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,uCAAuC,EAAE;AACzC,kCAAkC,qDAAqD;AACvF,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kCAAkC;AAClC;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,0CAA0C,gFAAgF;AAC1H;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,2CAA2C,sBAAsB;AACjE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4IAA4I,oCAAoC,6DAA6D;AAC7O;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,eAAe;AAC1E;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,2CAA2C,eAAe;AAC1D,uCAAuC,qBAAqB;AAC5D;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,YAAY;AACrE;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,yDAAyD,yBAAyB;AAClF;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,uBAAuB;AACjD,UAAU;;AAEV;AACA;;AAEA;AACA,8BAA8B,aAAa;AAC3C;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,kDAAkD;AAClD,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD,kBAAkB;AACxE;AACA;AACA;;AAEA,4CAA4C,kBAAkB;AAC9D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iFAAiF,wBAAwB;AACzG,kCAAkC;AAClC;AACA,iFAAiF,oCAAoC;AACrH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,iEAAiE;AAC/F;AACA;AACA;;AAEA;;AAEA,2CAA2C,+BAA+B;;AAE1E;;AAEA;;AAEA;AACA,gEAAgE,cAAc;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB,gDAAgD;AAChD;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0DAA0D,eAAe;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA,sBAAsB;AACtB;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,4DAA4D,cAAc;AAC1E;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,kCAAkC,mBAAmB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,kBAAkB;AAC1C;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,kBAAkB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA,+DAA+D;;AAE/D;AACA,gFAAgF,6BAA6B;;AAE7G;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,mGAAmG,aAAa;AAChH,kBAAkB;AAClB,uDAAuD;AACvD;;AAEA,iDAAiD;AACjD;;AAEA;AACA;AACA;AACA,UAAU;AACV,6CAA6C,2BAA2B;AACxE;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,UAAU,gBAAgB,EAAE;AAClG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc;AAC7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;;AAEA,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA,0DAA0D,GAAG,UAAU,+BAA+B,EAAE;;AAExG;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,8BAA8B,uDAAuD;AAC7G;;AAEA;AACA,0BAA0B,uBAAuB;AACjD,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+DAA+D,iCAAiC,gDAAgD;;AAEhJ;AACA,2DAA2D,aAAa;AACxE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,8BAA8B,mBAAmB;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,gDAAgD,cAAc;AAC9D;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6CAA6C,cAAc;AAC3D,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,8CAA8C,gBAAgB;;AAE9D,uCAAuC;AACvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,6CAA6C,cAAc;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,iDAAiD,eAAe;AAChE;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C,uCAAuC;;AAErF;AACA;AACA,mDAAmD,uCAAuC;AAC1F,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wDAAwD,iBAAiB;AACzE,kBAAkB;AAClB;AACA,yDAAyD,6BAA6B;AACtF,kBAAkB;AAClB;AACA,wDAAwD,6BAA6B;AACrF,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,oDAAoD,kDAAkD;AACtG;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,UAAU;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,gFAAkB;;AAE5C,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC//KV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,4CAA4C;AAC5C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;AACnE,kBAAkB;AAClB,6CAA6C,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;AACpE,kBAAkB;AAClB,6CAA6C,EAAE,EAAE,EAAE;AACnD,kBAAkB;AAClB,6CAA6C,EAAE,EAAE,EAAE;AACnD,kBAAkB;AAClB;AACA;AACA,qCAAqC,EAAE;AACvC;;AAEA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA,wCAAwC,4BAA4B;AACpE;AACA,0BAA0B;AAC1B,iDAAiD,sBAAsB;AACvE;AACA,sBAAsB;AACtB,oCAAoC,EAAE;AACtC;;AAEA;AACA;AACA,wCAAwC,EAAE,EAAE,EAAE;AAC9C,0BAA0B;AAC1B,wCAAwC,EAAE,iBAAiB,EAAE;AAC7D;AACA;AACA,gDAAgD,EAAE,EAAE,EAAE,GAAG,EAAE;AAC3D;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,sBAAsB;AACtB,oCAAoC,EAAE,EAAE,EAAE;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6CAA6C,EAAE;;AAE/C;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,8DAA8D;AAC9D;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uDAAuD;;AAEvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,2BAA2B;;AAEtD,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA,uCAAuC,2BAA2B;AAClE;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,yDAAyD,EAAE;AAC3D,sDAAsD,EAAE;;AAExD;AACA,iDAAiD,IAAI;AACrD;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACA;AACA,sBAAsB;AACtB,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,oDAAoD;AACpD;AACA,kBAAkB;AAClB;AACA;AACA;AACA,oDAAoD;AACpD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,MAAM;;AAEN,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC9mBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4DAA4D,kCAAkC;AAC9F;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;AACA;AACA;;AAEA,4CAA4C,MAAM;AAClD;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD,cAAc;AACvE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACrVV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C,6BAA6B,EAAE;AAC5E;AACA;AACA;AACA,iCAAiC,2CAA2C,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,wCAAwC,EAAE;AAC/G;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,2CAA2C,EAAE;;AAE1E;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,+CAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM;;AAEN;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gFAAgF;AAChF,sFAAsF;AACtF,sHAAsH;AACtH,mHAAmH;;AAEnH,wFAAwF;AACxF,8FAA8F;AAC9F,wGAAwG;AACxG,qGAAqG;;AAErG,iGAAiG;AACjG,gGAAgG;;AAEhG,8FAA8F;AAC9F,oGAAoG;AACpG,mFAAmF;AACnF,yFAAyF;;AAEzF,yFAAyF;AACzF,+FAA+F;AAC/F,yFAAyF;AACzF,+FAA+F;AAC/F,8GAA8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F;AAC/F,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD,uCAAuC,gBAAgB;AACvD,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,uBAAuB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD,sBAAsB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACp4BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,0EAAe;;AAEzC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wEAAwE,4DAA4D;AACpI;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,6CAA6C;;AAE7C;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,sCAAsC;;AAEnG;AACA;AACA;AACA,MAAM;;AAEN;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,gFAAkB;;AAE5C,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,kFAAmB;;AAE7C,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACr3BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,yBAAyB;AACzB,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,wBAAwB,aAAa;AACrC;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;;AAEA;;AAEA,0DAA0D;AAC1D,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA,gDAAgD,iBAAiB;AACjE,gDAAgD,kBAAkB;AAClE;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,qBAAqB;AACrB,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,cAAc;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,cAAc;AACd;AACA,MAAM;;AAEN;AACA;;;AAGA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,yDAAyD;AACzD;AACA;AACA,yBAAyB;AACzB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,cAAc;AACd;AACA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,4DAA4D;AAC5D;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,uEAAuE,8CAA8C;AACrH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mEAAmE,8CAA8C;AACjH;;AAEA,uDAAuD,+BAA+B;AACtF,kDAAkD,+BAA+B;AACjF,cAAc;;AAEd,4CAA4C,gEAAgE;AAC5G,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,2CAA2C,MAAM,+BAA+B;AAChF;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;;AAElB,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACvrCV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,8FAAyB;;AAEnD,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,sFAAqB;;AAE/C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,sBAAsB;;AAEnE;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc,sCAAsC;AACpD;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,sDAAsD,oBAAoB,EAAE;;AAE5E;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,kCAAkC,cAAc;;AAEhD;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,kBAAkB;;AAElB,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kCAAkC,eAAe;;AAEjD;AACA;AACA;AACA;;AAEA,uDAAuD,mBAAmB,EAAE;;AAE5E;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,qCAAqC,wCAAwC;AACtG,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA,iDAAiD,yEAAyE;AAC1H;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B,kBAAkB;AAChD;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,yEAAyE;AAC1H;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA,yCAAyC,uDAAuD;AAChG;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+IAA+I;AAC/I;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;;AAGA;AACA,2EAA2E,sBAAsB;AACjG,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,qBAAqB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA,eAAe,iBAAiB;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACt+CV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,kFAAmB;;AAE7C,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,4EAAgB;;AAE1C,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,wCAAwC,GAAG;AACzG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F,yBAAyB;AACpH;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,uFAAuF,yBAAyB;AAChH;AACA,UAAU;AACV;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mEAAmE,MAAM;AACzE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,sBAAsB,mBAAmB,GAAG,eAAe;AACzG,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;;AAEA,+GAA+G,iBAAiB;AAChI;AACA;;AAEA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,yBAAyB;AACzB,cAAc;;AAEd;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAyD,SAAS,mBAAmB,EAAE;AACvF;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,4FAAwB;;AAElD,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACrgBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6CAA6C;AACzE,gCAAgC,6DAA6D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAA0D;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,yBAAyB;AACzB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,0BAA0B,cAAc;AACxC;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,gEAAgE,sBAAsB;AACtF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,iDAAiD;AACjF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;;AAEpC,0BAA0B,cAAc;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,YAAY,6BAA6B;;AAExF;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,0DAA0D,YAAY;AACtE;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;;AAEA;AACA,iEAAiE;AACjE;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA,8BAA8B,iDAAiD;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,sEAAsE,iGAAiG,EAAE;AACzK,kBAAkB;AAClB;AACA;AACA;;AAEA,oEAAoE;AACpE;AACA,2FAA2F;;AAE3F;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,oBAAoB;AAC7E;AACA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,8CAA8C;AAC9C;AACA;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sEAAsE,iBAAiB,qCAAqC,EAAE;AAC9H,kDAAkD;AAClD,sEAAsE,iBAAiB,mCAAmC,EAAE;AAC5H;;AAEA;AACA,sEAAsE,iBAAiB,uCAAuC,EAAE;AAChI,kDAAkD;AAClD,sEAAsE,iBAAiB,iCAAiC,EAAE;AAC1H;AACA,8CAA8C;AAC9C,kEAAkE,iBAAiB,yCAAyC,EAAE;AAC9H,kEAAkE,iBAAiB,uCAAuC,EAAE;AAC5H;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA,oDAAoD,iGAAiG,EAAE;AACvJ,sBAAsB;AACtB;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,0DAA0D,mDAAmD;AAC7G;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,yBAAyB;AACzB;AACA;AACA;;AAEA;;AAEA;;AAEA,0BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;AACA;;AAEA;;AAEA;AACA,gCAAgC,iDAAiD;AACjF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,+CAA+C;;AAE/C;;AAEA;AACA,uCAAuC,uDAAuD;;AAE9F;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,0DAA0D,YAAY;AACtE;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,2CAA2C,EAAE,KAAK;AAC1F;AACA;AACA,MAAM;;AAEN,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,iDAAiD;AACnE,kBAAkB,kDAAkD;AACpE,kBAAkB,kDAAkD;AACpE,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,mFAAmF;AACnF,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,kCAAkC,QAAQ;;AAE1C;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACloDV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,0EAAe;;AAEzC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;;AAEzC;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,mCAAmC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,iDAAiD,SAAS,oBAAoB,EAAE;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,sCAAsC;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;;AAErD;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,uCAAuC,2BAA2B;AAClE;;AAEA;;AAEA;;AAEA,mEAAmE,iBAAiB;AACpF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,GAAG,wBAAwB;;AAEzC;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,iBAAiB;AAClF;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,iBAAiB;AAC/D;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yBAAyB;AACxD;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,mCAAmC,uBAAuB;AAC1D;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE;AACpE;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;;AAElB;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,qCAAqC;AAC7E;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD,cAAc;AAClE;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,sDAAsD;AACtD;;AAEA,mDAAmD,iBAAiB;;AAEpE;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,+BAA+B;AACtE,uCAAuC,gCAAgC;AACvE;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;;AAEA,qCAAqC;AACrC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,+CAA+C,0CAA0C;AACzF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gEAAgE,oCAAoC;AACpG;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0EAA0E;AAC1E;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,mCAAmC;AAClE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,gDAAgD;AAChD,kDAAkD;AAClD;AACA,sBAAsB;AACtB,kBAAkB;;AAElB;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8EAA8E,yBAAyB,EAAE;AACzG,8EAA8E,4BAA4B,EAAE;;AAE5G;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mDAAmD,mBAAmB;AACtE;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,qBAAqB;AAC5C;AACA;;AAEA,0CAA0C,iCAAiC,SAAS;AACpF,yDAAyD;AACzD,wCAAwC;AACxC,4BAA4B;AAC5B,2BAA2B;AAC3B,oCAAoC;;AAEpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,uBAAuB,4BAA4B;AACnD;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA,cAAc;AACd,uBAAuB,oBAAoB;AAC3C;;AAEA;AACA;AACA;;AAEA,gCAAgC,4BAA4B;AAC5D;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,+GAA+G,kDAAkD,SAAS,sBAAsB;AAChM,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA,4BAA4B,iCAAiC;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;;AAEA,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,4BAA4B,iBAAiB;AAC7C,gCAAgC;;AAEhC;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA,2CAA2C;AAC3C,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;;AAEA,4BAA4B,iBAAiB;AAC7C;AACA;AACA,uCAAuC,2BAA2B;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACzwFV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,gFAAkB;;AAE5C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6CAA6C,sBAAsB;;AAEnE;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,wCAAwC,eAAe;AACvD,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B,iBAAiB;AACpF,0BAA0B;;AAE1B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;;AAEA,4CAA4C,+DAA+D;AAC3G;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oDAAoD,cAAc;AAClE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAoD,cAAc;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,sCAAsC,+DAA+D;AACrG,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4BAA4B,8BAA8B,iBAAiB;AAC3E,iBAAiB;AACjB;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,iCAAiC,+BAA+B;AAChE,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uDAAuD,gCAAgC;AACvF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,oCAAoC;AAC/E;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;;;AAGd;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,eAAe;;AAEf;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC92BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oEAAY;;AAEtC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,sFAAqB;;AAE/C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD,kBAAkB;AAClB,cAAc;;AAEd,uDAAuD,eAAe,EAAE;AACxE;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,2CAA2C,QAAQ;;AAEnD;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,qCAAqC,gFAAgF;AACrH;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B,gCAAgC;AAChC;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA,+BAA+B,kDAAkD;AACjF,UAAU;;AAEV;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,cAAc,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd,sCAAsC,WAAW;AACjD;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,sCAAsC,WAAW;AACjD;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,yBAAyB;AACzB,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kOAAkO;AAClO;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,cAAc;AACd;AACA;AACA,6DAA6D;AAC7D;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,cAAc;AACd;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC7vBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,8FAAyB;;AAEnD,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,sFAAqB;;AAE/C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,oBAAoB;AAChD;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,gCAAgC;AACzE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,kBAAkB;AAC9C,6CAA6C,yCAAyC;AACtF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD,8BAA8B,EAAE;AACrF,qDAAqD,iCAAiC,EAAE;AACxF;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kEAAkE;;AAElE;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,iBAAiB;;AAElE;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,gCAAgC;;AAEnE;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd,0DAA0D,8BAA8B,EAAE;AAC1F,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE;AACtE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B,cAAc;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,qBAAqB;AACnD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,sBAAsB;AACtB;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,+CAA+C,UAAU;AACzD;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,oBAAoB;AAClD;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA,+CAA+C,UAAU;AACzD;AACA;;AAEA,8BAA8B,oBAAoB;AAClD;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+DAA+D,sCAAsC;AACrG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uEAAuE,uCAAuC;AAC9G,sBAAsB;AACtB;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA,cAAc;AACd,qCAAqC,eAAe;AACpD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,4BAA4B;AACpD;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oHAAoH,sBAAsB;;AAE1I;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACvoDV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,uBAAuB;AACvB;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8EAA8E,oBAAoB;AAClG;AACA,kFAAkF,oBAAoB;AACtG,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,oBAAoB;AACtD;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACl5BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE,UAAU,+BAA+B,UAAU;AAC3H;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uHAAuH,qBAAqB;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,EAAE,IAAI,EAAE,KAAK,EAAE;AAC3C;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,UAAU;AAC3D;;AAEA,kDAAkD,aAAa;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA;;AAEA;;AAEA,uCAAuC,cAAc;AACrD,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC7kBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4GAA4G;;AAE5G;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA,sCAAsC,QAAQ,YAAY,EAAE,UAAU,wBAAwB,EAAE;AAChG;;AAEA;AACA;AACA,uCAAuC,oBAAoB,EAAE;AAC7D;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,yBAAyB;AACzB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,0BAA0B,8CAA8C;AACxE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;;AAEA;AACA,6DAA6D;AAC7D;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA,yDAAyD;AACzD;;AAEA;;AAEA;AACA;AACA;;AAEA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,4CAA4C;AAC5C;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA,kCAAkC,wBAAwB;AAC1D,kBAAkB;AAClB,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,sCAAsC,WAAW;AACjD,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B,8BAA8B;AAC5D,cAAc;AACd;AACA;;AAEA;AACA;AACA,yGAAyG;;AAEzG;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gDAAgD;AAChD,iDAAiD;AACjD;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,EAAE;;;;AAIF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC95BV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,gBAAgB,EAAE;AAC1D,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,wCAAwC,mBAAmB,EAAE;AAC7D,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,UAAU;;AAEV;AACA,iCAAiC;AACjC,UAAU;;AAEV;AACA,oCAAoC;AACpC,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,yBAAyB;AACpE;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,+CAA+C,yBAAyB;AACxE;AACA;AACA;AACA;;AAEA,uCAAuC,+CAA+C;AACtF;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,yCAAyC,cAAc,EAAE;AACzD,0CAA0C,eAAe,EAAE;AAC3D,gDAAgD,qBAAqB;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA,qCAAqC,uBAAuB;AAC5D;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,mFAAmF;AAC1H;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C,+EAA+E;AAC7H;AACA;AACA;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACvmBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oFAAoB;;AAE9C,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,cAAc;AAC/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,0EAA0E,mBAAmB;;AAE7F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,6BAA6B;AAC7B;AACA,UAAU;;AAEV;AACA,yCAAyC,kBAAkB;AAC3D;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,YAAY;AAC1C;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACjgBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA,iDAAiD,QAAQ;;AAEzD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA,kCAAkC,QAAQ;;AAE1C;AACA;;AAEA,+CAA+C;;AAE/C;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA,cAAc,cAAc;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uEAAuE,gBAAgB;;AAEvF;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,iBAAiB;AAChD;;AAEA,0DAA0D,gBAAgB;AAC1E,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA,8DAA8D,WAAW;AACzE;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,4BAA4B;AACtD;AACA;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;AC7tBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG;AACjG;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE,gCAAgC,KAAK,6CAA6C,KAAK;AAC7I,mHAAmH,EAAE,kBAAkB,krBAAkrB,EAAE,kBAAkB,oFAAoF,EAAE,kBAAkB,2FAA2F,EAAE,kBAAkB,8GAA8G,EAAE,kBAAkB;AACtqC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,UAAU,cAAc;AACvD;;AAEA;AACA,+DAA+D;AAC/D,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C,6BAA6B;AAC7B,4BAA4B;AAC5B,2BAA2B;AAC3B,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oDAAoD,cAAc;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wCAAwC;AACxC,2CAA2C;;AAE3C;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,EAAE;AAC/B,4BAA4B,EAAE;AAC9B,wBAAwB,EAAE,qCAAqC,EAAE;AACjE,wBAAwB,EAAE,qCAAqC,EAAE;AACjE,yBAAyB,EAAE;AAC3B,0BAA0B,EAAE;AAC5B,wBAAwB,EAAE;AAC1B,yBAAyB,EAAE;AAC3B;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,sDAAsD,cAAc;AACpE;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA,qCAAqC,gBAAgB;;AAErD;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD,+BAA+B;AACvF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,+CAA+C,6BAA6B;AAC5E;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,4DAA4D,cAAc;AAC1E;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,qBAAqB;AACrB,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA,EAAE;;AAEF;;AAEA,EAAE;;;AAGF,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACniBV;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8BAA8B,mDAAmD;;;AAGjF,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,oDAAQ;;AAElC,OAAO;;AAEP;AACA;;AAEA,kBAAkB,mBAAO,CAAC,wEAAc;;AAExC,OAAO;;AAEP;AACA;;AAEA,iGAAiG,8CAA8C;AAC/I;AACA,EAAE;;AAEF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA,+CAA+C,qDAAqD;AACpG;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB;AACxB;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,sDAAsD;AACtD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,iCAAiC,kEAAkE;AACxH,UAAU;AACV;;AAEA;AACA;;AAEA,wBAAwB,4BAA4B;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;;AAEA,4BAA4B,iBAAiB;AAC7C;AACA;AACA,uCAAuC,2BAA2B;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oGAAoG,yBAAyB,EAAE;AAC/H,+EAA+E,4BAA4B,EAAE;;AAE7G;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,mDAAmD,iBAAiB;AACpE;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA,4BAA4B,oCAAoC;AAChE;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,QAAQ;;AAEtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C,kCAAkC,uBAAuB;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,kBAAkB;AAClB,cAAc;AACd;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,6BAA6B;AAC7B,kBAAkB;;AAElB;AACA,6BAA6B;AAC7B,kBAAkB;;AAElB;;AAEA;;AAEA,gCAAgC,oCAAoC;AACpE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA,cAAc;;AAEd;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kBAAkB;AAClB;;AAEA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA,uCAAuC;AACvC,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA,6CAA6C;AAC7C,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;AACA;AACA;;AAEA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,mBAAmB;AAC/C,sDAAsD;AACtD;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,iEAAiE,SAAS;AAC1E;AACA,kFAAkF,iBAAiB;AACnG,qDAAqD,2CAA2C;AAChG;AACA;AACA;;AAEA;AACA,sBAAsB,OAAO;AAC7B;AACA;;AAEA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4DAA4D,YAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd,UAAU;;AAEV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0DAA0D;AAC1D,kCAAkC,8BAA8B;AAChE;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA,cAAc;AACd,gCAAgC,oBAAoB;AACpD;AACA;AACA;;AAEA;AACA,wCAAwC,8BAA8B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;;AAEtB;;AAEA,qDAAqD;AACrD,kBAAkB;AAClB,cAAc;;AAEd;;AAEA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA,sCAAsC,aAAa;AACnD;AACA,UAAU;;AAEV;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;;AAEN;AACA;;AAEA,EAAE;;AAEF;;AAEA,EAAE;;AAEF,6BAA6B;;AAE7B,OAAO;;AAEP,UAAU,E;;;;;;;;;;;ACp0DV;AACA,mBAAO,CAAC,yEAAwB;AAChC,mBAAO,CAAC,+DAAmB;AAC3B,mBAAO,CAAC,iEAAoB;AAC5B,mBAAO,CAAC,qEAAsB;AAC9B,mBAAO,CAAC,qEAAsB;AAC9B,mBAAO,CAAC,qEAAsB;AAC9B,mBAAO,CAAC,+DAAmB;AAC3B,mBAAO,CAAC,mEAAqB;AAC7B,mBAAO,CAAC,mEAAqB;AAC7B,mBAAO,CAAC,uEAAuB;AAC/B,mBAAO,CAAC,2DAAiB;AACzB,mBAAO,CAAC,+DAAmB,C;;;;;;;;;;;ACZ3B;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;;AAEH,CAAC;;;;;;;;;;;;ACnKD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;AC9FD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL,CAAC;;;;;;;;;;;;AC5HD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,sFAAsF,eAAe;AACrG;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,qDAAqD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,CAAC;;;;;;;;;;;;ACrPD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH,CAAC;;;;;;;;;;;;ACnND;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,sEAAsE,sBAAsB;AAC5F;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;ACpKD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,gCAAgC;;AAEtE;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,yCAAyC,gCAAgC;;AAEzE;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,kCAAkC;;AAEnG;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,GAAG;;AAEH,CAAC;;;;;;;;;;;;ACrWD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,iCAAiC;;AAEjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC1HD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,CAAC;;;;;;;;;;;;AC3KD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC1JD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uIAAuI;;AAEvI;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2DAA2D,WAAW;AACtE;;AAEA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,8DAA8D,YAAY;AAC1E;;AAEA,kDAAkD,UAAU;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;;AAEA;;AAEA,iCAAiC,KAAK;AACtC;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,iBAAiB,kCAAkC;AACrF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uEAAuE;AACvE,0BAA0B,WAAW,wEAAwE;AAC7G;AACA;AACA;AACA;AACA,8BAA8B,kBAAkB;AAChD,qBAAqB;AACrB,8BAA8B,uDAAuD;;AAErF,sBAAsB;AACtB;;AAEA;AACA,oCAAoC,gFAAgF;AACpH,oCAAoC,gFAAgF;AACpH,oCAAoC,iFAAiF;AACrH,oCAAoC;;AAEpC;;AAEA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD;AACA,OAAO,kFAAkF;AACzF;AACA;AACA,KAAK;AACL;AACA;AACA,qDAAqD;AACrD;AACA,OAAO,uDAAuD;AAC9D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;ACpqBD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,CAAC;;;;;;;;;;;;AC1DD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B,kBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kGAAkG;AAClG;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,6EAA6E,aAAa;AAC1F;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC7JD,iBAAiB,mBAAO,CAAC,iHAAmC;;;;;;;;;;;;ACA5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,cAAc,6DAA6D,cAAc;AACzF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;;AAE1C;AACA;AACA;AACA;AACA;AACA,6CAA6C,EAAE;;AAE/C;AACA;AACA;AACA;AACA;AACA,6CAA6C,EAAE;;AAE/C;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,EAAE;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;;AAEA;AACA;;AAEA,kBAAkB;AAClB,sBAAsB;AACtB,iCAAiC;;AAEjC;;AAEA;;AAEA,SAAS;;AAET;;AAEA,SAAS;;AAET;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB;;AAEA;;AAEA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,aAAa;;AAEb;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,0DAA0D,kCAAkC,2CAA2C;AACvI,gGAAgG;AAChG;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;;;AAGA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;;;;;;;;;;;AC5eD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF,6CAA6C;AAC7C;AACA;AACA,kBAAkB,kCAAkC;AACpD,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,kCAAkC,IAAI;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,4CAA4C;AACtD;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;;;AAIA;AACA;AACA,GAAG;AACH,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+CAA+C;AACpD;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,cAAc,qCAAqC;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa;;AAEb;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,aAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAA0C;AAC/C,CAAC,iCAAkB,EAAE,mCAAE;AACvB;AACA,EAAE;AAAA,oGAAE;AACJ;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,CAAC;;;;;;;;;;;;ACvnVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY,mBAAmB;AAC/B,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;AAEJ,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,YAAY,oCAAoC,EAAE;AAC5E;AACA;AACA;AACA,2BAA2B,YAAY,yCAAyC,EAAE;AAClF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA,uCAAuC,gBAAgB;;AAEvD;AACA;AACA;AACA;;AAEA,4BAA4B,sBAAsB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,UAAU;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yEAAyE,eAAe;AACxF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wDAAwD,cAAc,EAAE;AACxE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,uCAAuC,YAAY,oCAAoC,EAAE;;AAEzF;AACA;AACA;;AAEA;;AAEA;;AAEA,4BAA4B,YAAY,yCAAyC,EAAE;AACnF;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,WAAW;AAC7D;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA,8CAA8C,gBAAgB;AAC9D;;AAEA,6CAA6C,wCAAwC;AACrF;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,sBAAsB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,0BAA0B;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,0BAA0B;AACtC,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,uCAAuC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,yBAAyB,uCAAuC;AAChE;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,qDAAqD;;AAE/E;AACA;AACA;;AAEA;;AAEA,2BAA2B,oCAAoC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,YAAY;AACxB,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,YAAY;AACxB,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,EAAE;AACd,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,UAAU;AACV,GAAG;AACH,kDAAkD,WAAW;AAC7D;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,kBAAkB,mCAAmC;AACrD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc,OAAO;AACrB;AACA;AACA,gBAAgB;;AAEhB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,0DAA0D;AACtE,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,8BAA8B;;AAE7D;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE,KAAK;AACL,aAAa;AACb;AACA,kDAAkD,8BAA8B;AAChF,iBAAiB;AACjB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,mCAAmC,8BAA8B;AACjE,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,0BAA0B,0DAA0D;AACpF;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,8BAA8B;AACzG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA,0BAA0B;AAC1B,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,gCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;ACv3GD,IAAI;AACAA,QAAM,CAACC,CAAP,GAAWD,MAAM,CAACE,MAAP,GAAgBC,mBAAO,CAAC,oDAAD,CAAlC,CADA,CAGA;;AACAA,qBAAO,CAAC,6LAAD,CAAP,CAJA,CAMA;;;AACAA,qBAAO,CAAC,yEAAD,CAAP,CAPA,CASA;;;AACAA,qBAAO,CAAC,+GAAD,CAAP;;AACAA,qBAAO,CAAC,+GAAD,CAAP;;AACAA,qBAAO,CAAC,6GAAD,CAAP;;AACAA,qBAAO,CAAC,uGAAD,CAAP;;AACAA,qBAAO,CAAC,iGAAD,CAAP;;AACAA,qBAAO,CAAC,mGAAD,CAAP,CAfA,CAiBA;;;AACAH,QAAM,CAACI,cAAP,GAAwBD,mBAAO,CAAC,+KAAD,CAA/B,CAlBA,CAoBA;;AACAA,qBAAO,CAAC,6FAAD,CAAP,CArBA,CAuBA;;;AACAA,qBAAO,CAAC,uIAAD,CAAP,CAxBA,CA0BA;;;AACAA,qBAAO,CAAC,yKAAD,CAAP,CA3BA,CA6BA;;;AACAA,qBAAO,CAAC,mKAAD,CAAP,CA9BA,CAgCA;;;AACAA,qBAAO,CAAC,2FAAD,CAAP,CAjCA,CAmCA;;;AACAA,qBAAO,CAAC,mFAAD,CAAP,CApCA,CAsCA;;;AACAA,qBAAO,CAAC,uLAAD,CAAP;AAEH,CAzCD,CAyCE,OAAOE,CAAP,EAAU,CAAE,C;;;;;;;;;;;ACzCd,yC","file":"/js/app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/* Add needed html for custom form ').attr({\n\t value: data[name],\n\t name: name,\n\t type: \"hidden\"\n\t }).appendTo(form);\n\t }\n\t }\n\n\t form.appendTo(\"body\").submit().remove();\n\t }\n\n\t var fileSaver = document.createElement(\"a\");\n\t var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n\t function saveAsBlob(dataURI, fileName) {\n\t var blob = dataURI; // could be a Blob object\n\n\t if (typeof dataURI == \"string\") {\n\t var parts = dataURI.split(\";base64,\");\n\t var contentType = parts[0];\n\t var base64 = atob(parts[1]);\n\t var array = new Uint8Array(base64.length);\n\n\t for (var idx = 0; idx < base64.length; idx++) {\n\t array[idx] = base64.charCodeAt(idx);\n\t }\n\t blob = new Blob([array.buffer], { type: contentType });\n\t }\n\n\t navigator.msSaveBlob(blob, fileName);\n\t }\n\n\t function saveAsDataURI(dataURI, fileName) {\n\t if (window.Blob && dataURI instanceof Blob) {\n\t dataURI = URL.createObjectURL(dataURI);\n\t }\n\n\t fileSaver.download = fileName;\n\t fileSaver.href = dataURI;\n\n\t var e = document.createEvent(\"MouseEvents\");\n\t e.initMouseEvent(\"click\", true, false, window,\n\t 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n\t fileSaver.dispatchEvent(e);\n\t setTimeout(function(){\n\t URL.revokeObjectURL(dataURI);\n\t });\n\t }\n\n\t kendo.saveAs = function(options) {\n\t var save = postToProxy;\n\n\t if (!options.forceProxy) {\n\t if (downloadAttribute) {\n\t save = saveAsDataURI;\n\t } else if (navigator.msSaveBlob) {\n\t save = saveAsBlob;\n\t }\n\t }\n\n\t save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n\t };\n\t })();\n\n\t // kendo proxySetters\n\t kendo.proxyModelSetters = function proxyModelSetters(data) {\n\t var observable = {};\n\n\t Object.keys(data || {}).forEach(function(property) {\n\t Object.defineProperty(observable, property, {\n\t get: function() {\n\t return data[property];\n\t },\n\t set: function(value) {\n\t data[property] = value;\n\t data.dirty = true;\n\t }\n\t });\n\t });\n\n\t return observable;\n\t };\n\n\t})(jQuery, window);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1017)))\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1064);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1064:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018), __webpack_require__(1065), __webpack_require__(1066) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"data\",\n\t name: \"Data source\",\n\t category: \"framework\",\n\t description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n\t depends: [ \"core\" ],\n\t features: [ {\n\t id: \"data-odata\",\n\t name: \"OData\",\n\t description: \"Support for accessing Open Data Protocol (OData) services.\",\n\t depends: [ \"data.odata\" ]\n\t }, {\n\t id: \"data-signalr\",\n\t name: \"SignalR\",\n\t description: \"Support for binding to SignalR hubs.\",\n\t depends: [ \"data.signalr\" ]\n\t }, {\n\t id: \"data-XML\",\n\t name: \"XML\",\n\t description: \"Support for binding to XML.\",\n\t depends: [ \"data.xml\" ]\n\t }]\n\t};\n\n\t/*jshint eqnull: true, loopfunc: true, evil: true */\n\t(function($, undefined) {\n\t var extend = $.extend,\n\t proxy = $.proxy,\n\t isPlainObject = $.isPlainObject,\n\t isEmptyObject = $.isEmptyObject,\n\t isArray = $.isArray,\n\t grep = $.grep,\n\t ajax = $.ajax,\n\t map,\n\t each = $.each,\n\t noop = $.noop,\n\t kendo = window.kendo,\n\t isFunction = kendo.isFunction,\n\t Observable = kendo.Observable,\n\t Class = kendo.Class,\n\t STRING = \"string\",\n\t FUNCTION = \"function\",\n\t ASCENDING = \"asc\",\n\t CREATE = \"create\",\n\t READ = \"read\",\n\t UPDATE = \"update\",\n\t DESTROY = \"destroy\",\n\t CHANGE = \"change\",\n\t SYNC = \"sync\",\n\t GET = \"get\",\n\t ERROR = \"error\",\n\t REQUESTSTART = \"requestStart\",\n\t PROGRESS = \"progress\",\n\t REQUESTEND = \"requestEnd\",\n\t crud = [CREATE, READ, UPDATE, DESTROY],\n\t identity = function(o) { return o; },\n\t getter = kendo.getter,\n\t stringify = kendo.stringify,\n\t math = Math,\n\t push = [].push,\n\t join = [].join,\n\t pop = [].pop,\n\t splice = [].splice,\n\t shift = [].shift,\n\t slice = [].slice,\n\t unshift = [].unshift,\n\t toString = {}.toString,\n\t stableSort = kendo.support.stableSort,\n\t dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n\t var ObservableArray = Observable.extend({\n\t init: function(array, type) {\n\t var that = this;\n\n\t that.type = type || ObservableObject;\n\n\t Observable.fn.init.call(that);\n\n\t that.length = array.length;\n\n\t that.wrapAll(array, that);\n\t },\n\n\t at: function(index) {\n\t return this[index];\n\t },\n\n\t toJSON: function(serializeFunctions) {\n\t var idx, length = this.length, value, json = new Array(length);\n\n\t for (idx = 0; idx < length; idx++){\n\t value = this[idx];\n\n\t if (value instanceof ObservableObject) {\n\t value = value.toJSON(serializeFunctions);\n\t }\n\n\t json[idx] = value;\n\t }\n\n\t return json;\n\t },\n\n\t parent: noop,\n\n\t wrapAll: function(source, target) {\n\t var that = this,\n\t idx,\n\t length,\n\t parent = function() {\n\t return that;\n\t };\n\n\t target = target || [];\n\n\t for (idx = 0, length = source.length; idx < length; idx++) {\n\t target[idx] = that.wrap(source[idx], parent);\n\t }\n\n\t return target;\n\t },\n\n\t wrap: function(object, parent) {\n\t var that = this,\n\t observable;\n\n\t if (object !== null && toString.call(object) === \"[object Object]\") {\n\t observable = object instanceof that.type || object instanceof Model;\n\n\t if (!observable) {\n\t object = object instanceof ObservableObject ? object.toJSON() : object;\n\t object = new that.type(object);\n\t }\n\n\t object.parent = parent;\n\n\t object.bind(CHANGE, function(e) {\n\t that.trigger(CHANGE, {\n\t field: e.field,\n\t node: e.node,\n\t index: e.index,\n\t items: e.items || [this],\n\t action: e.node ? (e.action || \"itemloaded\") : \"itemchange\"\n\t });\n\t });\n\t }\n\n\t return object;\n\t },\n\n\t push: function() {\n\t var index = this.length,\n\t items = this.wrapAll(arguments),\n\t result;\n\n\t result = push.apply(this, items);\n\n\t this.trigger(CHANGE, {\n\t action: \"add\",\n\t index: index,\n\t items: items\n\t });\n\n\t return result;\n\t },\n\n\t slice: slice,\n\n\t sort: [].sort,\n\n\t join: join,\n\n\t pop: function() {\n\t var length = this.length, result = pop.apply(this);\n\n\t if (length) {\n\t this.trigger(CHANGE, {\n\t action: \"remove\",\n\t index: length - 1,\n\t items:[result]\n\t });\n\t }\n\n\t return result;\n\t },\n\n\t splice: function(index, howMany, item) {\n\t var items = this.wrapAll(slice.call(arguments, 2)),\n\t result, i, len;\n\n\t result = splice.apply(this, [index, howMany].concat(items));\n\n\t if (result.length) {\n\t this.trigger(CHANGE, {\n\t action: \"remove\",\n\t index: index,\n\t items: result\n\t });\n\n\t for (i = 0, len = result.length; i < len; i++) {\n\t if (result[i] && result[i].children) {\n\t result[i].unbind(CHANGE);\n\t }\n\t }\n\t }\n\n\t if (item) {\n\t this.trigger(CHANGE, {\n\t action: \"add\",\n\t index: index,\n\t items: items\n\t });\n\t }\n\t return result;\n\t },\n\n\t shift: function() {\n\t var length = this.length, result = shift.apply(this);\n\n\t if (length) {\n\t this.trigger(CHANGE, {\n\t action: \"remove\",\n\t index: 0,\n\t items:[result]\n\t });\n\t }\n\n\t return result;\n\t },\n\n\t unshift: function() {\n\t var items = this.wrapAll(arguments),\n\t result;\n\n\t result = unshift.apply(this, items);\n\n\t this.trigger(CHANGE, {\n\t action: \"add\",\n\t index: 0,\n\t items: items\n\t });\n\n\t return result;\n\t },\n\n\t indexOf: function(item) {\n\t var that = this,\n\t idx,\n\t length;\n\n\t for (idx = 0, length = that.length; idx < length; idx++) {\n\t if (that[idx] === item) {\n\t return idx;\n\t }\n\t }\n\t return -1;\n\t },\n\n\t forEach: function(callback, thisArg) {\n\t var idx = 0;\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t callback.call(context, this[idx], idx, this);\n\t }\n\t },\n\n\t map: function(callback, thisArg) {\n\t var idx = 0;\n\t var result = [];\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t result[idx] = callback.call(context, this[idx], idx, this);\n\t }\n\n\t return result;\n\t },\n\n\t reduce: function(callback) {\n\t var idx = 0,\n\t result,\n\t length = this.length;\n\n\t if (arguments.length == 2) {\n\t result = arguments[1];\n\t } else if (idx < length) {\n\t result = this[idx++];\n\t }\n\n\t for (; idx < length; idx++) {\n\t result = callback(result, this[idx], idx, this);\n\t }\n\n\t return result;\n\t },\n\n\t reduceRight: function(callback) {\n\t var idx = this.length - 1,\n\t result;\n\n\t if (arguments.length == 2) {\n\t result = arguments[1];\n\t } else if (idx > 0) {\n\t result = this[idx--];\n\t }\n\n\t for (; idx >= 0; idx--) {\n\t result = callback(result, this[idx], idx, this);\n\t }\n\n\t return result;\n\t },\n\n\t filter: function(callback, thisArg) {\n\t var idx = 0;\n\t var result = [];\n\t var item;\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t item = this[idx];\n\t if (callback.call(context, item, idx, this)) {\n\t result[result.length] = item;\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t find: function(callback, thisArg) {\n\t var idx = 0;\n\t var item;\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t item = this[idx];\n\t if (callback.call(context, item, idx, this)) {\n\t return item;\n\t }\n\t }\n\t },\n\n\t every: function(callback, thisArg) {\n\t var idx = 0;\n\t var item;\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t item = this[idx];\n\t if (!callback.call(context, item, idx, this)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t },\n\n\t some: function(callback, thisArg) {\n\t var idx = 0;\n\t var item;\n\t var length = this.length;\n\t var context = thisArg || window;\n\n\t for (; idx < length; idx++) {\n\t item = this[idx];\n\t if (callback.call(context, item, idx, this)) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t // non-standard collection methods\n\t remove: function(item) {\n\t var idx = this.indexOf(item);\n\n\t if (idx !== -1) {\n\t this.splice(idx, 1);\n\t }\n\t },\n\n\t empty: function() {\n\t this.splice(0, this.length);\n\t }\n\t });\n\n\t // Polyfill for Symbol.iterator\n\t if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n\t ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n\t }\n\n\t var LazyObservableArray = ObservableArray.extend({\n\t init: function (data, type, events) {\n\t Observable.fn.init.call(this);\n\n\t this.type = type || ObservableObject;\n\n\t if (events) {\n\t this._events = events;\n\t }\n\n\t for (var idx = 0; idx < data.length; idx++) {\n\t this[idx] = data[idx];\n\t }\n\n\t this.length = idx;\n\t this._parent = proxy(function() { return this; }, this);\n\t },\n\t at: function(index) {\n\t var item = this[index];\n\n\t if (!(item instanceof this.type)) {\n\t item = this[index] = this.wrap(item, this._parent);\n\t } else {\n\t item.parent = this._parent;\n\t }\n\n\t return item;\n\t }\n\t });\n\n\t function eventHandler(context, type, field, prefix) {\n\t return function(e) {\n\t var event = {}, key;\n\n\t for (key in e) {\n\t event[key] = e[key];\n\t }\n\n\t if (prefix) {\n\t event.field = field + \".\" + e.field;\n\t } else {\n\t event.field = field;\n\t }\n\n\t if (type == CHANGE && context._notifyChange) {\n\t context._notifyChange(event);\n\t }\n\n\t context.trigger(type, event);\n\t };\n\t }\n\n\t var ObservableObject = Observable.extend({\n\t init: function(value) {\n\t var that = this,\n\t member,\n\t field,\n\t parent = function() {\n\t return that;\n\t };\n\n\t Observable.fn.init.call(this);\n\n\t this._handlers = {};\n\n\t for (field in value) {\n\t member = value[field];\n\n\t if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n\t member = that.wrap(member, field, parent);\n\t }\n\n\t that[field] = member;\n\t }\n\n\t that.uid = kendo.guid();\n\t },\n\n\t shouldSerialize: function(field, serializeFunctions) {\n\t return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n\t },\n\n\t forEach: function(f) {\n\t for (var i in this) {\n\t if (this.shouldSerialize(i)) {\n\t f(this[i], i);\n\t }\n\t }\n\t },\n\n\t toJSON: function (serializeFunctions) {\n\t var result = {}, value, field;\n\n\t for (field in this) {\n\t if (this.shouldSerialize(field, serializeFunctions)) {\n\t value = this[field];\n\n\t if (value instanceof ObservableObject || value instanceof ObservableArray) {\n\t value = value.toJSON(serializeFunctions);\n\t }\n\n\t result[field] = value;\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t get: function(field) {\n\t var that = this, result;\n\n\t that.trigger(GET, { field: field });\n\n\t if (field === \"this\") {\n\t result = that;\n\t } else {\n\t result = kendo.getter(field, true)(that);\n\t }\n\n\t return result;\n\t },\n\n\t _set: function(field, value) {\n\t var that = this;\n\t var composite = field.indexOf(\".\") >= 0;\n\n\t if (composite) {\n\t var paths = field.split(\".\"),\n\t path = \"\";\n\n\t while (paths.length > 1) {\n\t path += paths.shift();\n\t var obj = kendo.getter(path, true)(that);\n\t if (obj instanceof ObservableObject) {\n\t obj.set(paths.join(\".\"), value);\n\t return composite;\n\t }\n\t path += \".\";\n\t }\n\t }\n\n\t kendo.setter(field)(that, value);\n\n\t return composite;\n\t },\n\n\t set: function(field, value) {\n\t var that = this,\n\t isSetPrevented = false,\n\t composite = field.indexOf(\".\") >= 0,\n\t current = kendo.getter(field, true)(that);\n\n\t if (current !== value) {\n\t if (current instanceof Observable && this._handlers[field]) {\n\t if (this._handlers[field].get) {\n\t current.unbind(GET, this._handlers[field].get);\n\t }\n\t current.unbind(CHANGE, this._handlers[field].change);\n\t }\n\n\t isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n\t if (!isSetPrevented) {\n\t if (!composite) {\n\t value = that.wrap(value, field, function() { return that; });\n\t }\n\t if (!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0) {\n\t that.trigger(CHANGE, { field: field });\n\t }\n\t }\n\t }\n\n\t return isSetPrevented;\n\t },\n\n\t parent: noop,\n\n\t wrap: function(object, field, parent) {\n\t var that = this;\n\t var get;\n\t var change;\n\t var type = toString.call(object);\n\n\t if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n\t var isObservableArray = object instanceof ObservableArray;\n\t var isDataSource = object instanceof DataSource;\n\n\t if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n\t if (!(object instanceof ObservableObject)) {\n\t object = new ObservableObject(object);\n\t }\n\n\t get = eventHandler(that, GET, field, true);\n\t object.bind(GET, get);\n\t change = eventHandler(that, CHANGE, field, true);\n\t object.bind(CHANGE, change);\n\n\t that._handlers[field] = { get: get, change: change };\n\t } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n\t if (!isObservableArray && !isDataSource) {\n\t object = new ObservableArray(object);\n\t }\n\n\t change = eventHandler(that, CHANGE, field, false);\n\n\t object.bind(CHANGE, change);\n\n\t that._handlers[field] = { change: change };\n\t }\n\n\t object.parent = parent;\n\t }\n\n\t return object;\n\t }\n\t });\n\n\t function equal(x, y) {\n\t if (x === y) {\n\t return true;\n\t }\n\n\t var xtype = $.type(x), ytype = $.type(y), field;\n\n\t if (xtype !== ytype) {\n\t return false;\n\t }\n\n\t if (xtype === \"date\") {\n\t return x.getTime() === y.getTime();\n\t }\n\n\t if (xtype !== \"object\" && xtype !== \"array\") {\n\t return false;\n\t }\n\n\t for (field in x) {\n\t if (!equal(x[field], y[field])) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t var parsers = {\n\t \"number\": function(value) {\n\t if (typeof value === STRING && value.toLowerCase() === \"null\") {\n\t return null;\n\t }\n\t return kendo.parseFloat(value);\n\t },\n\n\t \"date\": function(value) {\n\t if (typeof value === STRING && value.toLowerCase() === \"null\") {\n\t return null;\n\t }\n\t return kendo.parseDate(value);\n\t },\n\n\t \"boolean\": function(value) {\n\t if (typeof value === STRING) {\n\t if (value.toLowerCase() === \"null\") {\n\t return null;\n\t } else {\n\t return value.toLowerCase() === \"true\";\n\t }\n\t }\n\t return value != null ? !!value : value;\n\t },\n\n\t \"string\": function(value) {\n\t if (typeof value === STRING && value.toLowerCase() === \"null\") {\n\t return null;\n\t }\n\t return value != null ? (value + \"\") : value;\n\t },\n\n\t \"default\": function(value) {\n\t return value;\n\t }\n\t };\n\n\t var defaultValues = {\n\t \"string\": \"\",\n\t \"number\": 0,\n\t \"date\": new Date(),\n\t \"boolean\": false,\n\t \"default\": \"\"\n\t };\n\n\t function getFieldByName(obj, name) {\n\t var field,\n\t fieldName;\n\n\t for (fieldName in obj) {\n\t field = obj[fieldName];\n\t if (isPlainObject(field) && field.field && field.field === name) {\n\t return field;\n\t } else if (field === name) {\n\t return field;\n\t }\n\t }\n\t return null;\n\t }\n\n\t var Model = ObservableObject.extend({\n\t init: function(data) {\n\t var that = this;\n\n\t if (!data || $.isEmptyObject(data)) {\n\t data = $.extend({}, that.defaults, data);\n\n\t if (that._initializers) {\n\t for (var idx = 0; idx < that._initializers.length; idx++) {\n\t var name = that._initializers[idx];\n\t data[name] = that.defaults[name]();\n\t }\n\t }\n\t }\n\n\t ObservableObject.fn.init.call(that, data);\n\n\t that.dirty = false;\n\t that.dirtyFields = {};\n\n\t if (that.idField) {\n\t that.id = that.get(that.idField);\n\n\t if (that.id === undefined) {\n\t that.id = that._defaultId;\n\t }\n\t }\n\t },\n\n\t shouldSerialize: function(field) {\n\t return ObservableObject.fn.shouldSerialize.call(this, field) &&\n\t field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n\t field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n\t },\n\n\t _parse: function(field, value) {\n\t var that = this,\n\t fieldName = field,\n\t fields = (that.fields || {}),\n\t parse;\n\n\t field = fields[field];\n\t if (!field) {\n\t field = getFieldByName(fields, fieldName);\n\t }\n\t if (field) {\n\t parse = field.parse;\n\t if (!parse && field.type) {\n\t parse = parsers[field.type.toLowerCase()];\n\t }\n\t }\n\n\t return parse ? parse(value) : value;\n\t },\n\n\t _notifyChange: function(e) {\n\t var action = e.action;\n\n\t if (action == \"add\" || action == \"remove\") {\n\t this.dirty = true;\n\t this.dirtyFields[e.field] = true;\n\t }\n\t },\n\n\t editable: function(field) {\n\t field = (this.fields || {})[field];\n\t return field ? field.editable !== false : true;\n\t },\n\n\t set: function(field, value) {\n\t var that = this;\n\t var dirty = that.dirty;\n\n\t if (that.editable(field)) {\n\t value = that._parse(field, value);\n\n\t if (!equal(value, that.get(field))) {\n\t that.dirty = true;\n\t that.dirtyFields[field] = true;\n\n\t if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n\t that.dirty = dirty;\n\n\t if (!that.dirty) {\n\t that.dirtyFields[field] = false;\n\t }\n\t }\n\t } else {\n\t that.trigger(\"equalSet\", { field: field, value: value });\n\t }\n\t }\n\t },\n\n\t accept: function(data) {\n\t var that = this,\n\t parent = function() { return that; },\n\t field;\n\n\t for (field in data) {\n\t var value = data[field];\n\n\t if (field.charAt(0) != \"_\") {\n\t value = that.wrap(data[field], field, parent);\n\t }\n\n\t that._set(field, value);\n\t }\n\n\t if (that.idField) {\n\t that.id = that.get(that.idField);\n\t }\n\n\t that.dirty = false;\n\t that.dirtyFields = {};\n\t },\n\n\t isNew: function() {\n\t return this.id === this._defaultId;\n\t }\n\t });\n\n\t Model.define = function(base, options) {\n\t if (options === undefined) {\n\t options = base;\n\t base = Model;\n\t }\n\n\t var model,\n\t proto = extend({ defaults: {} }, options),\n\t name,\n\t field,\n\t type,\n\t value,\n\t idx,\n\t length,\n\t fields = {},\n\t originalName,\n\t id = proto.id,\n\t functionFields = [];\n\n\t if (id) {\n\t proto.idField = id;\n\t }\n\n\t if (proto.id) {\n\t delete proto.id;\n\t }\n\n\t if (id) {\n\t proto.defaults[id] = proto._defaultId = \"\";\n\t }\n\n\t if (toString.call(proto.fields) === \"[object Array]\") {\n\t for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n\t field = proto.fields[idx];\n\t if (typeof field === STRING) {\n\t fields[field] = {};\n\t } else if (field.field) {\n\t fields[field.field] = field;\n\t }\n\t }\n\t proto.fields = fields;\n\t }\n\n\t for (name in proto.fields) {\n\t field = proto.fields[name];\n\t type = field.type || \"default\";\n\t value = null;\n\t originalName = name;\n\n\t name = typeof (field.field) === STRING ? field.field : name;\n\n\t if (!field.nullable) {\n\t value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n\t if (typeof value === \"function\") {\n\t functionFields.push(name);\n\t }\n\t }\n\n\t if (options.id === name) {\n\t proto._defaultId = value;\n\t }\n\n\t proto.defaults[originalName !== name ? originalName : name] = value;\n\n\t field.parse = field.parse || parsers[type];\n\t }\n\n\t if (functionFields.length > 0) {\n\t proto._initializers = functionFields;\n\t }\n\n\t model = base.extend(proto);\n\t model.define = function(options) {\n\t return Model.define(model, options);\n\t };\n\n\t if (proto.fields) {\n\t model.fields = proto.fields;\n\t model.idField = proto.idField;\n\t }\n\n\t return model;\n\t };\n\n\t var Comparer = {\n\t selector: function(field) {\n\t return isFunction(field) ? field : getter(field);\n\t },\n\n\t compare: function(field) {\n\t var selector = this.selector(field);\n\t return function (a, b) {\n\t a = selector(a);\n\t b = selector(b);\n\n\t if (a == null && b == null) {\n\t return 0;\n\t }\n\n\t if (a == null) {\n\t return -1;\n\t }\n\n\t if (b == null) {\n\t return 1;\n\t }\n\n\t if (a.localeCompare) {\n\t return a.localeCompare(b);\n\t }\n\n\t return a > b ? 1 : (a < b ? -1 : 0);\n\t };\n\t },\n\n\t create: function(sort) {\n\t var compare = sort.compare || this.compare(sort.field);\n\n\t if (sort.dir == \"desc\") {\n\t return function(a, b) {\n\t return compare(b, a, true);\n\t };\n\t }\n\n\t return compare;\n\t },\n\n\t combine: function(comparers) {\n\t return function(a, b) {\n\t var result = comparers[0](a, b),\n\t idx,\n\t length;\n\n\t for (idx = 1, length = comparers.length; idx < length; idx ++) {\n\t result = result || comparers[idx](a, b);\n\t }\n\n\t return result;\n\t };\n\t }\n\t };\n\n\t var StableComparer = extend({}, Comparer, {\n\t asc: function(field) {\n\t var selector = this.selector(field);\n\t return function (a, b) {\n\t var valueA = selector(a);\n\t var valueB = selector(b);\n\n\t if (valueA && valueA.getTime && valueB && valueB.getTime) {\n\t valueA = valueA.getTime();\n\t valueB = valueB.getTime();\n\t }\n\n\t if (valueA === valueB) {\n\t return a.__position - b.__position;\n\t }\n\n\t if (valueA == null) {\n\t return -1;\n\t }\n\n\t if (valueB == null) {\n\t return 1;\n\t }\n\n\t if (valueA.localeCompare) {\n\t return valueA.localeCompare(valueB);\n\t }\n\n\t return valueA > valueB ? 1 : -1;\n\t };\n\t },\n\n\t desc: function(field) {\n\t var selector = this.selector(field);\n\t return function (a, b) {\n\t var valueA = selector(a);\n\t var valueB = selector(b);\n\n\t if (valueA && valueA.getTime && valueB && valueB.getTime) {\n\t valueA = valueA.getTime();\n\t valueB = valueB.getTime();\n\t }\n\n\t if (valueA === valueB) {\n\t return a.__position - b.__position;\n\t }\n\n\t if (valueA == null) {\n\t return 1;\n\t }\n\n\t if (valueB == null) {\n\t return -1;\n\t }\n\n\t if (valueB.localeCompare) {\n\t return valueB.localeCompare(valueA);\n\t }\n\n\t return valueA < valueB ? 1 : -1;\n\t };\n\t },\n\t create: function(sort) {\n\t return this[sort.dir](sort.field);\n\t }\n\t });\n\n\t map = function (array, callback) {\n\t var idx, length = array.length, result = new Array(length);\n\n\t for (idx = 0; idx < length; idx++) {\n\t result[idx] = callback(array[idx], idx, array);\n\t }\n\n\t return result;\n\t };\n\n\t var operators = (function(){\n\n\t function quote(str) {\n\t if (typeof str == \"string\") {\n\t str = str.replace(/[\\r\\n]+/g, \"\");\n\t }\n\t return JSON.stringify(str);\n\t }\n\n\t function textOp(impl) {\n\t return function(a, b, ignore, accentFoldingFiltering) {\n\t b += \"\";\n\t if (ignore) {\n\t a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering +\"')\" : \".toLowerCase()\");\n\t b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n\t }\n\t return impl(a, quote(b), ignore);\n\t };\n\t }\n\n\t function operator(op, a, b, ignore, accentFoldingFiltering) {\n\t if (b != null) {\n\t if (typeof b === STRING) {\n\t var date = dateRegExp.exec(b);\n\t if (date) {\n\t b = new Date(+date[1]);\n\t } else if (ignore) {\n\t b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n\t a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering +\"')\" : \".toLowerCase()\");\n\t } else {\n\t b = quote(b);\n\t }\n\t }\n\n\t if (b.getTime) {\n\t //b looks like a Date\n\t a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n\t b = b.getTime();\n\t }\n\t }\n\n\t return a + \" \" + op + \" \" + b;\n\t }\n\n\t function getMatchRegexp(pattern) {\n\t // take a pattern, as supported by Excel match filter, and\n\t // convert it to the equivalent JS regular expression.\n\t // Excel patterns support:\n\t //\n\t // * - match any sequence of characters\n\t // ? - match a single character\n\t //\n\t // to match a literal * or ?, they must be prefixed by a tilde (~)\n\t for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n\t var ch = pattern.charAt(i);\n\t if (esc) {\n\t rx += \"\\\\\" + ch;\n\t } else if (ch == \"~\") {\n\t esc = true;\n\t continue;\n\t } else if (ch == \"*\") {\n\t rx += \".*\";\n\t } else if (ch == \"?\") {\n\t rx += \".\";\n\t } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n\t rx += \"\\\\\" + ch;\n\t } else {\n\t rx += ch;\n\t }\n\t esc = false;\n\t }\n\t return rx + \"$/\";\n\t }\n\n\t return {\n\t quote: function(value) {\n\t if (value && value.getTime) {\n\t return \"new Date(\" + value.getTime() + \")\";\n\t }\n\t return quote(value);\n\t },\n\t eq: function(a, b, ignore, accentFoldingFiltering) {\n\t return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n\t },\n\t neq: function(a, b, ignore, accentFoldingFiltering) {\n\t return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n\t },\n\t gt: function(a, b, ignore) {\n\t return operator(\">\", a, b, ignore);\n\t },\n\t gte: function(a, b, ignore) {\n\t return operator(\">=\", a, b, ignore);\n\t },\n\t lt: function(a, b, ignore) {\n\t return operator(\"<\", a, b, ignore);\n\t },\n\t lte: function(a, b, ignore) {\n\t return operator(\"<=\", a, b, ignore);\n\t },\n\t startswith: textOp(function(a, b) {\n\t return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n\t }),\n\t doesnotstartwith: textOp(function(a, b) {\n\t return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n\t }),\n\t endswith: textOp(function(a, b) {\n\t var n = b ? b.length - 2 : 0;\n\t return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n\t }),\n\t doesnotendwith: textOp(function(a, b) {\n\t var n = b ? b.length - 2 : 0;\n\t return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n\t }),\n\t contains: textOp(function(a, b) {\n\t return a + \".indexOf(\" + b + \") >= 0\";\n\t }),\n\t doesnotcontain: textOp(function(a, b) {\n\t return a + \".indexOf(\" + b + \") == -1\";\n\t }),\n\t matches: textOp(function(a, b){\n\t b = b.substring(1, b.length - 1);\n\t return getMatchRegexp(b) + \".test(\" + a + \")\";\n\t }),\n\t doesnotmatch: textOp(function(a, b){\n\t b = b.substring(1, b.length - 1);\n\t return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n\t }),\n\t isempty: function(a) {\n\t return a + \" === ''\";\n\t },\n\t isnotempty: function(a) {\n\t return a + \" !== ''\";\n\t },\n\t isnull: function(a) {\n\t return \"(\" + a + \" == null)\";\n\t },\n\t isnotnull: function(a) {\n\t return \"(\" + a + \" != null)\";\n\t },\n\t isnullorempty: function(a) {\n\t return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n\t },\n\t isnotnullorempty: function(a) {\n\t return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n\t }\n\t };\n\t })();\n\n\t function Query(data) {\n\t this.data = data || [];\n\t }\n\n\t Query.filterExpr = function(expression) {\n\t var expressions = [],\n\t logic = { and: \" && \", or: \" || \" },\n\t idx,\n\t length,\n\t filter,\n\t expr,\n\t fieldFunctions = [],\n\t operatorFunctions = [],\n\t field,\n\t operator,\n\t filters = expression.filters;\n\n\t for (idx = 0, length = filters.length; idx < length; idx++) {\n\t filter = filters[idx];\n\t field = filter.field;\n\t operator = filter.operator;\n\n\t if (filter.filters) {\n\t expr = Query.filterExpr(filter);\n\t //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n\t filter = expr.expression\n\t .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n\t index = +index;\n\t return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n\t })\n\t .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n\t index = +index;\n\t return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n\t });\n\n\t operatorFunctions.push.apply(operatorFunctions, expr.operators);\n\t fieldFunctions.push.apply(fieldFunctions, expr.fields);\n\t } else {\n\t if (typeof field === FUNCTION) {\n\t expr = \"__f[\" + fieldFunctions.length +\"](d)\";\n\t fieldFunctions.push(field);\n\t } else {\n\t expr = kendo.expr(field);\n\t }\n\n\t if (typeof operator === FUNCTION) {\n\t filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n\t operatorFunctions.push(operator);\n\t } else {\n\t filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined? filter.ignoreCase : true, expression.accentFoldingFiltering);\n\t }\n\t }\n\n\t expressions.push(filter);\n\t }\n\n\t return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n\t };\n\n\t function normalizeSort(field, dir) {\n\t if (field) {\n\t var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n\t descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n\t return grep(descriptors, function(d) { return !!d.dir; });\n\t }\n\t }\n\n\t function sortFields(sorts, dir) {\n\t var sortObject = {};\n\n\t if (sorts) {\n\t var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n\t descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n\t for (var i = 0; i < descriptors.length; i++) {\n\t sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n\t }\n\t }\n\n\t return sortObject;\n\t }\n\n\t var operatorMap = {\n\t \"==\": \"eq\",\n\t equals: \"eq\",\n\t isequalto: \"eq\",\n\t equalto: \"eq\",\n\t equal: \"eq\",\n\t \"!=\": \"neq\",\n\t ne: \"neq\",\n\t notequals: \"neq\",\n\t isnotequalto: \"neq\",\n\t notequalto: \"neq\",\n\t notequal: \"neq\",\n\t \"<\": \"lt\",\n\t islessthan: \"lt\",\n\t lessthan: \"lt\",\n\t less: \"lt\",\n\t \"<=\": \"lte\",\n\t le: \"lte\",\n\t islessthanorequalto: \"lte\",\n\t lessthanequal: \"lte\",\n\t \">\": \"gt\",\n\t isgreaterthan: \"gt\",\n\t greaterthan: \"gt\",\n\t greater: \"gt\",\n\t \">=\": \"gte\",\n\t isgreaterthanorequalto: \"gte\",\n\t greaterthanequal: \"gte\",\n\t ge: \"gte\",\n\t notsubstringof: \"doesnotcontain\",\n\t isnull: \"isnull\",\n\t isempty: \"isempty\",\n\t isnotempty: \"isnotempty\"\n\t };\n\n\t function normalizeOperator(expression) {\n\t var idx,\n\t length,\n\t filter,\n\t operator,\n\t filters = expression.filters;\n\n\t if (filters) {\n\t for (idx = 0, length = filters.length; idx < length; idx++) {\n\t filter = filters[idx];\n\t operator = filter.operator;\n\n\t if (operator && typeof operator === STRING) {\n\t filter.operator = operatorMap[operator.toLowerCase()] || operator;\n\t }\n\n\t normalizeOperator(filter);\n\t }\n\t }\n\t }\n\n\t function normalizeFilter(expression) {\n\t if (expression && !isEmptyObject(expression)) {\n\t if (isArray(expression) || !expression.filters) {\n\t expression = {\n\t logic: \"and\",\n\t filters: isArray(expression) ? expression : [expression]\n\t };\n\t }\n\n\t normalizeOperator(expression);\n\n\t return expression;\n\t }\n\t }\n\n\t Query.normalizeFilter = normalizeFilter;\n\n\t function compareDescriptor(f1, f2) {\n\t if (f1.logic || f2.logic) {\n\t return false;\n\t }\n\n\t return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n\t }\n\n\t function normalizeDescriptor(filter) {\n\t filter = filter || {};\n\n\t if (isEmptyObject(filter)) {\n\t return { logic: \"and\", filters: [] };\n\t }\n\n\t return normalizeFilter(filter);\n\t }\n\n\t function fieldComparer(a, b) {\n\t if (b.logic || (a.field > b.field)) {\n\t return 1;\n\t } else if (a.field < b.field) {\n\t return -1;\n\t } else {\n\t return 0;\n\t }\n\t }\n\n\t function compareFilters(expr1, expr2) {\n\t expr1 = normalizeDescriptor(expr1);\n\t expr2 = normalizeDescriptor(expr2);\n\n\t if (expr1.logic !== expr2.logic) {\n\t return false;\n\t }\n\n\t var f1, f2;\n\t var filters1 = (expr1.filters || []).slice();\n\t var filters2 = (expr2.filters || []).slice();\n\n\t if (filters1.length !== filters2.length) {\n\t return false;\n\t }\n\n\t filters1 = filters1.sort(fieldComparer);\n\t filters2 = filters2.sort(fieldComparer);\n\n\t for (var idx = 0; idx < filters1.length; idx++) {\n\t f1 = filters1[idx];\n\t f2 = filters2[idx];\n\n\t if (f1.logic && f2.logic) {\n\t if (!compareFilters(f1, f2)) {\n\t return false;\n\t }\n\t } else if (!compareDescriptor(f1, f2)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t Query.compareFilters = compareFilters;\n\n\t function normalizeAggregate(expressions) {\n\t return isArray(expressions) ? expressions : [expressions];\n\t }\n\n\t function normalizeGroup(field, dir, compare, skipItemSorting) {\n\t var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting : skipItemSorting } : field,\n\t descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n\t return map(descriptors, function(d) {\n\t return {\n\t field: d.field,\n\t dir: d.dir || \"asc\",\n\t aggregates: d.aggregates,\n\t compare: d.compare,\n\t skipItemSorting: d.skipItemSorting\n\t };\n\t });\n\t }\n\n\t function normalizeGroupWithoutCompare(field, dir, compare) {\n\t var descriptors = normalizeGroup(field, dir, compare);\n\n\t for (var i = 0; i < descriptors.length; i++) {\n\t delete descriptors[i].compare;\n\t }\n\n\t return descriptors;\n\t }\n\n\t function anyGroupDescriptorHasCompare(groupDescriptors) {\n\t var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n\t for (var i = 0; i < descriptors.length; i++) {\n\t if (descriptors[i] && isFunction(descriptors[i].compare)) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t }\n\n\t Query.prototype = {\n\t toArray: function () {\n\t return this.data;\n\t },\n\t range: function(index, count) {\n\t return new Query(this.data.slice(index, index + count));\n\t },\n\t skip: function (count) {\n\t return new Query(this.data.slice(count));\n\t },\n\t take: function (count) {\n\t return new Query(this.data.slice(0, count));\n\t },\n\t select: function (selector) {\n\t return new Query(map(this.data, selector));\n\t },\n\t order: function(selector, dir, inPlace) {\n\t var sort = { dir: dir };\n\n\t if (selector) {\n\t if (selector.compare) {\n\t sort.compare = selector.compare;\n\t } else {\n\t sort.field = selector;\n\t }\n\t }\n\n\t if (inPlace) {\n\t return new Query(this.data.sort(Comparer.create(sort)));\n\t }\n\n\t return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n\t },\n\t orderBy: function(selector, inPlace) {\n\t return this.order(selector, \"asc\", inPlace);\n\t },\n\t orderByDescending: function(selector, inPlace) {\n\t return this.order(selector, \"desc\", inPlace);\n\t },\n\t sort: function(field, dir, comparer, inPlace) {\n\t var idx,\n\t length,\n\t descriptors = normalizeSort(field, dir),\n\t comparers = [];\n\n\t comparer = comparer || Comparer;\n\n\t if (descriptors.length) {\n\t for (idx = 0, length = descriptors.length; idx < length; idx++) {\n\t comparers.push(comparer.create(descriptors[idx]));\n\t }\n\n\t return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n\t }\n\n\t return this;\n\t },\n\n\t filter: function(expressions) {\n\t var idx,\n\t current,\n\t length,\n\t compiled,\n\t predicate,\n\t data = this.data,\n\t fields,\n\t operators,\n\t result = [],\n\t filter;\n\n\t expressions = normalizeFilter(expressions);\n\n\t if (!expressions || expressions.filters.length === 0) {\n\t return this;\n\t }\n\n\t compiled = Query.filterExpr(expressions);\n\t fields = compiled.fields;\n\t operators = compiled.operators;\n\n\t predicate = filter = new Function(\"d, __f, __o\", \"return \" + compiled.expression);\n\n\t if (fields.length || operators.length) {\n\t filter = function(d) {\n\t return predicate(d, fields, operators);\n\t };\n\t }\n\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t current = data[idx];\n\n\t if (filter(current)) {\n\t result.push(current);\n\t }\n\t }\n\n\t return new Query(result);\n\t },\n\n\t group: function(descriptors, allData) {\n\t descriptors = normalizeGroup(descriptors || []);\n\t allData = allData || this.data;\n\n\t var that = this,\n\t result = new Query(that.data),\n\t descriptor;\n\n\t if (descriptors.length > 0) {\n\t descriptor = descriptors[0];\n\t result = result.groupBy(descriptor).select(function(group) {\n\t var data = new Query(allData).filter([ { field: group.field, operator: \"eq\", value: group.value, ignoreCase: false } ]);\n\t return {\n\t field: group.field,\n\t value: group.value,\n\t items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n\t hasSubgroups: descriptors.length > 1,\n\t aggregates: data.aggregate(descriptor.aggregates)\n\t };\n\t });\n\t }\n\t return result;\n\t },\n\n\t groupBy: function(descriptor) {\n\t var that = this;\n\n\t if (isEmptyObject(descriptor) || !this.data.length) {\n\t return new Query([]);\n\t }\n\n\t var field = descriptor.field,\n\t sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n\t accessor = kendo.accessor(field),\n\t item,\n\t groupValue = accessor.get(sorted[0], field),\n\t group = {\n\t field: field,\n\t value: groupValue,\n\t items: []\n\t },\n\t currentValue,\n\t idx,\n\t len,\n\t result = [group];\n\n\t for(idx = 0, len = sorted.length; idx < len; idx++) {\n\t item = sorted[idx];\n\t currentValue = accessor.get(item, field);\n\t if(!groupValueComparer(groupValue, currentValue)) {\n\t groupValue = currentValue;\n\t group = {\n\t field: field,\n\t value: groupValue,\n\t items: []\n\t };\n\t result.push(group);\n\t }\n\t group.items.push(item);\n\t }\n\n\t result = that._sortGroups(result, descriptor);\n\n\t return new Query(result);\n\t },\n\n\t _sortForGrouping: function(field, dir) {\n\t var idx, length,\n\t data = this.data;\n\n\t if (!stableSort) {\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t data[idx].__position = idx;\n\t }\n\n\t data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t delete data[idx].__position;\n\t }\n\t return data;\n\t }\n\n\t return this.sort(field, dir).toArray();\n\t },\n\n\t _sortGroups: function(groups, descriptor) {\n\t var result = groups;\n\n\t if (descriptor && isFunction(descriptor.compare)) {\n\t result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n\t }\n\n\t return result;\n\t },\n\n\t aggregate: function (aggregates) {\n\t var idx,\n\t len,\n\t result = {},\n\t state = {};\n\n\t if (aggregates && aggregates.length) {\n\t for(idx = 0, len = this.data.length; idx < len; idx++) {\n\t calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n\t }\n\t }\n\t return result;\n\t }\n\t };\n\n\t function groupValueComparer(a, b) {\n\t if (a && a.getTime && b && b.getTime) {\n\t return a.getTime() === b.getTime();\n\t }\n\t return a === b;\n\t }\n\n\t function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n\t aggregates = aggregates || [];\n\t var idx,\n\t aggr,\n\t functionName,\n\t len = aggregates.length;\n\n\t for (idx = 0; idx < len; idx++) {\n\t aggr = aggregates[idx];\n\t functionName = aggr.aggregate;\n\t var field = aggr.field;\n\t accumulator[field] = accumulator[field] || {};\n\t state[field] = state[field] || {};\n\t state[field][functionName] = state[field][functionName] || {};\n\t accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n\t }\n\t }\n\n\t var functions = {\n\t sum: function(accumulator, item, accessor) {\n\t var value = accessor.get(item);\n\n\t if (!isNumber(accumulator)) {\n\t accumulator = value;\n\t } else if (isNumber(value)) {\n\t accumulator += value;\n\t }\n\n\t return accumulator;\n\t },\n\t count: function(accumulator) {\n\t return (accumulator || 0) + 1;\n\t },\n\t average: function(accumulator, item, accessor, index, length, state) {\n\t var value = accessor.get(item);\n\n\t if (state.count === undefined) {\n\t state.count = 0;\n\t }\n\n\t if (!isNumber(accumulator)) {\n\t accumulator = value;\n\t } else if (isNumber(value)) {\n\t accumulator += value;\n\t }\n\n\t if (isNumber(value)) {\n\t state.count++;\n\t }\n\n\t if(index == length - 1 && isNumber(accumulator)) {\n\t accumulator = accumulator / state.count;\n\t }\n\t return accumulator;\n\t },\n\t max: function(accumulator, item, accessor) {\n\t var value = accessor.get(item);\n\n\t if (!isNumber(accumulator) && !isDate(accumulator)) {\n\t accumulator = value;\n\t }\n\n\t if(accumulator < value && (isNumber(value) || isDate(value))) {\n\t accumulator = value;\n\t }\n\t return accumulator;\n\t },\n\t min: function(accumulator, item, accessor) {\n\t var value = accessor.get(item);\n\n\t if (!isNumber(accumulator) && !isDate(accumulator)) {\n\t accumulator = value;\n\t }\n\n\t if(accumulator > value && (isNumber(value) || isDate(value))) {\n\t accumulator = value;\n\t }\n\t return accumulator;\n\t }\n\t };\n\n\t function isNumber(val) {\n\t return typeof val === \"number\" && !isNaN(val);\n\t }\n\n\t function isDate(val) {\n\t return val && val.getTime;\n\t }\n\n\t function toJSON(array) {\n\t var idx, length = array.length, result = new Array(length);\n\n\t for (idx = 0; idx < length; idx++) {\n\t result[idx] = array[idx].toJSON();\n\t }\n\n\t return result;\n\t }\n\n\t Query.normalizeGroup = normalizeGroup;\n\t Query.normalizeSort = normalizeSort;\n\n\t Query.process = function(data, options, inPlace) {\n\t options = options || {};\n\n\t var group = options.group;\n\t var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n\t var query = new Query(data),\n\t groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n\t normalizedSort = normalizeSort(options.sort || []),\n\t sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n\t groupDescriptorsWithoutSort,\n\t total,\n\t filterCallback = options.filterCallback,\n\t filter = options.filter,\n\t skip = options.skip,\n\t take = options.take;\n\n\t if (sort && inPlace) {\n\t query = query.sort(sort, undefined, undefined, inPlace);\n\t }\n\n\t if (filter) {\n\t query = query.filter(filter);\n\n\t if (filterCallback) {\n\t query = filterCallback(query);\n\t }\n\n\t total = query.toArray().length;\n\t }\n\n\t if (sort) {\n\t if (!inPlace) {\n\t query = query.sort(sort);\n\t }\n\n\t if (group) {\n\t data = query.toArray();\n\t }\n\t }\n\n\t if (customGroupSort) {\n\t query = query.group(group, data);\n\n\t if (skip !== undefined && take !== undefined) {\n\t query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n\t groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n\t return extend({}, groupDescriptor, {\n\t skipItemSorting: true\n\t });\n\t });\n\n\t query = query.group(groupDescriptorsWithoutSort, data);\n\t }\n\t } else {\n\t if (skip !== undefined && take !== undefined) {\n\t query = query.range(skip, take);\n\t }\n\n\t if (group) {\n\t query = query.group(group, data);\n\t }\n\t }\n\n\t return {\n\t total: total,\n\t data: query.toArray()\n\t };\n\t };\n\n\t var LocalTransport = Class.extend({\n\t init: function(options) {\n\t this.data = options.data;\n\t },\n\n\t read: function(options) {\n\t options.success(this.data);\n\t },\n\t update: function(options) {\n\t options.success(options.data);\n\t },\n\t create: function(options) {\n\t options.success(options.data);\n\t },\n\t destroy: function(options) {\n\t options.success(options.data);\n\t }\n\t });\n\n\t var RemoteTransport = Class.extend( {\n\t init: function(options) {\n\t var that = this, parameterMap;\n\n\t options = that.options = extend({}, that.options, options);\n\n\t each(crud, function(index, type) {\n\t if (typeof options[type] === STRING) {\n\t options[type] = {\n\t url: options[type]\n\t };\n\t }\n\t });\n\n\t that.cache = options.cache? Cache.create(options.cache) : {\n\t find: noop,\n\t add: noop\n\t };\n\n\t parameterMap = options.parameterMap;\n\n\t if (options.submit) {\n\t that.submit = options.submit;\n\t }\n\n\t if (isFunction(options.push)) {\n\t that.push = options.push;\n\t }\n\n\t if (!that.push) {\n\t that.push = identity;\n\t }\n\n\t that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n\t var result = {};\n\n\t each(options, function(option, value) {\n\t if (option in parameterMap) {\n\t option = parameterMap[option];\n\t if (isPlainObject(option)) {\n\t value = option.value(value);\n\t option = option.key;\n\t }\n\t }\n\n\t result[option] = value;\n\t });\n\n\t return result;\n\t };\n\t },\n\n\t options: {\n\t parameterMap: identity\n\t },\n\n\t create: function(options) {\n\t return ajax(this.setup(options, CREATE));\n\t },\n\n\t read: function(options) {\n\t var that = this,\n\t success,\n\t error,\n\t result,\n\t cache = that.cache;\n\n\t options = that.setup(options, READ);\n\n\t success = options.success || noop;\n\t error = options.error || noop;\n\n\t result = cache.find(options.data);\n\n\t if(result !== undefined) {\n\t success(result);\n\t } else {\n\t options.success = function(result) {\n\t cache.add(options.data, result);\n\n\t success(result);\n\t };\n\n\t $.ajax(options);\n\t }\n\t },\n\n\t update: function(options) {\n\t return ajax(this.setup(options, UPDATE));\n\t },\n\n\t destroy: function(options) {\n\t return ajax(this.setup(options, DESTROY));\n\t },\n\n\t setup: function(options, type) {\n\t options = options || {};\n\n\t var that = this,\n\t parameters,\n\t operation = that.options[type],\n\t data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n\t options = extend(true, {}, operation, options);\n\t parameters = extend(true, {}, data, options.data);\n\n\t options.data = that.parameterMap(parameters, type);\n\n\t if (isFunction(options.url)) {\n\t options.url = options.url(parameters);\n\t }\n\n\t return options;\n\t }\n\t });\n\n\t var Cache = Class.extend({\n\t init: function() {\n\t this._store = {};\n\t },\n\t add: function(key, data) {\n\t if(key !== undefined) {\n\t this._store[stringify(key)] = data;\n\t }\n\t },\n\t find: function(key) {\n\t return this._store[stringify(key)];\n\t },\n\t clear: function() {\n\t this._store = {};\n\t },\n\t remove: function(key) {\n\t delete this._store[stringify(key)];\n\t }\n\t });\n\n\t Cache.create = function(options) {\n\t var store = {\n\t \"inmemory\": function() { return new Cache(); }\n\t };\n\n\t if (isPlainObject(options) && isFunction(options.find)) {\n\t return options;\n\t }\n\n\t if (options === true) {\n\t return new Cache();\n\t }\n\n\t return store[options]();\n\t };\n\n\t function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n\t var record,\n\t getter,\n\t originalName,\n\t idx,\n\t setters = {},\n\t length;\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t record = data[idx];\n\t for (getter in getters) {\n\t originalName = fieldNames[getter];\n\n\t if (originalName && originalName !== getter) {\n\t if (!setters[originalName]) {\n\t setters[originalName] = kendo.setter(originalName);\n\t }\n\t setters[originalName](record, getters[getter](record));\n\t delete record[getter];\n\t }\n\t }\n\t }\n\t }\n\n\t function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n\t var record,\n\t getter,\n\t originalName,\n\t idx,\n\t length;\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t record = data[idx];\n\t for (getter in getters) {\n\t record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n\t originalName = fieldNames[getter];\n\t if (originalName && originalName !== getter) {\n\t delete record[originalName];\n\t }\n\t }\n\t }\n\t }\n\n\t function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n\t var record,\n\t idx,\n\t fieldName,\n\t length;\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t record = data[idx];\n\n\t fieldName = originalFieldNames[record.field];\n\t if (fieldName && fieldName != record.field) {\n\t record.field = fieldName;\n\t }\n\n\t record.value = modelInstance._parse(record.field, record.value);\n\n\t if (record.hasSubgroups) {\n\t convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n\t } else {\n\t convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n\t }\n\t }\n\t }\n\n\t function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n\t return function(data) {\n\t data = originalFunction(data);\n\n\t return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n\t };\n\t }\n\n\t function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n\t return function(data) {\n\n\t if (data && !isEmptyObject(getters)) {\n\t if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n\t data = [data];\n\t }\n\n\t converter(data, getters, new model(), originalFieldNames, fieldNames);\n\t }\n\n\t return data || [];\n\t };\n\t }\n\n\t var DataReader = Class.extend({\n\t init: function(schema) {\n\t var that = this, member, get, model, base;\n\n\t schema = schema || {};\n\n\t for (member in schema) {\n\t get = schema[member];\n\n\t that[member] = typeof get === STRING ? getter(get) : get;\n\t }\n\n\t base = schema.modelBase || Model;\n\n\t if (isPlainObject(that.model)) {\n\t that.model = model = base.define(that.model);\n\t }\n\n\t var dataFunction = proxy(that.data, that);\n\n\t that._dataAccessFunction = dataFunction;\n\n\t if (that.model) {\n\t var groupsFunction = proxy(that.groups, that),\n\t serializeFunction = proxy(that.serialize, that),\n\t originalFieldNames = {},\n\t getters = {},\n\t serializeGetters = {},\n\t fieldNames = {},\n\t shouldSerialize = false,\n\t fieldName,\n\t name;\n\n\t model = that.model;\n\n\t if (model.fields) {\n\t each(model.fields, function(field, value) {\n\t var fromName;\n\n\t fieldName = field;\n\n\t if (isPlainObject(value) && value.field) {\n\t fieldName = value.field;\n\t } else if (typeof value === STRING) {\n\t fieldName = value;\n\t }\n\n\t if (isPlainObject(value) && value.from) {\n\t fromName = value.from;\n\t }\n\n\t shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n\t name = fromName || fieldName;\n\t getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n\t serializeGetters[field] = getter(field);\n\t originalFieldNames[fromName || fieldName] = field;\n\t fieldNames[field] = fromName || fieldName;\n\t });\n\n\t if (!schema.serialize && shouldSerialize) {\n\t that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n\t }\n\t }\n\n\t that._dataAccessFunction = dataFunction;\n\t that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n\t that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n\t that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n\t }\n\t },\n\t errors: function(data) {\n\t return data ? data.errors : null;\n\t },\n\t parse: identity,\n\t data: identity,\n\t total: function(data) {\n\t return data.length;\n\t },\n\t groups: identity,\n\t aggregates: function() {\n\t return {};\n\t },\n\t serialize: function(data) {\n\t return data;\n\t }\n\t });\n\n\t function fillLastGroup(originalGroup, newGroup) {\n\t var currOriginal;\n\t var currentNew;\n\n\t if (newGroup.items && newGroup.items.length) {\n\t for (var i = 0; i < newGroup.items.length; i++) {\n\t currOriginal = originalGroup.items[i];\n\t currentNew = newGroup.items[i];\n\t if (currOriginal && currentNew) {\n\t if (currOriginal.hasSubgroups) {\n\t fillLastGroup(currOriginal, currentNew);\n\t } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n\t currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n\t } else {\n\t originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n\t }\n\t } else if (currentNew) {\n\t originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n\t }\n\t }\n\t }\n\t }\n\t function mergeGroups(target, dest, skip, take) {\n\t var group,\n\t idx = 0,\n\t items;\n\n\t while (dest.length && take) {\n\t group = dest[idx];\n\t items = group.items;\n\n\t var length = items.length;\n\n\t if (target && target.field === group.field && target.value === group.value) {\n\t if (target.hasSubgroups && target.items.length) {\n\t mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n\t } else {\n\t items = items.slice(skip, skip + take);\n\t target.items = target.items.concat(items);\n\t }\n\t dest.splice(idx--, 1);\n\t } else if (group.hasSubgroups && items.length) {\n\t mergeGroups(group, items, skip, take);\n\t if (!group.items.length) {\n\t dest.splice(idx--, 1);\n\t }\n\t } else {\n\t items = items.slice(skip, skip + take);\n\t group.items = items;\n\n\t if (!group.items.length) {\n\t dest.splice(idx--, 1);\n\t }\n\t }\n\n\t if (items.length === 0) {\n\t skip -= length;\n\t } else {\n\t skip = 0;\n\t take -= items.length;\n\t }\n\n\t if (++idx >= dest.length) {\n\t break;\n\t }\n\t }\n\n\t if (idx < dest.length) {\n\t dest.splice(idx, dest.length - idx);\n\t }\n\t }\n\n\t function flatGroups(groups, indexFunction) {\n\t var result = [];\n\t var groupsLength = (groups || []).length;\n\t var group;\n\t var items;\n\t var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n\t return array[index];\n\t };\n\n\t for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n\t group = indexFn(groups, groupIndex);\n\n\t if (group.hasSubgroups) {\n\t result = result.concat(flatGroups(group.items));\n\t } else {\n\t items = group.items;\n\n\t for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n\t result.push(indexFn(items, itemIndex));\n\t }\n\t }\n\t }\n\t return result;\n\t }\n\n\t function flattenGroups(data) {\n\t var idx,\n\t result = [],\n\t length,\n\t items,\n\t itemIndex;\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t var group = data.at(idx);\n\t if (group.hasSubgroups) {\n\t result = result.concat(flattenGroups(group.items));\n\t } else {\n\t items = group.items;\n\t for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n\t result.push(items.at(itemIndex));\n\t }\n\t }\n\t }\n\t return result;\n\t }\n\n\t function wrapGroupItems(data, model) {\n\t var idx, length, group;\n\t if (model) {\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t group = data.at(idx);\n\n\t if (group.hasSubgroups) {\n\t wrapGroupItems(group.items, model);\n\t } else {\n\t group.items = new LazyObservableArray(group.items, model, group.items._events);\n\t }\n\t }\n\t }\n\t }\n\n\t function eachGroupItems(data, func) {\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (data[idx].hasSubgroups) {\n\t if (eachGroupItems(data[idx].items, func)) {\n\t return true;\n\t }\n\t } else if (func(data[idx].items, data[idx])) {\n\t return true;\n\t }\n\t }\n\t }\n\n\t function replaceInRanges(ranges, data, item, observable) {\n\t for (var idx = 0; idx < ranges.length; idx++) {\n\t if (ranges[idx].data === data) {\n\t break;\n\t }\n\t if (replaceInRange(ranges[idx].data, item, observable)) {\n\t break;\n\t }\n\t }\n\t }\n\n\t function replaceInRange(items, item, observable) {\n\t for (var idx = 0, length = items.length; idx < length; idx++) {\n\t if (items[idx] && items[idx].hasSubgroups) {\n\t return replaceInRange(items[idx].items, item, observable);\n\t } else if (items[idx] === item || items[idx] === observable) {\n\t items[idx] = observable;\n\t return true;\n\t }\n\t }\n\t }\n\n\t function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n\t for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n\t var item = view[viewIndex];\n\n\t if (!item || item instanceof type) {\n\t continue;\n\t }\n\n\t if (item.hasSubgroups !== undefined && !serverGrouping) {\n\t replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n\t } else {\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (data[idx] === item) {\n\t view[viewIndex] = data.at(idx);\n\t replaceInRanges(ranges, data, item, view[viewIndex]);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t }\n\n\t function removeModel(data, model) {\n\t var length = data.length;\n\t var dataItem;\n\t var idx;\n\n\t for (idx = 0; idx < length; idx++) {\n\t dataItem = data[idx];\n\n\t if (dataItem.uid && dataItem.uid == model.uid) {\n\t data.splice(idx, 1);\n\t return dataItem;\n\t }\n\t }\n\t }\n\n\t function indexOfPristineModel(data, model) {\n\t if (model) {\n\t return indexOf(data, function(item) {\n\t return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n\t });\n\t }\n\t return -1;\n\t }\n\n\t function indexOfModel(data, model) {\n\t if (model) {\n\t return indexOf(data, function(item) {\n\t return item.uid == model.uid;\n\t });\n\t }\n\t return -1;\n\t }\n\n\t function indexOf(data, comparer) {\n\t var idx, length;\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if (comparer(data[idx])) {\n\t return idx;\n\t }\n\t }\n\n\t return -1;\n\t }\n\n\t function fieldNameFromModel(fields, name) {\n\t if (fields && !isEmptyObject(fields)) {\n\t var descriptor = fields[name];\n\t var fieldName;\n\t if (isPlainObject(descriptor)) {\n\t fieldName = descriptor.from || descriptor.field || name;\n\t } else {\n\t fieldName = fields[name] || name;\n\t }\n\n\t if (isFunction(fieldName)) {\n\t return name;\n\t }\n\n\t return fieldName;\n\t }\n\t return name;\n\t }\n\n\t function convertFilterDescriptorsField(descriptor, model) {\n\t var idx,\n\t length,\n\t target = {};\n\n\t for (var field in descriptor) {\n\t if (field !== \"filters\") {\n\t target[field] = descriptor[field];\n\t }\n\t }\n\n\t if (descriptor.filters) {\n\t target.filters = [];\n\t for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n\t target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n\t }\n\t } else {\n\t target.field = fieldNameFromModel(model.fields, target.field);\n\t }\n\t return target;\n\t }\n\n\t function convertDescriptorsField(descriptors, model) {\n\t var idx,\n\t length,\n\t result = [],\n\t target,\n\t descriptor;\n\n\t for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n\t target = {};\n\n\t descriptor = descriptors[idx];\n\n\t for (var field in descriptor) {\n\t target[field] = descriptor[field];\n\t }\n\n\t target.field = fieldNameFromModel(model.fields, target.field);\n\n\t if (target.aggregates && isArray(target.aggregates)) {\n\t target.aggregates = convertDescriptorsField(target.aggregates, model);\n\t }\n\t result.push(target);\n\t }\n\t return result;\n\t }\n\n\t var DataSource = Observable.extend({\n\t init: function(options) {\n\t var that = this, model, data;\n\n\t if (options) {\n\t data = options.data;\n\t }\n\n\t options = that.options = extend({}, that.options, options);\n\n\t that._map = {};\n\t that._prefetch = {};\n\t that._data = [];\n\t that._pristineData = [];\n\t that._ranges = [];\n\t that._view = [];\n\t that._pristineTotal = 0;\n\t that._destroyed = [];\n\t that._pageSize = options.pageSize;\n\t that._page = options.page || (options.pageSize ? 1 : undefined);\n\t that._sort = normalizeSort(options.sort);\n\t that._filter = normalizeFilter(options.filter);\n\t that._group = normalizeGroup(options.group);\n\t that._aggregate = options.aggregate;\n\t that._total = options.total;\n\n\t that._shouldDetachObservableParents = true;\n\n\t Observable.fn.init.call(that);\n\n\t that.transport = Transport.create(options, data, that);\n\n\t if (isFunction(that.transport.push)) {\n\t that.transport.push({\n\t pushCreate: proxy(that._pushCreate, that),\n\t pushUpdate: proxy(that._pushUpdate, that),\n\t pushDestroy: proxy(that._pushDestroy, that)\n\t });\n\t }\n\n\t if (options.offlineStorage != null) {\n\t if (typeof options.offlineStorage == \"string\") {\n\t var key = options.offlineStorage;\n\n\t that._storage = {\n\t getItem: function() {\n\t return JSON.parse(localStorage.getItem(key));\n\t },\n\t setItem: function(item) {\n\t localStorage.setItem(key, stringify(that.reader.serialize(item)));\n\t }\n\t };\n\t } else {\n\t that._storage = options.offlineStorage;\n\t }\n\t }\n\n\t that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n\t model = that.reader.model || {};\n\n\t that._detachObservableParents();\n\n\t that._data = that._observe(that._data);\n\t that._online = true;\n\n\t that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n\t },\n\n\t options: {\n\t data: null,\n\t schema: {\n\t modelBase: Model\n\t },\n\t offlineStorage: null,\n\t serverSorting: false,\n\t serverPaging: false,\n\t serverFiltering: false,\n\t serverGrouping: false,\n\t serverAggregates: false,\n\t batch: false,\n\t inPlaceSort: false\n\t },\n\n\t clone: function() {\n\t return this;\n\t },\n\n\t online: function(value) {\n\t if (value !== undefined) {\n\t if (this._online != value) {\n\t this._online = value;\n\n\t if (value) {\n\t return this.sync();\n\t }\n\t }\n\n\t return $.Deferred().resolve().promise();\n\t } else {\n\t return this._online;\n\t }\n\t },\n\n\t offlineData: function(state) {\n\t if (this.options.offlineStorage == null) {\n\t return null;\n\t }\n\n\t if (state !== undefined) {\n\t return this._storage.setItem(state);\n\t }\n\n\t return this._storage.getItem() || [];\n\t },\n\n\t _isServerGrouped: function() {\n\t var group = this.group() || [];\n\n\t return this.options.serverGrouping && group.length;\n\t },\n\n\t _pushCreate: function(result) {\n\t this._push(result, \"pushCreate\");\n\t },\n\n\t _pushUpdate: function(result) {\n\t this._push(result, \"pushUpdate\");\n\t },\n\n\t _pushDestroy: function(result) {\n\t this._push(result, \"pushDestroy\");\n\t },\n\n\t _push: function(result, operation) {\n\t var data = this._readData(result);\n\n\t if (!data) {\n\t data = result;\n\t }\n\n\t this[operation](data);\n\t },\n\n\t _flatData: function(data, skip) {\n\t if (data) {\n\t if (this._isServerGrouped()) {\n\t return flattenGroups(data);\n\t }\n\n\t if (!skip) {\n\t for (var idx = 0; idx < data.length; idx++) {\n\t data.at(idx);\n\t }\n\t }\n\t }\n\n\t return data;\n\t },\n\n\t parent: noop,\n\n\t get: function(id) {\n\t var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if (data[idx].id == id) {\n\t return data[idx];\n\t }\n\t }\n\t },\n\n\t getByUid: function(id) {\n\t return this._getByUid(id, this._data);\n\t },\n\n\t _getByUid: function(id, dataItems) {\n\t var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n\t if (!data) {\n\t return;\n\t }\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if (data[idx].uid == id) {\n\t return data[idx];\n\t }\n\t }\n\t },\n\n\t indexOf: function(model) {\n\t return indexOfModel(this._data, model);\n\t },\n\n\t at: function(index) {\n\t return this._data.at(index);\n\t },\n\n\t data: function(value) {\n\t var that = this;\n\t if (value !== undefined) {\n\t that._detachObservableParents();\n\t that._data = this._observe(value);\n\n\t that._pristineData = value.slice(0);\n\n\t that._storeData();\n\n\t that._ranges = [];\n\t that.trigger(\"reset\");\n\t that._addRange(that._data);\n\n\t that._total = that._data.length;\n\t that._pristineTotal = that._total;\n\n\t that._process(that._data);\n\t } else {\n\t if (that._data) {\n\t for (var idx = 0; idx < that._data.length; idx++) {\n\t that._data.at(idx);\n\t }\n\t }\n\n\t return that._data;\n\t }\n\t },\n\n\t view: function(value) {\n\t if (value === undefined) {\n\t return this._view;\n\t } else {\n\t this._view = this._observeView(value);\n\t }\n\t },\n\n\t _observeView: function(data) {\n\t var that = this;\n\t replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n\t var view = new LazyObservableArray(data, that.reader.model);\n\t view.parent = function() { return that.parent(); };\n\t return view;\n\t },\n\n\t flatView: function() {\n\t var groups = this.group() || [];\n\n\t if (groups.length) {\n\t return flattenGroups(this._view);\n\t } else {\n\t return this._view;\n\t }\n\t },\n\n\t add: function(model) {\n\t return this.insert(this._data.length, model);\n\t },\n\n\t _createNewModel: function(model) {\n\t if (this.reader.model) {\n\t return new this.reader.model(model);\n\t }\n\n\t if (model instanceof ObservableObject) {\n\t return model;\n\t }\n\n\t return new ObservableObject(model);\n\t },\n\n\t insert: function(index, model) {\n\t if (!model) {\n\t model = index;\n\t index = 0;\n\t }\n\n\t if (!(model instanceof Model)) {\n\t model = this._createNewModel(model);\n\t }\n\n\t if (this._isServerGrouped()) {\n\t this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n\t } else {\n\t this._data.splice(index, 0, model);\n\t }\n\n\t this._insertModelInRange(index, model);\n\n\t return model;\n\t },\n\n\t pushInsert: function(index, items) {\n\t var that = this;\n\t var rangeSpan = that._getCurrentRangeSpan();\n\n\t if (!items) {\n\t items = index;\n\t index = 0;\n\t }\n\n\t if (!isArray(items)) {\n\t items = [items];\n\t }\n\n\t var pushed = [];\n\t var autoSync = this.options.autoSync;\n\t this.options.autoSync = false;\n\n\t try {\n\t for (var idx = 0; idx < items.length; idx ++) {\n\t var item = items[idx];\n\n\t var result = this.insert(index, item);\n\n\t pushed.push(result);\n\n\t var pristine = result.toJSON();\n\n\t if (this._isServerGrouped()) {\n\t pristine = this._wrapInEmptyGroup(pristine);\n\t }\n\n\t this._pristineData.push(pristine);\n\n\t if (rangeSpan && rangeSpan.length) {\n\t $(rangeSpan).last()[0].pristineData.push(pristine);\n\t }\n\n\t index++;\n\t }\n\t } finally {\n\t this.options.autoSync = autoSync;\n\t }\n\n\t if (pushed.length) {\n\t this.trigger(\"push\", {\n\t type: \"create\",\n\t items: pushed\n\t });\n\t }\n\t },\n\n\t pushCreate: function(items) {\n\t this.pushInsert(this._data.length, items);\n\t },\n\n\t pushUpdate: function(items) {\n\t if (!isArray(items)) {\n\t items = [items];\n\t }\n\n\t var pushed = [];\n\n\t for (var idx = 0; idx < items.length; idx ++) {\n\t var item = items[idx];\n\t var model = this._createNewModel(item);\n\n\t var target = this.get(model.id);\n\n\t if (target) {\n\t pushed.push(target);\n\n\t target.accept(item);\n\n\t target.trigger(CHANGE);\n\n\t this._updatePristineForModel(target, item);\n\t } else {\n\t this.pushCreate(item);\n\t }\n\t }\n\n\t if (pushed.length) {\n\t this.trigger(\"push\", {\n\t type: \"update\",\n\t items: pushed\n\t });\n\t }\n\t },\n\n\t pushDestroy: function(items) {\n\t var pushed = this._removeItems(items);\n\n\t if (pushed.length) {\n\t this.trigger(\"push\", {\n\t type: \"destroy\",\n\t items: pushed\n\t });\n\t }\n\t },\n\n\t _removeItems: function(items, removePristine) {\n\t if (!isArray(items)) {\n\t items = [items];\n\t }\n\n\t var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n\t var destroyed = [];\n\t var autoSync = this.options.autoSync;\n\t this.options.autoSync = false;\n\t try {\n\t for (var idx = 0; idx < items.length; idx ++) {\n\t var item = items[idx];\n\t var model = this._createNewModel(item);\n\t var found = false;\n\n\t this._eachItem(this._data, function(items){\n\t for (var idx = 0; idx < items.length; idx++) {\n\t var item = items.at(idx);\n\t if (item.id === model.id) {\n\t destroyed.push(item);\n\t items.splice(idx, 1);\n\t found = true;\n\t break;\n\t }\n\t }\n\t });\n\n\t if (found && shouldRemovePristine) {\n\t this._removePristineForModel(model);\n\t this._destroyed.pop();\n\t }\n\t }\n\t } finally {\n\t this.options.autoSync = autoSync;\n\t }\n\n\t return destroyed;\n\t },\n\n\t remove: function(model) {\n\t var result,\n\t that = this,\n\t hasGroups = that._isServerGrouped();\n\n\t this._eachItem(that._data, function(items) {\n\t result = removeModel(items, model);\n\n\t if (result && hasGroups) {\n\t if (!result.isNew || !result.isNew()) {\n\t that._destroyed.push(result);\n\t }\n\t return true;\n\t }\n\t });\n\n\t this._removeModelFromRanges(model);\n\n\t return model;\n\t },\n\n\t destroyed: function() {\n\t return this._destroyed;\n\t },\n\n\t created: function() {\n\t var idx,\n\t length,\n\t result = [],\n\t data = this._flatData(this._data, this.options.useRanges);\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if (data[idx].isNew && data[idx].isNew()) {\n\t result.push(data[idx]);\n\t }\n\t }\n\t return result;\n\t },\n\n\t updated: function() {\n\t var idx,\n\t length,\n\t result = [],\n\t data = this._flatData(this._data, this.options.useRanges);\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n\t result.push(data[idx]);\n\t }\n\t }\n\t return result;\n\t },\n\n\t sync: function() {\n\t var that = this,\n\t created = [],\n\t updated = [],\n\t destroyed = that._destroyed;\n\n\t var promise = $.Deferred().resolve().promise();\n\n\t if (that.online()) {\n\n\t if (!that.reader.model) {\n\t return promise;\n\t }\n\n\t created = that.created();\n\t updated = that.updated();\n\n\t var promises = [];\n\n\t if (that.options.batch && that.transport.submit) {\n\t promises = that._sendSubmit(created, updated, destroyed);\n\t } else {\n\t promises.push.apply(promises, that._send(\"create\", created));\n\t promises.push.apply(promises, that._send(\"update\", updated));\n\t promises.push.apply(promises, that._send(\"destroy\", destroyed));\n\t }\n\n\t promise = $.when\n\t .apply(null, promises)\n\t .then(function() {\n\t var idx, length;\n\n\t for (idx = 0, length = arguments.length; idx < length; idx++){\n\t if (arguments[idx]) {\n\t that._accept(arguments[idx]);\n\t }\n\t }\n\n\t that._storeData(true);\n\n\t that._syncEnd();\n\n\t that._change({ action: \"sync\" });\n\n\t that.trigger(SYNC);\n\t });\n\t } else {\n\t that._storeData(true);\n\n\t that._syncEnd();\n\n\t that._change({ action: \"sync\" });\n\t }\n\n\t return promise;\n\t },\n\n\t _syncEnd: noop,\n\n\t cancelChanges: function(model) {\n\t var that = this;\n\n\t if (model instanceof kendo.data.Model) {\n\t that._cancelModel(model);\n\t } else {\n\t that._destroyed = [];\n\t that._detachObservableParents();\n\t that._data = that._observe(that._pristineData);\n\t if (that.options.serverPaging) {\n\t that._total = that._pristineTotal;\n\t }\n\n\t that._ranges = [];\n\t that._addRange(that._data, 0);\n\n\t that._changesCanceled();\n\n\t that._change();\n\n\t that._markOfflineUpdatesAsDirty();\n\t }\n\t },\n\n\t _changesCanceled: noop,\n\n\t _markOfflineUpdatesAsDirty: function() {\n\t var that = this;\n\n\t if (that.options.offlineStorage != null) {\n\t that._eachItem(that._data, function(items) {\n\t for (var idx = 0; idx < items.length; idx++) {\n\t var item = items.at(idx);\n\t if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n\t item.dirty = true;\n\t }\n\t }\n\t });\n\t }\n\t },\n\n\t hasChanges: function() {\n\t var idx,\n\t length,\n\t data = this._flatData(this._data, this.options.useRanges);\n\n\t if (this._destroyed.length) {\n\t return true;\n\t }\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t _accept: function(result) {\n\t var that = this,\n\t models = result.models,\n\t response = result.response,\n\t idx = 0,\n\t serverGroup = that._isServerGrouped(),\n\t pristine = that._pristineData,\n\t type = result.type,\n\t length;\n\n\t that.trigger(REQUESTEND, { response: response, type: type });\n\n\t if (response && !isEmptyObject(response)) {\n\t response = that.reader.parse(response);\n\n\t if (that._handleCustomErrors(response)) {\n\t return;\n\t }\n\n\t response = that.reader.data(response);\n\n\t if (!isArray(response)) {\n\t response = [response];\n\t }\n\t } else {\n\t response = $.map(models, function(model) { return model.toJSON(); } );\n\t }\n\n\t if (type === \"destroy\") {\n\t that._destroyed = [];\n\t }\n\n\t for (idx = 0, length = models.length; idx < length; idx++) {\n\t if (type !== \"destroy\") {\n\t models[idx].accept(response[idx]);\n\n\t if (type === \"create\") {\n\t pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n\t } else if (type === \"update\") {\n\t that._updatePristineForModel(models[idx], response[idx]);\n\t }\n\t } else {\n\t that._removePristineForModel(models[idx]);\n\t }\n\t }\n\t },\n\n\t _updatePristineForModel: function(model, values) {\n\t this._executeOnPristineForModel(model, function(index, items) {\n\t kendo.deepExtend(items[index], values);\n\t });\n\t },\n\n\t _executeOnPristineForModel: function(model, callback) {\n\t this._eachPristineItem(\n\t function(items) {\n\t var index = indexOfPristineModel(items, model);\n\t if (index > -1) {\n\t callback(index, items);\n\t return true;\n\t }\n\t });\n\t },\n\n\t _removePristineForModel: function(model) {\n\t this._executeOnPristineForModel(model, function(index, items) {\n\t items.splice(index, 1);\n\t });\n\t },\n\n\t _readData: function(data) {\n\t var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n\t return read.call(this.reader, data);\n\t },\n\n\t _eachPristineItem: function(callback) {\n\t var that = this;\n\t var options = that.options;\n\t var rangeSpan = that._getCurrentRangeSpan();\n\n\t that._eachItem(that._pristineData, callback);\n\n\t if (options.serverPaging && options.useRanges) {\n\t each(rangeSpan, function(i, range) {\n\t that._eachItem(range.pristineData, callback);\n\t });\n\t }\n\t },\n\n\t _eachItem: function(data, callback) {\n\t if (data && data.length) {\n\t if (this._isServerGrouped()) {\n\t eachGroupItems(data, callback);\n\t } else {\n\t callback(data);\n\t }\n\t }\n\t },\n\n\t _pristineForModel: function(model) {\n\t var pristine,\n\t idx,\n\t callback = function(items) {\n\t idx = indexOfPristineModel(items, model);\n\t if (idx > -1) {\n\t pristine = items[idx];\n\t return true;\n\t }\n\t };\n\n\t this._eachPristineItem(callback);\n\n\t return pristine;\n\t },\n\n\t _cancelModel: function(model) {\n\t var that = this;\n\t var pristine = this._pristineForModel(model);\n\n\t this._eachItem(this._data, function(items) {\n\t var idx = indexOfModel(items, model);\n\t if (idx >= 0) {\n\t if (pristine && (!model.isNew() || pristine.__state__)) {\n\t items[idx].accept(pristine);\n\n\t if (pristine.__state__ == \"update\") {\n\t items[idx].dirty = true;\n\t }\n\n\t } else {\n\t that._modelCanceled(model);\n\n\t items.splice(idx, 1);\n\n\t that._removeModelFromRanges(model);\n\t }\n\t }\n\t });\n\t },\n\n\t _modelCanceled: noop,\n\n\t _submit: function(promises, data) {\n\t var that = this;\n\n\t that.trigger(REQUESTSTART, { type: \"submit\" });\n\n\t that.trigger(PROGRESS);\n\n\t that.transport.submit(extend({\n\t success: function(response, type) {\n\t var promise = $.grep(promises, function(x) {\n\t return x.type == type;\n\t })[0];\n\n\t if (promise) {\n\t promise.resolve({\n\t response: response,\n\t models: promise.models,\n\t type: type\n\t });\n\t }\n\t },\n\t error: function(response, status, error) {\n\t for (var idx = 0; idx < promises.length; idx++) {\n\t promises[idx].reject(response);\n\t }\n\n\t that.error(response, status, error);\n\t }\n\t }, data));\n\t },\n\n\t _sendSubmit: function(created, updated, destroyed) {\n\t var that = this,\n\t promises = [];\n\n\t if (that.options.batch) {\n\t if (created.length) {\n\t promises.push($.Deferred(function(deferred) {\n\t deferred.type = \"create\";\n\t deferred.models = created;\n\t }));\n\t }\n\n\t if (updated.length) {\n\t promises.push($.Deferred(function(deferred) {\n\t deferred.type = \"update\";\n\t deferred.models = updated;\n\t }));\n\t }\n\n\t if (destroyed.length) {\n\t promises.push($.Deferred(function(deferred) {\n\t deferred.type = \"destroy\";\n\t deferred.models = destroyed;\n\t }));\n\t }\n\n\t that._submit(promises, {\n\t data: {\n\t created: that.reader.serialize(toJSON(created)),\n\t updated: that.reader.serialize(toJSON(updated)),\n\t destroyed: that.reader.serialize(toJSON(destroyed))\n\t }\n\t });\n\t }\n\n\t return promises;\n\t },\n\n\t _promise: function(data, models, type) {\n\t var that = this;\n\n\t return $.Deferred(function(deferred) {\n\t that.trigger(REQUESTSTART, { type: type });\n\n\t that.trigger(PROGRESS);\n\n\t that.transport[type].call(that.transport, extend({\n\t success: function(response) {\n\t deferred.resolve({\n\t response: response,\n\t models: models,\n\t type: type\n\t });\n\t },\n\t error: function(response, status, error) {\n\t deferred.reject(response);\n\t that.error(response, status, error);\n\t }\n\t }, data));\n\t }).promise();\n\t },\n\n\t _send: function(method, data) {\n\t var that = this,\n\t idx,\n\t length,\n\t promises = [],\n\t converted = that.reader.serialize(toJSON(data));\n\n\t if (that.options.batch) {\n\t if (data.length) {\n\t promises.push(that._promise( { data: { models: converted } }, data , method));\n\t }\n\t } else {\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n\t }\n\t }\n\n\t return promises;\n\t },\n\n\t read: function(data) {\n\t var that = this, params = that._params(data);\n\t var deferred = $.Deferred();\n\n\t that._queueRequest(params, function() {\n\t var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n\t if (!isPrevented) {\n\t that.trigger(PROGRESS);\n\n\t that._ranges = [];\n\t that.trigger(\"reset\");\n\t if (that.online()) {\n\t that.transport.read({\n\t data: params,\n\t success: function(data) {\n\t that._ranges = [];\n\t that.success(data, params);\n\n\t deferred.resolve();\n\t },\n\t error: function() {\n\t var args = slice.call(arguments);\n\n\t that.error.apply(that, args);\n\n\t deferred.reject.apply(deferred, args);\n\t }\n\t });\n\t } else if (that.options.offlineStorage != null){\n\t that.success(that.offlineData(), params);\n\n\t deferred.resolve();\n\t }\n\t } else {\n\t that._dequeueRequest();\n\n\t deferred.resolve(isPrevented);\n\t }\n\t });\n\n\t return deferred.promise();\n\t },\n\n\t _readAggregates: function(data) {\n\t return this.reader.aggregates(data);\n\t },\n\n\t success: function(data) {\n\t var that = this,\n\t options = that.options,\n\t items,\n\t replaceSubset;\n\n\t that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n\t if (that.online()) {\n\t data = that.reader.parse(data);\n\n\t if (that._handleCustomErrors(data)) {\n\t that._dequeueRequest();\n\t return;\n\t }\n\n\t that._total = that.reader.total(data);\n\t if (that._pageSize > that._total) {\n\t that._pageSize = that._total;\n\t if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n\t that._pageSize = that.options.pageSize;\n\t }\n\t }\n\n\t if (that._aggregate && options.serverAggregates) {\n\t that._aggregateResult = that._readAggregates(data);\n\t }\n\n\t data = that._readData(data);\n\n\t that._destroyed = [];\n\t } else {\n\t data = that._readData(data);\n\n\t items = [];\n\t var itemIds = {};\n\t var model = that.reader.model;\n\t var idField = model ? model.idField : \"id\";\n\t var idx;\n\n\t for (idx = 0; idx < this._destroyed.length; idx++) {\n\t var id = this._destroyed[idx][idField];\n\t itemIds[id] = id;\n\t }\n\n\t for (idx = 0; idx < data.length; idx++) {\n\t var item = data[idx];\n\t var state = item.__state__;\n\t if (state == \"destroy\") {\n\t if (!itemIds[item[idField]]) {\n\t this._destroyed.push(this._createNewModel(item));\n\t }\n\t } else {\n\t items.push(item);\n\t }\n\t }\n\n\t data = items;\n\n\t that._total = data.length;\n\t }\n\n\t that._pristineTotal = that._total;\n\t replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n\t if (that.options.endless) {\n\t if (replaceSubset) {\n\t that._pristineData.splice(that._skip, that._pristineData.length);\n\t }\n\t items = data.slice(0);\n\t for (var j = 0; j < items.length; j++) {\n\t that._pristineData.push(items[j]);\n\t }\n\t } else {\n\t that._pristineData = data.slice(0);\n\t }\n\n\t that._detachObservableParents();\n\n\t if (that.options.endless) {\n\t that._data.unbind(CHANGE, that._changeHandler);\n\n\t if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n\t fillLastGroup(that._data[that._data.length - 1], data[0]);\n\t data.shift();\n\t }\n\n\t data = that._observe(data);\n\t if (replaceSubset) {\n\t that._data.splice(that._skip, that._data.length);\n\t }\n\t for (var i = 0; i < data.length; i++) {\n\t that._data.push(data[i]);\n\t }\n\t that._data.bind(CHANGE, that._changeHandler);\n\t } else {\n\t that._data = that._observe(data);\n\t }\n\n\t that._markOfflineUpdatesAsDirty();\n\n\t that._storeData();\n\n\t that._addRange(that._data);\n\n\t that._process(that._data);\n\n\t that._dequeueRequest();\n\t },\n\n\t _detachObservableParents: function() {\n\t if (this._data && this._shouldDetachObservableParents) {\n\t for (var idx = 0; idx < this._data.length; idx++) {\n\t if (this._data[idx].parent) {\n\t this._data[idx].parent = noop;\n\t }\n\t }\n\t }\n\t },\n\n\t _storeData: function(updatePristine) {\n\t var serverGrouping = this._isServerGrouped();\n\t var model = this.reader.model;\n\n\t function items(data) {\n\t var state = [];\n\n\t for (var idx = 0; idx < data.length; idx++) {\n\t var dataItem = data.at(idx);\n\t var item = dataItem.toJSON();\n\n\t if (serverGrouping && dataItem.items) {\n\t item.items = items(dataItem.items);\n\t } else {\n\t item.uid = dataItem.uid;\n\n\t if (model) {\n\t if (dataItem.isNew()) {\n\t item.__state__ = \"create\";\n\t } else if (dataItem.dirty) {\n\t item.__state__ = \"update\";\n\t }\n\t }\n\t }\n\t state.push(item);\n\t }\n\n\t return state;\n\t }\n\n\t if (this.options.offlineStorage != null) {\n\t var state = items(this._data);\n\n\t var destroyed = [];\n\n\t for (var idx = 0; idx < this._destroyed.length; idx++) {\n\t var item = this._destroyed[idx].toJSON();\n\t item.__state__ = \"destroy\";\n\t destroyed.push(item);\n\t }\n\n\t this.offlineData(state.concat(destroyed));\n\n\t if (updatePristine) {\n\t this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n\t }\n\t }\n\t },\n\n\t _addRange: function(data, skip) {\n\t var that = this,\n\t start = typeof(skip) !== \"undefined\" ? skip : (that._skip || 0),\n\t end = start + that._flatData(data, true).length;\n\n\t that._ranges.push({\n\t start: start,\n\t end: end,\n\t data: data,\n\t pristineData: data.toJSON(),\n\t timestamp: that._timeStamp()\n\t });\n\n\t that._sortRanges();\n\t },\n\n\t _sortRanges: function() {\n\t this._ranges.sort(function(x, y) {\n\t return x.start - y.start;\n\t });\n\t },\n\n\t error: function(xhr, status, errorThrown) {\n\t this._dequeueRequest();\n\t this.trigger(REQUESTEND, { });\n\t this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n\t },\n\n\t _params: function(data) {\n\t var that = this,\n\t options = extend({\n\t take: that.take(),\n\t skip: that.skip(),\n\t page: that.page(),\n\t pageSize: that.pageSize(),\n\t sort: that._sort,\n\t filter: that._filter,\n\t group: that._group,\n\t aggregate: that._aggregate\n\t }, data);\n\n\t if (!that.options.serverPaging) {\n\t delete options.take;\n\t delete options.skip;\n\t delete options.page;\n\t delete options.pageSize;\n\t }\n\n\t if (!that.options.serverGrouping) {\n\t delete options.group;\n\t } else if (that.reader.model && options.group) {\n\t options.group = convertDescriptorsField(options.group, that.reader.model);\n\t }\n\n\t if (!that.options.serverFiltering) {\n\t delete options.filter;\n\t } else if (that.reader.model && options.filter) {\n\t options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n\t }\n\n\t if (!that.options.serverSorting) {\n\t delete options.sort;\n\t } else if (that.reader.model && options.sort) {\n\t options.sort = convertDescriptorsField(options.sort, that.reader.model);\n\t }\n\n\t if (!that.options.serverAggregates) {\n\t delete options.aggregate;\n\t } else if (that.reader.model && options.aggregate) {\n\t options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n\t }\n\n\t return options;\n\t },\n\n\t _queueRequest: function(options, callback) {\n\t var that = this;\n\t if (!that._requestInProgress) {\n\t that._requestInProgress = true;\n\t that._pending = undefined;\n\t callback();\n\t } else {\n\t that._pending = { callback: proxy(callback, that), options: options };\n\t }\n\t },\n\n\t _dequeueRequest: function() {\n\t var that = this;\n\t that._requestInProgress = false;\n\t if (that._pending) {\n\t that._queueRequest(that._pending.options, that._pending.callback);\n\t }\n\t },\n\n\t _handleCustomErrors: function(response) {\n\t if (this.reader.errors) {\n\t var errors = this.reader.errors(response);\n\t if (errors) {\n\t this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n\t return true;\n\t }\n\t }\n\t return false;\n\t },\n\n\t _shouldWrap: function(data) {\n\t var model = this.reader.model;\n\n\t if (model && data.length) {\n\t return !(data[0] instanceof model);\n\t }\n\n\t return false;\n\t },\n\n\t _observe: function(data) {\n\t var that = this,\n\t model = that.reader.model;\n\n\t that._shouldDetachObservableParents = true;\n\n\t if (data instanceof ObservableArray) {\n\t that._shouldDetachObservableParents = false;\n\t if (that._shouldWrap(data)) {\n\t data.type = that.reader.model;\n\t data.wrapAll(data, data);\n\t }\n\t } else {\n\t var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n\t data = new arrayType(data, that.reader.model);\n\t data.parent = function() { return that.parent(); };\n\t }\n\n\t if (that._isServerGrouped()) {\n\t wrapGroupItems(data, model);\n\t }\n\n\t if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n\t !(that.options.useRanges && that.options.serverPaging)) {\n\t that._data.unbind(CHANGE, that._changeHandler);\n\t } else {\n\t that._changeHandler = proxy(that._change, that);\n\t }\n\n\t return data.bind(CHANGE, that._changeHandler);\n\t },\n\n\t _updateTotalForAction: function(action, items) {\n\t var that = this;\n\n\t var total = parseInt(that._total, 10);\n\n\t if (!isNumber(that._total)) {\n\t total = parseInt(that._pristineTotal, 10);\n\t }\n\t if (action === \"add\") {\n\t total += items.length;\n\t } else if (action === \"remove\") {\n\t total -= items.length;\n\t } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n\t total = that._pristineTotal;\n\t } else if (action === \"sync\") {\n\t total = that._pristineTotal = parseInt(that._total, 10);\n\t }\n\n\t that._total = total;\n\t },\n\n\t _change: function(e) {\n\t var that = this, idx, length, action = e ? e.action : \"\";\n\n\t if (action === \"remove\") {\n\t for (idx = 0, length = e.items.length; idx < length; idx++) {\n\t if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n\t that._destroyed.push(e.items[idx]);\n\t }\n\t }\n\t }\n\n\t if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n\n\t var handler = function(args) {\n\t if (args.action === \"sync\") {\n\t that.unbind(\"change\", handler);\n\t that._updateTotalForAction(action, e.items);\n\t }\n\t };\n\n\t that.first(\"change\", handler);\n\n\t that.sync();\n\n\t } else {\n\t that._updateTotalForAction(action, e ? e.items : []);\n\n\t that._process(that._data, e);\n\t }\n\t },\n\n\t _calculateAggregates: function (data, options) {\n\t options = options || {};\n\n\t var query = new Query(data),\n\t aggregates = options.aggregate,\n\t filter = options.filter;\n\n\t if (filter) {\n\t query = query.filter(filter);\n\t }\n\n\t return query.aggregate(aggregates);\n\t },\n\n\t _process: function (data, e) {\n\t var that = this,\n\t options = {},\n\t result;\n\n\t if (that.options.serverPaging !== true) {\n\t options.skip = that._skip;\n\t options.take = that._take || that._pageSize;\n\n\t if(options.skip === undefined && that._page !== undefined && that._pageSize !== undefined) {\n\t options.skip = (that._page - 1) * that._pageSize;\n\t }\n\n\t if (that.options.useRanges) {\n\t options.skip = that.currentRangeStart();\n\t }\n\t }\n\n\t if (that.options.serverSorting !== true) {\n\t options.sort = that._sort;\n\t }\n\n\t if (that.options.serverFiltering !== true) {\n\t options.filter = that._filter;\n\t }\n\n\t if (that.options.serverGrouping !== true) {\n\t options.group = that._group;\n\t }\n\n\t if (that.options.serverAggregates !== true) {\n\t options.aggregate = that._aggregate;\n\t }\n\n\t if (that.options.serverGrouping) {\n\t that._clearEmptyGroups(data);\n\t }\n\n\t result = that._queryProcess(data, options);\n\n\t if (that.options.serverAggregates !== true) {\n\t // for performance reasons, calculate aggregates for part of the data only after query process\n\t // this is necessary in the TreeList when paging\n\t that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n\t }\n\n\t that.view(result.data);\n\n\t that._setFilterTotal(result.total, false);\n\n\t e = e || {};\n\n\t e.items = e.items || that._view;\n\n\t that.trigger(CHANGE, e);\n\t },\n\n\t _clearEmptyGroups: function(data) {\n\t for (var idx = data.length - 1; idx >=0; idx--) {\n\t var group = data[idx];\n\t if (group.hasSubgroups) {\n\t this._clearEmptyGroups(group.items);\n\t } else {\n\t if (group.items && !group.items.length) {\n\t splice.apply(group.parent(), [idx, 1]);\n\t }\n\t }\n\t }\n\t },\n\n\t _queryProcess: function(data, options) {\n\t if (this.options.inPlaceSort) {\n\t return Query.process(data, options, this.options.inPlaceSort);\n\t }\n\t else {\n\t return Query.process(data, options);\n\t }\n\t },\n\n\t _mergeState: function(options) {\n\t var that = this;\n\n\t if (options !== undefined) {\n\t that._pageSize = options.pageSize;\n\t that._page = options.page;\n\t that._sort = options.sort;\n\t that._filter = options.filter;\n\t that._group = options.group;\n\t that._aggregate = options.aggregate;\n\t that._skip = that._currentRangeStart = options.skip;\n\t that._take = options.take;\n\n\t if(that._skip === undefined) {\n\t that._skip = that._currentRangeStart = that.skip();\n\t options.skip = that.skip();\n\t }\n\n\t if(that._take === undefined && that._pageSize !== undefined) {\n\t that._take = that._pageSize;\n\t options.take = that._take;\n\t }\n\n\t if (options.sort) {\n\t that._sort = options.sort = normalizeSort(options.sort);\n\t that._sortFields = sortFields(options.sort);\n\t }\n\n\t if (options.filter) {\n\t that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering}) : normalizeFilter(options.filter);\n\t }\n\n\t if (options.group) {\n\t that._group = options.group = normalizeGroup(options.group);\n\t }\n\t if (options.aggregate) {\n\t that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n\t }\n\t }\n\t return options;\n\t },\n\n\t query: function(options) {\n\t var result;\n\t var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n\t if (remote || ((this._data === undefined || this._data.length === 0) && !this._destroyed.length)) {\n\t if (this.options.endless) {\n\t var moreItemsCount = options.pageSize - this.pageSize();\n\t if (moreItemsCount > 0) {\n\t moreItemsCount = this.pageSize();\n\t options.page = options.pageSize / moreItemsCount;\n\t options.pageSize = moreItemsCount;\n\t } else {\n\t options.page = 1;\n\t this.options.endless = false;\n\t }\n\t }\n\t return this.read(this._mergeState(options));\n\t }\n\n\t var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n\t if (!isPrevented) {\n\t this.trigger(PROGRESS);\n\n\t result = this._queryProcess(this._data, this._mergeState(options));\n\n\t this._setFilterTotal(result.total, true);\n\n\t this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n\t this.view(result.data);\n\t this.trigger(REQUESTEND, { type: \"read\" });\n\t this.trigger(CHANGE, { items: result.data });\n\t }\n\n\t return $.Deferred().resolve(isPrevented).promise();\n\t },\n\n\t _setFilterTotal: function(filterTotal, setDefaultValue) {\n\t var that = this;\n\n\t if (!that.options.serverFiltering) {\n\t if (filterTotal !== undefined) {\n\t that._total = filterTotal;\n\t } else if (setDefaultValue) {\n\t that._total = that._data.length;\n\t }\n\t }\n\t },\n\n\t fetch: function(callback) {\n\t var that = this;\n\t var fn = function(isPrevented) {\n\t if (isPrevented !== true && isFunction(callback)) {\n\t callback.call(that);\n\t }\n\t };\n\n\t return this._query().done(fn);\n\t },\n\n\t _query: function(options) {\n\t var that = this;\n\n\t return that.query(extend({}, {\n\t page: that.page(),\n\t pageSize: that.pageSize(),\n\t sort: that.sort(),\n\t filter: that.filter(),\n\t group: that.group(),\n\t aggregate: that.aggregate()\n\t }, options));\n\t },\n\n\t next: function(options) {\n\t var that = this,\n\t page = that.page(),\n\t total = that.total();\n\n\t options = options || {};\n\n\t if (!page || (total && page + 1 > that.totalPages())) {\n\t return;\n\t }\n\n\t that._skip = that._currentRangeStart = page * that.take();\n\n\t page += 1;\n\t options.page = page;\n\n\t that._query(options);\n\n\t return page;\n\t },\n\n\t prev: function(options) {\n\t var that = this,\n\t page = that.page();\n\n\t options = options || {};\n\n\t if (!page || page === 1) {\n\t return;\n\t }\n\n\t that._skip = that._currentRangeStart = that._skip - that.take();\n\n\t page -= 1;\n\t options.page = page;\n\n\t that._query(options);\n\n\t return page;\n\t },\n\n\t page: function(val) {\n\t var that = this,\n\t skip;\n\n\t if(val !== undefined) {\n\t val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n\t that._query(that._pageableQueryOptions({ page: val }));\n\t return;\n\t }\n\t skip = that.skip();\n\n\t return skip !== undefined ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined;\n\t },\n\n\t pageSize: function(val) {\n\t var that = this;\n\n\t if (val !== undefined) {\n\t that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n\t return;\n\t }\n\n\t return that.take();\n\t },\n\n\t sort: function(val) {\n\t var that = this;\n\n\t if(val !== undefined) {\n\t that.trigger(\"sort\");\n\t that._query({ sort: val });\n\t return;\n\t }\n\n\t return that._sort;\n\t },\n\n\t filter: function(val) {\n\t var that = this;\n\n\t if (val === undefined) {\n\t return that._filter;\n\t }\n\n\t that.trigger(\"reset\");\n\t that._query({ filter: val, page: 1 });\n\t },\n\n\t group: function(val) {\n\t var that = this;\n\n\t if(val !== undefined) {\n\t that._query({ group: val });\n\t return;\n\t }\n\n\t return that._group;\n\t },\n\n\t total: function() {\n\t return parseInt(this._total || 0, 10);\n\t },\n\n\t aggregate: function(val) {\n\t var that = this;\n\n\t if(val !== undefined) {\n\t that._query({ aggregate: val });\n\t return;\n\t }\n\n\t return that._aggregate;\n\t },\n\n\t aggregates: function() {\n\t var result = this._aggregateResult;\n\n\t if (isEmptyObject(result)) {\n\t result = this._emptyAggregates(this.aggregate());\n\t }\n\n\t return result;\n\t },\n\n\t _emptyAggregates: function(aggregates) {\n\t var result = {};\n\n\t if (!isEmptyObject(aggregates)) {\n\t var aggregate = {};\n\n\t if (!isArray(aggregates)){\n\t aggregates = [aggregates];\n\t }\n\n\t for (var idx = 0; idx = length; idx--) {\n\t group = groups[idx];\n\t parent = {\n\t value: model.get ? model.get(group.field) : model[group.field],\n\t field: group.field,\n\t items: parent ? [parent] : [model],\n\t hasSubgroups: !!parent,\n\t aggregates: this._emptyAggregates(group.aggregates)\n\t };\n\t }\n\n\t return parent;\n\t },\n\n\t totalPages: function() {\n\t var that = this,\n\t pageSize = that.pageSize() || that.total();\n\n\t return math.ceil((that.total() || 0) / pageSize);\n\t },\n\n\t inRange: function(skip, take) {\n\t var that = this,\n\t end = math.min(skip + take, that.total());\n\n\t if (!that.options.serverPaging && that._data.length > 0) {\n\t return true;\n\t }\n\n\t return that._findRange(skip, end).length > 0;\n\t },\n\n\t lastRange: function() {\n\t var ranges = this._ranges;\n\t return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n\t },\n\n\t firstItemUid: function() {\n\t var ranges = this._ranges;\n\t return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n\t },\n\n\t enableRequestsInProgress: function() {\n\t this._skipRequestsInProgress = false;\n\t },\n\n\t _timeStamp: function() {\n\t return new Date().getTime();\n\t },\n\n\t range: function(skip, take, callback) {\n\t this._currentRequestTimeStamp = this._timeStamp();\n\t this._skipRequestsInProgress = true;\n\n\t skip = math.min(skip || 0, this.total());\n\t callback = isFunction(callback) ? callback : noop;\n\n\t var that = this,\n\t pageSkip = math.max(math.floor(skip / take), 0) * take,\n\t size = math.min(pageSkip + take, that.total()),\n\t data;\n\n\t data = that._findRange(skip, math.min(skip + take, that.total()));\n\n\t if (data.length || that.total() === 0) {\n\t that._processRangeData(data, skip, take, pageSkip, size);\n\t callback();\n\t return;\n\t }\n\n\t if (take !== undefined) {\n\t if (!that._rangeExists(pageSkip, size)) {\n\t that.prefetch(pageSkip, take, function() {\n\t if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n\t that.prefetch(size, take, function() {\n\t that.range(skip, take, callback );\n\t });\n\t } else {\n\t that.range(skip, take, callback);\n\t }\n\t });\n\t } else if (pageSkip < skip) {\n\t that.prefetch(size, take, function() {\n\t that.range(skip, take, callback );\n\t });\n\t }\n\t }\n\t },\n\n\t _findRange: function(start, end) {\n\t var that = this,\n\t ranges = that._ranges,\n\t range,\n\t data = [],\n\t skipIdx,\n\t takeIdx,\n\t startIndex,\n\t endIndex,\n\t rangeData,\n\t rangeEnd,\n\t processed,\n\t options = that.options,\n\t remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n\t flatData,\n\t count,\n\t length;\n\n\t for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n\t range = ranges[skipIdx];\n\t if (start >= range.start && start <= range.end) {\n\t count = 0;\n\n\t for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n\t range = ranges[takeIdx];\n\t flatData = that._flatData(range.data, true);\n\n\t if (flatData.length && start + count >= range.start) {\n\t rangeData = range.data;\n\t rangeEnd = range.end;\n\n\t if (!remote) {\n\t if (options.inPlaceSort) {\n\t processed = that._queryProcess(range.data, { filter: that.filter() });\n\t } else {\n\t var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n\t processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n\t }\n\t flatData = rangeData = processed.data;\n\n\t if (processed.total !== undefined) {\n\t rangeEnd = processed.total;\n\t }\n\t }\n\n\t startIndex = 0;\n\t if (start + count > range.start) {\n\t startIndex = (start + count) - range.start;\n\t }\n\t endIndex = flatData.length;\n\t if (rangeEnd > end) {\n\t endIndex = endIndex - (rangeEnd - end);\n\t }\n\t count += endIndex - startIndex;\n\t data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n\t if (end <= range.end && count == end - start) {\n\t return data;\n\t }\n\t }\n\t }\n\t break;\n\t }\n\t }\n\t return [];\n\t },\n\n\t _mergeGroups: function(data, range, skip, take) {\n\t if (this._isServerGrouped()) {\n\t var temp = range.toJSON(),\n\t prevGroup;\n\n\t if (data.length) {\n\t prevGroup = data[data.length - 1];\n\t }\n\n\t mergeGroups(prevGroup, temp, skip, take);\n\n\t return data.concat(temp);\n\t }\n\t return data.concat(range.slice(skip, take));\n\t },\n\n\t _processRangeData: function(data, skip, take, pageSkip, size) {\n\t var that = this;\n\n\t that._pending = undefined;\n\n\t that._skip = skip > that.skip() ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n\t that._currentRangeStart = skip;\n\n\t that._take = take;\n\n\t var paging = that.options.serverPaging;\n\t var sorting = that.options.serverSorting;\n\t var filtering = that.options.serverFiltering;\n\t var aggregates = that.options.serverAggregates;\n\t try {\n\t that.options.serverPaging = true;\n\t if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n\t that.options.serverSorting = true;\n\t }\n\t that.options.serverFiltering = true;\n\t that.options.serverPaging = true;\n\t that.options.serverAggregates = true;\n\n\t if (paging) {\n\t that._detachObservableParents();\n\t that._data = data = that._observe(data);\n\t }\n\t that._process(data);\n\t } finally {\n\t that.options.serverPaging = paging;\n\t that.options.serverSorting = sorting;\n\t that.options.serverFiltering = filtering;\n\t that.options.serverAggregates = aggregates;\n\t }\n\t },\n\n\t skip: function() {\n\t var that = this;\n\n\t if (that._skip === undefined) {\n\t return (that._page !== undefined ? (that._page - 1) * (that.take() || 1) : undefined);\n\t }\n\t return that._skip;\n\t },\n\n\t currentRangeStart: function() {\n\t return this._currentRangeStart || 0;\n\t },\n\n\t take: function() {\n\t return this._take || this._pageSize;\n\t },\n\n\t _prefetchSuccessHandler: function (skip, size, callback, force) {\n\t var that = this;\n\t var timestamp = that._timeStamp();\n\n\t return function(data) {\n\t var found = false,\n\t range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n\t idx,\n\t length,\n\t temp;\n\n\t that._dequeueRequest();\n\n\t that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n\t data = that.reader.parse(data);\n\n\t temp = that._readData(data);\n\n\t if (temp.length) {\n\t for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n\t if (that._ranges[idx].start === skip) {\n\t found = true;\n\t range = that._ranges[idx];\n\n\t range.pristineData = temp;\n\t range.data = that._observe(temp);\n\t range.end = range.start + that._flatData(range.data, true).length;\n\t that._sortRanges();\n\n\t break;\n\t }\n\t }\n\n\t if (!found) {\n\t that._addRange(that._observe(temp), skip);\n\t }\n\t }\n\n\t that._total = that.reader.total(data);\n\n\t if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n\t if (callback && temp.length) {\n\t callback();\n\t } else {\n\t that.trigger(CHANGE, {});\n\t }\n\t }\n\t };\n\t },\n\n\t prefetch: function(skip, take, callback) {\n\t var that = this,\n\t size = math.min(skip + take, that.total()),\n\t options = {\n\t take: take,\n\t skip: skip,\n\t page: skip / take + 1,\n\t pageSize: take,\n\t sort: that._sort,\n\t filter: that._filter,\n\t group: that._group,\n\t aggregate: that._aggregate\n\t };\n\n\t if (!that._rangeExists(skip, size)) {\n\t clearTimeout(that._timeout);\n\n\t that._timeout = setTimeout(function() {\n\t that._queueRequest(options, function() {\n\t if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n\t that.transport.read({\n\t data: that._params(options),\n\t success: that._prefetchSuccessHandler(skip, size, callback),\n\t error: function() {\n\t var args = slice.call(arguments);\n\t that.error.apply(that, args);\n\t }\n\t });\n\t } else {\n\t that._dequeueRequest();\n\t }\n\t });\n\t }, 100);\n\t } else if (callback) {\n\t callback();\n\t }\n\t },\n\n\t _multiplePrefetch: function(skip, take, callback) {\n\t var that = this,\n\t size = math.min(skip + take, that.total()),\n\t options = {\n\t take: take,\n\t skip: skip,\n\t page: skip / take + 1,\n\t pageSize: take,\n\t sort: that._sort,\n\t filter: that._filter,\n\t group: that._group,\n\t aggregate: that._aggregate\n\t };\n\n\t if (!that._rangeExists(skip, size)) {\n\t if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n\t that.transport.read({\n\t data: that._params(options),\n\t success: that._prefetchSuccessHandler(skip, size, callback, true)\n\t });\n\t }\n\t } else if (callback) {\n\t callback();\n\t }\n\t },\n\n\t _rangeExists: function(start, end) {\n\t var that = this,\n\t ranges = that._ranges,\n\t idx,\n\t length;\n\n\t for (idx = 0, length = ranges.length; idx < length; idx++) {\n\t if (ranges[idx].start <= start && ranges[idx].end >= end) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t _getCurrentRangeSpan: function() {\n\t var that = this;\n\t var ranges = that._ranges;\n\t var start = that.currentRangeStart();\n\t var end = start + (that.take() || 0);\n\t var rangeSpan = [];\n\t var range;\n\t var idx;\n\t var length = ranges.length;\n\n\t for (idx = 0; idx < length; idx++) {\n\t range = ranges[idx];\n\n\t if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n\t rangeSpan.push(range);\n\t }\n\t }\n\n\t return rangeSpan;\n\t },\n\n\t _removeModelFromRanges: function(model) {\n\t var that = this;\n\t var range;\n\n\t for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n\t range = this._ranges[idx];\n\n\t that._removeModelFromRange(range, model);\n\t }\n\n\t that._updateRangesLength();\n\t },\n\n\t _removeModelFromRange: function(range, model) {\n\t this._eachItem(range.data, function(data) {\n\t for (var idx = 0; idx < data.length; idx++) {\n\t var dataItem = data[idx];\n\n\t if (dataItem.uid && dataItem.uid == model.uid) {\n\t [].splice.call(data, idx, 1);\n\t break;\n\t }\n\t }\n\t });\n\t },\n\n\t _insertModelInRange: function(index, model) {\n\t var that = this;\n\t var ranges = that._ranges || [];\n\t var rangesLength = ranges.length;\n\t var range;\n\t var i;\n\n\t for (i = 0; i < rangesLength; i++) {\n\t range = ranges[i];\n\n\t if (range.start <= index && range.end >= index) {\n\t if (!that._getByUid(model.uid, range.data)) {\n\t if (that._isServerGrouped()) {\n\t range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n\t } else {\n\t range.data.splice(index, 0, model);\n\t }\n\t }\n\n\t break;\n\t }\n\t }\n\n\t that._updateRangesLength();\n\t },\n\n\t _updateRangesLength: function() {\n\t var that = this;\n\t var ranges = that._ranges || [];\n\t var rangesLength = ranges.length;\n\t var mismatchFound = false;\n\t var mismatchLength = 0;\n\t var lengthDifference = 0;\n\t var range;\n\t var i;\n\n\t for (i = 0; i < rangesLength; i++) {\n\t range = ranges[i];\n\t lengthDifference = that._flatData(range.data, true).length - math.abs(range.end - range.start);\n\n\t if (!mismatchFound && lengthDifference !== 0) {\n\t mismatchFound = true;\n\t mismatchLength = lengthDifference;\n\t range.end += mismatchLength;\n\t continue;\n\t }\n\n\t if (mismatchFound) {\n\t range.start += mismatchLength;\n\t range.end += mismatchLength;\n\t }\n\t }\n\t }\n\t });\n\n\t var Transport = {};\n\n\t Transport.create = function(options, data, dataSource) {\n\t var transport,\n\t transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n\t if (transportOptions) {\n\t transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n\t if (options.type === \"jsdo\") {\n\t transportOptions.dataSource = dataSource;\n\t }\n\n\t if (options.type) {\n\t kendo.data.transports = kendo.data.transports || {};\n\t kendo.data.schemas = kendo.data.schemas || {};\n\n\t if (!kendo.data.transports[options.type]) {\n\t kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n\t } else if (!isPlainObject(kendo.data.transports[options.type])) {\n\t transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n\t } else {\n\t transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n\t }\n\n\t options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n\t }\n\n\t if (!transport) {\n\t transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n\t }\n\t } else {\n\t transport = new LocalTransport({ data: options.data || [] });\n\t }\n\t return transport;\n\t };\n\n\t DataSource.create = function(options) {\n\t if (isArray(options) || options instanceof ObservableArray) {\n\t options = { data: options };\n\t }\n\n\t var dataSource = options || {},\n\t data = dataSource.data,\n\t fields = dataSource.fields,\n\t table = dataSource.table,\n\t select = dataSource.select,\n\t idx,\n\t length,\n\t model = {},\n\t field;\n\n\t if (!data && fields && !dataSource.transport) {\n\t if (table) {\n\t data = inferTable(table, fields);\n\t } else if (select) {\n\t data = inferSelect(select, fields);\n\n\t if (dataSource.group === undefined && data[0] && data[0].optgroup !== undefined) {\n\t dataSource.group = \"optgroup\";\n\t }\n\t }\n\t }\n\n\t if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n\t for (idx = 0, length = fields.length; idx < length; idx++) {\n\t field = fields[idx];\n\t if (field.type) {\n\t model[field.field] = field;\n\t }\n\t }\n\n\t if (!isEmptyObject(model)) {\n\t dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n\t }\n\t }\n\n\t dataSource.data = data;\n\n\t select = null;\n\t dataSource.select = null;\n\t table = null;\n\t dataSource.table = null;\n\n\t return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n\t };\n\n\t function inferSelect(select, fields) {\n\t select = $(select)[0];\n\t var options = select.options;\n\t var firstField = fields[0];\n\t var secondField = fields[1];\n\n\t var data = [];\n\t var idx, length;\n\t var optgroup;\n\t var option;\n\t var record;\n\t var value;\n\n\t for (idx = 0, length = options.length; idx < length; idx++) {\n\t record = {};\n\t option = options[idx];\n\t optgroup = option.parentNode;\n\n\t if (optgroup === select) {\n\t optgroup = null;\n\t }\n\n\t if (option.disabled || (optgroup && optgroup.disabled)) {\n\t continue;\n\t }\n\n\t if (optgroup) {\n\t record.optgroup = optgroup.label;\n\t }\n\n\t record[firstField.field] = option.text;\n\n\t value = option.attributes.value;\n\n\t if (value && value.specified) {\n\t value = option.value;\n\t } else {\n\t value = option.text;\n\t }\n\n\t record[secondField.field] = value;\n\n\t data.push(record);\n\t }\n\n\t return data;\n\t }\n\n\t function inferTable(table, fields) {\n\t var tbody = $(table)[0].tBodies[0],\n\t rows = tbody ? tbody.rows : [],\n\t idx,\n\t length,\n\t fieldIndex,\n\t fieldCount = fields.length,\n\t data = [],\n\t cells,\n\t record,\n\t cell,\n\t empty;\n\n\t for (idx = 0, length = rows.length; idx < length; idx++) {\n\t record = {};\n\t empty = true;\n\t cells = rows[idx].cells;\n\n\t for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n\t cell = cells[fieldIndex];\n\t if(cell.nodeName.toLowerCase() !== \"th\") {\n\t empty = false;\n\t record[fields[fieldIndex].field] = cell.innerHTML;\n\t }\n\t }\n\t if(!empty) {\n\t data.push(record);\n\t }\n\t }\n\n\t return data;\n\t }\n\n\t var Node = Model.define({\n\t idField: \"id\",\n\n\t init: function(value) {\n\t var that = this,\n\t hasChildren = that.hasChildren || value && value.hasChildren,\n\t childrenField = \"items\",\n\t childrenOptions = {};\n\n\t kendo.data.Model.fn.init.call(that, value);\n\n\t if (typeof that.children === STRING) {\n\t childrenField = that.children;\n\t }\n\n\t childrenOptions = {\n\t schema: {\n\t data: childrenField,\n\t model: {\n\t hasChildren: hasChildren,\n\t id: that.idField,\n\t fields: that.fields\n\t }\n\t }\n\t };\n\n\t if (typeof that.children !== STRING) {\n\t extend(childrenOptions, that.children);\n\t }\n\n\t childrenOptions.data = value;\n\n\t if (!hasChildren) {\n\t hasChildren = childrenOptions.schema.data;\n\t }\n\n\t if (typeof hasChildren === STRING) {\n\t hasChildren = kendo.getter(hasChildren);\n\t }\n\n\t if (isFunction(hasChildren)) {\n\t var hasChildrenObject = hasChildren.call(that, that);\n\n\t if(hasChildrenObject && hasChildrenObject.length === 0){\n\t that.hasChildren = false;\n\t } else{\n\t that.hasChildren = !!hasChildrenObject;\n\t }\n\t }\n\n\t that._childrenOptions = childrenOptions;\n\n\t if (that.hasChildren) {\n\t that._initChildren();\n\t }\n\n\t that._loaded = !!(value && value._loaded);\n\t },\n\n\t _initChildren: function() {\n\t var that = this;\n\t var children, transport, parameterMap;\n\n\t if (!(that.children instanceof HierarchicalDataSource)) {\n\t children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n\t transport = children.transport;\n\t parameterMap = transport.parameterMap;\n\n\t transport.parameterMap = function(data, type) {\n\t data[that.idField || \"id\"] = that.id;\n\n\t if (parameterMap) {\n\t data = parameterMap(data, type);\n\t }\n\n\t return data;\n\t };\n\n\t children.parent = function(){\n\t return that;\n\t };\n\n\t children.bind(CHANGE, function(e){\n\t e.node = e.node || that;\n\t that.trigger(CHANGE, e);\n\t });\n\n\t children.bind(ERROR, function(e){\n\t var collection = that.parent();\n\n\t if (collection) {\n\t e.node = e.node || that;\n\t collection.trigger(ERROR, e);\n\t }\n\t });\n\n\t that._updateChildrenField();\n\t }\n\t },\n\n\t append: function(model) {\n\t this._initChildren();\n\t this.loaded(true);\n\t this.children.add(model);\n\t },\n\n\t hasChildren: false,\n\n\t level: function() {\n\t var parentNode = this.parentNode(),\n\t level = 0;\n\n\t while (parentNode && parentNode.parentNode) {\n\t level++;\n\t parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n\t }\n\n\t return level;\n\t },\n\n\t _updateChildrenField: function() {\n\t var fieldName = this._childrenOptions.schema.data;\n\n\t this[fieldName || \"items\"] = this.children.data();\n\t },\n\n\t _childrenLoaded: function() {\n\t this._loaded = true;\n\n\t this._updateChildrenField();\n\t },\n\n\t load: function() {\n\t var options = {};\n\t var method = \"_query\";\n\t var children, promise;\n\n\t if (this.hasChildren) {\n\t this._initChildren();\n\n\t children = this.children;\n\n\t options[this.idField || \"id\"] = this.id;\n\n\t if (!this._loaded) {\n\t children._data = undefined;\n\t method = \"read\";\n\t }\n\n\t children.one(CHANGE, proxy(this._childrenLoaded, this));\n\n\t if(this._matchFilter){\n\t options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n\t }\n\n\t promise = children[method](options);\n\t } else {\n\t this.loaded(true);\n\t }\n\n\t return promise || $.Deferred().resolve().promise();\n\t },\n\n\t parentNode: function() {\n\t var array = this.parent();\n\n\t return array.parent();\n\t },\n\n\t loaded: function(value) {\n\t if (value !== undefined) {\n\t this._loaded = value;\n\t } else {\n\t return this._loaded;\n\t }\n\t },\n\n\t shouldSerialize: function(field) {\n\t return Model.fn.shouldSerialize.call(this, field) &&\n\t field !== \"children\" &&\n\t field !== \"_loaded\" &&\n\t field !== \"hasChildren\" &&\n\t field !== \"_childrenOptions\";\n\t }\n\t });\n\n\t function dataMethod(name) {\n\t return function() {\n\t var data = this._data,\n\t result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n\t if (this._data != data) {\n\t this._attachBubbleHandlers();\n\t }\n\n\t return result;\n\t };\n\t }\n\n\t var HierarchicalDataSource = DataSource.extend({\n\t init: function(options) {\n\t var node = Node.define({\n\t children: options\n\t });\n\n\t if(options.filter && !options.serverFiltering){\n\t this._hierarchicalFilter = options.filter;\n\t options.filter = null;\n\t }\n\n\t DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n\t this._attachBubbleHandlers();\n\t },\n\n\t _attachBubbleHandlers: function() {\n\t var that = this;\n\n\t that._data.bind(ERROR, function(e) {\n\t that.trigger(ERROR, e);\n\t });\n\t },\n\n\t read: function(data) {\n\t var result = DataSource.fn.read.call(this, data);\n\n\t if(this._hierarchicalFilter){\n\t if(this._data && this._data.length > 0){\n\t this.filter(this._hierarchicalFilter);\n\t }else{\n\t this.options.filter = this._hierarchicalFilter;\n\t this._filter = normalizeFilter(this.options.filter);\n\t this._hierarchicalFilter = null;\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t remove: function(node){\n\t var parentNode = node.parentNode(),\n\t dataSource = this,\n\t result;\n\n\t if (parentNode && parentNode._initChildren) {\n\t dataSource = parentNode.children;\n\t }\n\n\t result = DataSource.fn.remove.call(dataSource, node);\n\n\t if (parentNode && !dataSource.data().length) {\n\t parentNode.hasChildren = false;\n\t }\n\n\t return result;\n\t },\n\n\t success: dataMethod(\"success\"),\n\n\t data: dataMethod(\"data\"),\n\n\t insert: function(index, model) {\n\t var parentNode = this.parent();\n\n\t if (parentNode && parentNode._initChildren) {\n\t parentNode.hasChildren = true;\n\t parentNode._initChildren();\n\t }\n\n\t return DataSource.fn.insert.call(this, index, model);\n\t },\n\n\t filter: function(val) {\n\t if (val === undefined) {\n\t return this._filter;\n\t }\n\n\t if(!this.options.serverFiltering && this._markHierarchicalQuery(val)){\n\t val = { logic: \"or\", filters: [val, {field:'_matchFilter', operator: 'equals', value: true }]};\n\t }\n\n\t this.trigger(\"reset\");\n\t this._query({ filter: val, page: 1 });\n\t },\n\n\t _markHierarchicalQuery: function(expressions){\n\t var compiled;\n\t var predicate;\n\t var fields;\n\t var operators;\n\t var filter;\n\t var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n\t expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering}) : normalizeFilter(expressions);\n\n\t if (!expressions || expressions.filters.length === 0) {\n\t this._updateHierarchicalFilter(function(){return true;});\n\t return false;\n\t }\n\n\t compiled = Query.filterExpr(expressions);\n\t fields = compiled.fields;\n\t operators = compiled.operators;\n\n\t predicate = filter = new Function(\"d, __f, __o\", \"return \" + compiled.expression);\n\n\t if (fields.length || operators.length) {\n\t filter = function(d) {\n\t return predicate(d, fields, operators);\n\t };\n\t }\n\n\t this._updateHierarchicalFilter(filter);\n\t return true;\n\t },\n\n\t _updateHierarchicalFilter: function(filter){\n\t var current;\n\t var data = this._data;\n\t var result = false;\n\n\t for (var idx = 0; idx < data.length; idx++) {\n\t current = data[idx];\n\n\t if(current.hasChildren){\n\t current._matchFilter = current.children._updateHierarchicalFilter(filter);\n\t if(!current._matchFilter){\n\t current._matchFilter = filter(current);\n\t }\n\t }else{\n\t current._matchFilter = filter(current);\n\t }\n\n\t if(current._matchFilter){\n\t result = true;\n\t }\n\t }\n\t return result;\n\t },\n\n\t _find: function(method, value) {\n\t var idx, length, node, children;\n\t var data = this._data;\n\n\t if (!data) {\n\t return;\n\t }\n\n\t node = DataSource.fn[method].call(this, value);\n\n\t if (node) {\n\t return node;\n\t }\n\n\t data = this._flatData(this._data);\n\n\t for (idx = 0, length = data.length; idx < length; idx++) {\n\t children = data[idx].children;\n\n\t if (!(children instanceof HierarchicalDataSource)) {\n\t continue;\n\t }\n\n\t node = children[method](value);\n\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t },\n\n\t get: function(id) {\n\t return this._find(\"get\", id);\n\t },\n\n\t getByUid: function(uid) {\n\t return this._find(\"getByUid\", uid);\n\t }\n\t });\n\n\t function inferList(list, fields) {\n\t var items = $(list).children(),\n\t idx,\n\t length,\n\t data = [],\n\t record,\n\t textField = fields[0].field,\n\t urlField = fields[1] && fields[1].field,\n\t spriteCssClassField = fields[2] && fields[2].field,\n\t imageUrlField = fields[3] && fields[3].field,\n\t item,\n\t id,\n\t textChild,\n\t className,\n\t children;\n\n\t function elements(collection, tagName) {\n\t return collection.filter(tagName).add(collection.find(tagName));\n\t }\n\n\t for (idx = 0, length = items.length; idx < length; idx++) {\n\t record = { _loaded: true };\n\t item = items.eq(idx);\n\n\t textChild = item[0].firstChild;\n\t children = item.children();\n\t list = children.filter(\"ul\");\n\t children = children.filter(\":not(ul)\");\n\n\t id = item.attr(\"data-id\");\n\n\t if (id) {\n\t record.id = id;\n\t }\n\n\t if (textChild) {\n\t record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n\t }\n\n\t if (urlField) {\n\t record[urlField] = elements(children, \"a\").attr(\"href\");\n\t }\n\n\t if (imageUrlField) {\n\t record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n\t }\n\n\t if (spriteCssClassField) {\n\t className = elements(children, \".k-sprite\").prop(\"className\");\n\t record[spriteCssClassField] = className && $.trim(className.replace(\"k-sprite\", \"\"));\n\t }\n\n\t if (list.length) {\n\t record.items = inferList(list.eq(0), fields);\n\t }\n\n\t if (item.attr(\"data-hasChildren\") == \"true\") {\n\t record.hasChildren = true;\n\t }\n\n\t data.push(record);\n\t }\n\n\t return data;\n\t }\n\n\t HierarchicalDataSource.create = function(options) {\n\t options = options && options.push ? { data: options } : options;\n\n\t var dataSource = options || {},\n\t data = dataSource.data,\n\t fields = dataSource.fields,\n\t list = dataSource.list;\n\n\t if (data && data._dataSource) {\n\t return data._dataSource;\n\t }\n\n\t if (!data && fields && !dataSource.transport) {\n\t if (list) {\n\t data = inferList(list, fields);\n\t }\n\t }\n\n\t dataSource.data = data;\n\n\t return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n\t };\n\n\t var Buffer = kendo.Observable.extend({\n\t init: function(dataSource, viewSize, disablePrefetch) {\n\t kendo.Observable.fn.init.call(this);\n\n\t this._prefetching = false;\n\t this.dataSource = dataSource;\n\t this.prefetch = !disablePrefetch;\n\n\t var buffer = this;\n\n\t dataSource.bind(\"change\", function() {\n\t buffer._change();\n\t });\n\n\t dataSource.bind(\"reset\", function() {\n\t buffer._reset();\n\t });\n\n\t this._syncWithDataSource();\n\n\t this.setViewSize(viewSize);\n\t },\n\n\t setViewSize: function(viewSize) {\n\t this.viewSize = viewSize;\n\t this._recalculate();\n\t },\n\n\t at: function(index) {\n\t var pageSize = this.pageSize,\n\t itemPresent = true;\n\n\t if (index >= this.total()) {\n\t this.trigger(\"endreached\", {index: index });\n\t return null;\n\t }\n\n\t if (!this.useRanges) {\n\t return this.dataSource.view()[index];\n\t }\n\t if (this.useRanges) {\n\t // out of range request\n\t if (index < this.dataOffset || index >= this.skip + pageSize) {\n\t itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n\t }\n\n\t // prefetch\n\t if (index === this.prefetchThreshold) {\n\t this._prefetch();\n\t }\n\n\t // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n\t if (index === this.midPageThreshold) {\n\t this.range(this.nextMidRange, true);\n\t }\n\t // next range jump\n\t else if (index === this.nextPageThreshold) {\n\t this.range(this.nextFullRange);\n\t }\n\t // pull-back\n\t else if (index === this.pullBackThreshold) {\n\t if (this.offset === this.skip) { // from full range to mid range\n\t this.range(this.previousMidRange);\n\t } else { // from mid range to full range\n\t this.range(this.previousFullRange);\n\t }\n\t }\n\n\t if (itemPresent) {\n\t return this.dataSource.at(index - this.dataOffset);\n\t } else {\n\t this.trigger(\"endreached\", { index: index });\n\t return null;\n\t }\n\t }\n\t },\n\n\t indexOf: function(item) {\n\t return this.dataSource.data().indexOf(item) + this.dataOffset;\n\t },\n\n\t total: function() {\n\t return parseInt(this.dataSource.total(), 10);\n\t },\n\n\t next: function() {\n\t var buffer = this,\n\t pageSize = buffer.pageSize,\n\t offset = buffer.skip - buffer.viewSize + pageSize,\n\t pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n\t this.offset = offset;\n\t this.dataSource.prefetch(pageSkip, pageSize, function() {\n\t buffer._goToRange(offset, true);\n\t });\n\t },\n\n\t range: function(offset, nextRange) {\n\t if (this.offset === offset) {\n\t return true;\n\t }\n\n\t var buffer = this,\n\t pageSize = this.pageSize,\n\t pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n\t dataSource = this.dataSource;\n\n\t if (nextRange) {\n\t pageSkip += pageSize;\n\t }\n\n\t if (dataSource.inRange(offset, pageSize)) {\n\t this.offset = offset;\n\t this._recalculate();\n\t this._goToRange(offset);\n\t return true;\n\t } else if (this.prefetch) {\n\t dataSource.prefetch(pageSkip, pageSize, function() {\n\t buffer.offset = offset;\n\t buffer._recalculate();\n\t buffer._goToRange(offset, true);\n\t });\n\t return false;\n\t }\n\n\t return true;\n\t },\n\n\t syncDataSource: function() {\n\t var offset = this.offset;\n\t this.offset = null;\n\t this.range(offset);\n\t },\n\n\t destroy: function() {\n\t this.unbind();\n\t },\n\n\t _prefetch: function() {\n\t var buffer = this,\n\t pageSize = this.pageSize,\n\t prefetchOffset = this.skip + pageSize,\n\t dataSource = this.dataSource;\n\n\t if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n\t this._prefetching = true;\n\t this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n\t dataSource.prefetch(prefetchOffset, pageSize, function() {\n\t buffer._prefetching = false;\n\t buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n\t });\n\t }\n\t },\n\n\t _goToRange: function(offset, expanding) {\n\t if (this.offset !== offset) {\n\t return;\n\t }\n\n\t this.dataOffset = offset;\n\t this._expanding = expanding;\n\t this.dataSource.range(offset, this.pageSize);\n\t this.dataSource.enableRequestsInProgress();\n\t },\n\n\t _reset: function() {\n\t this._syncPending = true;\n\t },\n\n\t _change: function() {\n\t var dataSource = this.dataSource;\n\n\t this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n\t if (this._syncPending) {\n\t this._syncWithDataSource();\n\t this._recalculate();\n\t this._syncPending = false;\n\t this.trigger(\"reset\", { offset: this.offset });\n\t }\n\n\t this.trigger(\"resize\");\n\n\t if (this._expanding) {\n\t this.trigger(\"expand\");\n\t }\n\n\t delete this._expanding;\n\t },\n\n\t _syncWithDataSource: function() {\n\t var dataSource = this.dataSource;\n\n\t this._firstItemUid = dataSource.firstItemUid();\n\t this.dataOffset = this.offset = dataSource.skip() || 0;\n\t this.pageSize = dataSource.pageSize();\n\t this.useRanges = dataSource.options.serverPaging;\n\t },\n\n\t _recalculate: function() {\n\t var pageSize = this.pageSize,\n\t offset = this.offset,\n\t viewSize = this.viewSize,\n\t skip = Math.ceil(offset / pageSize) * pageSize;\n\n\t this.skip = skip;\n\t this.midPageThreshold = skip + pageSize - 1;\n\t this.nextPageThreshold = skip + viewSize - 1;\n\t this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n\t this.pullBackThreshold = this.offset - 1;\n\n\t this.nextMidRange = skip + pageSize - viewSize;\n\t this.nextFullRange = skip;\n\t this.previousMidRange = offset - viewSize;\n\t this.previousFullRange = skip - pageSize;\n\t }\n\t });\n\n\t var BatchBuffer = kendo.Observable.extend({\n\t init: function(dataSource, batchSize) {\n\t var batchBuffer = this;\n\n\t kendo.Observable.fn.init.call(batchBuffer);\n\n\t this.dataSource = dataSource;\n\t this.batchSize = batchSize;\n\t this._total = 0;\n\n\t this.buffer = new Buffer(dataSource, batchSize * 3);\n\n\t this.buffer.bind({\n\t \"endreached\": function (e) {\n\t batchBuffer.trigger(\"endreached\", { index: e.index });\n\t },\n\t \"prefetching\": function (e) {\n\t batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n\t },\n\t \"prefetched\": function (e) {\n\t batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n\t },\n\t \"reset\": function () {\n\t batchBuffer._total = 0;\n\t batchBuffer.trigger(\"reset\");\n\t },\n\t \"resize\": function () {\n\t batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n\t batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n\t }\n\t });\n\t },\n\n\t syncDataSource: function() {\n\t this.buffer.syncDataSource();\n\t },\n\n\t at: function(index) {\n\t var buffer = this.buffer,\n\t skip = index * this.batchSize,\n\t take = this.batchSize,\n\t view = [],\n\t item;\n\n\t if (buffer.offset > skip) {\n\t buffer.at(buffer.offset - 1);\n\t }\n\n\t for (var i = 0; i < take; i++) {\n\t item = buffer.at(skip + i);\n\n\t if (item === null) {\n\t break;\n\t }\n\n\t view.push(item);\n\t }\n\n\t return view;\n\t },\n\n\t total: function() {\n\t return this._total;\n\t },\n\n\t destroy: function() {\n\t this.buffer.destroy();\n\t this.unbind();\n\t }\n\t });\n\n\t extend(true, kendo.data, {\n\t readers: {\n\t json: DataReader\n\t },\n\t Query: Query,\n\t DataSource: DataSource,\n\t HierarchicalDataSource: HierarchicalDataSource,\n\t Node: Node,\n\t ObservableObject: ObservableObject,\n\t ObservableArray: ObservableArray,\n\t LazyObservableArray: LazyObservableArray,\n\t LocalTransport: LocalTransport,\n\t RemoteTransport: RemoteTransport,\n\t Cache: Cache,\n\t DataReader: DataReader,\n\t Model: Model,\n\t Buffer: Buffer,\n\t BatchBuffer: BatchBuffer\n\t });\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1065:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data.odata\");\n\n/***/ }),\n\n/***/ 1066:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data.xml\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1067);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1067:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"data.odata\",\n\t name: \"OData\",\n\t category: \"framework\",\n\t depends: [ \"core\" ],\n\t hidden: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t extend = $.extend,\n\t NEWLINE = \"\\r\\n\",\n\t DOUBLELINE = \"\\r\\n\\r\\n\",\n\t isFunction = kendo.isFunction,\n\t odataFilters = {\n\t eq: \"eq\",\n\t neq: \"ne\",\n\t gt: \"gt\",\n\t gte: \"ge\",\n\t lt: \"lt\",\n\t lte: \"le\",\n\t contains : \"substringof\",\n\t doesnotcontain: \"substringof\",\n\t endswith: \"endswith\",\n\t startswith: \"startswith\",\n\t isnull: \"eq\",\n\t isnotnull: \"ne\",\n\t isnullorempty: \"eq\",\n\t isnotnullorempty: \"ne\",\n\t isempty: \"eq\",\n\t isnotempty: \"ne\"\n\t },\n\t odataFiltersVersionFour = extend({}, odataFilters, {\n\t contains: \"contains\"\n\t }),\n\t mappers = {\n\t pageSize: $.noop,\n\t page: $.noop,\n\t filter: function(params, filter, useVersionFour) {\n\t if (filter) {\n\t filter = toOdataFilter(filter, useVersionFour);\n\t if (filter) {\n\t params.$filter = filter;\n\t }\n\t }\n\t },\n\t sort: function(params, orderby) {\n\t var expr = $.map(orderby, function(value) {\n\t var order = value.field.replace(/\\./g, \"/\");\n\n\t if (value.dir === \"desc\") {\n\t order += \" desc\";\n\t }\n\n\t return order;\n\t }).join(\",\");\n\n\t if (expr) {\n\t params.$orderby = expr;\n\t }\n\t },\n\t skip: function(params, skip) {\n\t if (skip) {\n\t params.$skip = skip;\n\t }\n\t },\n\t take: function(params, take) {\n\t if (take) {\n\t params.$top = take;\n\t }\n\t }\n\t },\n\t defaultDataType = {\n\t read: {\n\t dataType: \"jsonp\"\n\t }\n\t };\n\n\t function toOdataFilter(filter, useOdataFour) {\n\t var result = [],\n\t logic = filter.logic || \"and\",\n\t idx,\n\t length,\n\t field,\n\t type,\n\t format,\n\t operator,\n\t value,\n\t ignoreCase,\n\t filters = filter.filters;\n\n\t for (idx = 0, length = filters.length; idx < length; idx++) {\n\t filter = filters[idx];\n\t field = filter.field;\n\t value = filter.value;\n\t operator = filter.operator;\n\n\t if (filter.filters) {\n\t filter = toOdataFilter(filter, useOdataFour);\n\t } else {\n\t ignoreCase = filter.ignoreCase;\n\t field = field.replace(/\\./g, \"/\");\n\t filter = odataFilters[operator];\n\t if (useOdataFour) {\n\t filter = odataFiltersVersionFour[operator];\n\t }\n\n\t if (operator === \"isnullorempty\") {\n\t filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n\t } else if(operator === \"isnotnullorempty\") {\n\t filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n\t } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n\t filter = kendo.format(\"{0} {1} null\", field, filter);\n\t } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n\t filter = kendo.format(\"{0} {1} ''\", field, filter);\n\t } else if (filter && value !== undefined) {\n\t type = $.type(value);\n\t if (type === \"string\") {\n\t format = \"'{1}'\";\n\t value = value.replace(/'/g, \"''\");\n\n\t if (ignoreCase === true) {\n\t field = \"tolower(\" + field + \")\";\n\t }\n\n\t } else if (type === \"date\") {\n\t if (useOdataFour) {\n\t format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n\t value = kendo.timezone.apply(value, 'Etc/UTC');\n\t } else {\n\t format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n\t }\n\t } else {\n\t format = \"{1}\";\n\t }\n\n\t if (filter.length > 3) {\n\t if (filter !== \"substringof\") {\n\t format = \"{0}({2},\" + format + \")\";\n\t } else {\n\t format = \"{0}(\" + format + \",{2})\";\n\t if (operator === \"doesnotcontain\") {\n\t if (useOdataFour) {\n\t format = \"{0}({2},'{1}') eq -1\";\n\t filter = \"indexof\";\n\t } else {\n\t format += \" eq false\";\n\t }\n\t }\n\t }\n\t } else {\n\t format = \"{2} {0} \" + format;\n\t }\n\n\t filter = kendo.format(format, filter, value, field);\n\t }\n\t }\n\n\t result.push(filter);\n\t }\n\n\t filter = result.join(\" \" + logic + \" \");\n\n\t if (result.length > 1) {\n\t filter = \"(\" + filter + \")\";\n\t }\n\n\t return filter;\n\t }\n\n\t function stripMetadata(obj) {\n\t for (var name in obj) {\n\t if(name.indexOf(\"@odata\") === 0) {\n\t delete obj[name];\n\t }\n\t }\n\t }\n\n\t function hex16() {\n\t return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n\t }\n\n\t function createBoundary(prefix) {\n\t return prefix + hex16() + '-' + hex16() + '-' + hex16();\n\t }\n\n\t function createDelimeter(boundary, close) {\n\t var result = NEWLINE + \"--\" + boundary;\n\n\t if (close) {\n\t result += \"--\";\n\t }\n\n\t return result;\n\t }\n\n\t function createCommand(transport, item, httpVerb, command) {\n\t var transportUrl = transport.options[command].url;\n\t var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n\t if (isFunction(transportUrl)) {\n\t return commandPrefix + transportUrl(item);\n\t } else {\n\t return commandPrefix + transportUrl;\n\t }\n\t }\n\n\t function getOperationHeader(changeset, changeId) {\n\t var header = \"\";\n\n\t header += createDelimeter(changeset, false);\n\t header += NEWLINE + 'Content-Type: application/http';\n\t header += NEWLINE + 'Content-Transfer-Encoding: binary';\n\t header += NEWLINE + 'Content-ID: ' + changeId;\n\n\t return header;\n\t }\n\n\t function getOperationContent(item) {\n\t var content = \"\";\n\n\t content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n\t content += NEWLINE + \"Prefer: return=representation\";\n\t content += DOUBLELINE + kendo.stringify(item);\n\n\t return content;\n\t }\n\n\t function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n\t var requestBody = \"\";\n\n\t for (var i = 0; i < collection.length; i++) {\n\t requestBody += getOperationHeader(changeset, changeId);\n\t requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n\t if (!skipContent) {\n\t requestBody += getOperationContent(collection[i]);\n\t }\n\t requestBody += NEWLINE;\n\t changeId++;\n\t }\n\n\t return requestBody;\n\t }\n\n\t function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n\t var requestBody = \"\";\n\n\t requestBody += getBoundary(boundary, changeset);\n\t requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n\t requestBody += createDelimeter(changeset, true);\n\t requestBody += NEWLINE;\n\n\t return requestBody;\n\t }\n\n\t function getBoundary(boundary,changeset) {\n\t var requestBody = \"\";\n\n\t requestBody += \"--\" + boundary + NEWLINE;\n\t requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n\t return requestBody;\n\t }\n\n\t function createBatchRequest(transport, colections) {\n\t var options = {};\n\t var boundary = createBoundary(\"sf_batch_\");\n\t var requestBody = \"\";\n\t var changeId = 0;\n\t var batchURL = transport.options.batch.url;\n\t var changeset = createBoundary(\"sf_changeset_\");\n\n\t options.type = transport.options.batch.type;\n\t options.url = isFunction(batchURL) ? batchURL() : batchURL;\n\t options.headers = {\n\t \"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n\t };\n\n\t if (colections.updated.length) {\n\t requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n\t changeId += colections.updated.length;\n\t changeset = createBoundary(\"sf_changeset_\");\n\t }\n\n\t if (colections.destroyed.length) {\n\t requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n\t changeId += colections.destroyed.length;\n\t changeset = createBoundary(\"sf_changeset_\");\n\t }\n\n\t if (colections.created.length) {\n\t requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n\t }\n\n\t requestBody += createDelimeter(boundary, true);\n\n\t options.data = requestBody;\n\n\t return options;\n\t }\n\n\t function parseBatchResponse(responseText) {\n\t var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n\t var markerIndex = 0;\n\t var collections = [];\n\t var changeBody;\n\t var status;\n\t var code;\n\t var marker;\n\t var jsonModel;\n\n\t collections.push({ models: [], passed: true });\n\n\t for (var i = 0; i < responseMarkers.length; i++) {\n\t marker = responseMarkers[i];\n\t if (marker.lastIndexOf('--', marker.length - 1)) {\n\t if (i < responseMarkers.length - 1) {\n\t collections.push({ models: [], passed: true });\n\t }\n\t continue;\n\t }\n\n\t if (!markerIndex) {\n\t markerIndex = responseText.indexOf(marker);\n\t } else {\n\t markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n\t }\n\n\t changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n\t status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n\t code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n\t if (code >= 200 && code <= 299) {\n\t jsonModel = changeBody.match(/\\{.*\\}/gm);\n\t if (jsonModel) {\n\t collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n\t }\n\t } else {\n\t collections[collections.length - 1].passed = false;\n\t }\n\n\t }\n\n\t return collections;\n\t }\n\n\t extend(true, kendo.data, {\n\t schemas: {\n\t odata: {\n\t type: \"json\",\n\t data: function(data) {\n\t return data.d.results || [data.d];\n\t },\n\t total: \"d.__count\"\n\t }\n\t },\n\t transports: {\n\t odata: {\n\t read: {\n\t cache: true, // to prevent jQuery from adding cache buster\n\t dataType: \"jsonp\",\n\t jsonp: \"$callback\"\n\t },\n\t update: {\n\t cache: true,\n\t dataType: \"json\",\n\t contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n\t type: \"PUT\" // can be PUT or MERGE\n\t },\n\t create: {\n\t cache: true,\n\t dataType: \"json\",\n\t contentType: \"application/json\",\n\t type: \"POST\" // must be POST to create new entity\n\t },\n\t destroy: {\n\t cache: true,\n\t dataType: \"json\",\n\t type: \"DELETE\"\n\t },\n\t parameterMap: function(options, type, useVersionFour) {\n\t var params,\n\t value,\n\t option,\n\t dataType;\n\n\t options = options || {};\n\t type = type || \"read\";\n\t dataType = (this.options || defaultDataType)[type];\n\t dataType = dataType ? dataType.dataType : \"json\";\n\n\t if (type === \"read\") {\n\t params = {\n\t $inlinecount: \"allpages\"\n\t };\n\n\t if (dataType != \"json\") {\n\t params.$format = \"json\";\n\t }\n\n\t for (option in options) {\n\t if (mappers[option]) {\n\t mappers[option](params, options[option], useVersionFour);\n\t } else {\n\t params[option] = options[option];\n\t }\n\t }\n\t } else {\n\t if (dataType !== \"json\") {\n\t throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n\t }\n\n\t if (type !== \"destroy\") {\n\t for (option in options) {\n\t value = options[option];\n\t if (typeof value === \"number\") {\n\t options[option] = value + \"\";\n\t }\n\t }\n\n\t params = kendo.stringify(options);\n\t }\n\t }\n\n\t return params;\n\t }\n\t }\n\t }\n\t });\n\n\t extend(true, kendo.data, {\n\t schemas: {\n\t \"odata-v4\": {\n\t type: \"json\",\n\t data: function(data) {\n\t if ($.isArray(data)) {\n\t for (var i = 0; i < data.length; i++) {\n\t stripMetadata(data[i]);\n\t }\n\t return data;\n\t } else {\n\t data = $.extend({}, data);\n\t stripMetadata(data);\n\n\t if (data.value) {\n\t return data.value;\n\t }\n\t return [data];\n\t }\n\t },\n\t total: function(data) {\n\t return data[\"@odata.count\"];\n\t }\n\t }\n\t },\n\t transports: {\n\t \"odata-v4\": {\n\t batch: {\n\t type: \"POST\"\n\t },\n\t read: {\n\t cache: true, // to prevent jQuery from adding cache buster\n\t dataType: \"json\"\n\t },\n\t update: {\n\t cache: true,\n\t dataType: \"json\",\n\t contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n\t type: \"PUT\" // can be PUT or MERGE\n\t },\n\t create: {\n\t cache: true,\n\t dataType: \"json\",\n\t contentType: \"application/json;IEEE754Compatible=true\",\n\t type: \"POST\" // must be POST to create new entity\n\t },\n\t destroy: {\n\t cache: true,\n\t dataType: \"json\",\n\t type: \"DELETE\"\n\t },\n\t parameterMap: function(options, type) {\n\t var result = kendo.data.transports.odata.parameterMap(options, type, true);\n\t if (type == \"read\") {\n\t result.$count = true;\n\t delete result.$inlinecount;\n\t }\n\n\t return result;\n\t },\n\t submit: function(e) {\n\t var that = this;\n\t var options = createBatchRequest(that, e.data);\n\t var collections = e.data;\n\n\t if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n\t return;\n\t }\n\n\t $.ajax(extend(true, {}, {\n\t success: function (response) {\n\t var responses = parseBatchResponse(response);\n\t var index = 0;\n\t var current;\n\n\t if (collections.updated.length) {\n\t current = responses[index];\n\t if (current.passed) {\n\t // Pass either the obtained models or an empty array if only status codes are returned.\n\t e.success(current.models.length ? current.models : [], \"update\");\n\t }\n\t index++;\n\t }\n\t if (collections.destroyed.length) {\n\t current = responses[index];\n\t if (current.passed) {\n\t // For delete operations OData returns only status codes.\n\t // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n\t e.success([], \"destroy\");\n\t }\n\t index++;\n\t }\n\t if (collections.created.length) {\n\t current = responses[index];\n\t if (current.passed) {\n\t e.success(current.models, \"create\");\n\t }\n\t }\n\t },\n\t error: function (response, status, error) {\n\t e.error(response, status, error);\n\t }\n\t }, options));\n\t }\n\t }\n\t }\n\t });\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1069);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\r\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t})(function(){\r\n\r\n\tvar __meta__ = { // jshint ignore:line\r\n\t id: \"data.xml\",\r\n\t name: \"XML\",\r\n\t category: \"framework\",\r\n\t depends: [ \"core\" ],\r\n\t hidden: true\r\n\t};\r\n\r\n\t/*jshint eqnull: true, boss: true */\r\n\t(function($, undefined) {\r\n\t var kendo = window.kendo,\r\n\t isArray = $.isArray,\r\n\t isPlainObject = $.isPlainObject,\r\n\t map = $.map,\r\n\t each = $.each,\r\n\t extend = $.extend,\r\n\t getter = kendo.getter,\r\n\t Class = kendo.Class;\r\n\r\n\t var XmlDataReader = Class.extend({\r\n\t init: function(options) {\r\n\t var that = this,\r\n\t total = options.total,\r\n\t model = options.model,\r\n\t parse = options.parse,\r\n\t errors = options.errors,\r\n\t serialize = options.serialize,\r\n\t data = options.data;\r\n\r\n\t if (model) {\r\n\t if (isPlainObject(model)) {\r\n\t var base = options.modelBase || kendo.data.Model;\r\n\r\n\t if (model.fields) {\r\n\t each(model.fields, function(field, value) {\r\n\t if (isPlainObject(value) && value.field) {\r\n\t if (!$.isFunction(value.field)) {\r\n\t value = extend(value, { field: that.getter(value.field) });\r\n\t }\r\n\t } else {\r\n\t value = { field: that.getter(value) };\r\n\t }\r\n\t model.fields[field] = value;\r\n\t });\r\n\t }\r\n\r\n\t var id = model.id;\r\n\t if (id) {\r\n\t var idField = {};\r\n\r\n\t idField[that.xpathToMember(id, true)] = { field : that.getter(id) };\r\n\t model.fields = extend(idField, model.fields);\r\n\t model.id = that.xpathToMember(id);\r\n\t }\r\n\t model = base.define(model);\r\n\t }\r\n\r\n\t that.model = model;\r\n\t }\r\n\r\n\t if (total) {\r\n\t if (typeof total == \"string\") {\r\n\t total = that.getter(total);\r\n\t that.total = function(data) {\r\n\t return parseInt(total(data), 10);\r\n\t };\r\n\t } else if (typeof total == \"function\"){\r\n\t that.total = total;\r\n\t }\r\n\t }\r\n\r\n\t if (errors) {\r\n\t if (typeof errors == \"string\") {\r\n\t errors = that.getter(errors);\r\n\t that.errors = function(data) {\r\n\t return errors(data) || null;\r\n\t };\r\n\t } else if (typeof errors == \"function\"){\r\n\t that.errors = errors;\r\n\t }\r\n\t }\r\n\r\n\t if (data) {\r\n\t if (typeof data == \"string\") {\r\n\t data = that.xpathToMember(data);\r\n\t that.data = function(value) {\r\n\t var result = that.evaluate(value, data),\r\n\t modelInstance;\r\n\r\n\t result = isArray(result) ? result : [result];\r\n\r\n\t if (that.model && model.fields) {\r\n\t modelInstance = new that.model();\r\n\r\n\t return map(result, function(value) {\r\n\t if (value) {\r\n\t var record = {}, field;\r\n\r\n\t for (field in model.fields) {\r\n\t record[field] = modelInstance._parse(field, model.fields[field].field(value));\r\n\t }\r\n\r\n\t return record;\r\n\t }\r\n\t });\r\n\t }\r\n\r\n\t return result;\r\n\t };\r\n\t } else if (typeof data == \"function\") {\r\n\t that.data = data;\r\n\t }\r\n\t }\r\n\r\n\t if (typeof parse == \"function\") {\r\n\t var xmlParse = that.parse;\r\n\r\n\t that.parse = function(data) {\r\n\t var xml = parse.call(that, data);\r\n\t return xmlParse.call(that, xml);\r\n\t };\r\n\t }\r\n\r\n\t if (typeof serialize == \"function\") {\r\n\t that.serialize = serialize;\r\n\t }\r\n\t },\r\n\t total: function(result) {\r\n\t return this.data(result).length;\r\n\t },\r\n\t errors: function(data) {\r\n\t return data ? data.errors : null;\r\n\t },\r\n\t serialize: function(data) {\r\n\t return data;\r\n\t },\r\n\t parseDOM: function(element) {\r\n\t var result = {},\r\n\t parsedNode,\r\n\t node,\r\n\t nodeType,\r\n\t nodeName,\r\n\t member,\r\n\t attribute,\r\n\t attributes = element.attributes,\r\n\t attributeCount = attributes.length,\r\n\t idx;\r\n\r\n\t for (idx = 0; idx < attributeCount; idx++) {\r\n\t attribute = attributes[idx];\r\n\t result[\"@\" + attribute.nodeName] = attribute.nodeValue;\r\n\t }\r\n\r\n\t for (node = element.firstChild; node; node = node.nextSibling) {\r\n\t nodeType = node.nodeType;\r\n\r\n\t if (nodeType === 3 || nodeType === 4) {\r\n\t // text nodes or CDATA are stored as #text field\r\n\t result[\"#text\"] = node.nodeValue;\r\n\t } else if (nodeType === 1) {\r\n\t // elements are stored as fields\r\n\t parsedNode = this.parseDOM(node);\r\n\r\n\t nodeName = node.nodeName;\r\n\r\n\t member = result[nodeName];\r\n\r\n\t if (isArray(member)) {\r\n\t // elements of same nodeName are stored as array\r\n\t member.push(parsedNode);\r\n\t } else if (member !== undefined) {\r\n\t member = [member, parsedNode];\r\n\t } else {\r\n\t member = parsedNode;\r\n\t }\r\n\r\n\t result[nodeName] = member;\r\n\t }\r\n\t }\r\n\t return result;\r\n\t },\r\n\r\n\t evaluate: function(value, expression) {\r\n\t var members = expression.split(\".\"),\r\n\t member,\r\n\t result,\r\n\t length,\r\n\t intermediateResult,\r\n\t idx;\r\n\r\n\t while (member = members.shift()) {\r\n\t value = value[member];\r\n\r\n\t if (isArray(value)) {\r\n\t result = [];\r\n\t expression = members.join(\".\");\r\n\r\n\t for (idx = 0, length = value.length; idx < length; idx++) {\r\n\t intermediateResult = this.evaluate(value[idx], expression);\r\n\r\n\t intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\r\n\r\n\t result.push.apply(result, intermediateResult);\r\n\t }\r\n\r\n\t return result;\r\n\t }\r\n\t }\r\n\r\n\t return value;\r\n\t },\r\n\r\n\t parse: function(xml) {\r\n\t var documentElement,\r\n\t tree,\r\n\t result = {};\r\n\r\n\t documentElement = xml.documentElement || $.parseXML(xml).documentElement;\r\n\r\n\t tree = this.parseDOM(documentElement);\r\n\r\n\t result[documentElement.nodeName] = tree;\r\n\r\n\t return result;\r\n\t },\r\n\r\n\t xpathToMember: function(member, raw) {\r\n\t if (!member) {\r\n\t return \"\";\r\n\t }\r\n\r\n\t member = member.replace(/^\\//, \"\") // remove the first \"/\"\r\n\t .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\r\n\r\n\t if (member.indexOf(\"@\") >= 0) {\r\n\t // replace @attribute with '[\"@attribute\"]'\r\n\t return member.replace(/\\.?(@.*)/, raw? '$1':'[\"$1\"]');\r\n\t }\r\n\r\n\t if (member.indexOf(\"text()\") >= 0) {\r\n\t // replace \".text()\" with '[\"#text\"]'\r\n\t return member.replace(/(\\.?text\\(\\))/, raw? '#text':'[\"#text\"]');\r\n\t }\r\n\r\n\t return member;\r\n\t },\r\n\t getter: function(member) {\r\n\t return getter(this.xpathToMember(member), true);\r\n\t }\r\n\t });\r\n\r\n\t $.extend(true, kendo.data, {\r\n\t XmlDataReader: XmlDataReader,\r\n\t readers: {\r\n\t xml: XmlDataReader\r\n\t }\r\n\t });\r\n\t})(window.kendo.jQuery);\r\n\r\n\treturn window.kendo;\r\n\r\n\t}, __webpack_require__(3));\r\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1132);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1132:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"dateinput\",\n\t name: \"DateInput\",\n\t category: \"web\",\n\t description: \"The DateInput widget allows to edit date by typing.\",\n\t depends: [ \"core\" ]\n\t};\n\n\t(function ($, undefined) {\n\t var global = window;\n\t var kendo = global.kendo;\n\t var caret = kendo.caret;\n\t var ui = kendo.ui;\n\t var Widget = ui.Widget;\n\t var keys = kendo.keys;\n\t var ns = \".kendoDateInput\";\n\t var proxy = $.proxy;\n\t var objectToString = {}.toString;\n\n\t var INPUT_EVENT_NAME = (kendo.support.propertyChangeEvent ? \"propertychange.kendoDateInput input\" : \"input\") + ns;\n\n\t var STATEDISABLED = \"k-state-disabled\";\n\t var STATEDEFAULT = \"k-state-default\";\n\t // var STATEFOCUSED = \"k-state-focused\";\n\t // var STATEHOVER = \"k-state-hover\";\n\t var STATEINVALID = \"k-state-invalid\";\n\n\t var DISABLED = \"disabled\";\n\t var READONLY = \"readonly\";\n\t var CHANGE = \"change\";\n\n\t var knownSymbols = \"dMyHhmftsz\";\n\n\t var DateInput = Widget.extend({\n\t init: function (element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\t element = that.element;\n\n\t options = that.options;\n\t options.format = kendo._extractFormat(options.format || kendo.getCulture(options.culture).calendars.standard.patterns.d);\n\t options.min = kendo.parseDate(element.attr(\"min\")) || kendo.parseDate(options.min);\n\t options.max = kendo.parseDate(element.attr(\"max\")) || kendo.parseDate(options.max);\n\n\t var insidePicker = ((element.parent().attr(\"class\") || \"\").indexOf(\"k-picker-wrap\") >= 0);\n\t if (insidePicker) {\n\t that.wrapper = element.parent();\n\t } else {\n\t that.wrapper = element.wrap(\"\").parent();\n\t that.wrapper.addClass(element[0].className).removeClass('input-validation-error');\n\t that.wrapper[0].style.cssText = element[0].style.cssText;\n\t element.css({\n\t width: \"100%\",\n\t height: element[0].style.height\n\t });\n\t }\n\n\t that._inputWrapper = $(that.wrapper[0]);\n\n\t $(\"\").insertAfter(element);\n\n\t that._form();\n\n\t that.element\n\t .addClass(insidePicker ? \" \" : \"k-textbox\")\n\t .attr(\"autocomplete\", \"off\")\n\t .on(\"focusout\" + ns, function () {\n\t that._change();\n\t });\n\n\t try {\n\t element[0].setAttribute(\"type\", \"text\");\n\t } catch (e) {\n\t element[0].type = \"text\";\n\t }\n\n\t var disabled = element.is(\"[disabled]\") || $(that.element).parents(\"fieldset\").is(':disabled');\n\n\t if (disabled) {\n\t that.enable(false);\n\t } else {\n\t that.readonly(element.is(\"[readonly]\"));\n\t }\n\n\t that.value(that.options.value || element.val());\n\n\t kendo.notify(that);\n\t },\n\n\t options: {\n\t name: \"DateInput\",\n\t culture: \"\",\n\t value: \"\",\n\t format: \"\",\n\t min: new Date(1900, 0, 1),\n\t max: new Date(2099, 11, 31),\n\t messages: {\n\t \"year\": \"year\",\n\t \"month\": \"month\",\n\t \"day\": \"day\",\n\t \"weekday\": \"day of the week\",\n\t \"hour\": \"hours\",\n\t \"minute\": \"minutes\",\n\t \"second\": \"seconds\",\n\t \"dayperiod\": \"AM/PM\"\n\t }\n\t },\n\n\t events: [\n\t CHANGE\n\t ],\n\n\t min: function (value) {\n\t if (value !== undefined) {\n\t this.options.min = value;\n\t } else {\n\t return this.options.min;\n\t }\n\t },\n\n\t max: function (value) {\n\t if (value !== undefined) {\n\t this.options.max = value;\n\t } else {\n\t return this.options.max;\n\t }\n\t },\n\n\t setOptions: function (options) {\n\t var that = this;\n\t Widget.fn.setOptions.call(that, options);\n\t this._unbindInput();\n\t this._bindInput();\n\t this._updateElementValue();\n\t },\n\n\t destroy: function () {\n\t var that = this;\n\t that.element.off(ns);\n\n\t if (that._formElement) {\n\t that._formElement.off(\"reset\", that._resetHandler);\n\t }\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t value: function (value) {\n\t if (value === undefined) {\n\t return this._dateTime.getDateObject();\n\t }\n\n\t if (value === null) {\n\t value = \"\";\n\t }\n\n\t if (objectToString.call(value) !== \"[object Date]\") {\n\t value = kendo.parseDate(value, this.options.format, this.options.culture);\n\t }\n\n\t if (value && !value.getTime()) {\n\t value = null;\n\t }\n\n\t this._dateTime = new customDateTime(value, this.options.format, this.options.culture, this.options.messages);\n\n\t this._updateElementValue();\n\t this._oldValue = value;\n\t },\n\n\t _updateElementValue: function () {\n\t var stringAndFromat = this._dateTime.toPair(this.options.format, this.options.culture, this.options.messages);\n\t this.element.val(stringAndFromat[0]);\n\t this._oldText = stringAndFromat[0];\n\t this._format = stringAndFromat[1];\n\t },\n\n\t readonly: function (readonly) {\n\t this._editable({\n\t readonly: readonly === undefined ? true : readonly,\n\t disable: false\n\t });\n\t },\n\n\t enable: function (enable) {\n\t this._editable({\n\t readonly: false,\n\t disable: !(enable = enable === undefined ? true : enable)\n\t });\n\t },\n\n\t _bindInput: function () {\n\t var that = this;\n\t that.element\n\t .on(\"focusout\" + ns, function () {\n\t that._change();\n\t })\n\t .on(\"paste\" + ns, proxy(that._paste, that))\n\t .on(\"keydown\" + ns, proxy(that._keydown, that))\n\t .on(INPUT_EVENT_NAME, proxy(that._input, that))\n\t .on(\"mouseup\" + ns, proxy(that._mouseUp, that))\n\t .on(\"DOMMouseScroll\" + ns + \" mousewheel\" + ns, proxy(that._scroll, that));\n\t },\n\n\t _unbindInput: function () {\n\t this.element\n\t .off(\"keydown\" + ns)\n\t .off(\"paste\" + ns)\n\t .off(\"focusout\" + ns)\n\t .off(INPUT_EVENT_NAME)\n\t .off(\"mouseup\" + ns)\n\t .off(\"DOMMouseScroll\" + ns + \" mousewheel\" + ns);\n\t },\n\n\t _editable: function (options) {\n\t var that = this;\n\t var element = that.element;\n\t var disable = options.disable;\n\t var readonly = options.readonly;\n\t var wrapper = that.wrapper;\n\n\t that._unbindInput();\n\n\t if (!readonly && !disable) {\n\t wrapper.addClass(STATEDEFAULT)\n\t .removeClass(STATEDISABLED);\n\t if(element && element.length) {\n\t element[0].removeAttribute(DISABLED);\n\t element[0].removeAttribute(READONLY);\n\t }\n\n\t that._bindInput();\n\t } else {\n\t if (disable) {\n\t wrapper.addClass(STATEDISABLED)\n\t .removeClass(STATEDEFAULT);\n\t element.attr(DISABLED, disable);\n\t if(element && element.length) {\n\t element[0].removeAttribute(READONLY);\n\t }\n\t }\n\t if (readonly) {\n\t element.attr(READONLY, readonly);\n\t }\n\t }\n\t },\n\n\t _change: function () {\n\t var that = this;\n\t var oldValue = that._oldValue;\n\t var value = that.value();\n\n\t if (value && that.min() && value < that.min()) {\n\t that.value(that.min());\n\t value = that.value();\n\t }\n\t if (value && that.max() && value > that.max()) {\n\t that.value(that.max());\n\t value = that.value();\n\t }\n\n\t if (oldValue && value && value.getTime() !== oldValue.getTime() ||\n\t oldValue && !value ||\n\t !oldValue && value\n\t ) {\n\t that._oldValue = value;\n\t that.trigger(CHANGE);\n\t that.element.trigger(CHANGE);\n\t }\n\t },\n\n\t _input: function () {\n\t var that = this;\n\t var element = that.element[0];\n\t var blinkInvalid = false;\n\n\t if (kendo._activeElement() !== element) {\n\t return;\n\t }\n\n\t var diff = approximateStringMatching(\n\t this._oldText,\n\t this._format,\n\t this.element[0].value,\n\t caret(this.element[0])[0]);\n\n\t var navigationOnly = (diff.length === 1 && diff[0][1] === \" \");\n\t if (!navigationOnly) {\n\t for (var i = 0; i < diff.length; i++) {\n\t var valid = this._dateTime.parsePart(diff[i][0], diff[i][1]);\n\t blinkInvalid = blinkInvalid || !valid;\n\t }\n\t }\n\t this._updateElementValue();\n\n\t if (diff.length && diff[0][0] !== \" \") {\n\t this._selectSegment(diff[0][0]);\n\n\t //android fix\n\t if (!navigationOnly) {\n\t var difSym = diff[0][0];\n\t setTimeout(function () { that._selectSegment(difSym); });\n\t }\n\t }\n\t if (navigationOnly) {\n\t var newEvent = { keyCode: 39, preventDefault: function () { } };\n\t this._keydown(newEvent);\n\t }\n\t if (blinkInvalid) {\n\t clearTimeout(that._blinkInvalidTimeout);\n\t var stateInvalid = STATEINVALID;\n\t that.wrapper.addClass(STATEINVALID);\n\t that._blinkInvalidTimeout = setTimeout(function () { that.wrapper.removeClass(stateInvalid); }, 100);\n\t }\n\t },\n\n\t _mouseUp: function () {\n\t var selection = caret(this.element[0]);\n\t if (selection[0] === selection[1]) {\n\t this._selectNearestSegment();\n\t }\n\t },\n\n\t _scroll: function (e) {\n\t if (kendo._activeElement() !== this.element[0] || this.element.is(\"[readonly]\")) {\n\t return;\n\t }\n\t e = window.event || e;\n\n\t var newEvent = { keyCode: 37, preventDefault: function () { } };\n\n\t if (e.shiftKey) {\n\t newEvent.keyCode = (e.wheelDelta || -e.detail) > 0 ? 37 : 39;\n\t } else {\n\t newEvent.keyCode = (e.wheelDelta || -e.detail) > 0 ? 38 : 40;\n\t }\n\t this._keydown(newEvent);\n\t e.returnValue = false;\n\t if (e.preventDefault) {\n\t e.preventDefault();\n\t }\n\t if (e.stopPropagation) {\n\t e.stopPropagation();\n\t }\n\t },\n\n\t _form: function () {\n\t var that = this;\n\t var element = that.element;\n\t var formId = element.attr(\"form\");\n\t var form = formId ? $(\"#\" + formId) : element.closest(\"form\");\n\t var initialValue = element[0].value;\n\n\t if (!initialValue && that.options.value) {\n\t initialValue = that.options.value;\n\t }\n\n\t if (form[0]) {\n\t that._resetHandler = function () {\n\t setTimeout(function () {\n\t that.value(initialValue);\n\t });\n\t };\n\n\t that._formElement = form.on(\"reset\", that._resetHandler);\n\t }\n\t },\n\n\t _paste: function (e) {\n\t e.preventDefault();\n\t },\n\n\t _keydown: function (e) {\n\t var key = e.keyCode;\n\t var selection;\n\t if (key == 37 || key == 39) { //left/right\n\t e.preventDefault();\n\t selection = caret(this.element[0]);\n\t if (selection[0] != selection[1]) {\n\t this._selectNearestSegment();\n\t }\n\t var dir = (key == 37) ? -1 : 1;\n\t var index = (dir == -1) ? caret(this.element[0])[0] - 1 : caret(this.element[0])[1] + 1;\n\t while (index >= 0 && index < this._format.length) {\n\t if (knownSymbols.indexOf(this._format[index]) >= 0) {\n\t this._selectSegment(this._format[index]);\n\t break;\n\t }\n\t index += dir;\n\t }\n\t }\n\t if (key == 38 || key == 40) { //up/down\n\t e.preventDefault();\n\t selection = caret(this.element[0]);\n\t var symbol = this._format[selection[0]];\n\t if (knownSymbols.indexOf(symbol) >= 0) {\n\t var interval = 1;\n\t if (symbol == 'm') {\n\t interval = this.options.interval || 1;\n\t }\n\t this._dateTime.modifyPart(symbol, key == 38 ? interval * 1 : interval * -1);\n\t this._updateElementValue();\n\t this._selectSegment(symbol);\n\t this.element.trigger(CHANGE);\n\t }\n\t }\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n\t var keycode = e.keyCode ? e.keyCode : e.which;\n\t if (keycode === 8 || keycode === 46) {\n\t var that = this;\n\t setTimeout(function () {\n\t that._input();\n\t }, 0);\n\t }\n\t }\n\t if (key === keys.ENTER){\n\t this._change();\n\t }\n\t },\n\n\t _selectNearestSegment: function () {\n\t var selection = caret(this.element[0]);\n\t var start = selection[0];\n\t for (var i = start, j = start - 1; i < this._format.length || j >= 0; i++ , j--) {\n\t if (i < this._format.length && knownSymbols.indexOf(this._format[i]) !== -1) {\n\t this._selectSegment(this._format[i]);\n\t return;\n\t }\n\t if (j >= 0 && knownSymbols.indexOf(this._format[j]) !== -1) {\n\t this._selectSegment(this._format[j]);\n\t return;\n\t }\n\t }\n\t },\n\n\t _selectSegment: function (symbol) {\n\t var begin = -1, end = 0;\n\t for (var i = 0; i < this._format.length; i++) {\n\t if (this._format[i] === symbol) {\n\t end = i + 1;\n\t if (begin === -1) {\n\t begin = i;\n\t }\n\t }\n\t }\n\t if (begin < 0) {\n\t begin = 0;\n\t }\n\t caret(this.element, begin, end);\n\t }\n\n\t });\n\n\t ui.plugin(DateInput);\n\n\t var customDateTime = function (initDate, initFormat, initCulture, initMessages) {\n\n\t var value = null;\n\t var year = true, month = true, date = true, hours = true, minutes = true, seconds = true, milliseconds = true;\n\t var typedMonthPart = \"\";\n\t var typedDayPeriodPart = \"\";\n\t var placeholders = {};\n\n\t //TODO: rewrite pad method\n\t var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\t function pad(number, digits, end) {\n\t number = number + \"\";\n\t digits = digits || 2;\n\t end = digits - number.length;\n\n\t if (end) {\n\t return zeros[digits].substring(0, end) + number;\n\t }\n\n\t return number;\n\t }\n\t var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g;\n\t var months = null, calendar = null, days = null, returnsFormat = false;\n\t var matcher = function (match) {\n\t var mins, sign;\n\t var result;\n\n\t switch (match) {\n\t case (\"d\"): result = date ? value.getDate() : placeholders.day; break;\n\t case (\"dd\"): result = date ? pad(value.getDate()) : placeholders.day; break;\n\t case (\"ddd\"): result = date && month && year ? days.namesAbbr[value.getDay()] : placeholders.weekday; break;\n\t case (\"dddd\"): result = date && month && year ? days.names[value.getDay()] : placeholders.weekday; break;\n\n\t case (\"M\"): result = month ? value.getMonth() + 1 : placeholders.month; break;\n\t case (\"MM\"): result = month ? pad(value.getMonth() + 1) : placeholders.month; break;\n\t case (\"MMM\"): result = month ? months.namesAbbr[value.getMonth()] : placeholders.month; break;\n\t case (\"MMMM\"): result = month ? months.names[value.getMonth()] : placeholders.month; break;\n\n\t case (\"yy\"): result = year ? pad(value.getFullYear() % 100) : placeholders.year; break;\n\t case (\"yyyy\"): result = year ? pad(value.getFullYear(), 4) : placeholders.year; break;\n\n\t case (\"h\"): result = hours ? value.getHours() % 12 || 12 : placeholders.hour; break;\n\t case (\"hh\"): result = hours ? pad(value.getHours() % 12 || 12) : placeholders.hour; break;\n\t case (\"H\"): result = hours ? value.getHours() : placeholders.hour; break;\n\t case (\"HH\"): result = hours ? pad(value.getHours()) : placeholders.hour; break;\n\n\t case (\"m\"): result = minutes ? value.getMinutes() : placeholders.minute; break;\n\t case (\"mm\"): result = minutes ? pad(value.getMinutes()) : placeholders.minute; break;\n\t case (\"s\"): result = seconds ? value.getSeconds() : placeholders.second; break;\n\t case (\"ss\"): result = seconds ? pad(value.getSeconds()) : placeholders.second; break;\n\t case (\"f\"): result = milliseconds ? Math.floor(value.getMilliseconds() / 100) : milliseconds; break;\n\t case (\"ff\"):\n\t result = value.getMilliseconds();\n\t if (result > 99) {\n\t result = Math.floor(result / 10);\n\t }\n\t result = milliseconds ? pad(result) : match;\n\t break;\n\t case (\"fff\"): result = milliseconds ? pad(value.getMilliseconds(), 3) : match; break;\n\t case (\"tt\"): result = hours ? (value.getHours() < 12 ? calendar.AM[0] : calendar.PM[0]) : placeholders.dayperiod; break;\n\t case (\"zzz\"):\n\t mins = value.getTimezoneOffset();\n\t sign = mins < 0;\n\t result = Math.abs(mins / 60).toString().split(\".\")[0];\n\t mins = Math.abs(mins) - (result * 60);\n\t result = (sign ? \"+\" : \"-\") + pad(result);\n\t result += \":\" + pad(mins);\n\t break;\n\t case (\"z\"):\n\t case (\"zz\"):\n\t result = value.getTimezoneOffset() / 60;\n\t sign = result < 0;\n\t result = Math.abs(result).toString().split(\".\")[0];\n\t result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n\t break;\n\t }\n\t result = (result !== undefined ? result : match.slice(1, match.length - 1));\n\n\t if (returnsFormat) {\n\t result = \"\" + result;\n\t var formatResult = \"\";\n\t if (match == \"ddd\") { match = \"EEE\"; }\n\t if (match == \"dddd\") { match = \"EEEE\"; }\n\t for (var i = 0; i < result.length; i++) {\n\t formatResult += match[0];\n\t }\n\t return formatResult;\n\t } else {\n\t return result;\n\t }\n\t };\n\n\t function generateMatcher(retFormat) {\n\t returnsFormat = retFormat;\n\t return matcher;\n\t }\n\n\t function setExisting(symbol, val) {\n\t switch (symbol) {\n\t case \"y\": year = val; break;\n\t case \"M\": month = val;\n\t if (!val) {\n\t value.setMonth(0);\n\t typedMonthPart = \"\";\n\t }\n\t break;\n\t case \"d\": date = val; break;\n\t case \"H\":\n\t case \"h\": hours = val;\n\t if (!val) {\n\t typedDayPeriodPart = \"\";\n\t }\n\t break;\n\t case \"m\": minutes = val; break;\n\t case \"s\": seconds = val; break;\n\t default: return;\n\t }\n\t }\n\n\t this.setValue = function (val) {\n\t date = val;\n\t };\n\n\t this.getValue = function () {\n\t return date;\n\t };\n\n\t this.modifyPart = function (symbol, offset) {\n\t var newValue = new Date((value && value.getTime) ? value.getTime() : value);\n\t switch (symbol) {\n\t case \"y\": newValue.setFullYear(newValue.getFullYear() + offset); break;\n\t case \"M\":\n\t var newMonth = newValue.getMonth() + offset;\n\t newValue.setMonth(newMonth);\n\t if (newValue.getMonth() % 12 !== (newMonth + 12) % 12) {\n\t //handle case when new month does not have such date\n\t newValue.setDate(1);\n\t newValue.setMonth(newMonth);\n\t }\n\t break;\n\t case \"d\":\n\t case \"E\": newValue.setDate(newValue.getDate() + offset); break;\n\t case \"H\":\n\t case \"h\": newValue.setHours(newValue.getHours() + offset); break;\n\t case \"m\": newValue.setMinutes(newValue.getMinutes() + offset); break;\n\t case \"s\": newValue.setSeconds(newValue.getSeconds() + offset); break;\n\t case \"t\": newValue.setHours((newValue.getHours() + 12) % 24); break;\n\t default: break;\n\t }\n\t if (newValue.getFullYear() > 0) {\n\t setExisting(symbol, true);\n\t value = newValue;\n\t }\n\t };\n\n\t this.parsePart = function (symbol, currentChar) {\n\t if (!currentChar) {\n\t setExisting(symbol, false);\n\t return true;\n\t }\n\t var newValue = new Date((value && value.getTime) ? value.getTime() : value);\n\t var newHours;\n\t switch (symbol) {\n\t case \"d\":\n\t var newDate = (date ? newValue.getDate() * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newDate)) { return; }\n\t while (newDate > 31) {\n\t newDate = parseInt(newDate.toString().slice(1), 10);\n\t }\n\t if (newDate < 1) {\n\t date = false;\n\t } else {\n\t newValue.setDate(newDate);\n\t if (newValue.getMonth() !== value.getMonth()) {\n\t return;\n\t }\n\t date = true;\n\t }\n\t break;\n\t case \"M\":\n\t var newMonth = (month ? (newValue.getMonth() + 1) * 10 : 0) + parseInt(currentChar, 10);\n\t if (!isNaN(newMonth)) {\n\t while (newMonth > 12) {\n\t newMonth = parseInt(newMonth.toString().slice(1), 10);\n\t }\n\t if (newMonth < 1) {\n\t month = false;\n\t } else {\n\t newValue.setMonth(newMonth - 1);\n\t if (newValue.getMonth() !== newMonth - 1) {\n\t newValue.setDate(1);\n\t newValue.setMonth(newMonth - 1);\n\t }\n\t month = true;\n\t }\n\t }\n\t else {\n\t var monthNames = calendar.months.names;\n\t typedMonthPart += currentChar.toLowerCase();\n\n\t while (typedMonthPart.length > 0) {\n\t for (var i = 0; i < monthNames.length; i++) {\n\t if (monthNames[i].toLowerCase().indexOf(typedMonthPart) === 0) {\n\t newValue.setMonth(i);\n\t month = true;\n\t value = newValue;\n\t return true;\n\t }\n\t }\n\t typedMonthPart = typedMonthPart.substring(1, typedMonthPart.length);\n\t }\n\t return false;\n\t }\n\t break;\n\t case \"y\":\n\t var newYear = (year ? (newValue.getFullYear()) * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newYear)) {return;}\n\t while (newYear > 9999) {\n\t newYear = parseInt(newYear.toString().slice(1), 10);\n\t }\n\t if (newYear < 1) {\n\t year = false;\n\t } else {\n\t newValue.setFullYear(newYear);\n\t year = true;\n\t }\n\t break;\n\t case \"h\":\n\t newHours = (hours ? (newValue.getHours() % 12 || 12) * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newHours)) { return; }\n\t while (newHours > 12) {\n\t newHours = parseInt(newHours.toString().slice(1), 10);\n\t }\n\t newValue.setHours(Math.floor(newValue.getHours() / 12) * 12 + newHours % 12);\n\t hours = true;\n\t break;\n\t case \"H\":\n\t newHours = (hours ? (newValue.getHours()) * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newHours)) { return; }\n\t while (newHours > 23) {\n\t newHours = parseInt(newHours.toString().slice(1), 10);\n\t }\n\t newValue.setHours(newHours);\n\t hours = true;\n\t break;\n\t case \"m\":\n\t var newMinutes = (minutes ? (newValue.getMinutes()) * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newMinutes)) { return; }\n\t while (newMinutes > 59) {\n\t newMinutes = parseInt(newMinutes.toString().slice(1), 10);\n\t }\n\t newValue.setMinutes(newMinutes);\n\t minutes = true;\n\t break;\n\t case \"s\":\n\t var newSeconds = (seconds ? (newValue.getSeconds()) * 10 : 0) + parseInt(currentChar, 10);\n\t if (isNaN(newSeconds)) { return; }\n\t while (newSeconds > 59) {\n\t newSeconds = parseInt(newSeconds.toString().slice(1), 10);\n\t }\n\t newValue.setSeconds(newSeconds);\n\t seconds = true;\n\t break;\n\t case \"t\":\n\t if (hours) {\n\t typedDayPeriodPart += currentChar.toLowerCase();\n\t while (typedDayPeriodPart.length > 0) {\n\t if (calendar.AM[0].toLowerCase().indexOf(typedDayPeriodPart) === 0 && newValue.getHours() >= 12 ||\n\t calendar.PM[0].toLowerCase().indexOf(typedDayPeriodPart) === 0 && newValue.getHours() < 12) {\n\t newValue.setHours((newValue.getHours() + 12) % 24);\n\t value = newValue;\n\t return true;\n\t }\n\t typedDayPeriodPart = typedDayPeriodPart.substring(1, typedDayPeriodPart.length);\n\t }\n\t return false;\n\t }\n\t break;\n\t default: break;\n\t }\n\t value = newValue;\n\t return true;\n\t };\n\n\t this.toPair = function (format, culture , messages) {\n\t if (!format) {\n\t return [\"\", \"\"];\n\t }\n\t culture = kendo.getCulture(culture);\n\t calendar = culture.calendars.standard;\n\t format = calendar.patterns[format] || format;\n\t days = calendar.days;\n\t months = calendar.months;\n\t placeholders = messages;\n\t return [\n\t format.replace(dateFormatRegExp, generateMatcher(false)),\n\t format.replace(dateFormatRegExp, generateMatcher(true))\n\t ];\n\t };\n\n\t this.getDateObject = function () {\n\t return (year && month && date && hours && minutes && seconds && milliseconds) ?\n\t new Date(value.getTime()) : null;\n\t };\n\n\t if (!initDate) {\n\t value = new Date();\n\t var sampleFormat = this.toPair(initFormat, initCulture, initMessages)[1];\n\t for (var i = 0; i < sampleFormat.length; i++) {\n\t setExisting(sampleFormat[i], false);\n\t }\n\t } else {\n\t value = new Date(initDate.getTime());\n\t }\n\t };\n\n\t function approximateStringMatching(oldText, oldFormat, newText, caret){\n\t var oldTextSeparator = oldText[caret + oldText.length - newText.length];\n\t oldText = oldText.substring(0, caret + oldText.length - newText.length);\n\t newText = newText.substring(0, caret);\n\t var diff = [];\n\t var i;\n\t //handle typing single character over the same selection\n\t if (oldText === newText && caret > 0) {\n\t diff.push([oldFormat[caret - 1], newText[caret - 1]]);\n\t return diff;\n\t }\n\t if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n\t //handle delete/backspace\n\t var deletedSymbol = \"\";\n\t for (i = newText.length; i < oldText.length; i++) {\n\t if (oldFormat[i] !== deletedSymbol && knownSymbols.indexOf(oldFormat[i]) >= 0) {\n\t deletedSymbol = oldFormat[i];\n\t diff.push([deletedSymbol, \"\"]);\n\t }\n\t }\n\t return diff;\n\t }\n\n\t //handle entering space or separator, for nagivation to next item\n\t if (newText[newText.length - 1] === \" \" || newText[newText.length - 1] === oldTextSeparator) {\n\t return [[oldFormat[caret - 1], \" \"]];\n\t }\n\n\t //handle inserting text (new text is longer than previous)\n\t //handle typing over literal as well\n\t if (newText.indexOf(oldText) === 0 || knownSymbols.indexOf(oldFormat[caret - 1]) === -1) {\n\t var symbol = oldFormat[0];\n\t for (i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n\t if (knownSymbols.indexOf(oldFormat[i]) >= 0) {\n\t symbol = oldFormat[i];\n\t break;\n\t }\n\t }\n\t return [[symbol, newText[caret - 1]]];\n\t }\n\t //handle typing over correctly selected part\n\t return [[oldFormat[caret - 1], newText[caret - 1]]];\n\t}\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1133);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1054:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.popup\");\n\n/***/ }),\n\n/***/ 1133:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1134), __webpack_require__(1054), __webpack_require__(1135) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"datepicker\",\n\t name: \"DatePicker\",\n\t category: \"web\",\n\t description: \"The DatePicker widget allows the user to select a date from a calendar or by direct input.\",\n\t depends: [ \"calendar\", \"popup\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t parse = kendo.parseDate,\n\t keys = kendo.keys,\n\t support = kendo.support,\n\t template = kendo.template,\n\t activeElement = kendo._activeElement,\n\t DIV = \"
\",\n\t SPAN = \"\",\n\t ns = \".kendoDatePicker\",\n\t CLICK = \"click\" + ns,\n\t UP = support.mouseAndTouchPresent ? kendo.applyEventMap(\"up\", ns.slice(1)) : CLICK,\n\t OPEN = \"open\",\n\t CLOSE = \"close\",\n\t CHANGE = \"change\",\n\t DISABLED = \"disabled\",\n\t READONLY = \"readonly\",\n\t DEFAULT = \"k-state-default\",\n\t FOCUSED = \"k-state-focused\",\n\t SELECTED = \"k-state-selected\",\n\t STATEDISABLED = \"k-state-disabled\",\n\t HOVER = \"k-state-hover\",\n\t HOVEREVENTS = \"mouseenter\" + ns + \" mouseleave\" + ns,\n\t MOUSEDOWN = \"mousedown\" + ns,\n\t ID = \"id\",\n\t MIN = \"min\",\n\t MAX = \"max\",\n\t MONTH = \"month\",\n\t ARIA_DISABLED = \"aria-disabled\",\n\t ARIA_EXPANDED = \"aria-expanded\",\n\t ARIA_HIDDEN = \"aria-hidden\",\n\t calendar = kendo.calendar,\n\t isInRange = calendar.isInRange,\n\t restrictValue = calendar.restrictValue,\n\t isEqualDatePart = calendar.isEqualDatePart,\n\t extend = $.extend,\n\t proxy = $.proxy,\n\t DATE = Date;\n\n\t function normalize(options) {\n\t var parseFormats = options.parseFormats,\n\t format = options.format;\n\n\t calendar.normalize(options);\n\n\n\t parseFormats = $.isArray(parseFormats) ? parseFormats : [parseFormats];\n\n\t if (!parseFormats.length) {\n\t parseFormats.push(\"yyyy-MM-dd\");\n\t }\n\n\t if ($.inArray(format, parseFormats) === -1) {\n\t parseFormats.splice(0, 0, options.format);\n\t }\n\n\t options.parseFormats = parseFormats;\n\t }\n\n\t function preventDefault(e) {\n\t e.preventDefault();\n\t }\n\n\t var DateView = function(options) {\n\t var that = this, id,\n\t body = document.body,\n\t div = $(DIV).attr(ARIA_HIDDEN, \"true\")\n\t .addClass(\"k-calendar-container\")\n\t .appendTo(body);\n\n\t that.options = options = options || {};\n\t id = options.id;\n\n\t if (id) {\n\t id += \"_dateview\";\n\n\t div.attr(ID, id);\n\t that._dateViewID = id;\n\t }\n\n\t that.popup = new ui.Popup(div, extend(options.popup, options, { name: \"Popup\", isRtl: kendo.support.isRtl(options.anchor) }));\n\t that.div = div;\n\n\t that.value(options.value);\n\t };\n\n\t DateView.prototype = {\n\t _calendar: function() {\n\t var that = this;\n\t var calendar = that.calendar;\n\t var options = that.options;\n\t var div;\n\n\t if (!calendar) {\n\t div = $(DIV).attr(ID, kendo.guid())\n\t .appendTo(that.popup.element)\n\t .on(MOUSEDOWN, preventDefault)\n\t .on(CLICK, \"td:has(.k-link)\", proxy(that._click, that));\n\n\t that.calendar = calendar = new ui.Calendar(div);\n\t that._setOptions(options);\n\n\t kendo.calendar.makeUnselectable(calendar.element);\n\n\t calendar.navigate(that._value || that._current, options.start);\n\n\t that.value(that._value);\n\t }\n\t },\n\n\t _setOptions: function(options) {\n\t this.calendar.setOptions({\n\t focusOnNav: false,\n\t change: options.change,\n\t culture: options.culture,\n\t dates: options.dates,\n\t depth: options.depth,\n\t footer: options.footer,\n\t format: options.format,\n\t max: options.max,\n\t min: options.min,\n\t month: options.month,\n\t weekNumber: options.weekNumber,\n\t start: options.start,\n\t disableDates: options.disableDates\n\t });\n\t },\n\n\t setOptions: function(options) {\n\t var old = this.options;\n\t var disableDates = options.disableDates;\n\n\t if (disableDates) {\n\t options.disableDates = calendar.disabled(disableDates);\n\t }\n\n\t this.options = extend(old, options, {\n\t change: old.change,\n\t close: old.close,\n\t open: old.open\n\t });\n\n\t if (this.calendar) {\n\t this._setOptions(this.options);\n\t }\n\t },\n\n\t destroy: function() {\n\t this.popup.destroy();\n\t },\n\n\t open: function() {\n\t var that = this;\n\t var popupHovered;\n\n\t that._calendar();\n\n\t // In some cases when the popup is opened resize is triggered which will cause it to close\n\t // Setting the below flag will prevent this from happening\n\t // Reference: https://github.com/telerik/kendo/pull/7553\n\t popupHovered = that.popup._hovered;\n\t that.popup._hovered = true;\n\n\t that.popup.open();\n\n\t setTimeout(function() {\n\t that.popup._hovered = popupHovered;\n\t }, 1);\n\t },\n\n\t close: function() {\n\t this.popup.close();\n\t },\n\n\t min: function(value) {\n\t this._option(MIN, value);\n\t },\n\n\t max: function(value) {\n\t this._option(MAX, value);\n\t },\n\n\t toggle: function() {\n\t var that = this;\n\n\t that[that.popup.visible() ? CLOSE : OPEN]();\n\t },\n\n\t move: function(e) {\n\t var that = this,\n\t key = e.keyCode,\n\t calendar = that.calendar,\n\t selectIsClicked = e.ctrlKey && key == keys.DOWN || key == keys.ENTER,\n\t handled = false;\n\n\t if (e.altKey) {\n\t if (key == keys.DOWN) {\n\t that.open();\n\t e.preventDefault();\n\t handled = true;\n\t } else if (key == keys.UP) {\n\t that.close();\n\t e.preventDefault();\n\t handled = true;\n\t }\n\n\t } else if (that.popup.visible()) {\n\n\t if (key == keys.ESC || (selectIsClicked && calendar._cell.hasClass(SELECTED))) {\n\t that.close();\n\t e.preventDefault();\n\t return true;\n\t }\n\t //spacebar selects a date in the calendar\n\t if (key != keys.SPACEBAR) {\n\t that._current = calendar._move(e);\n\t }\n\n\t handled = true;\n\t }\n\n\t return handled;\n\t },\n\n\t current: function(date) {\n\t this._current = date;\n\t if (this.calendar) {\n\t this.calendar._focus(date);\n\t }\n\t },\n\n\t value: function(value) {\n\t var that = this,\n\t calendar = that.calendar,\n\t options = that.options,\n\t disabledDate = options.disableDates;\n\n\t if (disabledDate && disabledDate(value)) {\n\t value = null;\n\t }\n\n\t that._value = value;\n\t that._current = new DATE(+restrictValue(value, options.min, options.max));\n\n\t if (calendar) {\n\t calendar.value(value);\n\t }\n\t },\n\n\t _click: function(e) {\n\n\t if (e.currentTarget.className.indexOf(SELECTED) !== -1) {\n\t this.calendar.trigger(\"change\");\n\t this.close();\n\t }\n\t },\n\n\t _option: function(option, value) {\n\t var that = this;\n\t var calendar = that.calendar;\n\n\t that.options[option] = value;\n\n\t if (calendar) {\n\t calendar[option](value);\n\t }\n\t }\n\t };\n\n\t DateView.normalize = normalize;\n\n\t kendo.DateView = DateView;\n\n\t var DatePicker = Widget.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t disabled,\n\t div;\n\n\t Widget.fn.init.call(that, element, options);\n\t element = that.element;\n\t options = that.options;\n\n\t options.disableDates = kendo.calendar.disabled(options.disableDates);\n\n\t options.min = parse(element.attr(\"min\")) || parse(options.min);\n\t options.max = parse(element.attr(\"max\")) || parse(options.max);\n\n\t normalize(options);\n\n\t that._initialOptions = extend({}, options);\n\n\t that._wrapper();\n\n\t that.dateView = new DateView(extend({}, options, {\n\t id: element.attr(ID),\n\t anchor: that.wrapper,\n\t change: function() {\n\t // calendar is the current scope\n\t that._change(this.value());\n\t that.close();\n\t },\n\t close: function(e) {\n\t if (that.trigger(CLOSE)) {\n\t e.preventDefault();\n\t } else {\n\t element.attr(ARIA_EXPANDED, false);\n\t div.attr(ARIA_HIDDEN, true);\n\t }\n\t },\n\t open: function(e) {\n\t var options = that.options,\n\t date;\n\n\t if (that.trigger(OPEN)) {\n\t e.preventDefault();\n\t } else {\n\t if (that.element.val() !== that._oldText) {\n\t date = parse(element.val(), options.parseFormats, options.culture);\n\n\t that.dateView[date ? \"current\" : \"value\"](date);\n\t }\n\n\t element.attr(ARIA_EXPANDED, true);\n\t div.attr(ARIA_HIDDEN, false);\n\n\t that._updateARIA(date);\n\n\t }\n\t }\n\t }));\n\t div = that.dateView.div;\n\n\t that._icon();\n\n\t try {\n\t element[0].setAttribute(\"type\", \"text\");\n\t } catch(e) {\n\t element[0].type = \"text\";\n\t }\n\n\t element\n\t .addClass(\"k-input\")\n\t .attr({\n\t role: \"combobox\",\n\t \"aria-expanded\": false,\n\t \"aria-owns\": that.dateView._dateViewID,\n\t \"autocomplete\": \"off\"\n\t });\n\t that._reset();\n\t that._template();\n\n\t disabled = element.is(\"[disabled]\") || $(that.element).parents(\"fieldset\").is(':disabled');\n\t if (disabled) {\n\t that.enable(false);\n\t } else {\n\t that.readonly(element.is(\"[readonly]\"));\n\t }\n\n\t that._createDateInput(options);\n\n\t that._old = that._update(options.value || that.element.val());\n\t that._oldText = element.val();\n\n\t kendo.notify(that);\n\t },\n\t events: [\n\t OPEN,\n\t CLOSE,\n\t CHANGE],\n\t options: {\n\t name: \"DatePicker\",\n\t value: null,\n\t footer: \"\",\n\t format: \"\",\n\t culture: \"\",\n\t parseFormats: [],\n\t min: new Date(1900, 0, 1),\n\t max: new Date(2099, 11, 31),\n\t start: MONTH,\n\t depth: MONTH,\n\t animation: {},\n\t month: {},\n\t dates: [],\n\t disableDates: null,\n\t ARIATemplate: 'Current focused date is #=kendo.toString(data.current, \"D\")#',\n\t dateInput: false,\n\t weekNumber: false\n\t },\n\n\t setOptions: function(options) {\n\t var that = this;\n\t var value = that._value;\n\n\t Widget.fn.setOptions.call(that, options);\n\n\t options = that.options;\n\n\t options.min = parse(options.min);\n\t options.max = parse(options.max);\n\n\t normalize(options);\n\n\t that.dateView.setOptions(options);\n\t that._createDateInput(options);\n\n\t if (!that._dateInput) {\n\t that.element.val(kendo.toString(value, options.format, options.culture));\n\t }\n\n\t if (value) {\n\t that._updateARIA(value);\n\t }\n\t },\n\n\t _editable: function(options) {\n\t var that = this,\n\t icon = that._dateIcon.off(ns),\n\t element = that.element.off(ns),\n\t wrapper = that._inputWrapper.off(ns),\n\t readonly = options.readonly,\n\t disable = options.disable;\n\n\t if (!readonly && !disable) {\n\t wrapper\n\t .addClass(DEFAULT)\n\t .removeClass(STATEDISABLED)\n\t .on(HOVEREVENTS, that._toggleHover);\n\t if(element && element.length) {\n\t element[0].removeAttribute(DISABLED);\n\t element[0].removeAttribute(READONLY);\n\t }\n\t element.attr(ARIA_DISABLED, false)\n\t .on(\"keydown\" + ns, proxy(that._keydown, that))\n\t .on(\"focusout\" + ns, proxy(that._blur, that))\n\t .on(\"focus\" + ns, function() {\n\t that._inputWrapper.addClass(FOCUSED);\n\t });\n\n\t icon.on(UP, proxy(that._click, that))\n\t .on(MOUSEDOWN, preventDefault);\n\t } else {\n\t wrapper\n\t .addClass(disable ? STATEDISABLED : DEFAULT)\n\t .removeClass(disable ? DEFAULT : STATEDISABLED);\n\n\t element.attr(DISABLED, disable)\n\t .attr(READONLY, readonly)\n\t .attr(ARIA_DISABLED, disable);\n\t }\n\t },\n\n\t readonly: function(readonly) {\n\t this._editable({\n\t readonly: readonly === undefined ? true : readonly,\n\t disable: false\n\t });\n\t if (this._dateInput) {\n\t this._dateInput._editable({\n\t readonly: readonly === undefined ? true : readonly,\n\t disable: false\n\t });\n\t }\n\t },\n\n\t enable: function(enable) {\n\t this._editable({\n\t readonly: false,\n\t disable: !(enable = enable === undefined ? true : enable)\n\t });\n\t if (this._dateInput) {\n\t this._dateInput._editable({\n\t readonly: false,\n\t disable: !(enable = enable === undefined ? true : enable)\n\t });\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Widget.fn.destroy.call(that);\n\n\t that.dateView.destroy();\n\n\t that.element.off(ns);\n\t that._dateIcon.off(ns);\n\t that._inputWrapper.off(ns);\n\n\t if (that._form) {\n\t that._form.off(\"reset\", that._resetHandler);\n\t }\n\t },\n\n\t open: function() {\n\t this.dateView.open();\n\t },\n\n\t close: function() {\n\t this.dateView.close();\n\t },\n\n\t min: function(value) {\n\t return this._option(MIN, value);\n\t },\n\n\t max: function(value) {\n\t return this._option(MAX, value);\n\t },\n\n\t value: function(value) {\n\t var that = this;\n\n\t if (value === undefined) {\n\t return that._value;\n\t }\n\n\t that._old = that._update(value);\n\n\t if (that._old === null) {\n\t that.element.val(\"\");\n\t }\n\n\t that._oldText = that.element.val();\n\t },\n\n\t _toggleHover: function(e) {\n\t $(e.currentTarget).toggleClass(HOVER, e.type === \"mouseenter\");\n\t },\n\n\t _blur: function() {\n\t var that = this,\n\t value = that.element.val();\n\n\t that.close();\n\t if (value !== that._oldText) {\n\t that._change(value);\n\t if (!value) {\n\t that.dateView.current(kendo.calendar.getToday());\n\t }\n\t }\n\n\t that._inputWrapper.removeClass(FOCUSED);\n\t },\n\n\t _click: function(e) {\n\t var that = this;\n\n\t that.dateView.toggle();\n\t that._focusElement(e.type);\n\t },\n\n\t _focusElement: function(eventType) {\n\t var element = this.element;\n\n\t if ((!support.touch || (support.mouseAndTouchPresent && !(eventType || \"\").match(/touch/i))) && element[0] !== activeElement()) {\n\t element.trigger(\"focus\");\n\t }\n\t },\n\n\t _change: function(value) {\n\t var that = this,\n\t oldValue = that.element.val(),\n\t dateChanged;\n\n\t value = that._update(value);\n\t dateChanged = !kendo.calendar.isEqualDate(that._old, value);\n\n\t var valueUpdated = dateChanged && !that._typing;\n\t var textFormatted = oldValue !== that.element.val();\n\n\t if (valueUpdated || textFormatted) {\n\t that.element.trigger(CHANGE);\n\t }\n\n\t if (dateChanged) {\n\t that._old = value;\n\t that._oldText = that.element.val();\n\n\t that.trigger(CHANGE);\n\t }\n\n\t that._typing = false;\n\t },\n\n\t _keydown: function(e) {\n\t var that = this,\n\t dateView = that.dateView,\n\t value = that.element.val(),\n\t handled = false;\n\n\t if (!dateView.popup.visible() && e.keyCode == keys.ENTER && value !== that._oldText) {\n\t that._change(value);\n\t } else {\n\t handled = dateView.move(e);\n\t that._updateARIA(dateView._current);\n\n\t if (!handled) {\n\t that._typing = true;\n\t } else if (that._dateInput && e.stopImmediatePropagation) {\n\t e.stopImmediatePropagation();\n\t }\n\t }\n\t },\n\n\t _icon: function() {\n\t var that = this,\n\t element = that.element,\n\t icon;\n\n\t icon = element.next(\"span.k-select\");\n\n\t if (!icon[0]) {\n\t icon = $('').insertAfter(element);\n\t }\n\n\t that._dateIcon = icon.attr({\n\t \"role\": \"button\",\n\t \"aria-controls\": that.dateView._dateViewID\n\t });\n\t },\n\n\t _option: function(option, value) {\n\t var that = this,\n\t options = that.options;\n\n\t if (value === undefined) {\n\t return options[option];\n\t }\n\n\t value = parse(value, options.parseFormats, options.culture);\n\n\t if (!value) {\n\t return;\n\t }\n\n\t options[option] = new DATE(+value);\n\t that.dateView[option](value);\n\t },\n\n\t _update: function(value) {\n\t var that = this,\n\t options = that.options,\n\t min = options.min,\n\t max = options.max,\n\t current = that._value,\n\t date = parse(value, options.parseFormats, options.culture),\n\t isSameType = (date === null && current === null) || (date instanceof Date && current instanceof Date),\n\t formattedValue;\n\n\t if (options.disableDates(date)) {\n\t date = null;\n\t if (!that._old && !that.element.val()) {\n\t value = null;\n\t }\n\t }\n\n\t if (+date === +current && isSameType) {\n\t formattedValue = kendo.toString(date, options.format, options.culture);\n\n\t if (formattedValue !== value) {\n\t that.element.val(date === null ? value : formattedValue);\n\t }\n\n\t return date;\n\t }\n\n\t if (date !== null && isEqualDatePart(date, min)) {\n\t date = restrictValue(date, min, max);\n\t } else if (!isInRange(date, min, max)) {\n\t date = null;\n\t }\n\n\t that._value = date;\n\t that.dateView.value(date);\n\t if (that._dateInput && date) {\n\t that._dateInput.value(date || value);\n\t } else {\n\t that.element.val(kendo.toString(date || value, options.format, options.culture));\n\t }\n\t that._updateARIA(date);\n\n\t return date;\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element,\n\t wrapper;\n\n\t wrapper = element.parents(\".k-datepicker\");\n\n\t if (!wrapper[0]) {\n\t wrapper = element.wrap(SPAN).parent().addClass(\"k-picker-wrap k-state-default\");\n\t wrapper = wrapper.wrap(SPAN).parent();\n\t }\n\n\t wrapper[0].style.cssText = element[0].style.cssText;\n\t element.css({\n\t width: \"100%\",\n\t height: element[0].style.height\n\t });\n\n\t that.wrapper = wrapper.addClass(\"k-widget k-datepicker\")\n\t .addClass(element[0].className).removeClass('input-validation-error');\n\n\t that._inputWrapper = $(wrapper[0].firstChild);\n\t },\n\n\t _reset: function() {\n\t var that = this,\n\t element = that.element,\n\t formId = element.attr(\"form\"),\n\t options = that.options,\n\t disabledDate = options.disableDates,\n\t parseFormats = options.parseFormats.length ? options.parseFormats : null,\n\t optionsValue = that._initialOptions.value,\n\t form = formId ? $(\"#\" + formId) : element.closest(\"form\"),\n\t initialValue = element[0].defaultValue;\n\n\t if (optionsValue && (disabledDate && disabledDate(optionsValue))) {\n\t optionsValue = null;\n\t }\n\n\t if ((!initialValue || !kendo.parseDate(initialValue, parseFormats, options.culture)) && optionsValue) {\n\t element.attr(\"value\", kendo.toString(optionsValue, options.format, options.culture));\n\t }\n\n\t if (form[0]) {\n\t that._resetHandler = function() {\n\t that.value(optionsValue || element[0].defaultValue);\n\t that.max(that._initialOptions.max);\n\t that.min(that._initialOptions.min);\n\t };\n\n\t that._form = form.on(\"reset\", that._resetHandler);\n\t }\n\t },\n\n\t _template: function() {\n\t this._ariaTemplate = template(this.options.ARIATemplate);\n\t },\n\n\t _createDateInput: function(options) {\n\t if (this._dateInput) {\n\t this._dateInput.destroy();\n\t this._dateInput = null;\n\t }\n\n\t if (options.dateInput ) {\n\t this._dateInput = new ui.DateInput(this.element, {\n\t culture: options.culture,\n\t format: options.format,\n\t min: options.min,\n\t max: options.max\n\t });\n\t }\n\t },\n\n\t _updateARIA: function(date) {\n\t var cell;\n\t var that = this;\n\t var calendar = that.dateView.calendar;\n\t if(that.element && that.element.length) {\n\t that.element[0].removeAttribute(\"aria-activedescendant\");\n\t }\n\t if (calendar) {\n\t cell = calendar._cell;\n\t cell.attr(\"aria-label\", that._ariaTemplate({ current: date || calendar.current() }));\n\n\t that.element.attr(\"aria-activedescendant\", cell.attr(\"id\"));\n\t }\n\t }\n\t });\n\n\t ui.plugin(DatePicker);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1134:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.calendar\");\n\n/***/ }),\n\n/***/ 1135:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.dateinput\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1143);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1056:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.userevents\");\n\n/***/ }),\n\n/***/ 1143:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\r\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018), __webpack_require__(1056) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t})(function(){\r\n\r\n\tvar __meta__ = { // jshint ignore:line\r\n\t id: \"draganddrop\",\r\n\t name: \"Drag & drop\",\r\n\t category: \"framework\",\r\n\t description: \"Drag & drop functionality for any DOM element.\",\r\n\t depends: [ \"core\", \"userevents\" ]\r\n\t};\r\n\r\n\t(function ($, undefined) {\r\n\t var kendo = window.kendo,\r\n\t support = kendo.support,\r\n\t document = window.document,\r\n\t $window = $(window),\r\n\t Class = kendo.Class,\r\n\t Widget = kendo.ui.Widget,\r\n\t Observable = kendo.Observable,\r\n\t UserEvents = kendo.UserEvents,\r\n\t proxy = $.proxy,\r\n\t extend = $.extend,\r\n\t getOffset = kendo.getOffset,\r\n\t draggables = {},\r\n\t dropTargets = {},\r\n\t dropAreas = {},\r\n\t lastDropTarget,\r\n\t elementUnderCursor = kendo.elementUnderCursor,\r\n\t KEYUP = \"keyup\",\r\n\t CHANGE = \"change\",\r\n\r\n\t // Draggable events\r\n\t DRAGSTART = \"dragstart\",\r\n\t HOLD = \"hold\",\r\n\t DRAG = \"drag\",\r\n\t DRAGEND = \"dragend\",\r\n\t DRAGCANCEL = \"dragcancel\",\r\n\t HINTDESTROYED = \"hintDestroyed\",\r\n\r\n\t // DropTarget events\r\n\t DRAGENTER = \"dragenter\",\r\n\t DRAGLEAVE = \"dragleave\",\r\n\t DROP = \"drop\";\r\n\r\n\t function contains(parent, child) {\r\n\t try {\r\n\t return $.contains(parent, child) || parent == child;\r\n\t } catch (e) {\r\n\t return false;\r\n\t }\r\n\t }\r\n\r\n\t function numericCssPropery(element, property) {\r\n\t return parseInt(element.css(property), 10) || 0;\r\n\t }\r\n\r\n\t function within(value, range) {\r\n\t return Math.min(Math.max(value, range.min), range.max);\r\n\t }\r\n\r\n\t function containerBoundaries(container, element) {\r\n\t var offset = getOffset(container),\r\n\t outerWidth = kendo._outerWidth,\r\n\t outerHeight = kendo._outerHeight,\r\n\t minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\r\n\t minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\r\n\t maxX = minX + container.width() - outerWidth(element, true),\r\n\t maxY = minY + container.height() - outerHeight(element, true);\r\n\r\n\t return {\r\n\t x: { min: minX, max: maxX },\r\n\t y: { min: minY, max: maxY }\r\n\t };\r\n\t }\r\n\r\n\t function checkTarget(target, targets, areas) {\r\n\t var theTarget, theFilter, i = 0,\r\n\t targetLen = targets && targets.length,\r\n\t areaLen = areas && areas.length;\r\n\r\n\t while (target && target.parentNode) {\r\n\t for (i = 0; i < targetLen; i ++) {\r\n\t theTarget = targets[i];\r\n\t if (theTarget.element[0] === target) {\r\n\t return { target: theTarget, targetElement: target };\r\n\t }\r\n\t }\r\n\r\n\t for (i = 0; i < areaLen; i ++) {\r\n\t theFilter = areas[i];\r\n\t if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\r\n\t return { target: theFilter, targetElement: target };\r\n\t }\r\n\t }\r\n\r\n\t target = target.parentNode;\r\n\t }\r\n\r\n\t return undefined;\r\n\t }\r\n\r\n\t var TapCapture = Observable.extend({\r\n\t init: function(element, options) {\r\n\t var that = this,\r\n\t domElement = element[0];\r\n\r\n\t that.capture = false;\r\n\r\n\t if (domElement.addEventListener) {\r\n\t $.each(kendo.eventMap.down.split(\" \"), function() {\r\n\t domElement.addEventListener(this, proxy(that._press, that), true);\r\n\t });\r\n\t $.each(kendo.eventMap.up.split(\" \"), function() {\r\n\t domElement.addEventListener(this, proxy(that._release, that), true);\r\n\t });\r\n\t } else {\r\n\t $.each(kendo.eventMap.down.split(\" \"), function() {\r\n\t domElement.attachEvent(this, proxy(that._press, that));\r\n\t });\r\n\t $.each(kendo.eventMap.up.split(\" \"), function() {\r\n\t domElement.attachEvent(this, proxy(that._release, that));\r\n\t });\r\n\t }\r\n\r\n\t Observable.fn.init.call(that);\r\n\r\n\t that.bind([\"press\", \"release\"], options || {});\r\n\t },\r\n\r\n\t captureNext: function() {\r\n\t this.capture = true;\r\n\t },\r\n\r\n\t cancelCapture: function() {\r\n\t this.capture = false;\r\n\t },\r\n\r\n\t _press: function(e) {\r\n\t var that = this;\r\n\t that.trigger(\"press\");\r\n\t if (that.capture) {\r\n\t e.preventDefault();\r\n\t }\r\n\t },\r\n\r\n\t _release: function(e) {\r\n\t var that = this;\r\n\t that.trigger(\"release\");\r\n\r\n\t if (that.capture) {\r\n\t e.preventDefault();\r\n\t that.cancelCapture();\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t var PaneDimension = Observable.extend({\r\n\t init: function(options) {\r\n\t var that = this;\r\n\t Observable.fn.init.call(that);\r\n\r\n\t that.forcedEnabled = false;\r\n\r\n\t $.extend(that, options);\r\n\r\n\t that.scale = 1;\r\n\r\n\t if (that.horizontal) {\r\n\t that.measure = \"offsetWidth\";\r\n\t that.scrollSize = \"scrollWidth\";\r\n\t that.axis = \"x\";\r\n\t } else {\r\n\t that.measure = \"offsetHeight\";\r\n\t that.scrollSize = \"scrollHeight\";\r\n\t that.axis = \"y\";\r\n\t }\r\n\t },\r\n\r\n\t makeVirtual: function() {\r\n\t $.extend(this, {\r\n\t virtual: true,\r\n\t forcedEnabled: true,\r\n\t _virtualMin: 0,\r\n\t _virtualMax: 0\r\n\t });\r\n\t },\r\n\r\n\t virtualSize: function(min, max) {\r\n\t if (this._virtualMin !== min || this._virtualMax !== max) {\r\n\t this._virtualMin = min;\r\n\t this._virtualMax = max;\r\n\t this.update();\r\n\t }\r\n\t },\r\n\r\n\t outOfBounds: function(offset) {\r\n\t return offset > this.max || offset < this.min;\r\n\t },\r\n\r\n\t forceEnabled: function() {\r\n\t this.forcedEnabled = true;\r\n\t },\r\n\r\n\t getSize: function() {\r\n\t return this.container[0][this.measure];\r\n\t },\r\n\r\n\t getTotal: function() {\r\n\t return this.element[0][this.scrollSize];\r\n\t },\r\n\r\n\t rescale: function(scale) {\r\n\t this.scale = scale;\r\n\t },\r\n\r\n\t update: function(silent) {\r\n\t var that = this,\r\n\t total = that.virtual ? that._virtualMax : that.getTotal(),\r\n\t scaledTotal = total * that.scale,\r\n\t size = that.getSize();\r\n\r\n\t if (total === 0 && !that.forcedEnabled) {\r\n\t return; // we are not visible.\r\n\t }\r\n\r\n\t that.max = that.virtual ? -that._virtualMin : 0;\r\n\t that.size = size;\r\n\t that.total = scaledTotal;\r\n\t that.min = Math.min(that.max, size - scaledTotal);\r\n\t that.minScale = size / total;\r\n\t that.centerOffset = (scaledTotal - size) / 2;\r\n\r\n\t that.enabled = that.forcedEnabled || (scaledTotal > size);\r\n\r\n\t if (!silent) {\r\n\t that.trigger(CHANGE, that);\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t var PaneDimensions = Observable.extend({\r\n\t init: function(options) {\r\n\t var that = this;\r\n\r\n\t Observable.fn.init.call(that);\r\n\r\n\t that.x = new PaneDimension(extend({horizontal: true}, options));\r\n\t that.y = new PaneDimension(extend({horizontal: false}, options));\r\n\t that.container = options.container;\r\n\t that.forcedMinScale = options.minScale;\r\n\t that.maxScale = options.maxScale || 100;\r\n\r\n\t that.bind(CHANGE, options);\r\n\t },\r\n\r\n\t rescale: function(newScale) {\r\n\t this.x.rescale(newScale);\r\n\t this.y.rescale(newScale);\r\n\t this.refresh();\r\n\t },\r\n\r\n\t centerCoordinates: function() {\r\n\t return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\r\n\t },\r\n\r\n\t refresh: function() {\r\n\t var that = this;\r\n\t that.x.update();\r\n\t that.y.update();\r\n\t that.enabled = that.x.enabled || that.y.enabled;\r\n\t that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\r\n\t that.fitScale = Math.max(that.x.minScale, that.y.minScale);\r\n\t that.trigger(CHANGE);\r\n\t }\r\n\t });\r\n\r\n\t var PaneAxis = Observable.extend({\r\n\t init: function(options) {\r\n\t var that = this;\r\n\t extend(that, options);\r\n\t Observable.fn.init.call(that);\r\n\t },\r\n\r\n\t outOfBounds: function() {\r\n\t return this.dimension.outOfBounds(this.movable[this.axis]);\r\n\t },\r\n\r\n\t dragMove: function(delta) {\r\n\t var that = this,\r\n\t dimension = that.dimension,\r\n\t axis = that.axis,\r\n\t movable = that.movable,\r\n\t position = movable[axis] + delta;\r\n\r\n\t if (!dimension.enabled) {\r\n\t return;\r\n\t }\r\n\r\n\t if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\r\n\t delta *= that.resistance;\r\n\t }\r\n\r\n\t movable.translateAxis(axis, delta);\r\n\t that.trigger(CHANGE, that);\r\n\t }\r\n\t });\r\n\r\n\t var Pane = Class.extend({\r\n\r\n\t init: function(options) {\r\n\t var that = this,\r\n\t x,\r\n\t y,\r\n\t resistance,\r\n\t movable;\r\n\r\n\t extend(that, {elastic: true}, options);\r\n\r\n\t resistance = that.elastic ? 0.5 : 0;\r\n\t movable = that.movable;\r\n\r\n\t that.x = x = new PaneAxis({\r\n\t axis: \"x\",\r\n\t dimension: that.dimensions.x,\r\n\t resistance: resistance,\r\n\t movable: movable\r\n\t });\r\n\r\n\t that.y = y = new PaneAxis({\r\n\t axis: \"y\",\r\n\t dimension: that.dimensions.y,\r\n\t resistance: resistance,\r\n\t movable: movable\r\n\t });\r\n\r\n\t that.userEvents.bind([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\r\n\t gesturestart: function(e) {\r\n\t that.gesture = e;\r\n\t that.offset = that.dimensions.container.offset();\r\n\t },\r\n\r\n\t press: function(e) {\r\n\t if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\r\n\t e.sender.cancel();\r\n\t }\r\n\t },\r\n\r\n\t gesturechange: function(e) {\r\n\t var previousGesture = that.gesture,\r\n\t previousCenter = previousGesture.center,\r\n\r\n\t center = e.center,\r\n\r\n\t scaleDelta = e.distance / previousGesture.distance,\r\n\r\n\t minScale = that.dimensions.minScale,\r\n\t maxScale = that.dimensions.maxScale,\r\n\t coordinates;\r\n\r\n\t if (movable.scale <= minScale && scaleDelta < 1) {\r\n\t // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\r\n\t scaleDelta += (1 - scaleDelta) * 0.8;\r\n\t }\r\n\r\n\t if (movable.scale * scaleDelta >= maxScale) {\r\n\t scaleDelta = maxScale / movable.scale;\r\n\t }\r\n\r\n\t var offsetX = movable.x + that.offset.left,\r\n\t offsetY = movable.y + that.offset.top;\r\n\r\n\t coordinates = {\r\n\t x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\r\n\t y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\r\n\t };\r\n\r\n\t movable.scaleWith(scaleDelta);\r\n\r\n\t x.dragMove(coordinates.x);\r\n\t y.dragMove(coordinates.y);\r\n\r\n\t that.dimensions.rescale(movable.scale);\r\n\t that.gesture = e;\r\n\t e.preventDefault();\r\n\t },\r\n\r\n\t move: function(e) {\r\n\t if (e.event.target.tagName.match(/textarea|input/i)) {\r\n\t return;\r\n\t }\r\n\r\n\t if (x.dimension.enabled || y.dimension.enabled) {\r\n\t x.dragMove(e.x.delta);\r\n\t y.dragMove(e.y.delta);\r\n\t e.preventDefault();\r\n\t } else {\r\n\t e.touch.skip();\r\n\t }\r\n\t },\r\n\r\n\t end: function(e) {\r\n\t e.preventDefault();\r\n\t }\r\n\t });\r\n\t }\r\n\t });\r\n\r\n\t var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\r\n\t translate;\r\n\r\n\r\n\t if (support.hasHW3D) {\r\n\t translate = function(x, y, scale) {\r\n\t return \"translate3d(\" + x + \"px,\" + y +\"px,0) scale(\" + scale + \")\";\r\n\t };\r\n\t } else {\r\n\t translate = function(x, y, scale) {\r\n\t return \"translate(\" + x + \"px,\" + y +\"px) scale(\" + scale + \")\";\r\n\t };\r\n\t }\r\n\r\n\t var Movable = Observable.extend({\r\n\t init: function(element) {\r\n\t var that = this;\r\n\r\n\t Observable.fn.init.call(that);\r\n\r\n\t that.element = $(element);\r\n\t that.element[0].style.webkitTransformOrigin = \"left top\";\r\n\t that.x = 0;\r\n\t that.y = 0;\r\n\t that.scale = 1;\r\n\t that._saveCoordinates(translate(that.x, that.y, that.scale));\r\n\t },\r\n\r\n\t translateAxis: function(axis, by) {\r\n\t this[axis] += by;\r\n\t this.refresh();\r\n\t },\r\n\r\n\t scaleTo: function(scale) {\r\n\t this.scale = scale;\r\n\t this.refresh();\r\n\t },\r\n\r\n\t scaleWith: function(scaleDelta) {\r\n\t this.scale *= scaleDelta;\r\n\t this.refresh();\r\n\t },\r\n\r\n\t translate: function(coordinates) {\r\n\t this.x += coordinates.x;\r\n\t this.y += coordinates.y;\r\n\t this.refresh();\r\n\t },\r\n\r\n\t moveAxis: function(axis, value) {\r\n\t this[axis] = value;\r\n\t this.refresh();\r\n\t },\r\n\r\n\t moveTo: function(coordinates) {\r\n\t extend(this, coordinates);\r\n\t this.refresh();\r\n\t },\r\n\r\n\t refresh: function() {\r\n\t var that = this,\r\n\t x = that.x,\r\n\t y = that.y,\r\n\t newCoordinates;\r\n\r\n\t if (that.round) {\r\n\t x = Math.round(x);\r\n\t y = Math.round(y);\r\n\t }\r\n\r\n\t newCoordinates = translate(x, y, that.scale);\r\n\r\n\t if (newCoordinates != that.coordinates) {\r\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\r\n\t that.element[0].style.position = \"absolute\";\r\n\t that.element[0].style.left = that.x + \"px\";\r\n\t that.element[0].style.top = that.y + \"px\";\r\n\r\n\t } else {\r\n\t that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\r\n\t }\r\n\t that._saveCoordinates(newCoordinates);\r\n\t that.trigger(CHANGE);\r\n\t }\r\n\t },\r\n\r\n\t _saveCoordinates: function(coordinates) {\r\n\t this.coordinates = coordinates;\r\n\t }\r\n\t });\r\n\r\n\t function destroyDroppable(collection, widget) {\r\n\t var groupName = widget.options.group,\r\n\t droppables = collection[groupName],\r\n\t i;\r\n\r\n\t Widget.fn.destroy.call(widget);\r\n\r\n\t if (droppables.length > 1) {\r\n\t for (i = 0; i < droppables.length; i++) {\r\n\t if (droppables[i] == widget) {\r\n\t droppables.splice(i, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\t } else {\r\n\t droppables.length = 0; // WTF, porting this from the previous destroyGroup\r\n\t delete collection[groupName];\r\n\t }\r\n\t }\r\n\r\n\t var DropTarget = Widget.extend({\r\n\t init: function(element, options) {\r\n\t var that = this;\r\n\r\n\t Widget.fn.init.call(that, element, options);\r\n\r\n\t var group = that.options.group;\r\n\r\n\t if (!(group in dropTargets)) {\r\n\t dropTargets[group] = [ that ];\r\n\t } else {\r\n\t dropTargets[group].push( that );\r\n\t }\r\n\t },\r\n\r\n\t events: [\r\n\t DRAGENTER,\r\n\t DRAGLEAVE,\r\n\t DROP\r\n\t ],\r\n\r\n\t options: {\r\n\t name: \"DropTarget\",\r\n\t group: \"default\"\r\n\t },\r\n\r\n\t destroy: function() {\r\n\t destroyDroppable(dropTargets, this);\r\n\t },\r\n\r\n\t _trigger: function(eventName, e) {\r\n\t var that = this,\r\n\t draggable = draggables[that.options.group];\r\n\r\n\t if (draggable) {\r\n\t return that.trigger(eventName, extend({}, e.event, {\r\n\t draggable: draggable,\r\n\t dropTarget: e.dropTarget\r\n\t }));\r\n\t }\r\n\t },\r\n\r\n\t _over: function(e) {\r\n\t this._trigger(DRAGENTER, e);\r\n\t },\r\n\r\n\t _out: function(e) {\r\n\t this._trigger(DRAGLEAVE, e);\r\n\t },\r\n\r\n\t _drop: function(e) {\r\n\t var that = this,\r\n\t draggable = draggables[that.options.group];\r\n\r\n\t if (draggable) {\r\n\t draggable.dropped = !that._trigger(DROP, e);\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t DropTarget.destroyGroup = function(groupName) {\r\n\t var group = dropTargets[groupName] || dropAreas[groupName],\r\n\t i;\r\n\r\n\t if (group) {\r\n\t for (i = 0; i < group.length; i++) {\r\n\t Widget.fn.destroy.call(group[i]);\r\n\t }\r\n\r\n\t group.length = 0;\r\n\t delete dropTargets[groupName];\r\n\t delete dropAreas[groupName];\r\n\t }\r\n\t };\r\n\r\n\t DropTarget._cache = dropTargets;\r\n\r\n\t var DropTargetArea = DropTarget.extend({\r\n\t init: function(element, options) {\r\n\t var that = this;\r\n\r\n\t Widget.fn.init.call(that, element, options);\r\n\r\n\t var group = that.options.group;\r\n\r\n\t if (!(group in dropAreas)) {\r\n\t dropAreas[group] = [ that ];\r\n\t } else {\r\n\t dropAreas[group].push( that );\r\n\t }\r\n\t },\r\n\r\n\t destroy: function() {\r\n\t destroyDroppable(dropAreas, this);\r\n\t },\r\n\r\n\t options: {\r\n\t name: \"DropTargetArea\",\r\n\t group: \"default\",\r\n\t filter: null\r\n\t }\r\n\t });\r\n\r\n\t var Draggable = Widget.extend({\r\n\t init: function (element, options) {\r\n\t var that = this;\r\n\r\n\t Widget.fn.init.call(that, element, options);\r\n\r\n\t that._activated = false;\r\n\r\n\t that.userEvents = new UserEvents(that.element, {\r\n\t global: true,\r\n\t allowSelection: true,\r\n\t filter: that.options.filter,\r\n\t threshold: that.options.distance,\r\n\t start: proxy(that._start, that),\r\n\t hold: proxy(that._hold, that),\r\n\t move: proxy(that._drag, that),\r\n\t end: proxy(that._end, that),\r\n\t cancel: proxy(that._cancel, that),\r\n\t select: proxy(that._select, that)\r\n\t });\r\n\r\n\t if (kendo.support.touch) {\r\n\t that.element.find(that.options.filter).css('touch-action', 'none');\r\n\t }\r\n\r\n\t that._afterEndHandler = proxy(that._afterEnd, that);\r\n\t that._captureEscape = proxy(that._captureEscape, that);\r\n\t },\r\n\r\n\t events: [\r\n\t HOLD,\r\n\t DRAGSTART,\r\n\t DRAG,\r\n\t DRAGEND,\r\n\t DRAGCANCEL,\r\n\t HINTDESTROYED\r\n\t ],\r\n\r\n\t options: {\r\n\t name: \"Draggable\",\r\n\t distance: ( kendo.support.touch ? 0 : 5),\r\n\t group: \"default\",\r\n\t cursorOffset: null,\r\n\t axis: null,\r\n\t container: null,\r\n\t filter: null,\r\n\t ignore: null,\r\n\t holdToDrag: false,\r\n\t autoScroll: false,\r\n\t dropped: false\r\n\t },\r\n\r\n\t cancelHold: function() {\r\n\t this._activated = false;\r\n\t },\r\n\r\n\t _captureEscape: function(e) {\r\n\t var that = this;\r\n\r\n\t if (e.keyCode === kendo.keys.ESC) {\r\n\t that._trigger(DRAGCANCEL, { event: e });\r\n\t that.userEvents.cancel();\r\n\t }\r\n\t },\r\n\r\n\t _updateHint: function(e) {\r\n\t var that = this,\r\n\t coordinates,\r\n\t options = that.options,\r\n\t boundaries = that.boundaries,\r\n\t axis = options.axis,\r\n\t cursorOffset = that.options.cursorOffset;\r\n\r\n\t if (cursorOffset) {\r\n\t coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\r\n\t } else {\r\n\t that.hintOffset.left += e.x.delta;\r\n\t that.hintOffset.top += e.y.delta;\r\n\t coordinates = $.extend({}, that.hintOffset);\r\n\t }\r\n\r\n\t if (boundaries) {\r\n\t coordinates.top = within(coordinates.top, boundaries.y);\r\n\t coordinates.left = within(coordinates.left, boundaries.x);\r\n\t }\r\n\r\n\t if (axis === \"x\") {\r\n\t delete coordinates.top;\r\n\t } else if (axis === \"y\") {\r\n\t delete coordinates.left;\r\n\t }\r\n\r\n\t that.hint.css(coordinates);\r\n\t },\r\n\r\n\t _shouldIgnoreTarget: function(target) {\r\n\t var ignoreSelector = this.options.ignore;\r\n\t return ignoreSelector && $(target).is(ignoreSelector);\r\n\t },\r\n\r\n\t _select: function(e) {\r\n\t if (!this._shouldIgnoreTarget(e.event.target)) {\r\n\t e.preventDefault();\r\n\t }\r\n\t },\r\n\r\n\t _start: function(e) {\r\n\t var that = this,\r\n\t options = that.options,\r\n\t container = options.container ? $(options.container): null,\r\n\t hint = options.hint;\r\n\r\n\t if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\r\n\t that.userEvents.cancel();\r\n\t return;\r\n\t }\r\n\r\n\t that.currentTarget = e.target;\r\n\t that.currentTargetOffset = getOffset(that.currentTarget);\r\n\r\n\t if (hint) {\r\n\t if (that.hint) {\r\n\t that.hint.stop(true, true).remove();\r\n\t }\r\n\r\n\t that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\r\n\r\n\t var offset = getOffset(that.currentTarget);\r\n\t that.hintOffset = offset;\r\n\r\n\t that.hint.css( {\r\n\t position: \"absolute\",\r\n\t zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\r\n\t left: offset.left,\r\n\t top: offset.top\r\n\t })\r\n\t .appendTo(document.body);\r\n\r\n\t that.angular(\"compile\", function(){\r\n\t that.hint.removeAttr(\"ng-repeat\");\r\n\t var scopeTarget = $(e.target);\r\n\r\n\t while (!scopeTarget.data(\"$$kendoScope\") && scopeTarget.length) {\r\n\t scopeTarget = scopeTarget.parent();\r\n\t }\r\n\r\n\t return {\r\n\t elements: that.hint.get(),\r\n\t scopeFrom: scopeTarget.data(\"$$kendoScope\")\r\n\t };\r\n\t });\r\n\t }\r\n\r\n\t draggables[options.group] = that;\r\n\r\n\t that.dropped = false;\r\n\r\n\t if (container) {\r\n\t that.boundaries = containerBoundaries(container, that.hint);\r\n\t }\r\n\r\n\t $(document).on(KEYUP, that._captureEscape);\r\n\r\n\t if (that._trigger(DRAGSTART, e)) {\r\n\t that.userEvents.cancel();\r\n\t that._afterEnd();\r\n\t }\r\n\r\n\t that.userEvents.capture();\r\n\t },\r\n\r\n\t _hold: function(e) {\r\n\t this.currentTarget = e.target;\r\n\r\n\t if (this._trigger(HOLD, e)) {\r\n\t this.userEvents.cancel();\r\n\t } else {\r\n\t this._activated = true;\r\n\t }\r\n\t },\r\n\r\n\t _drag: function(e) {\r\n\t e.preventDefault();\r\n\r\n\t var cursorElement = this._elementUnderCursor(e);\r\n\r\n\t if (this.options.autoScroll && this._cursorElement !== cursorElement) {\r\n\t this._scrollableParent = findScrollableParent(cursorElement);\r\n\t this._cursorElement = cursorElement;\r\n\t }\r\n\r\n\t this._lastEvent = e;\r\n\t this._processMovement(e, cursorElement);\r\n\r\n\t if (this.options.autoScroll) {\r\n\t // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\r\n\t if (this._scrollableParent[0]) {\r\n\t var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\r\n\r\n\r\n\t this._scrollCompenstation = $.extend({}, this.hintOffset);\r\n\t this._scrollVelocity = velocity;\r\n\r\n\t if (velocity.y === 0 && velocity.x === 0) {\r\n\t clearInterval(this._scrollInterval);\r\n\t this._scrollInterval = null;\r\n\t } else if(!this._scrollInterval) {\r\n\t this._scrollInterval = setInterval($.proxy(this, \"_autoScroll\"), 50);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (this.hint) {\r\n\t this._updateHint(e);\r\n\t }\r\n\t },\r\n\r\n\t _processMovement: function(e, cursorElement) {\r\n\t this._withDropTarget(cursorElement, function(target, targetElement) {\r\n\t if (!target) {\r\n\t if (lastDropTarget) {\r\n\t lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\r\n\t lastDropTarget = null;\r\n\t }\r\n\t return;\r\n\t }\r\n\r\n\t if (lastDropTarget) {\r\n\t if (targetElement === lastDropTarget.targetElement) {\r\n\t return;\r\n\t }\r\n\r\n\t lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\r\n\t }\r\n\r\n\t target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\r\n\t lastDropTarget = extend(target, { targetElement: targetElement });\r\n\t });\r\n\r\n\t this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\r\n\t },\r\n\r\n\t _autoScroll: function() {\r\n\t var parent = this._scrollableParent[0],\r\n\t velocity = this._scrollVelocity,\r\n\t compensation = this._scrollCompenstation;\r\n\r\n\t if (!parent) {\r\n\t return;\r\n\t }\r\n\r\n\t var cursorElement = this._elementUnderCursor(this._lastEvent);\r\n\t this._processMovement(this._lastEvent, cursorElement);\r\n\r\n\t var yIsScrollable, xIsScrollable;\r\n\r\n\t var isRootNode = parent === scrollableRoot()[0];\r\n\r\n\t if (isRootNode) {\r\n\t yIsScrollable = document.body.scrollHeight > $window.height();\r\n\t xIsScrollable = document.body.scrollWidth > $window.width();\r\n\t } else {\r\n\t yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\r\n\t xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\r\n\t }\r\n\r\n\t var yDelta = parent.scrollTop + velocity.y;\r\n\t var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\r\n\r\n\t var xDelta = parent.scrollLeft + velocity.x;\r\n\t var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\r\n\r\n\t if (yInBounds) {\r\n\t parent.scrollTop += velocity.y;\r\n\t }\r\n\r\n\t if (xInBounds) {\r\n\t parent.scrollLeft += velocity.x;\r\n\t }\r\n\r\n\t if (this.hint && isRootNode && (xInBounds || yInBounds)) {\r\n\t if (yInBounds) {\r\n\t compensation.top += velocity.y;\r\n\t }\r\n\r\n\t if (xInBounds) {\r\n\t compensation.left += velocity.x;\r\n\t }\r\n\r\n\t this.hint.css(compensation);\r\n\t }\r\n\t },\r\n\r\n\t _end: function(e) {\r\n\t this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\r\n\t if (target) {\r\n\t target._drop(extend({}, e, { dropTarget: $(targetElement) }));\r\n\t lastDropTarget = null;\r\n\t }\r\n\t });\r\n\r\n\t this._cancel(this._trigger(DRAGEND, e));\r\n\t },\r\n\r\n\t _cancel: function(isDefaultPrevented) {\r\n\t var that = this;\r\n\r\n\t that._scrollableParent = null;\r\n\t this._cursorElement = null;\r\n\t clearInterval(this._scrollInterval);\r\n\t that._activated = false;\r\n\r\n\t if (that.hint && !that.dropped) {\r\n\t setTimeout(function() {\r\n\t that.hint.stop(true, true);\r\n\r\n\t if (isDefaultPrevented) {\r\n\t that._afterEndHandler();\r\n\t } else {\r\n\t that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\r\n\t }\r\n\t }, 0);\r\n\r\n\t } else {\r\n\t that._afterEnd();\r\n\t }\r\n\t },\r\n\r\n\t _trigger: function(eventName, e) {\r\n\t var that = this;\r\n\r\n\t return that.trigger(\r\n\t eventName, extend(\r\n\t {},\r\n\t e.event,\r\n\t {\r\n\t x: e.x,\r\n\t y: e.y,\r\n\t currentTarget: that.currentTarget,\r\n\t initialTarget: e.touch ? e.touch.initialTouch : null,\r\n\t dropTarget: e.dropTarget,\r\n\t elementUnderCursor: e.elementUnderCursor\r\n\t }\r\n\t ));\r\n\t },\r\n\r\n\t _elementUnderCursor: function(e) {\r\n\t var target = elementUnderCursor(e),\r\n\t hint = this.hint;\r\n\r\n\t if (hint && contains(hint[0], target)) {\r\n\t hint.hide();\r\n\t target = elementUnderCursor(e);\r\n\t // IE8 does not return the element in iframe from first attempt\r\n\t if (!target) {\r\n\t target = elementUnderCursor(e);\r\n\t }\r\n\t hint.show();\r\n\t }\r\n\r\n\t return target;\r\n\t },\r\n\r\n\t _withDropTarget: function(element, callback) {\r\n\t var result,\r\n\t group = this.options.group,\r\n\t targets = dropTargets[group],\r\n\t areas = dropAreas[group];\r\n\r\n\t if (targets && targets.length || areas && areas.length) {\r\n\t result = checkTarget(element, targets, areas);\r\n\r\n\t if (result) {\r\n\t callback(result.target, result.targetElement);\r\n\t } else {\r\n\t callback();\r\n\t }\r\n\t }\r\n\t },\r\n\r\n\t destroy: function() {\r\n\t var that = this;\r\n\r\n\t Widget.fn.destroy.call(that);\r\n\r\n\t that._afterEnd();\r\n\r\n\t that.userEvents.destroy();\r\n\r\n\t this._scrollableParent = null;\r\n\t this._cursorElement = null;\r\n\t clearInterval(this._scrollInterval);\r\n\r\n\t that.currentTarget = null;\r\n\t },\r\n\r\n\t _afterEnd: function() {\r\n\t var that = this;\r\n\r\n\t if (that.hint) {\r\n\t that.hint.remove();\r\n\t }\r\n\r\n\t delete draggables[that.options.group];\r\n\r\n\t that.trigger(\"destroy\");\r\n\t that.trigger(HINTDESTROYED);\r\n\t $(document).off(KEYUP, that._captureEscape);\r\n\t }\r\n\t });\r\n\r\n\t kendo.ui.plugin(DropTarget);\r\n\t kendo.ui.plugin(DropTargetArea);\r\n\t kendo.ui.plugin(Draggable);\r\n\t kendo.TapCapture = TapCapture;\r\n\t kendo.containerBoundaries = containerBoundaries;\r\n\r\n\t extend(kendo.ui, {\r\n\t Pane: Pane,\r\n\t PaneDimensions: PaneDimensions,\r\n\t Movable: Movable\r\n\t });\r\n\r\n\t function scrollableViewPort(element) {\r\n\t var root = scrollableRoot()[0],\r\n\t offset,\r\n\t top,\r\n\t left;\r\n\r\n\t if (element[0] === root) {\r\n\t top = root.scrollTop;\r\n\t left = root.scrollLeft;\r\n\r\n\t return {\r\n\t top: top,\r\n\t left: left,\r\n\t bottom: top + $window.height(),\r\n\t right: left + $window.width()\r\n\t };\r\n\t } else {\r\n\t offset = element.offset();\r\n\t offset.bottom = offset.top + element.height();\r\n\t offset.right = offset.left + element.width();\r\n\t return offset;\r\n\t }\r\n\t }\r\n\r\n\t function scrollableRoot() {\r\n\t return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\r\n\t }\r\n\r\n\t function findScrollableParent(element) {\r\n\t var root = scrollableRoot();\r\n\r\n\t if (!element || element === document.body || element === document.documentElement) {\r\n\t return root;\r\n\t }\r\n\r\n\t var parent = $(element)[0];\r\n\r\n\t while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\r\n\t parent = parent.parentNode;\r\n\t }\r\n\r\n\t if (parent === document.body) {\r\n\t return root;\r\n\t }\r\n\r\n\t return $(parent);\r\n\t }\r\n\r\n\t function autoScrollVelocity(mouseX, mouseY, rect) {\r\n\t var velocity = { x: 0, y: 0 };\r\n\r\n\t var AUTO_SCROLL_AREA = 50;\r\n\r\n\t if (mouseX - rect.left < AUTO_SCROLL_AREA) {\r\n\t velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\r\n\t } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\r\n\t velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\r\n\t }\r\n\r\n\t if (mouseY - rect.top < AUTO_SCROLL_AREA) {\r\n\t velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\r\n\t } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\r\n\t velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\r\n\t }\r\n\r\n\t return velocity;\r\n\t }\r\n\r\n\t // export for testing\r\n\t kendo.ui.Draggable.utils = {\r\n\t autoScrollVelocity: autoScrollVelocity,\r\n\t scrollableViewPort: scrollableViewPort,\r\n\t findScrollableParent: findScrollableParent\r\n\t };\r\n\r\n\t })(window.kendo.jQuery);\r\n\r\n\treturn window.kendo;\r\n\r\n\t}, __webpack_require__(3));\r\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1151);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1036:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.list\");\n\n/***/ }),\n\n/***/ 1037:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.mobile.scroller\");\n\n/***/ }),\n\n/***/ 1038:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.virtuallist\");\n\n/***/ }),\n\n/***/ 1151:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1036), __webpack_require__(1037), __webpack_require__(1038) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"dropdownlist\",\n\t name: \"DropDownList\",\n\t category: \"web\",\n\t description: \"The DropDownList widget displays a list of values and allows the selection of a single value from the list.\",\n\t depends: [ \"list\" ],\n\t features: [ {\n\t id: \"mobile-scroller\",\n\t name: \"Mobile scroller\",\n\t description: \"Support for kinetic scrolling in mobile device\",\n\t depends: [ \"mobile.scroller\" ]\n\t }, {\n\t id: \"virtualization\",\n\t name: \"VirtualList\",\n\t description: \"Support for virtualization\",\n\t depends: [ \"virtuallist\" ]\n\t } ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t List = ui.List,\n\t Select = ui.Select,\n\t support = kendo.support,\n\t activeElement = kendo._activeElement,\n\t ObservableObject = kendo.data.ObservableObject,\n\t keys = kendo.keys,\n\t ns = \".kendoDropDownList\",\n\t nsFocusEvent = ns + \"FocusEvent\",\n\t DISABLED = \"disabled\",\n\t READONLY = \"readonly\",\n\t CHANGE = \"change\",\n\t FOCUSED = \"k-state-focused\",\n\t DEFAULT = \"k-state-default\",\n\t STATEDISABLED = \"k-state-disabled\",\n\t ARIA_DISABLED = \"aria-disabled\",\n\t CLICKEVENTS = \"click\" + ns + \" touchend\" + ns,\n\t HOVEREVENTS = \"mouseenter\" + ns + \" mouseleave\" + ns,\n\t TABINDEX = \"tabindex\",\n\t STATE_FILTER = \"filter\",\n\t STATE_ACCEPT = \"accept\",\n\t MSG_INVALID_OPTION_LABEL = \"The `optionLabel` option is not valid due to missing fields. Define a custom optionLabel as shown here http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#configuration-optionLabel\",\n\t proxy = $.proxy;\n\n\t var DropDownList = Select.extend( {\n\t init: function(element, options) {\n\t var that = this;\n\t var index = options && options.index;\n\t var optionLabel, text, disabled;\n\n\t that.ns = ns;\n\t options = $.isArray(options) ? { dataSource: options } : options;\n\n\t Select.fn.init.call(that, element, options);\n\n\t options = that.options;\n\t element = that.element.on(\"focus\" + ns, proxy(that._focusHandler, that));\n\n\t that._focusInputHandler = $.proxy(that._focusInput, that);\n\n\t that.optionLabel = $();\n\t that._optionLabel();\n\n\t that._inputTemplate();\n\n\t that._reset();\n\n\t that._prev = \"\";\n\t that._word = \"\";\n\n\t that._wrapper();\n\n\t that._tabindex();\n\t that.wrapper.data(TABINDEX, that.wrapper.attr(TABINDEX));\n\n\t that._span();\n\n\t that._popup();\n\n\t that._mobile();\n\n\t that._dataSource();\n\n\t that._ignoreCase();\n\n\t that._filterHeader();\n\n\t that._aria();\n\n\t //should read changed value of closed dropdownlist\n\t that.wrapper.attr(\"aria-live\", \"polite\");\n\n\t that._enable();\n\n\t that._attachFocusHandlers();\n\n\t that._oldIndex = that.selectedIndex = -1;\n\n\t if (index !== undefined) {\n\t options.index = index;\n\t }\n\n\t that._initialIndex = options.index;\n\n\t that.requireValueMapper(that.options);\n\t that._initList();\n\n\t that._cascade();\n\n\t that.one(\"set\", function(e) {\n\t if (!e.sender.listView.bound() && that.hasOptionLabel()) {\n\t that._textAccessor(that._optionLabelText());\n\t }\n\t });\n\n\t if (options.autoBind) {\n\t that.dataSource.fetch();\n\t } else if (that.selectedIndex === -1) { //selectedIndex !== -1 when cascade functionality happens instantly\n\t text = options.text || \"\";\n\t if (!text) {\n\t optionLabel = options.optionLabel;\n\n\t if (optionLabel && options.index === 0) {\n\t text = optionLabel;\n\t } else if (that._isSelect) {\n\t text = element.children(\":selected\").text();\n\t }\n\t }\n\n\t that._textAccessor(text);\n\t }\n\n\t disabled = $(that.element).parents(\"fieldset\").is(':disabled');\n\n\t if (disabled) {\n\t that.enable(false);\n\t }\n\n\t that.listView.bind(\"click\", function(e) { e.preventDefault(); });\n\n\t kendo.notify(that);\n\t },\n\n\t options: {\n\t name: \"DropDownList\",\n\t enabled: true,\n\t autoBind: true,\n\t index: 0,\n\t text: null,\n\t value: null,\n\t delay: 500,\n\t height: 200,\n\t dataTextField: \"\",\n\t dataValueField: \"\",\n\t optionLabel: \"\",\n\t cascadeFrom: \"\",\n\t cascadeFromField: \"\",\n\t cascadeFromParentField: \"\",\n\t ignoreCase: true,\n\t animation: {},\n\t filter: \"none\",\n\t minLength: 1,\n\t enforceMinLength: false,\n\t virtual: false,\n\t template: null,\n\t valueTemplate: null,\n\t optionLabelTemplate: null,\n\t groupTemplate: \"#:data#\",\n\t fixedGroupTemplate: \"#:data#\",\n\t autoWidth: false,\n\t popup: null\n\t },\n\n\t events: [\n\t \"open\",\n\t \"close\",\n\t CHANGE,\n\t \"select\",\n\t \"filtering\",\n\t \"dataBinding\",\n\t \"dataBound\",\n\t \"cascade\",\n\t \"set\"\n\t ],\n\n\t setOptions: function(options) {\n\t Select.fn.setOptions.call(this, options);\n\n\t this.listView.setOptions(this._listOptions(options));\n\n\t this._optionLabel();\n\t this._inputTemplate();\n\t this._accessors();\n\t this._filterHeader();\n\t this._enable();\n\t this._aria();\n\n\t if (!this.value() && this.hasOptionLabel()) {\n\t this.select(0);\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Select.fn.destroy.call(that);\n\n\t that.wrapper.off(ns);\n\t that.wrapper.off(nsFocusEvent);\n\t that.element.off(ns);\n\t that._inputWrapper.off(ns);\n\n\t that._arrow.off();\n\t that._arrow = null;\n\t that._arrowIcon = null;\n\n\t that.optionLabel.off();\n\n\t if(that.filterInput){\n\t that.filterInput.off(nsFocusEvent);\n\t }\n\t },\n\n\t open: function() {\n\t var that = this;\n\t var isFiltered = that.dataSource.filter() ? that.dataSource.filter().filters.length > 0 : false;\n\n\t if (that.popup.visible()) {\n\t return;\n\t }\n\n\t if (!that.listView.bound() || that._state === STATE_ACCEPT) {\n\t that._open = true;\n\t that._state = \"rebind\";\n\n\t if (that.filterInput) {\n\t that.filterInput.val(\"\");\n\t that._prev = \"\";\n\t }\n\n\t if (that.filterInput && that.options.minLength !== 1 && !isFiltered) {\n\t that.refresh();\n\t that.popup.one(\"activate\", that._focusInputHandler);\n\t that.popup.open();\n\t that._resizeFilterInput();\n\t } else {\n\t that._filterSource();\n\t }\n\t } else if (that._allowOpening()) {\n\t that._focusFilter = true;\n\t that.popup.one(\"activate\", that._focusInputHandler);\n\t // In some cases when the popup is opened resize is triggered which will cause it to close\n\t // Setting the below flag will prevent this from happening\n\t that.popup._hovered = true;\n\t that.popup.open();\n\t that._resizeFilterInput();\n\t that._focusItem();\n\t }\n\t },\n\n\t _focusInput: function () {\n\t this._focusElement(this.filterInput);\n\t },\n\n\t _resizeFilterInput: function () {\n\t var filterInput = this.filterInput;\n\t var originalPrevent = this._prevent;\n\n\t if (!filterInput) {\n\t return;\n\t }\n\n\t var isInputActive = this.filterInput[0] === activeElement();\n\t var caret = kendo.caret(this.filterInput[0])[0];\n\n\t this._prevent = true;\n\n\t filterInput.css(\"display\", \"none\")\n\t .css(\"width\", this.popup.element.css(\"width\"))\n\t .css(\"display\", \"inline-block\");\n\n\t if (isInputActive) {\n\t filterInput.focus();\n\t kendo.caret(filterInput[0], caret);\n\t }\n\n\t this._prevent = originalPrevent;\n\t },\n\n\t _allowOpening: function() {\n\t return this.hasOptionLabel() || this.filterInput || Select.fn._allowOpening.call(this);\n\t },\n\n\t toggle: function(toggle) {\n\t this._toggle(toggle, true);\n\t },\n\n\t current: function(candidate) {\n\t var current;\n\n\t if (candidate === undefined) {\n\t current = this.listView.focus();\n\n\t if (!current && this.selectedIndex === 0 && this.hasOptionLabel()) {\n\t return this.optionLabel;\n\t }\n\n\t return current;\n\t }\n\n\t this._focus(candidate);\n\t },\n\n\t dataItem: function(index) {\n\t var that = this;\n\t var dataItem = null;\n\n\t if (index === null) { return index; }\n\n\t if (index === undefined) {\n\t dataItem = that.listView.selectedDataItems()[0];\n\t } else {\n\t if (typeof index !== \"number\") {\n\t if (that.options.virtual) {\n\t return that.dataSource.getByUid($(index).data(\"uid\"));\n\t }\n\t if (index.hasClass(\"k-list-optionlabel\")) {\n\t index = -1;\n\t } else {\n\t index = $(that.items()).index(index);\n\t }\n\t } else if (that.hasOptionLabel()) {\n\t index -= 1;\n\t }\n\n\t dataItem = that.dataSource.flatView()[index];\n\t }\n\n\t if (!dataItem) {\n\t dataItem = that._optionLabelDataItem();\n\t }\n\n\t return dataItem;\n\t },\n\n\t refresh: function() {\n\t this.listView.refresh();\n\t },\n\n\t text: function (text) {\n\t var that = this;\n\t var loweredText;\n\t var ignoreCase = that.options.ignoreCase;\n\n\t text = text === null ? \"\" : text;\n\n\t if (text !== undefined) {\n\t if (typeof text !== \"string\") {\n\t that._textAccessor(text);\n\t return;\n\t }\n\n\t loweredText = ignoreCase ? text.toLowerCase() : text;\n\n\t that._select(function(data) {\n\t data = that._text(data);\n\n\t if (ignoreCase) {\n\t data = (data + \"\").toLowerCase();\n\t }\n\n\t return data === loweredText;\n\t }).done(function() {\n\t that._textAccessor(that.dataItem() || text);\n\t });\n\n\t } else {\n\t return that._textAccessor();\n\t }\n\t },\n\n\t _clearFilter: function() {\n\t $(this.filterInput).val(\"\");\n\t Select.fn._clearFilter.call(this);\n\t },\n\n\t value: function(value) {\n\t var that = this;\n\t var listView = that.listView;\n\t var dataSource = that.dataSource;\n\n\t if (value === undefined) {\n\t value = that._accessor() || that.listView.value()[0];\n\t return value === undefined || value === null ? \"\" : value;\n\t }\n\n\t that.requireValueMapper(that.options, value);\n\n\t if (value || !that.hasOptionLabel()) {\n\t that._initialIndex = null;\n\t }\n\n\t this.trigger(\"set\", { value: value });\n\n\t if (that._request && that.options.cascadeFrom && that.listView.bound()) {\n\t if (that._valueSetter) {\n\t dataSource.unbind(CHANGE, that._valueSetter);\n\t }\n\n\t that._valueSetter = proxy(function() { that.value(value); }, that);\n\n\t dataSource.one(CHANGE, that._valueSetter);\n\t return;\n\t }\n\n\t if (that._isFilterEnabled() && listView.bound() && listView.isFiltered()) {\n\t that._clearFilter();\n\t } else {\n\t that._fetchData();\n\t }\n\n\t listView.value(value).done(function() {\n\t that._old = that._valueBeforeCascade = that._accessor();\n\t that._oldIndex = that.selectedIndex;\n\t });\n\t },\n\n\t hasOptionLabel: function() {\n\t return this.optionLabel && !!this.optionLabel[0];\n\t },\n\n\t _optionLabel: function() {\n\t var that = this;\n\t var options = that.options;\n\t var optionLabel = options.optionLabel;\n\t var template = options.optionLabelTemplate;\n\n\t if (!optionLabel) {\n\t that.optionLabel.off().remove();\n\t that.optionLabel = $();\n\t return;\n\t }\n\n\t if (!template) {\n\t template = \"#:\";\n\n\t if (typeof optionLabel === \"string\") {\n\t template += \"data\";\n\t } else {\n\t template += kendo.expr(options.dataTextField, \"data\");\n\t }\n\n\t template += \"#\";\n\t }\n\n\t if (typeof template !== \"function\") {\n\t template = kendo.template(template);\n\t }\n\n\t that.optionLabelTemplate = template;\n\n\t if (!that.hasOptionLabel()) {\n\t that.optionLabel = $('
').prependTo(that.list);\n\t }\n\n\t that.optionLabel.html(template(optionLabel))\n\t .off()\n\t .on(CLICKEVENTS, proxy(that._click, that))\n\t .on(HOVEREVENTS, that._toggleHover);\n\n\t that.angular(\"compile\", function() {\n\t return { elements: that.optionLabel, data: [{ dataItem: that._optionLabelDataItem() }] };\n\t });\n\t },\n\n\t _optionLabelText: function() {\n\t var optionLabel = this.options.optionLabel;\n\t return (typeof optionLabel === \"string\") ? optionLabel : this._text(optionLabel);\n\t },\n\n\t _optionLabelDataItem: function() {\n\t var that = this;\n\t var optionLabel = that.options.optionLabel;\n\n\t if (that.hasOptionLabel()) {\n\t return $.isPlainObject(optionLabel) ? new ObservableObject(optionLabel) : that._assignInstance(that._optionLabelText(), \"\");\n\t }\n\n\t return undefined;\n\t },\n\n\t _buildOptions: function(data) {\n\t var that = this;\n\t if (!that._isSelect) {\n\t return;\n\t }\n\n\t var value = that.listView.value()[0];\n\t var optionLabel = that._optionLabelDataItem();\n\t var optionLabelValue = optionLabel && that._value(optionLabel);\n\n\t if (value === undefined || value === null) {\n\t value = \"\";\n\t }\n\n\t if (optionLabel) {\n\t if (optionLabelValue === undefined || optionLabelValue === null) {\n\t optionLabelValue = \"\";\n\t }\n\n\t optionLabel = '\";\n\t }\n\n\t that._options(data, optionLabel, value);\n\n\t if (value !== List.unifyType(that._accessor(), typeof value)) {\n\t that._customOption = null;\n\t that._custom(value);\n\t }\n\t },\n\n\t _listBound: function() {\n\n\t var that = this;\n\t var initialIndex = that._initialIndex;\n\t var filtered = that._state === STATE_FILTER;\n\n\t var data = that.dataSource.flatView();\n\t var dataItem;\n\n\t that._presetValue = false;\n\n\t that._renderFooter();\n\t that._renderNoData();\n\t that._toggleNoData(!data.length);\n\n\t that._resizePopup(true);\n\n\t that.popup.position();\n\n\t that._buildOptions(data);\n\n\t that._makeUnselectable();\n\n\t if (!filtered) {\n\t if (that._open) {\n\t that.toggle(that._allowOpening());\n\t }\n\n\t that._open = false;\n\n\t if (!that._fetch) {\n\t if (data.length) {\n\t if (!that.listView.value().length && initialIndex > -1 && initialIndex !== null) {\n\t that.select(initialIndex);\n\t }\n\n\t that._initialIndex = null;\n\t dataItem = that.listView.selectedDataItems()[0];\n\t if (dataItem && that.text() !== that._text(dataItem)) {\n\t that._selectValue(dataItem);\n\t }\n\t } else if (that._textAccessor() !== that._optionLabelText()) {\n\t that.listView.value(\"\");\n\t that._selectValue(null);\n\t that._oldIndex = that.selectedIndex;\n\t }\n\t }\n\t }\n\n\t that._hideBusy();\n\t that.trigger(\"dataBound\");\n\t },\n\n\t _listChange: function() {\n\t this._selectValue(this.listView.selectedDataItems()[0]);\n\n\t if (this._presetValue || (this._old && this._oldIndex === -1)) {\n\t this._oldIndex = this.selectedIndex;\n\t }\n\t },\n\n\t _filterPaste: function() {\n\t this._search();\n\t },\n\n\t _attachFocusHandlers: function() {\n\t var that = this;\n\t var wrapper = that.wrapper;\n\n\t wrapper.on(\"focusin\" + nsFocusEvent, proxy(that._focusinHandler, that))\n\t .on(\"focusout\" + nsFocusEvent, proxy(that._focusoutHandler, that));\n\t if(that.filterInput) {\n\t that.filterInput.on(\"focusin\" + nsFocusEvent, proxy(that._focusinHandler, that))\n\t .on(\"focusout\" + nsFocusEvent, proxy(that._focusoutHandler, that));\n\t }\n\t },\n\n\t _focusHandler: function() {\n\t this.wrapper.focus();\n\t },\n\n\t _focusinHandler: function() {\n\t this._inputWrapper.addClass(FOCUSED);\n\t this._prevent = false;\n\t },\n\n\t _focusoutHandler: function() {\n\t var that = this;\n\t var isIFrame = window.self !== window.top;\n\n\t if (!that._prevent) {\n\t clearTimeout(that._typingTimeout);\n\n\t if (support.mobileOS.ios && isIFrame) {\n\t that._change();\n\t } else {\n\t that._blur();\n\t }\n\n\t that._inputWrapper.removeClass(FOCUSED);\n\t that._prevent = true;\n\t that._open = false;\n\t that.element.blur();\n\t }\n\t },\n\n\t _wrapperMousedown: function() {\n\t this._prevent = !!this.filterInput;\n\t },\n\n\t _wrapperClick: function(e) {\n\t e.preventDefault();\n\t this.popup.unbind(\"activate\", this._focusInputHandler);\n\t this._focused = this.wrapper;\n\t this._prevent = false;\n\t this._toggle();\n\t },\n\n\t _editable: function(options) {\n\t var that = this;\n\t var element = that.element;\n\t var disable = options.disable;\n\t var readonly = options.readonly;\n\t var wrapper = that.wrapper.add(that.filterInput).off(ns);\n\t var dropDownWrapper = that._inputWrapper.off(HOVEREVENTS);\n\n\t if (!readonly && !disable) {\n\t element.removeAttr(DISABLED).removeAttr(READONLY);\n\n\t dropDownWrapper\n\t .addClass(DEFAULT)\n\t .removeClass(STATEDISABLED)\n\t .on(HOVEREVENTS, that._toggleHover);\n\n\t wrapper\n\t .attr(TABINDEX, wrapper.data(TABINDEX))\n\t .attr(ARIA_DISABLED, false)\n\t .on(\"keydown\" + ns, proxy(that._keydown, that))\n\t .on(kendo.support.mousedown + ns, proxy(that._wrapperMousedown, that))\n\t .on(\"paste\" + ns, proxy(that._filterPaste, that));\n\n\t that.wrapper.on(\"click\" + ns, proxy(that._wrapperClick, that));\n\n\t if (!that.filterInput) {\n\t wrapper.on(\"keypress\" + ns, proxy(that._keypress, that));\n\t } else {\n\t wrapper.on(\"input\" + ns, proxy(that._search, that));\n\t }\n\n\t } else if (disable) {\n\t wrapper.removeAttr(TABINDEX);\n\t dropDownWrapper\n\t .addClass(STATEDISABLED)\n\t .removeClass(DEFAULT);\n\t } else {\n\t dropDownWrapper\n\t .addClass(DEFAULT)\n\t .removeClass(STATEDISABLED);\n\t }\n\n\t element.attr(DISABLED, disable)\n\t .attr(READONLY, readonly);\n\n\t wrapper.attr(ARIA_DISABLED, disable);\n\t },\n\n\t _keydown: function(e) {\n\t var that = this;\n\t var key = e.keyCode;\n\t var altKey = e.altKey;\n\t var isInputActive;\n\t var handled;\n\n\t var isPopupVisible = that.popup.visible();\n\n\t if (that.filterInput) {\n\t isInputActive = that.filterInput[0] === activeElement();\n\t }\n\n\t if (key === keys.LEFT) {\n\t key = keys.UP;\n\t handled = true;\n\t } else if (key === keys.RIGHT) {\n\t key = keys.DOWN;\n\t handled = true;\n\t }\n\n\t if (handled && isInputActive) {\n\t return;\n\t }\n\n\t e.keyCode = key;\n\n\t if ((altKey && key === keys.UP) || key === keys.ESC) {\n\t that._focusElement(that.wrapper);\n\t }\n\n\t if (that._state === STATE_FILTER && key === keys.ESC) {\n\t that._clearFilter();\n\t that._open = false;\n\t that._state = STATE_ACCEPT;\n\t }\n\n\t if (key === keys.ENTER && that._typingTimeout && that.filterInput && isPopupVisible) {\n\t e.preventDefault();\n\t return;\n\t }\n\n\t if (key === keys.SPACEBAR && !isInputActive) {\n\t that.toggle(!isPopupVisible);\n\t e.preventDefault();\n\t }\n\n\t handled = that._move(e);\n\n\t if (handled) {\n\t return;\n\t }\n\n\t if (!isPopupVisible || !that.filterInput) {\n\t var current = that._focus();\n\n\t if (key === keys.HOME) {\n\t handled = true;\n\t that._firstItem();\n\t } else if (key === keys.END) {\n\t handled = true;\n\t that._lastItem();\n\t }\n\n\t if (handled) {\n\t if (that.trigger(\"select\", { dataItem: that._getElementDataItem(that._focus()), item: that._focus() })) {\n\t that._focus(current);\n\t return;\n\t }\n\n\t that._select(that._focus(), true).done(function() {\n\t if (!isPopupVisible) {\n\t that._blur();\n\t }\n\t });\n\t e.preventDefault();\n\t }\n\t }\n\n\t if (!altKey && !handled && that.filterInput) {\n\t that._search();\n\t }\n\t },\n\n\t _matchText: function(text, word) {\n\t var ignoreCase = this.options.ignoreCase;\n\n\t if (text === undefined || text === null) {\n\t return false;\n\t }\n\n\t text = text + \"\";\n\n\t if (ignoreCase) {\n\t text = text.toLowerCase();\n\t }\n\n\t return text.indexOf(word) === 0;\n\t },\n\n\t _shuffleData: function(data, splitIndex) {\n\t var optionDataItem = this._optionLabelDataItem();\n\n\t if (optionDataItem) {\n\t data = [optionDataItem].concat(data);\n\t }\n\n\t return data.slice(splitIndex).concat(data.slice(0, splitIndex));\n\t },\n\n\t _selectNext: function() {\n\t var that = this;\n\t var data = that.dataSource.flatView();\n\t var dataLength = data.length + (that.hasOptionLabel() ? 1 : 0);\n\t var isInLoop = sameCharsOnly(that._word, that._last);\n\t var startIndex = that.selectedIndex;\n\t var oldFocusedItem;\n\t var text;\n\n\t if (startIndex === -1) {\n\t startIndex = 0;\n\t } else {\n\t startIndex += isInLoop ? 1 : 0;\n\t startIndex = normalizeIndex(startIndex, dataLength);\n\t }\n\n\t data = data.toJSON ? data.toJSON() : data.slice();\n\t data = that._shuffleData(data, startIndex);\n\n\t for (var idx = 0; idx < dataLength; idx++) {\n\t text = that._text(data[idx]);\n\n\t if (isInLoop && that._matchText(text, that._last)) {\n\t break;\n\t } else if (that._matchText(text, that._word)) {\n\t break;\n\t }\n\t }\n\n\t if (idx !== dataLength) {\n\t oldFocusedItem = that._focus();\n\n\t that._select(normalizeIndex(startIndex + idx, dataLength)).done(function() {\n\t var done = function() {\n\t if (!that.popup.visible()) {\n\t that._change();\n\t }\n\t };\n\n\t if (that.trigger(\"select\", { dataItem: that._getElementDataItem(that._focus()), item: that._focus() })) {\n\t that._select(oldFocusedItem).done(done);\n\t } else {\n\t done();\n\t }\n\t });\n\t }\n\t },\n\n\t _keypress: function(e) {\n\t var that = this;\n\n\t if (e.which === 0 || e.keyCode === kendo.keys.ENTER) {\n\t return;\n\t }\n\n\t var character = String.fromCharCode(e.charCode || e.keyCode);\n\n\t if (that.options.ignoreCase) {\n\t character = character.toLowerCase();\n\t }\n\n\t if (character === \" \") {\n\t e.preventDefault();\n\t }\n\n\t that._word += character;\n\t that._last = character;\n\n\t that._search();\n\t },\n\n\t _popupOpen: function() {\n\t var popup = this.popup;\n\n\t popup.wrapper = kendo.wrap(popup.element);\n\n\t if (popup.element.closest(\".km-root\")[0]) {\n\t popup.wrapper.addClass(\"km-popup km-widget\");\n\t this.wrapper.addClass(\"km-widget\");\n\t }\n\t },\n\n\t _popup: function() {\n\t Select.fn._popup.call(this);\n\t this.popup.one(\"open\", proxy(this._popupOpen, this));\n\t },\n\n\t _getElementDataItem: function(element) {\n\t if (!element || !element[0]) {\n\t return null;\n\t }\n\n\t if (element[0] === this.optionLabel[0]) {\n\t return this._optionLabelDataItem();\n\t }\n\n\t return this.listView.dataItemByIndex(this.listView.getElementIndex(element));\n\t },\n\n\t _click: function (e) {\n\t var that = this;\n\t var item = e.item || $(e.currentTarget);\n\n\t e.preventDefault();\n\n\t if (that.trigger(\"select\", { dataItem: that._getElementDataItem(item), item: item })) {\n\t that.close();\n\t return;\n\t }\n\n\t that._userTriggered = true;\n\n\t that._select(item).done(function() {\n\t that._blur();\n\t that._focusElement(that.wrapper);\n\t });\n\t },\n\n\t _focusElement: function(element) {\n\t var active = activeElement();\n\t var wrapper = this.wrapper;\n\t var filterInput = this.filterInput;\n\t var compareElement = element === filterInput ? wrapper : filterInput;\n\t var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n\n\t if (filterInput && filterInput[0] === element[0] && touchEnabled) {\n\t return;\n\t }\n\n\t if (filterInput && (compareElement[0] === active || this._focusFilter)) {\n\t this._focusFilter = false;\n\t this._prevent = true;\n\t this._focused = element.focus();\n\t }\n\t },\n\n\t _searchByWord: function(word) {\n\t if (!word) {\n\t return;\n\t }\n\n\t var that = this;\n\t var ignoreCase = that.options.ignoreCase;\n\n\t if (ignoreCase) {\n\t word = word.toLowerCase();\n\t }\n\n\t that._select(function(dataItem) {\n\t return that._matchText(that._text(dataItem), word);\n\t });\n\t },\n\n\t _inputValue: function() {\n\t return this.text();\n\t },\n\n\t _search: function() {\n\t var that = this;\n\t var dataSource = that.dataSource;\n\n\t clearTimeout(that._typingTimeout);\n\n\t if (that._isFilterEnabled()) {\n\t that._typingTimeout = setTimeout(function() {\n\t var value = that.filterInput.val();\n\n\t if (that._prev !== value) {\n\t that._prev = value;\n\t that.search(value);\n\t that._resizeFilterInput();\n\t }\n\n\t that._typingTimeout = null;\n\t }, that.options.delay);\n\t } else {\n\t that._typingTimeout = setTimeout(function() {\n\t that._word = \"\";\n\t }, that.options.delay);\n\n\t if (!that.listView.bound()) {\n\t dataSource.fetch().done(function () {\n\t that._selectNext();\n\t });\n\t return;\n\t }\n\n\t that._selectNext();\n\t }\n\t },\n\n\t _get: function(candidate) {\n\t var data, found, idx;\n\t var isFunction = typeof candidate === \"function\";\n\t var jQueryCandidate = !isFunction ? $(candidate) : $();\n\n\t if (this.hasOptionLabel()) {\n\t if (typeof candidate === \"number\") {\n\t if (candidate > -1) {\n\t candidate -= 1;\n\t }\n\t } else if (jQueryCandidate.hasClass(\"k-list-optionlabel\")) {\n\t candidate = -1;\n\t }\n\t }\n\n\t if (isFunction) {\n\t data = this.dataSource.flatView();\n\n\t for (idx = 0; idx < data.length; idx++) {\n\t if (candidate(data[idx])) {\n\t candidate = idx;\n\t found = true;\n\t break;\n\t }\n\t }\n\n\t if (!found) {\n\t candidate = -1;\n\t }\n\t }\n\n\t return candidate;\n\t },\n\n\t _firstItem: function() {\n\t if (this.hasOptionLabel()) {\n\t this._focus(this.optionLabel);\n\t } else {\n\t this.listView.focusFirst();\n\t }\n\t },\n\n\t _lastItem: function() {\n\t this._resetOptionLabel();\n\t this.listView.focusLast();\n\t },\n\n\t _nextItem: function() {\n\t if (this.optionLabel.hasClass(\"k-state-focused\")) {\n\t this._resetOptionLabel();\n\t this.listView.focusFirst();\n\t } else {\n\t this.listView.focusNext();\n\t }\n\t },\n\n\t _prevItem: function() {\n\t if (this.optionLabel.hasClass(\"k-state-focused\")) {\n\t return;\n\t }\n\n\t this.listView.focusPrev();\n\t if (!this.listView.focus()) {\n\t this._focus(this.optionLabel);\n\t }\n\t },\n\n\t _focusItem: function() {\n\t var options = this.options;\n\t var listView = this.listView;\n\t var focusedItem = listView.focus();\n\t var index = listView.select();\n\n\t index = index[index.length - 1];\n\n\t if (index === undefined && options.highlightFirst && !focusedItem) {\n\t index = 0;\n\t }\n\n\t if (index !== undefined) {\n\t listView.focus(index);\n\t } else {\n\t if (options.optionLabel && (!options.virtual || options.virtual.mapValueTo !== \"dataItem\")) {\n\t this._focus(this.optionLabel);\n\t this._select(this.optionLabel);\n\t this.listView.content.scrollTop(0);\n\t } else {\n\t listView.scrollToIndex(0);\n\t }\n\t }\n\t },\n\n\t _resetOptionLabel: function(additionalClass) {\n\t this.optionLabel.removeClass(\"k-state-focused\" + (additionalClass || \"\")).removeAttr(\"id\");\n\t },\n\n\t _focus: function(candidate) {\n\t var listView = this.listView;\n\t var optionLabel = this.optionLabel;\n\n\t if (candidate === undefined) {\n\t candidate = listView.focus();\n\n\t if (!candidate && optionLabel.hasClass(\"k-state-focused\")) {\n\t candidate = optionLabel;\n\t }\n\n\t return candidate;\n\t }\n\n\t this._resetOptionLabel();\n\n\t candidate = this._get(candidate);\n\n\t listView.focus(candidate);\n\n\t if (candidate === -1) {\n\t optionLabel.addClass(\"k-state-focused\")\n\t .attr(\"id\", listView._optionID);\n\n\t this._focused.add(this.filterInput)\n\t .removeAttr(\"aria-activedescendant\")\n\t .attr(\"aria-activedescendant\", listView._optionID);\n\t }\n\t },\n\n\t _select: function(candidate, keepState) {\n\t var that = this;\n\n\t candidate = that._get(candidate);\n\n\t return that.listView.select(candidate).done(function() {\n\t if (!keepState && that._state === STATE_FILTER) {\n\t that._state = STATE_ACCEPT;\n\t }\n\n\t if (candidate === -1) {\n\t that._selectValue(null);\n\t }\n\t });\n\t },\n\n\t _selectValue: function(dataItem) {\n\t var that = this;\n\t var optionLabel = that.options.optionLabel;\n\t var idx = that.listView.select();\n\n\t var value = \"\";\n\t var text = \"\";\n\n\t idx = idx[idx.length - 1];\n\t if (idx === undefined) {\n\t idx = -1;\n\t }\n\n\t this._resetOptionLabel(\" k-state-selected\");\n\n\t if (dataItem || dataItem === 0) {\n\t text = dataItem;\n\t value = that._dataValue(dataItem);\n\t if (optionLabel) {\n\t idx += 1;\n\t }\n\t } else if (optionLabel) {\n\t that._focus(that.optionLabel.addClass(\"k-state-selected\"));\n\n\t text = that._optionLabelText();\n\n\t if (typeof optionLabel === \"string\") {\n\t value = \"\";\n\t } else {\n\t value = that._value(optionLabel);\n\t }\n\n\t idx = 0;\n\t }\n\n\t that.selectedIndex = idx;\n\n\t if (value === null) {\n\t value = \"\";\n\t }\n\n\t that._textAccessor(text);\n\t that._accessor(value, idx);\n\n\t that._triggerCascade();\n\t },\n\n\t _mobile: function() {\n\t var that = this,\n\t popup = that.popup,\n\t mobileOS = support.mobileOS,\n\t root = popup.element.parents(\".km-root\").eq(0);\n\n\t if (root.length && mobileOS) {\n\t popup.options.animation.open.effects = (mobileOS.android || mobileOS.meego) ? \"fadeIn\" : (mobileOS.ios || mobileOS.wp) ? \"slideIn:up\" : popup.options.animation.open.effects;\n\t }\n\t },\n\n\t _filterHeader: function() {\n\t var icon;\n\n\t if (this.filterInput) {\n\t this.filterInput\n\t .off(ns)\n\t .parent()\n\t .remove();\n\n\t this.filterInput = null;\n\t }\n\n\t if (this._isFilterEnabled()) {\n\t icon = '';\n\n\t this.filterInput = $('')\n\t .attr({\n\t placeholder: this.element.attr(\"placeholder\"),\n\t title: this.element.attr(\"title\"),\n\t role: \"listbox\",\n\t \"aria-haspopup\": true,\n\t \"aria-expanded\": false\n\t });\n\t this.list\n\t .prepend($('')\n\t .append(this.filterInput.add(icon)));\n\t }\n\t },\n\n\t _span: function() {\n\t var that = this,\n\t wrapper = that.wrapper,\n\t SELECTOR = \"span.k-input\",\n\t span;\n\n\t span = wrapper.find(SELECTOR);\n\n\t if (!span[0]) {\n\t wrapper.append(' ')\n\t .append(that.element);\n\n\t span = wrapper.find(SELECTOR);\n\t }\n\n\t that.span = span;\n\t that._inputWrapper = $(wrapper[0].firstChild);\n\t that._arrow = wrapper.find(\".k-select\");\n\t that._arrowIcon = that._arrow.find(\".k-icon\");\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element,\n\t DOMelement = element[0],\n\t wrapper;\n\n\t wrapper = element.parent();\n\n\t if (!wrapper.is(\"span.k-widget\")) {\n\t wrapper = element.wrap(\"\").parent();\n\t wrapper[0].style.cssText = DOMelement.style.cssText;\n\t wrapper[0].title = DOMelement.title;\n\t }\n\n\t that._focused = that.wrapper = wrapper\n\t .addClass(\"k-widget k-dropdown\")\n\t .addClass(DOMelement.className)\n\t .removeClass('input-validation-error')\n\t .css(\"display\", \"\")\n\t .attr({\n\t accesskey: element.attr(\"accesskey\"),\n\t unselectable: \"on\",\n\t role: \"listbox\",\n\t \"aria-haspopup\": true,\n\t \"aria-expanded\": false\n\t });\n\n\t element.hide().removeAttr(\"accesskey\");\n\t },\n\n\t _clearSelection: function(parent) {\n\t this.select(parent.value() ? 0 : -1);\n\t },\n\n\t _inputTemplate: function() {\n\t var that = this,\n\t template = that.options.valueTemplate;\n\n\n\t if (!template) {\n\t template = $.proxy(kendo.template('#:this._text(data)#', { useWithBlock: false }), that);\n\t } else {\n\t template = kendo.template(template);\n\t }\n\n\t that.valueTemplate = template;\n\n\t if (that.hasOptionLabel() && !that.options.optionLabelTemplate) {\n\t try {\n\t that.valueTemplate(that._optionLabelDataItem());\n\t } catch(e) {\n\t throw new Error(MSG_INVALID_OPTION_LABEL);\n\t }\n\t }\n\t },\n\n\t _textAccessor: function(text) {\n\t var dataItem = null;\n\t var template = this.valueTemplate;\n\t var optionLabelText = this._optionLabelText();\n\t var span = this.span;\n\n\t if (text === undefined) {\n\t return span.text();\n\t }\n\n\t if ($.isPlainObject(text) || text instanceof ObservableObject) {\n\t dataItem = text;\n\t } else if (optionLabelText && optionLabelText === text) {\n\t dataItem = this.options.optionLabel;\n\t }\n\n\t if (!dataItem) {\n\t dataItem = this._assignInstance(text, this._accessor());\n\t }\n\n\t if (this.hasOptionLabel()) {\n\t if (dataItem === optionLabelText || this._text(dataItem) === optionLabelText) {\n\t template = this.optionLabelTemplate;\n\n\t if (typeof this.options.optionLabel === \"string\" && !this.options.optionLabelTemplate) {\n\t dataItem = optionLabelText;\n\t }\n\t }\n\t }\n\n\t var getElements = function(){\n\t return {\n\t elements: span.get(),\n\t data: [ { dataItem: dataItem } ]\n\t };\n\t };\n\n\t this.angular(\"cleanup\", getElements);\n\n\t try {\n\t span.html(template(dataItem));\n\t } catch(e) {\n\t //dataItem has missing fields required in custom template\n\t span.html(\"\");\n\t }\n\n\t this.angular(\"compile\", getElements);\n\t },\n\n\t _preselect: function(value, text) {\n\t if (!value && !text) {\n\t text = this._optionLabelText();\n\t }\n\n\t this._accessor(value);\n\t this._textAccessor(text);\n\n\t this._old = this._accessor();\n\t this._oldIndex = this.selectedIndex;\n\n\t this.listView.setValue(value);\n\n\t this._initialIndex = null;\n\t this._presetValue = true;\n\t },\n\n\t _assignInstance: function(text, value) {\n\t var dataTextField = this.options.dataTextField;\n\t var dataItem = {};\n\n\t if (dataTextField) {\n\t assign(dataItem, dataTextField.split(\".\"), text);\n\t assign(dataItem, this.options.dataValueField.split(\".\"), value);\n\t dataItem = new ObservableObject(dataItem);\n\t } else {\n\t dataItem = text;\n\t }\n\n\t return dataItem;\n\t }\n\t });\n\n\t function assign(instance, fields, value) {\n\t var idx = 0,\n\t lastIndex = fields.length - 1,\n\t field;\n\n\t for (; idx < lastIndex; ++idx) {\n\t field = fields[idx];\n\n\t if (!(field in instance)) {\n\t instance[field] = {};\n\t }\n\n\t instance = instance[field];\n\t }\n\n\t instance[fields[lastIndex]] = value;\n\t }\n\n\t function normalizeIndex(index, length) {\n\t if (index >= length) {\n\t index -= length;\n\t }\n\t return index;\n\t }\n\n\t function sameCharsOnly(word, character) {\n\t for (var idx = 0; idx < word.length; idx++) {\n\t if (word.charAt(idx) !== character) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t ui.plugin(DropDownList);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1154);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1025:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.validator\");\n\n/***/ }),\n\n/***/ 1076:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.binder\");\n\n/***/ }),\n\n/***/ 1138:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.datepicker\");\n\n/***/ }),\n\n/***/ 1154:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1138), __webpack_require__(1155), __webpack_require__(1025), __webpack_require__(1076) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"editable\",\n\t name: \"Editable\",\n\t category: \"framework\",\n\t depends: [ \"datepicker\", \"numerictextbox\", \"validator\", \"binder\" ],\n\t hidden: true\n\t};\n\n\t/* jshint eqnull: true */\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t extend = $.extend,\n\t oldIE = kendo.support.browser.msie && kendo.support.browser.version < 9,\n\t isFunction = kendo.isFunction,\n\t isPlainObject = $.isPlainObject,\n\t inArray = $.inArray,\n\t POINT = \".\",\n\t support = kendo.support,\n\t AUTOCOMPLETEVALUE = support.browser.chrome ? \"disabled\" : \"off\",\n\t nameSpecialCharRegExp = /(\"|\\%|'|\\[|\\]|\\$|\\.|\\,|\\:|\\;|\\+|\\*|\\&|\\!|\\#|\\(|\\)|<|>|\\=|\\?|\\@|\\^|\\{|\\}|\\~|\\/|\\||`)/g,\n\t ERRORTEMPLATE = '
' +\n\t '#=message#
',\n\t CHANGE = \"change\";\n\t var EQUAL_SET = \"equalSet\";\n\t var specialRules = [\"url\", \"email\", \"number\", \"date\", \"boolean\"];\n\n\t function fieldType(field) {\n\t field = field != null ? field : \"\";\n\t return field.type || $.type(field) || \"string\";\n\t }\n\n\t function convertToValueBinding(container) {\n\t container.find(\":input:not(:button, .k-combobox .k-input, [\" + kendo.attr(\"role\") + \"=listbox], [\" + kendo.attr(\"role\") + \"=upload], [\" + kendo.attr(\"skip\") + \"], [type=file])\").each(function() {\n\t var bindAttr = kendo.attr(\"bind\"),\n\t binding = this.getAttribute(bindAttr) || \"\",\n\t bindingName = this.type === \"checkbox\" || this.type === \"radio\" ? \"checked:\" : \"value:\",\n\t fieldName = this.name;\n\n\t if (binding.indexOf(bindingName) === -1 && fieldName) {\n\t binding += (binding.length ? \",\" : \"\") + bindingName + fieldName;\n\n\t $(this).attr(bindAttr, binding);\n\t }\n\t });\n\t }\n\n\t function createAttributes(options) {\n\t var field = (options.model.fields || options.model)[options.field],\n\t type = fieldType(field),\n\t validation = field ? field.validation : {},\n\t ruleName,\n\t DATATYPE = kendo.attr(\"type\"),\n\t BINDING = kendo.attr(\"bind\"),\n\t rule,\n\t attr = {\n\t name: options.field,\n\t title: options.title ? options.title : options.field\n\t };\n\n\t for (ruleName in validation) {\n\t rule = validation[ruleName];\n\n\t if (inArray(ruleName, specialRules) >= 0) {\n\t attr[DATATYPE] = ruleName;\n\t } else if (!isFunction(rule)) {\n\t var culture = kendo.getCulture();\n\n\t if (typeof rule === \"number\" && culture.name.length) {\n\t var numberFormat = culture.numberFormat;\n\t var stringRule = rule.toString()\n\t .replace(POINT, numberFormat[POINT]);\n\n\t attr[ruleName] = stringRule;\n\t } else {\n\t attr[ruleName] = isPlainObject(rule) ? rule.value || ruleName : rule;\n\t }\n\t }\n\n\t attr[kendo.attr(ruleName + \"-msg\")] = rule.message;\n\n\t attr.autocomplete = AUTOCOMPLETEVALUE;\n\t }\n\n\t if (inArray(type, specialRules) >= 0) {\n\t attr[DATATYPE] = type;\n\t }\n\n\t attr[BINDING] = (type === \"boolean\" ? \"checked:\" : \"value:\") + options.field;\n\n\t return attr;\n\t }\n\n\t function addIdAttribute(container, attr) {\n\t var id = container.attr(\"id\");\n\n\t if (id) {\n\t attr.id = id;\n\t container.removeAttr(\"id\");\n\t }\n\n\t return attr;\n\t }\n\n\t function convertItems(items) {\n\t var idx,\n\t length,\n\t item,\n\t value,\n\t text,\n\t result;\n\n\t if (items && items.length) {\n\t result = [];\n\t for (idx = 0, length = items.length; idx < length; idx++) {\n\t item = items[idx];\n\t text = item.text || item.value || item;\n\t value = item.value == null ? (item.text || item) : item.value;\n\n\t result[idx] = { text: text, value: value };\n\t }\n\t }\n\t return result;\n\t }\n\n\t var editors = {\n\t \"number\": function(container, options) {\n\t var attr = createAttributes(options);\n\t $('').attr(attr).appendTo(container).kendoNumericTextBox({ format: options.format });\n\t $('').hide().appendTo(container);\n\t },\n\t \"date\": function(container, options) {\n\t var attr = createAttributes(options),\n\t format = options.format;\n\n\t if (format) {\n\t format = kendo._extractFormat(format);\n\t }\n\n\t attr[kendo.attr(\"format\")] = format;\n\n\t $('').attr(attr).appendTo(container).kendoDatePicker({ format: options.format });\n\t $('').hide().appendTo(container);\n\t },\n\t \"string\": function(container, options) {\n\t var attr = createAttributes(options);\n\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"boolean\": function(container, options) {\n\t var attr = createAttributes(options);\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"values\": function(container, options) {\n\t var attr = createAttributes(options);\n\t var items = kendo.stringify(convertItems(options.values));\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"date\": function (container, options) {\n\t var attr = createAttributes(options);\n\t attr = addIdAttribute(container, attr);\n\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"string\": function (container, options) {\n\t var attr = createAttributes(options);\n\t attr = addIdAttribute(container, attr);\n\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"boolean\": function (container, options) {\n\t var attr = createAttributes(options);\n\t attr = addIdAttribute(container, attr);\n\n\t $('').attr(attr).appendTo(container);\n\t },\n\t \"values\": function (container, options) {\n\t var attr = createAttributes(options);\n\t var items = options.values;\n\t var select = $('').appendTo(that._innerWrapper);\n\t }\n\n\t element.removeAttr(\"accesskey\");\n\n\t that._focused = that.input = input.attr({\n\t \"accesskey\": accessKey,\n\t \"autocomplete\": AUTOCOMPLETEVALUE,\n\t \"role\": \"listbox\",\n\t \"title\": element[0].title,\n\t \"aria-expanded\": false,\n\t \"aria-haspopup\": \"listbox\",\n\t \"aria-autocomplete\": \"list\"\n\t });\n\t },\n\n\t _tagList: function() {\n\t var that = this,\n\t tagList = that._innerWrapper.children(\"ul\");\n\n\t if (!tagList[0]) {\n\t tagList = $('
    ').appendTo(that._innerWrapper);\n\t }\n\n\t that.tagList = tagList;\n\t },\n\n\t _tagTemplate: function() {\n\t var that = this;\n\t var options = that.options;\n\t var tagTemplate = options.tagTemplate;\n\t var hasDataSource = options.dataSource;\n\t var isMultiple = options.tagMode === \"multiple\";\n\t var singleTag = options.messages.singleTag;\n\t var defaultTemplate;\n\n\t if (that.element[0].length && !hasDataSource) {\n\t options.dataTextField = options.dataTextField || \"text\";\n\t options.dataValueField = options.dataValueField || \"value\";\n\t }\n\n\t defaultTemplate = isMultiple ? kendo.template(\"#:\" + kendo.expr(options.dataTextField, \"data\") + \"#\", { useWithBlock: false }) : kendo.template(\"#:values.length# \" + singleTag);\n\n\t that.tagTextTemplate = tagTemplate = tagTemplate ? kendo.template(tagTemplate) : defaultTemplate;\n\n\t that.tagTemplate = function(data) {\n\t return '
  • ' +\n\t tagTemplate(data) + '' +\n\t '' +\n\t '
  • ';\n\t };\n\t },\n\n\t _loader: function() {\n\t this._loading = $('').insertAfter(this.input);\n\t },\n\n\t _clearButton: function() {\n\t List.fn._clearButton.call(this);\n\n\t if (this.options.clearButton) {\n\t this._clear.insertAfter(this.input);\n\t this.wrapper.addClass(\"k-multiselect-clearable\");\n\t }\n\t },\n\n\t _textContainer: function() {\n\t var computedStyles = kendo.getComputedStyles(this.input[0], styles);\n\n\t computedStyles.position = \"absolute\";\n\t computedStyles.visibility = \"hidden\";\n\t computedStyles.top = -3333;\n\t computedStyles.left = -3333;\n\n\t this._span = $(\"\").css(computedStyles).appendTo(this.wrapper);\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element,\n\t wrapper = element.parent(\"span.k-multiselect\");\n\n\t if (!wrapper[0]) {\n\t wrapper = element.wrap('
    ').parent();\n\t wrapper[0].style.cssText = element[0].style.cssText;\n\t wrapper[0].title = element[0].title;\n\n\t $('
    ').insertBefore(element);\n\t }\n\n\t that.wrapper = wrapper.addClass(element[0].className).removeClass('input-validation-error').css(\"display\", \"\");\n\t that._innerWrapper = $(wrapper[0].firstChild);\n\t },\n\n\t _ariaSetSize: function(value) {\n\t var that = this;\n\t var selectedItems = that.tagList.children();\n\n\t if(value && selectedItems.length) {\n\t selectedItems.attr(\"aria-setsize\", value);\n\t }\n\t },\n\n\t _ariaSetLive: function() {\n\t var that = this;\n\n\t that.ul.attr(\"aria-live\", !that._isFilterEnabled() ? \"off\" : \"polite\");\n\t }\n\t });\n\n\t function compare(a, b) {\n\t var length;\n\n\t if ((a === null && b !== null) || (a !== null && b === null)) {\n\t return false;\n\t }\n\n\t length = a.length;\n\t if (length !== b.length) {\n\t return false;\n\t }\n\n\t while (length--) {\n\t if (a[length] !== b[length]) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t ui.plugin(MultiSelect);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1290);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1056:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.userevents\");\n\n/***/ }),\n\n/***/ 1290:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018), __webpack_require__(1056) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"numerictextbox\",\n\t name: \"NumericTextBox\",\n\t category: \"web\",\n\t description: \"The NumericTextBox widget can format and display numeric, percentage or currency textbox.\",\n\t depends: [ \"core\", \"userevents\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t caret = kendo.caret,\n\t keys = kendo.keys,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t activeElement = kendo._activeElement,\n\t extractFormat = kendo._extractFormat,\n\t parse = kendo.parseFloat,\n\t placeholderSupported = kendo.support.placeholder,\n\t getCulture = kendo.getCulture,\n\t CHANGE = \"change\",\n\t DISABLED = \"disabled\",\n\t READONLY = \"readonly\",\n\t INPUT = \"k-input\",\n\t SPIN = \"spin\",\n\t ns = \".kendoNumericTextBox\",\n\t TOUCHEND = \"touchend\",\n\t MOUSELEAVE = \"mouseleave\" + ns,\n\t HOVEREVENTS = \"mouseenter\" + ns + \" \" + MOUSELEAVE,\n\t DEFAULT = \"k-state-default\",\n\t FOCUSED = \"k-state-focused\",\n\t HOVER = \"k-state-hover\",\n\t FOCUS = \"focus\",\n\t POINT = \".\",\n\t CLASS_ICON = \"k-icon\",\n\t SELECTED = \"k-state-selected\",\n\t STATEDISABLED = \"k-state-disabled\",\n\t STATE_INVALID = \"k-state-invalid\",\n\t ARIA_DISABLED = \"aria-disabled\",\n\t INTEGER_REGEXP = /^(-)?(\\d*)$/,\n\t NULL = null,\n\t proxy = $.proxy,\n\t extend = $.extend;\n\n\t var NumericTextBox = Widget.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t isStep = options && options.step !== undefined,\n\t min, max, step, value, disabled;\n\t var inputType;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t options = that.options;\n\t element = that.element\n\t .on(\"focusout\" + ns, proxy(that._focusout, that))\n\t .attr(\"role\", \"spinbutton\");\n\n\t options.placeholder = options.placeholder || element.attr(\"placeholder\");\n\n\t min = that.min(element.attr(\"min\"));\n\t max = that.max(element.attr(\"max\"));\n\t step = that._parse(element.attr(\"step\"));\n\n\t if (options.min === NULL && min !== NULL) {\n\t options.min = min;\n\t }\n\n\t if (options.max === NULL && max !== NULL) {\n\t options.max = max;\n\t }\n\n\t if (!isStep && step !== NULL) {\n\t options.step = step;\n\t }\n\n\t that._initialOptions = extend({}, options);\n\n\t inputType = element.attr(\"type\");\n\n\t that._reset();\n\t that._wrapper();\n\t that._arrows();\n\t that._validation();\n\t that._input();\n\n\t if (!kendo.support.mobileOS) {\n\t that._text.on(FOCUS + ns, proxy(that._click, that));\n\t } else {\n\t that._text.on(TOUCHEND + ns + \" \" + FOCUS + ns, function() {\n\t if (kendo.support.browser.edge) {\n\t that._text.one(FOCUS + ns, function() {\n\t that._toggleText(false);\n\t element.focus();\n\t });\n\t } else {\n\t that._toggleText(false);\n\t element.focus();\n\t }\n\t });\n\t }\n\n\t element.attr(\"aria-valuemin\", options.min !== NULL ? options.min*options.factor : options.min)\n\t .attr(\"aria-valuemax\", options.max !== NULL ? options.max*options.factor : options.max);\n\n\t options.format = extractFormat(options.format);\n\n\t value = options.value;\n\n\t if (value == NULL) {\n\t if (inputType == \"number\") {\n\t value = parseFloat(element.val());\n\t } else {\n\t value = element.val();\n\t }\n\t }\n\n\t that.value(value);\n\n\t disabled = element.is(\"[disabled]\") || $(that.element).parents(\"fieldset\").is(':disabled');\n\n\t if (disabled) {\n\t that.enable(false);\n\t } else {\n\t that.readonly(element.is(\"[readonly]\"));\n\t }\n\n\t that.angular(\"compile\", function(){\n\t return {\n\t elements: that._text.get()\n\t };\n\t });\n\n\t kendo.notify(that);\n\t },\n\n\t options: {\n\t name: \"NumericTextBox\",\n\t decimals: NULL,\n\t restrictDecimals: false,\n\t min: NULL,\n\t max: NULL,\n\t value: NULL,\n\t step: 1,\n\t round: true,\n\t culture: \"\",\n\t format: \"n\",\n\t spinners: true,\n\t placeholder: \"\",\n\t factor: 1,\n\t upArrowText: \"Increase value\",\n\t downArrowText: \"Decrease value\"\n\t },\n\t events: [\n\t CHANGE,\n\t SPIN\n\t ],\n\n\t _editable: function(options) {\n\t var that = this,\n\t element = that.element,\n\t disable = options.disable,\n\t readonly = options.readonly,\n\t text = that._text.add(element),\n\t wrapper = that._inputWrapper.off(HOVEREVENTS);\n\n\t that._toggleText(true);\n\n\t that._upArrowEventHandler.unbind(\"press\");\n\t that._downArrowEventHandler.unbind(\"press\");\n\t element\n\t .off(\"keydown\" + ns)\n\t .off(\"keyup\" + ns)\n\t .off(\"input\" + ns)\n\t .off(\"paste\" + ns);\n\n\t if (!readonly && !disable) {\n\t wrapper\n\t .addClass(DEFAULT)\n\t .removeClass(STATEDISABLED)\n\t .on(HOVEREVENTS, that._toggleHover);\n\n\t text.removeAttr(DISABLED)\n\t .removeAttr(READONLY)\n\t .attr(ARIA_DISABLED, false);\n\n\t that._upArrowEventHandler.bind(\"press\", function(e) {\n\t e.preventDefault();\n\t that._spin(1);\n\t that._upArrow.addClass(SELECTED);\n\t });\n\n\t that._downArrowEventHandler.bind(\"press\", function(e) {\n\t e.preventDefault();\n\t that._spin(-1);\n\t that._downArrow.addClass(SELECTED);\n\t });\n\n\t that.element\n\t .on(\"keydown\" + ns, proxy(that._keydown, that))\n\t .on(\"keyup\" + ns, proxy(that._keyup, that))\n\t .on(\"paste\" + ns, proxy(that._paste, that))\n\t .on(\"input\" + ns, proxy(that._inputHandler, that));\n\n\t } else {\n\t wrapper\n\t .addClass(disable ? STATEDISABLED : DEFAULT)\n\t .removeClass(disable ? DEFAULT : STATEDISABLED);\n\n\t text.attr(DISABLED, disable)\n\t .attr(READONLY, readonly)\n\t .attr(ARIA_DISABLED, disable);\n\t }\n\t },\n\n\t readonly: function(readonly) {\n\t this._editable({\n\t readonly: readonly === undefined ? true : readonly,\n\t disable: false\n\t });\n\t },\n\n\t enable: function(enable) {\n\t this._editable({\n\t readonly: false,\n\t disable: !(enable = enable === undefined ? true : enable)\n\t });\n\t },\n\n\t setOptions: function (options) {\n\t var that = this;\n\t Widget.fn.setOptions.call(that, options);\n\n\t that._arrowsWrap.toggle(that.options.spinners);\n\t that._inputWrapper.toggleClass(\"k-expand-padding\", !that.options.spinners);\n\t that._text.prop(\"placeholder\", that.options.placeholder);\n\t that._placeholder(that.options.placeholder);\n\t that.element.attr({\n\t \"aria-valuemin\": that.options.min !== NULL ? that.options.min*that.options.factor : that.options.min,\n\t \"aria-valuemax\": that.options.max !== NULL ? that.options.max*that.options.factor : that.options.max\n\t });\n\n\t that.options.format = extractFormat(that.options.format);\n\n\t if (options.value !== undefined) {\n\t that.value(options.value);\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t that.element\n\t .add(that._text)\n\t .add(that._upArrow)\n\t .add(that._downArrow)\n\t .add(that._inputWrapper)\n\t .off(ns);\n\n\t that._upArrowEventHandler.destroy();\n\t that._downArrowEventHandler.destroy();\n\n\t if (that._form) {\n\t that._form.off(\"reset\", that._resetHandler);\n\t }\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t min: function(value) {\n\t return this._option(\"min\", value);\n\t },\n\n\t max: function(value) {\n\t return this._option(\"max\", value);\n\t },\n\n\t step: function(value) {\n\t return this._option(\"step\", value);\n\t },\n\n\t value: function(value) {\n\t var that = this, adjusted;\n\n\t if (value === undefined) {\n\t return that._value;\n\t }\n\n\t value = that._parse(value);\n\t adjusted = that._adjust(value);\n\n\t if (value !== adjusted) {\n\t return;\n\t }\n\n\t that._update(value);\n\t that._old = that._value;\n\t },\n\n\t focus: function() {\n\t this._focusin();\n\t },\n\n\t _adjust: function(value) {\n\t var that = this,\n\t options = that.options,\n\t min = options.min,\n\t max = options.max;\n\n\t if (value === NULL) {\n\t return value;\n\t }\n\n\t if (min !== NULL && value < min) {\n\t value = min;\n\t } else if (max !== NULL && value > max) {\n\t value = max;\n\t }\n\n\t return value;\n\t },\n\n\t _arrows: function() {\n\t var that = this,\n\t arrows,\n\t _release = function() {\n\t clearTimeout( that._spinning );\n\t arrows.removeClass(SELECTED);\n\t },\n\t options = that.options,\n\t spinners = options.spinners,\n\t element = that.element;\n\n\t arrows = element.siblings(\".\" + CLASS_ICON);\n\n\t if (!arrows[0]) {\n\t arrows = $(buttonHtml(\"increase\", options.upArrowText) + buttonHtml(\"decrease\", options.downArrowText))\n\t .insertAfter(element);\n\n\t that._arrowsWrap = arrows.wrapAll('').parent();\n\t }\n\n\t if (!spinners) {\n\t arrows.parent().toggle(spinners);\n\t that._inputWrapper.addClass(\"k-expand-padding\");\n\t }\n\n\t that._upArrow = arrows.eq(0);\n\t that._upArrowEventHandler = new kendo.UserEvents(that._upArrow, { release: _release });\n\t that._downArrow = arrows.eq(1);\n\t that._downArrowEventHandler = new kendo.UserEvents(that._downArrow, { release: _release });\n\t },\n\n\t _validation: function () {\n\t var that = this;\n\t var element = that.element;\n\n\t that._validationIcon = $(\"\")\n\t .hide()\n\t .insertAfter(element);\n\t },\n\n\t _blur: function() {\n\t var that = this;\n\n\t that._toggleText(true);\n\n\t that._change(that.element.val());\n\t },\n\n\t _click: function(e) {\n\t var that = this;\n\n\t clearTimeout(that._focusing);\n\t that._focusing = setTimeout(function() {\n\t var input = e.target,\n\t idx = caret(input)[0],\n\t value = input.value.substring(0, idx),\n\t format = that._format(that.options.format),\n\t group = format[\",\"],\n\t result, groupRegExp, extractRegExp,\n\t caretPosition = 0;\n\n\t if (group) {\n\t groupRegExp = new RegExp(\"\\\\\" + group, \"g\");\n\t extractRegExp = new RegExp(\"(^(-)$)|(^(-)?([\\\\d\\\\\" + group + \"]+)(\\\\\" + format[POINT] + \")?(\\\\d+)?)\");\n\t }\n\n\t if (extractRegExp) {\n\t result = extractRegExp.exec(value);\n\t }\n\n\t if (result) {\n\t caretPosition = result[0].replace(groupRegExp, \"\").length;\n\n\t if (value.indexOf(\"(\") != -1 && that._value < 0) {\n\t caretPosition++;\n\t }\n\t }\n\n\t that._focusin();\n\n\t caret(that.element[0], caretPosition);\n\t });\n\t },\n\n\t _change: function(value) {\n\t var that = this,\n\t factor = that.options.factor;\n\n\t if(factor && factor !== 1){\n\t value = kendo.parseFloat(value);\n\t if(value !== null) {\n\t value = value/factor;\n\t }\n\t }\n\n\t that._update(value);\n\t value = that._value;\n\n\t if (that._old != value) {\n\t that._old = value;\n\n\t if (!that._typing) {\n\t // trigger the DOM change event so any subscriber gets notified\n\t that.element.trigger(CHANGE);\n\t }\n\n\t that.trigger(CHANGE);\n\t }\n\n\t that._typing = false;\n\t },\n\n\t _culture: function(culture) {\n\t return culture || getCulture(this.options.culture);\n\t },\n\n\t _focusin: function() {\n\t var that = this;\n\t that._inputWrapper.addClass(FOCUSED);\n\t that._toggleText(false);\n\t that.element[0].focus();\n\t },\n\n\t _focusout: function() {\n\t var that = this;\n\n\t clearTimeout(that._focusing);\n\t that._inputWrapper.removeClass(FOCUSED).removeClass(HOVER);\n\t that._blur();\n\t that._removeInvalidState();\n\t },\n\n\t _format: function(format, culture) {\n\t var numberFormat = this._culture(culture).numberFormat;\n\n\t format = format.toLowerCase();\n\n\t if (format.indexOf(\"c\") > -1) {\n\t numberFormat = numberFormat.currency;\n\t } else if (format.indexOf(\"p\") > -1) {\n\t numberFormat = numberFormat.percent;\n\t }\n\n\t return numberFormat;\n\t },\n\n\t _input: function() {\n\t var that = this,\n\t options = that.options,\n\t CLASSNAME = \"k-formatted-value\",\n\t element = that.element.addClass(INPUT).show()[0],\n\t accessKey = element.accessKey,\n\t wrapper = that.wrapper,\n\t text;\n\n\t text = wrapper.find(POINT + CLASSNAME);\n\n\t if (!text[0]) {\n\t text = $('').insertBefore(element).addClass(CLASSNAME);\n\t }\n\n\t try {\n\t element.setAttribute(\"type\", \"text\");\n\t } catch(e) {\n\t element.type = \"text\";\n\t }\n\n\t text[0].title = element.title;\n\t text[0].tabIndex = element.tabIndex;\n\t text[0].style.cssText = element.style.cssText;\n\t text.prop(\"placeholder\", options.placeholder);\n\n\t if (accessKey) {\n\t text.attr(\"accesskey\", accessKey);\n\t element.accessKey = \"\";\n\t }\n\n\n\t that._text = text.addClass(element.className)\n\t .attr({\n\t \"role\": \"spinbutton\",\n\t \"aria-valuemin\": options.min !== NULL ? options.min*options.factor : options.min,\n\t \"aria-valuemax\": options.max !== NULL ? options.max*options.factor : options.max,\n\t \"autocomplete\": \"off\"\n\t });\n\t },\n\n\t _keydown: function(e) {\n\t var that = this,\n\t key = e.keyCode;\n\n\t if (key == keys.DOWN) {\n\t that._step(-1);\n\t return;\n\t } else if (key == keys.UP) {\n\t that._step(1);\n\t return;\n\t } else if (key == keys.ENTER) {\n\t that._change(that.element.val());\n\t return;\n\t }\n\n\t if (key != keys.TAB) {\n\t that._typing = true;\n\t }\n\t that._cachedCaret = caret(that.element);\n\t },\n\n\t _keyup: function () {\n\t this._removeInvalidState();\n\t },\n\n\t _inputHandler: function () {\n\t var element = this.element;\n\t var value = element.val();\n\t var numberFormat = this._format(this.options.format);\n\t var isValid = this._numericRegex(numberFormat).test(value);\n\n\t if (isValid) {\n\t this._oldText = value;\n\t } else {\n\t this._blinkInvalidState();\n\t this.element.val(this._oldText);\n\t if (this._cachedCaret) {\n\t caret(element, this._cachedCaret[0]);\n\t this._cachedCaret = null;\n\t }\n\t }\n\t },\n\n\t _blinkInvalidState: function () {\n\t var that = this;\n\n\t that._addInvalidState();\n\t clearTimeout(that._invalidStateTimeout);\n\t that._invalidStateTimeout = setTimeout(proxy(that._removeInvalidState, that), 100);\n\t },\n\n\t _addInvalidState: function () {\n\t var that = this;\n\t that._inputWrapper.addClass(STATE_INVALID);\n\t that._validationIcon.show();\n\t },\n\n\t _removeInvalidState: function () {\n\t var that = this;\n\t that._inputWrapper.removeClass(STATE_INVALID);\n\t that._validationIcon.hide();\n\t that._invalidStateTimeout = null;\n\t },\n\n\t _numericRegex: function(numberFormat) {\n\t var that = this;\n\t var separator = numberFormat[POINT];\n\t var precision = that.options.decimals;\n\t var fractionRule = \"*\";\n\n\t if (separator === POINT) {\n\t separator = \"\\\\\" + separator;\n\t }\n\n\t if (precision === NULL) {\n\t precision = numberFormat.decimals;\n\t }\n\n\t if (precision === 0 && that.options.restrictDecimals) {\n\t return INTEGER_REGEXP;\n\t }\n\n\t if (that.options.restrictDecimals) {\n\t fractionRule = \"{0,\" + precision + \"}\";\n\t }\n\n\t if (that._separator !== separator) {\n\t that._separator = separator;\n\t that._floatRegExp = new RegExp(\"^(-)?(((\\\\d+(\" + separator + \"\\\\d\" + fractionRule + \")?)|(\" + separator + \"\\\\d\" + fractionRule + \")))?$\");\n\t }\n\n\t return that._floatRegExp;\n\t },\n\n\t _paste: function(e) {\n\t var that = this;\n\t var element = e.target;\n\t var value = element.value;\n\t var numberFormat = that._format(that.options.format);\n\n\t setTimeout(function() {\n\t var result = that._parse(element.value);\n\n\t if (result === NULL) {\n\t that._update(value);\n\t } else {\n\t element.value = result.toString().replace(POINT, numberFormat[POINT]);\n\t if (that._adjust(result) !== result || !that._numericRegex(numberFormat).test(element.value)) {\n\t that._update(value);\n\t }\n\t }\n\t });\n\t },\n\n\t _option: function(option, value) {\n\t var that = this,\n\t element = that.element,\n\t options = that.options;\n\n\t if (value === undefined) {\n\t return options[option];\n\t }\n\n\t value = that._parse(value);\n\n\t if (!value && option === \"step\") {\n\t return;\n\t }\n\n\t options[option] = value;\n\t element\n\t .add(that._text)\n\t .attr(\"aria-value\" + option, value);\n\n\t element.attr(option, value);\n\t },\n\n\t _spin: function(step, timeout) {\n\t var that = this;\n\n\t timeout = timeout || 500;\n\n\t clearTimeout( that._spinning );\n\t that._spinning = setTimeout(function() {\n\t that._spin(step, 50);\n\t }, timeout );\n\n\t that._step(step);\n\t },\n\n\t _step: function(step) {\n\t var that = this,\n\t element = that.element,\n\t originalValue = that._value,\n\t value = that._parse(element.val()) || 0,\n\t precision = that.options.decimals || 2;\n\n\t if (activeElement() != element[0]) {\n\t that._focusin();\n\t }\n\n\t if(that.options.factor && value) {\n\t value = value/that.options.factor;\n\t }\n\n\t value = +(value + that.options.step * step).toFixed(precision);\n\t value = that._adjust(value);\n\t that._update(value);\n\t that._typing = false;\n\n\t if (originalValue !== value) {\n\t that.trigger(SPIN);\n\t }\n\t },\n\n\t _toggleHover: function(e) {\n\t $(e.currentTarget).toggleClass(HOVER, e.type === \"mouseenter\");\n\t },\n\n\t _toggleText: function(toggle) {\n\t var that = this;\n\n\t that._text.toggle(toggle);\n\t that.element.toggle(!toggle);\n\t },\n\n\t _parse: function(value, culture) {\n\t return parse(value, this._culture(culture), this.options.format);\n\t },\n\n\t _round: function(value, precision) {\n\t var rounder = this.options.round ? kendo._round : truncate;\n\n\t return rounder(value, precision);\n\t },\n\n\t _update: function(value) {\n\t var that = this,\n\t options = that.options,\n\t factor = options.factor,\n\t format = options.format,\n\t decimals = options.decimals,\n\t culture = that._culture(),\n\t numberFormat = that._format(format, culture),\n\t isNotNull;\n\n\t if (decimals === NULL) {\n\t decimals = numberFormat.decimals;\n\t }\n\n\t value = that._parse(value, culture);\n\n\t isNotNull = value !== NULL;\n\n\t if (isNotNull) {\n\t value = parseFloat(that._round(value, decimals), 10);\n\t }\n\n\t that._value = value = that._adjust(value);\n\t that._placeholder(kendo.toString(value, format, culture));\n\n\t if (isNotNull) {\n\t if(factor) {\n\t value = parseFloat(that._round(value*factor, decimals), 10);\n\t }\n\t value = value.toString();\n\t if (value.indexOf(\"e\") !== -1) {\n\t value = that._round(+value, decimals);\n\t }\n\t value = value.replace(POINT, numberFormat[POINT]);\n\t } else {\n\t value = null;\n\t }\n\n\t that.element.val(value);\n\t that._oldText = value;\n\t that.element.add(that._text).attr(\"aria-valuenow\", value);\n\t },\n\n\t _placeholder: function(value) {\n\t var input = this._text;\n\n\t input.val(value);\n\t if (!placeholderSupported && !value) {\n\t input.val(this.options.placeholder);\n\t }\n\n\t input.attr(\"title\", this.element.attr(\"title\") || input.val());\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element,\n\t DOMElement = element[0],\n\t wrapper;\n\n\t wrapper = element.parents(\".k-numerictextbox\");\n\n\t if (!wrapper.is(\"span.k-numerictextbox\")) {\n\t wrapper = element.hide().wrap('').parent();\n\t wrapper = wrapper.wrap(\"\").parent();\n\t }\n\n\t wrapper[0].style.cssText = DOMElement.style.cssText;\n\t DOMElement.style.width = \"\";\n\t that.wrapper = wrapper.addClass(\"k-widget k-numerictextbox\")\n\t .addClass(DOMElement.className)\n\t .removeClass('input-validation-error')\n\t .css(\"display\", \"\");\n\n\t that._inputWrapper = $(wrapper[0].firstChild);\n\t },\n\n\t _reset: function() {\n\t var that = this,\n\t element = that.element,\n\t formId = element.attr(\"form\"),\n\t form = formId ? $(\"#\" + formId) : element.closest(\"form\");\n\n\t if (form[0]) {\n\t that._resetHandler = function() {\n\t setTimeout(function() {\n\t that.value(element[0].value);\n\t that.max(that._initialOptions.max);\n\t that.min(that._initialOptions.min);\n\t });\n\t };\n\n\t that._form = form.on(\"reset\", that._resetHandler);\n\t }\n\t }\n\t });\n\n\t function buttonHtml(direction, text) {\n\t var className = \"k-i-arrow-\" + (direction === \"increase\" ? \"60-up\" : \"60-down\");\n\n\t return (\n\t '' +\n\t '' +\n\t ''\n\t );\n\t }\n\n\t function truncate(value, precision) {\n\t var parts = parseFloat(value, 10).toString().split(POINT);\n\n\t if (parts[1]) {\n\t parts[1] = parts[1].substring(0, precision);\n\t }\n\n\t return parts.join(POINT);\n\n\t }\n\n\t ui.plugin(NumericTextBox);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1293);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1027:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1293:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1027) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"pager\",\n\t name: \"Pager\",\n\t category: \"framework\",\n\t depends: [ \"data\" ],\n\t advanced: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t proxy = $.proxy,\n\t FIRST = \".k-i-arrow-end-left\",\n\t LAST = \".k-i-arrow-end-right\",\n\t PREV = \".k-i-arrow-60-left\",\n\t NEXT = \".k-i-arrow-60-right\",\n\t SIZE = \"k-pager-lg k-pager-md k-pager-sm\",\n\t CHANGE = \"change\",\n\t NS = \".kendoPager\",\n\t CLICK = \"click\",\n\t KEYDOWN = \"keydown\",\n\t DISABLED = \"disabled\",\n\t MOUSEDOWN = \"down\",\n\t DOCUMENT_ELEMENT = $(document.documentElement),\n\t MAX_VALUE = Number.MAX_VALUE,\n\t iconTemplate = kendo.template('');\n\n\t function button(template, idx, text, numeric, title) {\n\t return template( {\n\t idx: idx,\n\t text: text,\n\t ns: kendo.ns,\n\t numeric: numeric,\n\t title: title || \"\"\n\t });\n\t }\n\n\t function icon(className, text, wrapClassName) {\n\t return iconTemplate({\n\t className: className.substring(1),\n\t text: text,\n\t wrapClassName: wrapClassName || \"\"\n\t });\n\t }\n\n\t function update(element, selector, page, disabled) {\n\t element.find(selector)\n\t .parent()\n\t .attr(kendo.attr(\"page\"), page)\n\t .attr(\"tabindex\", -1)\n\t .toggleClass(\"k-state-disabled\", disabled);\n\t }\n\n\t function first(element, page) {\n\t update(element, FIRST, 1, page <= 1);\n\t }\n\n\t function prev(element, page) {\n\t update(element, PREV, Math.max(1, page - 1), page <= 1);\n\t }\n\n\t function next(element, page, totalPages) {\n\t update(element, NEXT, Math.min(totalPages, page + 1), page >= totalPages);\n\t }\n\n\t function last(element, page, totalPages) {\n\t update(element, LAST, totalPages, page >= totalPages);\n\t }\n\n\t var Pager = Widget.extend( {\n\t init: function(element, options) {\n\t var that = this, page, totalPages;\n\t var sizeClassName = null;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t options = that.options;\n\t that._createDataSource(options);\n\t that.linkTemplate = kendo.template(that.options.linkTemplate);\n\t that.selectTemplate = kendo.template(that.options.selectTemplate);\n\t that.currentPageTemplate = kendo.template(that.options.currentPageTemplate);\n\n\t page = that.page();\n\t totalPages = that.totalPages();\n\n\t that._refreshHandler = proxy(that.refresh, that);\n\n\t that.dataSource.bind(CHANGE, that._refreshHandler);\n\t that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\t if (options.previousNext) {\n\t if (!that.element.find(FIRST).length) {\n\t that.element.append(icon(FIRST, options.messages.first, \"k-pager-first\"));\n\n\t first(that.element, page, totalPages);\n\t }\n\n\t if (!that.element.find(PREV).length) {\n\t that.element.append(icon(PREV, options.messages.previous));\n\n\t prev(that.element, page, totalPages);\n\t }\n\t }\n\n\t if (options.numeric) {\n\t that.list = that.element.find(\".k-pager-numbers\");\n\n\t if (!that.list.length) {\n\t that.list = $('
      ').appendTo(that.element);\n\t }\n\t if (options.dataSource && !options.dataSource.total()) {\n\t that.list.empty().append(that.currentPageTemplate({ text: 0 })).append(that.selectTemplate({ text: 0 }));\n\t }\n\t if (!that.list.parent().hasClass(\"k-pager-numbers-wrap\")) {\n\t that.list.wrap('
      ');\n\t }\n\t }\n\n\t if (options.input) {\n\t if (!that.element.find(\".k-pager-input\").length) {\n\t that.element.append(''+\n\t options.messages.page +\n\t '' +\n\t kendo.format(options.messages.of, totalPages) +\n\t '');\n\t }\n\n\t that.element.on(KEYDOWN + NS, \".k-pager-input input\", proxy(that._keydown, that));\n\t }\n\n\t if (options.previousNext) {\n\t if (!that.element.find(NEXT).length) {\n\t that.element.append(icon(NEXT, options.messages.next));\n\n\t next(that.element, page, totalPages);\n\t }\n\n\t if (!that.element.find(LAST).length) {\n\t that.element.append(icon(LAST, options.messages.last, \"k-pager-last\"));\n\n\t last(that.element, page, totalPages);\n\t }\n\t }\n\n\t if (options.pageSizes){\n\t if (!that.element.find(\".k-pager-sizes\").length){\n\t var pageSizes = options.pageSizes.length ? options.pageSizes : [\"all\", 5, 10, 20];\n\t var pageItems = $.map(pageSizes, function(size) {\n\t if (size.toLowerCase && size.toLowerCase() === \"all\") {\n\t return \"\";\n\t }\n\n\t return \"\";\n\t });\n\n\t $('' +\n\t kendo.format(options.messages.of, totalPages))\n\t .find(\"input\")\n\t .val(page)\n\t .attr(DISABLED, total < 1)\n\t .toggleClass(\"k-state-disabled\", total < 1);\n\t }\n\n\t if (options.previousNext) {\n\t first(that.element, page, totalPages);\n\n\t prev(that.element, page, totalPages);\n\n\t next(that.element, page, totalPages);\n\n\t last(that.element, page, totalPages);\n\t }\n\n\t if (options.pageSizes) {\n\t var hasAll = that.element.find(\".k-pager-sizes option[value='all']\").length > 0;\n\t var selectAll = hasAll && (pageSize === this.dataSource.total() || pageSize == MAX_VALUE);\n\t var text = pageSize;\n\t if (selectAll) {\n\t pageSize = \"all\";\n\t text = options.messages.allPages;\n\t }\n\n\t that.element\n\t .find(\".k-pager-sizes select\")\n\t .val(pageSize)\n\t .attr(\"aria-label\", pageSize)\n\t .filter(\"[\" + kendo.attr(\"role\") + \"=dropdownlist]\")\n\t .kendoDropDownList(\"value\", pageSize)\n\t .kendoDropDownList(\"text\", text); // handles custom values\n\t }\n\t },\n\n\t _collapsedTotal: function() {\n\t return this.dataSource.total();\n\t },\n\n\t _keydown: function(e) {\n\t if (e.keyCode === kendo.keys.ENTER) {\n\t var input = this.element.find(\".k-pager-input\").find(\"input\"),\n\t page = parseInt(input.val(), 10);\n\n\t if (isNaN(page) || page < 1 || page > this.totalPages()) {\n\t page = this.page();\n\t }\n\n\t input.val(page);\n\n\t this.page(page);\n\t }\n\t },\n\n\t _refreshClick: function(e) {\n\t e.preventDefault();\n\n\t this.dataSource.read();\n\t },\n\n\t _change: function(e) {\n\t var value = e.currentTarget.value;\n\t var pageSize = parseInt(value, 10);\n\t var dataSource = this.dataSource;\n\n\t if (!isNaN(pageSize)){\n\t dataSource.pageSize(pageSize);\n\t } else if ((value + \"\").toLowerCase() == \"all\") {\n\t dataSource._pageSize = undefined;\n\t dataSource._take = undefined;\n\t dataSource._skip = 0;\n\t dataSource.fetch();\n\t }\n\t },\n\n\t _toggleActive: function() {\n\t var that = this;\n\n\t if (that.list.hasClass(\"k-state-expanded\")) {\n\t DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that));\n\t } else {\n\t DOCUMENT_ELEMENT.bind(that.downEvent, $.proxy(that._hideList, that));\n\t }\n\t that.list.toggleClass(\"k-state-expanded\");\n\t },\n\n\t _hideList: function(e) {\n\t var that = this,\n\t target = kendo.eventTarget(e);\n\n\t if (!$.contains(that.list[0], target)) {\n\t DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that));\n\t that.list.removeClass(\"k-state-expanded\");\n\t }\n\t },\n\n\t _click: function(e) {\n\t var target = $(e.currentTarget);\n\n\t e.preventDefault();\n\n\t if (!target.is(\".k-state-disabled\")) {\n\t this.page(parseInt(target.attr(kendo.attr(\"page\")), 10));\n\t }\n\t },\n\n\t totalPages: function() {\n\t return Math.ceil((this.dataSource.total() || 0) / (this.pageSize() || 1));\n\t },\n\n\t pageSize: function() {\n\t return this.dataSource.pageSize() || this.dataSource.total();\n\t },\n\n\t page: function(page) {\n\t if (page) {\n\t if (this.trigger(\"pageChange\", { index: page })) {\n\t return;\n\t }\n\n\t this.dataSource.page(page);\n\n\t this.trigger(CHANGE, { index: page });\n\t } else {\n\t if (this.dataSource.total() > 0) {\n\t return this.dataSource.page();\n\t } else {\n\t return 0;\n\t }\n\t }\n\t },\n\n\t _getWidthSizeClass: function(width) {\n\t var that = this,\n\t sizes = SIZE.split(\" \");\n\n\t if (!that.options.responsive) {\n\t return null;\n\t } else if (width <= 480) {\n\t return sizes[2];\n\t } else if (width <= 640) {\n\t return sizes[1];\n\t } else if (width <= 1024) {\n\t return sizes[0];\n\t }\n\t return null;\n\t }\n\t });\n\n\t ui.plugin(Pager);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1312);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1312:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"popup\",\n\t name: \"Pop-up\",\n\t category: \"framework\",\n\t depends: [ \"core\" ],\n\t advanced: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t Class = kendo.Class,\n\t support = kendo.support,\n\t getOffset = kendo.getOffset,\n\t outerWidth = kendo._outerWidth,\n\t outerHeight = kendo._outerHeight,\n\t OPEN = \"open\",\n\t CLOSE = \"close\",\n\t DEACTIVATE = \"deactivate\",\n\t ACTIVATE = \"activate\",\n\t CENTER = \"center\",\n\t LEFT = \"left\",\n\t RIGHT = \"right\",\n\t TOP = \"top\",\n\t BOTTOM = \"bottom\",\n\t ABSOLUTE = \"absolute\",\n\t HIDDEN = \"hidden\",\n\t BODY = \"body\",\n\t LOCATION = \"location\",\n\t POSITION = \"position\",\n\t VISIBLE = \"visible\",\n\t EFFECTS = \"effects\",\n\t ACTIVE = \"k-state-active\",\n\t ACTIVEBORDER = \"k-state-border\",\n\t ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\n\t ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n\t MOUSEDOWN = \"down\",\n\t DOCUMENT_ELEMENT = $(document.documentElement),\n\t proxy = $.proxy,\n\t WINDOW = $(window),\n\t SCROLL = \"scroll\",\n\t cssPrefix = support.transitions.css,\n\t TRANSFORM = cssPrefix + \"transform\",\n\t extend = $.extend,\n\t NS = \".kendoPopup\",\n\t styles = [\"font-size\",\n\t \"font-family\",\n\t \"font-stretch\",\n\t \"font-style\",\n\t \"font-weight\",\n\t \"line-height\"];\n\n\t function contains(container, target) {\n\t if (!container || !target) {\n\t return false;\n\t }\n\t return container === target || $.contains(container, target);\n\t }\n\n\t var Popup = Widget.extend({\n\t init: function(element, options) {\n\t var that = this, parentPopup;\n\n\t options = options || {};\n\n\t if (options.isRtl) {\n\t options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n\t options.position = options.position || TOP + \" \" + RIGHT;\n\t }\n\n\t Widget.fn.init.call(that, element, options);\n\n\t element = that.element;\n\t options = that.options;\n\n\t that.collisions = options.collision ? options.collision.split(\" \") : [];\n\t that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n\t if (that.collisions.length === 1) {\n\t that.collisions.push(that.collisions[0]);\n\t }\n\n\t parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n\t options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n\t that.element.hide()\n\t .addClass(\"k-popup k-group k-reset\")\n\t .toggleClass(\"k-rtl\", !!options.isRtl)\n\t .css({ position : ABSOLUTE })\n\t .appendTo(options.appendTo)\n\t .attr(\"aria-hidden\", true)\n\t .on(\"mouseenter\" + NS, function() {\n\t that._hovered = true;\n\t })\n\t .on(\"wheel\" + NS, function(e) {\n\t var list = $(e.target).find(\".k-list\");\n\t var scrollArea = list.parent();\n\t if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n\t (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n\t e.preventDefault();\n\t }\n\t })\n\t .on(\"mouseleave\" + NS, function() {\n\t that._hovered = false;\n\t });\n\n\t that.wrapper = $();\n\n\t if (options.animation === false) {\n\t options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n\t }\n\n\t extend(options.animation.open, {\n\t complete: function() {\n\t that.wrapper.css({ overflow: VISIBLE }); // Forcing refresh causes flickering in mobile.\n\t that._activated = true;\n\t that._trigger(ACTIVATE);\n\t }\n\t });\n\n\t extend(options.animation.close, {\n\t complete: function() {\n\t that._animationClose();\n\t }\n\t });\n\n\t that._mousedownProxy = function(e) {\n\t that._mousedown(e);\n\t };\n\n\t if (support.mobileOS.android) {\n\t that._resizeProxy = function(e) {\n\t setTimeout(function() {\n\t that._resize(e);\n\t }, 600); //Logic from kendo.onResize\n\t };\n\t } else {\n\t that._resizeProxy = function(e) {\n\t that._resize(e);\n\t };\n\t }\n\n\t if (options.toggleTarget) {\n\t $(options.toggleTarget).on(options.toggleEvent + NS, $.proxy(that.toggle, that));\n\t }\n\t },\n\n\t events: [\n\t OPEN,\n\t ACTIVATE,\n\t CLOSE,\n\t DEACTIVATE\n\t ],\n\n\t options: {\n\t name: \"Popup\",\n\t toggleEvent: \"click\",\n\t origin: BOTTOM + \" \" + LEFT,\n\t position: TOP + \" \" + LEFT,\n\t anchor: BODY,\n\t appendTo: null,\n\t collision: \"flip fit\",\n\t viewport: window,\n\t copyAnchorStyles: true,\n\t autosize: false,\n\t modal: false,\n\t adjustSize: {\n\t width: 0,\n\t height: 0\n\t },\n\t animation: {\n\t open: {\n\t effects: \"slideIn:down\",\n\t transition: true,\n\t duration: 200\n\t },\n\t close: { // if close animation effects are defined, they will be used instead of open.reverse\n\t duration: 100,\n\t hide: true\n\t }\n\t }\n\t },\n\n\t _animationClose: function() {\n\t var that = this;\n\t var location = that.wrapper.data(LOCATION);\n\n\t that.wrapper.hide();\n\n\t if (location) {\n\t that.wrapper.css(location);\n\t }\n\n\t if (that.options.anchor != BODY) {\n\t that._hideDirClass();\n\t }\n\n\t that._closing = false;\n\t that._trigger(DEACTIVATE);\n\t },\n\n\t destroy: function() {\n\t var that = this,\n\t options = that.options,\n\t element = that.element.off(NS),\n\t parent;\n\n\t Widget.fn.destroy.call(that);\n\n\t if (options.toggleTarget) {\n\t $(options.toggleTarget).off(NS);\n\t }\n\n\t if (!options.modal) {\n\t DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\t that._toggleResize(false);\n\t }\n\n\t kendo.destroy(that.element.children());\n\t element.removeData();\n\n\t if (options.appendTo[0] === document.body) {\n\t parent = element.parent(\".k-animation-container\");\n\n\t if (parent[0]) {\n\t parent.remove();\n\t } else {\n\t element.remove();\n\t }\n\t }\n\t },\n\n\t open: function(x, y) {\n\t var that = this,\n\t fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n\t element = that.element,\n\t options = that.options,\n\t animation, wrapper,\n\t anchor = $(options.anchor),\n\t mobile = element[0] && element.hasClass(\"km-widget\");\n\n\t if (!that.visible()) {\n\t if (options.copyAnchorStyles) {\n\t if (mobile && styles[0] == \"font-size\") {\n\t styles.shift();\n\t }\n\t element.css(kendo.getComputedStyles(anchor[0], styles));\n\t }\n\n\t if (element.data(\"animating\") || that._trigger(OPEN)) {\n\t return;\n\t }\n\n\t that._activated = false;\n\n\t if (!options.modal) {\n\t DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n\t .on(that.downEvent, that._mousedownProxy);\n\n\t // this binding hangs iOS in editor\n\t // all elements in IE7/8 fire resize event, causing mayhem\n\t that._toggleResize(false);\n\t that._toggleResize(true);\n\t }\n\n\t that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n\t .css({\n\t overflow: HIDDEN,\n\t display: \"block\",\n\t position: ABSOLUTE\n\t })\n\t .attr(\"aria-hidden\", false);\n\n\t if (support.mobileOS.android) {\n\t wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n\t }\n\n\t wrapper.css(POSITION);\n\n\t if ($(options.appendTo)[0] == document.body) {\n\t wrapper.css(TOP, \"-10000px\");\n\t }\n\n\t that.flipped = that._position(fixed);\n\t animation = that._openAnimation();\n\n\t if (options.anchor != BODY) {\n\t that._showDirClass(animation);\n\t }\n\n\t element.data(EFFECTS, animation.effects)\n\t .kendoStop(true)\n\t .kendoAnimate(animation)\n\t .attr(\"aria-hidden\", false);\n\t }\n\t },\n\n\t _location: function(isFixed) {\n\t var that = this,\n\t element = that.element,\n\t options = that.options,\n\t wrapper,\n\t anchor = $(options.anchor),\n\t mobile = element[0] && element.hasClass(\"km-widget\");\n\n\t if (options.copyAnchorStyles) {\n\t if (mobile && styles[0] == \"font-size\") {\n\t styles.shift();\n\t }\n\t element.css(kendo.getComputedStyles(anchor[0], styles));\n\t }\n\n\t that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n\t .css({\n\t overflow: HIDDEN,\n\t display: \"block\",\n\t position: ABSOLUTE\n\t });\n\n\t if (support.mobileOS.android) {\n\t wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n\t }\n\n\t wrapper.css(POSITION);\n\n\t if ($(options.appendTo)[0] == document.body) {\n\t wrapper.css(TOP, \"-10000px\");\n\t }\n\n\t that._position(isFixed || {});\n\n\t var offset = wrapper.offset();\n\t return {\n\t width: kendo._outerWidth(wrapper),\n\t height: kendo._outerHeight(wrapper),\n\t left: offset.left,\n\t top: offset.top\n\t };\n\t },\n\n\t _openAnimation: function() {\n\t var animation = extend(true, {}, this.options.animation.open);\n\t animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n\t return animation;\n\t },\n\n\t _hideDirClass: function() {\n\t var anchor = $(this.options.anchor);\n\t var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n\t var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n\t anchor\n\t .removeClass(dirClass)\n\t .children(ACTIVECHILDREN)\n\t .removeClass(ACTIVE)\n\t .removeClass(dirClass);\n\n\t this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n\t },\n\n\t _showDirClass: function(animation) {\n\t var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n\t var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n\t $(this.options.anchor)\n\t .addClass(dirClass)\n\t .children(ACTIVECHILDREN)\n\t .addClass(ACTIVE)\n\t .addClass(dirClass);\n\n\t this.element.addClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n\t },\n\n\t position: function() {\n\t if (this.visible()) {\n\t this.flipped = this._position();\n\t //this._hideDirClass();\n\t //this._showDirClass(this._openAnimation());\n\t }\n\t },\n\n\t toggle: function() {\n\t var that = this;\n\n\t that[that.visible() ? CLOSE : OPEN]();\n\t },\n\n\t visible: function() {\n\t return this.element.is(\":\" + VISIBLE);\n\t },\n\n\t close: function(skipEffects) {\n\t var that = this,\n\t options = that.options, wrap,\n\t animation, openEffects, closeEffects;\n\n\t if (that.visible()) {\n\t wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n\t that._toggleResize(false);\n\n\t if (that._closing || that._trigger(CLOSE)) {\n\t that._toggleResize(true);\n\t return;\n\t }\n\n\t // Close all inclusive popups.\n\t that.element.find(\".k-popup\").each(function () {\n\t var that = $(this),\n\t popup = that.data(\"kendoPopup\");\n\n\t if (popup) {\n\t popup.close(skipEffects);\n\t }\n\t });\n\n\t DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n\t if (skipEffects) {\n\t animation = { hide: true, effects: {} };\n\t } else {\n\t animation = extend(true, {}, options.animation.close);\n\t openEffects = that.element.data(EFFECTS);\n\t closeEffects = animation.effects;\n\n\t if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n\t animation.effects = openEffects;\n\t animation.reverse = true;\n\t }\n\n\t that._closing = true;\n\t }\n\n\t that.element\n\t .kendoStop(true)\n\t .attr(\"aria-hidden\", true);\n\t wrap\n\t .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n\t .attr(\"aria-hidden\", true);\n\t that.element.kendoAnimate(animation);\n\n\t if (skipEffects) {\n\t that._animationClose();\n\t }\n\t }\n\t },\n\n\t _trigger: function(ev) {\n\t return this.trigger(ev, { type: ev });\n\t },\n\n\t _resize: function(e) {\n\t var that = this;\n\n\t if (support.resize.indexOf(e.type) !== -1) {\n\t clearTimeout(that._resizeTimeout);\n\t that._resizeTimeout = setTimeout(function() {\n\t that._position();\n\t that._resizeTimeout = null;\n\t }, 50);\n\t } else {\n\t if (!that._hovered || (that._activated && that.element.hasClass(\"k-list-container\"))) {\n\t that.close();\n\t }\n\t }\n\t },\n\n\t _toggleResize: function(toggle) {\n\t var method = toggle ? \"on\" : \"off\";\n\t var eventNames = support.resize;\n\n\t if (!(support.mobileOS.ios || support.mobileOS.android)) {\n\t eventNames += \" \" + SCROLL;\n\t }\n\n\t if (toggle && !this.scrollableParents) {\n\t this.scrollableParents = this._scrollableParents();\n\t }\n\n\t if (this.scrollableParents && this.scrollableParents.length) {\n\t this.scrollableParents[method](SCROLL, this._resizeProxy);\n\t }\n\n\t WINDOW[method](eventNames, this._resizeProxy);\n\t },\n\n\t _mousedown: function(e) {\n\t var that = this,\n\t container = that.element[0],\n\t options = that.options,\n\t anchor = $(options.anchor)[0],\n\t toggleTarget = options.toggleTarget,\n\t target = kendo.eventTarget(e),\n\t popup = $(target).closest(\".k-popup\"),\n\t mobile = popup.parent().parent(\".km-shim\").length;\n\n\t popup = popup[0];\n\t if (!mobile && popup && popup !== that.element[0]){\n\t return;\n\t }\n\n\t // This MAY result in popup not closing in certain cases.\n\t if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n\t return;\n\t }\n\n\t if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n\t that.close();\n\t }\n\t },\n\n\t _fit: function(position, size, viewPortSize) {\n\t var output = 0;\n\n\t if (position + size > viewPortSize) {\n\t output = viewPortSize - (position + size);\n\t }\n\n\t if (position < 0) {\n\t output = -position;\n\t }\n\n\t return output;\n\t },\n\n\t _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n\t var output = 0;\n\t boxSize = boxSize || size;\n\n\t if (position !== origin && position !== CENTER && origin !== CENTER) {\n\t if (offset + boxSize > viewPortSize) {\n\t output += -(anchorSize + size);\n\t }\n\n\t if (offset + output < 0) {\n\t output += anchorSize + size;\n\t }\n\t }\n\t return output;\n\t },\n\n\t _scrollableParents: function() {\n\t return $(this.options.anchor)\n\t .parentsUntil(\"body\")\n\t .filter(function(index, element) {\n\t return kendo.isScrollable(element);\n\t });\n\t },\n\n\t _position: function(fixed) {\n\t var that = this,\n\t //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n\t element = that.element,\n\t wrapper = that.wrapper,\n\t options = that.options,\n\t viewport = $(options.viewport),\n\t zoomLevel = support.zoomLevel(),\n\t isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n\t anchor = $(options.anchor),\n\t origins = options.origin.toLowerCase().split(\" \"),\n\t positions = options.position.toLowerCase().split(\" \"),\n\t collisions = that.collisions,\n\t siblingContainer, parents,\n\t parentZIndex, zIndex = 10002,\n\t idx = 0,\n\t docEl = document.documentElement,\n\t length, viewportOffset, viewportWidth, viewportHeight;\n\n\t if (options.viewport === window) {\n\t viewportOffset = {\n\t top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n\t left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n\t };\n\t } else {\n\t viewportOffset = viewport.offset();\n\t }\n\n\t if (isWindow) {\n\t viewportWidth = window.innerWidth;\n\t viewportHeight = window.innerHeight;\n\t } else {\n\t viewportWidth = viewport.width();\n\t viewportHeight = viewport.height();\n\t }\n\n\t if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n\t var sign = options.isRtl ? -1 : 1;\n\n\t viewportWidth -= sign * kendo.support.scrollbar();\n\t }\n\n\t siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n\t if (siblingContainer[0]) {\n\t parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n\t // set z-index to be more than that of the container/sibling\n\t // compensate with more units for window z-stack\n\t if (parentZIndex) {\n\t zIndex = parentZIndex + 10;\n\t } else {\n\t parents = anchor.parentsUntil(siblingContainer);\n\t for (length = parents.length; idx < length; idx++) {\n\t parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n\t if (parentZIndex && zIndex < parentZIndex) {\n\t zIndex = parentZIndex + 10;\n\t }\n\t }\n\t }\n\t }\n\n\t wrapper.css(\"zIndex\", zIndex);\n\n\t if (fixed && fixed.isFixed) {\n\t wrapper.css({ left: fixed.x, top: fixed.y });\n\t } else {\n\t wrapper.css(that._align(origins, positions));\n\t }\n\n\t var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n\t offset = getOffset(wrapper),\n\t anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n\t if (anchorParent.length) {\n\t pos = getOffset(wrapper, POSITION, true);\n\t offset = getOffset(wrapper);\n\t }\n\n\t offset.top -= viewportOffset.top;\n\t offset.left -= viewportOffset.left;\n\n\t if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n\t wrapper.data(LOCATION, extend({}, pos));\n\t }\n\n\t var offsets = extend({}, offset),\n\t location = extend({}, pos),\n\t adjustSize = options.adjustSize;\n\n\t if (collisions[0] === \"fit\") {\n\t location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n\t }\n\n\t if (collisions[1] === \"fit\") {\n\t location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n\t }\n\n\t var flipPos = extend({}, location);\n\t var elementHeight = outerHeight(element);\n\t var wrapperHeight = outerHeight(wrapper);\n\n\t if (!wrapper.height() && elementHeight) {\n\t wrapperHeight = wrapperHeight + elementHeight;\n\t }\n\n\t if (collisions[0] === \"flip\") {\n\t location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n\t }\n\n\t if (collisions[1] === \"flip\") {\n\t location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n\t }\n\n\t element.css(POSITION, ABSOLUTE);\n\t wrapper.css(location);\n\n\t return (location.left != flipPos.left || location.top != flipPos.top);\n\t },\n\n\t _align: function(origin, position) {\n\t var that = this,\n\t element = that.wrapper,\n\t anchor = $(that.options.anchor),\n\t verticalOrigin = origin[0],\n\t horizontalOrigin = origin[1],\n\t verticalPosition = position[0],\n\t horizontalPosition = position[1],\n\t anchorOffset = getOffset(anchor),\n\t appendTo = $(that.options.appendTo),\n\t appendToOffset,\n\t width = outerWidth(element),\n\t height = outerHeight(element) || outerHeight(element.children().first()),\n\t anchorWidth = outerWidth(anchor),\n\t anchorHeight = outerHeight(anchor),\n\t top = anchorOffset.top,\n\t left = anchorOffset.left,\n\t round = Math.round;\n\n\t if (appendTo[0] != document.body) {\n\t appendToOffset = getOffset(appendTo);\n\t top -= appendToOffset.top;\n\t left -= appendToOffset.left;\n\t }\n\n\n\t if (verticalOrigin === BOTTOM) {\n\t top += anchorHeight;\n\t }\n\n\t if (verticalOrigin === CENTER) {\n\t top += round(anchorHeight / 2);\n\t }\n\n\t if (verticalPosition === BOTTOM) {\n\t top -= height;\n\t }\n\n\t if (verticalPosition === CENTER) {\n\t top -= round(height / 2);\n\t }\n\n\t if (horizontalOrigin === RIGHT) {\n\t left += anchorWidth;\n\t }\n\n\t if (horizontalOrigin === CENTER) {\n\t left += round(anchorWidth / 2);\n\t }\n\n\t if (horizontalPosition === RIGHT) {\n\t left -= width;\n\t }\n\n\t if (horizontalPosition === CENTER) {\n\t left -= round(width / 2);\n\t }\n\n\t return {\n\t top: top,\n\t left: left\n\t };\n\t }\n\t });\n\n\t ui.plugin(Popup);\n\n\t var stableSort = kendo.support.stableSort;\n\t var tabKeyTrapNS = \"kendoTabKeyTrap\";\n\t var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n\t var TabKeyTrap = Class.extend({\n\t init: function(element) {\n\t this.element = $(element);\n\t this.element.autoApplyNS(tabKeyTrapNS);\n\t },\n\n\t trap: function() {\n\t this.element.on(\"keydown\", proxy(this._keepInTrap, this));\n\t },\n\n\t removeTrap: function() {\n\t this.element.kendoDestroy(tabKeyTrapNS);\n\t },\n\n\t destroy: function() {\n\t this.element.kendoDestroy(tabKeyTrapNS);\n\t this.element = undefined;\n\t },\n\n\t shouldTrap: function () {\n\t return true;\n\t },\n\n\t _keepInTrap: function(e) {\n\t if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n\t return;\n\t }\n\n\t var elements = this._focusableElements();\n\t var sortedElements = this._sortFocusableElements(elements);\n\t var next = this._nextFocusable(e, sortedElements);\n\n\t this._focus(next);\n\n\t e.preventDefault();\n\t },\n\t _focusableElements: function(){\n\t var elements = this.element.find(focusableNodesSelector).filter(function(i, item){\n\t return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n\t });\n\n\t if (this.element.is(\"[tabindex]\")) {\n\t elements.push(this.element[0]);\n\t }\n\n\t return elements;\n\t },\n\t _sortFocusableElements: function(elements){\n\t var sortedElements;\n\n\t if (stableSort) {\n\t sortedElements = elements.sort(function(prev, next) {\n\t return prev.tabIndex - next.tabIndex;\n\t });\n\t } else {\n\t var attrName = \"__k_index\";\n\t elements.each(function(i, item){\n\t item.setAttribute(attrName, i);\n\t });\n\n\t sortedElements = elements.sort(function(prev, next) {\n\t return prev.tabIndex === next.tabIndex ?\n\t parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n\t prev.tabIndex - next.tabIndex;\n\t });\n\n\t elements.removeAttr(attrName);\n\t }\n\n\t return sortedElements;\n\t },\n\t _nextFocusable: function(e, elements){\n\t var count = elements.length;\n\t var current = elements.index(e.target);\n\n\t return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n\t },\n\t _focus: function(element){\n\t if (element.nodeName == \"IFRAME\") {\n\t element.contentWindow.document.body.focus();\n\t return;\n\t }\n\n\t element.focus();\n\n\t if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n\t element.setSelectionRange(0, element.value.length);\n\t }\n\t },\n\t _haveSelectionRange: function(element){\n\t var elementType = element.type.toLowerCase();\n\n\t return elementType === \"text\" || elementType === \"search\" ||\n\t elementType === \"url\" || elementType === \"tel\" ||\n\t elementType === \"password\";\n\t }\n\t });\n\t ui.Popup.TabKeyTrap = TabKeyTrap;\n\t})(window.kendo.jQuery);\n\n\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1320);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"router\",\n\t name: \"Router\",\n\t category: \"framework\",\n\t description: \"The Router class is responsible for tracking the application state and navigating between the application states.\",\n\t depends: [ \"core\" ],\n\t hidden: false\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t CHANGE = \"change\",\n\t BACK = \"back\",\n\t SAME = \"same\",\n\t support = kendo.support,\n\t location = window.location,\n\t history = window.history,\n\t CHECK_URL_INTERVAL = 50,\n\t BROKEN_BACK_NAV = kendo.support.browser.msie,\n\t hashStrip = /^#*/,\n\t document = window.document;\n\n\t function absoluteURL(path, pathPrefix) {\n\t if (!pathPrefix) {\n\t return path;\n\t }\n\n\t if (path + \"/\" === pathPrefix) {\n\t path = pathPrefix;\n\t }\n\n\t var regEx = new RegExp(\"^\" + pathPrefix, \"i\");\n\n\t if (!regEx.test(path)) {\n\t path = pathPrefix + \"/\" + path;\n\t }\n\n\t return location.protocol + '//' + (location.host + \"/\" + path).replace(/\\/\\/+/g, '/');\n\t }\n\n\t function hashDelimiter(bang) {\n\t return bang ? \"#!\" : \"#\";\n\t }\n\n\t function locationHash(hashDelimiter) {\n\t var href = location.href;\n\n\t // ignore normal anchors if in hashbang mode - however, still return \"\" if no hash present\n\t if (hashDelimiter === \"#!\" && href.indexOf(\"#\") > -1 && href.indexOf(\"#!\") < 0) {\n\t return null;\n\t }\n\n\t return href.split(hashDelimiter)[1] || \"\";\n\t }\n\n\t function stripRoot(root, url) {\n\t if (url.indexOf(root) === 0) {\n\t return (url.substr(root.length)).replace(/\\/\\//g, '/');\n\t } else {\n\t return url;\n\t }\n\t }\n\n\t var HistoryAdapter = kendo.Class.extend({\n\t back: function() {\n\t if (BROKEN_BACK_NAV) {\n\t setTimeout(function() { history.back(); });\n\t } else {\n\t history.back();\n\t }\n\t },\n\n\t forward: function() {\n\t if (BROKEN_BACK_NAV) {\n\t setTimeout(function() { history.forward(); });\n\t } else {\n\t history.forward();\n\t }\n\t },\n\n\t length: function() {\n\t return history.length;\n\t },\n\n\t replaceLocation: function(url) {\n\t location.replace(url);\n\t }\n\t });\n\n\t var PushStateAdapter = HistoryAdapter.extend({\n\t init: function(root) {\n\t this.root = root;\n\t },\n\n\t navigate: function(to) {\n\t history.pushState({}, document.title, absoluteURL(to, this.root));\n\t },\n\n\t replace: function(to) {\n\t history.replaceState({}, document.title, absoluteURL(to, this.root));\n\t },\n\n\t normalize: function(url) {\n\t return stripRoot(this.root, url);\n\t },\n\n\t current: function() {\n\t var current = location.pathname;\n\n\t if (location.search) {\n\t current += location.search;\n\t }\n\n\t return stripRoot(this.root, current);\n\t },\n\n\t change: function(callback) {\n\t $(window).bind(\"popstate.kendo\", callback);\n\t },\n\n\t stop: function() {\n\t $(window).unbind(\"popstate.kendo\");\n\t },\n\n\t normalizeCurrent: function(options) {\n\t var fixedUrl,\n\t root = options.root,\n\t pathname = location.pathname,\n\t hash = locationHash(hashDelimiter(options.hashBang));\n\n\t if (root === pathname + \"/\") {\n\t fixedUrl = root;\n\t }\n\n\t if (root === pathname && hash) {\n\t fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n\t }\n\n\t if (fixedUrl) {\n\t history.pushState({}, document.title, fixedUrl);\n\t }\n\t }\n\t });\n\n\t function fixHash(url) {\n\t return url.replace(/^(#)?/, \"#\");\n\t }\n\n\t function fixBang(url) {\n\t return url.replace(/^(#(!)?)?/, \"#!\");\n\t }\n\n\t var HashAdapter = HistoryAdapter.extend({\n\t init: function(bang) {\n\t this._id = kendo.guid();\n\t this.prefix = hashDelimiter(bang);\n\t this.fix = bang ? fixBang : fixHash;\n\t },\n\n\t navigate: function(to) {\n\t location.hash = this.fix(to);\n\t },\n\n\t replace: function(to) {\n\t this.replaceLocation(this.fix(to));\n\t },\n\n\t normalize: function(url) {\n\t if (url.indexOf(this.prefix) < 0) {\n\t return url;\n\t } else {\n\t return url.split(this.prefix)[1];\n\t }\n\t },\n\n\t change: function(callback) {\n\t if (support.hashChange) {\n\t $(window).on(\"hashchange.\" + this._id, callback);\n\t } else {\n\t this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n\t }\n\t },\n\n\t stop: function() {\n\t $(window).off(\"hashchange.\" + this._id);\n\t clearInterval(this._interval);\n\t },\n\n\t current: function() {\n\t return locationHash(this.prefix);\n\t },\n\n\t normalizeCurrent: function(options) {\n\t var pathname = location.pathname,\n\t root = options.root;\n\n\t if (options.pushState && root !== pathname) {\n\t this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n\t return true; // browser will reload at this point.\n\t }\n\n\t return false;\n\t }\n\t });\n\n\t var History = kendo.Observable.extend({\n\t start: function(options) {\n\t options = options || {};\n\n\t this.bind([CHANGE, BACK, SAME], options);\n\n\t if (this._started) {\n\t return;\n\t }\n\n\t this._started = true;\n\n\t options.root = options.root || \"/\";\n\n\t var adapter = this.createAdapter(options),\n\t current;\n\n\t // adapter may reload the document\n\t if (adapter.normalizeCurrent(options)) {\n\t return;\n\t }\n\n\t current = adapter.current();\n\n\t $.extend(this, {\n\t adapter: adapter,\n\t root: options.root,\n\t historyLength: adapter.length(),\n\t current: current,\n\t locations: [current]\n\t });\n\n\t adapter.change($.proxy(this, \"_checkUrl\"));\n\t },\n\n\t createAdapter:function(options) {\n\t return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n\t },\n\n\t stop: function() {\n\t if (!this._started) {\n\t return;\n\t }\n\t this.adapter.stop();\n\t this.unbind(CHANGE);\n\t this._started = false;\n\t },\n\n\t change: function(callback) {\n\t this.bind(CHANGE, callback);\n\t },\n\n\t replace: function(to, silent) {\n\n\t this._navigate(to, silent, function(adapter) {\n\t adapter.replace(to);\n\t this.locations[this.locations.length - 1] = this.current;\n\t });\n\t },\n\n\t navigate: function(to, silent) {\n\t if (to === \"#:back\") {\n\t this.backCalled = true;\n\t this.adapter.back();\n\t return;\n\t }\n\n\t this._navigate(to, silent, function(adapter) {\n\t adapter.navigate(to);\n\t this.locations.push(this.current);\n\t });\n\t },\n\n\t _navigate: function(to, silent, callback) {\n\t var adapter = this.adapter;\n\n\t to = adapter.normalize(to);\n\n\t if (this.current === to || this.current === decodeURIComponent(to)) {\n\t this.trigger(SAME);\n\t return;\n\t }\n\n\t if (!silent) {\n\t if (this.trigger(CHANGE, { url: to, decode: false })) {\n\t return;\n\t }\n\t }\n\n\t this.current = to;\n\n\t callback.call(this, adapter);\n\n\t this.historyLength = adapter.length();\n\t },\n\n\t _checkUrl: function() {\n\t var adapter = this.adapter,\n\t current = adapter.current(),\n\t newLength = adapter.length(),\n\t navigatingInExisting = this.historyLength === newLength,\n\t back = current === this.locations[this.locations.length - 2] && navigatingInExisting,\n\t backCalled = this.backCalled,\n\t prev = this.current;\n\n\t if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n\t return true;\n\t }\n\n\t this.historyLength = newLength;\n\t this.backCalled = false;\n\n\t this.current = current;\n\n\t if (back && this.trigger(\"back\", { url: prev, to: current })) {\n\t adapter.forward();\n\t this.current = prev;\n\t return;\n\t }\n\n\t if (this.trigger(CHANGE, { url: current, backButtonPressed: !backCalled })) {\n\t if (back) {\n\t adapter.forward();\n\t } else {\n\t adapter.back();\n\t this.historyLength --;\n\t }\n\t this.current = prev;\n\t return;\n\t }\n\n\t if (back) {\n\t this.locations.pop();\n\t } else {\n\t this.locations.push(current);\n\t }\n\t }\n\t });\n\n\t kendo.History = History;\n\t kendo.History.HistoryAdapter = HistoryAdapter;\n\t kendo.History.HashAdapter = HashAdapter;\n\t kendo.History.PushStateAdapter = PushStateAdapter;\n\t kendo.absoluteURL = absoluteURL;\n\t kendo.history = new History();\n\t})(window.kendo.jQuery);\n\n\t(function() {\n\t var kendo = window.kendo,\n\t history = kendo.history,\n\t Observable = kendo.Observable,\n\t INIT = \"init\",\n\t ROUTE_MISSING = \"routeMissing\",\n\t CHANGE = \"change\",\n\t BACK = \"back\",\n\t SAME = \"same\",\n\t optionalParam = /\\((.*?)\\)/g,\n\t namedParam = /(\\(\\?)?:\\w+/g,\n\t splatParam = /\\*\\w+/g,\n\t escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n\t function namedParamReplace(match, optional) {\n\t return optional ? match : '([^\\/]+)';\n\t }\n\n\t function routeToRegExp(route, ignoreCase) {\n\t return new RegExp('^' + route\n\t .replace(escapeRegExp, '\\\\$&')\n\t .replace(optionalParam, '(?:$1)?')\n\t .replace(namedParam, namedParamReplace)\n\t .replace(splatParam, '(.*?)') + '$', ignoreCase ? \"i\" : \"\");\n\t }\n\n\t function stripUrl(url) {\n\t return url.replace(/(\\?.*)|(#.*)/g, \"\");\n\t }\n\n\t var Route = kendo.Class.extend({\n\t init: function(route, callback, ignoreCase) {\n\t if (!(route instanceof RegExp)) {\n\t route = routeToRegExp(route, ignoreCase);\n\t }\n\n\t this.route = route;\n\t this._callback = callback;\n\t },\n\n\t callback: function(url, back, decode) {\n\t var params,\n\t idx = 0,\n\t length,\n\t queryStringParams = kendo.parseQueryStringParams(url);\n\t queryStringParams._back = back;\n\n\t url = stripUrl(url);\n\t params = this.route.exec(url).slice(1);\n\t length = params.length;\n\n\t if (decode) {\n\t for (; idx < length; idx ++) {\n\t if (typeof params[idx] !== 'undefined') {\n\t params[idx] = decodeURIComponent(params[idx]);\n\t }\n\t }\n\t }\n\n\t params.push(queryStringParams);\n\n\t this._callback.apply(null, params);\n\t },\n\n\t worksWith: function(url, back, decode) {\n\t if (this.route.test(stripUrl(url))) {\n\t this.callback(url, back, decode);\n\t return true;\n\t } else {\n\t return false;\n\t }\n\t }\n\t });\n\n\t var Router = Observable.extend({\n\t init: function(options) {\n\t if (!options) {\n\t options = {};\n\t }\n\n\t Observable.fn.init.call(this);\n\n\t this.routes = [];\n\t this.pushState = options.pushState;\n\t this.hashBang = options.hashBang;\n\t this.root = options.root;\n\t this.ignoreCase = options.ignoreCase !== false;\n\n\t this.bind([INIT, ROUTE_MISSING, CHANGE, SAME, BACK], options);\n\t },\n\n\t destroy: function() {\n\t history.unbind(CHANGE, this._urlChangedProxy);\n\t history.unbind(SAME, this._sameProxy);\n\t history.unbind(BACK, this._backProxy);\n\t this.unbind();\n\t },\n\n\t start: function() {\n\t var that = this,\n\t sameProxy = function() { that._same(); },\n\t backProxy = function(e) { that._back(e); },\n\t urlChangedProxy = function(e) { that._urlChanged(e); };\n\n\t history.start({\n\t same: sameProxy,\n\t change: urlChangedProxy,\n\t back: backProxy,\n\t pushState: that.pushState,\n\t hashBang: that.hashBang,\n\t root: that.root\n\t });\n\n\t var initEventObject = { url: history.current || \"/\", preventDefault: $.noop };\n\n\t if (!that.trigger(INIT, initEventObject)) {\n\t that._urlChanged(initEventObject);\n\t }\n\n\t this._urlChangedProxy = urlChangedProxy;\n\t this._backProxy = backProxy;\n\t },\n\n\t route: function(route, callback) {\n\t this.routes.push(new Route(route, callback, this.ignoreCase));\n\t },\n\n\t navigate: function(url, silent) {\n\t kendo.history.navigate(url, silent);\n\t },\n\n\t replace: function(url, silent) {\n\t kendo.history.replace(url, silent);\n\t },\n\n\t _back: function(e) {\n\t if (this.trigger(BACK, { url: e.url, to: e.to })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _same: function() {\n\t this.trigger(SAME);\n\t },\n\n\t _urlChanged: function(e) {\n\t var url = e.url;\n\t var decode = !!e.decode;\n\t var back = e.backButtonPressed;\n\n\t if (!url) {\n\t url = \"/\";\n\t }\n\n\t if (this.trigger(CHANGE, { url: e.url, params: kendo.parseQueryStringParams(e.url), backButtonPressed: back })) {\n\t e.preventDefault();\n\t return;\n\t }\n\n\t var idx = 0,\n\t routes = this.routes,\n\t route,\n\t length = routes.length;\n\n\t for (; idx < length; idx ++) {\n\t route = routes[idx];\n\n\t if (route.worksWith(url, back, decode)) {\n\t return;\n\t }\n\t }\n\n\t if (this.trigger(ROUTE_MISSING, { url: url, params: kendo.parseQueryStringParams(url), backButtonPressed: back })) {\n\t e.preventDefault();\n\t }\n\t }\n\t });\n\n\t kendo.Router = Router;\n\t})();\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1335);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1056:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.userevents\");\n\n/***/ }),\n\n/***/ 1335:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018), __webpack_require__(1056) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"selectable\",\n\t name: \"Selectable\",\n\t category: \"framework\",\n\t depends: [ \"core\", \"userevents\" ],\n\t advanced: true\n\t};\n\n\t(function ($, undefined) {\n\t var kendo = window.kendo,\n\t Widget = kendo.ui.Widget,\n\t proxy = $.proxy,\n\t abs = Math.abs,\n\t ARIASELECTED = \"aria-selected\",\n\t SELECTED = \"k-state-selected\",\n\t ACTIVE = \"k-state-selecting\",\n\t SELECTABLE = \"k-selectable\",\n\t CHANGE = \"change\",\n\t NS = \".kendoSelectable\",\n\t UNSELECT = \"unselect\",\n\t UNSELECTING = \"k-state-unselecting\",\n\t INPUTSELECTOR = \"input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up,label.k-checkbox-label.k-no-text,.k-icon.k-i-collapse,.k-icon.k-i-expand,span.k-numeric-wrap,.k-focusable\",\n\t msie = kendo.support.browser.msie,\n\t supportEventDelegation = false;\n\n\t (function($) {\n\t (function() {\n\t $('
      ')\n\t .on(\"click\", \">*\", function() {\n\t supportEventDelegation = true;\n\t })\n\t .find(\"span\")\n\t .trigger(\"click\")\n\t .end()\n\t .off();\n\t })();\n\t })($);\n\n\t var Selectable = Widget.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t multiple;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that._marquee = $(\"
      \");\n\t that._lastActive = null;\n\t that.element.addClass(SELECTABLE);\n\n\t that.relatedTarget = that.options.relatedTarget;\n\n\t multiple = that.options.multiple;\n\n\t if (this.options.aria && multiple) {\n\t that.element.attr(\"aria-multiselectable\", true);\n\t }\n\n\t that.userEvents = new kendo.UserEvents(that.element, {\n\t global: true,\n\t allowSelection: true,\n\t filter: (!supportEventDelegation ? \".\" + SELECTABLE + \" \" : \"\") + that.options.filter,\n\t tap: proxy(that._tap, that),\n\t touchAction: multiple ? \"none\" : \"pan-x pan-y\"\n\t });\n\n\t if (multiple) {\n\t that.userEvents\n\t .bind(\"start\", proxy(that._start, that))\n\t .bind(\"move\", proxy(that._move, that))\n\t .bind(\"end\", proxy(that._end, that))\n\t .bind(\"select\", proxy(that._select, that));\n\t }\n\t },\n\n\t events: [CHANGE, UNSELECT],\n\n\t options: {\n\t name: \"Selectable\",\n\t filter: \">*\",\n\t inputSelectors: INPUTSELECTOR,\n\t multiple: false,\n\t relatedTarget: $.noop\n\t },\n\n\t _isElement: function(target) {\n\t var elements = this.element;\n\t var idx, length = elements.length, result = false;\n\n\t target = target[0];\n\n\t for (idx = 0; idx < length; idx ++) {\n\t if (elements[idx] === target) {\n\t result = true;\n\t break;\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t _tap: function(e) {\n\t var target = $(e.target),\n\t that = this,\n\t ctrlKey = e.event.ctrlKey || e.event.metaKey,\n\t multiple = that.options.multiple,\n\t shiftKey = multiple && e.event.shiftKey,\n\t selected,\n\t whichCode = e.event.which,\n\t buttonCode = e.event.button;\n\n\t //in case of hierarchy or right-click\n\t if (!that._isElement(target.closest(\".\" + SELECTABLE)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n\t return;\n\t }\n\n\t if (!this._allowSelection(e.event.target)) {\n\t return;\n\t }\n\n\t selected = target.hasClass(SELECTED);\n\t if (!multiple || !ctrlKey) {\n\t that.clear();\n\t }\n\n\t target = target.add(that.relatedTarget(target));\n\n\t if (shiftKey) {\n\t that.selectRange(that._firstSelectee(), target, e);\n\t } else {\n\t if (selected && ctrlKey) {\n\t that._unselect(target);\n\t that._notify(CHANGE, e);\n\t } else {\n\t that.value(target, e);\n\t }\n\n\t that._lastActive = that._downTarget = target;\n\t }\n\t },\n\n\t _start: function(e) {\n\t var that = this,\n\t target = $(e.target),\n\t selected = target.hasClass(SELECTED),\n\t currentElement,\n\t ctrlKey = e.event.ctrlKey || e.event.metaKey;\n\n\t if (!this._allowSelection(e.event.target)) {\n\t return;\n\t }\n\n\t that._downTarget = target;\n\n\t //in case of hierarchy\n\t if (!that._isElement(target.closest(\".\" + SELECTABLE))) {\n\t that.userEvents.cancel();\n\t return;\n\t }\n\n\t if (that.options.useAllItems) {\n\t that._items = that.element.find(that.options.filter);\n\t } else {\n\t currentElement = target.closest(that.element);\n\t that._items = currentElement.find(that.options.filter);\n\t }\n\n\t e.sender.capture();\n\n\t that._marquee\n\t .appendTo(document.body)\n\t .css({\n\t left: e.x.client + 1,\n\t top: e.y.client + 1,\n\t width: 0,\n\t height: 0\n\t });\n\n\t if (!ctrlKey) {\n\t that.clear();\n\t }\n\n\t target = target.add(that.relatedTarget(target));\n\t if (selected) {\n\t that._selectElement(target, true);\n\t if (ctrlKey) {\n\t target.addClass(UNSELECTING);\n\t }\n\t }\n\t },\n\n\t _move: function(e) {\n\t var that = this,\n\t position = {\n\t left: e.x.startLocation > e.x.location ? e.x.location : e.x.startLocation,\n\t top: e.y.startLocation > e.y.location ? e.y.location : e.y.startLocation,\n\t width: abs(e.x.initialDelta),\n\t height: abs(e.y.initialDelta)\n\t };\n\n\t that._marquee.css(position);\n\n\t that._invalidateSelectables(position, (e.event.ctrlKey || e.event.metaKey));\n\n\t e.preventDefault();\n\t },\n\n\t _end: function(e) {\n\t var that = this;\n\n\t that._marquee.remove();\n\n\t that._unselect(that.element\n\t .find(that.options.filter + \".\" + UNSELECTING))\n\t .removeClass(UNSELECTING);\n\n\n\t var target = that.element.find(that.options.filter + \".\" + ACTIVE);\n\t target = target.add(that.relatedTarget(target));\n\n\t that.value(target, e);\n\t that._lastActive = that._downTarget;\n\t that._items = null;\n\t },\n\n\t _invalidateSelectables: function(position, ctrlKey) {\n\t var idx,\n\t length,\n\t target = this._downTarget[0],\n\t items = this._items,\n\t related,\n\t toSelect;\n\n\t for (idx = 0, length = items.length; idx < length; idx ++) {\n\t toSelect = items.eq(idx);\n\t related = toSelect.add(this.relatedTarget(toSelect));\n\n\t if (collision(toSelect, position)) {\n\t if(toSelect.hasClass(SELECTED)) {\n\t if(ctrlKey && target !== toSelect[0]) {\n\t related.removeClass(SELECTED).addClass(UNSELECTING);\n\t }\n\t } else if (!toSelect.hasClass(ACTIVE) && !toSelect.hasClass(UNSELECTING)) {\n\t related.addClass(ACTIVE);\n\t }\n\t } else {\n\t if (toSelect.hasClass(ACTIVE)) {\n\t related.removeClass(ACTIVE);\n\t } else if(ctrlKey && toSelect.hasClass(UNSELECTING)) {\n\t related.removeClass(UNSELECTING).addClass(SELECTED);\n\t }\n\t }\n\t }\n\t },\n\n\t value: function(val, e) {\n\t var that = this,\n\t selectElement = proxy(that._selectElement, that);\n\n\t if(val) {\n\t val.each(function() {\n\t selectElement(this);\n\t });\n\n\t that._notify(CHANGE, e);\n\t return;\n\t }\n\n\t return that.element.find(that.options.filter + \".\" + SELECTED);\n\t },\n\n\t _firstSelectee: function() {\n\t var that = this,\n\t selected;\n\n\t if(that._lastActive !== null) {\n\t return that._lastActive;\n\t }\n\n\t selected = that.value();\n\t return selected.length > 0 ?\n\t selected[0] :\n\t that.element.find(that.options.filter)[0];\n\t },\n\n\t _selectElement: function(element, preventNotify) {\n\t var toSelect = $(element),\n\t isPrevented = !preventNotify && this._notify(\"select\", { element: element });\n\n\t toSelect.removeClass(ACTIVE);\n\t if(!isPrevented) {\n\t toSelect.addClass(SELECTED);\n\n\t if (this.options.aria) {\n\t toSelect.attr(ARIASELECTED, true);\n\t }\n\t }\n\t },\n\n\t _notify: function(name, args) {\n\t args = args || { };\n\t return this.trigger(name, args);\n\t },\n\n\t _unselect: function(element) {\n\t if (this.trigger(UNSELECT, { element: element})) {\n\t return;\n\t }\n\n\t element.removeClass(SELECTED);\n\n\t if (this.options.aria) {\n\t element.attr(ARIASELECTED, false);\n\t }\n\n\t return element;\n\t },\n\n\t _select: function(e) {\n\t if (this._allowSelection(e.event.target)) {\n\t if (!msie || (msie && !$(kendo._activeElement()).is(this.options.inputSelectors))) {\n\t e.preventDefault();\n\t }\n\t }\n\t },\n\n\t _allowSelection: function(target) {\n\t if ($(target).is(this.options.inputSelectors)) {\n\t this.userEvents.cancel();\n\t this._downTarget = null;\n\t return false;\n\t }\n\n\t return true;\n\t },\n\n\t resetTouchEvents: function() {\n\t this.userEvents.cancel();\n\t },\n\n\t clear: function() {\n\t var items = this.element.find(this.options.filter + \".\" + SELECTED);\n\t this._unselect(items);\n\t },\n\n\t selectRange: function(start, end, e) {\n\t var that = this,\n\t idx,\n\t tmp,\n\t items;\n\n\t that.clear();\n\n\t if (that.element.length > 1) {\n\t items = that.options.continuousItems();\n\t }\n\n\t if (!items || !items.length) {\n\t items = that.element.find(that.options.filter);\n\t }\n\n\t start = $.inArray($(start)[0], items);\n\t end = $.inArray($(end)[0], items);\n\n\t if (start > end) {\n\t tmp = start;\n\t start = end;\n\t end = tmp;\n\t }\n\n\t if (!that.options.useAllItems) {\n\t end += that.element.length - 1;\n\t }\n\n\t for (idx = start; idx <= end; idx ++ ) {\n\t that._selectElement(items[idx]);\n\t }\n\n\t that._notify(CHANGE, e);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Widget.fn.destroy.call(that);\n\n\t that.element.off(NS);\n\n\t that.userEvents.destroy();\n\n\t that._marquee = that._lastActive = that.element = that.userEvents = null;\n\t }\n\t });\n\n\t Selectable.parseOptions = function(selectable) {\n\t var asLowerString = typeof selectable === \"string\" && selectable.toLowerCase();\n\n\t return {\n\t multiple: asLowerString && asLowerString.indexOf(\"multiple\") > -1,\n\t cell: asLowerString && asLowerString.indexOf(\"cell\") > -1\n\t };\n\t };\n\n\t function collision(element, position) {\n\t if (!element.is(\":visible\")) {\n\t return false;\n\t }\n\n\t var elementPosition = kendo.getOffset(element),\n\t right = position.left + position.width,\n\t bottom = position.top + position.height;\n\n\t elementPosition.right = elementPosition.left + kendo._outerWidth(element);\n\t elementPosition.bottom = elementPosition.top + kendo._outerHeight(element);\n\n\t return !(elementPosition.left > right||\n\t elementPosition.right < position.left ||\n\t elementPosition.top > bottom ||\n\t elementPosition.bottom < position.top);\n\t }\n\n\t kendo.ui.plugin(Selectable);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1399);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1399:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"userevents\",\n\t name: \"User Events\",\n\t category: \"framework\",\n\t depends: [ \"core\" ],\n\t hidden: true\n\t};\n\n\t(function ($, undefined) {\n\t var kendo = window.kendo,\n\t support = kendo.support,\n\t Class = kendo.Class,\n\t Observable = kendo.Observable,\n\t now = $.now,\n\t extend = $.extend,\n\t OS = support.mobileOS,\n\t invalidZeroEvents = OS && OS.android,\n\t DEFAULT_MIN_HOLD = 800,\n\t CLICK_DELAY = 300,\n\t DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n\t // UserEvents events\n\t PRESS = \"press\",\n\t HOLD = \"hold\",\n\t SELECT = \"select\",\n\t START = \"start\",\n\t MOVE = \"move\",\n\t END = \"end\",\n\t CANCEL = \"cancel\",\n\t TAP = \"tap\",\n\t DOUBLETAP = \"doubleTap\",\n\t RELEASE = \"release\",\n\t GESTURESTART = \"gesturestart\",\n\t GESTURECHANGE = \"gesturechange\",\n\t GESTUREEND = \"gestureend\",\n\t GESTURETAP = \"gesturetap\";\n\n\t var THRESHOLD = {\n\t \"api\": 0,\n\t \"touch\": 0,\n\t \"mouse\": 9,\n\t \"pointer\": 9\n\t };\n\n\t var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n\t function touchDelta(touch1, touch2) {\n\t var x1 = touch1.x.location,\n\t y1 = touch1.y.location,\n\t x2 = touch2.x.location,\n\t y2 = touch2.y.location,\n\t dx = x1 - x2,\n\t dy = y1 - y2;\n\n\t return {\n\t center: {\n\t x: (x1 + x2) / 2,\n\t y: (y1 + y2) / 2\n\t },\n\n\t distance: Math.sqrt(dx*dx + dy*dy)\n\t };\n\t }\n\n\t function getTouches(e) {\n\t var touches = [],\n\t originalEvent = e.originalEvent,\n\t currentTarget = e.currentTarget,\n\t idx = 0, length,\n\t changedTouches,\n\t touch;\n\n\t if (e.api) {\n\t touches.push({\n\t id: 2, // hardcoded ID for API call;\n\t event: e,\n\t target: e.target,\n\t currentTarget: e.target,\n\t location: e,\n\t type: \"api\"\n\t });\n\t }\n\t else if (e.type.match(/touch/)) {\n\t changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\t for (length = changedTouches.length; idx < length; idx ++) {\n\t touch = changedTouches[idx];\n\t touches.push({\n\t location: touch,\n\t event: e,\n\t target: touch.target,\n\t currentTarget: currentTarget,\n\t id: touch.identifier,\n\t type: \"touch\"\n\t });\n\t }\n\t }\n\t else if (support.pointers || support.msPointers) {\n\t touches.push({\n\t location: originalEvent,\n\t event: e,\n\t target: e.target,\n\t currentTarget: currentTarget,\n\t id: originalEvent.pointerId,\n\t type: \"pointer\"\n\t });\n\t } else {\n\t touches.push({\n\t id: 1, // hardcoded ID for mouse event;\n\t event: e,\n\t target: e.target,\n\t currentTarget: currentTarget,\n\t location: e,\n\t type: \"mouse\"\n\t });\n\t }\n\n\t return touches;\n\t }\n\n\t var TouchAxis = Class.extend({\n\t init: function(axis, location) {\n\t var that = this;\n\n\t that.axis = axis;\n\n\t that._updateLocationData(location);\n\n\t that.startLocation = that.location;\n\t that.velocity = that.delta = 0;\n\t that.timeStamp = now();\n\t },\n\n\t move: function(location) {\n\t var that = this,\n\t offset = location[\"page\" + that.axis],\n\t timeStamp = now(),\n\t timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n\t if (!offset && invalidZeroEvents) {\n\t return;\n\t }\n\n\t that.delta = offset - that.location;\n\n\t that._updateLocationData(location);\n\n\t that.initialDelta = offset - that.startLocation;\n\t that.velocity = that.delta / timeDelta;\n\t that.timeStamp = timeStamp;\n\t },\n\n\t _updateLocationData: function(location) {\n\t var that = this, axis = that.axis;\n\n\t that.location = location[\"page\" + axis];\n\t that.client = location[\"client\" + axis];\n\t that.screen = location[\"screen\" + axis];\n\t }\n\t });\n\n\t var Touch = Class.extend({\n\t init: function(userEvents, target, touchInfo) {\n\t extend(this, {\n\t x: new TouchAxis(\"X\", touchInfo.location),\n\t y: new TouchAxis(\"Y\", touchInfo.location),\n\t type: touchInfo.type,\n\t useClickAsTap: userEvents.useClickAsTap,\n\t threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n\t userEvents: userEvents,\n\t target: target,\n\t currentTarget: touchInfo.currentTarget,\n\t initialTouch: touchInfo.target,\n\t id: touchInfo.id,\n\t pressEvent: touchInfo,\n\t _clicks: userEvents._clicks,\n\t supportDoubleTap: userEvents.supportDoubleTap,\n\t _moved: false,\n\t _finished: false\n\t });\n\t },\n\n\t press: function() {\n\t this._holdTimeout = setTimeout($.proxy(this, \"_hold\"), this.userEvents.minHold);\n\t this._trigger(PRESS, this.pressEvent);\n\t },\n\n\t _tap: function(touchInfo) {\n\t var that = this;\n\t that.userEvents._clicks++;\n\t if (that.userEvents._clicks == 1) {\n\t that._clickTimeout = setTimeout(function() {\n\t if (that.userEvents._clicks == 1) {\n\t that._trigger(TAP, touchInfo);\n\t }\n\t else {\n\t that._trigger(DOUBLETAP, touchInfo);\n\t }\n\t that.userEvents._clicks = 0;\n\t }, CLICK_DELAY);\n\t }\n\t },\n\n\t _hold: function() {\n\t this._trigger(HOLD, this.pressEvent);\n\t },\n\n\t move: function(touchInfo) {\n\t var that = this;\n\t var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n\t if (that._finished || preventMove) { return; }\n\n\t that.x.move(touchInfo.location);\n\t that.y.move(touchInfo.location);\n\n\t if (!that._moved) {\n\t if (that._withinIgnoreThreshold()) {\n\t return;\n\t }\n\n\t if (!UserEvents.current || UserEvents.current === that.userEvents) {\n\t that._start(touchInfo);\n\t } else {\n\t return that.dispose();\n\t }\n\t }\n\n\t // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n\t if (!that._finished) {\n\t that._trigger(MOVE, touchInfo);\n\t }\n\t },\n\n\t end: function(touchInfo) {\n\t this.endTime = now();\n\n\t if (this._finished) { return; }\n\n\t // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n\t this._finished = true;\n\n\t this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\n\n\t if (this._moved) {\n\t this._trigger(END, touchInfo);\n\t } else {\n\t if (!this.useClickAsTap) {\n\t if (this.supportDoubleTap) {\n\t this._tap(touchInfo);\n\t }\n\t else {\n\t this._trigger(TAP, touchInfo);\n\t }\n\t }\n\t }\n\n\t clearTimeout(this._holdTimeout);\n\n\t this.dispose();\n\t },\n\n\t dispose: function() {\n\t var userEvents = this.userEvents,\n\t activeTouches = userEvents.touches;\n\n\t this._finished = true;\n\t this.pressEvent = null;\n\t clearTimeout(this._holdTimeout);\n\n\t activeTouches.splice($.inArray(this, activeTouches), 1);\n\t },\n\n\t skip: function() {\n\t this.dispose();\n\t },\n\n\t cancel: function() {\n\t this.dispose();\n\t },\n\n\t isMoved: function() {\n\t return this._moved;\n\t },\n\n\t _start: function(touchInfo) {\n\t clearTimeout(this._holdTimeout);\n\n\t this.startTime = now();\n\t this._moved = true;\n\t this._trigger(START, touchInfo);\n\t },\n\n\t _trigger: function(name, touchInfo) {\n\t var that = this,\n\t jQueryEvent = touchInfo.event,\n\t data = {\n\t touch: that,\n\t x: that.x,\n\t y: that.y,\n\t target: that.target,\n\t event: jQueryEvent\n\t };\n\n\t if(that.userEvents.notify(name, data)) {\n\t jQueryEvent.preventDefault();\n\t }\n\t },\n\n\t _withinIgnoreThreshold: function() {\n\t var xDelta = this.x.initialDelta,\n\t yDelta = this.y.initialDelta;\n\n\t return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n\t }\n\t });\n\n\t function withEachUpEvent(callback) {\n\t var downEvents = kendo.eventMap.up.split(\" \"),\n\t idx = 0,\n\t length = downEvents.length;\n\n\t for(; idx < length; idx ++) {\n\t callback(downEvents[idx]);\n\t }\n\t }\n\n\t var UserEvents = Observable.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t filter,\n\t ns = kendo.guid();\n\n\t options = options || {};\n\t filter = that.filter = options.filter;\n\t that.threshold = options.threshold || DEFAULT_THRESHOLD;\n\t that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n\t that.touches = [];\n\t that._maxTouches = options.multiTouch ? 2 : 1;\n\t that.allowSelection = options.allowSelection;\n\t that.captureUpIfMoved = options.captureUpIfMoved;\n\t that.useClickAsTap = !options.fastTap && !support.delayedClick();\n\t that.eventNS = ns;\n\t that._clicks = 0;\n\t that.supportDoubleTap = options.supportDoubleTap;\n\n\t element = $(element).handler(that);\n\t Observable.fn.init.call(that);\n\n\t extend(that, {\n\t element: element,\n\t // the touch events lock to the element anyway, so no need for the global setting\n\t surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n\t stopPropagation: options.stopPropagation,\n\t pressed: false\n\t });\n\n\t that.surface.handler(that)\n\t .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n\t .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n\t element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n\t if (that.useClickAsTap) {\n\t element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n\t }\n\n\t if (support.pointers || support.msPointers) {\n\t //touch-action:none will not work for IE10\n\t if (support.browser.version < 11) {\n\t var defaultAction = \"pinch-zoom double-tap-zoom\";\n\t element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n\t } else {\n\t element.css(\"touch-action\", options.touchAction || \"none\");\n\t }\n\t }\n\n\t if (options.preventDragEvent) {\n\t element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n\t }\n\n\t element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n\t if (that.captureUpIfMoved && support.eventCapture) {\n\t var surfaceElement = that.surface[0],\n\t preventIfMovingProxy = $.proxy(that.preventIfMoving, that);\n\n\t withEachUpEvent(function(eventName) {\n\t surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n\t });\n\t }\n\n\t that.bind([\n\t PRESS,\n\t HOLD,\n\t TAP,\n\t DOUBLETAP,\n\t START,\n\t MOVE,\n\t END,\n\t RELEASE,\n\t CANCEL,\n\t GESTURESTART,\n\t GESTURECHANGE,\n\t GESTUREEND,\n\t GESTURETAP,\n\t SELECT\n\t ], options);\n\t },\n\n\t preventIfMoving: function(e) {\n\t if (this._isMoved()) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t if (that._destroyed) {\n\t return;\n\t }\n\n\t that._destroyed = true;\n\n\t if (that.captureUpIfMoved && support.eventCapture) {\n\t var surfaceElement = that.surface[0];\n\t withEachUpEvent(function(eventName) {\n\t surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n\t });\n\t }\n\n\t that.element.kendoDestroy(that.eventNS);\n\t that.surface.kendoDestroy(that.eventNS);\n\t that.element.removeData(\"handler\");\n\t that.surface.removeData(\"handler\");\n\t that._disposeAll();\n\n\t that.unbind();\n\t delete that.surface;\n\t delete that.element;\n\t delete that.currentTarget;\n\t },\n\n\t capture: function() {\n\t UserEvents.current = this;\n\t },\n\n\t cancel: function() {\n\t this._disposeAll();\n\t this.trigger(CANCEL);\n\t },\n\n\t notify: function(eventName, data) {\n\t var that = this,\n\t touches = that.touches;\n\n\t if (this._isMultiTouch()) {\n\t switch(eventName) {\n\t case MOVE:\n\t eventName = GESTURECHANGE;\n\t break;\n\t case END:\n\t eventName = GESTUREEND;\n\t break;\n\t case TAP:\n\t eventName = GESTURETAP;\n\t break;\n\t }\n\n\t extend(data, {touches: touches}, touchDelta(touches[0], touches[1]));\n\t }\n\n\t return this.trigger(eventName, extend(data, {type: eventName}));\n\t },\n\n\t // API\n\t press: function(x, y, target) {\n\t this._apiCall(\"_start\", x, y, target);\n\t },\n\n\t move: function(x, y) {\n\t this._apiCall(\"_move\", x, y);\n\t },\n\n\t end: function(x, y) {\n\t this._apiCall(\"_end\", x, y);\n\t },\n\n\t _isMultiTouch: function() {\n\t return this.touches.length > 1;\n\t },\n\n\t _maxTouchesReached: function() {\n\t return this.touches.length >= this._maxTouches;\n\t },\n\n\t _disposeAll: function() {\n\t var touches = this.touches;\n\t while (touches.length > 0) {\n\t touches.pop().dispose();\n\t }\n\t },\n\n\t _isMoved: function() {\n\t return $.grep(this.touches, function(touch) {\n\t return touch.isMoved();\n\t }).length;\n\t },\n\n\t _select: function(e) {\n\t if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _start: function(e) {\n\t var that = this,\n\t idx = 0,\n\t filter = that.filter,\n\t target,\n\t touches = getTouches(e),\n\t length = touches.length,\n\t touch,\n\t which = e.which;\n\n\t if ((which && which > 1) || (that._maxTouchesReached())){\n\t return;\n\t }\n\n\t UserEvents.current = null;\n\n\t that.currentTarget = e.currentTarget;\n\n\t if (that.stopPropagation) {\n\t e.stopPropagation();\n\t }\n\n\t for (; idx < length; idx ++) {\n\t if (that._maxTouchesReached()) {\n\t break;\n\t }\n\n\t touch = touches[idx];\n\n\t if (filter) {\n\t target = $(touch.currentTarget); // target.is(filter) ? target : target.closest(filter, that.element);\n\t } else {\n\t target = that.element;\n\t }\n\n\t if (!target.length) {\n\t continue;\n\t }\n\n\t touch = new Touch(that, target, touch);\n\t that.touches.push(touch);\n\t touch.press();\n\n\t if (that._isMultiTouch()) {\n\t that.notify(\"gesturestart\", {});\n\t }\n\t }\n\t },\n\n\t _move: function(e) {\n\t this._eachTouch(\"move\", e);\n\t },\n\n\t _end: function(e) {\n\t this._eachTouch(\"end\", e);\n\t },\n\n\t _click: function(e) {\n\t var data = {\n\t touch: {\n\t initialTouch: e.target,\n\t target: $(e.currentTarget),\n\t endTime: now(),\n\t x: {\n\t location: e.pageX,\n\t client: e.clientX\n\t },\n\t y: {\n\t location: e.pageY,\n\t client: e.clientY\n\t }\n\t },\n\t x: e.pageX,\n\t y: e.pageY,\n\t target: $(e.currentTarget),\n\t event: e,\n\t type: \"tap\"\n\t };\n\n\t if (this.trigger(\"tap\", data)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _eachTouch: function(methodName, e) {\n\t var that = this,\n\t dict = {},\n\t touches = getTouches(e),\n\t activeTouches = that.touches,\n\t idx,\n\t touch,\n\t touchInfo,\n\t matchingTouch;\n\n\t for (idx = 0; idx < activeTouches.length; idx ++) {\n\t touch = activeTouches[idx];\n\t dict[touch.id] = touch;\n\t }\n\n\t for (idx = 0; idx < touches.length; idx ++) {\n\t touchInfo = touches[idx];\n\t matchingTouch = dict[touchInfo.id];\n\n\t if (matchingTouch) {\n\t matchingTouch[methodName](touchInfo);\n\t }\n\t }\n\t },\n\n\t _apiCall: function(type, x, y, target) {\n\t this[type]({\n\t api: true,\n\t pageX: x,\n\t pageY: y,\n\t clientX: x,\n\t clientY: y,\n\t target: $(target || this.element)[0],\n\t stopPropagation: $.noop,\n\t preventDefault: $.noop\n\t });\n\t }\n\t });\n\n\t UserEvents.defaultThreshold = function(value) {\n\t DEFAULT_THRESHOLD = value;\n\t };\n\n\t UserEvents.minHold = function(value) {\n\t DEFAULT_MIN_HOLD = value;\n\t };\n\n\t kendo.getTouches = getTouches;\n\t kendo.touchDelta = touchDelta;\n\t kendo.UserEvents = UserEvents;\n\t })(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1400);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1018:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1018) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"validator\",\n\t name: \"Validator\",\n\t category: \"web\",\n\t description: \"The Validator offers an easy way to do a client-side form validation.\",\n\t depends: [ \"core\" ]\n\t};\n\n\t/* jshint eqnull: true */\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t Widget = kendo.ui.Widget,\n\t NS = \".kendoValidator\",\n\t INVALIDMSG = \"k-invalid-msg\",\n\t invalidMsgRegExp = new RegExp(INVALIDMSG,'i'),\n\t INVALIDINPUT = \"k-invalid\",\n\t VALIDINPUT = \"k-valid\",\n\t emailRegExp = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i,\n\t urlRegExp = /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i,\n\t INPUTSELECTOR = \":input:not(:button,[type=submit],[type=reset],[disabled],[readonly])\",\n\t CHECKBOXSELECTOR = \":checkbox:not([disabled],[readonly])\",\n\t NUMBERINPUTSELECTOR = \"[type=number],[type=range]\",\n\t BLUR = \"blur\",\n\t NAME = \"name\",\n\t FORM = \"form\",\n\t NOVALIDATE = \"novalidate\",\n\t //events\n\t VALIDATE = \"validate\",\n\t CHANGE = \"change\",\n\t VALIDATE_INPUT = \"validateInput\",\n\t proxy = $.proxy,\n\t patternMatcher = function(value, pattern) {\n\t if (typeof pattern === \"string\") {\n\t pattern = new RegExp('^(?:' + pattern + ')$');\n\t }\n\t return pattern.test(value);\n\t },\n\t matcher = function(input, selector, pattern) {\n\t var value = input.val();\n\n\t if (input.filter(selector).length && value !== \"\") {\n\t return patternMatcher(value, pattern);\n\t }\n\t return true;\n\t },\n\t hasAttribute = function(input, name) {\n\t if (input.length) {\n\t return input[0].attributes[name] != null;\n\t }\n\t return false;\n\t };\n\n\t if (!kendo.ui.validator) {\n\t kendo.ui.validator = { rules: {}, messages: {} };\n\t }\n\n\t function resolveRules(element) {\n\t var resolvers = kendo.ui.validator.ruleResolvers || {},\n\t rules = {},\n\t name;\n\n\t for (name in resolvers) {\n\t $.extend(true, rules, resolvers[name].resolve(element));\n\t }\n\t return rules;\n\t }\n\n\t function decode(value) {\n\t return value.replace(/&/g, '&')\n\t .replace(/"/g, '\"')\n\t .replace(/'/g, \"'\")\n\t .replace(/</g, '<')\n\t .replace(/>/g, '>');\n\t }\n\n\t function numberOfDecimalDigits(value) {\n\t value = (value + \"\").split('.');\n\t if (value.length > 1) {\n\t return value[1].length;\n\t }\n\t return 0;\n\t }\n\n\t function parseHtml(text) {\n\t if ($.parseHTML) {\n\t return $($.parseHTML(text));\n\t }\n\t return $(text);\n\t }\n\n\t function searchForMessageContainer(elements, fieldName) {\n\t var containers = $(),\n\t element,\n\t attr;\n\n\t for (var idx = 0, length = elements.length; idx < length; idx++) {\n\t element = elements[idx];\n\t if (invalidMsgRegExp.test(element.className)) {\n\t attr = element.getAttribute(kendo.attr(\"for\"));\n\t if (attr === fieldName) {\n\t containers = containers.add(element);\n\t }\n\t }\n\t }\n\t return containers;\n\t }\n\n\t var Validator = Widget.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t resolved = resolveRules(element),\n\t validateAttributeSelector = \"[\" + kendo.attr(\"validate\") + \"!=false]\";\n\n\t options = options || {};\n\n\t options.rules = $.extend({}, kendo.ui.validator.rules, resolved.rules, options.rules);\n\t options.messages = $.extend({}, kendo.ui.validator.messages, resolved.messages, options.messages);\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that._errorTemplate = kendo.template(that.options.errorTemplate);\n\n\t if (that.element.is(FORM)) {\n\t that.element.attr(NOVALIDATE, NOVALIDATE);\n\t }\n\n\t that._inputSelector = INPUTSELECTOR + validateAttributeSelector;\n\t that._checkboxSelector = CHECKBOXSELECTOR + validateAttributeSelector;\n\n\t that._errors = {};\n\t that._attachEvents();\n\t that._isValidated = false;\n\t },\n\n\t events: [ VALIDATE, CHANGE, VALIDATE_INPUT ],\n\n\t options: {\n\t name: \"Validator\",\n\t errorTemplate: '' +\n\t ' #=message#',\n\t messages: {\n\t required: \"{0} is required\",\n\t pattern: \"{0} is not valid\",\n\t min: \"{0} should be greater than or equal to {1}\",\n\t max: \"{0} should be smaller than or equal to {1}\",\n\t step: \"{0} is not valid\",\n\t email: \"{0} is not valid email\",\n\t url: \"{0} is not valid URL\",\n\t date: \"{0} is not valid date\",\n\t dateCompare: \"End date should be greater than or equal to the start date\"\n\t },\n\t rules: {\n\t required: function(input) {\n\t var checkbox = input.filter(\"[type=checkbox]\").length && !input.is(\":checked\"),\n\t value = input.val();\n\n\t return !(hasAttribute(input, \"required\") && (!value || value === \"\" || value.length === 0 || checkbox));\n\t },\n\t pattern: function(input) {\n\t if (input.filter(\"[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]\").filter(\"[pattern]\").length && input.val() !== \"\") {\n\t return patternMatcher(input.val(), input.attr(\"pattern\"));\n\t }\n\t return true;\n\t },\n\t min: function(input) {\n\t if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[min]\").length && input.val() !== \"\") {\n\t var min = parseFloat(input.attr(\"min\")) || 0,\n\t val = kendo.parseFloat(input.val());\n\n\t return min <= val;\n\t }\n\t return true;\n\t },\n\t max: function(input) {\n\t if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[max]\").length && input.val() !== \"\") {\n\t var max = parseFloat(input.attr(\"max\")) || 0,\n\t val = kendo.parseFloat(input.val());\n\n\t return max >= val;\n\t }\n\t return true;\n\t },\n\t step: function(input) {\n\t if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[step]\").length && input.val() !== \"\") {\n\t var min = parseFloat(input.attr(\"min\")) || 0,\n\t step = parseFloat(input.attr(\"step\")) || 1,\n\t val = parseFloat(input.val()),\n\t decimals = numberOfDecimalDigits(step),\n\t raise;\n\n\t if (decimals) {\n\t raise = Math.pow(10, decimals);\n\t return ((Math.floor((val-min)*raise))%(step*raise)) / Math.pow(100, decimals) === 0;\n\t }\n\t return ((val-min)%step) === 0;\n\t }\n\t return true;\n\t },\n\t email: function(input) {\n\t return matcher(input, \"[type=email],[\" + kendo.attr(\"type\") + \"=email]\", emailRegExp);\n\t },\n\t url: function(input) {\n\t return matcher(input, \"[type=url],[\" + kendo.attr(\"type\") + \"=url]\", urlRegExp);\n\t },\n\t date: function(input) {\n\t if (input.filter(\"[type^=date],[\" + kendo.attr(\"type\") + \"=date]\").length && input.val() !== \"\") {\n\t return kendo.parseDate(input.val(), input.attr(kendo.attr(\"format\"))) !== null;\n\t }\n\t return true;\n\t }\n\t },\n\t validateOnBlur: true\n\t },\n\n\t destroy: function() {\n\t Widget.fn.destroy.call(this);\n\n\t this.element.off(NS);\n\t },\n\n\t value: function() {\n\t if (!this._isValidated) {\n\t return false;\n\t }\n\n\t return this.errors().length === 0;\n\t },\n\n\t _submit: function(e) {\n\t if (!this.validate()) {\n\t e.stopPropagation();\n\t e.stopImmediatePropagation();\n\t e.preventDefault();\n\t return false;\n\t }\n\t return true;\n\t },\n\n\t _checkElement: function(element) {\n\t var state = this.value();\n\n\t this.validateInput(element);\n\n\t if (this.value() !== state) {\n\t this.trigger(CHANGE);\n\t }\n\t },\n\n\t _attachEvents: function() {\n\t var that = this;\n\n\t if (that.element.is(FORM)) {\n\t that.element.on(\"submit\" + NS, proxy(that._submit, that));\n\t }\n\n\t if (that.options.validateOnBlur) {\n\t if (!that.element.is(INPUTSELECTOR)) {\n\t that.element.on(BLUR + NS, that._inputSelector, function() {\n\t that._checkElement($(this));\n\t });\n\n\t that.element.on(\"click\" + NS, that._checkboxSelector, function() {\n\t that._checkElement($(this));\n\t });\n\t } else {\n\t that.element.on(BLUR + NS, function() {\n\t that._checkElement(that.element);\n\t });\n\n\t if (that.element.is(CHECKBOXSELECTOR)) {\n\t that.element.on(\"click\" + NS, function() {\n\t that._checkElement(that.element);\n\t });\n\t }\n\t }\n\t }\n\t },\n\n\t validate: function() {\n\t var inputs;\n\t var idx;\n\t var result = false;\n\t var length;\n\n\t var isValid = this.value();\n\n\t this._errors = {};\n\n\t if (!this.element.is(INPUTSELECTOR)) {\n\t var invalid = false;\n\n\t inputs = this.element.find(this._inputSelector);\n\n\t for (idx = 0, length = inputs.length; idx < length; idx++) {\n\t if (!this.validateInput(inputs.eq(idx))) {\n\t invalid = true;\n\t }\n\t }\n\n\t result = !invalid;\n\t } else {\n\t result = this.validateInput(this.element);\n\t }\n\n\t this.trigger(VALIDATE, { valid: result });\n\n\t if (isValid !== result) {\n\t this.trigger(CHANGE);\n\t }\n\n\t return result;\n\t },\n\n\t validateInput: function(input) {\n\t input = $(input);\n\n\t this._isValidated = true;\n\n\t var that = this,\n\t template = that._errorTemplate,\n\t result = that._checkValidity(input),\n\t valid = result.valid,\n\t className = \".\" + INVALIDMSG,\n\t fieldName = (input.attr(NAME) || \"\"),\n\t lbl = that._findMessageContainer(fieldName).add(input.next(className).filter(function() {\n\t var element = $(this);\n\t if (element.filter(\"[\" + kendo.attr(\"for\") + \"]\").length) {\n\t return element.attr(kendo.attr(\"for\")) === fieldName;\n\t }\n\n\t return true;\n\n\t })).hide(),\n\t messageText,\n\t wasValid = !input.attr(\"aria-invalid\");\n\t input.removeAttr(\"aria-invalid\");\n\n\t if (!valid) {\n\t messageText = that._extractMessage(input, result.key);\n\t that._errors[fieldName] = messageText;\n\t var messageLabel = parseHtml(template({ message: decode(messageText) }));\n\t var lblId = lbl.attr('id');\n\n\t that._decorateMessageContainer(messageLabel, fieldName);\n\n\t if (lblId) {\n\t messageLabel.attr('id', lblId);\n\t }\n\n\t if (!lbl.replaceWith(messageLabel).length) {\n\t messageLabel.insertAfter(input);\n\t }\n\t messageLabel.show();\n\n\t input.attr(\"aria-invalid\", true);\n\t } else {\n\t delete that._errors[fieldName];\n\t }\n\n\t if (wasValid !== valid) {\n\t this.trigger(VALIDATE_INPUT, { valid: valid, input: input });\n\t }\n\n\t input.toggleClass(INVALIDINPUT, !valid);\n\t input.toggleClass(VALIDINPUT, valid);\n\n\t if(kendo.widgetInstance(input)) {\n\t var inputWrap = kendo.widgetInstance(input)._inputWrapper;\n\n\t if (inputWrap) {\n\t inputWrap.toggleClass(INVALIDINPUT, !valid);\n\t inputWrap.toggleClass(INVALIDINPUT, !valid);\n\t }\n\t }\n\n\t return valid;\n\t },\n\n\t hideMessages: function() {\n\t var that = this,\n\t className = \".\" + INVALIDMSG,\n\t element = that.element;\n\n\t if (!element.is(INPUTSELECTOR)) {\n\t element.find(className).hide();\n\t } else {\n\t element.next(className).hide();\n\t }\n\t },\n\n\t _findMessageContainer: function(fieldName) {\n\t var locators = kendo.ui.validator.messageLocators,\n\t name,\n\t containers = $();\n\n\t for (var idx = 0, length = this.element.length; idx < length; idx++) {\n\t containers = containers.add(searchForMessageContainer(this.element[idx].getElementsByTagName(\"*\"), fieldName));\n\t }\n\n\t for (name in locators) {\n\t containers = containers.add(locators[name].locate(this.element, fieldName));\n\t }\n\n\t return containers;\n\t },\n\n\t _decorateMessageContainer: function(container, fieldName) {\n\t var locators = kendo.ui.validator.messageLocators,\n\t name;\n\n\t container.addClass(INVALIDMSG)\n\t .attr(kendo.attr(\"for\"), fieldName || \"\");\n\n\t for (name in locators) {\n\t locators[name].decorate(container, fieldName);\n\t }\n\n\t container.attr(\"role\", \"alert\");\n\t },\n\n\t _extractMessage: function(input, ruleKey) {\n\t var that = this,\n\t customMessage = that.options.messages[ruleKey],\n\t fieldName = input.attr(NAME),\n\t nonDefaultMessage;\n\n\t if (!kendo.ui.Validator.prototype.options.messages[ruleKey]) {\n\t nonDefaultMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n\t }\n\n\t customMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n\n\t return kendo.format(input.attr(kendo.attr(ruleKey + \"-msg\")) || input.attr(\"validationMessage\") || nonDefaultMessage || customMessage || input.attr(\"title\") || \"\",\n\t fieldName,\n\t input.attr(ruleKey) || input.attr(kendo.attr(ruleKey)));\n\t },\n\n\t _checkValidity: function(input) {\n\t var rules = this.options.rules,\n\t rule;\n\n\t for (rule in rules) {\n\t if (!rules[rule].call(this, input)) {\n\t return { valid: false, key: rule };\n\t }\n\t }\n\n\t return { valid: true };\n\t },\n\n\t errors: function() {\n\t var results = [],\n\t errors = this._errors,\n\t error;\n\n\t for (error in errors) {\n\t results.push(errors[error]);\n\t }\n\t return results;\n\t }\n\t });\n\n\t kendo.ui.plugin(Validator);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1402);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1017:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1027:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1402:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1027) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"virtuallist\",\n\t name: \"VirtualList\",\n\t category: \"framework\",\n\t depends: [ \"data\" ],\n\t hidden: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t DataBoundWidget = ui.DataBoundWidget,\n\t proxy = $.proxy,\n\t percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i,\n\t WRAPPER = \"k-virtual-wrap\",\n\t VIRTUALLIST = \"k-virtual-list\",\n\t CONTENT = \"k-virtual-content\",\n\t LIST = \"k-list\",\n\t HEADER = \"k-group-header\",\n\t VIRTUALITEM = \"k-virtual-item\",\n\t ITEM = \"k-item\",\n\t HEIGHTCONTAINER = \"k-height-container\",\n\t GROUPITEM = \"k-group\",\n\n\t SELECTED = \"k-state-selected\",\n\t FOCUSED = \"k-state-focused\",\n\t HOVER = \"k-state-hover\",\n\t CHANGE = \"change\",\n\t CLICK = \"click\",\n\t LISTBOUND = \"listBound\",\n\t ITEMCHANGE = \"itemChange\",\n\n\t ACTIVATE = \"activate\",\n\t DEACTIVATE = \"deactivate\",\n\n\t VIRTUAL_LIST_NS = \".VirtualList\";\n\n\t function lastFrom(array) {\n\t return array[array.length - 1];\n\t }\n\n\t function toArray(value) {\n\t return value instanceof Array ? value : [value];\n\t }\n\n\t function isPrimitive(dataItem) {\n\t return typeof dataItem === \"string\" || typeof dataItem === \"number\" || typeof dataItem === \"boolean\";\n\t }\n\n\t function getItemCount(screenHeight, listScreens, itemHeight) {\n\t return Math.ceil(screenHeight * listScreens / itemHeight);\n\t }\n\n\t function appendChild(parent, className, tagName) {\n\t var element = document.createElement(tagName || \"div\");\n\t if (className) {\n\t element.className = className;\n\t }\n\t parent.appendChild(element);\n\n\t return element;\n\t }\n\n\t function getDefaultItemHeight() {\n\t var mockList = $('
      '),\n\t lineHeight;\n\t mockList.css({\n\t position: \"absolute\",\n\t left: \"-200000px\",\n\t visibility: \"hidden\"\n\t });\n\t mockList.appendTo(document.body);\n\t lineHeight = parseFloat(kendo.getComputedStyles(mockList.find(\".k-item\")[0], [\"line-height\"])[\"line-height\"]);\n\t mockList.remove();\n\n\t return lineHeight;\n\t }\n\n\t function bufferSizes(screenHeight, listScreens, opposite) { //in pixels\n\t return {\n\t down: screenHeight * opposite,\n\t up: screenHeight * (listScreens - 1 - opposite)\n\t };\n\t }\n\n\t function listValidator(options, screenHeight) {\n\t var downThreshold = (options.listScreens - 1 - options.threshold) * screenHeight;\n\t var upThreshold = options.threshold * screenHeight;\n\n\t return function(list, scrollTop, lastScrollTop) {\n\t if (scrollTop > lastScrollTop) {\n\t return scrollTop - list.top < downThreshold;\n\t } else {\n\t return list.top === 0 || scrollTop - list.top > upThreshold;\n\t }\n\t };\n\t }\n\n\t function scrollCallback(element, callback) {\n\t return function(force) {\n\t return callback(element.scrollTop, force);\n\t };\n\t }\n\n\t function syncList(reorder) {\n\t return function(list, force) {\n\t reorder(list.items, list.index, force);\n\t return list;\n\t };\n\t }\n\n\t function position(element, y) {\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n\t element.style.top = y + \"px\";\n\t } else {\n\t element.style.webkitTransform = 'translateY(' + y + \"px)\";\n\t element.style.transform = 'translateY(' + y + \"px)\";\n\t }\n\t }\n\n\t function map2(callback, templates) {\n\t return function(arr1, arr2) {\n\t for (var i = 0, len = arr1.length; i < len; i++) {\n\t callback(arr1[i], arr2[i], templates);\n\t if (arr2[i].item) {\n\t this.trigger(ITEMCHANGE, { item: $(arr1[i]), data: arr2[i].item, ns: kendo.ui });\n\t }\n\t }\n\t };\n\t }\n\n\t function reshift(items, diff) {\n\t var range;\n\n\t if (diff > 0) { // down\n\t range = items.splice(0, diff);\n\t items.push.apply(items, range);\n\t } else { // up\n\t range = items.splice(diff, -diff);\n\t items.unshift.apply(items, range);\n\t }\n\n\t return range;\n\t }\n\n\t function render(element, data, templates) {\n\t var itemTemplate = templates.template;\n\n\t element = $(element);\n\n\t if (!data.item) {\n\t itemTemplate = templates.placeholderTemplate;\n\t }\n\n\t if (data.index === 0 && this.header && data.group) {\n\t this.header.html(templates.fixedGroupTemplate(data.group));\n\t }\n\n\t this.angular(\"cleanup\", function() {\n\t return { elements: [ element ]};\n\t });\n\n\t element\n\t .attr(\"data-uid\", data.item ? data.item.uid : \"\")\n\t .attr(\"data-offset-index\", data.index);\n\n\t if (this.options.columns && this.options.columns.length && data.item) {\n\t element.html(renderColumns(this.options, data.item, templates));\n\t } else {\n\t element.html(itemTemplate(data.item || {}));\n\t }\n\n\t element.toggleClass(FOCUSED, data.current);\n\t element.toggleClass(SELECTED, data.selected);\n\t element.toggleClass(\"k-first\", data.newGroup);\n\t element.toggleClass(\"k-last\", data.isLastGroupedItem);\n\t element.toggleClass(\"k-loading-item\", !data.item);\n\n\t if (data.index !== 0 && data.newGroup) {\n\t $(\"
      \")\n\t .appendTo(element)\n\t .html(templates.groupTemplate(data.group));\n\t }\n\n\t if (data.top !== undefined) {\n\t position(element[0], data.top);\n\t }\n\n\t this.angular(\"compile\", function() {\n\t return { elements: [ element ], data: [ { dataItem: data.item, group: data.group, newGroup: data.newGroup } ]};\n\t });\n\t }\n\n\t function renderColumns(options, dataItem, templates) {\n\t var item = \"\";\n\n\t for (var i = 0; i < options.columns.length; i++) {\n\t var currentWidth = options.columns[i].width;\n\t var currentWidthInt = parseInt(currentWidth, 10);\n\t var widthStyle = '';\n\n\t if(currentWidth){\n\t widthStyle += \"style='width:\";\n\t widthStyle += currentWidthInt;\n\t widthStyle += percentageUnitsRegex.test(currentWidth) ? \"%\" : \"px\";\n\t widthStyle += \";'\";\n\t }\n\t item += \"\";\n\t item += templates[\"column\"+ i](dataItem);\n\t item += \"\";\n\t }\n\n\t return item;\n\t }\n\n\t function mapChangedItems(selected, itemsToMatch) {\n\t var itemsLength = itemsToMatch.length;\n\t var selectedLength = selected.length;\n\t var dataItem;\n\t var found;\n\t var i, j;\n\n\t var changed = [];\n\t var unchanged = [];\n\n\t if (selectedLength) {\n\t for (i = 0; i < selectedLength; i++) {\n\t dataItem = selected[i];\n\t found = false;\n\n\t for (j = 0; j < itemsLength; j++) {\n\t if (dataItem === itemsToMatch[j]) {\n\t found = true;\n\t changed.push({ index: i, item: dataItem });\n\t break;\n\t }\n\t }\n\n\t if (!found) {\n\t unchanged.push(dataItem);\n\t }\n\t }\n\t }\n\n\t return {\n\t changed: changed,\n\t unchanged: unchanged\n\t };\n\t }\n\n\t function isActivePromise(promise) {\n\t return promise && promise.state() !== \"resolved\";\n\t }\n\n\t var VirtualList = DataBoundWidget.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t that.bound(false);\n\t that._fetching = false;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t if (!that.options.itemHeight) {\n\t that.options.itemHeight = getDefaultItemHeight();\n\t }\n\n\t options = that.options;\n\n\t that.element.addClass(LIST + \" \" + VIRTUALLIST).attr(\"role\", \"listbox\");\n\t that.content = that.element.wrap(\"
      \").parent();\n\t that.wrapper = that.content.wrap(\"
      \").parent();\n\t that.header = that.content.before(\"
      \").prev();\n\n\t if (options.columns && options.columns.length) {\n\t that.element.removeClass(LIST);\n\t }\n\n\t that.element.on(\"mouseenter\" + VIRTUAL_LIST_NS, \"li:not(.k-loading-item)\", function() { $(this).addClass(HOVER); })\n\t .on(\"mouseleave\" + VIRTUAL_LIST_NS, \"li\", function() { $(this).removeClass(HOVER); });\n\n\t that._values = toArray(that.options.value);\n\t that._selectedDataItems = [];\n\t that._selectedIndexes = [];\n\t that._rangesList = {};\n\t that._promisesList = [];\n\t that._optionID = kendo.guid();\n\n\t that._templates();\n\n\t that.setDataSource(options.dataSource);\n\n\t that.content.on(\"scroll\" + VIRTUAL_LIST_NS, kendo.throttle(function() {\n\t that._renderItems();\n\t that._triggerListBound();\n\t }, options.delay));\n\n\t that._selectable();\n\t },\n\n\t options: {\n\t name: \"VirtualList\",\n\t autoBind: true,\n\t delay: 100,\n\t height: null,\n\t listScreens: 4,\n\t threshold: 0.5,\n\t itemHeight: null,\n\t oppositeBuffer: 1,\n\t type: \"flat\",\n\t selectable: false,\n\t value: [],\n\t dataValueField: null,\n\t template: \"#:data#\",\n\t placeholderTemplate: \"loading...\",\n\t groupTemplate: \"#:data#\",\n\t fixedGroupTemplate: \"#:data#\",\n\t mapValueTo: \"index\",\n\t valueMapper: null\n\t },\n\n\t events: [\n\t CHANGE,\n\t CLICK,\n\t LISTBOUND,\n\t ITEMCHANGE,\n\t ACTIVATE,\n\t DEACTIVATE\n\t ],\n\n\t setOptions: function(options) {\n\t Widget.fn.setOptions.call(this, options);\n\n\t if (this._selectProxy && this.options.selectable === false) {\n\t this.element.off(CLICK, \".\" + VIRTUALITEM, this._selectProxy);\n\t } else if (!this._selectProxy && this.options.selectable) {\n\t this._selectable();\n\t }\n\n\t this._templates();\n\t this.refresh();\n\t },\n\n\t items: function() {\n\t return $(this._items);\n\t },\n\n\t destroy: function() {\n\t this.wrapper.off(VIRTUAL_LIST_NS);\n\t this.dataSource.unbind(CHANGE, this._refreshHandler);\n\t Widget.fn.destroy.call(this);\n\t },\n\n\t setDataSource: function(source) {\n\t var that = this;\n\t var dataSource = source || {};\n\t var value;\n\n\t dataSource = $.isArray(dataSource) ? {data: dataSource} : dataSource;\n\t dataSource = kendo.data.DataSource.create(dataSource);\n\n\t if (that.dataSource) {\n\t that.dataSource.unbind(CHANGE, that._refreshHandler);\n\n\t that._clean();\n\t that.bound(false);\n\n\t that._deferValueSet = true;\n\t value = that.value();\n\n\t that.value([]);\n\t that.mute(function() {\n\t that.value(value);\n\t });\n\t } else {\n\t that._refreshHandler = $.proxy(that.refresh, that);\n\t }\n\n\t that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n\n\t that.setDSFilter(dataSource.filter());\n\n\t if (dataSource.view().length !== 0) {\n\t that.refresh();\n\t } else if (that.options.autoBind) {\n\t dataSource.fetch();\n\t }\n\t },\n\n\t skip: function() {\n\t return this.dataSource.currentRangeStart();\n\t },\n\n\t _triggerListBound: function () {\n\t var that = this;\n\t var skip = that.skip();\n\n\t if (that.bound() && !that._selectingValue && that._skip !== skip) {\n\t that._skip = skip;\n\t that.trigger(LISTBOUND);\n\t }\n\t },\n\n\t _getValues: function(dataItems) {\n\t var getter = this._valueGetter;\n\n\t return $.map(dataItems, function(dataItem) {\n\t return getter(dataItem);\n\t });\n\t },\n\n\t _highlightSelectedItems: function () {\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t var item = this._getElementByDataItem(this._selectedDataItems[i]);\n\t if(item.length){\n\t item.addClass(SELECTED);\n\t }\n\t }\n\t },\n\n\t refresh: function(e) {\n\t var that = this;\n\t var action = e && e.action;\n\t var isItemChange = action === \"itemchange\";\n\t var filtered = this.isFiltered();\n\t var result;\n\n\t if (that._mute) { return; }\n\n\t that._deferValueSet = false;\n\n\t if (!that._fetching) {\n\t if (filtered) {\n\t that.focus(0);\n\t }\n\n\t that._createList();\n\t if (!action && that._values.length && !filtered &&\n\t !that.options.skipUpdateOnBind && !that._emptySearch) {\n\t that._selectingValue = true;\n\n\t that.bound(true);\n\t that.value(that._values, true).done(function () {\n\t that._selectingValue = false;\n\t that._triggerListBound();\n\t });\n\t } else {\n\t that.bound(true);\n\t that._highlightSelectedItems();\n\t that._triggerListBound();\n\t }\n\t } else {\n\t if (that._renderItems) {\n\t that._renderItems(true);\n\t }\n\n\t that._triggerListBound();\n\t }\n\n\t if (isItemChange || action === \"remove\") {\n\t result = mapChangedItems(that._selectedDataItems, e.items);\n\t if (result.changed.length) {\n\t if (isItemChange) {\n\t that.trigger(\"selectedItemChange\", {\n\t items: result.changed\n\t });\n\t } else {\n\t that.value(that._getValues(result.unchanged));\n\t }\n\t }\n\t }\n\n\t that._fetching = false;\n\t },\n\n\t removeAt: function(position) {\n\t this._selectedIndexes.splice(position, 1);\n\t this._values.splice(position, 1);\n\n\t return {\n\t position: position,\n\t dataItem: this._selectedDataItems.splice(position, 1)[0]\n\t };\n\t },\n\n\t setValue: function(value) {\n\t this._values = toArray(value);\n\t },\n\n\t value: function(value, _forcePrefetch) {\n\t var that = this;\n\n\t if (value === undefined) {\n\t return that._values.slice();\n\t }\n\n\t if (value === null) {\n\t value = [];\n\t }\n\n\t value = toArray(value);\n\n\t if (!that._valueDeferred || that._valueDeferred.state() === \"resolved\") {\n\t that._valueDeferred = $.Deferred();\n\t }\n\n\t var shouldClear = that.options.selectable === \"multiple\" && that.select().length && value.length;\n\n\t if (shouldClear || !value.length) {\n\t that.select(-1);\n\t }\n\n\t that._values = value;\n\n\t if ((that.bound() && !that._mute && !that._deferValueSet) || _forcePrefetch) {\n\t that._prefetchByValue(value);\n\t }\n\n\t return that._valueDeferred;\n\t },\n\n\t _checkValuesOrder: function (value) {\n\t if (this._removedAddedIndexes &&\n\t this._removedAddedIndexes.length === value.length) {\n\t var newValue = this._removedAddedIndexes.slice();\n\t this._removedAddedIndexes = null;\n\t return newValue;\n\t }\n\n\t return value;\n\t },\n\n\t _prefetchByValue: function(value) {\n\t var that = this,\n\t dataView = that._dataView,\n\t valueGetter = that._valueGetter,\n\t mapValueTo = that.options.mapValueTo,\n\t item, match = false,\n\t forSelection = [];\n\n\t //try to find the items in the loaded data\n\t for (var i = 0; i < value.length; i++) {\n\t for (var idx = 0; idx < dataView.length; idx++) {\n\t item = dataView[idx].item;\n\t if (item) {\n\t match = isPrimitive(item) ? value[i] === item : value[i] === valueGetter(item);\n\n\t if (match) {\n\t forSelection.push(dataView[idx].index);\n\t }\n\t }\n\t }\n\t }\n\n\t if (forSelection.length === value.length) {\n\t that._values = [];\n\t that.select(forSelection);\n\t return;\n\t }\n\n\t //prefetch the items\n\t if (typeof that.options.valueMapper === \"function\") {\n\t that.options.valueMapper({\n\t value: (this.options.selectable === \"multiple\") ? value : value[0],\n\t success: function(response) {\n\t if (mapValueTo === \"index\") {\n\t that.mapValueToIndex(response);\n\t } else if (mapValueTo === \"dataItem\") {\n\t that.mapValueToDataItem(response);\n\t }\n\t }\n\t });\n\t } else {\n\t if (!that.value()[0]) {\n\t that.select([-1]);\n\t } else {\n\t that._selectingValue = false;\n\t that._triggerListBound();\n\t }\n\t }\n\t },\n\n\t mapValueToIndex: function(indexes) {\n\t if (indexes === undefined || indexes === -1 || indexes === null) {\n\t indexes = [];\n\t } else {\n\t indexes = toArray(indexes);\n\t }\n\n\t if (!indexes.length) {\n\t indexes = [-1];\n\t } else {\n\t var removed = this._deselect([]).removed;\n\t if (removed.length) {\n\t this._triggerChange(removed, []);\n\t }\n\t }\n\n\t this.select(indexes);\n\t },\n\n\t mapValueToDataItem: function(dataItems) {\n\t var removed, added;\n\n\t if (dataItems === undefined || dataItems === null) {\n\t dataItems = [];\n\t } else {\n\t dataItems = toArray(dataItems);\n\t }\n\n\t if (!dataItems.length) {\n\t this.select([-1]);\n\t } else {\n\t removed = $.map(this._selectedDataItems, function(item, index) {\n\t return { index: index, dataItem: item };\n\t });\n\n\t added = $.map(dataItems, function(item, index) {\n\t return { index: index, dataItem: item };\n\t });\n\n\t this._selectedDataItems = dataItems;\n\n\t this._selectedIndexes = [];\n\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t var item = this._getElementByDataItem(this._selectedDataItems[i]);\n\t this._selectedIndexes.push(this._getIndecies(item)[0]);\n\t item.addClass(SELECTED);\n\t }\n\n\t this._triggerChange(removed, added);\n\n\t if (this._valueDeferred) {\n\t this._valueDeferred.resolve();\n\t }\n\t }\n\t },\n\n\t deferredRange: function(index) {\n\t var dataSource = this.dataSource;\n\t var take = this.itemCount;\n\t var ranges = this._rangesList;\n\t var result = $.Deferred();\n\t var defs = [];\n\n\t var low = Math.floor(index / take) * take;\n\t var high = Math.ceil(index / take) * take;\n\n\t var pages = high === low ? [ high ] : [ low, high ];\n\n\t $.each(pages, function(_, skip) {\n\t var end = skip + take;\n\t var existingRange = ranges[skip];\n\t var deferred;\n\n\t if (!existingRange || (existingRange.end !== end)) {\n\t deferred = $.Deferred();\n\t ranges[skip] = { end: end, deferred: deferred };\n\n\t dataSource._multiplePrefetch(skip, take, function() {\n\t deferred.resolve();\n\t });\n\t } else {\n\t deferred = existingRange.deferred;\n\t }\n\n\t defs.push(deferred);\n\t });\n\n\t $.when.apply($, defs).then(function() {\n\t result.resolve();\n\t });\n\n\t return result;\n\t },\n\n\t prefetch: function(indexes) {\n\t var that = this,\n\t take = this.itemCount,\n\t isEmptyList = !that._promisesList.length;\n\n\t if (!isActivePromise(that._activeDeferred)) {\n\t that._activeDeferred = $.Deferred();\n\t that._promisesList = [];\n\t }\n\n\t $.each(indexes, function(_, index) {\n\t that._promisesList.push(that.deferredRange(that._getSkip(index, take)));\n\t });\n\n\t if (isEmptyList) {\n\t $.when.apply($, that._promisesList).done(function() {\n\t that._promisesList = [];\n\t that._activeDeferred.resolve();\n\t });\n\t }\n\n\t return that._activeDeferred;\n\t },\n\n\t _findDataItem: function(view, index) {\n\t var group;\n\n\t //find in grouped view\n\t if (this.options.type === \"group\") {\n\t for (var i = 0; i < view.length; i++) {\n\t group = view[i].items;\n\t if (group.length <= index) {\n\t index = index - group.length;\n\t } else {\n\t return group[index];\n\t }\n\t }\n\t }\n\n\t //find in flat view\n\t return view[index];\n\t },\n\n\t _getRange: function(skip, take) {\n\t return this.dataSource._findRange(skip, Math.min(skip + take, this.dataSource.total()));\n\t },\n\n\t dataItemByIndex: function(index) {\n\t var that = this;\n\t var take = that.itemCount;\n\t var skip = that._getSkip(index, take);\n\t var view = this._getRange(skip, take);\n\n\t //should not return item if data is not loaded\n\t if (!that._getRange(skip, take).length) {\n\t return null;\n\t }\n\n\t if (that.options.type === \"group\") {\n\t kendo.ui.progress($(that.wrapper), true);\n\t that.mute(function() {\n\t that.dataSource.range(skip, take, function () {\n\t kendo.ui.progress($(that.wrapper), false);\n\t });\n\t view = that.dataSource.view();\n\t });\n\t }\n\n\t return that._findDataItem(view, [index - skip]);\n\t },\n\n\t selectedDataItems: function() {\n\t return this._selectedDataItems.slice();\n\t },\n\n\t scrollWith: function(value) {\n\t this.content.scrollTop(this.content.scrollTop() + value);\n\t },\n\n\t scrollTo: function(y) {\n\t this.content.scrollTop(y); //works only if the element is visible\n\t },\n\n\t scrollToIndex: function(index) {\n\t this.scrollTo(index * this.options.itemHeight);\n\t },\n\n\t focus: function(candidate) {\n\t var element,\n\t index,\n\t data,\n\t current,\n\t itemHeight = this.options.itemHeight,\n\t id = this._optionID,\n\t triggerEvent = true;\n\n\t if (candidate === undefined) {\n\t current = this.element.find(\".\" + FOCUSED);\n\t return current.length ? current : null;\n\t }\n\n\t if (typeof candidate === \"function\") {\n\t data = this.dataSource.flatView();\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (candidate(data[idx])) {\n\t candidate = idx;\n\t break;\n\t }\n\t }\n\t }\n\n\t if (candidate instanceof Array) {\n\t candidate = lastFrom(candidate);\n\t }\n\n\t if (isNaN(candidate)) {\n\t element = $(candidate);\n\t index = parseInt($(element).attr(\"data-offset-index\"), 10);\n\t } else {\n\t index = candidate;\n\t element = this._getElementByIndex(index);\n\t }\n\n\t if (index === -1) {\n\t this.element.find(\".\" + FOCUSED).removeClass(FOCUSED);\n\t this._focusedIndex = undefined;\n\t return;\n\t }\n\n\t if (element.length) { /*focus rendered item*/\n\t if (element.hasClass(FOCUSED)) {\n\t triggerEvent = false;\n\t }\n\t if (this._focusedIndex !== undefined) {\n\t current = this._getElementByIndex(this._focusedIndex);\n\t current\n\t .removeClass(FOCUSED)\n\t .removeAttr(\"id\");\n\n\t if (triggerEvent) {\n\t this.trigger(DEACTIVATE);\n\t }\n\t }\n\n\t this._focusedIndex = index;\n\n\t element\n\t .addClass(FOCUSED)\n\t .attr(\"id\", id);\n\n\t var position = this._getElementLocation(index);\n\n\t if (position === \"top\") {\n\t this.scrollTo(index * itemHeight);\n\t } else if (position === \"bottom\") {\n\t this.scrollTo((index * itemHeight + itemHeight) - this._screenHeight);\n\t } else if (position === \"outScreen\") {\n\t this.scrollTo(index * itemHeight);\n\t }\n\n\t if (triggerEvent) {\n\t this.trigger(ACTIVATE);\n\t }\n\t } else { /*focus non rendered item*/\n\t this._focusedIndex = index;\n\t this.items().removeClass(FOCUSED);\n\t this.scrollToIndex(index);\n\t }\n\t },\n\n\t focusIndex: function() {\n\t return this._focusedIndex;\n\t },\n\n\t focusFirst: function() {\n\t this.scrollTo(0);\n\t this.focus(0);\n\t },\n\n\t focusLast: function() {\n\t var lastIndex = this.dataSource.total();\n\t this.scrollTo(this.heightContainer.offsetHeight);\n\t this.focus(lastIndex - 1);\n\t },\n\n\t focusPrev: function() {\n\t var index = this._focusedIndex;\n\t var current;\n\n\t if (!isNaN(index) && index > 0) {\n\t index -= 1;\n\t this.focus(index);\n\n\t current = this.focus();\n\t if (current && current.hasClass(\"k-loading-item\")) {\n\t index += 1;\n\t this.focus(index);\n\t }\n\n\t return index;\n\t } else {\n\t index = this.dataSource.total() - 1;\n\t this.focus(index);\n\t return index;\n\t }\n\t },\n\n\t focusNext: function() {\n\t var index = this._focusedIndex;\n\t var lastIndex = this.dataSource.total() - 1;\n\t var current;\n\n\t if (!isNaN(index) && index < lastIndex) {\n\t index += 1;\n\t this.focus(index);\n\n\t current = this.focus();\n\t if (current && current.hasClass(\"k-loading-item\")) {\n\t index -= 1;\n\t this.focus(index);\n\t }\n\n\t return index;\n\t } else {\n\t index = 0;\n\t this.focus(index);\n\t return index;\n\t }\n\t },\n\n\t _triggerChange: function(removed, added) {\n\t removed = removed || [];\n\t added = added || [];\n\n\t if (removed.length || added.length) {\n\t this.trigger(CHANGE, {\n\t removed: removed,\n\t added: added\n\t });\n\t }\n\t },\n\n\t select: function(candidate) {\n\t var that = this,\n\t indices,\n\t initialIndices,\n\t singleSelection = that.options.selectable !== \"multiple\",\n\t prefetchStarted = isActivePromise(that._activeDeferred),\n\t filtered = this.isFiltered(),\n\t isAlreadySelected,\n\t deferred,\n\t result,\n\t removed = [];\n\n\t if (candidate === undefined) {\n\t return that._selectedIndexes.slice();\n\t }\n\n\t if (!that._selectDeferred || that._selectDeferred.state() === \"resolved\") {\n\t that._selectDeferred = $.Deferred();\n\t }\n\n\t indices = that._getIndecies(candidate);\n\t isAlreadySelected = singleSelection && !filtered && lastFrom(indices) === lastFrom(this._selectedIndexes);\n\t removed = that._deselectCurrentValues(indices);\n\n\t if (removed.length || !indices.length || isAlreadySelected) {\n\t that._triggerChange(removed);\n\n\t if (that._valueDeferred) {\n\t that._valueDeferred.resolve().promise();\n\t }\n\n\t return that._selectDeferred.resolve().promise();\n\t }\n\n\t if (indices.length === 1 && indices[0] === -1) {\n\t indices = [];\n\t }\n\n\t initialIndices = indices;\n\t result = that._deselect(indices);\n\t removed = result.removed;\n\t indices = result.indices;\n\n\t if (singleSelection) {\n\t prefetchStarted = false;\n\t if (indices.length) {\n\t indices = [lastFrom(indices)];\n\t }\n\t }\n\n\t var done = function() {\n\t var added = that._select(indices);\n\n\t if (initialIndices.length === indices.length || singleSelection) {\n\t that.focus(indices);\n\t }\n\n\t that._triggerChange(removed, added);\n\n\t if (that._valueDeferred) {\n\t that._valueDeferred.resolve();\n\t }\n\n\t that._selectDeferred.resolve();\n\t };\n\n\t deferred = that.prefetch(indices);\n\n\t if (!prefetchStarted) {\n\t if (deferred) {\n\t deferred.done(done);\n\t } else {\n\t done();\n\t }\n\t }\n\n\t return that._selectDeferred.promise();\n\t },\n\n\t bound: function(bound) {\n\t if (bound === undefined) {\n\t return this._listCreated;\n\t }\n\n\t this._listCreated = bound;\n\t },\n\n\t mute: function(callback) {\n\t this._mute = true;\n\t proxy(callback(), this);\n\t this._mute = false;\n\t },\n\n\t setDSFilter: function(filter) {\n\t this._lastDSFilter = $.extend({}, filter);\n\t },\n\n\t isFiltered: function() {\n\t if (!this._lastDSFilter) {\n\t this.setDSFilter(this.dataSource.filter());\n\t }\n\n\t return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n\t },\n\n\t skipUpdate: $.noop,\n\n\t _getElementByIndex: function(index) {\n\t return this.items().filter(function(idx, element) {\n\t return index === parseInt($(element).attr(\"data-offset-index\"), 10);\n\t });\n\t },\n\n\t _getElementByDataItem: function(dataItem) {\n\t var dataView = this._dataView,\n\t valueGetter = this._valueGetter,\n\t element, match;\n\n\t for (var i = 0; i < dataView.length; i++) {\n\t match = dataView[i].item && isPrimitive(dataView[i].item) ? dataView[i].item === dataItem : dataView[i].item && dataItem && valueGetter(dataView[i].item) == valueGetter(dataItem);\n\t if (match) {\n\t element = dataView[i];\n\t break;\n\t }\n\t }\n\n\t return element ? this._getElementByIndex(element.index) : $();\n\t },\n\n\t _clean: function() {\n\t this.result = undefined;\n\t this._lastScrollTop = undefined;\n\t this._skip = undefined;\n\t $(this.heightContainer).remove();\n\t this.heightContainer = undefined;\n\t this.element.empty();\n\t },\n\n\t _height: function() {\n\t var hasData = !!this.dataSource.view().length,\n\t height = this.options.height,\n\t itemHeight = this.options.itemHeight,\n\t total = this.dataSource.total();\n\n\t if (!hasData) {\n\t height = 0;\n\t } else if (height/itemHeight > total) {\n\t height = total * itemHeight;\n\t }\n\n\t return height;\n\t },\n\n\t setScreenHeight: function() {\n\t var height = this._height();\n\n\t this.content.height(height);\n\t this._screenHeight = height;\n\t },\n\n\t screenHeight: function() {\n\t return this._screenHeight;\n\t },\n\n\t _getElementLocation: function(index) {\n\t var scrollTop = this.content.scrollTop(),\n\t screenHeight = this._screenHeight,\n\t itemHeight = this.options.itemHeight,\n\t yPosition = index * itemHeight,\n\t yDownPostion = yPosition + itemHeight,\n\t screenEnd = scrollTop + screenHeight,\n\t position;\n\n\t if (yPosition === (scrollTop - itemHeight) || (yDownPostion > scrollTop && yPosition < scrollTop)) {\n\t position = \"top\";\n\t } else if (yPosition === screenEnd || (yPosition < screenEnd && screenEnd < yDownPostion)) {\n\t position = \"bottom\";\n\t } else if ((yPosition >= scrollTop) && (yPosition <= scrollTop + (screenHeight - itemHeight))) {\n\t position = \"inScreen\";\n\t } else {\n\t position = \"outScreen\";\n\t }\n\n\t return position;\n\t },\n\n\t _templates: function() {\n\t var options = this.options;\n\t var templates = {\n\t template: options.template,\n\t placeholderTemplate: options.placeholderTemplate,\n\t groupTemplate: options.groupTemplate,\n\t fixedGroupTemplate: options.fixedGroupTemplate\n\t };\n\n\t if (options.columns) {\n\t for (var i = 0; i < options.columns.length; i++) {\n\t var currentColumn = options.columns[i];\n\t var templateText = currentColumn.field ? currentColumn.field.toString(): \"text\";\n\n\t templates[\"column\"+ i] = currentColumn.template || \"#: \" + templateText + \"#\";\n\t }\n\t }\n\n\t for (var key in templates) {\n\t if (typeof templates[key] !== \"function\") {\n\t templates[key] = kendo.template(templates[key] || \"\");\n\t }\n\t }\n\n\t this.templates = templates;\n\t },\n\n\t _generateItems: function(element, count) {\n\t var items = [],\n\t item,\n\t itemHeight = this.options.itemHeight + \"px\";\n\n\t while(count-- > 0) {\n\t item = document.createElement(\"li\");\n\t item.tabIndex = -1;\n\t item.className = VIRTUALITEM + \" \" + ITEM;\n\t item.setAttribute(\"role\", \"option\");\n\t item.style.height = itemHeight;\n\t item.style.minHeight = itemHeight;\n\t element.appendChild(item);\n\n\t items.push(item);\n\t }\n\n\t return items;\n\t },\n\n\t _saveInitialRanges: function() {\n\t var ranges = this.dataSource._ranges;\n\t var deferred = $.Deferred();\n\t deferred.resolve();\n\n\t this._rangesList = {};\n\t for (var i = 0; i < ranges.length; i++) {\n\t this._rangesList[ranges[i].start] = { end: ranges[i].end, deferred: deferred };\n\t }\n\t },\n\n\t _createList: function() {\n\t var that = this,\n\t content = that.content.get(0),\n\t options = that.options,\n\t dataSource = that.dataSource;\n\n\t if (that.bound()) {\n\t that._clean();\n\t }\n\n\t that._saveInitialRanges();\n\t that._buildValueGetter();\n\t that.setScreenHeight();\n\t that.itemCount = getItemCount(that._screenHeight, options.listScreens, options.itemHeight);\n\n\t if (that.itemCount > dataSource.total()) {\n\t that.itemCount = dataSource.total();\n\t }\n\n\t that._items = that._generateItems(that.element[0], that.itemCount);\n\n\t that._setHeight(options.itemHeight * dataSource.total());\n\t that.options.type = (dataSource.group() || []).length ? \"group\" : \"flat\";\n\n\t if (that.options.type === \"flat\") {\n\t that.header.hide();\n\t } else {\n\t that.header.show();\n\t }\n\n\t that.getter = that._getter(function() {\n\t that._renderItems(true);\n\t });\n\n\t that._onScroll = function(scrollTop, force) {\n\t var getList = that._listItems(that.getter);\n\t return that._fixedHeader(scrollTop, getList(scrollTop, force));\n\t };\n\n\t that._renderItems = that._whenChanged(\n\t scrollCallback(content, that._onScroll),\n\t syncList(that._reorderList(that._items, $.proxy(render, that)))\n\t );\n\n\t that._renderItems();\n\t that._calculateGroupPadding(that._screenHeight);\n\t that._calculateColumnsHeaderPadding();\n\t },\n\n\t _setHeight: function(height) {\n\t var currentHeight,\n\t heightContainer = this.heightContainer;\n\n\t if (!heightContainer) {\n\t heightContainer = this.heightContainer = appendChild(this.content[0], HEIGHTCONTAINER);\n\t } else {\n\t currentHeight = heightContainer.offsetHeight;\n\t }\n\n\t if (height !== currentHeight) {\n\t heightContainer.innerHTML = \"\";\n\n\t while (height > 0) {\n\t var padHeight = Math.min(height, 250000); //IE workaround, should not create elements with height larger than 250000px\n\t appendChild(heightContainer).style.height = padHeight + \"px\";\n\t height -= padHeight;\n\t }\n\t }\n\t },\n\n\t _getter: function() {\n\t var lastRequestedRange = null,\n\t dataSource = this.dataSource,\n\t lastRangeStart = dataSource.skip(),\n\t type = this.options.type,\n\t pageSize = this.itemCount,\n\t flatGroups = {};\n\n\t if (dataSource.pageSize() < pageSize) {\n\t this.mute(function() {\n\t dataSource.pageSize(pageSize);\n\t });\n\t }\n\n\t return function(index, rangeStart) {\n\t var that = this;\n\t if (!dataSource.inRange(rangeStart, pageSize)) {\n\t if (lastRequestedRange !== rangeStart) {\n\t lastRequestedRange = rangeStart;\n\t lastRangeStart = rangeStart;\n\n\t if (that._getterDeferred) {\n\t that._getterDeferred.reject();\n\t }\n\n\t that._getterDeferred = that.deferredRange(rangeStart);\n\t that._getterDeferred.then(function() {\n\t var firstItemIndex = that._indexConstraint(that.content[0].scrollTop);\n\n\t that._getterDeferred = null;\n\n\t if (rangeStart <= firstItemIndex && firstItemIndex <= (rangeStart + pageSize)) {\n\t that._fetching = true;\n\t dataSource.range(rangeStart, pageSize);\n\t }\n\t });\n\t }\n\n\t return null;\n\t } else {\n\t if (lastRangeStart !== rangeStart) {\n\t this.mute(function() {\n\t dataSource.range(rangeStart, pageSize);\n\t lastRangeStart = rangeStart;\n\t });\n\t }\n\n\t var result;\n\t if (type === \"group\") { //grouped list\n\t if (!flatGroups[rangeStart]) {\n\t var flatGroup = flatGroups[rangeStart] = [];\n\t var groups = dataSource.view();\n\t for (var i = 0, len = groups.length; i < len; i++) {\n\t var group = groups[i];\n\t for (var j = 0, groupLength = group.items.length; j < groupLength; j++) {\n\t flatGroup.push({ item: group.items[j], group: group.value });\n\t }\n\t }\n\t }\n\n\t result = flatGroups[rangeStart][index - rangeStart];\n\t } else { //flat list\n\t result = dataSource.view()[index - rangeStart];\n\t }\n\n\t return result;\n\t }\n\t };\n\t },\n\n\t _fixedHeader: function(scrollTop, list) {\n\t var group = this.currentVisibleGroup,\n\t itemHeight = this.options.itemHeight,\n\t firstVisibleDataItemIndex = Math.floor((scrollTop - list.top) / itemHeight),\n\t firstVisibleDataItem = list.items[firstVisibleDataItemIndex];\n\n\t if (firstVisibleDataItem && firstVisibleDataItem.item) {\n\t var firstVisibleGroup = firstVisibleDataItem.group;\n\n\t if (firstVisibleGroup !== group) {\n\t var fixedGroupText = firstVisibleGroup || \"\";\n\t this.header.html(this.templates.fixedGroupTemplate(fixedGroupText));\n\t this.currentVisibleGroup = firstVisibleGroup;\n\t }\n\t }\n\n\t return list;\n\t },\n\n\t _itemMapper: function(item, index, value) {\n\t var listType = this.options.type,\n\t itemHeight = this.options.itemHeight,\n\t currentIndex = this._focusedIndex,\n\t selected = false,\n\t current = false,\n\t newGroup = false,\n\t group = null,\n\t match = false,\n\t valueGetter = this._valueGetter;\n\n\t if (listType === \"group\") {\n\t if (item) {\n\t newGroup = index === 0 || (this._currentGroup !== false && this._currentGroup !== item.group);\n\t this._currentGroup = item.group;\n\t }\n\n\t group = item ? item.group : null;\n\t item = item ? item.item : null;\n\t }\n\n\t if (this.options.mapValueTo === \"dataItem\" && this._selectedDataItems.length && item) {\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t match = valueGetter(this._selectedDataItems[i]) === valueGetter(item);\n\t if (match) {\n\t selected = true;\n\t break;\n\t }\n\t }\n\t } else if (!this.isFiltered() && value.length && item) {\n\t for (var j = 0; j < value.length; j++) {\n\t match = isPrimitive(item) ? value[j] === item : value[j] === valueGetter(item);\n\t if (match) {\n\t value.splice(j , 1);\n\t selected = true;\n\t break;\n\t }\n\t }\n\t }\n\n\t if (currentIndex === index) {\n\t current = true;\n\t }\n\n\t return {\n\t item: item ? item : null,\n\t group: group,\n\t newGroup: newGroup,\n\t selected: selected,\n\t current: current,\n\t index: index,\n\t top: index * itemHeight\n\t };\n\t },\n\n\t _range: function(index) {\n\t var itemCount = this.itemCount,\n\t value = this._values.slice(),\n\t items = [],\n\t item;\n\n\t this._view = {};\n\t this._currentGroup = false;\n\n\t for (var i = index, length = index + itemCount; i < length; i++) {\n\t item = this._itemMapper(this.getter(i, index), i, value);\n\t if(items[items.length - 1]){\n\t items[items.length - 1].isLastGroupedItem = item.newGroup;\n\t }\n\t items.push(item);\n\t this._view[item.index] = item;\n\t }\n\n\t this._dataView = items;\n\t return items;\n\t },\n\n\t _getDataItemsCollection: function(scrollTop, lastScrollTop) {\n\t var items = this._range(this._listIndex(scrollTop, lastScrollTop));\n\t return {\n\t index: items.length ? items[0].index : 0,\n\t top: items.length ? items[0].top : 0,\n\t items: items\n\t };\n\t },\n\n\t _listItems: function() {\n\t var screenHeight = this._screenHeight,\n\t options = this.options;\n\n\t var theValidator = listValidator(options, screenHeight);\n\n\t return $.proxy(function(value, force) {\n\t var result = this.result,\n\t lastScrollTop = this._lastScrollTop;\n\n\t if (force || !result || !theValidator(result, value, lastScrollTop)) {\n\t result = this._getDataItemsCollection(value, lastScrollTop);\n\t }\n\n\t this._lastScrollTop = value;\n\t this.result = result;\n\n\t return result;\n\t }, this);\n\t },\n\n\t _whenChanged: function(getter, callback) {\n\t var current;\n\n\t return function(force) {\n\t var theNew = getter(force);\n\n\t if (theNew !== current) {\n\t current = theNew;\n\t callback(theNew, force);\n\t }\n\t };\n\t },\n\n\t _reorderList: function(list, reorder) {\n\t var that = this;\n\t var length = list.length;\n\t var currentOffset = -Infinity;\n\t reorder = $.proxy(map2(reorder, this.templates), this);\n\n\t return function(list2, offset, force) {\n\t var diff = offset - currentOffset;\n\t var range, range2;\n\n\t if (force || Math.abs(diff) >= length) { // full reorder\n\t range = list;\n\t range2 = list2;\n\t } else { // partial reorder\n\t range = reshift(list, diff);\n\t range2 = diff > 0 ? list2.slice(-diff) : list2.slice(0, -diff);\n\t }\n\n\t reorder(range, range2, that.bound());\n\n\t currentOffset = offset;\n\t };\n\t },\n\n\t _bufferSizes: function() {\n\t var options = this.options;\n\n\t return bufferSizes(this._screenHeight, options.listScreens, options.oppositeBuffer);\n\t },\n\n\t _indexConstraint: function(position) {\n\t var itemCount = this.itemCount,\n\t itemHeight = this.options.itemHeight,\n\t total = this.dataSource.total();\n\n\t return Math.min(Math.max(total - itemCount, 0), Math.max(0, Math.floor(position / itemHeight )));\n\t },\n\n\t _listIndex: function(scrollTop, lastScrollTop) {\n\t var buffers = this._bufferSizes(),\n\t position;\n\n\t position = scrollTop - ((scrollTop > lastScrollTop) ? buffers.down : buffers.up);\n\n\t return this._indexConstraint(position);\n\t },\n\n\t _selectable: function() {\n\t if (this.options.selectable) {\n\t this._selectProxy = $.proxy(this, \"_clickHandler\");\n\t this.element.on(CLICK + VIRTUAL_LIST_NS, \".\" + VIRTUALITEM, this._selectProxy);\n\t }\n\t },\n\n\t getElementIndex: function(element) {\n\t if (!(element instanceof jQuery)) {\n\t return undefined;\n\t }\n\n\t return parseInt(element.attr(\"data-offset-index\"), 10);\n\t },\n\n\t _getIndecies: function(candidate) {\n\t var result = [], data;\n\n\t if (typeof candidate === \"function\") {\n\t data = this.dataSource.flatView();\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (candidate(data[idx])) {\n\t result.push(idx);\n\t break;\n\t }\n\t }\n\t }\n\n\t if (typeof candidate === \"number\") {\n\t result.push(candidate);\n\t }\n\n\t var elementIndex = this.getElementIndex(candidate);\n\t if (!isNaN(elementIndex)) {\n\t result.push(elementIndex);\n\t }\n\n\t if (candidate instanceof Array) {\n\t result = candidate;\n\t }\n\n\t return result;\n\t },\n\n\t _deselect: function(indices) {\n\t var removed = [],\n\t selectedIndex,\n\t dataItem,\n\t selectedIndexes = this._selectedIndexes,\n\t selectedDataItems = this._selectedDataItems,\n\t position = 0,\n\t selectable = this.options.selectable,\n\t removedindexesCounter = 0,\n\t valueGetter = this._valueGetter,\n\t item, match,\n\t result = null;\n\n\t indices = indices.slice();\n\n\t if (selectable === true || !indices.length) { //deselect everything\n\t for (var idx = 0; idx < selectedIndexes.length; idx++) {\n\t if (selectedIndexes[idx] !== undefined) {\n\t this._getElementByIndex(selectedIndexes[idx]).removeClass(SELECTED);\n\t } else if (selectedDataItems[idx]) {\n\t this._getElementByDataItem(selectedDataItems[idx]).removeClass(SELECTED);\n\t }\n\n\t removed.push({\n\t index: selectedIndexes[idx],\n\t position: idx,\n\t dataItem: selectedDataItems[idx]\n\t });\n\t }\n\n\t this._values = [];\n\t this._selectedDataItems = [];\n\t this._selectedIndexes = [];\n\t } else if (selectable === \"multiple\") {\n\t for (var i = 0; i < indices.length; i++) {\n\t result = null;\n\t position = $.inArray(indices[i], selectedIndexes);\n\t dataItem = this.dataItemByIndex(indices[i]);\n\n\t if (position === -1 && dataItem) {\n\t for (var j = 0; j < selectedDataItems.length; j++) {\n\t match = isPrimitive(dataItem) ? selectedDataItems[j] === dataItem : valueGetter(selectedDataItems[j]) === valueGetter(dataItem);\n\t if (match) {\n\t item = this._getElementByIndex(indices[i]);\n\t result = this._deselectSingleItem(item, j, indices[i], removedindexesCounter);\n\t }\n\t }\n\t } else {\n\t selectedIndex = selectedIndexes[position];\n\n\t if (selectedIndex !== undefined) {\n\t item = this._getElementByIndex(selectedIndex);\n\t result = this._deselectSingleItem(item, position, selectedIndex, removedindexesCounter);\n\t }\n\t }\n\n\t if (result) {\n\t indices.splice(i, 1);\n\t removed.push(result);\n\n\t removedindexesCounter++;\n\t i--;\n\t }\n\t }\n\t }\n\n\t return {\n\t indices: indices,\n\t removed: removed\n\t };\n\t },\n\n\t _deselectSingleItem: function(item, position, selectedIndex, removedindexesCounter) {\n\t var dataItem;\n\n\t if (!item.hasClass(\"k-state-selected\")) {\n\t return;\n\t }\n\n\t item.removeClass(SELECTED);\n\t this._values.splice(position, 1);\n\t this._selectedIndexes.splice(position, 1);\n\t dataItem = this._selectedDataItems.splice(position, 1)[0];\n\n\t return {\n\t index: selectedIndex,\n\t position: position + removedindexesCounter,\n\t dataItem: dataItem\n\t };\n\t },\n\n\t _deselectCurrentValues: function(indices) {\n\t var children = this.element[0].children;\n\t var value, index, position;\n\t var values = this._values;\n\t var removed = [];\n\t var idx = 0;\n\t var j;\n\n\t if (this.options.selectable !== \"multiple\" || !this.isFiltered()) {\n\t return [];\n\t }\n\n\t if (indices[0] === -1) {\n\t $(children).removeClass(\"k-state-selected\");\n\t removed = $.map(this._selectedDataItems.slice(0), function(dataItem, idx) {\n\t return {\n\t dataItem: dataItem,\n\t position: idx\n\t };\n\t });\n\t this._selectedIndexes = [];\n\t this._selectedDataItems = [];\n\t this._values = [];\n\t return removed;\n\t }\n\n\t for (; idx < indices.length; idx++) {\n\t position = -1;\n\t index = indices[idx];\n\t if (this.dataItemByIndex(index)) {\n\t value = this._valueGetter(this.dataItemByIndex(index));\n\t }\n\n\t for (j = 0; j < values.length; j++) {\n\t if (value == values[j]) {\n\t position = j;\n\t break;\n\t }\n\t }\n\n\t if (position > -1) {\n\t removed.push(this.removeAt(position));\n\t $(children[index]).removeClass(\"k-state-selected\");\n\t }\n\t }\n\n\t return removed;\n\t },\n\n\t _getSkip: function(index, take) {\n\t var page = index < take ? 1 : Math.floor(index / take) + 1;\n\n\t return (page - 1) * take;\n\t },\n\n\t _select: function(indexes) {\n\t var that = this,\n\t singleSelection = this.options.selectable !== \"multiple\",\n\t dataSource = this.dataSource,\n\t dataItem, oldSkip,\n\t take = this.itemCount,\n\t valueGetter = this._valueGetter,\n\t added = [];\n\n\t if (singleSelection) {\n\t that._selectedIndexes = [];\n\t that._selectedDataItems = [];\n\t that._values = [];\n\t }\n\n\t oldSkip = dataSource.skip();\n\n\t $.each(indexes, function(_, index) {\n\t var skip = that._getSkip(index, take);\n\n\t that.mute(function() {\n\t dataSource.range(skip, take); //switch the range to get the dataItem\n\n\t dataItem = that._findDataItem(dataSource.view(), [index - skip]);\n\t that._selectedIndexes.push(index);\n\t that._selectedDataItems.push(dataItem);\n\t that._values.push(isPrimitive(dataItem) ? dataItem : valueGetter(dataItem));\n\n\t added.push({\n\t index: index,\n\t dataItem: dataItem\n\t });\n\n\t that._getElementByIndex(index).addClass(SELECTED);\n\n\t dataSource.range(oldSkip, take); //switch back the range\n\t });\n\t });\n\n\t that._values = that._checkValuesOrder(that._values);\n\n\t return added;\n\t },\n\n\t _clickHandler: function(e) {\n\t var item = $(e.currentTarget);\n\n\t if (!e.isDefaultPrevented() && item.attr(\"data-uid\")) {\n\t this.trigger(CLICK, { item: item });\n\t }\n\t },\n\n\t _buildValueGetter: function() {\n\t this._valueGetter = kendo.getter(this.options.dataValueField);\n\t },\n\n\t _calculateGroupPadding: function (height) {\n\t var firstItem = this.items().first(),\n\t groupHeader = this.header,\n\t padding = 0;\n\n\t if (groupHeader[0] && groupHeader[0].style.display !== \"none\") {\n\t if (height !== \"auto\") {\n\t padding = kendo.support.scrollbar();\n\t }\n\n\t padding += parseFloat(firstItem.css(\"border-right-width\"), 10) + parseFloat(firstItem.children(\".k-group\").css(\"right\"), 10);\n\n\t groupHeader.css(\"padding-right\", padding);\n\t }\n\t },\n\n\t _calculateColumnsHeaderPadding: function () {\n\t if(this.options.columns && this.options.columns.length){\n\t var isRtl = kendo.support.isRtl(this.wrapper);\n\t var scrollbar = kendo.support.scrollbar();\n\t var columnsHeader = this.content.parent().parent().find(\".k-grid-header\");\n\t var total = this.dataSource.total();\n\n\t columnsHeader.css((isRtl ? \"padding-left\" : \"padding-right\"), total ? scrollbar : 0);\n\t }\n\t }\n\n\t });\n\n\t kendo.ui.VirtualList = VirtualList;\n\t kendo.ui.plugin(VirtualList);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1017)))\n\n/***/ })\n\n/******/ });","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

      '\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
      ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/**\n * Copyright (c) 2020, Travis Clarke (https://www.travismclarke.com/)\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function ($) {\n 'use strict';\n\n $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var version = \"2.0.0\";\n\n var RESIZE = \"resize\";\n var LOAD = \"load\";\n var USEMAP = \"usemap\";\n var COORDS = \"coords\";\n var COMPLETE = \"complete\";\n /**\n * ImageMap main library constructor\n *\n * @param selector {string} CSS selector\n * @param wait {number} [wait=500] debounce wait interval\n * @constructor\n */\n\n var ImageMap = /*#__PURE__*/function () {\n function ImageMap(selector, wait) {\n _classCallCheck(this, ImageMap);\n\n this.selector = selector instanceof Array ? selector : document.querySelectorAll(selector);\n if (document.readyState !== COMPLETE) window.addEventListener(LOAD, this.update.bind(this));else this.update();\n window.addEventListener(RESIZE, this.debounce(this.update, wait).bind(this));\n }\n\n _createClass(ImageMap, [{\n key: \"update\",\n\n /**\n * Update\n */\n value: function update() {\n var imgs = this.selector;\n\n for (var i = 0; i < imgs.length; i++) {\n var img = imgs[i];\n if (img.getAttribute(USEMAP) === undefined) return;\n var newImg = img.cloneNode();\n newImg.addEventListener(LOAD, this.handleImageLoad(img.offsetWidth, img.offsetHeight));\n newImg.src = img.src; // required for IE\n }\n }\n /**\n * Debounce\n *\n * @param {function} func\n * @param {number} [wait=500]\n */\n\n }, {\n key: \"debounce\",\n value: function debounce(func) {\n var _this = this;\n\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var timeout;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function (ctx) {\n return func.apply(ctx, args);\n }, wait, _this);\n };\n }\n /**\n * handleImageLoad\n *\n * @param {number} [offsetWidth=0]\n * @param {number} [offsetHeight=0]\n */\n\n }, {\n key: \"handleImageLoad\",\n value: function handleImageLoad() {\n var offsetWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var offsetHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function (e) {\n var w = e.target.width;\n var h = e.target.height;\n var wPercent = offsetWidth / 100;\n var hPercent = offsetHeight / 100;\n var mapName = e.target.getAttribute(USEMAP).replace(/^#/, \"\");\n var areas = document.querySelectorAll(ImageMap.genAreaSelector(mapName));\n\n var _loop = function _loop(i) {\n var area = areas[i];\n var coordsString = area.dataset[COORDS] = area.dataset[COORDS] || area.getAttribute(COORDS);\n var coordsArrayOld = coordsString.split(\",\");\n var coordsArrayNew = coordsArrayOld.map(function (_, i) {\n return i % 2 === 0 ? Number(coordsArrayOld[i] / w * 100 * wPercent) : Number(coordsArrayOld[i] / h * 100 * hPercent);\n });\n area.setAttribute(COORDS, coordsArrayNew.toString());\n };\n\n for (var i = 0; i < areas.length; i++) {\n _loop(i);\n }\n };\n }\n }], [{\n key: \"genAreaSelector\",\n value: function genAreaSelector(mapName) {\n return \"map[name=\\\"\".concat(mapName, \"\\\"] area\");\n }\n }]);\n\n return ImageMap;\n }();\n\n function _ImageMap(selector, wait) {\n return new ImageMap(selector, wait);\n }\n\n _ImageMap.VERSION = version;\n\n if ($ !== undefined && $.fn) {\n $.fn.imageMap = function (wait) {\n return new _ImageMap(this.toArray(), wait);\n };\n }\n\n}($));\n","module.exports = require('./src/Scripts/jquery.fileDownload');\n","/*\n* jQuery File Download Plugin v1.4.5\n*\n* http://www.johnculviner.com\n*\n* Copyright (c) 2013 - John Culviner\n*\n* Licensed under the MIT license:\n* http://www.opensource.org/licenses/mit-license.php\n*\n* !!!!NOTE!!!!\n* You must also write a cookie in conjunction with using this plugin as mentioned in the orignal post:\n* http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/\n* !!!!NOTE!!!!\n*/\n\n(function($, window){\n\t// i'll just put them here to get evaluated on script load\n\tvar htmlSpecialCharsRegEx = /[<>&\\r\\n\"']/gm;\n\tvar htmlSpecialCharsPlaceHolders = {\n\t\t\t\t'<': 'lt;',\n\t\t\t\t'>': 'gt;',\n\t\t\t\t'&': 'amp;',\n\t\t\t\t'\\r': \"#13;\",\n\t\t\t\t'\\n': \"#10;\",\n\t\t\t\t'\"': 'quot;',\n\t\t\t\t\"'\": '#39;' /*single quotes just to be safe, IE8 doesn't support ', so use ' instead */\n\t};\n\n$.extend({\n //\n //$.fileDownload('/path/to/url/', options)\n // see directly below for possible 'options'\n fileDownload: function (fileUrl, options) {\n\n //provide some reasonable defaults to any unspecified options below\n var settings = $.extend({\n\n //\n //Requires jQuery UI: provide a message to display to the user when the file download is being prepared before the browser's dialog appears\n //\n preparingMessageHtml: null,\n\n //\n //Requires jQuery UI: provide a message to display to the user when a file download fails\n //\n failMessageHtml: null,\n\n //\n //the stock android browser straight up doesn't support file downloads initiated by a non GET: http://code.google.com/p/android/issues/detail?id=1780\n //specify a message here to display if a user tries with an android browser\n //if jQuery UI is installed this will be a dialog, otherwise it will be an alert\n //Set to null to disable the message and attempt to download anyway\n //\n androidPostUnsupportedMessageHtml: \"Unfortunately your Android browser doesn't support this type of file download. Please try again with a different browser.\",\n\n //\n //Requires jQuery UI: options to pass into jQuery UI Dialog\n //\n dialogOptions: { modal: true },\n\n //\n //a function to call while the dowload is being prepared before the browser's dialog appears\n //Args:\n // url - the original url attempted\n //\n prepareCallback: function (url) { },\n\n //\n //a function to call after a file download successfully completed\n //Args:\n // url - the original url attempted\n //\n successCallback: function (url) { },\n\n //\n //a function to call after a file download request was canceled\n //Args:\n // url - the original url attempted\n //\n abortCallback: function (url) { },\n\n //\n //a function to call after a file download failed\n //Args:\n // responseHtml - the html that came back in response to the file download. this won't necessarily come back depending on the browser.\n // in less than IE9 a cross domain error occurs because 500+ errors cause a cross domain issue due to IE subbing out the\n // server's error message with a \"helpful\" IE built in message\n // url - the original url attempted\n // error - original error cautch from exception\n //\n failCallback: function (responseHtml, url, error) { },\n\n //\n // the HTTP method to use. Defaults to \"GET\".\n //\n httpMethod: \"GET\",\n\n //\n // if specified will perform a \"httpMethod\" request to the specified 'fileUrl' using the specified data.\n // data must be an object (which will be $.param serialized) or already a key=value param string\n //\n data: null,\n\n //\n //a period in milliseconds to poll to determine if a successful file download has occured or not\n //\n checkInterval: 100,\n\n //\n //the cookie name to indicate if a file download has occured\n //\n cookieName: \"fileDownload\",\n\n //\n //the cookie value for the above name to indicate that a file download has occured\n //\n cookieValue: \"true\",\n\n //\n //the cookie path for above name value pair\n //\n cookiePath: \"/\",\n\n //\n //if specified it will be used when attempting to clear the above name value pair\n //useful for when downloads are being served on a subdomain (e.g. downloads.example.com)\n //\n cookieDomain: null,\n\n //\n //the title for the popup second window as a download is processing in the case of a mobile browser\n //\n popupWindowTitle: \"Initiating file download...\",\n\n //\n //Functionality to encode HTML entities for a POST, need this if data is an object with properties whose values contains strings with quotation marks.\n //HTML entity encoding is done by replacing all &,<,>,',\",\\r,\\n characters.\n //Note that some browsers will POST the string htmlentity-encoded whilst others will decode it before POSTing.\n //It is recommended that on the server, htmlentity decoding is done irrespective.\n //\n encodeHTMLEntities: true\n\n }, options);\n\n var deferred = new $.Deferred();\n\n //Setup mobile browser detection: Partial credit: http://detectmobilebrowser.com/\n var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();\n\n var isIos; //has full support of features in iOS 4.0+, uses a new window to accomplish this.\n var isAndroid; //has full support of GET features in 4.0+ by using a new window. Non-GET is completely unsupported by the browser. See above for specifying a message.\n var isOtherMobileBrowser; //there is no way to reliably guess here so all other mobile devices will GET and POST to the current window.\n\n if (/ip(ad|hone|od)/.test(userAgent)) {\n\n isIos = true;\n\n } else if (userAgent.indexOf('android') !== -1) {\n\n isAndroid = true;\n\n } else {\n\n isOtherMobileBrowser = /avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|playbook|silk|iemobile|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|e\\-|e\\/|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\-|2|g)|yas\\-|your|zeto|zte\\-/i.test(userAgent.substr(0, 4));\n\n }\n\n var httpMethodUpper = settings.httpMethod.toUpperCase();\n\n if (isAndroid && httpMethodUpper !== \"GET\" && settings.androidPostUnsupportedMessageHtml) {\n //the stock android browser straight up doesn't support file downloads initiated by non GET requests: http://code.google.com/p/android/issues/detail?id=1780\n\n if ($().dialog) {\n $(\"
      \").html(settings.androidPostUnsupportedMessageHtml).dialog(settings.dialogOptions);\n } else {\n alert(settings.androidPostUnsupportedMessageHtml);\n }\n\n return deferred.reject();\n }\n\n var $preparingDialog = null;\n\n var internalCallbacks = {\n\n onPrepare: function (url) {\n\n //wire up a jquery dialog to display the preparing message if specified\n if (settings.preparingMessageHtml) {\n\n $preparingDialog = $(\"
      \").html(settings.preparingMessageHtml).dialog(settings.dialogOptions);\n\n } else if (settings.prepareCallback) {\n\n settings.prepareCallback(url);\n\n }\n\n },\n\n onSuccess: function (url) {\n\n //remove the perparing message if it was specified\n if ($preparingDialog) {\n $preparingDialog.dialog('close');\n }\n\n settings.successCallback(url);\n\n deferred.resolve(url);\n },\n\n onAbort: function (url) {\n\n //remove the perparing message if it was specified\n if ($preparingDialog) {\n $preparingDialog.dialog('close');\n };\n\n settings.abortCallback(url);\n\n deferred.reject(url);\n },\n\n onFail: function (responseHtml, url, error) {\n\n //remove the perparing message if it was specified\n if ($preparingDialog) {\n $preparingDialog.dialog('close');\n }\n\n //wire up a jquery dialog to display the fail message if specified\n if (settings.failMessageHtml) {\n $(\"
      \").html(settings.failMessageHtml).dialog(settings.dialogOptions);\n }\n\n settings.failCallback(responseHtml, url, error);\n\n deferred.reject(responseHtml, url);\n }\n };\n\n internalCallbacks.onPrepare(fileUrl);\n\n //make settings.data a param string if it exists and isn't already\n if (settings.data !== null && typeof settings.data !== \"string\") {\n settings.data = $.param(settings.data);\n }\n\n\n var $iframe,\n downloadWindow,\n formDoc,\n $form;\n\n if (httpMethodUpper === \"GET\") {\n\n if (settings.data !== null) {\n //need to merge any fileUrl params with the data object\n\n var qsStart = fileUrl.indexOf('?');\n\n if (qsStart !== -1) {\n //we have a querystring in the url\n\n if (fileUrl.substring(fileUrl.length - 1) !== \"&\") {\n fileUrl = fileUrl + \"&\";\n }\n } else {\n\n fileUrl = fileUrl + \"?\";\n }\n\n fileUrl = fileUrl + settings.data;\n }\n\n if (isIos || isAndroid) {\n\n downloadWindow = window.open(fileUrl);\n downloadWindow.document.title = settings.popupWindowTitle;\n window.focus();\n\n } else if (isOtherMobileBrowser) {\n\n window.location(fileUrl);\n\n } else {\n\n //create a temporary iframe that is used to request the fileUrl as a GET request\n $iframe = $(\"\").appendTo(\"body\");\n formDoc = getiframeDocument($iframe);\n }\n\n formDoc.write(\"
      \" + formInnerHtml + \"
      \" + settings.popupWindowTitle + \"\");\n $form = $(formDoc).find('form');\n }\n\n $form.submit();\n }\n\n\n //check if the file download has completed every checkInterval ms\n setTimeout(checkFileDownloadComplete, settings.checkInterval);\n\n\n function checkFileDownloadComplete() {\n //has the cookie been written due to a file download occuring?\n\n var cookieValue = settings.cookieValue;\n if(typeof cookieValue == 'string') {\n cookieValue = cookieValue.toLowerCase();\n }\n\n var lowerCaseCookie = settings.cookieName.toLowerCase() + \"=\" + cookieValue;\n\n if (document.cookie.toLowerCase().indexOf(lowerCaseCookie) > -1) {\n\n //execute specified callback\n internalCallbacks.onSuccess(fileUrl);\n\n //remove cookie\n var cookieData = settings.cookieName + \"=; path=\" + settings.cookiePath + \"; expires=\" + new Date(0).toUTCString() + \";\";\n if (settings.cookieDomain) cookieData += \" domain=\" + settings.cookieDomain + \";\";\n document.cookie = cookieData;\n\n //remove iframe\n cleanUp(false);\n\n return;\n }\n\n //has an error occured?\n //if neither containers exist below then the file download is occuring on the current window\n if (downloadWindow || $iframe) {\n\n //has an error occured?\n try {\n\n var formDoc = downloadWindow ? downloadWindow.document : getiframeDocument($iframe);\n\n if (formDoc && formDoc.body !== null && formDoc.body.innerHTML.length) {\n\n var isFailure = true;\n\n if ($form && $form.length) {\n var $contents = $(formDoc.body).contents().first();\n\n try {\n if ($contents.length && $contents[0] === $form[0]) {\n isFailure = false;\n }\n } catch (e) {\n if (e && e.number == -2146828218) {\n // IE 8-10 throw a permission denied after the form reloads on the \"$contents[0] === $form[0]\" comparison\n isFailure = true;\n } else {\n throw e;\n }\n }\n }\n\n if (isFailure) {\n // IE 8-10 don't always have the full content available right away, they need a litle bit to finish\n setTimeout(function () {\n internalCallbacks.onFail(formDoc.body.innerHTML, fileUrl);\n cleanUp(true);\n }, 100);\n\n return;\n }\n }\n }\n catch (err) {\n\n //500 error less than IE9\n internalCallbacks.onFail('', fileUrl, err);\n\n cleanUp(true);\n\n return;\n }\n }\n\n\n //keep checking...\n setTimeout(checkFileDownloadComplete, settings.checkInterval);\n }\n\n //gets an iframes document in a cross browser compatible manner\n function getiframeDocument($iframe) {\n var iframeDoc = $iframe[0].contentWindow || $iframe[0].contentDocument;\n if (iframeDoc.document) {\n iframeDoc = iframeDoc.document;\n }\n return iframeDoc;\n }\n\n function cleanUp(isFailure) {\n\n setTimeout(function() {\n\n if (downloadWindow) {\n\n if (isAndroid) {\n downloadWindow.close();\n }\n\n if (isIos) {\n if (downloadWindow.focus) {\n downloadWindow.focus(); //ios safari bug doesn't allow a window to be closed unless it is focused\n if (isFailure) {\n downloadWindow.close();\n }\n }\n }\n }\n\n //iframe cleanup appears to randomly cause the download to fail\n //not doing it seems better than failure...\n //if ($iframe) {\n // $iframe.remove();\n //}\n\n }, 0);\n }\n\n\n function htmlSpecialCharsEntityEncode(str) {\n return str.replace(htmlSpecialCharsRegEx, function(match) {\n return '&' + htmlSpecialCharsPlaceHolders[match];\n \t});\n }\n var promise = deferred.promise();\n promise.abort = function() {\n cleanUp();\n $iframe.attr('src', '').html('');\n internalCallbacks.onAbort(fileUrl);\n };\n return promise;\n }\n});\n\n})(jQuery, this || window);\n","/*!\n * jQuery JavaScript Library v3.5.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-04-10T15:07Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
      \" ],\n\tcol: [ 2, \"\", \"
      \" ],\n\ttr: [ 2, \"\", \"
      \" ],\n\ttd: [ 3, \"\", \"
      \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"