{"version":3,"sources":["webpack://Unipol/./node_modules/jquery-ajax-unobtrusive/dist/jquery.unobtrusive-ajax.js","webpack://Unipol/./node_modules/jquery-validation/dist/jquery.validate.js"],"names":["$","data_click","data_target","getFunction","code","argNames","fn","window","parts","split","length","shift","push","Function","constructor","apply","isMethodProxySafe","method","asyncOnBeforeSend","xhr","setRequestHeader","asyncOnSuccess","element","data","contentType","mode","indexOf","getAttribute","toUpperCase","each","i","update","prepend","append","replaceWith","html","asyncRequest","options","confirm","loading","duration","parseInt","extend","type","undefined","url","cache","toLowerCase","beforeSend","result","arguments","show","complete","hide","success","status","getResponseHeader","error","name","value","$element","is","attr","formdata","FormData","v","file","this","files","n","processData","ajax","document","on","evt","preventDefault","href","target","form","parents","offset","Math","round","pageX","left","pageY","top","setTimeout","removeData","currentTarget","validationInfo","clickInfo","clickTarget","isCancel","hasClass","validate","action","concat","serializeArray","validator","settings","onsubmit","event","submitButton","cancelSubmit","handle","hidden","submitHandler","formSubmitted","val","appendTo","currentForm","debug","call","remove","pendingRequest","focusInvalid","console","warn","valid","errorList","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","index","normalizeRules","classRules","attributeRules","dataRules","required","remote","called","trim","str","replace","expr","pseudos","blank","a","filled","unchecked","prop","defaults","init","format","source","params","args","makeArray","unshift","Array","slice","RegExp","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","findByName","addClass","removeClass","setDefaults","email","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","max","min","step","autoCreateRanges","prototype","labelContainer","errorContext","containers","add","valueCache","pending","reset","delegate","eventType","key","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeAttr","resetElements","objectLength","obj","count","not","text","addWrapper","size","findLastActive","filter","trigger","e","rulesCache","find","selector","join","resetInternals","toShow","idx","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","charAt","substring","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","wrap","errorPlacement","insertAfter","escapeCssMeta","match","describer","string","getLength","nodeName","depend","dependTypes","startRequest","stopRequest","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","depends","keepRule","parameter","isArray","transformed","addMethod","Date","toString","decimals","errorMessage","re","decimalPlaces","num","toInt","pow","Error","optionDataString","previous","originalMessage","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","abort","ajaxSettings"],"mappings":";oFAmBC,SAAUA,GACP,IAAIC,EAAa,uBACbC,EAAc,6BAGlB,SAASC,EAAYC,EAAMC,GAEvB,IADA,IAAIC,EAAKC,OAAQC,GAASJ,GAAQ,IAAIK,MAAM,KACrCH,GAAME,EAAME,QACfJ,EAAKA,EAAGE,EAAMG,SAElB,MAAoB,mBAAT,EACAL,GAEXD,EAASO,KAAKR,GACPS,SAASC,YAAYC,MAAM,KAAMV,IAG5C,SAASW,EAAkBC,GACvB,MAAkB,QAAXA,GAA+B,SAAXA,EAG/B,SAASC,EAAkBC,EAAKF,GACvBD,EAAkBC,IACnBE,EAAIC,iBAAiB,yBAA0BH,GAIvD,SAASI,EAAeC,EAASC,EAAMC,GACnC,IAAIC,GAEqD,IAArDD,EAAYE,QAAQ,8BAIxBD,GAAQH,EAAQK,aAAa,mBAAqB,IAAIC,cACtD5B,EAAEsB,EAAQK,aAAa,qBAAqBE,MAAK,SAAUC,EAAGC,GAG1D,OAAQN,GACJ,IAAK,SACDzB,EAAE+B,GAAQC,QAAQT,GAClB,MACJ,IAAK,QACDvB,EAAE+B,GAAQE,OAAOV,GACjB,MACJ,IAAK,eACDvB,EAAE+B,GAAQG,YAAYX,GACtB,MACJ,QACIvB,EAAE+B,GAAQI,KAAKZ,QAM/B,SAASa,EAAad,EAASe,GAC3B,IAAIC,EAASC,EAAStB,EAAQuB,EAG9B,KADAF,EAAUhB,EAAQK,aAAa,uBACfpB,OAAO+B,QAAQA,GAA/B,CAIAC,EAAUvC,EAAEsB,EAAQK,aAAa,sBACjCa,EAAWC,SAASnB,EAAQK,aAAa,8BAA+B,KAAO,EAE/E3B,EAAE0C,OAAOL,EAAS,CACdM,KAAMrB,EAAQK,aAAa,0BAAuBiB,EAClDC,IAAKvB,EAAQK,aAAa,uBAAoBiB,EAC9CE,MAAyE,UAAjExB,EAAQK,aAAa,oBAAsB,IAAIoB,cACvDC,WAAY,SAAU7B,GAClB,IAAI8B,EAMJ,OALA/B,EAAkBC,EAAKF,IAER,KADfgC,EAAS9C,EAAYmB,EAAQK,aAAa,mBAAoB,CAAC,QAAQZ,MAAMO,EAAS4B,aAElFX,EAAQY,KAAKX,GAEVS,GAEXG,SAAU,WACNb,EAAQc,KAAKb,GACbrC,EAAYmB,EAAQK,aAAa,sBAAuB,CAAC,MAAO,WAAWZ,MAAMO,EAAS4B,YAE9FI,QAAS,SAAU/B,EAAMgC,EAAQpC,GAC7BE,EAAeC,EAASC,EAAMJ,EAAIqC,kBAAkB,iBAAmB,aACvErD,EAAYmB,EAAQK,aAAa,qBAAsB,CAAC,OAAQ,SAAU,QAAQZ,MAAMO,EAAS4B,YAErGO,MAAO,WACHtD,EAAYmB,EAAQK,aAAa,qBAAsB,CAAC,MAAO,SAAU,UAAUZ,MAAMO,EAAS4B,cAI1Gb,EAAQd,KAAKX,KAAK,CAAE8C,KAAM,mBAAoBC,MAAO,mBAGhD3C,EADLC,EAASoB,EAAQM,KAAKf,iBAElBS,EAAQM,KAAO,OACfN,EAAQd,KAAKX,KAAK,CAAE8C,KAAM,yBAA0BC,MAAO1C,KAO/D,IAAI2C,EAAW5D,EAAEsB,GACjB,GAAIsC,EAASC,GAAG,SAAuC,uBAA5BD,EAASE,KAAK,WAAqC,CAC1E,IAAIC,EAAW,IAAIC,SACnBhE,EAAE6B,KAAKQ,EAAQd,MAAM,SAAUO,EAAGmC,GAC9BF,EAAS9B,OAAOgC,EAAEP,KAAMO,EAAEN,UAE9B3D,EAAE,mBAAoB4D,GAAU/B,MAAK,WACjC,IAAIqC,EAAOC,KACXnE,EAAE6B,KAAKqC,EAAKE,OAAO,SAAUC,EAAGJ,GAC5BF,EAAS9B,OAAOiC,EAAKR,KAAMO,SAGnCjE,EAAE0C,OAAOL,EAAS,CACdiC,aAAa,EACb9C,aAAa,EACbD,KAAMwC,IAKd/D,EAAEuE,KAAKlC,IAQXrC,EAAEwE,UAAUC,GAAG,QAAS,qBAAqB,SAAUC,GACnDA,EAAIC,iBACJvC,EAAa+B,KAAM,CACftB,IAAKsB,KAAKS,KACVjC,KAAM,MACNpB,KAAM,QAIdvB,EAAEwE,UAAUC,GAAG,QAAS,0CAA0C,SAAUC,GACxE,IAAIhB,EAAOgB,EAAIG,OAAOnB,KAClBmB,EAAS7E,EAAE0E,EAAIG,QACfC,EAAO9E,EAAE6E,EAAOE,QAAQ,QAAQ,IAChCC,EAASH,EAAOG,SAEpBF,EAAKvD,KAAKtB,EAAY,CAClB,CAAEyD,KAAMA,EAAO,KAAMC,MAAOsB,KAAKC,MAAMR,EAAIS,MAAQH,EAAOI,OAC1D,CAAE1B,KAAMA,EAAO,KAAMC,MAAOsB,KAAKC,MAAMR,EAAIW,MAAQL,EAAOM,QAG9DC,YAAW,WACPT,EAAKU,WAAWvF,KACjB,MAGPD,EAAEwE,UAAUC,GAAG,QAAS,gCAAgC,SAAUC,GAC9D,IAAIhB,EAAOgB,EAAIe,cAAc/B,KACzBmB,EAAS7E,EAAE0E,EAAIG,QACfC,EAAO9E,EAAE6E,EAAOE,QAAQ,QAAQ,IAEpCD,EAAKvD,KAAKtB,EAAYyD,EAAO,CAAC,CAAEA,KAAMA,EAAMC,MAAOe,EAAIe,cAAc9B,QAAW,IAChFmB,EAAKvD,KAAKrB,EAAa2E,GAEvBU,YAAW,WACPT,EAAKU,WAAWvF,GAChB6E,EAAKU,WAAWtF,KACjB,MAGPF,EAAEwE,UAAUC,GAAG,SAAU,wBAAwB,SAAUC,GACvD,IA5CIgB,EA4CAC,EAAY3F,EAAEmE,MAAM5C,KAAKtB,IAAe,GACxC2F,EAAc5F,EAAEmE,MAAM5C,KAAKrB,GAC3B2F,EAAWD,IAAgBA,EAAYE,SAAS,gBAAoDlD,IAAvCgD,EAAY9B,KAAK,mBAClFY,EAAIC,kBACCkB,KAhDDH,EAAiB1F,EAgDMmE,MAhDE5C,KA7HX,4BA8HSmE,EAAeK,UAAYL,EAAeK,aAkDrE3D,EAAa+B,KAAM,CACftB,IAAKsB,KAAK6B,OACVrD,KAAMwB,KAAKlD,QAAU,MACrBM,KAAMoE,EAAUM,OAAOjG,EAAEmE,MAAM+B,uBAtL3C,C,yBCnBA,UAUE,EAAQ,CAAC,cAAkB,0BAAP,EAMpB,SAAUlG,GAEZA,EAAE0C,OAAQ1C,EAAEM,GAAI,CAGfyF,SAAU,SAAU1D,GAGnB,GAAM8B,KAAKzD,OAAX,CAQA,IAAIyF,EAAYnG,EAAEuB,KAAM4C,KAAM,GAAK,aACnC,OAAKgC,IAKLhC,KAAKL,KAAM,aAAc,cAEzBqC,EAAY,IAAInG,EAAEmG,UAAW9D,EAAS8B,KAAM,IAC5CnE,EAAEuB,KAAM4C,KAAM,GAAK,YAAagC,GAE3BA,EAAUC,SAASC,WAEvBlC,KAAKM,GAAI,iBAAkB,WAAW,SAAU6B,GAI/CH,EAAUI,aAAeD,EAAMb,cAG1BzF,EAAGmE,MAAO2B,SAAU,YACxBK,EAAUK,cAAe,QAIkB5D,IAAvC5C,EAAGmE,MAAOL,KAAM,oBACpBqC,EAAUK,cAAe,MAK3BrC,KAAKM,GAAI,mBAAmB,SAAU6B,GAOrC,SAASG,IACR,IAAIC,EAAQzD,EAcZ,OAPKkD,EAAUI,eAAkBJ,EAAUC,SAASO,eAAiBR,EAAUS,iBAC9EF,EAAS1G,EAAG,0BACV8D,KAAM,OAAQqC,EAAUI,aAAa7C,MACrCmD,IAAK7G,EAAGmG,EAAUI,cAAeM,OACjCC,SAAUX,EAAUY,gBAGlBZ,EAAUC,SAASO,gBAAkBR,EAAUC,SAASY,SAC5D/D,EAASkD,EAAUC,SAASO,cAAcM,KAAMd,EAAWA,EAAUY,YAAaT,GAC7EI,GAGJA,EAAOQ,cAEQtE,IAAXK,GACGA,GAQV,OArCKkD,EAAUC,SAASY,OAGvBV,EAAM3B,iBAkCFwB,EAAUK,cACdL,EAAUK,cAAe,EAClBC,KAEHN,EAAUrB,OACTqB,EAAUgB,gBACdhB,EAAUS,eAAgB,GACnB,GAEDH,KAEPN,EAAUiB,gBACH,OAKHjB,GA7FD9D,GAAWA,EAAQ2E,OAASzG,OAAO8G,SACvCA,QAAQC,KAAM,yDAgGjBC,MAAO,WACN,IAAIA,EAAOpB,EAAWqB,EAgBtB,OAdKxH,EAAGmE,KAAM,IAAMN,GAAI,QACvB0D,EAAQpD,KAAK4B,WAAWjB,QAExB0C,EAAY,GACZD,GAAQ,EACRpB,EAAYnG,EAAGmE,KAAM,GAAIW,MAAOiB,WAChC5B,KAAKtC,MAAM,YACV0F,EAAQpB,EAAU7E,QAAS6C,OAAUoD,KAEpCC,EAAYA,EAAUvB,OAAQE,EAAUqB,eAG1CrB,EAAUqB,UAAYA,GAEhBD,GAIRE,MAAO,SAAUC,EAASC,GACzB,IAECvB,EAAUwB,EAAaC,EAAetG,EAAMuG,EAAOC,EAFhDzG,EAAU6C,KAAM,GACnB6D,OAA8D,IAAnC7D,KAAKL,KAAM,oBAA0E,UAAnCK,KAAKL,KAAM,mBAIzF,GAAgB,MAAXxC,KAICA,EAAQwD,MAAQkD,IACrB1G,EAAQwD,KAAOX,KAAK8D,QAAS,QAAU,GACvC3G,EAAQoC,KAAOS,KAAKL,KAAM,SAGN,MAAhBxC,EAAQwD,MAAb,CAIA,GAAK4C,EAIJ,OAFAE,GADAxB,EAAWpG,EAAEuB,KAAMD,EAAQwD,KAAM,aAAcsB,UACxBqB,MACvBI,EAAgB7H,EAAEmG,UAAUyB,YAAatG,GAChCoG,GACT,IAAK,MACJ1H,EAAE0C,OAAQmF,EAAe7H,EAAEmG,UAAU+B,cAAeP,WAG7CE,EAAcM,SACrBP,EAAatG,EAAQoC,MAASmE,EACzBF,EAASQ,WACb/B,EAAS+B,SAAU7G,EAAQoC,MAAS1D,EAAE0C,OAAQ0D,EAAS+B,SAAU7G,EAAQoC,MAAQiE,EAASQ,WAE3F,MACD,IAAK,SACJ,OAAMR,GAINI,EAAW,GACX/H,EAAE6B,KAAM8F,EAASlH,MAAO,OAAQ,SAAU2H,EAAOnH,GAChD8G,EAAU9G,GAAW4G,EAAe5G,UAC7B4G,EAAe5G,MAEhB8G,WARCH,EAAatG,EAAQoC,MACrBmE,GAkCV,OAvBAtG,EAAOvB,EAAEmG,UAAUkC,eACnBrI,EAAE0C,OACD,GACA1C,EAAEmG,UAAUmC,WAAYhH,GACxBtB,EAAEmG,UAAUoC,eAAgBjH,GAC5BtB,EAAEmG,UAAUqC,UAAWlH,GACvBtB,EAAEmG,UAAUyB,YAAatG,IACvBA,IAGOmH,WACTX,EAAQvG,EAAKkH,gBACNlH,EAAKkH,SACZlH,EAAOvB,EAAE0C,OAAQ,CAAE+F,SAAUX,GAASvG,IAIlCA,EAAKmH,SACTZ,EAAQvG,EAAKmH,cACNnH,EAAKmH,OACZnH,EAAOvB,EAAE0C,OAAQnB,EAAM,CAAEmH,OAAQZ,KAG3BvG,MAKT,IAssCOoH,EAtsCHC,EAAO,SAAUC,GAGpB,OAAOA,EAAIC,QAAS,qCAAsC,KAI3D9I,EAAE0C,OAAQ1C,EAAE+I,KAAKC,SAAWhJ,EAAE+I,KAAM,KAAO,CAG1CE,MAAO,SAAUC,GAChB,OAAQN,EAAM,GAAK5I,EAAGkJ,GAAIrC,QAI3BsC,OAAQ,SAAUD,GACjB,IAAIrC,EAAM7G,EAAGkJ,GAAIrC,MACjB,OAAe,OAARA,KAAkB+B,EAAM,GAAK/B,IAIrCuC,UAAW,SAAUF,GACpB,OAAQlJ,EAAGkJ,GAAIG,KAAM,cAKvBrJ,EAAEmG,UAAY,SAAU9D,EAASyC,GAChCX,KAAKiC,SAAWpG,EAAE0C,QAAQ,EAAM,GAAI1C,EAAEmG,UAAUmD,SAAUjH,GAC1D8B,KAAK4C,YAAcjC,EACnBX,KAAKoF,QAINvJ,EAAEmG,UAAUqD,OAAS,SAAUC,EAAQC,GACtC,OAA0B,IAArBxG,UAAUxC,OACP,WACN,IAAIiJ,EAAO3J,EAAE4J,UAAW1G,WAExB,OADAyG,EAAKE,QAASJ,GACPzJ,EAAEmG,UAAUqD,OAAOzI,MAAOoD,KAAMwF,UAGzB/G,IAAX8G,IAGAxG,UAAUxC,OAAS,GAAKgJ,EAAO5I,cAAgBgJ,QACnDJ,EAAS1J,EAAE4J,UAAW1G,WAAY6G,MAAO,IAErCL,EAAO5I,cAAgBgJ,QAC3BJ,EAAS,CAAEA,IAEZ1J,EAAE6B,KAAM6H,GAAQ,SAAU5H,EAAGuC,GAC5BoF,EAASA,EAAOX,QAAS,IAAIkB,OAAQ,MAAQlI,EAAI,MAAO,MAAO,WAC9D,OAAOuC,SAVDoF,IAgBTzJ,EAAE0C,OAAQ1C,EAAEmG,UAAW,CAEtBmD,SAAU,CACTnB,SAAU,GACV8B,OAAQ,GACRxC,MAAO,GACPyC,WAAY,QACZC,aAAc,UACdC,WAAY,QACZC,aAAc,QACdC,cAAc,EACdlD,cAAc,EACdmD,eAAgBvK,EAAG,IACnBwK,oBAAqBxK,EAAG,IACxBqG,UAAU,EACVoE,OAAQ,UACRC,aAAa,EACbC,UAAW,SAAUrJ,GACpB6C,KAAKyG,WAAatJ,EAGb6C,KAAKiC,SAASkE,eACbnG,KAAKiC,SAASyE,aAClB1G,KAAKiC,SAASyE,YAAY5D,KAAM9C,KAAM7C,EAAS6C,KAAKiC,SAAS8D,WAAY/F,KAAKiC,SAASgE,YAExFjG,KAAK2G,UAAW3G,KAAK4G,UAAWzJ,MAGlC0J,WAAY,SAAU1J,GACf6C,KAAK8G,UAAW3J,MAAeA,EAAQoC,QAAQS,KAAK+G,YAAc/G,KAAKgH,SAAU7J,IACtF6C,KAAK7C,QAASA,IAGhB8J,QAAS,SAAU9J,EAASgF,GAqBN,IAAhBA,EAAM+E,OAAgD,KAAjClH,KAAKmH,aAAchK,KAAkE,IAA9CtB,EAAEuL,QAASjF,EAAMkF,QAL/D,CAClB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxB,GAAI,GAAI,GAAI,GAAI,IAAK,QAKVlK,EAAQoC,QAAQS,KAAK+G,WAAa5J,EAAQoC,QAAQS,KAAKsH,UAClEtH,KAAK7C,QAASA,IAGhBoK,QAAS,SAAUpK,GAGbA,EAAQoC,QAAQS,KAAK+G,UACzB/G,KAAK7C,QAASA,GAGHA,EAAQqK,WAAWjI,QAAQS,KAAK+G,WAC3C/G,KAAK7C,QAASA,EAAQqK,aAGxBC,UAAW,SAAUtK,EAAS4I,EAAYE,GACnB,UAAjB9I,EAAQqB,KACZwB,KAAK0H,WAAYvK,EAAQoC,MAAOoI,SAAU5B,GAAa6B,YAAa3B,GAEpEpK,EAAGsB,GAAUwK,SAAU5B,GAAa6B,YAAa3B,IAGnDS,YAAa,SAAUvJ,EAAS4I,EAAYE,GACrB,UAAjB9I,EAAQqB,KACZwB,KAAK0H,WAAYvK,EAAQoC,MAAOqI,YAAa7B,GAAa4B,SAAU1B,GAEpEpK,EAAGsB,GAAUyK,YAAa7B,GAAa4B,SAAU1B,KAMpD4B,YAAa,SAAU5F,GACtBpG,EAAE0C,OAAQ1C,EAAEmG,UAAUmD,SAAUlD,IAGjC+B,SAAU,CACTM,SAAU,0BACVC,OAAQ,yBACRuD,MAAO,sCACPpJ,IAAK,4BACLqJ,KAAM,6BACNC,QAAS,mCACTC,OAAQ,+BACRC,OAAQ,4BACRC,QAAS,qCACTC,UAAWvM,EAAEmG,UAAUqD,OAAQ,6CAC/BgD,UAAWxM,EAAEmG,UAAUqD,OAAQ,yCAC/BiD,YAAazM,EAAEmG,UAAUqD,OAAQ,6DACjCkD,MAAO1M,EAAEmG,UAAUqD,OAAQ,6CAC3BmD,IAAK3M,EAAEmG,UAAUqD,OAAQ,mDACzBoD,IAAK5M,EAAEmG,UAAUqD,OAAQ,sDACzBqD,KAAM7M,EAAEmG,UAAUqD,OAAQ,oCAG3BsD,kBAAkB,EAElBC,UAAW,CAEVxD,KAAM,WACLpF,KAAK6I,eAAiBhN,EAAGmE,KAAKiC,SAASoE,qBACvCrG,KAAK8I,aAAe9I,KAAK6I,eAAetM,QAAUyD,KAAK6I,gBAAkBhN,EAAGmE,KAAK4C,aACjF5C,KAAK+I,WAAalN,EAAGmE,KAAKiC,SAASmE,gBAAiB4C,IAAKhJ,KAAKiC,SAASoE,qBACvErG,KAAK+G,UAAY,GACjB/G,KAAKiJ,WAAa,GAClBjJ,KAAKgD,eAAiB,EACtBhD,KAAKkJ,QAAU,GACflJ,KAAKsH,QAAU,GACftH,KAAKmJ,QAEL,IAEC7F,EAFGV,EAAc5C,KAAK4C,YACtBkD,EAAW9F,KAAK8F,OAAS,GAe1B,SAASsD,EAAUjH,GAClB,IAAI0B,OAAmE,IAAxChI,EAAGmE,MAAOL,KAAM,oBAA+E,UAAxC9D,EAAGmE,MAAOL,KAAM,mBAUtG,IAPMK,KAAKW,MAAQkD,IAClB7D,KAAKW,KAAO9E,EAAGmE,MAAO8D,QAAS,QAAU,GACzC9D,KAAKT,KAAO1D,EAAGmE,MAAOL,KAAM,SAKxBiD,IAAgB5C,KAAKW,KAA1B,CAIA,IAAIqB,EAAYnG,EAAEuB,KAAM4C,KAAKW,KAAM,aAClC0I,EAAY,KAAOlH,EAAM3D,KAAKmG,QAAS,YAAa,IACpD1C,EAAWD,EAAUC,SACjBA,EAAUoH,KAAgBxN,EAAGmE,MAAON,GAAIuC,EAASqE,SACrDrE,EAAUoH,GAAYvG,KAAMd,EAAWhC,KAAMmC,IAhC/CtG,EAAE6B,KAAMsC,KAAKiC,SAAS6D,QAAQ,SAAUwD,EAAK9J,GACtB,iBAAVA,IACXA,EAAQA,EAAMlD,MAAO,OAEtBT,EAAE6B,KAAM8B,GAAO,SAAUyE,EAAO1E,GAC/BuG,EAAQvG,GAAS+J,QAGnBhG,EAAQtD,KAAKiC,SAASqB,MACtBzH,EAAE6B,KAAM4F,GAAO,SAAUgG,EAAK9J,GAC7B8D,EAAOgG,GAAQzN,EAAEmG,UAAU+B,cAAevE,MA0B3C3D,EAAGmE,KAAK4C,aACNtC,GAAI,oDACJ,0VAGyE8I,GAIzE9I,GAAI,iBAAkB,oDAAqD8I,GAExEpJ,KAAKiC,SAASsH,gBAClB1N,EAAGmE,KAAK4C,aAActC,GAAI,wBAAyBN,KAAKiC,SAASsH,iBAKnE5I,KAAM,WAQL,OAPAX,KAAKwJ,YACL3N,EAAE0C,OAAQyB,KAAK+G,UAAW/G,KAAKyJ,UAC/BzJ,KAAKsH,QAAUzL,EAAE0C,OAAQ,GAAIyB,KAAKyJ,UAC5BzJ,KAAKoD,SACVvH,EAAGmE,KAAK4C,aAAc8G,eAAgB,eAAgB,CAAE1J,OAEzDA,KAAK2J,aACE3J,KAAKoD,SAGboG,UAAW,WACVxJ,KAAK4J,cACL,IAAM,IAAIjM,EAAI,EAAGkM,EAAa7J,KAAK8J,gBAAkB9J,KAAK6J,WAAcA,EAAUlM,GAAKA,IACtFqC,KAAK+J,MAAOF,EAAUlM,IAEvB,OAAOqC,KAAKoD,SAIbjG,QAAS,SAAUA,GAClB,IAIC6M,EAAIC,EAJDC,EAAelK,KAAKmK,MAAOhN,GAC9BiN,EAAepK,KAAKqK,oBAAqBH,GACzCpK,EAAIE,KACJlB,GAAS,EA2CV,YAxCsBL,IAAjB2L,SACGpK,KAAKsH,QAAS4C,EAAa3K,OAElCS,KAAKsK,eAAgBF,GACrBpK,KAAK8J,gBAAkBjO,EAAGuO,IAI1BH,EAAQjK,KAAK8F,OAAQsE,EAAa7K,QAEjC1D,EAAE6B,KAAMsC,KAAK8F,QAAQ,SAAUvG,EAAMgL,GAC/BA,IAAcN,GAAS1K,IAAS6K,EAAa7K,OACjD2K,EAAepK,EAAEuK,oBAAqBvK,EAAEqK,MAAOrK,EAAE4H,WAAYnI,OACxC2K,EAAa3K,QAAQO,EAAEwH,UAC3CxH,EAAEgK,gBAAgBrN,KAAMyN,GACxBpL,EAASgB,EAAEiK,MAAOG,IAAkBpL,MAMxCkL,GAAoC,IAA/BhK,KAAK+J,MAAOK,GACjBtL,EAASA,GAAUkL,EAElBhK,KAAKsH,QAAS8C,EAAa7K,OADvByK,EAMChK,KAAKwK,qBAGVxK,KAAKyK,OAASzK,KAAKyK,OAAOzB,IAAKhJ,KAAK+I,aAErC/I,KAAK2J,aAGL9N,EAAGsB,GAAUwC,KAAM,gBAAiBqK,IAG9BlL,GAIR6K,WAAY,SAAUe,GACrB,GAAKA,EAAS,CACb,IAAI1I,EAAYhC,KAGhBnE,EAAE0C,OAAQyB,KAAKyJ,SAAUiB,GACzB1K,KAAKqD,UAAYxH,EAAE8O,IAAK3K,KAAKyJ,UAAU,SAAUmB,EAASrL,GACzD,MAAO,CACNqL,QAASA,EACTzN,QAAS6E,EAAU0F,WAAYnI,GAAQ,OAKzCS,KAAK6K,YAAchP,EAAEiP,KAAM9K,KAAK6K,aAAa,SAAU1N,GACtD,QAAUA,EAAQoC,QAAQmL,MAGvB1K,KAAKiC,SAAS0H,WAClB3J,KAAKiC,SAAS0H,WAAW7G,KAAM9C,KAAMA,KAAKyJ,SAAUzJ,KAAKqD,WAEzDrD,KAAK+K,qBAKPC,UAAW,WACLnP,EAAEM,GAAG6O,WACTnP,EAAGmE,KAAK4C,aAAcoI,YAEvBhL,KAAKsH,QAAU,GACftH,KAAK+G,UAAY,GACjB/G,KAAK4J,cACL5J,KAAKiL,aACL,IAAIpB,EAAW7J,KAAK6J,WAClBxI,WAAY,iBACZ6J,WAAY,gBAEdlL,KAAKmL,cAAetB,IAGrBsB,cAAe,SAAUtB,GACxB,IAAIlM,EAEJ,GAAKqC,KAAKiC,SAASyE,YAClB,IAAM/I,EAAI,EAAGkM,EAAUlM,GAAKA,IAC3BqC,KAAKiC,SAASyE,YAAY5D,KAAM9C,KAAM6J,EAAUlM,GAC/CqC,KAAKiC,SAAS8D,WAAY,IAC3B/F,KAAK0H,WAAYmC,EAAUlM,GAAI4B,MAAOqI,YAAa5H,KAAKiC,SAASgE,iBAGlE4D,EACEjC,YAAa5H,KAAKiC,SAAS8D,YAC3B6B,YAAa5H,KAAKiC,SAASgE,aAI/BuE,iBAAkB,WACjB,OAAOxK,KAAKoL,aAAcpL,KAAKsH,UAGhC8D,aAAc,SAAUC,GAEvB,IACC1N,EADG2N,EAAQ,EAEZ,IAAM3N,KAAK0N,OAIQ5M,IAAb4M,EAAK1N,IAAkC,OAAb0N,EAAK1N,KAA6B,IAAb0N,EAAK1N,IACxD2N,IAGF,OAAOA,GAGRL,WAAY,WACXjL,KAAK2G,UAAW3G,KAAKyK,SAGtB9D,UAAW,SAAU+D,GACpBA,EAAOa,IAAKvL,KAAK+I,YAAayC,KAAM,IACpCxL,KAAKyL,WAAYf,GAASxL,QAG3BkE,MAAO,WACN,OAAuB,IAAhBpD,KAAK0L,QAGbA,KAAM,WACL,OAAO1L,KAAKqD,UAAU9G,QAGvB0G,aAAc,WACb,GAAKjD,KAAKiC,SAASgB,aAClB,IACCpH,EAAGmE,KAAK2L,kBAAoB3L,KAAKqD,UAAU9G,QAAUyD,KAAKqD,UAAW,GAAIlG,SAAW,IACnFyO,OAAQ,YACRC,QAAS,SAGTA,QAAS,WACT,MAAQC,MAOZH,eAAgB,WACf,IAAIlF,EAAazG,KAAKyG,WACtB,OAAOA,GAEQ,IAFM5K,EAAEiP,KAAM9K,KAAKqD,WAAW,SAAUnD,GACtD,OAAOA,EAAE/C,QAAQoC,OAASkH,EAAWlH,QAClChD,QAAgBkK,GAGrBoD,SAAU,WACT,IAAI7H,EAAYhC,KACf+L,EAAa,GAGd,OAAOlQ,EAAGmE,KAAK4C,aACdoJ,KAAM,8CACNT,IAAK,sCACLA,IAAKvL,KAAKiC,SAASqE,QACnBsF,QAAQ,WACR,IAAIrM,EAAOS,KAAKT,MAAQ1D,EAAGmE,MAAOL,KAAM,QACpCkE,OAAmE,IAAxChI,EAAGmE,MAAOL,KAAM,oBAA+E,UAAxC9D,EAAGmE,MAAOL,KAAM,mBAatG,OAXMJ,GAAQyC,EAAUC,SAASY,OAASzG,OAAO8G,SAChDA,QAAQ5D,MAAO,0BAA2BU,MAItC6D,IACJ7D,KAAKW,KAAO9E,EAAGmE,MAAO8D,QAAS,QAAU,GACzC9D,KAAKT,KAAOA,KAIRS,KAAKW,OAASqB,EAAUY,aAKxBrD,KAAQwM,IAAe/J,EAAUoJ,aAAcvP,EAAGmE,MAAOsD,WAI9DyI,EAAYxM,IAAS,EACd,QAIT4K,MAAO,SAAU8B,GAChB,OAAOpQ,EAAGoQ,GAAY,IAGvBvB,OAAQ,WACP,IAAI3E,EAAa/F,KAAKiC,SAAS8D,WAAWzJ,MAAO,KAAM4P,KAAM,KAC7D,OAAOrQ,EAAGmE,KAAKiC,SAASiE,aAAe,IAAMH,EAAY/F,KAAK8I,eAG/DqD,eAAgB,WACfnM,KAAK6K,YAAc,GACnB7K,KAAKqD,UAAY,GACjBrD,KAAKyJ,SAAW,GAChBzJ,KAAKoM,OAASvQ,EAAG,IACjBmE,KAAKyK,OAAS5O,EAAG,KAGlBsN,MAAO,WACNnJ,KAAKmM,iBACLnM,KAAK8J,gBAAkBjO,EAAG,KAG3B+N,YAAa,WACZ5J,KAAKmJ,QACLnJ,KAAKyK,OAASzK,KAAK0K,SAAS1B,IAAKhJ,KAAK+I,aAGvCuB,eAAgB,SAAUnN,GACzB6C,KAAKmJ,QACLnJ,KAAKyK,OAASzK,KAAK4G,UAAWzJ,IAG/BgK,aAAc,SAAUhK,GACvB,IAGCuF,EAAK2J,EAHF5M,EAAW5D,EAAGsB,GACjBqB,EAAOrB,EAAQqB,KACfqF,OAAkE,IAAvCpE,EAASE,KAAM,oBAA8E,UAAvCF,EAASE,KAAM,mBAGjG,MAAc,UAATnB,GAA6B,aAATA,EACjBwB,KAAK0H,WAAYvK,EAAQoC,MAAOqM,OAAQ,YAAalJ,MACxC,WAATlE,QAAiD,IAArBrB,EAAQmP,SACxCnP,EAAQmP,SAASC,SAAW,MAAQ9M,EAASiD,OAIpDA,EADImB,EACEpE,EAAS+L,OAET/L,EAASiD,MAGF,SAATlE,EAGyB,mBAAxBkE,EAAI8J,OAAQ,EAAG,IACZ9J,EAAI8J,OAAQ,KAKpBH,EAAM3J,EAAI+J,YAAa,OACX,IAKZJ,EAAM3J,EAAI+J,YAAa,QACX,EALJ/J,EAAI8J,OAAQH,EAAM,GAUnB3J,EAGY,iBAARA,EACJA,EAAIiC,QAAS,MAAO,IAErBjC,IAGRqH,MAAO,SAAU5M,GAChBA,EAAU6C,KAAKqK,oBAAqBrK,KAAKmK,MAAOhN,IAEhD,IAMC2B,EAAQhC,EAAQ4P,EAAMC,EANnBrJ,EAAQzH,EAAGsB,GAAUmG,QACxBsJ,EAAa/Q,EAAE8O,IAAKrH,GAAO,SAAUpD,EAAGvC,GACvC,OAAOA,KACJpB,OACJsQ,GAAqB,EACrBnK,EAAM1C,KAAKmH,aAAchK,GAqB1B,IAAML,IAhB2B,mBAArBwG,EAAMqJ,WACjBA,EAAarJ,EAAMqJ,WAC4B,mBAA7B3M,KAAKiC,SAAS0K,aAChCA,EAAa3M,KAAKiC,SAAS0K,YAMvBA,IACJjK,EAAMiK,EAAW7J,KAAM3F,EAASuF,UAGzBY,EAAMqJ,YAGErJ,EAAQ,CACvBoJ,EAAO,CAAE5P,OAAQA,EAAQgQ,WAAYxJ,EAAOxG,IAC5C,IAKC,GAAgB,yBAJhBgC,EAASjD,EAAEmG,UAAU+K,QAASjQ,GAASgG,KAAM9C,KAAM0C,EAAKvF,EAASuP,EAAKI,cAId,IAAfF,EAAmB,CAC3DC,GAAqB,EACrB,SAID,GAFAA,GAAqB,EAEL,YAAX/N,EAEJ,YADAkB,KAAKyK,OAASzK,KAAKyK,OAAOc,IAAKvL,KAAK4G,UAAWzJ,KAIhD,IAAM2B,EAEL,OADAkB,KAAKgN,aAAc7P,EAASuP,IACrB,EAEP,MAAQZ,GAQT,MAPK9L,KAAKiC,SAASY,OAASzG,OAAO8G,SAClCA,QAAQ+J,IAAK,4CAA8C9P,EAAQ+P,GAAK,gBAAkBR,EAAK5P,OAAS,YAAagP,GAEjHA,aAAaqB,YACjBrB,EAAElB,SAAW,+CAAiDzN,EAAQ+P,GAAK,gBAAkBR,EAAK5P,OAAS,aAGtGgP,GAGR,IAAKe,EAML,OAHK7M,KAAKoL,aAAc9H,IACvBtD,KAAK6K,YAAYpO,KAAMU,IAEjB,GAMRiQ,kBAAmB,SAAUjQ,EAASL,GACrC,OAAOjB,EAAGsB,GAAUC,KAAM,MAAQN,EAAOuQ,OAAQ,GAAI5P,cACpDX,EAAOwQ,UAAW,GAAI1O,gBAAmB/C,EAAGsB,GAAUC,KAAM,QAI9DmQ,cAAe,SAAUhO,EAAMzC,GAC9B,IAAI0Q,EAAIxN,KAAKiC,SAAS+B,SAAUzE,GAChC,OAAOiO,IAAOA,EAAE7Q,cAAgB8Q,OAASD,EAAIA,EAAG1Q,KAIjD4Q,YAAa,WACZ,IAAM,IAAI/P,EAAI,EAAGA,EAAIoB,UAAUxC,OAAQoB,IACtC,QAAwBc,IAAnBM,UAAWpB,GACf,OAAOoB,UAAWpB,IAerBgQ,eAAgB,SAAUxQ,EAASuP,GACb,iBAATA,IACXA,EAAO,CAAE5P,OAAQ4P,IAGlB,IAAI9B,EAAU5K,KAAK0N,YACjB1N,KAAKuN,cAAepQ,EAAQoC,KAAMmN,EAAK5P,QACvCkD,KAAKoN,kBAAmBjQ,EAASuP,EAAK5P,SAGrCkD,KAAKiC,SAASsE,aAAepJ,EAAQyQ,YAASnP,EAC/C5C,EAAEmG,UAAUgC,SAAU0I,EAAK5P,QAC3B,2CAA6CK,EAAQoC,KAAO,aAE7DsO,EAAW,gBAOZ,MANwB,mBAAZjD,EACXA,EAAUA,EAAQ9H,KAAM9C,KAAM0M,EAAKI,WAAY3P,GACpC0Q,EAASC,KAAMlD,KAC1BA,EAAU/O,EAAEmG,UAAUqD,OAAQuF,EAAQjG,QAASkJ,EAAU,QAAUnB,EAAKI,aAGlElC,GAGRoC,aAAc,SAAU7P,EAASuP,GAChC,IAAI9B,EAAU5K,KAAK2N,eAAgBxQ,EAASuP,GAE5C1M,KAAKqD,UAAU5G,KAAM,CACpBmO,QAASA,EACTzN,QAASA,EACTL,OAAQ4P,EAAK5P,SAGdkD,KAAKyJ,SAAUtM,EAAQoC,MAASqL,EAChC5K,KAAK+G,UAAW5J,EAAQoC,MAASqL,GAGlCa,WAAY,SAAUsC,GAIrB,OAHK/N,KAAKiC,SAAS+L,UAClBD,EAAWA,EAAS/E,IAAK+E,EAASE,OAAQjO,KAAKiC,SAAS+L,WAElDD,GAGRhD,kBAAmB,WAClB,IAAIpN,EAAGkM,EAAUvK,EACjB,IAAM3B,EAAI,EAAGqC,KAAKqD,UAAW1F,GAAKA,IACjC2B,EAAQU,KAAKqD,UAAW1F,GACnBqC,KAAKiC,SAASwF,WAClBzH,KAAKiC,SAASwF,UAAU3E,KAAM9C,KAAMV,EAAMnC,QAAS6C,KAAKiC,SAAS8D,WAAY/F,KAAKiC,SAASgE,YAE5FjG,KAAKkO,UAAW5O,EAAMnC,QAASmC,EAAMsL,SAKtC,GAHK5K,KAAKqD,UAAU9G,SACnByD,KAAKoM,OAASpM,KAAKoM,OAAOpD,IAAKhJ,KAAK+I,aAEhC/I,KAAKiC,SAAS9C,QAClB,IAAMxB,EAAI,EAAGqC,KAAK6K,YAAalN,GAAKA,IACnCqC,KAAKkO,UAAWlO,KAAK6K,YAAalN,IAGpC,GAAKqC,KAAKiC,SAASyE,YAClB,IAAM/I,EAAI,EAAGkM,EAAW7J,KAAKmO,gBAAiBtE,EAAUlM,GAAKA,IAC5DqC,KAAKiC,SAASyE,YAAY5D,KAAM9C,KAAM6J,EAAUlM,GAAKqC,KAAKiC,SAAS8D,WAAY/F,KAAKiC,SAASgE,YAG/FjG,KAAKyK,OAASzK,KAAKyK,OAAOc,IAAKvL,KAAKoM,QACpCpM,KAAKiL,aACLjL,KAAKyL,WAAYzL,KAAKoM,QAASpN,QAGhCmP,cAAe,WACd,OAAOnO,KAAK8J,gBAAgByB,IAAKvL,KAAKoO,oBAGvCA,gBAAiB,WAChB,OAAOvS,EAAGmE,KAAKqD,WAAYsH,KAAK,WAC/B,OAAO3K,KAAK7C,YAId+Q,UAAW,SAAU/Q,EAASyN,GAC7B,IAAIyD,EAAOpE,EAAOqE,EAASxO,EAC1BR,EAAQU,KAAK4G,UAAWzJ,GACxBoR,EAAYvO,KAAKwO,SAAUrR,GAC3BsR,EAAc5S,EAAGsB,GAAUwC,KAAM,oBAE7BL,EAAM/C,QAGV+C,EAAMsI,YAAa5H,KAAKiC,SAASgE,YAAa0B,SAAU3H,KAAKiC,SAAS8D,YAGtEzG,EAAMtB,KAAM4M,KAUZyD,EANA/O,EAAQzD,EAAG,IAAMmE,KAAKiC,SAASiE,aAAe,KAC5CvG,KAAM,KAAM4O,EAAY,UACxB5G,SAAU3H,KAAKiC,SAAS8D,YACxB/H,KAAM4M,GAAW,IAId5K,KAAKiC,SAAS+L,UAIlBK,EAAQ/O,EAAMJ,OAAOF,OAAO0P,KAAM,IAAM1O,KAAKiC,SAAS+L,QAAU,MAAOC,UAEnEjO,KAAK6I,eAAetM,OACxByD,KAAK6I,eAAe/K,OAAQuQ,GACjBrO,KAAKiC,SAAS0M,eACzB3O,KAAKiC,SAAS0M,eAAe7L,KAAM9C,KAAMqO,EAAOxS,EAAGsB,IAEnDkR,EAAMO,YAAazR,GAIfmC,EAAMI,GAAI,SAGdJ,EAAMK,KAAM,MAAO4O,GAI2E,IAAnFjP,EAAMsB,QAAS,cAAgBZ,KAAK6O,cAAeN,GAAc,MAAOhS,SACnF+R,EAAUhP,EAAMK,KAAM,MAGhB8O,EAEOA,EAAYK,MAAO,IAAIjJ,OAAQ,MAAQ7F,KAAK6O,cAAeP,GAAY,UAGnFG,GAAe,IAAMH,GAJrBG,EAAcH,EAMfzS,EAAGsB,GAAUwC,KAAM,mBAAoB8O,IAGvCxE,EAAQjK,KAAK8F,OAAQ3I,EAAQoC,SAE5BO,EAAIE,KACJnE,EAAE6B,KAAMoC,EAAEgG,QAAQ,SAAUvG,EAAMgL,GAC5BA,IAAcN,GAClBpO,EAAG,UAAYiE,EAAE+O,cAAetP,GAAS,KAAMO,EAAE8C,aAC/CjD,KAAM,mBAAoBL,EAAMK,KAAM,cAMvCiL,GAAW5K,KAAKiC,SAAS9C,UAC9BG,EAAMkM,KAAM,IAC0B,iBAA1BxL,KAAKiC,SAAS9C,QACzBG,EAAMqI,SAAU3H,KAAKiC,SAAS9C,SAE9Ba,KAAKiC,SAAS9C,QAASG,EAAOnC,IAGhC6C,KAAKoM,OAASpM,KAAKoM,OAAOpD,IAAK1J,IAGhCsH,UAAW,SAAUzJ,GACpB,IAAIoC,EAAOS,KAAK6O,cAAe7O,KAAKwO,SAAUrR,IAC7C4R,EAAYlT,EAAGsB,GAAUwC,KAAM,oBAC/BsM,EAAW,cAAgB1M,EAAO,kBAAoBA,EAAO,OAQ9D,OALKwP,IACJ9C,EAAWA,EAAW,MAAQjM,KAAK6O,cAAeE,GAChDpK,QAAS,OAAQ,QAGb3E,KACL0K,SACAkB,OAAQK,IAMX4C,cAAe,SAAUG,GACxB,YAAgBvQ,IAAXuQ,EACG,GAGDA,EAAOrK,QAAS,yCAA0C,SAGlE6J,SAAU,SAAUrR,GACnB,OAAO6C,KAAK8F,OAAQ3I,EAAQoC,QAAYS,KAAK8G,UAAW3J,GAAYA,EAAQoC,KAAOpC,EAAQ+P,IAAM/P,EAAQoC,OAG1G8K,oBAAqB,SAAUlN,GAQ9B,OALK6C,KAAK8G,UAAW3J,KACpBA,EAAU6C,KAAK0H,WAAYvK,EAAQoC,OAI7B1D,EAAGsB,GAAUoO,IAAKvL,KAAKiC,SAASqE,QAAU,IAGlDQ,UAAW,SAAU3J,GACpB,MAAO,kBAAsB2Q,KAAM3Q,EAAQqB,OAG5CkJ,WAAY,SAAUnI,GACrB,OAAO1D,EAAGmE,KAAK4C,aAAcoJ,KAAM,UAAYhM,KAAK6O,cAAetP,GAAS,OAG7E0P,UAAW,SAAUzP,EAAOrC,GAC3B,OAASA,EAAQ+R,SAAStQ,eAC1B,IAAK,SACJ,OAAO/C,EAAG,kBAAmBsB,GAAUZ,OACxC,IAAK,QACJ,GAAKyD,KAAK8G,UAAW3J,GACpB,OAAO6C,KAAK0H,WAAYvK,EAAQoC,MAAOqM,OAAQ,YAAarP,OAG9D,OAAOiD,EAAMjD,QAGd4S,OAAQ,SAAUxL,EAAOxG,GACxB,OAAO6C,KAAKoP,mBAAoBzL,IAAU3D,KAAKoP,mBAAoBzL,GAASA,EAAOxG,IAGpFiS,YAAa,CACZ,QAAW,SAAUzL,GACpB,OAAOA,GAER,OAAU,SAAUA,EAAOxG,GAC1B,QAAStB,EAAG8H,EAAOxG,EAAQwD,MAAOpE,QAEnC,SAAY,SAAUoH,EAAOxG,GAC5B,OAAOwG,EAAOxG,KAIhB6J,SAAU,SAAU7J,GACnB,IAAIuF,EAAM1C,KAAKmH,aAAchK,GAC7B,OAAQtB,EAAEmG,UAAU+K,QAAQzI,SAASxB,KAAM9C,KAAM0C,EAAKvF,IAAa,uBAGpEkS,aAAc,SAAUlS,GACjB6C,KAAKkJ,QAAS/L,EAAQoC,QAC3BS,KAAKgD,iBACLnH,EAAGsB,GAAUwK,SAAU3H,KAAKiC,SAAS+D,cACrChG,KAAKkJ,QAAS/L,EAAQoC,OAAS,IAIjC+P,YAAa,SAAUnS,EAASiG,GAC/BpD,KAAKgD,iBAGAhD,KAAKgD,eAAiB,IAC1BhD,KAAKgD,eAAiB,UAEhBhD,KAAKkJ,QAAS/L,EAAQoC,MAC7B1D,EAAGsB,GAAUyK,YAAa5H,KAAKiC,SAAS+D,cACnC5C,GAAiC,IAAxBpD,KAAKgD,gBAAwBhD,KAAKyC,eAAiBzC,KAAKW,QAAkC,IAAxBX,KAAKgD,gBACpFnH,EAAGmE,KAAK4C,aAAciJ,QAAS,UAM1B7L,KAAKoC,cACTvG,EAAG,sBAAwBmE,KAAKoC,aAAa7C,KAAO,KAAMS,KAAK4C,aAAcG,SAG9E/C,KAAKyC,eAAgB,IACTW,GAAiC,IAAxBpD,KAAKgD,gBAAwBhD,KAAKyC,gBACvD5G,EAAGmE,KAAK4C,aAAc8G,eAAgB,eAAgB,CAAE1J,OACxDA,KAAKyC,eAAgB,IAIvB8M,cAAe,SAAUpS,EAASL,GAGjC,OAFAA,EAA2B,iBAAXA,GAAuBA,GAAU,SAE1CjB,EAAEuB,KAAMD,EAAS,kBAAqBtB,EAAEuB,KAAMD,EAAS,gBAAiB,CAC9EqS,IAAK,KACLpM,OAAO,EACPwH,QAAS5K,KAAK2N,eAAgBxQ,EAAS,CAAEL,OAAQA,OAKnD2S,QAAS,WACRzP,KAAKgL,YAELnP,EAAGmE,KAAK4C,aACN8M,IAAK,aACLrO,WAAY,aACZ2K,KAAM,0BACL0D,IAAK,qBACL9H,YAAa,yBACdoE,KAAM,2BACL0D,IAAK,sBACL9H,YAAa,0BACdoE,KAAM,gCACL0D,IAAK,2BACL9H,YAAa,+BACdoE,KAAM,mCACL0D,IAAK,8BACL9H,YAAa,kCACdoE,KAAM,8BACL0D,IAAK,yBACL9H,YAAa,+BAKlB+H,kBAAmB,CAClBrL,SAAU,CAAEA,UAAU,GACtBwD,MAAO,CAAEA,OAAO,GAChBpJ,IAAK,CAAEA,KAAK,GACZqJ,KAAM,CAAEA,MAAM,GACdC,QAAS,CAAEA,SAAS,GACpBC,OAAQ,CAAEA,QAAQ,GAClBC,OAAQ,CAAEA,QAAQ,GAClB0H,WAAY,CAAEA,YAAY,IAG3BC,cAAe,SAAUC,EAAWxM,GAC9BwM,EAAUnT,cAAgB8Q,OAC9BzN,KAAK2P,kBAAmBG,GAAcxM,EAEtCzH,EAAE0C,OAAQyB,KAAK2P,kBAAmBG,IAIpC3L,WAAY,SAAUhH,GACrB,IAAImG,EAAQ,GACXyM,EAAUlU,EAAGsB,GAAUwC,KAAM,SAS9B,OAPKoQ,GACJlU,EAAE6B,KAAMqS,EAAQzT,MAAO,MAAO,WACxB0D,QAAQnE,EAAEmG,UAAU2N,mBACxB9T,EAAE0C,OAAQ+E,EAAOzH,EAAEmG,UAAU2N,kBAAmB3P,UAI5CsD,GAGR0M,uBAAwB,SAAU1M,EAAO9E,EAAM1B,EAAQ0C,GAIjD,eAAesO,KAAMhR,KAAuB,OAAT0B,GAAiB,oBAAoBsP,KAAMtP,MAClFgB,EAAQyQ,OAAQzQ,GAGX0Q,MAAO1Q,KACXA,OAAQf,IAILe,GAAmB,IAAVA,EACb8D,EAAOxG,GAAW0C,EACPhB,IAAS1B,GAAmB,UAAT0B,IAI9B8E,EAAgB,SAAT9E,EAAkB,UAAY1B,IAAW,IAIlDsH,eAAgB,SAAUjH,GACzB,IAGCL,EAAQ0C,EAHL8D,EAAQ,GACX7D,EAAW5D,EAAGsB,GACdqB,EAAOrB,EAAQK,aAAc,QAG9B,IAAMV,KAAUjB,EAAEmG,UAAU+K,QAGX,aAAXjQ,GAKW,MAJf0C,EAAQrC,EAAQK,aAAcV,MAK7B0C,GAAQ,GAITA,IAAUA,GAEVA,EAAQC,EAASE,KAAM7C,GAGxBkD,KAAKgQ,uBAAwB1M,EAAO9E,EAAM1B,EAAQ0C,GAQnD,OAJK8D,EAAM8E,WAAa,uBAAuB0F,KAAMxK,EAAM8E,mBACnD9E,EAAM8E,UAGP9E,GAGRe,UAAW,SAAUlH,GACpB,IAGCL,EAAQ0C,EAHL8D,EAAQ,GACX7D,EAAW5D,EAAGsB,GACdqB,EAAOrB,EAAQK,aAAc,QAG9B,IAAMV,KAAUjB,EAAEmG,UAAU+K,QAIZ,MAHfvN,EAAQC,EAASrC,KAAM,OAASN,EAAOuQ,OAAQ,GAAI5P,cAAgBX,EAAOwQ,UAAW,GAAI1O,kBAIxFY,GAAQ,GAGTQ,KAAKgQ,uBAAwB1M,EAAO9E,EAAM1B,EAAQ0C,GAEnD,OAAO8D,GAGRG,YAAa,SAAUtG,GACtB,IAAImG,EAAQ,GACXtB,EAAYnG,EAAEuB,KAAMD,EAAQwD,KAAM,aAKnC,OAHKqB,EAAUC,SAASqB,QACvBA,EAAQzH,EAAEmG,UAAU+B,cAAe/B,EAAUC,SAASqB,MAAOnG,EAAQoC,QAAY,IAE3E+D,GAGRY,eAAgB,SAAUZ,EAAOnG,GAmEhC,OAhEAtB,EAAE6B,KAAM4F,GAAO,SAAU4B,EAAMxC,GAG9B,IAAa,IAARA,GAIL,GAAKA,EAAIiB,OAASjB,EAAIyN,QAAU,CAC/B,IAAIC,GAAW,EACf,cAAgB1N,EAAIyN,SACpB,IAAK,SACJC,IAAavU,EAAG6G,EAAIyN,QAAShT,EAAQwD,MAAOpE,OAC5C,MACD,IAAK,WACJ6T,EAAW1N,EAAIyN,QAAQrN,KAAM3F,EAASA,GAGlCiT,EACJ9M,EAAO4B,QAAuBzG,IAAdiE,EAAIiB,OAAsBjB,EAAIiB,OAE9C9H,EAAEuB,KAAMD,EAAQwD,KAAM,aAAcwK,cAAetP,EAAGsB,WAC/CmG,EAAO4B,iBAjBR5B,EAAO4B,MAuBhBrJ,EAAE6B,KAAM4F,GAAO,SAAUoJ,EAAM2D,GAC9B/M,EAAOoJ,GAA8B,mBAAd2D,GAAqC,eAAT3D,EAAwB2D,EAAWlT,GAAYkT,KAInGxU,EAAE6B,KAAM,CAAE,YAAa,cAAe,WAChC4F,EAAOtD,QACXsD,EAAOtD,MAASiQ,OAAQ3M,EAAOtD,WAGjCnE,EAAE6B,KAAM,CAAE,cAAe,UAAW,WACnC,IAAIrB,EACCiH,EAAOtD,QACN2F,MAAM2K,QAAShN,EAAOtD,OAC1BsD,EAAOtD,MAAS,CAAEiQ,OAAQ3M,EAAOtD,MAAQ,IAAOiQ,OAAQ3M,EAAOtD,MAAQ,KACnC,iBAAlBsD,EAAOtD,QACzB3D,EAAQiH,EAAOtD,MAAO2E,QAAS,UAAW,IAAKrI,MAAO,UACtDgH,EAAOtD,MAAS,CAAEiQ,OAAQ5T,EAAO,IAAO4T,OAAQ5T,EAAO,UAKrDR,EAAEmG,UAAU2G,mBAGE,MAAbrF,EAAMmF,KAA4B,MAAbnF,EAAMkF,MAC/BlF,EAAMiF,MAAQ,CAAEjF,EAAMmF,IAAKnF,EAAMkF,YAC1BlF,EAAMmF,WACNnF,EAAMkF,KAEU,MAAnBlF,EAAM+E,WAAwC,MAAnB/E,EAAM8E,YACrC9E,EAAMgF,YAAc,CAAEhF,EAAM+E,UAAW/E,EAAM8E,kBACtC9E,EAAM+E,iBACN/E,EAAM8E,YAIR9E,GAIRS,cAAe,SAAU3G,GACxB,GAAqB,iBAATA,EAAoB,CAC/B,IAAImT,EAAc,GAClB1U,EAAE6B,KAAMN,EAAKd,MAAO,OAAQ,WAC3BiU,EAAavQ,OAAS,KAEvB5C,EAAOmT,EAER,OAAOnT,GAIRoT,UAAW,SAAUjR,EAAMzC,EAAQ8N,GAClC/O,EAAEmG,UAAU+K,QAASxN,GAASzC,EAC9BjB,EAAEmG,UAAUgC,SAAUzE,QAAqBd,IAAZmM,EAAwBA,EAAU/O,EAAEmG,UAAUgC,SAAUzE,GAClFzC,EAAOP,OAAS,GACpBV,EAAEmG,UAAU6N,cAAetQ,EAAM1D,EAAEmG,UAAU+B,cAAexE,KAK9DwN,QAAS,CAGRzI,SAAU,SAAU9E,EAAOrC,EAASwG,GAGnC,IAAM3D,KAAKmP,OAAQxL,EAAOxG,GACzB,MAAO,sBAER,GAAwC,WAAnCA,EAAQ+R,SAAStQ,cAA6B,CAGlD,IAAI8D,EAAM7G,EAAGsB,GAAUuF,MACvB,OAAOA,GAAOA,EAAInG,OAAS,EAE5B,OAAKyD,KAAK8G,UAAW3J,GACb6C,KAAKiP,UAAWzP,EAAOrC,GAAY,EAEpCqC,SAAyCA,EAAMjD,OAAS,GAIhEuL,MAAO,SAAUtI,EAAOrC,GAMvB,OAAO6C,KAAKgH,SAAU7J,IAAa,wIAAwI2Q,KAAMtO,IAIlLd,IAAK,SAAUc,EAAOrC,GAMrB,OAAO6C,KAAKgH,SAAU7J,IAAa,khBAAkhB2Q,KAAMtO,IAI5jBuI,MACKvD,GAAS,EAEN,SAAUhF,EAAOrC,GAcvB,OAbMqH,IACLA,GAAS,EACJxE,KAAKiC,SAASY,OAASzG,OAAO8G,SAClCA,QAAQC,KACP,uTASInD,KAAKgH,SAAU7J,KAAc,cAAc2Q,KAAM,IAAI2C,KAAMjR,GAAQkR,cAK5E1I,QAAS,SAAUxI,EAAOrC,GACzB,OAAO6C,KAAKgH,SAAU7J,IAAa,+DAA+D2Q,KAAMtO,IAIzGyI,OAAQ,SAAUzI,EAAOrC,GACxB,OAAO6C,KAAKgH,SAAU7J,IAAa,8CAA8C2Q,KAAMtO,IAIxF0I,OAAQ,SAAU1I,EAAOrC,GACxB,OAAO6C,KAAKgH,SAAU7J,IAAa,QAAQ2Q,KAAMtO,IAIlD6I,UAAW,SAAU7I,EAAOrC,EAASwG,GACpC,IAAIpH,EAASoJ,MAAM2K,QAAS9Q,GAAUA,EAAMjD,OAASyD,KAAKiP,UAAWzP,EAAOrC,GAC5E,OAAO6C,KAAKgH,SAAU7J,IAAaZ,GAAUoH,GAI9CyE,UAAW,SAAU5I,EAAOrC,EAASwG,GACpC,IAAIpH,EAASoJ,MAAM2K,QAAS9Q,GAAUA,EAAMjD,OAASyD,KAAKiP,UAAWzP,EAAOrC,GAC5E,OAAO6C,KAAKgH,SAAU7J,IAAaZ,GAAUoH,GAI9C2E,YAAa,SAAU9I,EAAOrC,EAASwG,GACtC,IAAIpH,EAASoJ,MAAM2K,QAAS9Q,GAAUA,EAAMjD,OAASyD,KAAKiP,UAAWzP,EAAOrC,GAC5E,OAAO6C,KAAKgH,SAAU7J,IAAeZ,GAAUoH,EAAO,IAAOpH,GAAUoH,EAAO,IAI/E8E,IAAK,SAAUjJ,EAAOrC,EAASwG,GAC9B,OAAO3D,KAAKgH,SAAU7J,IAAaqC,GAASmE,GAI7C6E,IAAK,SAAUhJ,EAAOrC,EAASwG,GAC9B,OAAO3D,KAAKgH,SAAU7J,IAAaqC,GAASmE,GAI7C4E,MAAO,SAAU/I,EAAOrC,EAASwG,GAChC,OAAO3D,KAAKgH,SAAU7J,IAAeqC,GAASmE,EAAO,IAAOnE,GAASmE,EAAO,IAI7E+E,KAAM,SAAUlJ,EAAOrC,EAASwG,GAC/B,IAkBCgN,EAlBGnS,EAAO3C,EAAGsB,GAAUwC,KAAM,QAC7BiR,EAAe,gCAAkCpS,EAAO,qBAExDqS,EAAK,IAAIhL,OAAQ,MAAQrH,EAAO,OAEhCsS,EAAgB,SAAUC,GACzB,IAAIjC,GAAU,GAAKiC,GAAMjC,MAAO,iBAChC,OAAMA,GAKCA,EAAO,GAAMA,EAAO,GAAIvS,OAJvB,GAMTyU,EAAQ,SAAUD,GACjB,OAAOjQ,KAAKC,MAAOgQ,EAAMjQ,KAAKmQ,IAAK,GAAIN,KAExCvN,GAAQ,EAKT,GAlBgB5E,IAASqS,EAAG/C,KAFV,CAAE,OAAQ,SAAU,SAEW5B,QAmBhD,MAAM,IAAIgF,MAAON,GAUlB,OAPAD,EAAWG,EAAenN,IAGrBmN,EAAetR,GAAUmR,GAAYK,EAAOxR,GAAUwR,EAAOrN,IAAY,KAC7EP,GAAQ,GAGFpD,KAAKgH,SAAU7J,IAAaiG,GAIpC+E,QAAS,SAAU3I,EAAOrC,EAASwG,GAGlC,IAAIjD,EAAS7E,EAAG8H,GAMhB,OALK3D,KAAKiC,SAAS4E,YAAcnG,EAAO6K,IAAK,0BAA2BhP,QACvEmE,EAAOiH,SAAU,yBAA0BrH,GAAI,yBAAyB,WACvEzE,EAAGsB,GAAUiG,WAGR5D,IAAUkB,EAAOgC,OAIzB6B,OAAQ,SAAU/E,EAAOrC,EAASwG,EAAO7G,GACxC,GAAKkD,KAAKgH,SAAU7J,GACnB,MAAO,sBAGRL,EAA2B,iBAAXA,GAAuBA,GAAU,SAEjD,IACCkF,EAAW5E,EAAM+T,EADdC,EAAWpR,KAAKuP,cAAepS,EAASL,GAW5C,OARMkD,KAAKiC,SAAS+B,SAAU7G,EAAQoC,QACrCS,KAAKiC,SAAS+B,SAAU7G,EAAQoC,MAAS,IAE1C6R,EAASC,gBAAkBD,EAASC,iBAAmBrR,KAAKiC,SAAS+B,SAAU7G,EAAQoC,MAAQzC,GAC/FkD,KAAKiC,SAAS+B,SAAU7G,EAAQoC,MAAQzC,GAAWsU,EAASxG,QAE5DjH,EAAyB,iBAAVA,GAAsB,CAAEjF,IAAKiF,IAAWA,EACvDwN,EAAmBtV,EAAE8H,MAAO9H,EAAE0C,OAAQ,CAAEnB,KAAMoC,GAASmE,EAAMvG,OACxDgU,EAAS5B,MAAQ2B,EACdC,EAAShO,OAGjBgO,EAAS5B,IAAM2B,EACfnP,EAAYhC,KACZA,KAAKqP,aAAclS,IACnBC,EAAO,IACDD,EAAQoC,MAASC,EACvB3D,EAAEuE,KAAMvE,EAAE0C,QAAQ,EAAM,CACvBjB,KAAM,QACNgU,KAAM,WAAanU,EAAQoC,KAC3BgS,SAAU,OACVnU,KAAMA,EACNoU,QAASxP,EAAUY,YACnBzD,QAAS,SAAUsS,GAClB,IACC/G,EAAQE,EAAS7D,EADd3D,GAAqB,IAAbqO,GAAkC,SAAbA,EAGjCzP,EAAUC,SAAS+B,SAAU7G,EAAQoC,MAAQzC,GAAWsU,EAASC,gBAC5DjO,GACJ2D,EAAY/E,EAAUS,cACtBT,EAAUmK,iBACVnK,EAAUyI,OAASzI,EAAU4E,UAAWzJ,GACxC6E,EAAUS,cAAgBsE,EAC1B/E,EAAU6I,YAAYpO,KAAMU,GAC5B6E,EAAUsF,QAASnK,EAAQoC,OAAS,EACpCyC,EAAU2H,eAEVe,EAAS,GACTE,EAAU6G,GAAYzP,EAAU2L,eAAgBxQ,EAAS,CAAEL,OAAQA,EAAQgQ,WAAYtN,IACvFkL,EAAQvN,EAAQoC,MAAS6R,EAASxG,QAAUA,EAC5C5I,EAAUsF,QAASnK,EAAQoC,OAAS,EACpCyC,EAAU2H,WAAYe,IAEvB0G,EAAShO,MAAQA,EACjBpB,EAAUsN,YAAanS,EAASiG,KAE/BO,IACI,eAUV,IACCvD,EADGsR,EAAkB,GA+BtB,OA3BK7V,EAAE8V,cACN9V,EAAE8V,eAAe,SAAU1P,EAAU2P,EAAG5U,GACvC,IAAIsU,EAAOrP,EAASqP,KACG,UAAlBrP,EAAS3E,OACRoU,EAAiBJ,IACrBI,EAAiBJ,GAAOO,QAEzBH,EAAiBJ,GAAStU,OAM5BoD,EAAOvE,EAAEuE,KACTvE,EAAEuE,KAAO,SAAU6B,GAClB,IAAI3E,GAAS,SAAU2E,EAAWA,EAAWpG,EAAEiW,cAAexU,KAC7DgU,GAAS,SAAUrP,EAAWA,EAAWpG,EAAEiW,cAAeR,KAC3D,MAAc,UAAThU,GACCoU,EAAiBJ,IACrBI,EAAiBJ,GAAOO,QAEzBH,EAAiBJ,GAASlR,EAAKxD,MAAOoD,KAAMjB,WACrC2S,EAAiBJ,IAElBlR,EAAKxD,MAAOoD,KAAMjB,aAGpBlD,IAjnDsB","file":"8433.3c85320b22115ff4d617.js","sourcesContent":["// Unobtrusive Ajax support library for jQuery\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n// @version v3.2.6\n// \n// Microsoft grants you the right to use these script files for the sole\n// purpose of either: (i) interacting through your browser with the Microsoft\n// website or online service, subject to the applicable licensing or use\n// terms; or (ii) using the files as included with a Microsoft product subject\n// to that product's license terms. Microsoft reserves all other rights to the\n// files not expressly granted by Microsoft, whether by implication, estoppel\n// or otherwise. Insofar as a script file is dual licensed under GPL,\n// Microsoft neither took the code under GPL nor distributes it thereunder but\n// under the terms set out in this paragraph. All notices and licenses\n// below are for informational purposes only.\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global window: false, jQuery: false */\n\n(function ($) {\n var data_click = \"unobtrusiveAjaxClick\",\n data_target = \"unobtrusiveAjaxClickTarget\",\n data_validation = \"unobtrusiveValidation\";\n\n function getFunction(code, argNames) {\n var fn = window, parts = (code || \"\").split(\".\");\n while (fn && parts.length) {\n fn = fn[parts.shift()];\n }\n if (typeof (fn) === \"function\") {\n return fn;\n }\n argNames.push(code);\n return Function.constructor.apply(null, argNames);\n }\n\n function isMethodProxySafe(method) {\n return method === \"GET\" || method === \"POST\";\n }\n\n function asyncOnBeforeSend(xhr, method) {\n if (!isMethodProxySafe(method)) {\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", method);\n }\n }\n\n function asyncOnSuccess(element, data, contentType) {\n var mode;\n\n if (contentType.indexOf(\"application/x-javascript\") !== -1) { // jQuery already executes JavaScript for us\n return;\n }\n\n mode = (element.getAttribute(\"data-ajax-mode\") || \"\").toUpperCase();\n $(element.getAttribute(\"data-ajax-update\")).each(function (i, update) {\n var top;\n\n switch (mode) {\n case \"BEFORE\":\n $(update).prepend(data);\n break;\n case \"AFTER\":\n $(update).append(data);\n break;\n case \"REPLACE-WITH\":\n $(update).replaceWith(data);\n break;\n default:\n $(update).html(data);\n break;\n }\n });\n }\n\n function asyncRequest(element, options) {\n var confirm, loading, method, duration;\n\n confirm = element.getAttribute(\"data-ajax-confirm\");\n if (confirm && !window.confirm(confirm)) {\n return;\n }\n\n loading = $(element.getAttribute(\"data-ajax-loading\"));\n duration = parseInt(element.getAttribute(\"data-ajax-loading-duration\"), 10) || 0;\n\n $.extend(options, {\n type: element.getAttribute(\"data-ajax-method\") || undefined,\n url: element.getAttribute(\"data-ajax-url\") || undefined,\n cache: (element.getAttribute(\"data-ajax-cache\") || \"\").toLowerCase() === \"true\",\n beforeSend: function (xhr) {\n var result;\n asyncOnBeforeSend(xhr, method);\n result = getFunction(element.getAttribute(\"data-ajax-begin\"), [\"xhr\"]).apply(element, arguments);\n if (result !== false) {\n loading.show(duration);\n }\n return result;\n },\n complete: function () {\n loading.hide(duration);\n getFunction(element.getAttribute(\"data-ajax-complete\"), [\"xhr\", \"status\"]).apply(element, arguments);\n },\n success: function (data, status, xhr) {\n asyncOnSuccess(element, data, xhr.getResponseHeader(\"Content-Type\") || \"text/html\");\n getFunction(element.getAttribute(\"data-ajax-success\"), [\"data\", \"status\", \"xhr\"]).apply(element, arguments);\n },\n error: function () {\n getFunction(element.getAttribute(\"data-ajax-failure\"), [\"xhr\", \"status\", \"error\"]).apply(element, arguments);\n }\n });\n\n options.data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\n\n method = options.type.toUpperCase();\n if (!isMethodProxySafe(method)) {\n options.type = \"POST\";\n options.data.push({ name: \"X-HTTP-Method-Override\", value: method });\n }\n\n // change here:\n // Check for a Form POST with enctype=multipart/form-data\n // add the input file that were not previously included in the serializeArray()\n // set processData and contentType to false\n var $element = $(element);\n if ($element.is(\"form\") && $element.attr(\"enctype\") == \"multipart/form-data\") {\n var formdata = new FormData();\n $.each(options.data, function (i, v) {\n formdata.append(v.name, v.value);\n });\n $(\"input[type=file]\", $element).each(function () {\n var file = this;\n $.each(file.files, function (n, v) {\n formdata.append(file.name, v);\n });\n });\n $.extend(options, {\n processData: false,\n contentType: false,\n data: formdata\n });\n }\n // end change\n\n $.ajax(options);\n }\n\n function validate(form) {\n var validationInfo = $(form).data(data_validation);\n return !validationInfo || !validationInfo.validate || validationInfo.validate();\n }\n\n $(document).on(\"click\", \"a[data-ajax=true]\", function (evt) {\n evt.preventDefault();\n asyncRequest(this, {\n url: this.href,\n type: \"GET\",\n data: []\n });\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] input[type=image]\", function (evt) {\n var name = evt.target.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]),\n offset = target.offset();\n\n form.data(data_click, [\n { name: name + \".x\", value: Math.round(evt.pageX - offset.left) },\n { name: name + \".y\", value: Math.round(evt.pageY - offset.top) }\n ]);\n\n setTimeout(function () {\n form.removeData(data_click);\n }, 0);\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] :submit\", function (evt) {\n var name = evt.currentTarget.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]);\n\n form.data(data_click, name ? [{ name: name, value: evt.currentTarget.value }] : []);\n form.data(data_target, target);\n\n setTimeout(function () {\n form.removeData(data_click);\n form.removeData(data_target);\n }, 0);\n });\n\n $(document).on(\"submit\", \"form[data-ajax=true]\", function (evt) {\n var clickInfo = $(this).data(data_click) || [],\n clickTarget = $(this).data(data_target),\n isCancel = clickTarget && (clickTarget.hasClass(\"cancel\") || clickTarget.attr('formnovalidate') !== undefined);\n evt.preventDefault();\n if (!isCancel && !validate(this)) {\n return;\n }\n asyncRequest(this, {\n url: this.action,\n type: this.method || \"GET\",\n data: clickInfo.concat($(this).serializeArray())\n });\n });\n}(jQuery));\n","/*!\n * jQuery Validation Plugin v1.19.5\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2022 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\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\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\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\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[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])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));"],"sourceRoot":""}