{"version":3,"file":"base-CfSeR33N.js","sources":["../../node_modules/jquery-validation/dist/jquery.validate.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/alert.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/tab.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/popover.js","../../node_modules/bootstrap-breakpoints/src/bootstrap-breakpoints.js","../../static/js/addons/responsive.js","../../static/js/addons/header.js","../../static/js/addons/accordion.js","../../static/js/addons/blog.js","../../node_modules/js-cookie/dist/js.cookie.mjs","../../static/js/addons/cookie-policy.js","../../node_modules/jquery-validation/dist/additional-methods.js","../../static/js/addons/forms/index.js","../../static/js/addons/localscroll.js","../../static/js/addons/modal.js","../../static/js/addons/search.js","../../static/js/addons/tabs.js","../../node_modules/simple-parallax-js/dist/simpleParallax.min.js","../../static/js/addons/parallax.js","../../static/js/base.js"],"sourcesContent":["/*!\n * jQuery Validation Plugin v1.21.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2024 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 = $( \"<input type='hidden'/>\" )\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\tcustomElements: [],\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\t\t\tvar focusListeners = [ \":text\", \"[type='password']\", \"[type='file']\", \"select\", \"textarea\", \"[type='number']\", \"[type='search']\",\n\t\t\t\t\t\t\t\t\"[type='tel']\", \"[type='url']\", \"[type='email']\", \"[type='datetime']\", \"[type='date']\", \"[type='month']\",\n\t\t\t\t\t\t\t\t\"[type='week']\", \"[type='time']\", \"[type='datetime-local']\", \"[type='range']\", \"[type='color']\",\n\t\t\t\t\t\t\t\t\"[type='radio']\", \"[type='checkbox']\", \"[contenteditable]\", \"[type='button']\" ];\n\t\t\tvar clickListeners = [ \"select\", \"option\", \"[type='radio']\", \"[type='checkbox']\" ];\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\", focusListeners.concat( this.settings.customElements ).join( \", \" ), 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\", clickListeners.concat( this.settings.customElements ).join( \", \" ), 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\t\t\t\tselectors = [ \"input\", \"select\", \"textarea\", \"[contenteditable]\" ];\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( selectors.concat( this.settings.customElements ).join( \", \" ) )\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// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\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\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\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\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\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\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\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\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\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\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\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 <input required> 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.valid !== null && previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tprevious.valid = null;\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: this.elementAjaxPort( element ),\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.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//        $.ajaxAbort( port );\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\t$.ajaxAbort( port );\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\t$.ajaxAbort( port );\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}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n","(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node, CommonJS-like\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals (root is window)\n        root.Breakpoint = factory(root.jQuery);\n    }\n}(this, function ($) {\n    var _win = $(window);\n    var _breakpoints;\n    var _currentBreakpoint;\n    var _defaults = {\n        xs: {\n            min: 0,\n            max: 767\n        },\n        sm: {\n            min: 768,\n            max: 991\n        },\n        md: {\n            min: 992,\n            max: 1199\n        },\n        lg: {\n            min: 1200,\n            max: Infinity\n        }\n    };\n\n    var _validate = function (breakpoint) {\n        if (!_breakpoints[breakpoint]) {\n            throw new Error('Invalid breakpoint');\n        }\n    };\n\n    var _onResize = function () {\n        var oldBreakpoint = _currentBreakpoint;\n        // we need to use innerWidth because of scrollbars\n        // this is ie9 +\n        // ie8 support would require to create extra element\n        var viewport = _win[0].innerWidth;\n        for (var breakpoint in _breakpoints) {\n            if (viewport >= _breakpoints[breakpoint].min &&\n                viewport <= _breakpoints[breakpoint].max) {\n                _currentBreakpoint = breakpoint;\n                if (_currentBreakpoint !== oldBreakpoint) {\n                    _win.trigger('change:breakpoint', [_currentBreakpoint, oldBreakpoint || 'xs']);\n                }\n            }\n        }\n    };\n\n    var _initWatch = function () {\n        _win.on('resize.bootstrap.breakpoints', _onResize);\n        _onResize();\n    };\n\n    var getBreakpoints = function () {\n        return _breakpoints;\n    };\n\n    var is = function (breakpoint) {\n        _validate(breakpoint);\n        return (_currentBreakpoint === breakpoint);\n    };\n\n    var current = function () {\n        return _currentBreakpoint;\n    };\n\n    var init = function (breakpoints) {\n        _breakpoints = $.extend(true, _defaults, breakpoints);\n        //making sure that we don't have millions of handlers in case of multiple inits\n        destroy();\n        _initWatch();\n    };\n\n    var destroy = function () {\n        _win.off('resize.bootstrap.breakpoints');\n        _currentBreakpoint = undefined;\n    };\n\n    return {\n        init: init,\n        destroy: destroy,\n        is: is,\n        current: current,\n        getBreakpoints: getBreakpoints\n    };\n}));\n","import Breakpoint from 'bootstrap-breakpoints'\n\nBreakpoint.init()\n\nexport default Breakpoint\n","import $ from 'jquery'\nimport Breakpoint from './responsive'\n\nfunction preventTouchScrolling(element, namespace) {\n  element.on('touchmove.cms.preventscroll.' + namespace, function (e) {\n    e.preventDefault()\n  })\n}\n\nfunction allowTouchScrolling(element, namespace) {\n  element.off('touchmove.cms.preventscroll.' + namespace)\n}\n\nfunction isMobileMenu() {\n  return Breakpoint.is('xs') || Breakpoint.is('sm')\n}\n\nexport function initDesktopMenu() {\n  // when hovering over top level items on large screens - toggle dropdown programmatically\n  const topLevelDropdowns = $('.navbar-main > .navbar-nav > .dropdown')\n\n  topLevelDropdowns.on('mouseenter mouseleave', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    if (e.type === 'mouseenter') {\n      $(this).addClass('open').attr('aria-expanded', true)\n    } else {\n      setTimeout(() => {\n        $(this).removeClass('open').removeAttr('aria-expanded')\n      }, 300)\n    }\n  })\n\n  topLevelDropdowns.on('touchstart click', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    const dropdownToggle = $(this)\n\n    // touchstart normally happens before click,\n    // that's the only reliable way to detect if the device\n    // was operated with touch (normally windows tablets and ipad pro)\n    if (e.type === 'touchstart') {\n      dropdownToggle.data('just-touched', true)\n    }\n    if (e.type === 'click') {\n      if (dropdownToggle.data('just-touched')) {\n        e.preventDefault()\n        dropdownToggle.data('just-touched', false)\n      }\n    }\n  })\n\n  $(window)\n    .on('change:breakpoint', function () {\n      if (isMobileMenu()) {\n        // init dropdowns\n        topLevelDropdowns.find('> a').attr('data-toggle', 'dropdown').dropdown()\n      } else {\n        // At this point we need to destroy dropdowns because it prevents the default\n        // action on the toggle (opening a link), and since\n        // bootstrap doesn't support \"hover\" dropdowns and it doesn't have destroy\n        // method we have to do it manually\n        topLevelDropdowns.find('> a').removeAttr('data-toggle').off('click.bs.dropdown').data('bs.dropdown', null)\n      }\n    })\n    .trigger('change:breakpoint', [Breakpoint.current()])\n}\n\nexport function initMobileMenu() {\n  const toggle = $('.js-header-nav-toggle')\n  const mobileMenu = $('.js-navbar-header')\n  const html = $('html')\n\n  // close button lives outside it's normal place so we toggle it manually\n  mobileMenu.on('show.bs.collapse hide.bs.collapse', () => {\n    toggle.toggleClass('collapsed')\n    html.toggleClass('mobile-menu-open')\n\n    if (html.hasClass('mobile-menu-open')) {\n      preventTouchScrolling(html)\n    } else {\n      allowTouchScrolling(html)\n    }\n  })\n\n  $('.header .dropdown').on('show.bs.dropdown hide.bs.dropdown', (e) => {\n    const currentDropdown = $(e.target)\n\n    // by default bootstrap closes all the dropdowns, so we need to keep parents open\n    // when we are deep in it\n    currentDropdown.parents('.dropdown').addClass('open').attr('aria-expanded', true)\n  })\n\n  $('.megamenu-links-title').on('click', (e) => {\n    if (!isMobileMenu()) {\n      e.stopPropagation()\n    }\n  })\n\n  // when opening other header dropdowns - hide the mobile menu\n  $('.country-picker.dropdown, .header-top-menu-waffle.dropdown, .header-search-form.dropdown').on(\n    'show.bs.dropdown',\n    () => {\n      mobileMenu.collapse('hide')\n    }\n  )\n\n  // noop click handler so ios bubbles the event\n  $('.megamenu-mobile-title').on('click', $.noop)\n\n  $('.navbar-collapse').on('touchmove', (e) => {\n    if (html.hasClass('mobile-menu-open')) {\n      e.stopPropagation()\n    }\n  })\n}\n","import { scrollTo } from './utils'\n\nexport function initAccordions(selector = '.panel .panel-collapse') {\n  $(selector).each((i, el) => {\n    $(el).on('shown.bs.collapse', (e) => {\n      const { top } = $(e.currentTarget).closest('.panel').offset()\n      let offset = 0\n\n      if ($('html').hasClass('cms-toolbar-expanded')) {\n        offset = 45\n      }\n\n      scrollTo(top - offset)\n    })\n  })\n}\n","import $ from 'jquery'\n\nfunction initPostsByAuthorLink() {\n  const link = $('.js-blog-filter-expand-link')\n\n  link.on('click', (e) => {\n    e.preventDefault()\n    e.stopPropagation()\n\n    $(e.target).hide().prev('ul').children('li').show()\n  })\n}\n\nexport function initBlog() {\n  initPostsByAuthorLink()\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\n// @TODO: Not used, can go away\nexport function initCookiePolicy() {\n  if (Cookies.get('shown-cookie-policy') && !window.location.href.match(/show-cookie-policy/)) {\n    return\n  }\n\n  const policy = $('.js-cookie-policy')\n  const close = $('.js-cookie-policy-close')\n\n  policy.show()\n  Cookies.set('shown-cookie-policy', 1)\n\n  close.on('click', (e) => {\n    e.preventDefault()\n\n    $('.js-cookie-policy').remove()\n  })\n}\n","/*!\n * jQuery Validation Plugin v1.21.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2024 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"./jquery.validate\"], 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( function() {\n\n\tfunction stripHtml( value ) {\n\n\t\t// Remove html tags and space chars\n\t\treturn value.replace( /<.[^<>]*?>/g, \" \" ).replace( /&nbsp;|&#160;/gi, \" \" )\n\n\t\t// Remove punctuation\n\t\t.replace( /[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g, \"\" );\n\t}\n\n\t$.validator.addMethod( \"maxWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length <= params;\n\t}, $.validator.format( \"Please enter {0} words or less.\" ) );\n\n\t$.validator.addMethod( \"minWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length >= params;\n\t}, $.validator.format( \"Please enter at least {0} words.\" ) );\n\n\t$.validator.addMethod( \"rangeWords\", function( value, element, params ) {\n\t\tvar valueStripped = stripHtml( value ),\n\t\t\tregex = /\\b\\w+\\b/g;\n\t\treturn this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];\n\t}, $.validator.format( \"Please enter between {0} and {1} words.\" ) );\n\n}() );\n\n/**\n * This is used in the United States to process payments, deposits,\n * or transfers using the Automated Clearing House (ACH) or Fedwire\n * systems. A very common use case would be to validate a form for\n * an ACH bill payment.\n */\n$.validator.addMethod( \"abaRoutingNumber\", function( value ) {\n\tvar checksum = 0;\n\tvar tokens = value.split( \"\" );\n\tvar length = tokens.length;\n\n\t// Length Check\n\tif ( length !== 9 ) {\n\t\treturn false;\n\t}\n\n\t// Calc the checksum\n\t// https://en.wikipedia.org/wiki/ABA_routing_transit_number\n\tfor ( var i = 0; i < length; i += 3 ) {\n\t\tchecksum +=\tparseInt( tokens[ i ], 10 )     * 3 +\n\t\t\t\t\tparseInt( tokens[ i + 1 ], 10 ) * 7 +\n\t\t\t\t\tparseInt( tokens[ i + 2 ], 10 );\n\t}\n\n\t// If not zero and divisible by 10 then valid\n\tif ( checksum !== 0 && checksum % 10 === 0 ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}, \"Please enter a valid routing number.\" );\n\n// Accept a value from a file input based on a required mimetype\n$.validator.addMethod( \"accept\", function( value, element, param ) {\n\n\t// Split mime on commas in case we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace( /\\s/g, \"\" ) : \"image/*\",\n\t\toptionalValue = this.optional( element ),\n\t\ti, file, regex;\n\n\t// Element is optional\n\tif ( optionalValue ) {\n\t\treturn optionalValue;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\n\t\t// Escape string to be used in the regex\n\t\t// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n\t\t// Escape also \"/*\" as \"/.*\" as a wildcard\n\t\ttypeParam = typeParam\n\t\t\t\t.replace( /[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\" )\n\t\t\t\t.replace( /,/g, \"|\" )\n\t\t\t\t.replace( /\\/\\*/g, \"/.*\" );\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif ( element.files && element.files.length ) {\n\t\t\tregex = new RegExp( \".?(\" + typeParam + \")$\", \"i\" );\n\t\t\tfor ( i = 0; i < element.files.length; i++ ) {\n\t\t\t\tfile = element.files[ i ];\n\n\t\t\t\t// Grab the mimetype from the loaded file, verify it matches\n\t\t\t\tif ( !file.type.match( regex ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, $.validator.format( \"Please enter a value with a valid mimetype.\" ) );\n\n$.validator.addMethod( \"alphanumeric\", function( value, element ) {\n\treturn this.optional( element ) || /^\\w+$/i.test( value );\n}, \"Letters, numbers, and underscores only please.\" );\n\n/*\n * Dutch bank account numbers (not 'giro' numbers) have 9 digits\n * and pass the '11 check'.\n * We accept the notation with spaces, as that is common.\n * acceptable: 123456789 or 12 34 56 789\n */\n$.validator.addMethod( \"bankaccountNL\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {\n\t\treturn false;\n\t}\n\n\t// Now '11 check'\n\tvar account = value.replace( / /g, \"\" ), // Remove spaces\n\t\tsum = 0,\n\t\tlen = account.length,\n\t\tpos, factor, digit;\n\tfor ( pos = 0; pos < len; pos++ ) {\n\t\tfactor = len - pos;\n\t\tdigit = account.substring( pos, pos + 1 );\n\t\tsum = sum + factor * digit;\n\t}\n\treturn sum % 11 === 0;\n}, \"Please specify a valid bank account number.\" );\n\n$.validator.addMethod( \"bankorgiroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) ||\n\t\t\t( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||\n\t\t\t( $.validator.methods.giroaccountNL.call( this, value, element ) );\n}, \"Please specify a valid bank or giro account number.\" );\n\n/**\n * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.\n *\n * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n *\n * BIC definition in detail:\n * - First 4 characters - bank code (only letters)\n * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)\n * - Next 2 characters - location code (letters and digits)\n *   a. shall not start with '0' or '1'\n *   b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)\n * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)\n */\n$.validator.addMethod( \"bic\", function( value, element ) {\n    return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );\n}, \"Please specify a valid BIC code.\" );\n\n/*\n * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities\n * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal\n *\n * Spanish CIF structure:\n *\n * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]\n *\n * Where:\n *\n * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]\n * P: 2 characters. Province.\n * N: 5 characters. Secuencial Number within the province.\n * C: 1 character. Control Digit: [0-9A-J].\n *\n * [ T ]: Kind of Organizations. Possible values:\n *\n *   A. Corporations\n *   B. LLCs\n *   C. General partnerships\n *   D. Companies limited partnerships\n *   E. Communities of goods\n *   F. Cooperative Societies\n *   G. Associations\n *   H. Communities of homeowners in horizontal property regime\n *   J. Civil Societies\n *   K. Old format\n *   L. Old format\n *   M. Old format\n *   N. Nonresident entities\n *   P. Local authorities\n *   Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions\n *   R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)\n *   S. Organs of State Administration and regions\n *   V. Agrarian Transformation\n *   W. Permanent establishments of non-resident in Spain\n *\n * [ C ]: Control Digit. It can be a number or a letter depending on T value:\n * [ T ]  -->  [ C ]\n * ------    ----------\n *   A         Number\n *   B         Number\n *   E         Number\n *   H         Number\n *   K         Letter\n *   P         Letter\n *   Q         Letter\n *   S         Letter\n *\n */\n$.validator.addMethod( \"cifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/gi );\n\tvar letter  = value.substring( 0, 1 ), // [ T ]\n\t\tnumber  = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]\n\t\tcontrol = value.substring( 8, 9 ), // [ C ]\n\t\tall_sum = 0,\n\t\teven_sum = 0,\n\t\todd_sum = 0,\n\t\ti, n,\n\t\tcontrol_digit,\n\t\tcontrol_letter;\n\n\tfunction isOdd( n ) {\n\t\treturn n % 2 === 0;\n\t}\n\n\t// Quick format test\n\tif ( value.length !== 9 || !cifRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tfor ( i = 0; i < number.length; i++ ) {\n\t\tn = parseInt( number[ i ], 10 );\n\n\t\t// Odd positions\n\t\tif ( isOdd( i ) ) {\n\n\t\t\t// Odd positions are multiplied first.\n\t\t\tn *= 2;\n\n\t\t\t// If the multiplication is bigger than 10 we need to adjust\n\t\t\todd_sum += n < 10 ? n : n - 9;\n\n\t\t// Even positions\n\t\t// Just sum them\n\t\t} else {\n\t\t\teven_sum += n;\n\t\t}\n\t}\n\n\tall_sum = even_sum + odd_sum;\n\tcontrol_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();\n\tcontrol_digit = parseInt( control_digit, 10 ) > 9 ? \"0\" : control_digit;\n\tcontrol_letter = \"JABCDEFGHI\".substr( control_digit, 1 ).toString();\n\n\t// Control must be a digit\n\tif ( letter.match( /[ABEH]/ ) ) {\n\t\treturn control === control_digit;\n\n\t// Control must be a letter\n\t} else if ( letter.match( /[KPQS]/ ) ) {\n\t\treturn control === control_letter;\n\t}\n\n\t// Can be either\n\treturn control === control_digit || control === control_letter;\n\n}, \"Please specify a valid CIF number.\" );\n\n/*\n * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number.\n * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnhBR\", function( value ) {\n\n  // Removing special characters from value\n  value = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n  // Checking value to have 11 digits only\n  if ( value.length !== 11 ) {\n    return false;\n  }\n\n  var sum = 0, dsc = 0, firstChar,\n\t\tfirstCN, secondCN, i, j, v;\n\n  firstChar = value.charAt( 0 );\n\n  if ( new Array( 12 ).join( firstChar ) === value ) {\n    return false;\n  }\n\n  // Step 1 - using first Check Number:\n  for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  firstCN = sum % 11;\n  if ( firstCN >= 10 ) {\n    firstCN = 0;\n    dsc = 2;\n  }\n\n  sum = 0;\n  for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  secondCN = sum % 11;\n  if ( secondCN >= 10 ) {\n    secondCN = 0;\n  } else {\n    secondCN = secondCN - dsc;\n  }\n\n  return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) );\n\n}, \"Please specify a valid CNH number.\" );\n\n/*\n * Brazillian value number (Cadastrado de Pessoas Juridica).\n * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnpjBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing no number\n\tvalue = value.replace( /[^\\d]+/g, \"\" );\n\n\t// Checking value to have 14 digits only\n\tif ( value.length !== 14 ) {\n\t\treturn false;\n\t}\n\n\t// Elimina values invalidos conhecidos\n\tif ( value === \"00000000000000\" ||\n\t\tvalue === \"11111111111111\" ||\n\t\tvalue === \"22222222222222\" ||\n\t\tvalue === \"33333333333333\" ||\n\t\tvalue === \"44444444444444\" ||\n\t\tvalue === \"55555555555555\" ||\n\t\tvalue === \"66666666666666\" ||\n\t\tvalue === \"77777777777777\" ||\n\t\tvalue === \"88888888888888\" ||\n\t\tvalue === \"99999999999999\" ) {\n\t\treturn false;\n\t}\n\n\t// Valida DVs\n\tvar tamanho = ( value.length - 2 );\n\tvar numeros = value.substring( 0, tamanho );\n\tvar digitos = value.substring( tamanho );\n\tvar soma = 0;\n\tvar pos = tamanho - 7;\n\n\tfor ( var i = tamanho; i >= 1; i-- ) {\n\t\tsoma += numeros.charAt( tamanho - i ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tvar resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\ttamanho = tamanho + 1;\n\tnumeros = value.substring( 0, tamanho );\n\tsoma = 0;\n\tpos = tamanho - 7;\n\n\tfor ( var il = tamanho; il >= 1; il-- ) {\n\t\tsoma += numeros.charAt( tamanho - il ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tresultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n\n}, \"Please specify a CNPJ value number.\" );\n\n/*\n * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.\n * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cpfBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\tvar sum = 0,\n\t\tfirstCN, secondCN, checkResult, i;\n\n\tfirstCN = parseInt( value.substring( 9, 10 ), 10 );\n\tsecondCN = parseInt( value.substring( 10, 11 ), 10 );\n\n\tcheckResult = function( sum, cn ) {\n\t\tvar result = ( sum * 10 ) % 11;\n\t\tif ( ( result === 10 ) || ( result === 11 ) ) {\n\t\t\tresult = 0;\n\t\t}\n\t\treturn ( result === cn );\n\t};\n\n\t// Checking for dump data\n\tif ( value === \"\" ||\n\t\tvalue === \"00000000000\" ||\n\t\tvalue === \"11111111111\" ||\n\t\tvalue === \"22222222222\" ||\n\t\tvalue === \"33333333333\" ||\n\t\tvalue === \"44444444444\" ||\n\t\tvalue === \"55555555555\" ||\n\t\tvalue === \"66666666666\" ||\n\t\tvalue === \"77777777777\" ||\n\t\tvalue === \"88888888888\" ||\n\t\tvalue === \"99999999999\"\n\t) {\n\t\treturn false;\n\t}\n\n\t// Step 1 - using first Check Number:\n\tfor ( i = 1; i <= 9; i++ ) {\n\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );\n\t}\n\n\t// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:\n\tif ( checkResult( sum, firstCN ) ) {\n\t\tsum = 0;\n\t\tfor ( i = 1; i <= 10; i++ ) {\n\t\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );\n\t\t}\n\t\treturn checkResult( sum, secondCN );\n\t}\n\treturn false;\n\n}, \"Please specify a valid CPF number.\" );\n\n// https://jqueryvalidation.org/creditcard-method/\n// based on https://en.wikipedia.org/wiki/Luhn_algorithm\n$.validator.addMethod( \"creditcard\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn \"dependency-mismatch\";\n\t}\n\n\t// Accept only spaces, digits and dashes\n\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvar nCheck = 0,\n\t\tnDigit = 0,\n\t\tbEven = false,\n\t\tn, cDigit;\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\t// Basing min and max length on\n\t// https://dev.ean.com/general-info/valid-card-types/\n\tif ( value.length < 13 || value.length > 19 ) {\n\t\treturn false;\n\t}\n\n\tfor ( n = value.length - 1; n >= 0; n-- ) {\n\t\tcDigit = value.charAt( n );\n\t\tnDigit = parseInt( cDigit, 10 );\n\t\tif ( bEven ) {\n\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\tnDigit -= 9;\n\t\t\t}\n\t\t}\n\n\t\tnCheck += nDigit;\n\t\tbEven = !bEven;\n\t}\n\n\treturn ( nCheck % 10 ) === 0;\n}, \"Please enter a valid credit card number.\" );\n\n/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\n */\n$.validator.addMethod( \"creditcardtypes\", function( value, element, param ) {\n\tif ( /[^0-9\\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\tvar validTypes = 0x0000;\n\n\tif ( param.mastercard ) {\n\t\tvalidTypes |= 0x0001;\n\t}\n\tif ( param.visa ) {\n\t\tvalidTypes |= 0x0002;\n\t}\n\tif ( param.amex ) {\n\t\tvalidTypes |= 0x0004;\n\t}\n\tif ( param.dinersclub ) {\n\t\tvalidTypes |= 0x0008;\n\t}\n\tif ( param.enroute ) {\n\t\tvalidTypes |= 0x0010;\n\t}\n\tif ( param.discover ) {\n\t\tvalidTypes |= 0x0020;\n\t}\n\tif ( param.jcb ) {\n\t\tvalidTypes |= 0x0040;\n\t}\n\tif ( param.unknown ) {\n\t\tvalidTypes |= 0x0080;\n\t}\n\tif ( param.all ) {\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\t}\n\tif ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub\n\t\treturn value.length === 14;\n\t}\n\tif ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0080 ) { // Unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\" );\n\n/**\n * Validates currencies with any given symbols by @jameslouiz\n * Symbols can be optional or required. Symbols required by default\n *\n * Usage examples:\n *  currency: [\"£\", false] - Use false for soft currency validation\n *  currency: [\"$\", false]\n *  currency: [\"RM\", false] - also works with text based symbols such as \"RM\" - Malaysia Ringgit etc\n *\n *  <input class=\"currencyInput\" name=\"currencyInput\">\n *\n * Soft symbol checking\n *  currencyInput: {\n *     currency: [\"$\", false]\n *  }\n *\n * Strict symbol checking (default)\n *  currencyInput: {\n *     currency: \"$\"\n *     //OR\n *     currency: [\"$\", true]\n *  }\n *\n * Multiple Symbols\n *  currencyInput: {\n *     currency: \"$,£,¢\"\n *  }\n */\n$.validator.addMethod( \"currency\", function( value, element, param ) {\n    var isParamString = typeof param === \"string\",\n        symbol = isParamString ? param : param[ 0 ],\n        soft = isParamString ? true : param[ 1 ],\n        regex;\n\n    symbol = symbol.replace( /,/g, \"\" );\n    symbol = soft ? symbol + \"]\" : symbol + \"]?\";\n    regex = \"^[\" + symbol + \"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\";\n    regex = new RegExp( regex );\n    return this.optional( element ) || regex.test( value );\n\n}, \"Please specify a valid currency.\" );\n\n$.validator.addMethod( \"dateFA\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );\n}, $.validator.messages.date );\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example $.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example $.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example $.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name $.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"dateITA\", function( value, element ) {\n\tvar check = false,\n\t\tre = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\n\t\tadata, gg, mm, aaaa, xdata;\n\tif ( re.test( value ) ) {\n\t\tadata = value.split( \"/\" );\n\t\tgg = parseInt( adata[ 0 ], 10 );\n\t\tmm = parseInt( adata[ 1 ], 10 );\n\t\taaaa = parseInt( adata[ 2 ], 10 );\n\t\txdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );\n\t\tif ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {\n\t\t\tcheck = true;\n\t\t} else {\n\t\t\tcheck = false;\n\t\t}\n\t} else {\n\t\tcheck = false;\n\t}\n\treturn this.optional( element ) || check;\n}, $.validator.messages.date );\n\n$.validator.addMethod( \"dateNL\", function( value, element ) {\n\treturn this.optional( element ) || /^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test( value );\n}, $.validator.messages.date );\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\n$.validator.addMethod( \"extension\", function( value, element, param ) {\n\tparam = typeof param === \"string\" ? param.replace( /,/g, \"|\" ) : \"png|jpe?g|gif\";\n\treturn this.optional( element ) || value.match( new RegExp( \"\\\\.(\" + param + \")$\", \"i\" ) );\n}, $.validator.format( \"Please enter a value with a valid extension.\" ) );\n\n/**\n * Dutch giro account numbers (not bank numbers) have max 7 digits\n */\n$.validator.addMethod( \"giroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[0-9]{1,7}$/.test( value );\n}, \"Please specify a valid giro account number.\" );\n\n$.validator.addMethod( \"greaterThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThan-blur\" ).length ) {\n        target.addClass( \"validate-greaterThan-blur\" ).on( \"blur.validate-greaterThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value > target.val();\n}, \"Please enter a greater value.\" );\n\n$.validator.addMethod( \"greaterThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-greaterThanEqual-blur\" ).on( \"blur.validate-greaterThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value >= target.val();\n}, \"Please enter a greater value.\" );\n\n/**\n * IBAN is the international bank account number.\n * It has a country - specific format, that is checked here too\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n */\n$.validator.addMethod( \"iban\", function( value, element ) {\n\n\t// Some quick simple tests to prevent needless work\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Remove spaces and to upper case\n\tvar iban = value.replace( / /g, \"\" ).toUpperCase(),\n\t\tibancheckdigits = \"\",\n\t\tleadingZeroes = true,\n\t\tcRest = \"\",\n\t\tcOperator = \"\",\n\t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\n\n\t// Check for IBAN code length.\n\t// It contains:\n\t// country code ISO 3166-1 - two letters,\n\t// two check digits,\n\t// Basic Bank Account Number (BBAN) - up to 30 chars\n\tvar minimalIBANlength = 5;\n\tif ( iban.length < minimalIBANlength ) {\n\t\treturn false;\n\t}\n\n\t// Check the country code and find the country specific format\n\tcountrycode = iban.substring( 0, 2 );\n\tbbancountrypatterns = {\n\t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\n\t\t\"AT\": \"\\\\d{16}\",\n\t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\n\t\t\"BE\": \"\\\\d{12}\",\n\t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\n\t\t\"BA\": \"\\\\d{16}\",\n\t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\n\t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\n\t\t\"CR\": \"\\\\d{17}\",\n\t\t\"HR\": \"\\\\d{17}\",\n\t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"CZ\": \"\\\\d{20}\",\n\t\t\"DK\": \"\\\\d{14}\",\n\t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\n\t\t\"EE\": \"\\\\d{16}\",\n\t\t\"FO\": \"\\\\d{14}\",\n\t\t\"FI\": \"\\\\d{14}\",\n\t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\n\t\t\"DE\": \"\\\\d{18}\",\n\t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\n\t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\n\t\t\"GL\": \"\\\\d{14}\",\n\t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\n\t\t\"HU\": \"\\\\d{24}\",\n\t\t\"IS\": \"\\\\d{22}\",\n\t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\n\t\t\"IL\": \"\\\\d{19}\",\n\t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\n\t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\n\t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\n\t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"LT\": \"\\\\d{16}\",\n\t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\n\t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\n\t\t\"MR\": \"\\\\d{23}\",\n\t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\n\t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\n\t\t\"ME\": \"\\\\d{18}\",\n\t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\n\t\t\"NO\": \"\\\\d{11}\",\n\t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\n\t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\n\t\t\"PL\": \"\\\\d{24}\",\n\t\t\"PT\": \"\\\\d{21}\",\n\t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\n\t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\n\t\t\"RS\": \"\\\\d{18}\",\n\t\t\"SK\": \"\\\\d{20}\",\n\t\t\"SI\": \"\\\\d{15}\",\n\t\t\"ES\": \"\\\\d{20}\",\n\t\t\"SE\": \"\\\\d{20}\",\n\t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"TN\": \"\\\\d{20}\",\n\t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\n\t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\n\t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\n\t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\n\t};\n\n\tbbanpattern = bbancountrypatterns[ countrycode ];\n\n\t// As new countries will start using IBAN in the\n\t// future, we only check if the countrycode is known.\n\t// This prevents false negatives, while almost all\n\t// false positives introduced by this, will be caught\n\t// by the checksum validation below anyway.\n\t// Strict checking should return FALSE for unknown\n\t// countries.\n\tif ( typeof bbanpattern !== \"undefined\" ) {\n\t\tibanregexp = new RegExp( \"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\" );\n\t\tif ( !( ibanregexp.test( iban ) ) ) {\n\t\t\treturn false; // Invalid country specific format\n\t\t}\n\t}\n\n\t// Now check the checksum, first convert to digits\n\tibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );\n\tfor ( i = 0; i < ibancheck.length; i++ ) {\n\t\tcharAt = ibancheck.charAt( i );\n\t\tif ( charAt !== \"0\" ) {\n\t\t\tleadingZeroes = false;\n\t\t}\n\t\tif ( !leadingZeroes ) {\n\t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf( charAt );\n\t\t}\n\t}\n\n\t// Calculate the result of: ibancheckdigits % 97\n\tfor ( p = 0; p < ibancheckdigits.length; p++ ) {\n\t\tcChar = ibancheckdigits.charAt( p );\n\t\tcOperator = \"\" + cRest + \"\" + cChar;\n\t\tcRest = cOperator % 97;\n\t}\n\treturn cRest === 1;\n}, \"Please specify a valid IBAN.\" );\n\n$.validator.addMethod( \"integer\", function( value, element ) {\n\treturn this.optional( element ) || /^-?\\d+$/.test( value );\n}, \"A positive or negative non-decimal number please.\" );\n\n$.validator.addMethod( \"ipv4\", function( value, element ) {\n\treturn this.optional( element ) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test( value );\n}, \"Please enter a valid IP v4 address.\" );\n\n$.validator.addMethod( \"ipv6\", function( value, element ) {\n\treturn this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );\n}, \"Please enter a valid IP v6 address.\" );\n\n$.validator.addMethod( \"lessThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThan-blur\" ).length ) {\n        target.addClass( \"validate-lessThan-blur\" ).on( \"blur.validate-lessThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value < target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lessThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-lessThanEqual-blur\" ).on( \"blur.validate-lessThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value <= target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lettersonly\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z]+$/i.test( value );\n}, \"Letters only please.\" );\n\n$.validator.addMethod( \"letterswithbasicpunc\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z\\-.,()'\"\\s]+$/i.test( value );\n}, \"Letters or punctuation only please.\" );\n\n// Limit the number of files in a FileList.\n$.validator.addMethod( \"maxfiles\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length > param ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Please select no more than {0} files.\" ) );\n\n// Limit the size of each individual file in a FileList.\n$.validator.addMethod( \"maxsize\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\tif ( element.files[ i ].size > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"File size must not exceed {0} bytes each.\" ) );\n\n// Limit the size of all files in a FileList.\n$.validator.addMethod( \"maxsizetotal\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tvar totalSize = 0;\n\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\ttotalSize += element.files[ i ].size;\n\t\t\t\tif ( totalSize > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Total size of all files must not exceed {0} bytes.\" ) );\n\n\n$.validator.addMethod( \"mobileNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)6((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"mobileRU\", function( phone_number, element ) {\n\tvar ruPhone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || ruPhone_number.length > 9 && /^((\\+7|7|8)+([0-9]){10})$/.test( ruPhone_number );\n}, \"Please specify a valid mobile number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"mobileUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/ );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"netmask\", function( value, element ) {\n    return this.optional( element ) || /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)/i.test( value );\n}, \"Please enter a valid netmask.\" );\n\n/*\n * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish\n * authorities to any foreigner.\n *\n * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal\n * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to\n * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.\n */\n$.validator.addMethod( \"nieES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );\n\tvar validChars = \"TRWAGMYFPDXBNJZSQVHLCKET\",\n\t\tletter = value.substr( value.length - 1 ).toUpperCase(),\n\t\tnumber;\n\n\tvalue = value.toString().toUpperCase();\n\n\t// Quick format test\n\tif ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\t// X means same number\n\t// Y means number + 10000000\n\t// Z means number + 20000000\n\tvalue = value.replace( /^[X]/, \"0\" )\n\t\t.replace( /^[Y]/, \"1\" )\n\t\t.replace( /^[Z]/, \"2\" );\n\n\tnumber = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );\n\n\treturn validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;\n\n}, \"Please specify a valid NIE number.\" );\n\n/*\n * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals\n */\n$.validator.addMethod( \"nifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvalue = value.toUpperCase();\n\n\t// Basic format test\n\tif ( !value.match( \"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\" ) ) {\n\t\treturn false;\n\t}\n\n\t// Test NIF\n\tif ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {\n\t\treturn ( \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );\n\t}\n\n\t// Test specials NIF (starts with K, L or M)\n\tif ( /^[KLM]{1}/.test( value ) ) {\n\t\treturn ( value[ 8 ] === \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 1 ) % 23 ) );\n\t}\n\n\treturn false;\n\n}, \"Please specify a valid NIF number.\" );\n\n/*\n * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies\n */\n$.validator.addMethod( \"nipPL\", function( value ) {\n\t\"use strict\";\n\n\tvalue = value.replace( /[^0-9]/g, \"\" );\n\n\tif ( value.length !== 10 ) {\n\t\treturn false;\n\t}\n\n\tvar arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];\n\tvar intSum = 0;\n\tfor ( var i = 0; i < 9; i++ ) {\n\t\tintSum += arrSteps[ i ] * value[ i ];\n\t}\n\tvar int2 = intSum % 11;\n\tvar intControlNr = ( int2 === 10 ) ? 0 : int2;\n\n\treturn ( intControlNr === parseInt( value[ 9 ], 10 ) );\n}, \"Please specify a valid NIP number.\" );\n\n/**\n * Created for project jquery-validation.\n * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a\n * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers\n * that are being used for validation.\n * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça\n * @author Cleiton da Silva Mendonça <cleiton.mendonca@gmail.com>\n * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça\n * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça\n */\n$.validator.addMethod( \"nisBR\", function( value ) {\n\tvar number;\n\tvar cn;\n\tvar sum = 0;\n\tvar dv;\n\tvar count;\n\tvar multiplier;\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\t//Get check number of value\n\tcn = parseInt( value.substring( 10, 11 ), 10 );\n\n\t//Get number with 10 digits of the value\n\tnumber = parseInt( value.substring( 0, 10 ), 10 );\n\n\tfor ( count = 2; count < 12; count++ ) {\n\t\tmultiplier = count;\n\t\tif ( count === 10 ) {\n\t\t\tmultiplier = 2;\n\t\t}\n\t\tif ( count === 11 ) {\n\t\t\tmultiplier = 3;\n\t\t}\n\t\tsum += ( ( number % 10 ) * multiplier );\n\t\tnumber = parseInt( number / 10, 10 );\n\t}\n\tdv = ( sum % 11 );\n\n\tif ( dv > 1 ) {\n\t\tdv = ( 11 - dv );\n\t} else {\n\t\tdv = 0;\n\t}\n\n\tif ( cn === dv ) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}, \"Please specify a valid NIS/PIS number.\" );\n\n$.validator.addMethod( \"notEqualTo\", function( value, element, param ) {\n\treturn this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );\n}, \"Please enter a different value, values must not be the same.\" );\n\n$.validator.addMethod( \"nowhitespace\", function( value, element ) {\n\treturn this.optional( element ) || /^\\S+$/i.test( value );\n}, \"No white space please.\" );\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name $.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\n$.validator.addMethod( \"pattern\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( typeof param === \"string\" ) {\n\t\tparam = new RegExp( \"^(?:\" + param + \")$\" );\n\t}\n\treturn param.test( value );\n}, \"Invalid format.\" );\n\n/**\n * Dutch phone numbers have 10 digits (or 11 and start with +31).\n */\n$.validator.addMethod( \"phoneNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Polish telephone numbers have 9 digits.\n *\n * Mobile phone numbers starts with following digits:\n * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88.\n *\n * Fixed-line numbers starts with area codes:\n * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33,\n * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61,\n * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84,\n * 85, 86, 87, 89, 91, 94, 95.\n *\n * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39.\n *\n * Excludes intelligent networks (premium rate, shared cost, free phone numbers).\n *\n * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en\n */\n$.validator.addMethod( \"phonePL\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\tvar regexp = /^(?:(?:(?:\\+|00)?48)|(?:\\(\\+?48\\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\\d{7}$/;\n\treturn this.optional( element ) || regexp.test( phone_number );\n}, \"Please specify a valid phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n\n// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\n$.validator.addMethod( \"phonesUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/ );\n}, \"Please specify a valid uk phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"phoneUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/ );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\n$.validator.addMethod( \"phoneUS\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]\\d{2}-?\\d{4}$/ );\n}, \"Please specify a valid phone number.\" );\n\n/*\n* Valida CEPs do brasileiros:\n*\n* Formatos aceitos:\n* 99999-999\n* 99.999-999\n* 99999999\n*/\n$.validator.addMethod( \"postalcodeBR\", function( cep_value, element ) {\n\treturn this.optional( element ) || /^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test( cep_value );\n}, \"Informe um CEP válido.\" );\n\n/**\n * Matches a valid Canadian Postal Code\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H 0H0\", element )\n * @result true\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H0H0\", element )\n * @result false\n *\n * @name jQuery.validator.methods.postalCodeCA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"postalCodeCA\", function( value, element ) {\n\treturn this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test( value );\n}, \"Please specify a valid postal code.\" );\n\n/* Matches Italian postcode (CAP) */\n$.validator.addMethod( \"postalcodeIT\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n$.validator.addMethod( \"postalcodeNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)\n$.validator.addMethod( \"postcodeUK\", function( value, element ) {\n\treturn this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test( value );\n}, \"Please specify a valid UK postcode.\" );\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\n *\t...will validate unless at least one of them is filled.\n *\n * partnumber:\t{require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n */\n$.validator.addMethod( \"require_from_group\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_req_grp\" ) ? $fieldsFirst.data( \"valid_req_grp\" ) : $.extend( {}, this ),\n\t\tisValid = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_req_grp\", validator );\n\n\t// If element isn't being validated, run each require_from_group field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please fill at least {0} of these fields.\" ) );\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\t<input class=\"productinfo\" name=\"color\">\n *\n *\t...will validate unless either at least two of them are filled,\n *\tOR none of them are.\n *\n * partnumber:\t{skip_or_fill_minimum: [2,\".productinfo\"]},\n * description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:\t\t{skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n *\n */\n$.validator.addMethod( \"skip_or_fill_minimum\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_skip\" ) ? $fieldsFirst.data( \"valid_skip\" ) : $.extend( {}, this ),\n\t\tnumberFilled = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length,\n\t\tisValid = numberFilled === 0 || numberFilled >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_skip\", validator );\n\n\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please either skip these fields or fill at least {0} of them.\" ) );\n\n/* Validates US States and/or Territories by @jdforsythe\n * Can be case insensitive or require capitalization - default is case insensitive\n * Can include US Territories or not - default does not\n * Can include US Military postal abbreviations (AA, AE, AP) - default does not\n *\n * Note: \"States\" always includes DC (District of Colombia)\n *\n * Usage examples:\n *\n *  This is the default - case insensitive, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false,\n *     includeTerritories: false,\n *     includeMilitary: false\n *  }\n *\n *  Only allow capital letters, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false\n *  }\n *\n *  Case insensitive, include territories but not military zones\n *  stateInput: {\n *     includeTerritories: true\n *  }\n *\n *  Only allow capital letters, include territories and military zones\n *  stateInput: {\n *     caseSensitive: true,\n *     includeTerritories: true,\n *     includeMilitary: true\n *  }\n *\n */\n$.validator.addMethod( \"stateUS\", function( value, element, options ) {\n\tvar isDefault = typeof options === \"undefined\",\n\t\tcaseSensitive = ( isDefault || typeof options.caseSensitive === \"undefined\" ) ? false : options.caseSensitive,\n\t\tincludeTerritories = ( isDefault || typeof options.includeTerritories === \"undefined\" ) ? false : options.includeTerritories,\n\t\tincludeMilitary = ( isDefault || typeof options.includeMilitary === \"undefined\" ) ? false : options.includeMilitary,\n\t\tregex;\n\n\tif ( !includeTerritories && !includeMilitary ) {\n\t\tregex = \"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t} else if ( includeTerritories && includeMilitary ) {\n\t\tregex = \"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else if ( includeTerritories ) {\n\t\tregex = \"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else {\n\t\tregex = \"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t}\n\n\tregex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, \"i\" );\n\treturn this.optional( element ) || regex.test( value );\n}, \"Please specify a valid state.\" );\n\n// TODO check if value starts with <, otherwise don't try stripping anything\n$.validator.addMethod( \"strippedminlength\", function( value, element, param ) {\n\treturn $( value ).text().length >= param;\n}, $.validator.format( \"Please enter at least {0} characters.\" ) );\n\n$.validator.addMethod( \"time\", function( value, element ) {\n\treturn this.optional( element ) || /^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test( value );\n}, \"Please enter a valid time, between 00:00 and 23:59.\" );\n\n$.validator.addMethod( \"time12h\", function( value, element ) {\n\treturn this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test( value );\n}, \"Please enter a valid time in 12-hour am/pm format.\" );\n\n// Same as url, but TLD is optional\n$.validator.addMethod( \"url2\", function( value, element ) {\n\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,}\\.?)|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff])|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62}\\.)))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n}, $.validator.messages.url );\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name $.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"vinUS\", function( v ) {\n    if ( v.length !== 17 ) {\n        return false;\n    }\n\n    var LL = [ \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"J\", \"K\", \"L\", \"M\", \"N\", \"P\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\" ],\n        VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],\n        FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],\n        rs = 0,\n        i, n, d, f, cd, cdv;\n\n    for ( i = 0; i < 17; i++ ) {\n        f = FL[ i ];\n        d = v.slice( i, i + 1 );\n        if ( isNaN( d ) ) {\n            d = d.toUpperCase();\n            n = VL[ LL.indexOf( d ) ];\n        } else {\n            n = parseInt( d, 10 );\n        }\n        if ( i === 8 )\n        {\n            cdv = n;\n            if ( d === \"X\" ) {\n                cdv = 10;\n            }\n        }\n        rs += n * f;\n    }\n    cd = rs % 11;\n    if ( cd === cdv ) {\n        return true;\n    }\n    return false;\n}, \"The specified vehicle identification number (VIN) is invalid.\" );\n\n$.validator.addMethod( \"zipcodeUS\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}(-\\d{4})?$/.test( value );\n}, \"The specified US ZIP Code is invalid.\" );\n\n$.validator.addMethod( \"ziprange\", function( value, element ) {\n\treturn this.optional( element ) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test( value );\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx.\" );\nreturn $;\n}));","import $ from 'jquery';\nimport 'jquery-validation';\nimport 'jquery-validation/dist/additional-methods';\n\nconst LANGUAGES = {\n    \"en\": \"en\",\n    \"en-au\": \"en\",\n    \"en-nz\": \"en\",\n    \"en-gb\": \"en\",\n    \"en-ca\": \"en\",\n    \"en-za\": \"en\",\n    \"pt-br\": \"pt_BR\",\n    \"fr\": \"fr\",\n    \"fr-ca\": \"fr\",\n    \"zh-hans\": \"zh\",\n    \"zh-hant\": \"zh_TW\",\n    \"de\": \"de\",\n    \"de-at\": \"de\",\n    \"it\": \"it\",\n    \"ja\": \"ja\",\n    \"es\": \"es\",\n    \"es-xl\": \"es\",\n    \"pl\": \"pl\",\n    \"ru\": \"ru\",\n    \"sk\": \"sk\",\n    \"ch-de\": \"de\",\n    \"ch-fr\": \"fr\",\n    \"cs\": \"cs\",\n    \"cs-cz\": \"cs\",\n    \"da\": \"da\",\n    \"fi\": \"fi\",\n    \"nb\": \"en\",\n    \"sv\": \"sv\",\n    \"nl\": \"nl\"\n};\n\nconst addRadioOrCheckboxSelectValidity = function(inputs) {\n    if (inputs.length > 1) {\n        inputs.rules('add', {\n            require_from_group: [1, inputs],\n        });\n    }\n};\n\nfunction initCustomValidationRules(form) {\n    const requiredFields = form.find('.form-required');\n    requiredFields.toArray().forEach(el => {\n        const group = $(el);\n\n        const maybeRadios = group.find(':radio');\n\n        if (maybeRadios.length) {\n            return addRadioOrCheckboxSelectValidity(maybeRadios);\n        }\n\n        const maybeCheckboxes = group.find(':checkbox');\n\n        if (maybeCheckboxes.length) {\n            return addRadioOrCheckboxSelectValidity(maybeCheckboxes);\n        }\n    });\n}\n\nexport default function initLocale() {\n    const locale = $('html').attr('lang');\n\n    if (LANGUAGES[locale] === 'en') {\n        return;\n    }\n}\n\nwindow.IDEXX = window.IDEXX || {};\nwindow.IDEXX.initCustomValidationRules = initCustomValidationRules;\n","import $ from 'jquery'\nimport { scrollTo } from './utils'\n\nconst defaults = {\n  offset: -20,\n  scrollTime: 250\n}\n\n// @TODO: Not used, can go away\nexport function initLocalScroll() {\n  $(document).on('click', '.js-localscroll[href^=\"#\"]', function (e) {\n    e.preventDefault()\n\n    const link = $(this)\n    const href = link.attr('href')\n    const offset = link.data('offset')\n    const time = link.data('time')\n    const options = $.extend(defaults, { offset, time })\n    let target\n\n    try {\n      target = $(href)\n    } catch (e) {} // eslint-disable-line\n\n    if (!target) {\n      return\n    }\n\n    const top = target.offset().top\n\n    scrollTo(top, options.scrollTime).then(function () {\n      if (window.history.pushState) {\n        window.history.pushState('', {}, href)\n      } else {\n        window.location.hash = href\n      }\n    })\n  })\n}\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\nclass ModalBox {\n  constructor(element) {\n    this.cookieName = `closed-modal-box-${element.attr('id')}`\n    this.expires = element.data('expires') ? parseInt(element.data('expires'), 10) : 7\n    this._setupUI(element)\n    this._setupEvents()\n  }\n\n  _setupUI(element) {\n    this.ui = {\n      modal: element,\n      close: element.find('.js-modal-box-close'),\n      window: $(window),\n      cookiePolicy: $('.js-cookie-policy')\n    }\n  }\n\n  _setupEvents() {\n    this.ui.window.on('load', () => {\n      if (!this._checkIfCookieExists()) {\n        this.open()\n      }\n    })\n\n    this.ui.close.on('click', () => {\n      this.close()\n    })\n  }\n\n  _checkIfCookieExists() {\n    return Cookies.get(this.cookieName)\n  }\n\n  _setCookie() {\n    Cookies.set(this.cookieName, 'true', {\n      expires: this.expires,\n      path: ''\n    })\n  }\n\n  open() {\n    if (this.ui.cookiePolicy.is(':visible')) {\n      this.ui.modal.css('margin-bottom', this.ui.cookiePolicy.outerHeight())\n    }\n\n    this.ui.modal.fadeIn('fast')\n  }\n\n  close() {\n    this.ui.modal.fadeOut('fast', () => {\n      this._setCookie()\n    })\n  }\n}\n\nexport function initModalBoxes(selector = '.js-modal-box') {\n  $(selector).each((i, el) => new ModalBox($(el)))\n}\n","import $ from 'jquery'\n\nexport function initSearchFiltersForm() {\n  const form = $('.js-search-filters-form')\n  const searchContainer = $('.js-search-container')\n\n  form.on('change', ':radio, :checkbox', () => form.submit())\n\n  form.on('submit', () => {\n    searchContainer.addClass('loading')\n  })\n}\n","export function showTabFromHash() {\n  const hash = window.location.hash\n  let content = $()\n\n  try {\n    content = $(`${hash}, a[name=${hash.slice(1)}]`)\n  } catch (e) {} // eslint-disable-line\n\n  const pane = content.closest('.tab-pane')\n\n  if (!pane.length) {\n    return\n  }\n\n  const paneId = pane.attr('id')\n\n  $(`[href='#${paneId}']`).tab('show')\n}\n","/*!\n * simpleParallax.min - simpleParallax is a simple JavaScript library that gives your website parallax animations on any images or videos, \n * @date: 20-08-2020 14:0:14, \n * @version: 5.6.2,\n * @link: https://simpleparallax.com/\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"simpleParallax\",[],e):\"object\"==typeof exports?exports.simpleParallax=e():t.simpleParallax=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",(function(){return x}));var i=function(){return Element.prototype.closest&&\"IntersectionObserver\"in window};function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var s=new(function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.positions={top:0,bottom:0,height:0}}var e,n,i;return e=t,(n=[{key:\"setViewportTop\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions}},{key:\"setViewportBottom\",value:function(){return this.positions.bottom=this.positions.top+this.positions.height,this.positions}},{key:\"setViewportAll\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions.height=t?t.clientHeight:document.documentElement.clientHeight,this.positions.bottom=this.positions.top+this.positions.height,this.positions}}])&&r(e.prototype,n),i&&r(e,i),t}()),o=function(t){return NodeList.prototype.isPrototypeOf(t)||HTMLCollection.prototype.isPrototypeOf(t)?Array.from(t):\"string\"==typeof t||t instanceof String?document.querySelectorAll(t):[t]},a=function(){for(var t,e=\"transform webkitTransform mozTransform oTransform msTransform\".split(\" \"),n=0;void 0===t;)t=void 0!==document.createElement(\"div\").style[e[n]]?e[n]:void 0,n+=1;return t}(),l=function(t){return\"img\"!==t.tagName.toLowerCase()&&\"picture\"!==t.tagName.toLowerCase()||!!t&&(!!t.complete&&(void 0===t.naturalWidth||0!==t.naturalWidth))};function u(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var f=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.element=e,this.elementContainer=e,this.settings=n,this.isVisible=!0,this.isInit=!1,this.oldTranslateValue=-1,this.init=this.init.bind(this),this.customWrapper=this.settings.customWrapper&&this.element.closest(this.settings.customWrapper)?this.element.closest(this.settings.customWrapper):null,l(e)?this.init():this.element.addEventListener(\"load\",(function(){setTimeout((function(){i.init(!0)}),50)}))}var e,n,i;return e=t,(n=[{key:\"init\",value:function(t){var e=this;this.isInit||(t&&(this.rangeMax=null),this.element.closest(\".simpleParallax\")||(!1===this.settings.overflow&&this.wrapElement(this.element),this.setTransformCSS(),this.getElementOffset(),this.intersectionObserver(),this.getTranslateValue(),this.animate(),this.settings.delay>0?setTimeout((function(){e.setTransitionCSS(),e.elementContainer.classList.add(\"simple-parallax-initialized\")}),10):this.elementContainer.classList.add(\"simple-parallax-initialized\"),this.isInit=!0))}},{key:\"wrapElement\",value:function(){var t=this.element.closest(\"picture\")||this.element,e=this.customWrapper||document.createElement(\"div\");e.classList.add(\"simpleParallax\"),e.style.overflow=\"hidden\",this.customWrapper||(t.parentNode.insertBefore(e,t),e.appendChild(t)),this.elementContainer=e}},{key:\"unWrapElement\",value:function(){var t=this.elementContainer;this.customWrapper?(t.classList.remove(\"simpleParallax\"),t.style.overflow=\"\"):t.replaceWith.apply(t,u(t.childNodes))}},{key:\"setTransformCSS\",value:function(){!1===this.settings.overflow&&(this.element.style[a]=\"scale(\".concat(this.settings.scale,\")\")),this.element.style.willChange=\"transform\"}},{key:\"setTransitionCSS\",value:function(){this.element.style.transition=\"transform \".concat(this.settings.delay,\"s \").concat(this.settings.transition)}},{key:\"unSetStyle\",value:function(){this.element.style.willChange=\"\",this.element.style[a]=\"\",this.element.style.transition=\"\"}},{key:\"getElementOffset\",value:function(){var t=this.elementContainer.getBoundingClientRect();if(this.elementHeight=t.height,this.elementTop=t.top+s.positions.top,this.settings.customContainer){var e=this.settings.customContainer.getBoundingClientRect();this.elementTop=t.top-e.top+s.positions.top}this.elementBottom=this.elementHeight+this.elementTop}},{key:\"buildThresholdList\",value:function(){for(var t=[],e=1;e<=this.elementHeight;e++){var n=e/this.elementHeight;t.push(n)}return t}},{key:\"intersectionObserver\",value:function(){var t={root:null,threshold:this.buildThresholdList()};this.observer=new IntersectionObserver(this.intersectionObserverCallback.bind(this),t),this.observer.observe(this.element)}},{key:\"intersectionObserverCallback\",value:function(t){var e=this;t.forEach((function(t){t.isIntersecting?e.isVisible=!0:e.isVisible=!1}))}},{key:\"checkIfVisible\",value:function(){return this.elementBottom>s.positions.top&&this.elementTop<s.positions.bottom}},{key:\"getRangeMax\",value:function(){var t=this.element.clientHeight;this.rangeMax=t*this.settings.scale-t}},{key:\"getTranslateValue\",value:function(){var t=((s.positions.bottom-this.elementTop)/((s.positions.height+this.elementHeight)/100)).toFixed(1);return t=Math.min(100,Math.max(0,t)),0!==this.settings.maxTransition&&t>this.settings.maxTransition&&(t=this.settings.maxTransition),this.oldPercentage!==t&&(this.rangeMax||this.getRangeMax(),this.translateValue=(t/100*this.rangeMax-this.rangeMax/2).toFixed(0),this.oldTranslateValue!==this.translateValue&&(this.oldPercentage=t,this.oldTranslateValue=this.translateValue,!0))}},{key:\"animate\",value:function(){var t,e=0,n=0;(this.settings.orientation.includes(\"left\")||this.settings.orientation.includes(\"right\"))&&(n=\"\".concat(this.settings.orientation.includes(\"left\")?-1*this.translateValue:this.translateValue,\"px\")),(this.settings.orientation.includes(\"up\")||this.settings.orientation.includes(\"down\"))&&(e=\"\".concat(this.settings.orientation.includes(\"up\")?-1*this.translateValue:this.translateValue,\"px\")),t=!1===this.settings.overflow?\"translate3d(\".concat(n,\", \").concat(e,\", 0) scale(\").concat(this.settings.scale,\")\"):\"translate3d(\".concat(n,\", \").concat(e,\", 0)\"),this.element.style[a]=t}}])&&h(e.prototype,n),i&&h(e,i),t}();function m(t){return function(t){if(Array.isArray(t))return y(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||d(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],i=!0,r=!1,s=void 0;try{for(var o,a=t[Symbol.iterator]();!(i=(o=a.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,s=t}finally{try{i||null==a.return||a.return()}finally{if(r)throw s}}return n}(t,e)||d(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function d(t,e){if(t){if(\"string\"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function v(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var g,b,w=!1,T=[],x=function(){function t(e,n){if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),e&&i()){if(this.elements=o(e),this.defaults={delay:0,orientation:\"up\",scale:1.3,overflow:!1,transition:\"cubic-bezier(0,0,0,1)\",customContainer:\"\",customWrapper:\"\",maxTransition:0},this.settings=Object.assign(this.defaults,n),this.settings.customContainer){var r=p(o(this.settings.customContainer),1);this.customContainer=r[0]}this.lastPosition=-1,this.resizeIsDone=this.resizeIsDone.bind(this),this.refresh=this.refresh.bind(this),this.proceedRequestAnimationFrame=this.proceedRequestAnimationFrame.bind(this),this.init()}}var e,n,r;return e=t,(n=[{key:\"init\",value:function(){var t=this;s.setViewportAll(this.customContainer),T=[].concat(m(this.elements.map((function(e){return new f(e,t.settings)}))),m(T)),w||(this.proceedRequestAnimationFrame(),window.addEventListener(\"resize\",this.resizeIsDone),w=!0)}},{key:\"resizeIsDone\",value:function(){clearTimeout(b),b=setTimeout(this.refresh,200)}},{key:\"proceedRequestAnimationFrame\",value:function(){var t=this;s.setViewportTop(this.customContainer),this.lastPosition!==s.positions.top?(s.setViewportBottom(),T.forEach((function(e){t.proceedElement(e)})),g=window.requestAnimationFrame(this.proceedRequestAnimationFrame),this.lastPosition=s.positions.top):g=window.requestAnimationFrame(this.proceedRequestAnimationFrame)}},{key:\"proceedElement\",value:function(t){(this.customContainer?t.checkIfVisible():t.isVisible)&&t.getTranslateValue()&&t.animate()}},{key:\"refresh\",value:function(){s.setViewportAll(this.customContainer),T.forEach((function(t){t.getElementOffset(),t.getRangeMax()})),this.lastPosition=-1}},{key:\"destroy\",value:function(){var t=this,e=[];T=T.filter((function(n){return t.elements.includes(n.element)?(e.push(n),!1):n})),e.forEach((function(e){e.unSetStyle(),!1===t.settings.overflow&&e.unWrapElement()})),T.length||(window.cancelAnimationFrame(g),window.removeEventListener(\"resize\",this.refresh),w=!1)}}])&&v(e.prototype,n),r&&v(e,r),t}()}]).default}));","import simpleParallax from 'simple-parallax-js'\n\nfunction initAllParallax() {\n  const parallaxElements = document.querySelectorAll('[data-parallax]')\n  new simpleParallax(parallaxElements, {\n    scale: 1.5\n  })\n}\n\nexport function initParallax() {\n  initAllParallax()\n}\n","import 'vite/modulepreload-polyfill'\nimport $ from './libs/jquery'\nimport 'jquery-validation'\nimport './libs/bootstrap'\nimport Alpine from 'alpinejs'\nimport htmx from 'htmx.org'\n\nimport {\n  initBasicSlider,\n  initImageTextSlider,\n  initProductSlider,\n  initQuotesSlider,\n  initStandardSlider\n} from './addons/slick'\nimport { initDesktopMenu, initMobileMenu } from './addons/header'\nimport { initAccordions } from './addons/accordion'\nimport { initBlog } from './addons/blog'\nimport { initCookiePolicy } from './addons/cookie-policy'\nimport initFormLocale from './addons/forms'\nimport { initLocalScroll } from './addons/localscroll'\nimport { initModalBoxes } from './addons/modal'\nimport { initSearchFiltersForm } from './addons/search'\nimport { showTabFromHash } from './addons/tabs'\nimport { initParallax } from './addons/parallax'\n\nwindow.Alpine = Alpine\nwindow.$ = $\nwindow.jQuery = $\nwindow.htmx = htmx\n\nAlpine.start()\n\n$(() => {\n  initMobileMenu()\n  initDesktopMenu()\n  initStandardSlider()\n  initProductSlider()\n  initQuotesSlider()\n  initBasicSlider()\n  initImageTextSlider()\n  initBlog()\n  initModalBoxes()\n  initCookiePolicy()\n  initAccordions()\n  initSearchFiltersForm()\n  initLocalScroll()\n  initFormLocale()\n  initParallax()\n\n  $(window)\n    .on('hashchange', () => {\n      showTabFromHash()\n    })\n    .trigger('hashchange')\n})\n\n/**\n * VSS Section Nav\n */\n$('.feature-menu .section-name button.section-nav-toggle').click(function (e) {\n  const el = $(this)\n  const container = el.closest('.container')\n  const menu = container.find('.section-menu')\n\n  if (el.hasClass('collapsed')) {\n    el.removeClass('collapsed')\n    menu.addClass('expanded')\n  } else {\n    el.addClass('collapsed')\n    menu.removeClass('expanded')\n  }\n})\n\n/**\n * Back to top Button\n */\nconst btn = $('.back-to-top')\n\n$(window).scroll(function () {\n  if ($(window).scrollTop() > 300) {\n    btn.addClass('show')\n  } else {\n    btn.removeClass('show')\n  }\n})\n\nbtn.on('click', function (e) {\n  e.preventDefault()\n  $('html, body').animate({ scrollTop: 0 }, '300')\n})\n\n/**\n * Automatically logs the user in when the webpage loads.\n */\nwindow.autologin = function () {\n  const pageEditUrl = `${window.location.pathname}?edit`\n  if (!!window.CMS) {\n    window.location.href = pageEditUrl\n  } else {\n    const nextParam = encodeURIComponent(pageEditUrl)\n    window.location.href = `/admin/login/?autologin=1&next=${nextParam}`\n  }\n}\n\n/**\n * Resize Pardot Iframes if message received.\n */\nwindow.addEventListener('message', function (event) {\n  if (event.origin !== 'https://info.idexx.com') return\n  if (event.data?.type === 'resize-iframe' && event.data.instance) {\n    console.debug('Resizing iframe', event.data)\n    const iframe = document.getElementById(`pardot-form-${event.data.instance}`)\n    if (iframe) {\n      iframe.style.height = event.data.height + 'px'\n    } else {\n      console.error(`Could not find iframe with id pardot-form-${event.data.instance}`)\n    }\n  }\n})\n"],"names":["factory","module","require$$0","$","options","validator","event","handle","hidden","result","valid","errorList","command","argument","element","isContentEditable","settings","staticRules","existingRules","data","param","filtered","index","method","trim","str","a","val","form","source","params","args","i","n","excludedKeys","errorClass","validClass","currentForm","groups","rules","key","value","name","delegate","eventType","focusListeners","clickListeners","elements","cleanElement","checkElement","v","rs","group","testgroup","errors","message","obj","count","e","lastActive","rulesCache","selectors","selector","$element","type","idx","rulesCount","dependencyMismatch","rule","normalizer","m","theregex","toToggle","error","place","errorID","elementID","describedBy","describer","string","port","className","classes","prop","keepRule","parameter","parts","transformed","called","length","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","match","toInt","decimals","target","previous","optionDataString","response","submitted","pendingRequests","ajax","_","xhr","mode","transitionEnd","el","transEndEventNames","duration","$el","callback","dismiss","Alert","$this","$parent","removeElement","Plugin","option","old","Collapse","hasWidth","activesData","actives","startEvent","dimension","complete","scrollSize","getTargetFromTrigger","$trigger","isOpen","href","$target","backdrop","toggle","Dropdown","getParent","clearMenus","relatedTarget","isActive","desc","$items","Modal","_relatedTarget","that","transition","animate","doAnimate","callbackRemove","modalIsOverflowing","fullWindowWidth","documentElementRect","bodyPad","scrollbarWidth","actualPadding","calculatedPadding","padding","scrollDiv","showEvent","Tab","$ul","$previous","hideEvent","container","$active","next","clickHandler","DISALLOWED_ATTRIBUTES","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","regExp","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","len","elName","attributeList","whitelistedAttributes","j","len2","Tooltip","triggers","trigger","eventIn","eventOut","dataAttributes","dataAttr","defaults","self","inDom","$tip","tipId","placement","autoToken","autoPlace","pos","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","prevHoverState","offset","width","height","marginTop","marginLeft","props","delta","isVertical","arrowDelta","arrowOffsetPosition","title","$e","isBody","elRect","isSvg","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","Popover","content","typeContent","root","this","_win","_breakpoints","_currentBreakpoint","_defaults","_validate","breakpoint","_onResize","oldBreakpoint","viewport","_initWatch","getBreakpoints","is","current","init","breakpoints","destroy","Breakpoint","preventTouchScrolling","namespace","allowTouchScrolling","isMobileMenu","initDesktopMenu","topLevelDropdowns","dropdownToggle","initMobileMenu","mobileMenu","html","initAccordions","top","scrollTo","initPostsByAuthorLink","initBlog","assign","defaultConverter","converter","defaultAttributes","set","attributes","stringifiedAttributes","attributeName","get","cookies","jar","found","api","initCookiePolicy","Cookies","policy","close","stripHtml","valueStripped","regex","checksum","tokens","typeParam","optionalValue","file","account","sum","factor","digit","cifRegEx","letter","number","control","all_sum","even_sum","odd_sum","control_digit","control_letter","isOdd","dsc","firstChar","firstCN","secondCN","tamanho","numeros","digitos","soma","resultado","il","checkResult","cn","nCheck","nDigit","bEven","cDigit","validTypes","isParamString","symbol","soft","check","adata","gg","mm","aaaa","xdata","iban","ibancheckdigits","leadingZeroes","cRest","cOperator","countrycode","ibancheck","charAt","cChar","bbanpattern","bbancountrypatterns","ibanregexp","p","minimalIBANlength","totalSize","phone_number","ruPhone_number","nieRegEx","validChars","arrSteps","intSum","int2","intControlNr","dv","multiplier","regexp","cep_value","$fields","$fieldsFirst","isValid","numberFilled","isDefault","caseSensitive","includeTerritories","includeMilitary","LL","VL","FL","f","cd","cdv","LANGUAGES","addRadioOrCheckboxSelectValidity","inputs","initCustomValidationRules","maybeRadios","maybeCheckboxes","initLocale","locale","initLocalScroll","link","time","ModalBox","initModalBoxes","initSearchFiltersForm","searchContainer","showTabFromHash","hash","pane","paneId","t","r","x","s","u","c","h","y","d","g","b","w","T","initAllParallax","parallaxElements","simpleParallax","initParallax","Alpine","htmx","initStandardSlider","initProductSlider","initQuotesSlider","initBasicSlider","initImageTextSlider","initFormLocale","menu","btn","pageEditUrl","nextParam","_a","iframe"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,14,16,22]}