!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[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(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?: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(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a});;
(function( $ ) {
'use strict';
jQuery(document).ready(function($) {
if (
document.getElementsByClassName("captcha-field").length > 0 &&
ccf_settings &&
ccf_settings.captcha_key
) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://www.google.com/recaptcha/api.js";
document.body.appendChild(script);
var captchaInt = setInterval(() => {
if (window.grecaptcha && window.grecaptcha.render) {
var captchaFields = document.getElementsByClassName("captcha-field");
for (var i = 0; i < captchaFields.length; i++) {
grecaptcha.render(captchaFields[i], {
sitekey: ccf_settings.captcha_key,
});
}
clearInterval(captchaInt);
}
}, 500);
}
// Check if address field exists and API key is available
if (
document.querySelector(".field-wrap.address1 input[type='text']") &&
ccf_settings &&
ccf_settings.map_api_key
) {
// Load Google Maps API
var script = document.createElement("script");
script.src = "https://maps.googleapis.com/maps/api/js?key=" + ccf_settings.map_api_key + "&libraries=places&loading=async";
script.async = true;
script.defer = true;
document.body.appendChild(script);
// Check for API readiness
var mapApiInt = setInterval(function() {
if (window.google && google.maps && google.maps.places) {
initAddressAutocomplete();
initMailingAddressAutocomplete();
clearInterval(mapApiInt);
}
}, 500);
function initAddressAutocomplete() {
var addressInput = document.querySelector('.field-wrap.address1 input[type="text"]');
if (addressInput) {
var autocomplete = new google.maps.places.Autocomplete(
addressInput,
{
types: ['geocode'],
fields: ['address_components', 'geometry'],
componentRestrictions: {country: 'us'}
}
);
autocomplete.addListener('place_changed', function() {
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
// Fill address components
fillAddressComponents(place, '');
});
}
}
function initMailingAddressAutocomplete() {
var mailingAddressInput = document.querySelector('.field-wrap.mailing_address1 input[type="text"]');
if (mailingAddressInput) {
var autocomplete = new google.maps.places.Autocomplete(
mailingAddressInput,
{
types: ['geocode'],
fields: ['address_components', 'geometry'],
componentRestrictions: {country: 'us'}
}
);
autocomplete.addListener('place_changed', function() {
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
// Fill mailing address components
fillAddressComponents(place, 'mailing_');
});
}
}
function fillAddressComponents(place, prefix) {
// Helper function to get address component by type
function getComponent(place, type) {
for (var i = 0; i < place.address_components.length; i++) {
var component = place.address_components[i];
if (component.types.includes(type)) {
return component;
}
}
return null;
}
// Get components
var streetNumber = getComponent(place, 'street_number')?.long_name || '';
var route = getComponent(place, 'route')?.long_name || '';
var subpremise = getComponent(place, 'subpremise')?.long_name || ''; // Address 2
var city = getComponent(place, 'locality')?.long_name || '';
var stateComponent = getComponent(place, 'administrative_area_level_1');
var stateShort = stateComponent?.short_name || '';
var county = getComponent(place, 'administrative_area_level_2')?.long_name || '';
var zip = getComponent(place, 'postal_code')?.long_name || '';
var country = getComponent(place, 'country')?.long_name || '';
var fullAddress = [streetNumber, route].filter(Boolean).join(' ');
// Update form fields
var streetAddressField = document.querySelector(`.field-wrap.${prefix}address1 input[type="text"]`);
if (streetAddressField) streetAddressField.value = fullAddress;
var address2Field = document.querySelector(`.field-wrap.${prefix}address2 input[type="text"]`);
if (address2Field && subpremise) address2Field.value = subpremise;
var cityField = document.querySelector(`.field-wrap.${prefix}city input[type="text"]`);
if (cityField) cityField.value = city;
var countyField = document.querySelector(`.field-wrap.${prefix}county input[type="text"]`);
if (countyField) countyField.value = county;
var stateSelect = document.querySelector(`.field-wrap.${prefix}state select`);
if (stateSelect && stateShort) {
stateSelect.value = stateShort;
stateSelect.dispatchEvent(new Event('change'));
}
var zipField = document.querySelector(`.field-wrap.${prefix}zipcode input[type="text"]`);
if (zipField) zipField.value = zip;
var countryField = document.querySelector(`.field-wrap.${prefix}country input[type="text"]`);
if (countryField) countryField.value = country;
}
}
if (jQuery(".wp-block-contact-form .datepicker").length > 0) {
jQuery(".datepicker").datepicker({
yearRange: "c-100:c+10",
dateFormat: "mm/dd/yy", // Set the date format as needed
changeMonth: true, // Allow the month to be changed directly
changeYear: true, // Allow the year to be changed directly
});
jQuery("#tour_date").datepicker("setDate", "today");
jQuery("#Date_Requested, #tour_date").datepicker("option", "minDate", 0); // Enable only future dates
if (jQuery("#gf_end_date").length > 0) {
var minDate = new Date();
minDate.setDate(minDate.getDate() + 60); // Set the start of the range to 60 days from now
var maxDate = new Date(minDate);
maxDate.setFullYear(maxDate.getFullYear() + 1); // Set the end of the range to 12 months from the minDate
jQuery("#gf_end_date").datepicker("option", "minDate", minDate);
jQuery("#gf_end_date").datepicker("option", "maxDate", maxDate);
jQuery("#gf_end_date").datepicker("setDate", minDate);
jQuery(".datepicker").each(function () {
var $this = jQuery(this);
if ($.datepicker._getInst($this[0])) {
$this.keydown(function (e) {
return false; // Prevent keydown events
});
}
});
}
}
$('.field-container .us-mobile').on('input', function() {
var $this = $(this);
var val = $this.val().replace(/\D/g, ''); // Remove all non-digit characters
var newVal = '';
if (val.length > 0) {
newVal = '(' + val.substring(0, 3);
}
if (val.length > 3) {
newVal += ') ' + val.substring(3, 6);
}
if (val.length > 6) {
newVal += '-' + val.substring(6, 10);
}
$this.val(newVal);
});
// Add a custom validation method for mobile number
$.validator.addMethod("validMobile", function (value, element) {
// This checks if the value matches the pattern of 10 or more digits
return this.optional(element) || /^[0-9]{10,}$/.test(value);
}, "Please enter a valid mobile number (10 or more digits).");
$.validator.addMethod("validUSMobile", function (value, element) {
// This checks if the value matches the pattern (###) ###-####
return this.optional(element) || /^\(\d{3}\) \d{3}-\d{4}$/.test(value);
}, "Please enter a valid US mobile number in the format (###) ###-####.");
if ($(".gdi-custom-form-block .contact-form").length) {
// Loop through each contact form
$(".gdi-custom-form-block .contact-form").each(function () {
var $form = $(this);
var rules = {};
var messages = {};
// Loop through each field-wrap to build the rules and messages
$form.find(".field-wrap.required").each(function () {
var $fieldWrap = $(this);
var $input = $fieldWrap.find("input, select, textarea"); // Include textarea
var fieldName = $input.attr("name");
var fieldLabel = $fieldWrap
.find(".field-label")
.text()
.replace("*", "")
.trim();
// Add a required rule for this field
rules[fieldName] = {
required: true,
};
// Add a dynamic error message based on the label text
messages[fieldName] = {
required: `${fieldLabel} field is required.`,
};
// Handle specific input types
if ($input.attr("type") === "email") {
// Add custom email validation
$.validator.addMethod("strictEmail", function(value, element) {
return this.optional(element) || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
}, "Please enter a valid email address.");
rules[fieldName].strictEmail = true;
messages[fieldName].strictEmail = "Please enter a valid email address.";
} else if ($input.attr("type") === "tel") {
if ($input.hasClass("us-mobile")) {
// Use the custom method for US mobile number validation
rules[fieldName].validUSMobile = true;
messages[fieldName].validUSMobile = "Please enter a valid US mobile number in the format (###) ###-####.";
} else {
// Use the regular mobile number validation
rules[fieldName].validMobile = true;
messages[fieldName].validMobile = "Please enter a valid mobile number.";
}
} else if ($input.attr("type") === "checkbox") {
// Custom rule for checkbox (ensure at least one checkbox is checked)
var checkboxGroupName = fieldName; // Use the name attribute for grouping
var $checkboxes = $fieldWrap.find("input[type='checkbox']");
// Check if there's only one checkbox
if ($checkboxes.length === 1) {
// If there's only one checkbox, no need for the "at least one" message
rules[checkboxGroupName] = {
required: true,
};
messages[checkboxGroupName] = {
required: `Please select the ${fieldLabel.toLowerCase()}.`,
};
} else {
// If there are multiple checkboxes, keep the "at least one" message
rules[checkboxGroupName] = {
required: true,
};
messages[checkboxGroupName] = {
required: `Please select at least one ${fieldLabel.toLowerCase()}.`,
};
}
} else if ($input.is("textarea")) {
// Additional validation for textareas can go here if needed
} else if ($input.attr("type") === "file") {
// Custom file validation
rules[fieldName] = {
required: true,
extension: "pdf,doc,png,xlsx,pptx,jpg", // Specify allowed file types
};
messages[fieldName] = {
required: `${fieldLabel} field is required.`,
extension: `Please upload a valid file type (pdf, doc, png, xlsx, pptx, jpg).`,
};
} else if ($input.attr("type") === "text" && $input.attr("class") && $input.attr("class").includes("zip-code")) {
// Zip code validation (5 digits)
rules[fieldName] = {
required: true,
digits: true,
minlength: 5,
maxlength: 5
};
messages[fieldName] = {
required: `${fieldLabel} field is required.`,
digits: "Please enter only numbers for zip code.",
minlength: "Zip code must be exactly 5 digits.",
maxlength: "Zip code must be exactly 5 digits."
};
}
});
// Initialize validation for the current form
$form.validate({
rules: rules,
messages: messages,
errorElement: "div",
errorPlacement: function (error, element) {
error.addClass("error-message");
error.insertAfter(element.closest(".field-container"));
},
submitHandler: function (form) {
var $currentContactForm = $(form);
var $currentFormContainer = $currentContactForm.closest(".wp-block-contact-form"); // Parent container for the form
var $contactloader;
// Check if loader is inside or outside the form container
if ($currentFormContainer.find(".contact-form-loader").length > 0) {
// Loader is inside the form container
$contactloader = $currentFormContainer.find(".contact-form-loader");
} else if ($currentFormContainer.prev(".contact-form-loader").length > 0) {
// Loader is outside the form container (directly above)
$contactloader = $currentFormContainer.prev(".contact-form-loader");
}
if ($contactloader) {
$contactloader.show(); // Show the loader
}
// Clear any previous messages
$form.closest(".wp-block-contact-form").find(".contact-form-message").html("");
// Prepare data object for AJAX request
let requestData = new FormData();
requestData.append("action", "gdi_validate_form_submission");
requestData.append("formData", $form.serialize());
$form.find('input[type="file"]').each(function () {
const input = this;
const fieldName = $(input).attr("name").replace(/\[\]$/, ""); // Remove trailing [] if present
if (input.files.length > 0) {
for (let i = 0; i < input.files.length; i++) {
requestData.append(`${fieldName}[${i}]`, input.files[i]);
}
}
});
// Check if "rep" parameter exists in the URL
const repParam = getQueryParam("rep");
if (repParam) {
requestData.append("rep", repParam);
}
// Perform an AJAX call on form submission
$.ajax({
url: ccf_settings.ajaxUrl,
dataType: "json",
type: "POST",
data: requestData,
processData: false,
contentType: false,
success: function (response) {
if (response.submitted) {
// Check if there's a redirect URL
if (response.redirect_url) {
// Redirect to the updated URL
window.location.href = response.redirect_url;
} else {
if (response.success_msg) {
$form
.closest(".wp-block-contact-form")
.find(".contact-form-message")
.html(
'
' +
response.success_msg +
"
"
);
}
$form.hide();
$form[0].reset(); // Reset the form fields
$contactloader.hide(); // Hide the loader
}
} else {
let errorData = response.error_data;
// Check if errorData exists and if it contains an err_msg property
if (errorData && errorData.err_msg) {
const $errorContainer = $form
.closest(".wp-block-contact-form")
.find(".contact-form-message");
const alertDiv = document.createElement("div");
alertDiv.classList.add("alert", "alert-danger");
alertDiv.textContent = errorData.err_msg; // Using textContent prevents HTML injection
$errorContainer.html(''); // Clear existing messages
$errorContainer.append(alertDiv); // Safely append the new message
}
else {
// Optional: Handle the case where there is no error message, if needed
$form
.closest(".wp-block-contact-form")
.find(".contact-form-message")
.html('
An unexpected error occurred. Please try again.
');
}
$form[0].reset(); // This resets the form fields to their initial values
$contactloader.hide(); // Hide the loader
}
},
error: function (jqXHR, textStatus, errorThrown) {
$contactloader.hide(); // Hide the loader
},
});
},
});
});
}
// Function to get query parameters from the URL
function getQueryParam(name) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).on('change', '.gdi-custom-form-block #mailing-checkbox0', function() {
var $this = $(this);
var addressOne = $('#address_one').val() || '';
var addressTwo = $('#address_two').val() || '';
var city = $('#city').val() || '';
var county = $('#county').val() || '';
var state = $('#state').val() || '';
var zipcode = $('#zipcode').val() || '';
var mailingAddressOne = $('#mailing_address_one');
var mailingAddressTwo = $('#mailing_address_two');
var mailingCity = $('#mailing_city');
var mailingCounty = $('#mailing_county');
var mailingState = $('#mailing_state');
var mailingZipcode = $('#mailing_zipcode');
if ($this.is(':checked')) {
mailingAddressOne.val(addressOne);
mailingAddressTwo.val(addressTwo);
mailingCity.val(city);
mailingCounty.val(county);
mailingState.val(state);
mailingZipcode.val(zipcode);
} else {
mailingAddressOne.val('');
mailingAddressTwo.val('');
mailingCity.val('');
mailingCounty.val('');
mailingState.val('');
mailingZipcode.val('');
}
});
});
})( jQuery );
if (
jQuery("select[multiple]").length > 0 &&
ccf_settings &&
ccf_settings.select2_css &&
ccf_settings.select2_js
) {
// Load Select2 CSS
var link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = ccf_settings.select2_css;
document.head.appendChild(link);
// Load Select2 JS
jQuery.getScript(ccf_settings.select2_js, function () {
// Load select2Sortable JS after Select2 JS is loaded
jQuery("select[multiple]").each(function () {
var placeholder = jQuery(this).siblings("label").text(); // Get the text of the associated label
placeholder = placeholder.replace("*", ""); // Remove the asterisk
jQuery(this)
.select2({
placeholder: placeholder, // Set the placeholder
})
.on("select2:select", function (evt) {
var id = evt.params.data.id;
var element = jQuery(this).children("option[value=" + id + "]");
moveElementToEndOfParent(element);
jQuery(this).trigger("change");
});
});
});
moveElementToEndOfParent = function (element) {
var parent = element.parent();
element.detach();
parent.append(element);
};
}
var $ = jQuery;
function Handlechange(fileinput) {
var textinput = $('#' + fileinput).parents('.file-upload-wrap').find('.filename').attr('id');
var textinputDom = document.getElementById(textinput);
var fileinputDom = document.getElementById(fileinput);
var allowedFileType = $('#' + fileinput).attr('allowed-file-type');
var exts = allowedFileType.split(", ");
var enFileTypeArr = [];
// Updated file type mapping for new requirements
for (var e = 0; e < exts.length; e++) {
if ('jpg' === exts[e]) {
enFileTypeArr.push('.jpg');
} else if ('jpeg' === exts[e]) {
enFileTypeArr.push('.jpeg');
} else if ('gif' === exts[e]) {
enFileTypeArr.push('.gif');
} else if ('png' === exts[e]) {
enFileTypeArr.push('.png');
} else if ('mov' === exts[e]) {
enFileTypeArr.push('.mov');
} else if ('mp4' === exts[e]) {
enFileTypeArr.push('.mp4');
} else if ('m4v' === exts[e]) {
enFileTypeArr.push('.m4v');
}
}
// Add related file extensions
if (-1 < $.inArray('jpg', exts)) {
exts.push('jpeg');
}
if (-1 < $.inArray('jpeg', exts)) {
exts.push('jpg');
}
var validateMessage = '';
var fileUploadMessage = '';
var fileFieldNotValidationMessage = '';
if (0 < enFileTypeArr.length) {
fileUploadMessage = 'The type of file you are uploading is not permitted. Please try a different filetype.';
}
validateMessage = 'OK';
fileFieldNotValidationMessage = 'Please upload the required file.';
$('#' + fileinput).parents('.field-container').find('.field-label .not-validate').remove();
$('#' + fileinput).parents('.field-container').find('.field-label .validate').remove();
if (fileinputDom) {
if (0 < fileinputDom.files.length) {
// Check maximum number of files (5)
if (fileinputDom.files.length > 5) {
$('#' + fileinput).parents('.field-wrap').removeClass('valid').addClass('invalid');
$('#' + fileinput).parents('.field-container').find('.field-label').append('Maximum 5 files allowed. Please select fewer files.');
textinputDom.value = '';
return;
}
var fileArr = [];
var uploadfileError = 0;
for (var i = 0; i < fileinputDom.files.length; i++) {
// Updated file size limit to 20MB (20 * 1024 * 1024 = 20971520 bytes)
if (20971520 < fileinputDom.files[i]['size']) {
uploadfileError++;
fileUploadMessage = 'A maximum file size of 20MB is allowed. Please try uploading a smaller file.';
}
var file = fileinputDom.files[i]['name'];
if (file) {
var get_ext = file.split('.');
get_ext = get_ext.reverse();
if (-1 >= $.inArray(get_ext[0].toLowerCase(), exts)) {
uploadfileError++;
fileUploadMessage = 'The type of file you are uploading is not permitted. Please try a different filetype.';
}
}
fileArr.push(fileinputDom.files[i]['name']);
}
var files = fileArr.join(", ");
if (0 === uploadfileError) {
$('#' + fileinput).parents('.field-wrap').removeClass('invalid').addClass('valid');
$('#' + fileinput).parents('.field-container').find('.field-label').append('' + validateMessage + '');
textinputDom.value = files;
} else {
$('#' + fileinput).parents('.field-wrap').removeClass('valid').addClass('invalid');
$('#' + fileinput).parents('.field-container').find('.field-label').append('' + fileUploadMessage + '');
textinputDom.value = '';
}
} else {
if ($('#' + fileinput).parents('.field-wrap').hasClass('required')) {
$('#' + fileinput).parents('.field-wrap').removeClass('valid').addClass('invalid');
$('#' + fileinput).parents('.field-container').find('.field-label').append('' + fileFieldNotValidationMessage + '');
textinputDom.value = '';
}
}
}
};
(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(){var e,n,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function u(t,o,i,a){var u=o&&o.prototype instanceof f?o:f,s=Object.create(u.prototype);return r(s,"_invoke",function(t,r,o){var i,a,u,f=0,s=o||[],l=!1,v={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,r){return i=t,a=0,u=e,v.n=r,c}};function p(t,r){for(a=t,u=r,n=0;!l&&f&&!o&&n3?(o=y===r)&&(u=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=p&&((o=t<2&&pr||r>y)&&(i[4]=t,i[5]=r,v.n=y,a=0))}if(o||t>1)return c;throw l=!0,r}return function(o,s,y){if(f>1)throw TypeError("Generator is already running");for(l&&1===s&&p(s,y),a=s,u=y;(n=a<2?e:u)||!l;){i||(a?a<3?(a>1&&(v.n=-1),p(a,u)):v.n=u:v.v=u);try{if(f=2,i){if(a||(o="next"),n=i[o]){if(!(n=n.call(i,u)))throw TypeError("iterator result is not an object");if(!n.done)return n;u=n.value,a<2&&(a=0)}else 1===a&&(n=i.return)&&n.call(i),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((n=(l=v.n<0)?u:t.call(r,v))!==c)break}catch(t){i=e,a=1,u=t}finally{f=1}}return{value:n,done:l}}}(t,i,a),!0),s}var c={};function f(){}function s(){}function l(){}n=Object.getPrototypeOf;var v=[][i]?n(n([][i]())):(r(n={},i,function(){return this}),n),p=l.prototype=f.prototype=Object.create(v);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,r(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return s.prototype=l,r(p,"constructor",l),r(l,"constructor",s),s.displayName="GeneratorFunction",r(l,a,"GeneratorFunction"),r(p),r(p,a,"Generator"),r(p,i,function(){return this}),r(p,"toString",function(){return"[object Generator]"}),(t=function(){return{w:u,m:y}})()}function r(e,t,n,o){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}r=function(e,t,n,o){function a(t,n){r(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!o,configurable:!o,writable:!o}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},r(e,t,n,o)}function n(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function o(e,t){for(var r=0;r=400)){e.n=3;break}return console.error("Server log error:",{status:o.status,message:o.message,response:o.response}),e.a(2);case 3:console.debug("Server log activity recorded:",o),e.n=5;break;case 4:e.p=4,i=e.v,console.error("Error logging activity:",{error:i.message,details:i});case 5:return e.a(2)}},e,null,[[0,4]])}),a=function(){var e=this,t=arguments;return new Promise(function(r,o){var a=i.apply(e,t);function u(e){n(a,r,o,u,c,"next",e)}function c(e){n(a,r,o,u,c,"throw",e)}u(void 0)})},function(_x){return a.apply(this,arguments)})}],r&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,i,a}())})();;
!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"0",cssEase:"ease",customPaging:function(e,t){return i('').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("