diff --git a/client/galaxy/scripts/apps/admin.js b/client/galaxy/scripts/apps/admin.js index ef8f0d3b3b5..f178aaf4b22 100644 --- a/client/galaxy/scripts/apps/admin.js +++ b/client/galaxy/scripts/apps/admin.js @@ -49,57 +49,62 @@ window.app = function app( options, bootstrapped ){ }, show_forms : function( form_id ) { + var id = '?id=' + QueryStringParsing.get( 'id' ); var form_defs = { reset_user_password: { title : 'Reset passwords', - url : 'admin/reset_user_password?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/reset_user_password' + id, icon : 'fa-user', submit_title : 'Save new password', redirect : 'admin/users' }, manage_roles_and_groups_for_user: { - url : 'admin/manage_roles_and_groups_for_user?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/manage_roles_and_groups_for_user' + id, icon : 'fa-users', redirect : 'admin/users' }, manage_users_and_groups_for_role: { - url : 'admin/manage_users_and_groups_for_role?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/manage_users_and_groups_for_role' + id, redirect : 'admin/roles' }, manage_users_and_roles_for_group: { - url : 'admin/manage_users_and_roles_for_group?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/manage_users_and_roles_for_group' + id, redirect : 'admin/groups' }, manage_users_and_groups_for_quota: { - url : 'admin/manage_users_and_groups_for_quota?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/manage_users_and_groups_for_quota' + id, redirect : 'admin/quotas' }, create_role: { - url : 'admin/create_role?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/create_role', redirect : 'admin/roles' }, create_group: { - url : 'admin/create_group?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/create_group', redirect : 'admin/groups' }, + create_quota: { + url : 'admin/create_quota', + redirect : 'admin/quotas' + }, rename_role: { - url : 'admin/rename_role?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/rename_role' + id, redirect : 'admin/roles' }, rename_group: { - url : 'admin/rename_group?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/rename_group' + id, redirect : 'admin/groups' }, rename_quota: { - url : 'admin/rename_quota?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/rename_quota' + id, redirect : 'admin/quotas' }, edit_quota: { - url : 'admin/edit_quota?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/edit_quota' + id, redirect : 'admin/quotas' }, set_quota_default: { - url : 'admin/set_quota_default?id=' + QueryStringParsing.get( 'id' ), + url : 'admin/set_quota_default' + id, redirect : 'admin/quotas' }, }; diff --git a/lib/galaxy/webapps/galaxy/controllers/admin.py b/lib/galaxy/webapps/galaxy/controllers/admin.py index 810c16ba85d..82c64f26724 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin.py @@ -387,7 +387,7 @@ class QuotaListGrid( grids.Grid ): visible=False, filterable="standard" ) ) global_actions = [ - grids.GridAction( "Add new quota", dict( controller='admin', action='quotas', operation='create' ) ) + grids.GridAction( "Add new quota", dict( action='forms/create_quota' ) ) ] operations = [ grids.GridOperation( "Rename", condition=( lambda item: not item.deleted ), @@ -575,52 +575,52 @@ class AdminGalaxy( controller.JSAppLauncher, AdminActions, UsesQuotaMixin, Quota kwargs[ 'dict_format' ] = True return self.quota_list_grid( trans, **kwargs ) - @web.expose + @web.expose_api @web.require_admin - def create_quota( self, trans, **kwd ): - params = self.get_quota_params( kwd ) - if params.get( 'create_quota_button', False ): + def create_quota( self, trans, payload=None, **kwd ): + if trans.request.method == 'GET': + all_users = [] + all_groups = [] + for user in trans.sa_session.query( trans.app.model.User ) \ + .filter( trans.app.model.User.table.c.deleted == false() ) \ + .order_by( trans.app.model.User.table.c.email ): + all_users.append( ( user.email, trans.security.encode_id( user.id ) ) ) + for group in trans.sa_session.query( trans.app.model.Group ) \ + .filter( trans.app.model.Group.table.c.deleted == false() ) \ + .order_by( trans.app.model.Group.table.c.name ): + all_groups.append( ( group.name, trans.security.encode_id( group.id ) ) ) + default_options = [ ( 'No', 'no' ) ] + for typ in trans.app.model.DefaultQuotaAssociation.types.__dict__.values(): + default_options.append( ( 'Yes, ' + typ, typ ) ) + return { 'title' : 'Create Quota', + 'inputs' : [{ + 'name' : 'name', + 'label' : 'Name' + },{ + 'name' : 'description', + 'label' : 'Description' + },{ + 'name' : 'amount', + 'label' : 'Amount', + 'help' : 'Examples: "10000MB", "99 gb", "0.2T", "unlimited"' + },{ + 'name' : 'operation', + 'label' : 'Assign, increase by amount, or decrease by amount?', + 'options' : [ ('=', '=' ), ( '+', '+' ), ( '-', '-' ) ] + },{ + 'name' : 'default', + 'label' : 'Assign, increase by amount, or decrease by amount?', + 'options' : default_options, + 'help' : 'Warning: Any users or groups associated with this quota will be disassociated.' + }, + build_select_input( 'in_groups', 'Groups', all_groups, [] ), + build_select_input( 'in_users', 'Users', all_users, [] ) ] } + else: try: - quota, message = self._create_quota( params ) - return trans.response.send_redirect( web.url_for( controller='admin', - action='quotas', - webapp=params.webapp, - message=sanitize_text( message ), - status='done' ) ) - except MessageException as e: - params.message = str( e ) - params.status = 'error' - in_users = map( int, params.in_users ) - in_groups = map( int, params.in_groups ) - new_in_users = [] - new_in_groups = [] - for user in trans.sa_session.query( trans.app.model.User ) \ - .filter( trans.app.model.User.table.c.deleted == expression.false() ) \ - .order_by( trans.app.model.User.table.c.email ): - if user.id in in_users: - new_in_users.append( ( user.id, user.email ) ) - else: - params.out_users.append( ( user.id, user.email ) ) - for group in trans.sa_session.query( trans.app.model.Group ) \ - .filter( trans.app.model.Group.table.c.deleted == expression.false() ) \ - .order_by( trans.app.model.Group.table.c.name ): - if group.id in in_groups: - new_in_groups.append( ( group.id, group.name ) ) - else: - params.out_groups.append( ( group.id, group.name ) ) - return trans.fill_template( '/admin/quota/quota_create.mako', - webapp=params.webapp, - name=params.name, - description=params.description, - amount=params.amount, - operation=params.operation, - default=params.default, - in_users=new_in_users, - out_users=params.out_users, - in_groups=new_in_groups, - out_groups=params.out_groups, - message=params.message, - status=params.status ) + quota, message = self._create_quota( util.Params( payload ) ) + return { 'message': message } + except ActionInputError as e: + return message_exception( trans, e.err_msg ) @web.expose_api @web.require_admin diff --git a/static/scripts/bundled/admin.bundled.js b/static/scripts/bundled/admin.bundled.js index dd33800197e..bd4b80a3501 100644 --- a/static/scripts/bundled/admin.bundled.js +++ b/static/scripts/bundled/admin.bundled.js @@ -1,4 +1,4 @@ -webpackJsonp([4],[function(t,e,i){(function(t){var e=i(1),a=e,s=i(49).GalaxyApp,n=i(100),l=i(59),o=i(12),r=(i(5),i(26)),d=i(52),c=i(50);window.app=function(e,i){window.Galaxy=new s(e,i),Galaxy.debug("admin app");var h=d.extend({routes:{"(/)admin(/)users":"show_users","(/)admin(/)roles":"show_roles","(/)admin(/)groups":"show_groups","(/)admin(/)tool_versions":"show_tool_versions","(/)admin(/)quotas":"show_quotas","(/)admin(/)forms(/)(:form_id)":"show_forms"},authenticate:function(t,e){return Galaxy.user&&Galaxy.user.id&&Galaxy.user.get("is_admin")},show_users:function(){this.page.display(new o({url_base:Galaxy.root+"admin/users_list",url_data:Galaxy.params,dict_format:!0}))},show_roles:function(){this.page.display(new o({url_base:Galaxy.root+"admin/roles_list",url_data:Galaxy.params,dict_format:!0}))},show_groups:function(){this.page.display(new o({url_base:Galaxy.root+"admin/groups_list",url_data:Galaxy.params,dict_format:!0}))},show_tool_versions:function(){this.page.display(new o({url_base:Galaxy.root+"admin/tool_versions_list",url_data:Galaxy.params,dict_format:!0}))},show_quotas:function(){this.page.display(new o({url_base:Galaxy.root+"admin/quotas_list",url_data:Galaxy.params,dict_format:!0}))},show_forms:function(t){var e={reset_user_password:{title:"Reset passwords",url:"admin/reset_user_password?id="+r.get("id"),icon:"fa-user",submit_title:"Save new password",redirect:"admin/users"},manage_roles_and_groups_for_user:{url:"admin/manage_roles_and_groups_for_user?id="+r.get("id"),icon:"fa-users",redirect:"admin/users"},manage_users_and_groups_for_role:{url:"admin/manage_users_and_groups_for_role?id="+r.get("id"),redirect:"admin/roles"},manage_users_and_roles_for_group:{url:"admin/manage_users_and_roles_for_group?id="+r.get("id"),redirect:"admin/groups"},manage_users_and_groups_for_quota:{url:"admin/manage_users_and_groups_for_quota?id="+r.get("id"),redirect:"admin/quotas"},create_role:{url:"admin/create_role?id="+r.get("id"),redirect:"admin/roles"},create_group:{url:"admin/create_group?id="+r.get("id"),redirect:"admin/groups"},rename_role:{url:"admin/rename_role?id="+r.get("id"),redirect:"admin/roles"},rename_group:{url:"admin/rename_group?id="+r.get("id"),redirect:"admin/groups"},rename_quota:{url:"admin/rename_quota?id="+r.get("id"),redirect:"admin/quotas"},edit_quota:{url:"admin/edit_quota?id="+r.get("id"),redirect:"admin/quotas"},set_quota_default:{url:"admin/set_quota_default?id="+r.get("id"),redirect:"admin/quotas"}};this.page.display(new l.View(e[t]))}});a(function(){t.extend(e.config,{active_view:"admin"}),Galaxy.page=new c.View(t.extend(e,{Left:n,Router:h}))})}}).call(e,i(3))},,,,,function(t,e,i){var a,s;(function(n,l,o){a=[i(4),i(15),i(40),i(14),i(36),i(10),i(8)],s=function(t,e,i,a,s,r,d){var c=n.View.extend({tagName:"label",initialize:function(t){this.model=t&&t.model||new n.Model(t),this.tagName=t.tagName||this.tagName,this.setElement(l("<"+this.tagName+"/>")),this.listenTo(this.model,"change",this.render,this),this.render()},title:function(t){this.model.set("title",t)},value:function(){return this.model.get("title")},render:function(){return this.$el.removeClass().addClass("ui-label").addClass(this.model.get("cls")).html(this.model.get("title")),this}}),h=n.View.extend({initialize:function(t){this.model=t&&t.model||new n.Model({message:null,status:"info",cls:"",persistent:!1,fade:!0}).set(t),this.listenTo(this.model,"change",this.render,this),this.render()},update:function(t){this.model.set(t)},render:function(){this.$el.removeClass().addClass("ui-message").addClass(this.model.get("cls"));var t=this.model.get("status");if(this.model.get("large")?this.$el.addClass(("success"==t&&"done"||"danger"==t&&"error"||t)+"messagelarge"):this.$el.addClass("alert").addClass("alert-"+t),this.model.get("message")){if(this.$el.html(this.messageForDisplay()),this.$el[this.model.get("fade")?"fadeIn":"show"](),this.timeout&&window.clearTimeout(this.timeout),!this.model.get("persistent")){var e=this;this.timeout=window.setTimeout(function(){e.model.set("message","")},3e3)}}else this.$el.fadeOut();return this},messageForDisplay:function(){return o.escape(this.model.get("message"))}}),u=h.extend({messageForDisplay:function(){return this.model.get("message")}}),p=n.View.extend({initialize:function(t){this.model=t&&t.model||new n.Model({type:"text",placeholder:"",disabled:!1,readonly:!1,visible:!0,cls:"",area:!1,color:null,style:null}).set(t),this.tagName=this.model.get("area")?"textarea":"input",this.setElement(l("<"+this.tagName+"/>")),this.listenTo(this.model,"change",this.render,this),this.render()},events:{input:"_onchange"},value:function(t){return void 0!==t&&this.model.set("value","string"==typeof t?t:""),this.model.get("value")},render:function(){var t=this;this.$el.removeClass().addClass("ui-"+this.tagName).addClass(this.model.get("cls")).addClass(this.model.get("style")).attr("id",this.model.id).attr("type",this.model.get("type")).attr("placeholder",this.model.get("placeholder")).css("color",this.model.get("color")||"").css("border-color",this.model.get("color")||"");var e=this.model.get("datalist");return l.isArray(e)&&e.length>0&&this.$el.autocomplete({source:function(e,i){i(t.model.get("datalist"))},change:function(){t._onchange()}}),this.model.get("value")!==this.$el.val()&&this.$el.val(this.model.get("value")),o.each(["readonly","disabled"],function(e){t.model.get(e)?t.$el.attr(e,!0):t.$el.removeAttr(e)}),this.$el[this.model.get("visible")?"show":"hide"](),this},_onchange:function(){this.value(this.$el.val()),this.model.get("onchange")&&this.model.get("onchange")(this.model.get("value"))}}),f=n.View.extend({initialize:function(t){this.model=t&&t.model||new n.Model(t),this.setElement(l("
").append(this.$info=l("
")).append(this.$hidden=l("
"))),this.listenTo(this.model,"change",this.render,this),this.render()},value:function(t){return void 0!==t&&this.model.set("value",t),this.model.get("value")},render:function(){return this.$el.attr("id",this.model.id),this.$hidden.val(this.model.get("value")),this.model.get("info")?this.$info.show().text(this.model.get("info")):this.$info.hide(),this}}),m=n.View.extend({initialize:function(t){var e=this;this.model=t&&t.model||new n.Model(t),this.setElement(l("
").append(this.$info=l("
")).append(this.$file=l("").attr("type","file").addClass("ui-margin-bottom")).append(this.$text=l("\";\n\t\t\tsupport.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\t\n\t\t\t// #11217 - WebKit loses check when the name is after the checked attribute\n\t\t\tfragment.appendChild(div);\n\t\n\t\t\t// Support: Windows Web Apps (WWA)\n\t\t\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\t\t\tinput = document.createElement(\"input\");\n\t\t\tinput.setAttribute(\"type\", \"radio\");\n\t\t\tinput.setAttribute(\"checked\", \"checked\");\n\t\t\tinput.setAttribute(\"name\", \"t\");\n\t\n\t\t\tdiv.appendChild(input);\n\t\n\t\t\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t\t\t// old WebKit doesn't clone checked state correctly in fragments\n\t\t\tsupport.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\t\n\t\t\t// Support: IE<9\n\t\t\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\n\t\t\tsupport.noCloneEvent = !!div.addEventListener;\n\t\n\t\t\t// Support: IE<9\n\t\t\t// Since attributes and properties are the same in IE,\n\t\t\t// cleanData must set properties to undefined rather than use removeAttribute\n\t\t\tdiv[jQuery.expando] = 1;\n\t\t\tsupport.attributes = !div.getAttribute(jQuery.expando);\n\t\t})();\n\t\n\t\t// We have to close these tags to support XHTML (#13200)\n\t\tvar wrapMap = {\n\t\t\toption: [1, \"\"],\n\t\t\tlegend: [1, \"
\", \"
\"],\n\t\t\tarea: [1, \"\", \"\"],\n\t\n\t\t\t// Support: IE8\n\t\t\tparam: [1, \"\", \"\"],\n\t\t\tthead: [1, \"\", \"
\"],\n\t\t\ttr: [2, \"\", \"
\"],\n\t\t\tcol: [2, \"\", \"
\"],\n\t\t\ttd: [3, \"\", \"
\"],\n\t\n\t\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t\t_default: support.htmlSerialize ? [0, \"\", \"\"] : [1, \"X
\", \"
\"]\n\t\t};\n\t\n\t\t// Support: IE8-IE9\n\t\twrapMap.optgroup = wrapMap.option;\n\t\n\t\twrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n\t\twrapMap.th = wrapMap.td;\n\t\n\t\tfunction getAll(context, tag) {\n\t\t\tvar elems,\n\t\t\t elem,\n\t\t\t i = 0,\n\t\t\t found = typeof context.getElementsByTagName !== \"undefined\" ? context.getElementsByTagName(tag || \"*\") : typeof context.querySelectorAll !== \"undefined\" ? context.querySelectorAll(tag || \"*\") : undefined;\n\t\n\t\t\tif (!found) {\n\t\t\t\tfor (found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++) {\n\t\t\t\t\tif (!tag || jQuery.nodeName(elem, tag)) {\n\t\t\t\t\t\tfound.push(elem);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.merge(found, getAll(elem, tag));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], found) : found;\n\t\t}\n\t\n\t\t// Mark scripts as having already been evaluated\n\t\tfunction setGlobalEval(elems, refElements) {\n\t\t\tvar elem,\n\t\t\t i = 0;\n\t\t\tfor (; (elem = elems[i]) != null; i++) {\n\t\t\t\tjQuery._data(elem, \"globalEval\", !refElements || jQuery._data(refElements[i], \"globalEval\"));\n\t\t\t}\n\t\t}\n\t\n\t\tvar rhtml = /<|&#?\\w+;/,\n\t\t rtbody = / from table fragments\n\t\t\t\t\t\tif (!support.tbody) {\n\t\n\t\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test(elem) ? tmp.firstChild :\n\t\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test(elem) ? tmp : 0;\n\t\n\t\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\t\twhile (j--) {\n\t\t\t\t\t\t\t\tif (jQuery.nodeName(tbody = elem.childNodes[j], \"tbody\") && !tbody.childNodes.length) {\n\t\n\t\t\t\t\t\t\t\t\telem.removeChild(tbody);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tjQuery.merge(nodes, tmp.childNodes);\n\t\n\t\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\t\ttmp.textContent = \"\";\n\t\n\t\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\t\twhile (tmp.firstChild) {\n\t\t\t\t\t\t\ttmp.removeChild(tmp.firstChild);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Fix #11356: Clear elements from fragment\n\t\t\tif (tmp) {\n\t\t\t\tsafe.removeChild(tmp);\n\t\t\t}\n\t\n\t\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tif (!support.appendChecked) {\n\t\t\t\tjQuery.grep(getAll(nodes, \"input\"), fixDefaultChecked);\n\t\t\t}\n\t\n\t\t\ti = 0;\n\t\t\twhile (elem = nodes[i++]) {\n\t\n\t\t\t\t// Skip elements already in the context collection (trac-4087)\n\t\t\t\tif (selection && jQuery.inArray(elem, selection) > -1) {\n\t\t\t\t\tif (ignored) {\n\t\t\t\t\t\tignored.push(elem);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\n\t\t\t\tcontains = jQuery.contains(elem.ownerDocument, elem);\n\t\n\t\t\t\t// Append to fragment\n\t\t\t\ttmp = getAll(safe.appendChild(elem), \"script\");\n\t\n\t\t\t\t// Preserve script evaluation history\n\t\t\t\tif (contains) {\n\t\t\t\t\tsetGlobalEval(tmp);\n\t\t\t\t}\n\t\n\t\t\t\t// Capture executables\n\t\t\t\tif (scripts) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile (elem = tmp[j++]) {\n\t\t\t\t\t\tif (rscriptType.test(elem.type || \"\")) {\n\t\t\t\t\t\t\tscripts.push(elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ttmp = null;\n\t\n\t\t\treturn safe;\n\t\t}\n\t\n\t\t(function () {\n\t\t\tvar i,\n\t\t\t eventName,\n\t\t\t div = document.createElement(\"div\");\n\t\n\t\t\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\n\t\t\tfor (i in { submit: true, change: true, focusin: true }) {\n\t\t\t\teventName = \"on\" + i;\n\t\n\t\t\t\tif (!(support[i] = eventName in window)) {\n\t\n\t\t\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\t\t\tdiv.setAttribute(eventName, \"t\");\n\t\t\t\t\tsupport[i] = div.attributes[eventName].expando === false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Null elements to avoid leaks in IE.\n\t\t\tdiv = null;\n\t\t})();\n\t\n\t\tvar rformElems = /^(?:input|select|textarea)$/i,\n\t\t rkeyEvent = /^key/,\n\t\t rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\t\t rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\t\t rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\t\n\t\tfunction returnTrue() {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tfunction returnFalse() {\n\t\t\treturn false;\n\t\t}\n\t\n\t\t// Support: IE9\n\t\t// See #13393 for more info\n\t\tfunction safeActiveElement() {\n\t\t\ttry {\n\t\t\t\treturn document.activeElement;\n\t\t\t} catch (err) {}\n\t\t}\n\t\n\t\tfunction on(elem, types, selector, data, fn, one) {\n\t\t\tvar origFn, type;\n\t\n\t\t\t// Types can be a map of types/handlers\n\t\t\tif (typeof types === \"object\") {\n\t\n\t\t\t\t// ( types-Object, selector, data )\n\t\t\t\tif (typeof selector !== \"string\") {\n\t\n\t\t\t\t\t// ( types-Object, data )\n\t\t\t\t\tdata = data || selector;\n\t\t\t\t\tselector = undefined;\n\t\t\t\t}\n\t\t\t\tfor (type in types) {\n\t\t\t\t\ton(elem, type, selector, data, types[type], one);\n\t\t\t\t}\n\t\t\t\treturn elem;\n\t\t\t}\n\t\n\t\t\tif (data == null && fn == null) {\n\t\n\t\t\t\t// ( types, fn )\n\t\t\t\tfn = selector;\n\t\t\t\tdata = selector = undefined;\n\t\t\t} else if (fn == null) {\n\t\t\t\tif (typeof selector === \"string\") {\n\t\n\t\t\t\t\t// ( types, selector, fn )\n\t\t\t\t\tfn = data;\n\t\t\t\t\tdata = undefined;\n\t\t\t\t} else {\n\t\n\t\t\t\t\t// ( types, data, fn )\n\t\t\t\t\tfn = data;\n\t\t\t\t\tdata = selector;\n\t\t\t\t\tselector = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (fn === false) {\n\t\t\t\tfn = returnFalse;\n\t\t\t} else if (!fn) {\n\t\t\t\treturn elem;\n\t\t\t}\n\t\n\t\t\tif (one === 1) {\n\t\t\t\torigFn = fn;\n\t\t\t\tfn = function (event) {\n\t\n\t\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\t\tjQuery().off(event);\n\t\t\t\t\treturn origFn.apply(this, arguments);\n\t\t\t\t};\n\t\n\t\t\t\t// Use same guid so caller can remove using origFn\n\t\t\t\tfn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n\t\t\t}\n\t\t\treturn elem.each(function () {\n\t\t\t\tjQuery.event.add(this, types, fn, data, selector);\n\t\t\t});\n\t\t}\n\t\n\t\t/*\n\t * Helper functions for managing events -- not part of the public interface.\n\t * Props to Dean Edwards' addEvent library for many of the ideas.\n\t */\n\t\tjQuery.event = {\n\t\n\t\t\tglobal: {},\n\t\n\t\t\tadd: function (elem, types, handler, data, selector) {\n\t\t\t\tvar tmp,\n\t\t\t\t events,\n\t\t\t\t t,\n\t\t\t\t handleObjIn,\n\t\t\t\t special,\n\t\t\t\t eventHandle,\n\t\t\t\t handleObj,\n\t\t\t\t handlers,\n\t\t\t\t type,\n\t\t\t\t namespaces,\n\t\t\t\t origType,\n\t\t\t\t elemData = jQuery._data(elem);\n\t\n\t\t\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\t\t\tif (!elemData) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\t\t\tif (handler.handler) {\n\t\t\t\t\thandleObjIn = handler;\n\t\t\t\t\thandler = handleObjIn.handler;\n\t\t\t\t\tselector = handleObjIn.selector;\n\t\t\t\t}\n\t\n\t\t\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\t\t\tif (!handler.guid) {\n\t\t\t\t\thandler.guid = jQuery.guid++;\n\t\t\t\t}\n\t\n\t\t\t\t// Init the element's event structure and main handler, if this is the first\n\t\t\t\tif (!(events = elemData.events)) {\n\t\t\t\t\tevents = elemData.events = {};\n\t\t\t\t}\n\t\t\t\tif (!(eventHandle = elemData.handle)) {\n\t\t\t\t\teventHandle = elemData.handle = function (e) {\n\t\n\t\t\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply(eventHandle.elem, arguments) : undefined;\n\t\t\t\t\t};\n\t\n\t\t\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\n\t\t\t\t\t// with IE non-native events\n\t\t\t\t\teventHandle.elem = elem;\n\t\t\t\t}\n\t\n\t\t\t\t// Handle multiple events separated by a space\n\t\t\t\ttypes = (types || \"\").match(rnotwhite) || [\"\"];\n\t\t\t\tt = types.length;\n\t\t\t\twhile (t--) {\n\t\t\t\t\ttmp = rtypenamespace.exec(types[t]) || [];\n\t\t\t\t\ttype = origType = tmp[1];\n\t\t\t\t\tnamespaces = (tmp[2] || \"\").split(\".\").sort();\n\t\n\t\t\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\t\t\tspecial = jQuery.event.special[type] || {};\n\t\n\t\t\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\t\t\ttype = (selector ? special.delegateType : special.bindType) || type;\n\t\n\t\t\t\t\t// Update special based on newly reset type\n\t\t\t\t\tspecial = jQuery.event.special[type] || {};\n\t\n\t\t\t\t\t// handleObj is passed to all event handlers\n\t\t\t\t\thandleObj = jQuery.extend({\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\torigType: origType,\n\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tguid: handler.guid,\n\t\t\t\t\t\tselector: selector,\n\t\t\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test(selector),\n\t\t\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t\t\t}, handleObjIn);\n\t\n\t\t\t\t\t// Init the event handler queue if we're the first\n\t\t\t\t\tif (!(handlers = events[type])) {\n\t\t\t\t\t\thandlers = events[type] = [];\n\t\t\t\t\t\thandlers.delegateCount = 0;\n\t\n\t\t\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\t\t\tif (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n\t\n\t\t\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\t\t\tif (elem.addEventListener) {\n\t\t\t\t\t\t\t\telem.addEventListener(type, eventHandle, false);\n\t\t\t\t\t\t\t} else if (elem.attachEvent) {\n\t\t\t\t\t\t\t\telem.attachEvent(\"on\" + type, eventHandle);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (special.add) {\n\t\t\t\t\t\tspecial.add.call(elem, handleObj);\n\t\n\t\t\t\t\t\tif (!handleObj.handler.guid) {\n\t\t\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Add to the element's handler list, delegates in front\n\t\t\t\t\tif (selector) {\n\t\t\t\t\t\thandlers.splice(handlers.delegateCount++, 0, handleObj);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandlers.push(handleObj);\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\t\t\tjQuery.event.global[type] = true;\n\t\t\t\t}\n\t\n\t\t\t\t// Nullify elem to prevent memory leaks in IE\n\t\t\t\telem = null;\n\t\t\t},\n\t\n\t\t\t// Detach an event or set of events from an element\n\t\t\tremove: function (elem, types, handler, selector, mappedTypes) {\n\t\t\t\tvar j,\n\t\t\t\t handleObj,\n\t\t\t\t tmp,\n\t\t\t\t origCount,\n\t\t\t\t t,\n\t\t\t\t events,\n\t\t\t\t special,\n\t\t\t\t handlers,\n\t\t\t\t type,\n\t\t\t\t namespaces,\n\t\t\t\t origType,\n\t\t\t\t elemData = jQuery.hasData(elem) && jQuery._data(elem);\n\t\n\t\t\t\tif (!elemData || !(events = elemData.events)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Once for each type.namespace in types; type may be omitted\n\t\t\t\ttypes = (types || \"\").match(rnotwhite) || [\"\"];\n\t\t\t\tt = types.length;\n\t\t\t\twhile (t--) {\n\t\t\t\t\ttmp = rtypenamespace.exec(types[t]) || [];\n\t\t\t\t\ttype = origType = tmp[1];\n\t\t\t\t\tnamespaces = (tmp[2] || \"\").split(\".\").sort();\n\t\n\t\t\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tfor (type in events) {\n\t\t\t\t\t\t\tjQuery.event.remove(elem, type + types[t], handler, selector, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tspecial = jQuery.event.special[type] || {};\n\t\t\t\t\ttype = (selector ? special.delegateType : special.bindType) || type;\n\t\t\t\t\thandlers = events[type] || [];\n\t\t\t\t\ttmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\t\n\t\t\t\t\t// Remove matching events\n\t\t\t\t\torigCount = j = handlers.length;\n\t\t\t\t\twhile (j--) {\n\t\t\t\t\t\thandleObj = handlers[j];\n\t\n\t\t\t\t\t\tif ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n\t\t\t\t\t\t\thandlers.splice(j, 1);\n\t\n\t\t\t\t\t\t\tif (handleObj.selector) {\n\t\t\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (special.remove) {\n\t\t\t\t\t\t\t\tspecial.remove.call(elem, handleObj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\t\t\tif (origCount && !handlers.length) {\n\t\t\t\t\t\tif (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n\t\n\t\t\t\t\t\t\tjQuery.removeEvent(elem, type, elemData.handle);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Remove the expando if it's no longer used\n\t\t\t\tif (jQuery.isEmptyObject(events)) {\n\t\t\t\t\tdelete elemData.handle;\n\t\n\t\t\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t\t\t// so use it instead of delete\n\t\t\t\t\tjQuery._removeData(elem, \"events\");\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\ttrigger: function (event, data, elem, onlyHandlers) {\n\t\t\t\tvar handle,\n\t\t\t\t ontype,\n\t\t\t\t cur,\n\t\t\t\t bubbleType,\n\t\t\t\t special,\n\t\t\t\t tmp,\n\t\t\t\t i,\n\t\t\t\t eventPath = [elem || document],\n\t\t\t\t type = hasOwn.call(event, \"type\") ? event.type : event,\n\t\t\t\t namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n\t\n\t\t\t\tcur = tmp = elem = elem || document;\n\t\n\t\t\t\t// Don't do events on text and comment nodes\n\t\t\t\tif (elem.nodeType === 3 || elem.nodeType === 8) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\t\t\tif (rfocusMorph.test(type + jQuery.event.triggered)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tif (type.indexOf(\".\") > -1) {\n\t\n\t\t\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\t\ttype = namespaces.shift();\n\t\t\t\t\tnamespaces.sort();\n\t\t\t\t}\n\t\t\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\t\n\t\t\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\t\t\tevent = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\t\n\t\t\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\t\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\t\t\tevent.namespace = namespaces.join(\".\");\n\t\t\t\tevent.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\n\t\t\t\t// Clean up the event in case it is being reused\n\t\t\t\tevent.result = undefined;\n\t\t\t\tif (!event.target) {\n\t\t\t\t\tevent.target = elem;\n\t\t\t\t}\n\t\n\t\t\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\t\t\tdata = data == null ? [event] : jQuery.makeArray(data, [event]);\n\t\n\t\t\t\t// Allow special events to draw outside the lines\n\t\t\t\tspecial = jQuery.event.special[type] || {};\n\t\t\t\tif (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\t\t\tif (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {\n\t\n\t\t\t\t\tbubbleType = special.delegateType || type;\n\t\t\t\t\tif (!rfocusMorph.test(bubbleType + type)) {\n\t\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\t}\n\t\t\t\t\tfor (; cur; cur = cur.parentNode) {\n\t\t\t\t\t\teventPath.push(cur);\n\t\t\t\t\t\ttmp = cur;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\t\t\tif (tmp === (elem.ownerDocument || document)) {\n\t\t\t\t\t\teventPath.push(tmp.defaultView || tmp.parentWindow || window);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fire handlers on the event path\n\t\t\t\ti = 0;\n\t\t\t\twhile ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n\t\n\t\t\t\t\tevent.type = i > 1 ? bubbleType : special.bindType || type;\n\t\n\t\t\t\t\t// jQuery handler\n\t\t\t\t\thandle = (jQuery._data(cur, \"events\") || {})[event.type] && jQuery._data(cur, \"handle\");\n\t\n\t\t\t\t\tif (handle) {\n\t\t\t\t\t\thandle.apply(cur, data);\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Native handler\n\t\t\t\t\thandle = ontype && cur[ontype];\n\t\t\t\t\tif (handle && handle.apply && acceptData(cur)) {\n\t\t\t\t\t\tevent.result = handle.apply(cur, data);\n\t\t\t\t\t\tif (event.result === false) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tevent.type = type;\n\t\n\t\t\t\t// If nobody prevented the default action, do it now\n\t\t\t\tif (!onlyHandlers && !event.isDefaultPrevented()) {\n\t\n\t\t\t\t\tif ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n\t\n\t\t\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t\t\tif (ontype && elem[type] && !jQuery.isWindow(elem)) {\n\t\n\t\t\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\t\t\ttmp = elem[ontype];\n\t\n\t\t\t\t\t\t\tif (tmp) {\n\t\t\t\t\t\t\t\telem[ontype] = null;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\telem[type]();\n\t\t\t\t\t\t\t} catch (e) {\n\t\n\t\t\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tjQuery.event.triggered = undefined;\n\t\n\t\t\t\t\t\t\tif (tmp) {\n\t\t\t\t\t\t\t\telem[ontype] = tmp;\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\n\t\t\t\treturn event.result;\n\t\t\t},\n\t\n\t\t\tdispatch: function (event) {\n\t\n\t\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\t\tevent = jQuery.event.fix(event);\n\t\n\t\t\t\tvar i,\n\t\t\t\t j,\n\t\t\t\t ret,\n\t\t\t\t matched,\n\t\t\t\t handleObj,\n\t\t\t\t handlerQueue = [],\n\t\t\t\t args = slice.call(arguments),\n\t\t\t\t handlers = (jQuery._data(this, \"events\") || {})[event.type] || [],\n\t\t\t\t special = jQuery.event.special[event.type] || {};\n\t\n\t\t\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\t\t\targs[0] = event;\n\t\t\t\tevent.delegateTarget = this;\n\t\n\t\t\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\t\t\tif (special.preDispatch && special.preDispatch.call(this, event) === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Determine handlers\n\t\t\t\thandlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\t\n\t\t\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\t\t\ti = 0;\n\t\t\t\twhile ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n\t\t\t\t\tevent.currentTarget = matched.elem;\n\t\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n\t\n\t\t\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\t\t\tif (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {\n\t\n\t\t\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\t\t\tevent.data = handleObj.data;\n\t\n\t\t\t\t\t\t\tret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\t\n\t\t\t\t\t\t\tif (ret !== undefined) {\n\t\t\t\t\t\t\t\tif ((event.result = ret) === false) {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Call the postDispatch hook for the mapped type\n\t\t\t\tif (special.postDispatch) {\n\t\t\t\t\tspecial.postDispatch.call(this, event);\n\t\t\t\t}\n\t\n\t\t\t\treturn event.result;\n\t\t\t},\n\t\n\t\t\thandlers: function (event, handlers) {\n\t\t\t\tvar i,\n\t\t\t\t matches,\n\t\t\t\t sel,\n\t\t\t\t handleObj,\n\t\t\t\t handlerQueue = [],\n\t\t\t\t delegateCount = handlers.delegateCount,\n\t\t\t\t cur = event.target;\n\t\n\t\t\t\t// Support (at least): Chrome, IE9\n\t\t\t\t// Find delegate handlers\n\t\t\t\t// Black-hole SVG instance trees (#13180)\n\t\t\t\t//\n\t\t\t\t// Support: Firefox<=42+\n\t\t\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\t\t\tif (delegateCount && cur.nodeType && (event.type !== \"click\" || isNaN(event.button) || event.button < 1)) {\n\t\n\t\t\t\t\t/* jshint eqeqeq: false */\n\t\t\t\t\tfor (; cur != this; cur = cur.parentNode || this) {\n\t\t\t\t\t\t/* jshint eqeqeq: true */\n\t\n\t\t\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\t\t\tif (cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\")) {\n\t\t\t\t\t\t\tmatches = [];\n\t\t\t\t\t\t\tfor (i = 0; i < delegateCount; i++) {\n\t\t\t\t\t\t\t\thandleObj = handlers[i];\n\t\n\t\t\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\t\n\t\t\t\t\t\t\t\tif (matches[sel] === undefined) {\n\t\t\t\t\t\t\t\t\tmatches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (matches[sel]) {\n\t\t\t\t\t\t\t\t\tmatches.push(handleObj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matches.length) {\n\t\t\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\n\t\t\t\t// Add the remaining (directly-bound) handlers\n\t\t\t\tif (delegateCount < handlers.length) {\n\t\t\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice(delegateCount) });\n\t\t\t\t}\n\t\n\t\t\t\treturn handlerQueue;\n\t\t\t},\n\t\n\t\t\tfix: function (event) {\n\t\t\t\tif (event[jQuery.expando]) {\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\t\n\t\t\t\t// Create a writable copy of the event object and normalize some properties\n\t\t\t\tvar i,\n\t\t\t\t prop,\n\t\t\t\t copy,\n\t\t\t\t type = event.type,\n\t\t\t\t originalEvent = event,\n\t\t\t\t fixHook = this.fixHooks[type];\n\t\n\t\t\t\tif (!fixHook) {\n\t\t\t\t\tthis.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {};\n\t\t\t\t}\n\t\t\t\tcopy = fixHook.props ? this.props.concat(fixHook.props) : this.props;\n\t\n\t\t\t\tevent = new jQuery.Event(originalEvent);\n\t\n\t\t\t\ti = copy.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tprop = copy[i];\n\t\t\t\t\tevent[prop] = originalEvent[prop];\n\t\t\t\t}\n\t\n\t\t\t\t// Support: IE<9\n\t\t\t\t// Fix target property (#1925)\n\t\t\t\tif (!event.target) {\n\t\t\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t\t\t}\n\t\n\t\t\t\t// Support: Safari 6-8+\n\t\t\t\t// Target should not be a text node (#504, #13143)\n\t\t\t\tif (event.target.nodeType === 3) {\n\t\t\t\t\tevent.target = event.target.parentNode;\n\t\t\t\t}\n\t\n\t\t\t\t// Support: IE<9\n\t\t\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\t\t\tevent.metaKey = !!event.metaKey;\n\t\n\t\t\t\treturn fixHook.filter ? fixHook.filter(event, originalEvent) : event;\n\t\t\t},\n\t\n\t\t\t// Includes some event props shared by KeyEvent and MouseEvent\n\t\t\tprops: (\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" + \"metaKey relatedTarget shiftKey target timeStamp view which\").split(\" \"),\n\t\n\t\t\tfixHooks: {},\n\t\n\t\t\tkeyHooks: {\n\t\t\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\t\t\tfilter: function (event, original) {\n\t\n\t\t\t\t\t// Add which for key events\n\t\t\t\t\tif (event.which == null) {\n\t\t\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tmouseHooks: {\n\t\t\t\tprops: (\"button buttons clientX clientY fromElement offsetX offsetY \" + \"pageX pageY screenX screenY toElement\").split(\" \"),\n\t\t\t\tfilter: function (event, original) {\n\t\t\t\t\tvar body,\n\t\t\t\t\t eventDoc,\n\t\t\t\t\t doc,\n\t\t\t\t\t button = original.button,\n\t\t\t\t\t fromElement = original.fromElement;\n\t\n\t\t\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\t\t\tif (event.pageX == null && original.clientX != null) {\n\t\t\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\t\t\tbody = eventDoc.body;\n\t\n\t\t\t\t\t\tevent.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\t\t\t\tevent.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Add relatedTarget, if necessary\n\t\t\t\t\tif (!event.relatedTarget && fromElement) {\n\t\t\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t\t\t// Note: button is not normalized, so don't use it\n\t\t\t\t\tif (!event.which && button !== undefined) {\n\t\t\t\t\t\tevent.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tspecial: {\n\t\t\t\tload: {\n\t\n\t\t\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\t\t\tnoBubble: true\n\t\t\t\t},\n\t\t\t\tfocus: {\n\t\n\t\t\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\t\t\ttrigger: function () {\n\t\t\t\t\t\tif (this !== safeActiveElement() && this.focus) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t} catch (e) {\n\t\n\t\t\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t\t\t// let .trigger() run the handlers\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\tdelegateType: \"focusin\"\n\t\t\t\t},\n\t\t\t\tblur: {\n\t\t\t\t\ttrigger: function () {\n\t\t\t\t\t\tif (this === safeActiveElement() && this.blur) {\n\t\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdelegateType: \"focusout\"\n\t\t\t\t},\n\t\t\t\tclick: {\n\t\n\t\t\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\t\t\ttrigger: function () {\n\t\t\t\t\t\tif (jQuery.nodeName(this, \"input\") && this.type === \"checkbox\" && this.click) {\n\t\t\t\t\t\t\tthis.click();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\n\t\t\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t\t\t_default: function (event) {\n\t\t\t\t\t\treturn jQuery.nodeName(event.target, \"a\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\n\t\t\t\tbeforeunload: {\n\t\t\t\t\tpostDispatch: function (event) {\n\t\n\t\t\t\t\t\t// Support: Firefox 20+\n\t\t\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\t\t\tif (event.result !== undefined && event.originalEvent) {\n\t\t\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// Piggyback on a donor event to simulate a different one\n\t\t\tsimulate: function (type, elem, event) {\n\t\t\t\tvar e = jQuery.extend(new jQuery.Event(), event, {\n\t\t\t\t\ttype: type,\n\t\t\t\t\tisSimulated: true\n\t\n\t\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\n\t\t\t\t\t// would not be triggered on donor event, since in our own\n\t\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\n\t\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\n\t\t\t\t\t//\n\t\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\n\t\t\t\t\t// since `originalEvent` should point to the original event for the\n\t\t\t\t\t// constancy with other events and for more focused logic\n\t\t\t\t});\n\t\n\t\t\t\tjQuery.event.trigger(e, null, elem);\n\t\n\t\t\t\tif (e.isDefaultPrevented()) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tjQuery.removeEvent = document.removeEventListener ? function (elem, type, handle) {\n\t\n\t\t\t// This \"if\" is needed for plain objects\n\t\t\tif (elem.removeEventListener) {\n\t\t\t\telem.removeEventListener(type, handle);\n\t\t\t}\n\t\t} : function (elem, type, handle) {\n\t\t\tvar name = \"on\" + type;\n\t\n\t\t\tif (elem.detachEvent) {\n\t\n\t\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t\t// detachEvent needed property on element, by name of that event,\n\t\t\t\t// to properly expose it to GC\n\t\t\t\tif (typeof elem[name] === \"undefined\") {\n\t\t\t\t\telem[name] = null;\n\t\t\t\t}\n\t\n\t\t\t\telem.detachEvent(name, handle);\n\t\t\t}\n\t\t};\n\t\n\t\tjQuery.Event = function (src, props) {\n\t\n\t\t\t// Allow instantiation without the 'new' keyword\n\t\t\tif (!(this instanceof jQuery.Event)) {\n\t\t\t\treturn new jQuery.Event(src, props);\n\t\t\t}\n\t\n\t\t\t// Event object\n\t\t\tif (src && src.type) {\n\t\t\t\tthis.originalEvent = src;\n\t\t\t\tthis.type = src.type;\n\t\n\t\t\t\t// Events bubbling up the document may have been marked as prevented\n\t\t\t\t// by a handler lower down the tree; reflect the correct value.\n\t\t\t\tthis.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n\t\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ? returnTrue : returnFalse;\n\t\n\t\t\t\t// Event type\n\t\t\t} else {\n\t\t\t\tthis.type = src;\n\t\t\t}\n\t\n\t\t\t// Put explicitly provided properties onto the event object\n\t\t\tif (props) {\n\t\t\t\tjQuery.extend(this, props);\n\t\t\t}\n\t\n\t\t\t// Create a timestamp if incoming event doesn't have one\n\t\t\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\t\n\t\t\t// Mark it as fixed\n\t\t\tthis[jQuery.expando] = true;\n\t\t};\n\t\n\t\t// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n\t\t// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\t\tjQuery.Event.prototype = {\n\t\t\tconstructor: jQuery.Event,\n\t\t\tisDefaultPrevented: returnFalse,\n\t\t\tisPropagationStopped: returnFalse,\n\t\t\tisImmediatePropagationStopped: returnFalse,\n\t\n\t\t\tpreventDefault: function () {\n\t\t\t\tvar e = this.originalEvent;\n\t\n\t\t\t\tthis.isDefaultPrevented = returnTrue;\n\t\t\t\tif (!e) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// If preventDefault exists, run it on the original event\n\t\t\t\tif (e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\n\t\t\t\t\t// Support: IE\n\t\t\t\t\t// Otherwise set the returnValue property of the original event to false\n\t\t\t\t} else {\n\t\t\t\t\te.returnValue = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tstopPropagation: function () {\n\t\t\t\tvar e = this.originalEvent;\n\t\n\t\t\t\tthis.isPropagationStopped = returnTrue;\n\t\n\t\t\t\tif (!e || this.isSimulated) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// If stopPropagation exists, run it on the original event\n\t\t\t\tif (e.stopPropagation) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\n\t\t\t\t// Support: IE\n\t\t\t\t// Set the cancelBubble property of the original event to true\n\t\t\t\te.cancelBubble = true;\n\t\t\t},\n\t\t\tstopImmediatePropagation: function () {\n\t\t\t\tvar e = this.originalEvent;\n\t\n\t\t\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\n\t\t\t\tif (e && e.stopImmediatePropagation) {\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\t\n\t\t\t\tthis.stopPropagation();\n\t\t\t}\n\t\t};\n\t\n\t\t// Create mouseenter/leave events using mouseover/out and event-time checks\n\t\t// so that event delegation works in jQuery.\n\t\t// Do the same for pointerenter/pointerleave and pointerover/pointerout\n\t\t//\n\t\t// Support: Safari 7 only\n\t\t// Safari sends mouseenter too often; see:\n\t\t// https://code.google.com/p/chromium/issues/detail?id=470258\n\t\t// for the description of the bug (it existed in older Chrome versions as well).\n\t\tjQuery.each({\n\t\t\tmouseenter: \"mouseover\",\n\t\t\tmouseleave: \"mouseout\",\n\t\t\tpointerenter: \"pointerover\",\n\t\t\tpointerleave: \"pointerout\"\n\t\t}, function (orig, fix) {\n\t\t\tjQuery.event.special[orig] = {\n\t\t\t\tdelegateType: fix,\n\t\t\t\tbindType: fix,\n\t\n\t\t\t\thandle: function (event) {\n\t\t\t\t\tvar ret,\n\t\t\t\t\t target = this,\n\t\t\t\t\t related = event.relatedTarget,\n\t\t\t\t\t handleObj = event.handleObj;\n\t\n\t\t\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\t\t\tif (!related || related !== target && !jQuery.contains(target, related)) {\n\t\t\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\t\t\tret = handleObj.handler.apply(this, arguments);\n\t\t\t\t\t\tevent.type = fix;\n\t\t\t\t\t}\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\n\t\t// IE submit delegation\n\t\tif (!support.submit) {\n\t\n\t\t\tjQuery.event.special.submit = {\n\t\t\t\tsetup: function () {\n\t\n\t\t\t\t\t// Only need this for delegated form submit events\n\t\t\t\t\tif (jQuery.nodeName(this, \"form\")) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\t\t\tjQuery.event.add(this, \"click._submit keypress._submit\", function (e) {\n\t\n\t\t\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\t form = jQuery.nodeName(elem, \"input\") || jQuery.nodeName(elem, \"button\") ?\n\t\n\t\t\t\t\t\t// Support: IE <=8\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\n\t\t\t\t\t\tjQuery.prop(elem, \"form\") : undefined;\n\t\n\t\t\t\t\t\tif (form && !jQuery._data(form, \"submit\")) {\n\t\t\t\t\t\t\tjQuery.event.add(form, \"submit._submit\", function (event) {\n\t\t\t\t\t\t\t\tevent._submitBubble = true;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tjQuery._data(form, \"submit\", true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\n\t\t\t\t\t// return undefined since we don't need an event listener\n\t\t\t\t},\n\t\n\t\t\t\tpostDispatch: function (event) {\n\t\n\t\t\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\t\t\tif (event._submitBubble) {\n\t\t\t\t\t\tdelete event._submitBubble;\n\t\t\t\t\t\tif (this.parentNode && !event.isTrigger) {\n\t\t\t\t\t\t\tjQuery.event.simulate(\"submit\", this.parentNode, event);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\n\t\t\t\tteardown: function () {\n\t\n\t\t\t\t\t// Only need this for delegated form submit events\n\t\t\t\t\tif (jQuery.nodeName(this, \"form\")) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\t\t\tjQuery.event.remove(this, \"._submit\");\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\n\t\t// IE change delegation and checkbox/radio fix\n\t\tif (!support.change) {\n\t\n\t\t\tjQuery.event.special.change = {\n\t\n\t\t\t\tsetup: function () {\n\t\n\t\t\t\t\tif (rformElems.test(this.nodeName)) {\n\t\n\t\t\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\t\t\tif (this.type === \"checkbox\" || this.type === \"radio\") {\n\t\t\t\t\t\t\tjQuery.event.add(this, \"propertychange._change\", function (event) {\n\t\t\t\t\t\t\t\tif (event.originalEvent.propertyName === \"checked\") {\n\t\t\t\t\t\t\t\t\tthis._justChanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tjQuery.event.add(this, \"click._change\", function (event) {\n\t\t\t\t\t\t\t\tif (this._justChanged && !event.isTrigger) {\n\t\t\t\t\t\t\t\t\tthis._justChanged = false;\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\t\t\tjQuery.event.simulate(\"change\", this, event);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\t\t\tjQuery.event.add(this, \"beforeactivate._change\", function (e) {\n\t\t\t\t\t\tvar elem = e.target;\n\t\n\t\t\t\t\t\tif (rformElems.test(elem.nodeName) && !jQuery._data(elem, \"change\")) {\n\t\t\t\t\t\t\tjQuery.event.add(elem, \"change._change\", function (event) {\n\t\t\t\t\t\t\t\tif (this.parentNode && !event.isSimulated && !event.isTrigger) {\n\t\t\t\t\t\t\t\t\tjQuery.event.simulate(\"change\", this.parentNode, event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tjQuery._data(elem, \"change\", true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\n\t\t\t\thandle: function (event) {\n\t\t\t\t\tvar elem = event.target;\n\t\n\t\t\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\t\t\tif (this !== elem || event.isSimulated || event.isTrigger || elem.type !== \"radio\" && elem.type !== \"checkbox\") {\n\t\n\t\t\t\t\t\treturn event.handleObj.handler.apply(this, arguments);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\n\t\t\t\tteardown: function () {\n\t\t\t\t\tjQuery.event.remove(this, \"._change\");\n\t\n\t\t\t\t\treturn !rformElems.test(this.nodeName);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\n\t\t// Support: Firefox\n\t\t// Firefox doesn't have focus(in | out) events\n\t\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t\t//\n\t\t// Support: Chrome, Safari\n\t\t// focus(in | out) events fire after focus & blur events,\n\t\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t\t// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\n\t\tif (!support.focusin) {\n\t\t\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function (orig, fix) {\n\t\n\t\t\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\t\t\tvar handler = function (event) {\n\t\t\t\t\tjQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n\t\t\t\t};\n\t\n\t\t\t\tjQuery.event.special[fix] = {\n\t\t\t\t\tsetup: function () {\n\t\t\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\t\t attaches = jQuery._data(doc, fix);\n\t\n\t\t\t\t\t\tif (!attaches) {\n\t\t\t\t\t\t\tdoc.addEventListener(orig, handler, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjQuery._data(doc, fix, (attaches || 0) + 1);\n\t\t\t\t\t},\n\t\t\t\t\tteardown: function () {\n\t\t\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\t\t attaches = jQuery._data(doc, fix) - 1;\n\t\n\t\t\t\t\t\tif (!attaches) {\n\t\t\t\t\t\t\tdoc.removeEventListener(orig, handler, true);\n\t\t\t\t\t\t\tjQuery._removeData(doc, fix);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery._data(doc, fix, attaches);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\n\t\tjQuery.fn.extend({\n\t\n\t\t\ton: function (types, selector, data, fn) {\n\t\t\t\treturn on(this, types, selector, data, fn);\n\t\t\t},\n\t\t\tone: function (types, selector, data, fn) {\n\t\t\t\treturn on(this, types, selector, data, fn, 1);\n\t\t\t},\n\t\t\toff: function (types, selector, fn) {\n\t\t\t\tvar handleObj, type;\n\t\t\t\tif (types && types.preventDefault && types.handleObj) {\n\t\n\t\t\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\t\t\thandleObj = types.handleObj;\n\t\t\t\t\tjQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tif (typeof types === \"object\") {\n\t\n\t\t\t\t\t// ( types-object [, selector] )\n\t\t\t\t\tfor (type in types) {\n\t\t\t\t\t\tthis.off(type, selector, types[type]);\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tif (selector === false || typeof selector === \"function\") {\n\t\n\t\t\t\t\t// ( types [, fn] )\n\t\t\t\t\tfn = selector;\n\t\t\t\t\tselector = undefined;\n\t\t\t\t}\n\t\t\t\tif (fn === false) {\n\t\t\t\t\tfn = returnFalse;\n\t\t\t\t}\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\tjQuery.event.remove(this, types, fn, selector);\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\ttrigger: function (type, data) {\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\tjQuery.event.trigger(type, data, this);\n\t\t\t\t});\n\t\t\t},\n\t\t\ttriggerHandler: function (type, data) {\n\t\t\t\tvar elem = this[0];\n\t\t\t\tif (elem) {\n\t\t\t\t\treturn jQuery.event.trigger(type, data, elem, true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\tvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\t\t rnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t\t rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\t\n\t\n\t\t// Support: IE 10-11, Edge 10240+\n\t\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\t\trnoInnerhtml = /\\s*$/g,\n\t\t safeFragment = createSafeFragment(document),\n\t\t fragmentDiv = safeFragment.appendChild(document.createElement(\"div\"));\n\t\n\t\t// Support: IE<8\n\t\t// Manipulating tables requires a tbody\n\t\tfunction manipulationTarget(elem, content) {\n\t\t\treturn jQuery.nodeName(elem, \"table\") && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\") ? elem.getElementsByTagName(\"tbody\")[0] || elem.appendChild(elem.ownerDocument.createElement(\"tbody\")) : elem;\n\t\t}\n\t\n\t\t// Replace/restore the type attribute of script elements for safe DOM manipulation\n\t\tfunction disableScript(elem) {\n\t\t\telem.type = (jQuery.find.attr(elem, \"type\") !== null) + \"/\" + elem.type;\n\t\t\treturn elem;\n\t\t}\n\t\tfunction restoreScript(elem) {\n\t\t\tvar match = rscriptTypeMasked.exec(elem.type);\n\t\t\tif (match) {\n\t\t\t\telem.type = match[1];\n\t\t\t} else {\n\t\t\t\telem.removeAttribute(\"type\");\n\t\t\t}\n\t\t\treturn elem;\n\t\t}\n\t\n\t\tfunction cloneCopyEvent(src, dest) {\n\t\t\tif (dest.nodeType !== 1 || !jQuery.hasData(src)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tvar type,\n\t\t\t i,\n\t\t\t l,\n\t\t\t oldData = jQuery._data(src),\n\t\t\t curData = jQuery._data(dest, oldData),\n\t\t\t events = oldData.events;\n\t\n\t\t\tif (events) {\n\t\t\t\tdelete curData.handle;\n\t\t\t\tcurData.events = {};\n\t\n\t\t\t\tfor (type in events) {\n\t\t\t\t\tfor (i = 0, l = events[type].length; i < l; i++) {\n\t\t\t\t\t\tjQuery.event.add(dest, type, events[type][i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// make the cloned public data object a copy from the original\n\t\t\tif (curData.data) {\n\t\t\t\tcurData.data = jQuery.extend({}, curData.data);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction fixCloneNodeIssues(src, dest) {\n\t\t\tvar nodeName, e, data;\n\t\n\t\t\t// We do not need to do anything for non-Elements\n\t\t\tif (dest.nodeType !== 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tnodeName = dest.nodeName.toLowerCase();\n\t\n\t\t\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\t\t\tif (!support.noCloneEvent && dest[jQuery.expando]) {\n\t\t\t\tdata = jQuery._data(dest);\n\t\n\t\t\t\tfor (e in data.events) {\n\t\t\t\t\tjQuery.removeEvent(dest, e, data.handle);\n\t\t\t\t}\n\t\n\t\t\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\t\t\tdest.removeAttribute(jQuery.expando);\n\t\t\t}\n\t\n\t\t\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\t\t\tif (nodeName === \"script\" && dest.text !== src.text) {\n\t\t\t\tdisableScript(dest).text = src.text;\n\t\t\t\trestoreScript(dest);\n\t\n\t\t\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\t\t} else if (nodeName === \"object\") {\n\t\t\t\tif (dest.parentNode) {\n\t\t\t\t\tdest.outerHTML = src.outerHTML;\n\t\t\t\t}\n\t\n\t\t\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t\t\t// If the src has innerHTML and the destination does not,\n\t\t\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\t\t\tif (support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML)) {\n\t\t\t\t\tdest.innerHTML = src.innerHTML;\n\t\t\t\t}\n\t\t\t} else if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n\t\n\t\t\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\n\t\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\n\t\t\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\t\t\tif (dest.value !== src.value) {\n\t\t\t\t\tdest.value = src.value;\n\t\t\t\t}\n\t\n\t\t\t\t// IE6-8 fails to return the selected option to the default selected\n\t\t\t\t// state when cloning options\n\t\t\t} else if (nodeName === \"option\") {\n\t\t\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\t\n\t\t\t\t// IE6-8 fails to set the defaultValue to the correct value when\n\t\t\t\t// cloning other types of input fields\n\t\t\t} else if (nodeName === \"input\" || nodeName === \"textarea\") {\n\t\t\t\tdest.defaultValue = src.defaultValue;\n\t\t\t}\n\t\t}\n\t\n\t\tfunction domManip(collection, args, callback, ignored) {\n\t\n\t\t\t// Flatten any nested arrays\n\t\t\targs = concat.apply([], args);\n\t\n\t\t\tvar first,\n\t\t\t node,\n\t\t\t hasScripts,\n\t\t\t scripts,\n\t\t\t doc,\n\t\t\t fragment,\n\t\t\t i = 0,\n\t\t\t l = collection.length,\n\t\t\t iNoClone = l - 1,\n\t\t\t value = args[0],\n\t\t\t isFunction = jQuery.isFunction(value);\n\t\n\t\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\t\tif (isFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n\t\t\t\treturn collection.each(function (index) {\n\t\t\t\t\tvar self = collection.eq(index);\n\t\t\t\t\tif (isFunction) {\n\t\t\t\t\t\targs[0] = value.call(this, index, self.html());\n\t\t\t\t\t}\n\t\t\t\t\tdomManip(self, args, callback, ignored);\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\tif (l) {\n\t\t\t\tfragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n\t\t\t\tfirst = fragment.firstChild;\n\t\n\t\t\t\tif (fragment.childNodes.length === 1) {\n\t\t\t\t\tfragment = first;\n\t\t\t\t}\n\t\n\t\t\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\t\t\tif (first || ignored) {\n\t\t\t\t\tscripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n\t\t\t\t\thasScripts = scripts.length;\n\t\n\t\t\t\t\t// Use the original fragment for the last item\n\t\t\t\t\t// instead of the first because it can end up\n\t\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t\tfor (; i < l; i++) {\n\t\t\t\t\t\tnode = fragment;\n\t\n\t\t\t\t\t\tif (i !== iNoClone) {\n\t\t\t\t\t\t\tnode = jQuery.clone(node, true, true);\n\t\n\t\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\t\tif (hasScripts) {\n\t\n\t\t\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\t\t\tjQuery.merge(scripts, getAll(node, \"script\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tcallback.call(collection[i], node, i);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (hasScripts) {\n\t\t\t\t\t\tdoc = scripts[scripts.length - 1].ownerDocument;\n\t\n\t\t\t\t\t\t// Reenable scripts\n\t\t\t\t\t\tjQuery.map(scripts, restoreScript);\n\t\n\t\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\t\tfor (i = 0; i < hasScripts; i++) {\n\t\t\t\t\t\t\tnode = scripts[i];\n\t\t\t\t\t\t\tif (rscriptType.test(node.type || \"\") && !jQuery._data(node, \"globalEval\") && jQuery.contains(doc, node)) {\n\t\n\t\t\t\t\t\t\t\tif (node.src) {\n\t\n\t\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\t\tif (jQuery._evalUrl) {\n\t\t\t\t\t\t\t\t\t\tjQuery._evalUrl(node.src);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tjQuery.globalEval((node.text || node.textContent || node.innerHTML || \"\").replace(rcleanScript, \"\"));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\t\tfragment = first = null;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn collection;\n\t\t}\n\t\n\t\tfunction remove(elem, selector, keepData) {\n\t\t\tvar node,\n\t\t\t elems = selector ? jQuery.filter(selector, elem) : elem,\n\t\t\t i = 0;\n\t\n\t\t\tfor (; (node = elems[i]) != null; i++) {\n\t\n\t\t\t\tif (!keepData && node.nodeType === 1) {\n\t\t\t\t\tjQuery.cleanData(getAll(node));\n\t\t\t\t}\n\t\n\t\t\t\tif (node.parentNode) {\n\t\t\t\t\tif (keepData && jQuery.contains(node.ownerDocument, node)) {\n\t\t\t\t\t\tsetGlobalEval(getAll(node, \"script\"));\n\t\t\t\t\t}\n\t\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn elem;\n\t\t}\n\t\n\t\tjQuery.extend({\n\t\t\thtmlPrefilter: function (html) {\n\t\t\t\treturn html.replace(rxhtmlTag, \"<$1>\");\n\t\t\t},\n\t\n\t\t\tclone: function (elem, dataAndEvents, deepDataAndEvents) {\n\t\t\t\tvar destElements,\n\t\t\t\t node,\n\t\t\t\t clone,\n\t\t\t\t i,\n\t\t\t\t srcElements,\n\t\t\t\t inPage = jQuery.contains(elem.ownerDocument, elem);\n\t\n\t\t\t\tif (support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test(\"<\" + elem.nodeName + \">\")) {\n\t\n\t\t\t\t\tclone = elem.cloneNode(true);\n\t\n\t\t\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\t\t} else {\n\t\t\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\t\t\tfragmentDiv.removeChild(clone = fragmentDiv.firstChild);\n\t\t\t\t}\n\t\n\t\t\t\tif ((!support.noCloneEvent || !support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n\t\n\t\t\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\t\t\tdestElements = getAll(clone);\n\t\t\t\t\tsrcElements = getAll(elem);\n\t\n\t\t\t\t\t// Fix all IE cloning issues\n\t\t\t\t\tfor (i = 0; (node = srcElements[i]) != null; ++i) {\n\t\n\t\t\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\t\t\tif (destElements[i]) {\n\t\t\t\t\t\t\tfixCloneNodeIssues(node, destElements[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Copy the events from the original to the clone\n\t\t\t\tif (dataAndEvents) {\n\t\t\t\t\tif (deepDataAndEvents) {\n\t\t\t\t\t\tsrcElements = srcElements || getAll(elem);\n\t\t\t\t\t\tdestElements = destElements || getAll(clone);\n\t\n\t\t\t\t\t\tfor (i = 0; (node = srcElements[i]) != null; i++) {\n\t\t\t\t\t\t\tcloneCopyEvent(node, destElements[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcloneCopyEvent(elem, clone);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Preserve script evaluation history\n\t\t\t\tdestElements = getAll(clone, \"script\");\n\t\t\t\tif (destElements.length > 0) {\n\t\t\t\t\tsetGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n\t\t\t\t}\n\t\n\t\t\t\tdestElements = srcElements = node = null;\n\t\n\t\t\t\t// Return the cloned set\n\t\t\t\treturn clone;\n\t\t\t},\n\t\n\t\t\tcleanData: function (elems, /* internal */forceAcceptData) {\n\t\t\t\tvar elem,\n\t\t\t\t type,\n\t\t\t\t id,\n\t\t\t\t data,\n\t\t\t\t i = 0,\n\t\t\t\t internalKey = jQuery.expando,\n\t\t\t\t cache = jQuery.cache,\n\t\t\t\t attributes = support.attributes,\n\t\t\t\t special = jQuery.event.special;\n\t\n\t\t\t\tfor (; (elem = elems[i]) != null; i++) {\n\t\t\t\t\tif (forceAcceptData || acceptData(elem)) {\n\t\n\t\t\t\t\t\tid = elem[internalKey];\n\t\t\t\t\t\tdata = id && cache[id];\n\t\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tif (data.events) {\n\t\t\t\t\t\t\t\tfor (type in data.events) {\n\t\t\t\t\t\t\t\t\tif (special[type]) {\n\t\t\t\t\t\t\t\t\t\tjQuery.event.remove(elem, type);\n\t\n\t\t\t\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tjQuery.removeEvent(elem, type, data.handle);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\t\t\tif (cache[id]) {\n\t\n\t\t\t\t\t\t\t\tdelete cache[id];\n\t\n\t\t\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\n\t\t\t\t\t\t\t\t// IE creates expando attributes along with the property\n\t\t\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\n\t\t\t\t\t\t\t\tif (!attributes && typeof elem.removeAttribute !== \"undefined\") {\n\t\t\t\t\t\t\t\t\telem.removeAttribute(internalKey);\n\t\n\t\t\t\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\telem[internalKey] = undefined;\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\tdeletedIds.push(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});\n\t\n\t\tjQuery.fn.extend({\n\t\n\t\t\t// Keep domManip exposed until 3.0 (gh-2225)\n\t\t\tdomManip: domManip,\n\t\n\t\t\tdetach: function (selector) {\n\t\t\t\treturn remove(this, selector, true);\n\t\t\t},\n\t\n\t\t\tremove: function (selector) {\n\t\t\t\treturn remove(this, selector);\n\t\t\t},\n\t\n\t\t\ttext: function (value) {\n\t\t\t\treturn access(this, function (value) {\n\t\t\t\t\treturn value === undefined ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value));\n\t\t\t\t}, null, value, arguments.length);\n\t\t\t},\n\t\n\t\t\tappend: function () {\n\t\t\t\treturn domManip(this, arguments, function (elem) {\n\t\t\t\t\tif (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n\t\t\t\t\t\tvar target = manipulationTarget(this, elem);\n\t\t\t\t\t\ttarget.appendChild(elem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tprepend: function () {\n\t\t\t\treturn domManip(this, arguments, function (elem) {\n\t\t\t\t\tif (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n\t\t\t\t\t\tvar target = manipulationTarget(this, elem);\n\t\t\t\t\t\ttarget.insertBefore(elem, target.firstChild);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tbefore: function () {\n\t\t\t\treturn domManip(this, arguments, function (elem) {\n\t\t\t\t\tif (this.parentNode) {\n\t\t\t\t\t\tthis.parentNode.insertBefore(elem, this);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tafter: function () {\n\t\t\t\treturn domManip(this, arguments, function (elem) {\n\t\t\t\t\tif (this.parentNode) {\n\t\t\t\t\t\tthis.parentNode.insertBefore(elem, this.nextSibling);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tempty: function () {\n\t\t\t\tvar elem,\n\t\t\t\t i = 0;\n\t\n\t\t\t\tfor (; (elem = this[i]) != null; i++) {\n\t\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif (elem.nodeType === 1) {\n\t\t\t\t\t\tjQuery.cleanData(getAll(elem, false));\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Remove any remaining nodes\n\t\t\t\t\twhile (elem.firstChild) {\n\t\t\t\t\t\telem.removeChild(elem.firstChild);\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\tif (elem.options && jQuery.nodeName(elem, \"select\")) {\n\t\t\t\t\t\telem.options.length = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn this;\n\t\t\t},\n\t\n\t\t\tclone: function (dataAndEvents, deepDataAndEvents) {\n\t\t\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\t\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\t\n\t\t\t\treturn this.map(function () {\n\t\t\t\t\treturn jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\thtml: function (value) {\n\t\t\t\treturn access(this, function (value) {\n\t\t\t\t\tvar elem = this[0] || {},\n\t\t\t\t\t i = 0,\n\t\t\t\t\t l = this.length;\n\t\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\treturn elem.nodeType === 1 ? elem.innerHTML.replace(rinlinejQuery, \"\") : undefined;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\t\t\tif (typeof value === \"string\" && !rnoInnerhtml.test(value) && (support.htmlSerialize || !rnoshimcache.test(value)) && (support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n\t\n\t\t\t\t\t\tvalue = jQuery.htmlPrefilter(value);\n\t\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tfor (; i < l; i++) {\n\t\n\t\t\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\t\t\tif (elem.nodeType === 1) {\n\t\t\t\t\t\t\t\t\tjQuery.cleanData(getAll(elem, false));\n\t\t\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\telem = 0;\n\t\n\t\t\t\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (elem) {\n\t\t\t\t\t\tthis.empty().append(value);\n\t\t\t\t\t}\n\t\t\t\t}, null, value, arguments.length);\n\t\t\t},\n\t\n\t\t\treplaceWith: function () {\n\t\t\t\tvar ignored = [];\n\t\n\t\t\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\t\t\treturn domManip(this, arguments, function (elem) {\n\t\t\t\t\tvar parent = this.parentNode;\n\t\n\t\t\t\t\tif (jQuery.inArray(this, ignored) < 0) {\n\t\t\t\t\t\tjQuery.cleanData(getAll(this));\n\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\tparent.replaceChild(elem, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Force callback invocation\n\t\t\t\t}, ignored);\n\t\t\t}\n\t\t});\n\t\n\t\tjQuery.each({\n\t\t\tappendTo: \"append\",\n\t\t\tprependTo: \"prepend\",\n\t\t\tinsertBefore: \"before\",\n\t\t\tinsertAfter: \"after\",\n\t\t\treplaceAll: \"replaceWith\"\n\t\t}, function (name, original) {\n\t\t\tjQuery.fn[name] = function (selector) {\n\t\t\t\tvar elems,\n\t\t\t\t i = 0,\n\t\t\t\t ret = [],\n\t\t\t\t insert = jQuery(selector),\n\t\t\t\t last = insert.length - 1;\n\t\n\t\t\t\tfor (; i <= last; i++) {\n\t\t\t\t\telems = i === last ? this : this.clone(true);\n\t\t\t\t\tjQuery(insert[i])[original](elems);\n\t\n\t\t\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\t\t\tpush.apply(ret, elems.get());\n\t\t\t\t}\n\t\n\t\t\t\treturn this.pushStack(ret);\n\t\t\t};\n\t\t});\n\t\n\t\tvar iframe,\n\t\t elemdisplay = {\n\t\n\t\t\t// Support: Firefox\n\t\t\t// We have to pre-define these values for FF (#10227)\n\t\t\tHTML: \"block\",\n\t\t\tBODY: \"block\"\n\t\t};\n\t\n\t\t/**\n\t * Retrieve the actual display of a element\n\t * @param {String} name nodeName of the element\n\t * @param {Object} doc Document object\n\t */\n\t\n\t\t// Called only from within defaultDisplay\n\t\tfunction actualDisplay(name, doc) {\n\t\t\tvar elem = jQuery(doc.createElement(name)).appendTo(doc.body),\n\t\t\t display = jQuery.css(elem[0], \"display\");\n\t\n\t\t\t// We don't have any data stored on the element,\n\t\t\t// so use \"detach\" method as fast way to get rid of the element\n\t\t\telem.detach();\n\t\n\t\t\treturn display;\n\t\t}\n\t\n\t\t/**\n\t * Try to determine the default display value of an element\n\t * @param {String} nodeName\n\t */\n\t\tfunction defaultDisplay(nodeName) {\n\t\t\tvar doc = document,\n\t\t\t display = elemdisplay[nodeName];\n\t\n\t\t\tif (!display) {\n\t\t\t\tdisplay = actualDisplay(nodeName, doc);\n\t\n\t\t\t\t// If the simple way fails, read from inside an iframe\n\t\t\t\tif (display === \"none\" || !display) {\n\t\n\t\t\t\t\t// Use the already-created iframe if possible\n\t\t\t\t\tiframe = (iframe || jQuery(\"\")\n\t });\n\t modal.show({ backdrop: true });\n\t }\n\t\n\t // ============================================================================\n\t return {\n\t Modal: Modal,\n\t hide_modal: hide_modal,\n\t show_modal: show_modal,\n\t show_message: show_message,\n\t show_in_overlay: show_in_overlay\n\t };\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n\t * bootstrap-tour - v0.10.2\n\t * http://bootstraptour.com\n\t * ========================================================================\n\t * Copyright 2012-2015 Ulrich Sossou\n\t *\n\t * ========================================================================\n\t * Licensed under the MIT License (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * https://opensource.org/licenses/MIT\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t * ========================================================================\n\t */\n\t\n\t(function ($, window) {\n\t var Tour, document;\n\t document = window.document;\n\t Tour = function () {\n\t function Tour(options) {\n\t var storage;\n\t try {\n\t storage = window.localStorage;\n\t } catch (_error) {\n\t storage = false;\n\t }\n\t this._options = $.extend({\n\t name: 'tour',\n\t steps: [],\n\t container: 'body',\n\t autoscroll: true,\n\t keyboard: true,\n\t storage: storage,\n\t debug: false,\n\t backdrop: false,\n\t backdropContainer: 'body',\n\t backdropPadding: 0,\n\t redirect: true,\n\t orphan: false,\n\t duration: false,\n\t delay: false,\n\t basePath: '',\n\t template: '

',\n\t afterSetState: function (key, value) {},\n\t afterGetState: function (key, value) {},\n\t afterRemoveState: function (key) {},\n\t onStart: function (tour) {},\n\t onEnd: function (tour) {},\n\t onShow: function (tour) {},\n\t onShown: function (tour) {},\n\t onHide: function (tour) {},\n\t onHidden: function (tour) {},\n\t onNext: function (tour) {},\n\t onPrev: function (tour) {},\n\t onPause: function (tour, duration) {},\n\t onResume: function (tour, duration) {},\n\t onRedirectError: function (tour) {}\n\t }, options);\n\t this._force = false;\n\t this._inited = false;\n\t this._current = null;\n\t this.backdrop = {\n\t overlay: null,\n\t $element: null,\n\t $background: null,\n\t backgroundShown: false,\n\t overlayElementShown: false\n\t };\n\t this;\n\t }\n\t\n\t Tour.prototype.addSteps = function (steps) {\n\t var step, _i, _len;\n\t for (_i = 0, _len = steps.length; _i < _len; _i++) {\n\t step = steps[_i];\n\t this.addStep(step);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.addStep = function (step) {\n\t this._options.steps.push(step);\n\t return this;\n\t };\n\t\n\t Tour.prototype.getStep = function (i) {\n\t if (this._options.steps[i] != null) {\n\t return $.extend({\n\t id: \"step-\" + i,\n\t path: '',\n\t host: '',\n\t placement: 'right',\n\t title: '',\n\t content: '

',\n\t next: i === this._options.steps.length - 1 ? -1 : i + 1,\n\t prev: i - 1,\n\t animation: true,\n\t container: this._options.container,\n\t autoscroll: this._options.autoscroll,\n\t backdrop: this._options.backdrop,\n\t backdropContainer: this._options.backdropContainer,\n\t backdropPadding: this._options.backdropPadding,\n\t redirect: this._options.redirect,\n\t reflexElement: this._options.steps[i].element,\n\t orphan: this._options.orphan,\n\t duration: this._options.duration,\n\t delay: this._options.delay,\n\t template: this._options.template,\n\t onShow: this._options.onShow,\n\t onShown: this._options.onShown,\n\t onHide: this._options.onHide,\n\t onHidden: this._options.onHidden,\n\t onNext: this._options.onNext,\n\t onPrev: this._options.onPrev,\n\t onPause: this._options.onPause,\n\t onResume: this._options.onResume,\n\t onRedirectError: this._options.onRedirectError\n\t }, this._options.steps[i]);\n\t }\n\t };\n\t\n\t Tour.prototype.init = function (force) {\n\t this._force = force;\n\t if (this.ended()) {\n\t this._debug('Tour ended, init prevented.');\n\t return this;\n\t }\n\t this.setCurrentStep();\n\t this._initMouseNavigation();\n\t this._initKeyboardNavigation();\n\t this._onResize(function (_this) {\n\t return function () {\n\t return _this.showStep(_this._current);\n\t };\n\t }(this));\n\t if (this._current !== null) {\n\t this.showStep(this._current);\n\t }\n\t this._inited = true;\n\t return this;\n\t };\n\t\n\t Tour.prototype.start = function (force) {\n\t var promise;\n\t if (force == null) {\n\t force = false;\n\t }\n\t if (!this._inited) {\n\t this.init(force);\n\t }\n\t if (this._current === null) {\n\t promise = this._makePromise(this._options.onStart != null ? this._options.onStart(this) : void 0);\n\t this._callOnPromiseDone(promise, this.showStep, 0);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.next = function () {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this._showNextStep);\n\t };\n\t\n\t Tour.prototype.prev = function () {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this._showPrevStep);\n\t };\n\t\n\t Tour.prototype.goTo = function (i) {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this.showStep, i);\n\t };\n\t\n\t Tour.prototype.end = function () {\n\t var endHelper, promise;\n\t endHelper = function (_this) {\n\t return function (e) {\n\t $(document).off(\"click.tour-\" + _this._options.name);\n\t $(document).off(\"keyup.tour-\" + _this._options.name);\n\t $(window).off(\"resize.tour-\" + _this._options.name);\n\t _this._setState('end', 'yes');\n\t _this._inited = false;\n\t _this._force = false;\n\t _this._clearTimer();\n\t if (_this._options.onEnd != null) {\n\t return _this._options.onEnd(_this);\n\t }\n\t };\n\t }(this);\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, endHelper);\n\t };\n\t\n\t Tour.prototype.ended = function () {\n\t return !this._force && !!this._getState('end');\n\t };\n\t\n\t Tour.prototype.restart = function () {\n\t this._removeState('current_step');\n\t this._removeState('end');\n\t this._removeState('redirect_to');\n\t return this.start();\n\t };\n\t\n\t Tour.prototype.pause = function () {\n\t var step;\n\t step = this.getStep(this._current);\n\t if (!(step && step.duration)) {\n\t return this;\n\t }\n\t this._paused = true;\n\t this._duration -= new Date().getTime() - this._start;\n\t window.clearTimeout(this._timer);\n\t this._debug(\"Paused/Stopped step \" + (this._current + 1) + \" timer (\" + this._duration + \" remaining).\");\n\t if (step.onPause != null) {\n\t return step.onPause(this, this._duration);\n\t }\n\t };\n\t\n\t Tour.prototype.resume = function () {\n\t var step;\n\t step = this.getStep(this._current);\n\t if (!(step && step.duration)) {\n\t return this;\n\t }\n\t this._paused = false;\n\t this._start = new Date().getTime();\n\t this._duration = this._duration || step.duration;\n\t this._timer = window.setTimeout(function (_this) {\n\t return function () {\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t };\n\t }(this), this._duration);\n\t this._debug(\"Started step \" + (this._current + 1) + \" timer with duration \" + this._duration);\n\t if (step.onResume != null && this._duration !== step.duration) {\n\t return step.onResume(this, this._duration);\n\t }\n\t };\n\t\n\t Tour.prototype.hideStep = function (i) {\n\t var hideStepHelper, promise, step;\n\t step = this.getStep(i);\n\t if (!step) {\n\t return;\n\t }\n\t this._clearTimer();\n\t promise = this._makePromise(step.onHide != null ? step.onHide(this, i) : void 0);\n\t hideStepHelper = function (_this) {\n\t return function (e) {\n\t var $element;\n\t $element = $(step.element);\n\t if (!($element.data('bs.popover') || $element.data('popover'))) {\n\t $element = $('body');\n\t }\n\t $element.popover('destroy').removeClass(\"tour-\" + _this._options.name + \"-element tour-\" + _this._options.name + \"-\" + i + \"-element\");\n\t $element.removeData('bs.popover');\n\t if (step.reflex) {\n\t $(step.reflexElement).removeClass('tour-step-element-reflex').off(\"\" + _this._reflexEvent(step.reflex) + \".tour-\" + _this._options.name);\n\t }\n\t if (step.backdrop) {\n\t _this._hideBackdrop();\n\t }\n\t if (step.onHidden != null) {\n\t return step.onHidden(_this);\n\t }\n\t };\n\t }(this);\n\t this._callOnPromiseDone(promise, hideStepHelper);\n\t return promise;\n\t };\n\t\n\t Tour.prototype.showStep = function (i) {\n\t var promise, showStepHelper, skipToPrevious, step;\n\t if (this.ended()) {\n\t this._debug('Tour ended, showStep prevented.');\n\t return this;\n\t }\n\t step = this.getStep(i);\n\t if (!step) {\n\t return;\n\t }\n\t skipToPrevious = i < this._current;\n\t promise = this._makePromise(step.onShow != null ? step.onShow(this, i) : void 0);\n\t showStepHelper = function (_this) {\n\t return function (e) {\n\t var path, showPopoverAndOverlay;\n\t _this.setCurrentStep(i);\n\t path = function () {\n\t switch ({}.toString.call(step.path)) {\n\t case '[object Function]':\n\t return step.path();\n\t case '[object String]':\n\t return this._options.basePath + step.path;\n\t default:\n\t return step.path;\n\t }\n\t }.call(_this);\n\t if (_this._isRedirect(step.host, path, document.location)) {\n\t _this._redirect(step, i, path);\n\t if (!_this._isJustPathHashDifferent(step.host, path, document.location)) {\n\t return;\n\t }\n\t }\n\t if (_this._isOrphan(step)) {\n\t if (step.orphan === false) {\n\t _this._debug(\"Skip the orphan step \" + (_this._current + 1) + \".\\nOrphan option is false and the element does not exist or is hidden.\");\n\t if (skipToPrevious) {\n\t _this._showPrevStep();\n\t } else {\n\t _this._showNextStep();\n\t }\n\t return;\n\t }\n\t _this._debug(\"Show the orphan step \" + (_this._current + 1) + \". Orphans option is true.\");\n\t }\n\t if (step.backdrop) {\n\t _this._showBackdrop(step);\n\t }\n\t showPopoverAndOverlay = function () {\n\t if (_this.getCurrentStep() !== i || _this.ended()) {\n\t return;\n\t }\n\t if (step.element != null && step.backdrop) {\n\t _this._showOverlayElement(step);\n\t }\n\t _this._showPopover(step, i);\n\t if (step.onShown != null) {\n\t step.onShown(_this);\n\t }\n\t return _this._debug(\"Step \" + (_this._current + 1) + \" of \" + _this._options.steps.length);\n\t };\n\t if (step.autoscroll) {\n\t _this._scrollIntoView(step.element, showPopoverAndOverlay);\n\t } else {\n\t showPopoverAndOverlay();\n\t }\n\t if (step.duration) {\n\t return _this.resume();\n\t }\n\t };\n\t }(this);\n\t if (step.delay) {\n\t this._debug(\"Wait \" + step.delay + \" milliseconds to show the step \" + (this._current + 1));\n\t window.setTimeout(function (_this) {\n\t return function () {\n\t return _this._callOnPromiseDone(promise, showStepHelper);\n\t };\n\t }(this), step.delay);\n\t } else {\n\t this._callOnPromiseDone(promise, showStepHelper);\n\t }\n\t return promise;\n\t };\n\t\n\t Tour.prototype.getCurrentStep = function () {\n\t return this._current;\n\t };\n\t\n\t Tour.prototype.setCurrentStep = function (value) {\n\t if (value != null) {\n\t this._current = value;\n\t this._setState('current_step', value);\n\t } else {\n\t this._current = this._getState('current_step');\n\t this._current = this._current === null ? null : parseInt(this._current, 10);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.redraw = function () {\n\t return this._showOverlayElement(this.getStep(this.getCurrentStep()).element, true);\n\t };\n\t\n\t Tour.prototype._setState = function (key, value) {\n\t var e, keyName;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t try {\n\t this._options.storage.setItem(keyName, value);\n\t } catch (_error) {\n\t e = _error;\n\t if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n\t this._debug('LocalStorage quota exceeded. State storage failed.');\n\t }\n\t }\n\t return this._options.afterSetState(keyName, value);\n\t } else {\n\t if (this._state == null) {\n\t this._state = {};\n\t }\n\t return this._state[key] = value;\n\t }\n\t };\n\t\n\t Tour.prototype._removeState = function (key) {\n\t var keyName;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t this._options.storage.removeItem(keyName);\n\t return this._options.afterRemoveState(keyName);\n\t } else {\n\t if (this._state != null) {\n\t return delete this._state[key];\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._getState = function (key) {\n\t var keyName, value;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t value = this._options.storage.getItem(keyName);\n\t } else {\n\t if (this._state != null) {\n\t value = this._state[key];\n\t }\n\t }\n\t if (value === void 0 || value === 'null') {\n\t value = null;\n\t }\n\t this._options.afterGetState(key, value);\n\t return value;\n\t };\n\t\n\t Tour.prototype._showNextStep = function () {\n\t var promise, showNextStepHelper, step;\n\t step = this.getStep(this._current);\n\t showNextStepHelper = function (_this) {\n\t return function (e) {\n\t return _this.showStep(step.next);\n\t };\n\t }(this);\n\t promise = this._makePromise(step.onNext != null ? step.onNext(this) : void 0);\n\t return this._callOnPromiseDone(promise, showNextStepHelper);\n\t };\n\t\n\t Tour.prototype._showPrevStep = function () {\n\t var promise, showPrevStepHelper, step;\n\t step = this.getStep(this._current);\n\t showPrevStepHelper = function (_this) {\n\t return function (e) {\n\t return _this.showStep(step.prev);\n\t };\n\t }(this);\n\t promise = this._makePromise(step.onPrev != null ? step.onPrev(this) : void 0);\n\t return this._callOnPromiseDone(promise, showPrevStepHelper);\n\t };\n\t\n\t Tour.prototype._debug = function (text) {\n\t if (this._options.debug) {\n\t return window.console.log(\"Bootstrap Tour '\" + this._options.name + \"' | \" + text);\n\t }\n\t };\n\t\n\t Tour.prototype._isRedirect = function (host, path, location) {\n\t var currentPath;\n\t if (host !== '') {\n\t if (this._isHostDifferent(host, location.href)) {\n\t return true;\n\t }\n\t }\n\t currentPath = [location.pathname, location.search, location.hash].join('');\n\t return path != null && path !== '' && ({}.toString.call(path) === '[object RegExp]' && !path.test(currentPath) || {}.toString.call(path) === '[object String]' && this._isPathDifferent(path, currentPath));\n\t };\n\t\n\t Tour.prototype._isHostDifferent = function (host, currentURL) {\n\t return this._getProtocol(host) !== this._getProtocol(currentURL) || this._getHost(host) !== this._getHost(currentURL);\n\t };\n\t\n\t Tour.prototype._isPathDifferent = function (path, currentPath) {\n\t return this._getPath(path) !== this._getPath(currentPath) || !this._equal(this._getQuery(path), this._getQuery(currentPath)) || !this._equal(this._getHash(path), this._getHash(currentPath));\n\t };\n\t\n\t Tour.prototype._isJustPathHashDifferent = function (host, path, location) {\n\t var currentPath;\n\t if (host !== '') {\n\t if (this._isHostDifferent(host, location.href)) {\n\t return false;\n\t }\n\t }\n\t currentPath = [location.pathname, location.search, location.hash].join('');\n\t if ({}.toString.call(path) === '[object String]') {\n\t return this._getPath(path) === this._getPath(currentPath) && this._equal(this._getQuery(path), this._getQuery(currentPath)) && !this._equal(this._getHash(path), this._getHash(currentPath));\n\t }\n\t return false;\n\t };\n\t\n\t Tour.prototype._redirect = function (step, i, path) {\n\t if ($.isFunction(step.redirect)) {\n\t return step.redirect.call(this, path);\n\t } else if (step.redirect === true) {\n\t this._debug(\"Redirect to \" + step.host + path);\n\t if (this._getState('redirect_to') === \"\" + i) {\n\t this._debug(\"Error redirection loop to \" + path);\n\t this._removeState('redirect_to');\n\t if (step.onRedirectError != null) {\n\t return step.onRedirectError(this);\n\t }\n\t } else {\n\t this._setState('redirect_to', \"\" + i);\n\t return document.location.href = \"\" + step.host + path;\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._isOrphan = function (step) {\n\t return step.element == null || !$(step.element).length || $(step.element).is(':hidden') && $(step.element)[0].namespaceURI !== 'http://www.w3.org/2000/svg';\n\t };\n\t\n\t Tour.prototype._isLast = function () {\n\t return this._current < this._options.steps.length - 1;\n\t };\n\t\n\t Tour.prototype._showPopover = function (step, i) {\n\t var $element, $tip, isOrphan, options, shouldAddSmart;\n\t $(\".tour-\" + this._options.name).remove();\n\t options = $.extend({}, this._options);\n\t isOrphan = this._isOrphan(step);\n\t step.template = this._template(step, i);\n\t if (isOrphan) {\n\t step.element = 'body';\n\t step.placement = 'top';\n\t }\n\t $element = $(step.element);\n\t $element.addClass(\"tour-\" + this._options.name + \"-element tour-\" + this._options.name + \"-\" + i + \"-element\");\n\t if (step.options) {\n\t $.extend(options, step.options);\n\t }\n\t if (step.reflex && !isOrphan) {\n\t $(step.reflexElement).addClass('tour-step-element-reflex').off(\"\" + this._reflexEvent(step.reflex) + \".tour-\" + this._options.name).on(\"\" + this._reflexEvent(step.reflex) + \".tour-\" + this._options.name, function (_this) {\n\t return function () {\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t };\n\t }(this));\n\t }\n\t shouldAddSmart = step.smartPlacement === true && step.placement.search(/auto/i) === -1;\n\t $element.popover({\n\t placement: shouldAddSmart ? \"auto \" + step.placement : step.placement,\n\t trigger: 'manual',\n\t title: step.title,\n\t content: step.content,\n\t html: true,\n\t animation: step.animation,\n\t container: step.container,\n\t template: step.template,\n\t selector: step.element\n\t }).popover('show');\n\t $tip = $element.data('bs.popover') ? $element.data('bs.popover').tip() : $element.data('popover').tip();\n\t $tip.attr('id', step.id);\n\t this._reposition($tip, step);\n\t if (isOrphan) {\n\t return this._center($tip);\n\t }\n\t };\n\t\n\t Tour.prototype._template = function (step, i) {\n\t var $navigation, $next, $prev, $resume, $template, template;\n\t template = step.template;\n\t if (this._isOrphan(step) && {}.toString.call(step.orphan) !== '[object Boolean]') {\n\t template = step.orphan;\n\t }\n\t $template = $.isFunction(template) ? $(template(i, step)) : $(template);\n\t $navigation = $template.find('.popover-navigation');\n\t $prev = $navigation.find('[data-role=\"prev\"]');\n\t $next = $navigation.find('[data-role=\"next\"]');\n\t $resume = $navigation.find('[data-role=\"pause-resume\"]');\n\t if (this._isOrphan(step)) {\n\t $template.addClass('orphan');\n\t }\n\t $template.addClass(\"tour-\" + this._options.name + \" tour-\" + this._options.name + \"-\" + i);\n\t if (step.reflex) {\n\t $template.addClass(\"tour-\" + this._options.name + \"-reflex\");\n\t }\n\t if (step.prev < 0) {\n\t $prev.addClass('disabled');\n\t $prev.prop('disabled', true);\n\t }\n\t if (step.next < 0) {\n\t $next.addClass('disabled');\n\t $next.prop('disabled', true);\n\t }\n\t if (!step.duration) {\n\t $resume.remove();\n\t }\n\t return $template.clone().wrap('
').parent().html();\n\t };\n\t\n\t Tour.prototype._reflexEvent = function (reflex) {\n\t if ({}.toString.call(reflex) === '[object Boolean]') {\n\t return 'click';\n\t } else {\n\t return reflex;\n\t }\n\t };\n\t\n\t Tour.prototype._reposition = function ($tip, step) {\n\t var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset;\n\t offsetWidth = $tip[0].offsetWidth;\n\t offsetHeight = $tip[0].offsetHeight;\n\t tipOffset = $tip.offset();\n\t originalLeft = tipOffset.left;\n\t originalTop = tipOffset.top;\n\t offsetBottom = $(document).outerHeight() - tipOffset.top - $tip.outerHeight();\n\t if (offsetBottom < 0) {\n\t tipOffset.top = tipOffset.top + offsetBottom;\n\t }\n\t offsetRight = $('html').outerWidth() - tipOffset.left - $tip.outerWidth();\n\t if (offsetRight < 0) {\n\t tipOffset.left = tipOffset.left + offsetRight;\n\t }\n\t if (tipOffset.top < 0) {\n\t tipOffset.top = 0;\n\t }\n\t if (tipOffset.left < 0) {\n\t tipOffset.left = 0;\n\t }\n\t $tip.offset(tipOffset);\n\t if (step.placement === 'bottom' || step.placement === 'top') {\n\t if (originalLeft !== tipOffset.left) {\n\t return this._replaceArrow($tip, (tipOffset.left - originalLeft) * 2, offsetWidth, 'left');\n\t }\n\t } else {\n\t if (originalTop !== tipOffset.top) {\n\t return this._replaceArrow($tip, (tipOffset.top - originalTop) * 2, offsetHeight, 'top');\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._center = function ($tip) {\n\t return $tip.css('top', $(window).outerHeight() / 2 - $tip.outerHeight() / 2);\n\t };\n\t\n\t Tour.prototype._replaceArrow = function ($tip, delta, dimension, position) {\n\t return $tip.find('.arrow').css(position, delta ? 50 * (1 - delta / dimension) + '%' : '');\n\t };\n\t\n\t Tour.prototype._scrollIntoView = function (element, callback) {\n\t var $element, $window, counter, offsetTop, scrollTop, windowHeight;\n\t $element = $(element);\n\t if (!$element.length) {\n\t return callback();\n\t }\n\t $window = $(window);\n\t offsetTop = $element.offset().top;\n\t windowHeight = $window.height();\n\t scrollTop = Math.max(0, offsetTop - windowHeight / 2);\n\t this._debug(\"Scroll into view. ScrollTop: \" + scrollTop + \". Element offset: \" + offsetTop + \". Window height: \" + windowHeight + \".\");\n\t counter = 0;\n\t return $('body, html').stop(true, true).animate({\n\t scrollTop: Math.ceil(scrollTop)\n\t }, function (_this) {\n\t return function () {\n\t if (++counter === 2) {\n\t callback();\n\t return _this._debug(\"Scroll into view.\\nAnimation end element offset: \" + $element.offset().top + \".\\nWindow height: \" + $window.height() + \".\");\n\t }\n\t };\n\t }(this));\n\t };\n\t\n\t Tour.prototype._onResize = function (callback, timeout) {\n\t return $(window).on(\"resize.tour-\" + this._options.name, function () {\n\t clearTimeout(timeout);\n\t return timeout = setTimeout(callback, 100);\n\t });\n\t };\n\t\n\t Tour.prototype._initMouseNavigation = function () {\n\t var _this;\n\t _this = this;\n\t return $(document).off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\").on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.next();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.prev();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.end();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\", function (e) {\n\t var $this;\n\t e.preventDefault();\n\t $this = $(this);\n\t $this.text(_this._paused ? $this.data('pause-text') : $this.data('resume-text'));\n\t if (_this._paused) {\n\t return _this.resume();\n\t } else {\n\t return _this.pause();\n\t }\n\t });\n\t };\n\t\n\t Tour.prototype._initKeyboardNavigation = function () {\n\t if (!this._options.keyboard) {\n\t return;\n\t }\n\t return $(document).on(\"keyup.tour-\" + this._options.name, function (_this) {\n\t return function (e) {\n\t if (!e.which) {\n\t return;\n\t }\n\t switch (e.which) {\n\t case 39:\n\t e.preventDefault();\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t break;\n\t case 37:\n\t e.preventDefault();\n\t if (_this._current > 0) {\n\t return _this.prev();\n\t }\n\t break;\n\t case 27:\n\t e.preventDefault();\n\t return _this.end();\n\t }\n\t };\n\t }(this));\n\t };\n\t\n\t Tour.prototype._makePromise = function (result) {\n\t if (result && $.isFunction(result.then)) {\n\t return result;\n\t } else {\n\t return null;\n\t }\n\t };\n\t\n\t Tour.prototype._callOnPromiseDone = function (promise, cb, arg) {\n\t if (promise) {\n\t return promise.then(function (_this) {\n\t return function (e) {\n\t return cb.call(_this, arg);\n\t };\n\t }(this));\n\t } else {\n\t return cb.call(this, arg);\n\t }\n\t };\n\t\n\t Tour.prototype._showBackdrop = function (step) {\n\t if (this.backdrop.backgroundShown) {\n\t return;\n\t }\n\t this.backdrop = $('
', {\n\t \"class\": 'tour-backdrop'\n\t });\n\t this.backdrop.backgroundShown = true;\n\t return $(step.backdropContainer).append(this.backdrop);\n\t };\n\t\n\t Tour.prototype._hideBackdrop = function () {\n\t this._hideOverlayElement();\n\t return this._hideBackground();\n\t };\n\t\n\t Tour.prototype._hideBackground = function () {\n\t if (this.backdrop) {\n\t this.backdrop.remove();\n\t this.backdrop.overlay = null;\n\t return this.backdrop.backgroundShown = false;\n\t }\n\t };\n\t\n\t Tour.prototype._showOverlayElement = function (step, force) {\n\t var $element, elementData;\n\t $element = $(step.element);\n\t if (!$element || $element.length === 0 || this.backdrop.overlayElementShown && !force) {\n\t return;\n\t }\n\t if (!this.backdrop.overlayElementShown) {\n\t this.backdrop.$element = $element.addClass('tour-step-backdrop');\n\t this.backdrop.$background = $('
', {\n\t \"class\": 'tour-step-background'\n\t });\n\t this.backdrop.$background.appendTo(step.backdropContainer);\n\t this.backdrop.overlayElementShown = true;\n\t }\n\t elementData = {\n\t width: $element.innerWidth(),\n\t height: $element.innerHeight(),\n\t offset: $element.offset()\n\t };\n\t if (step.backdropPadding) {\n\t elementData = this._applyBackdropPadding(step.backdropPadding, elementData);\n\t }\n\t return this.backdrop.$background.width(elementData.width).height(elementData.height).offset(elementData.offset);\n\t };\n\t\n\t Tour.prototype._hideOverlayElement = function () {\n\t if (!this.backdrop.overlayElementShown) {\n\t return;\n\t }\n\t this.backdrop.$element.removeClass('tour-step-backdrop');\n\t this.backdrop.$background.remove();\n\t this.backdrop.$element = null;\n\t this.backdrop.$background = null;\n\t return this.backdrop.overlayElementShown = false;\n\t };\n\t\n\t Tour.prototype._applyBackdropPadding = function (padding, data) {\n\t if (typeof padding === 'object') {\n\t if (padding.top == null) {\n\t padding.top = 0;\n\t }\n\t if (padding.right == null) {\n\t padding.right = 0;\n\t }\n\t if (padding.bottom == null) {\n\t padding.bottom = 0;\n\t }\n\t if (padding.left == null) {\n\t padding.left = 0;\n\t }\n\t data.offset.top = data.offset.top - padding.top;\n\t data.offset.left = data.offset.left - padding.left;\n\t data.width = data.width + padding.left + padding.right;\n\t data.height = data.height + padding.top + padding.bottom;\n\t } else {\n\t data.offset.top = data.offset.top - padding;\n\t data.offset.left = data.offset.left - padding;\n\t data.width = data.width + padding * 2;\n\t data.height = data.height + padding * 2;\n\t }\n\t return data;\n\t };\n\t\n\t Tour.prototype._clearTimer = function () {\n\t window.clearTimeout(this._timer);\n\t this._timer = null;\n\t return this._duration = null;\n\t };\n\t\n\t Tour.prototype._getProtocol = function (url) {\n\t url = url.split('://');\n\t if (url.length > 1) {\n\t return url[0];\n\t } else {\n\t return 'http';\n\t }\n\t };\n\t\n\t Tour.prototype._getHost = function (url) {\n\t url = url.split('//');\n\t url = url.length > 1 ? url[1] : url[0];\n\t return url.split('/')[0];\n\t };\n\t\n\t Tour.prototype._getPath = function (path) {\n\t return path.replace(/\\/?$/, '').split('?')[0].split('#')[0];\n\t };\n\t\n\t Tour.prototype._getQuery = function (path) {\n\t return this._getParams(path, '?');\n\t };\n\t\n\t Tour.prototype._getHash = function (path) {\n\t return this._getParams(path, '#');\n\t };\n\t\n\t Tour.prototype._getParams = function (path, start) {\n\t var param, params, paramsObject, _i, _len;\n\t params = path.split(start);\n\t if (params.length === 1) {\n\t return {};\n\t }\n\t params = params[1].split('&');\n\t paramsObject = {};\n\t for (_i = 0, _len = params.length; _i < _len; _i++) {\n\t param = params[_i];\n\t param = param.split('=');\n\t paramsObject[param[0]] = param[1] || '';\n\t }\n\t return paramsObject;\n\t };\n\t\n\t Tour.prototype._equal = function (obj1, obj2) {\n\t var k, v;\n\t if ({}.toString.call(obj1) === '[object Object]' && {}.toString.call(obj2) === '[object Object]') {\n\t for (k in obj1) {\n\t v = obj1[k];\n\t if (obj2[k] !== v) {\n\t return false;\n\t }\n\t }\n\t for (k in obj2) {\n\t v = obj2[k];\n\t if (obj1[k] !== v) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\t return obj1 === obj2;\n\t };\n\t\n\t return Tour;\n\t }();\n\t return window.Tour = Tour;\n\t})(jQuery, window);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(jQuery) {/*! jQuery UI - v1.9.1 - 2012-10-29\n\t* http://jqueryui.com\n\t* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.menu.js, jquery.ui.slider.js\n\t* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\t\n\t(function (e, t) {\n\t function i(t, n) {\n\t var r,\n\t i,\n\t o,\n\t u = t.nodeName.toLowerCase();return \"area\" === u ? (r = t.parentNode, i = r.name, !t.href || !i || r.nodeName.toLowerCase() !== \"map\" ? !1 : (o = e(\"img[usemap=#\" + i + \"]\")[0], !!o && s(o))) : (/input|select|textarea|button|object/.test(u) ? !t.disabled : \"a\" === u ? t.href || n : n) && s(t);\n\t }function s(t) {\n\t return e.expr.filters.visible(t) && !e(t).parents().andSelf().filter(function () {\n\t return e.css(this, \"visibility\") === \"hidden\";\n\t }).length;\n\t }var n = 0,\n\t r = /^ui-id-\\d+$/;e.ui = e.ui || {};if (e.ui.version) return;e.extend(e.ui, { version: \"1.9.1\", keyCode: { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 } }), e.fn.extend({ _focus: e.fn.focus, focus: function (t, n) {\n\t return typeof t == \"number\" ? this.each(function () {\n\t var r = this;setTimeout(function () {\n\t e(r).focus(), n && n.call(r);\n\t }, t);\n\t }) : this._focus.apply(this, arguments);\n\t }, scrollParent: function () {\n\t var t;return e.ui.ie && /(static|relative)/.test(this.css(\"position\")) || /absolute/.test(this.css(\"position\")) ? t = this.parents().filter(function () {\n\t return (/(relative|absolute|fixed)/.test(e.css(this, \"position\")) && /(auto|scroll)/.test(e.css(this, \"overflow\") + e.css(this, \"overflow-y\") + e.css(this, \"overflow-x\"))\n\t );\n\t }).eq(0) : t = this.parents().filter(function () {\n\t return (/(auto|scroll)/.test(e.css(this, \"overflow\") + e.css(this, \"overflow-y\") + e.css(this, \"overflow-x\"))\n\t );\n\t }).eq(0), /fixed/.test(this.css(\"position\")) || !t.length ? e(document) : t;\n\t }, zIndex: function (n) {\n\t if (n !== t) return this.css(\"zIndex\", n);if (this.length) {\n\t var r = e(this[0]),\n\t i,\n\t s;while (r.length && r[0] !== document) {\n\t i = r.css(\"position\");if (i === \"absolute\" || i === \"relative\" || i === \"fixed\") {\n\t s = parseInt(r.css(\"zIndex\"), 10);if (!isNaN(s) && s !== 0) return s;\n\t }r = r.parent();\n\t }\n\t }return 0;\n\t }, uniqueId: function () {\n\t return this.each(function () {\n\t this.id || (this.id = \"ui-id-\" + ++n);\n\t });\n\t }, removeUniqueId: function () {\n\t return this.each(function () {\n\t r.test(this.id) && e(this).removeAttr(\"id\");\n\t });\n\t } }), e(\"\").outerWidth(1).jquery || e.each([\"Width\", \"Height\"], function (n, r) {\n\t function u(t, n, r, s) {\n\t return e.each(i, function () {\n\t n -= parseFloat(e.css(t, \"padding\" + this)) || 0, r && (n -= parseFloat(e.css(t, \"border\" + this + \"Width\")) || 0), s && (n -= parseFloat(e.css(t, \"margin\" + this)) || 0);\n\t }), n;\n\t }var i = r === \"Width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\n\t s = r.toLowerCase(),\n\t o = { innerWidth: e.fn.innerWidth, innerHeight: e.fn.innerHeight, outerWidth: e.fn.outerWidth, outerHeight: e.fn.outerHeight };e.fn[\"inner\" + r] = function (n) {\n\t return n === t ? o[\"inner\" + r].call(this) : this.each(function () {\n\t e(this).css(s, u(this, n) + \"px\");\n\t });\n\t }, e.fn[\"outer\" + r] = function (t, n) {\n\t return typeof t != \"number\" ? o[\"outer\" + r].call(this, t) : this.each(function () {\n\t e(this).css(s, u(this, t, !0, n) + \"px\");\n\t });\n\t };\n\t }), e.extend(e.expr[\":\"], { data: e.expr.createPseudo ? e.expr.createPseudo(function (t) {\n\t return function (n) {\n\t return !!e.data(n, t);\n\t };\n\t }) : function (t, n, r) {\n\t return !!e.data(t, r[3]);\n\t }, focusable: function (t) {\n\t return i(t, !isNaN(e.attr(t, \"tabindex\")));\n\t }, tabbable: function (t) {\n\t var n = e.attr(t, \"tabindex\"),\n\t r = isNaN(n);return (r || n >= 0) && i(t, !r);\n\t } }), e(function () {\n\t var t = document.body,\n\t n = t.appendChild(n = document.createElement(\"div\"));n.offsetHeight, e.extend(n.style, { minHeight: \"100px\", height: \"auto\", padding: 0, borderWidth: 0 }), e.support.minHeight = n.offsetHeight === 100, e.support.selectstart = \"onselectstart\" in n, t.removeChild(n).style.display = \"none\";\n\t }), function () {\n\t var t = /msie ([\\w.]+)/.exec(navigator.userAgent.toLowerCase()) || [];e.ui.ie = t.length ? !0 : !1, e.ui.ie6 = parseFloat(t[1], 10) === 6;\n\t }(), e.fn.extend({ disableSelection: function () {\n\t return this.bind((e.support.selectstart ? \"selectstart\" : \"mousedown\") + \".ui-disableSelection\", function (e) {\n\t e.preventDefault();\n\t });\n\t }, enableSelection: function () {\n\t return this.unbind(\".ui-disableSelection\");\n\t } }), e.extend(e.ui, { plugin: { add: function (t, n, r) {\n\t var i,\n\t s = e.ui[t].prototype;for (i in r) s.plugins[i] = s.plugins[i] || [], s.plugins[i].push([n, r[i]]);\n\t }, call: function (e, t, n) {\n\t var r,\n\t i = e.plugins[t];if (!i || !e.element[0].parentNode || e.element[0].parentNode.nodeType === 11) return;for (r = 0; r < i.length; r++) e.options[i[r][0]] && i[r][1].apply(e.element, n);\n\t } }, contains: e.contains, hasScroll: function (t, n) {\n\t if (e(t).css(\"overflow\") === \"hidden\") return !1;var r = n && n === \"left\" ? \"scrollLeft\" : \"scrollTop\",\n\t i = !1;return t[r] > 0 ? !0 : (t[r] = 1, i = t[r] > 0, t[r] = 0, i);\n\t }, isOverAxis: function (e, t, n) {\n\t return e > t && e < t + n;\n\t }, isOver: function (t, n, r, i, s, o) {\n\t return e.ui.isOverAxis(t, r, s) && e.ui.isOverAxis(n, i, o);\n\t } });\n\t})(jQuery);(function (e, t) {\n\t var n = 0,\n\t r = Array.prototype.slice,\n\t i = e.cleanData;e.cleanData = function (t) {\n\t for (var n = 0, r; (r = t[n]) != null; n++) try {\n\t e(r).triggerHandler(\"remove\");\n\t } catch (s) {}i(t);\n\t }, e.widget = function (t, n, r) {\n\t var i,\n\t s,\n\t o,\n\t u,\n\t a = t.split(\".\")[0];t = t.split(\".\")[1], i = a + \"-\" + t, r || (r = n, n = e.Widget), e.expr[\":\"][i.toLowerCase()] = function (t) {\n\t return !!e.data(t, i);\n\t }, e[a] = e[a] || {}, s = e[a][t], o = e[a][t] = function (e, t) {\n\t if (!this._createWidget) return new o(e, t);arguments.length && this._createWidget(e, t);\n\t }, e.extend(o, s, { version: r.version, _proto: e.extend({}, r), _childConstructors: [] }), u = new n(), u.options = e.widget.extend({}, u.options), e.each(r, function (t, i) {\n\t e.isFunction(i) && (r[t] = function () {\n\t var e = function () {\n\t return n.prototype[t].apply(this, arguments);\n\t },\n\t r = function (e) {\n\t return n.prototype[t].apply(this, e);\n\t };return function () {\n\t var t = this._super,\n\t n = this._superApply,\n\t s;return this._super = e, this._superApply = r, s = i.apply(this, arguments), this._super = t, this._superApply = n, s;\n\t };\n\t }());\n\t }), o.prototype = e.widget.extend(u, { widgetEventPrefix: u.widgetEventPrefix || t }, r, { constructor: o, namespace: a, widgetName: t, widgetBaseClass: i, widgetFullName: i }), s ? (e.each(s._childConstructors, function (t, n) {\n\t var r = n.prototype;e.widget(r.namespace + \".\" + r.widgetName, o, n._proto);\n\t }), delete s._childConstructors) : n._childConstructors.push(o), e.widget.bridge(t, o);\n\t }, e.widget.extend = function (n) {\n\t var i = r.call(arguments, 1),\n\t s = 0,\n\t o = i.length,\n\t u,\n\t a;for (; s < o; s++) for (u in i[s]) a = i[s][u], i[s].hasOwnProperty(u) && a !== t && (e.isPlainObject(a) ? n[u] = e.isPlainObject(n[u]) ? e.widget.extend({}, n[u], a) : e.widget.extend({}, a) : n[u] = a);return n;\n\t }, e.widget.bridge = function (n, i) {\n\t var s = i.prototype.widgetFullName;e.fn[n] = function (o) {\n\t var u = typeof o == \"string\",\n\t a = r.call(arguments, 1),\n\t f = this;return o = !u && a.length ? e.widget.extend.apply(null, [o].concat(a)) : o, u ? this.each(function () {\n\t var r,\n\t i = e.data(this, s);if (!i) return e.error(\"cannot call methods on \" + n + \" prior to initialization; \" + \"attempted to call method '\" + o + \"'\");if (!e.isFunction(i[o]) || o.charAt(0) === \"_\") return e.error(\"no such method '\" + o + \"' for \" + n + \" widget instance\");r = i[o].apply(i, a);if (r !== i && r !== t) return f = r && r.jquery ? f.pushStack(r.get()) : r, !1;\n\t }) : this.each(function () {\n\t var t = e.data(this, s);t ? t.option(o || {})._init() : new i(o, this);\n\t }), f;\n\t };\n\t }, e.Widget = function () {}, e.Widget._childConstructors = [], e.Widget.prototype = { widgetName: \"widget\", widgetEventPrefix: \"\", defaultElement: \"
\", options: { disabled: !1, create: null }, _createWidget: function (t, r) {\n\t r = e(r || this.defaultElement || this)[0], this.element = e(r), this.uuid = n++, this.eventNamespace = \".\" + this.widgetName + this.uuid, this.options = e.widget.extend({}, this.options, this._getCreateOptions(), t), this.bindings = e(), this.hoverable = e(), this.focusable = e(), r !== this && (e.data(r, this.widgetName, this), e.data(r, this.widgetFullName, this), this._on(this.element, { remove: function (e) {\n\t e.target === r && this.destroy();\n\t } }), this.document = e(r.style ? r.ownerDocument : r.document || r), this.window = e(this.document[0].defaultView || this.document[0].parentWindow)), this._create(), this._trigger(\"create\", null, this._getCreateEventData()), this._init();\n\t }, _getCreateOptions: e.noop, _getCreateEventData: e.noop, _create: e.noop, _init: e.noop, destroy: function () {\n\t this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)), this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName + \"-disabled \" + \"ui-state-disabled\"), this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass(\"ui-state-hover\"), this.focusable.removeClass(\"ui-state-focus\");\n\t }, _destroy: e.noop, widget: function () {\n\t return this.element;\n\t }, option: function (n, r) {\n\t var i = n,\n\t s,\n\t o,\n\t u;if (arguments.length === 0) return e.widget.extend({}, this.options);if (typeof n == \"string\") {\n\t i = {}, s = n.split(\".\"), n = s.shift();if (s.length) {\n\t o = i[n] = e.widget.extend({}, this.options[n]);for (u = 0; u < s.length - 1; u++) o[s[u]] = o[s[u]] || {}, o = o[s[u]];n = s.pop();if (r === t) return o[n] === t ? null : o[n];o[n] = r;\n\t } else {\n\t if (r === t) return this.options[n] === t ? null : this.options[n];i[n] = r;\n\t }\n\t }return this._setOptions(i), this;\n\t }, _setOptions: function (e) {\n\t var t;for (t in e) this._setOption(t, e[t]);return this;\n\t }, _setOption: function (e, t) {\n\t return this.options[e] = t, e === \"disabled\" && (this.widget().toggleClass(this.widgetFullName + \"-disabled ui-state-disabled\", !!t).attr(\"aria-disabled\", t), this.hoverable.removeClass(\"ui-state-hover\"), this.focusable.removeClass(\"ui-state-focus\")), this;\n\t }, enable: function () {\n\t return this._setOption(\"disabled\", !1);\n\t }, disable: function () {\n\t return this._setOption(\"disabled\", !0);\n\t }, _on: function (t, n) {\n\t var r,\n\t i = this;n ? (t = r = e(t), this.bindings = this.bindings.add(t)) : (n = t, t = this.element, r = this.widget()), e.each(n, function (n, s) {\n\t function o() {\n\t if (i.options.disabled === !0 || e(this).hasClass(\"ui-state-disabled\")) return;return (typeof s == \"string\" ? i[s] : s).apply(i, arguments);\n\t }typeof s != \"string\" && (o.guid = s.guid = s.guid || o.guid || e.guid++);var u = n.match(/^(\\w+)\\s*(.*)$/),\n\t a = u[1] + i.eventNamespace,\n\t f = u[2];f ? r.delegate(f, a, o) : t.bind(a, o);\n\t });\n\t }, _off: function (e, t) {\n\t t = (t || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace, e.unbind(t).undelegate(t);\n\t }, _delay: function (e, t) {\n\t function n() {\n\t return (typeof e == \"string\" ? r[e] : e).apply(r, arguments);\n\t }var r = this;return setTimeout(n, t || 0);\n\t }, _hoverable: function (t) {\n\t this.hoverable = this.hoverable.add(t), this._on(t, { mouseenter: function (t) {\n\t e(t.currentTarget).addClass(\"ui-state-hover\");\n\t }, mouseleave: function (t) {\n\t e(t.currentTarget).removeClass(\"ui-state-hover\");\n\t } });\n\t }, _focusable: function (t) {\n\t this.focusable = this.focusable.add(t), this._on(t, { focusin: function (t) {\n\t e(t.currentTarget).addClass(\"ui-state-focus\");\n\t }, focusout: function (t) {\n\t e(t.currentTarget).removeClass(\"ui-state-focus\");\n\t } });\n\t }, _trigger: function (t, n, r) {\n\t var i,\n\t s,\n\t o = this.options[t];r = r || {}, n = e.Event(n), n.type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), n.target = this.element[0], s = n.originalEvent;if (s) for (i in s) i in n || (n[i] = s[i]);return this.element.trigger(n, r), !(e.isFunction(o) && o.apply(this.element[0], [n].concat(r)) === !1 || n.isDefaultPrevented());\n\t } }, e.each({ show: \"fadeIn\", hide: \"fadeOut\" }, function (t, n) {\n\t e.Widget.prototype[\"_\" + t] = function (r, i, s) {\n\t typeof i == \"string\" && (i = { effect: i });var o,\n\t u = i ? i === !0 || typeof i == \"number\" ? n : i.effect || n : t;i = i || {}, typeof i == \"number\" && (i = { duration: i }), o = !e.isEmptyObject(i), i.complete = s, i.delay && r.delay(i.delay), o && e.effects && (e.effects.effect[u] || e.uiBackCompat !== !1 && e.effects[u]) ? r[t](i) : u !== t && r[u] ? r[u](i.duration, i.easing, s) : r.queue(function (n) {\n\t e(this)[t](), s && s.call(r[0]), n();\n\t });\n\t };\n\t }), e.uiBackCompat !== !1 && (e.Widget.prototype._getCreateOptions = function () {\n\t return e.metadata && e.metadata.get(this.element[0])[this.widgetName];\n\t });\n\t})(jQuery);(function (e, t) {\n\t var n = !1;e(document).mouseup(function (e) {\n\t n = !1;\n\t }), e.widget(\"ui.mouse\", { version: \"1.9.1\", options: { cancel: \"input,textarea,button,select,option\", distance: 1, delay: 0 }, _mouseInit: function () {\n\t var t = this;this.element.bind(\"mousedown.\" + this.widgetName, function (e) {\n\t return t._mouseDown(e);\n\t }).bind(\"click.\" + this.widgetName, function (n) {\n\t if (!0 === e.data(n.target, t.widgetName + \".preventClickEvent\")) return e.removeData(n.target, t.widgetName + \".preventClickEvent\"), n.stopImmediatePropagation(), !1;\n\t }), this.started = !1;\n\t }, _mouseDestroy: function () {\n\t this.element.unbind(\".\" + this.widgetName), this._mouseMoveDelegate && e(document).unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n\t }, _mouseDown: function (t) {\n\t if (n) return;this._mouseStarted && this._mouseUp(t), this._mouseDownEvent = t;var r = this,\n\t i = t.which === 1,\n\t s = typeof this.options.cancel == \"string\" && t.target.nodeName ? e(t.target).closest(this.options.cancel).length : !1;if (!i || s || !this._mouseCapture(t)) return !0;this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () {\n\t r.mouseDelayMet = !0;\n\t }, this.options.delay));if (this._mouseDistanceMet(t) && this._mouseDelayMet(t)) {\n\t this._mouseStarted = this._mouseStart(t) !== !1;if (!this._mouseStarted) return t.preventDefault(), !0;\n\t }return !0 === e.data(t.target, this.widgetName + \".preventClickEvent\") && e.removeData(t.target, this.widgetName + \".preventClickEvent\"), this._mouseMoveDelegate = function (e) {\n\t return r._mouseMove(e);\n\t }, this._mouseUpDelegate = function (e) {\n\t return r._mouseUp(e);\n\t }, e(document).bind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).bind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), t.preventDefault(), n = !0, !0;\n\t }, _mouseMove: function (t) {\n\t return !e.ui.ie || document.documentMode >= 9 || !!t.button ? this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, t) !== !1, this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted) : this._mouseUp(t);\n\t }, _mouseUp: function (t) {\n\t return e(document).unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && e.data(t.target, this.widgetName + \".preventClickEvent\", !0), this._mouseStop(t)), !1;\n\t }, _mouseDistanceMet: function (e) {\n\t return Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance;\n\t }, _mouseDelayMet: function (e) {\n\t return this.mouseDelayMet;\n\t }, _mouseStart: function (e) {}, _mouseDrag: function (e) {}, _mouseStop: function (e) {}, _mouseCapture: function (e) {\n\t return !0;\n\t } });\n\t})(jQuery);(function (e, t) {\n\t function h(e, t, n) {\n\t return [parseInt(e[0], 10) * (l.test(e[0]) ? t / 100 : 1), parseInt(e[1], 10) * (l.test(e[1]) ? n / 100 : 1)];\n\t }function p(t, n) {\n\t return parseInt(e.css(t, n), 10) || 0;\n\t }e.ui = e.ui || {};var n,\n\t r = Math.max,\n\t i = Math.abs,\n\t s = Math.round,\n\t o = /left|center|right/,\n\t u = /top|center|bottom/,\n\t a = /[\\+\\-]\\d+%?/,\n\t f = /^\\w+/,\n\t l = /%$/,\n\t c = e.fn.position;e.position = { scrollbarWidth: function () {\n\t if (n !== t) return n;var r,\n\t i,\n\t s = e(\"
\"),\n\t o = s.children()[0];return e(\"body\").append(s), r = o.offsetWidth, s.css(\"overflow\", \"scroll\"), i = o.offsetWidth, r === i && (i = s[0].clientWidth), s.remove(), n = r - i;\n\t }, getScrollInfo: function (t) {\n\t var n = t.isWindow ? \"\" : t.element.css(\"overflow-x\"),\n\t r = t.isWindow ? \"\" : t.element.css(\"overflow-y\"),\n\t i = n === \"scroll\" || n === \"auto\" && t.width < t.element[0].scrollWidth,\n\t s = r === \"scroll\" || r === \"auto\" && t.height < t.element[0].scrollHeight;return { width: i ? e.position.scrollbarWidth() : 0, height: s ? e.position.scrollbarWidth() : 0 };\n\t }, getWithinInfo: function (t) {\n\t var n = e(t || window),\n\t r = e.isWindow(n[0]);return { element: n, isWindow: r, offset: n.offset() || { left: 0, top: 0 }, scrollLeft: n.scrollLeft(), scrollTop: n.scrollTop(), width: r ? n.width() : n.outerWidth(), height: r ? n.height() : n.outerHeight() };\n\t } }, e.fn.position = function (t) {\n\t if (!t || !t.of) return c.apply(this, arguments);t = e.extend({}, t);var n,\n\t l,\n\t d,\n\t v,\n\t m,\n\t g = e(t.of),\n\t y = e.position.getWithinInfo(t.within),\n\t b = e.position.getScrollInfo(y),\n\t w = g[0],\n\t E = (t.collision || \"flip\").split(\" \"),\n\t S = {};return w.nodeType === 9 ? (l = g.width(), d = g.height(), v = { top: 0, left: 0 }) : e.isWindow(w) ? (l = g.width(), d = g.height(), v = { top: g.scrollTop(), left: g.scrollLeft() }) : w.preventDefault ? (t.at = \"left top\", l = d = 0, v = { top: w.pageY, left: w.pageX }) : (l = g.outerWidth(), d = g.outerHeight(), v = g.offset()), m = e.extend({}, v), e.each([\"my\", \"at\"], function () {\n\t var e = (t[this] || \"\").split(\" \"),\n\t n,\n\t r;e.length === 1 && (e = o.test(e[0]) ? e.concat([\"center\"]) : u.test(e[0]) ? [\"center\"].concat(e) : [\"center\", \"center\"]), e[0] = o.test(e[0]) ? e[0] : \"center\", e[1] = u.test(e[1]) ? e[1] : \"center\", n = a.exec(e[0]), r = a.exec(e[1]), S[this] = [n ? n[0] : 0, r ? r[0] : 0], t[this] = [f.exec(e[0])[0], f.exec(e[1])[0]];\n\t }), E.length === 1 && (E[1] = E[0]), t.at[0] === \"right\" ? m.left += l : t.at[0] === \"center\" && (m.left += l / 2), t.at[1] === \"bottom\" ? m.top += d : t.at[1] === \"center\" && (m.top += d / 2), n = h(S.at, l, d), m.left += n[0], m.top += n[1], this.each(function () {\n\t var o,\n\t u,\n\t a = e(this),\n\t f = a.outerWidth(),\n\t c = a.outerHeight(),\n\t w = p(this, \"marginLeft\"),\n\t x = p(this, \"marginTop\"),\n\t T = f + w + p(this, \"marginRight\") + b.width,\n\t N = c + x + p(this, \"marginBottom\") + b.height,\n\t C = e.extend({}, m),\n\t k = h(S.my, a.outerWidth(), a.outerHeight());t.my[0] === \"right\" ? C.left -= f : t.my[0] === \"center\" && (C.left -= f / 2), t.my[1] === \"bottom\" ? C.top -= c : t.my[1] === \"center\" && (C.top -= c / 2), C.left += k[0], C.top += k[1], e.support.offsetFractions || (C.left = s(C.left), C.top = s(C.top)), o = { marginLeft: w, marginTop: x }, e.each([\"left\", \"top\"], function (r, i) {\n\t e.ui.position[E[r]] && e.ui.position[E[r]][i](C, { targetWidth: l, targetHeight: d, elemWidth: f, elemHeight: c, collisionPosition: o, collisionWidth: T, collisionHeight: N, offset: [n[0] + k[0], n[1] + k[1]], my: t.my, at: t.at, within: y, elem: a });\n\t }), e.fn.bgiframe && a.bgiframe(), t.using && (u = function (e) {\n\t var n = v.left - C.left,\n\t s = n + l - f,\n\t o = v.top - C.top,\n\t u = o + d - c,\n\t h = { target: { element: g, left: v.left, top: v.top, width: l, height: d }, element: { element: a, left: C.left, top: C.top, width: f, height: c }, horizontal: s < 0 ? \"left\" : n > 0 ? \"right\" : \"center\", vertical: u < 0 ? \"top\" : o > 0 ? \"bottom\" : \"middle\" };l < f && i(n + s) < l && (h.horizontal = \"center\"), d < c && i(o + u) < d && (h.vertical = \"middle\"), r(i(n), i(s)) > r(i(o), i(u)) ? h.important = \"horizontal\" : h.important = \"vertical\", t.using.call(this, e, h);\n\t }), a.offset(e.extend(C, { using: u }));\n\t });\n\t }, e.ui.position = { fit: { left: function (e, t) {\n\t var n = t.within,\n\t i = n.isWindow ? n.scrollLeft : n.offset.left,\n\t s = n.width,\n\t o = e.left - t.collisionPosition.marginLeft,\n\t u = i - o,\n\t a = o + t.collisionWidth - s - i,\n\t f;t.collisionWidth > s ? u > 0 && a <= 0 ? (f = e.left + u + t.collisionWidth - s - i, e.left += u - f) : a > 0 && u <= 0 ? e.left = i : u > a ? e.left = i + s - t.collisionWidth : e.left = i : u > 0 ? e.left += u : a > 0 ? e.left -= a : e.left = r(e.left - o, e.left);\n\t }, top: function (e, t) {\n\t var n = t.within,\n\t i = n.isWindow ? n.scrollTop : n.offset.top,\n\t s = t.within.height,\n\t o = e.top - t.collisionPosition.marginTop,\n\t u = i - o,\n\t a = o + t.collisionHeight - s - i,\n\t f;t.collisionHeight > s ? u > 0 && a <= 0 ? (f = e.top + u + t.collisionHeight - s - i, e.top += u - f) : a > 0 && u <= 0 ? e.top = i : u > a ? e.top = i + s - t.collisionHeight : e.top = i : u > 0 ? e.top += u : a > 0 ? e.top -= a : e.top = r(e.top - o, e.top);\n\t } }, flip: { left: function (e, t) {\n\t var n = t.within,\n\t r = n.offset.left + n.scrollLeft,\n\t s = n.width,\n\t o = n.isWindow ? n.scrollLeft : n.offset.left,\n\t u = e.left - t.collisionPosition.marginLeft,\n\t a = u - o,\n\t f = u + t.collisionWidth - s - o,\n\t l = t.my[0] === \"left\" ? -t.elemWidth : t.my[0] === \"right\" ? t.elemWidth : 0,\n\t c = t.at[0] === \"left\" ? t.targetWidth : t.at[0] === \"right\" ? -t.targetWidth : 0,\n\t h = -2 * t.offset[0],\n\t p,\n\t d;if (a < 0) {\n\t p = e.left + l + c + h + t.collisionWidth - s - r;if (p < 0 || p < i(a)) e.left += l + c + h;\n\t } else if (f > 0) {\n\t d = e.left - t.collisionPosition.marginLeft + l + c + h - o;if (d > 0 || i(d) < f) e.left += l + c + h;\n\t }\n\t }, top: function (e, t) {\n\t var n = t.within,\n\t r = n.offset.top + n.scrollTop,\n\t s = n.height,\n\t o = n.isWindow ? n.scrollTop : n.offset.top,\n\t u = e.top - t.collisionPosition.marginTop,\n\t a = u - o,\n\t f = u + t.collisionHeight - s - o,\n\t l = t.my[1] === \"top\",\n\t c = l ? -t.elemHeight : t.my[1] === \"bottom\" ? t.elemHeight : 0,\n\t h = t.at[1] === \"top\" ? t.targetHeight : t.at[1] === \"bottom\" ? -t.targetHeight : 0,\n\t p = -2 * t.offset[1],\n\t d,\n\t v;a < 0 ? (v = e.top + c + h + p + t.collisionHeight - s - r, e.top + c + h + p > a && (v < 0 || v < i(a)) && (e.top += c + h + p)) : f > 0 && (d = e.top - t.collisionPosition.marginTop + c + h + p - o, e.top + c + h + p > f && (d > 0 || i(d) < f) && (e.top += c + h + p));\n\t } }, flipfit: { left: function () {\n\t e.ui.position.flip.left.apply(this, arguments), e.ui.position.fit.left.apply(this, arguments);\n\t }, top: function () {\n\t e.ui.position.flip.top.apply(this, arguments), e.ui.position.fit.top.apply(this, arguments);\n\t } } }, function () {\n\t var t,\n\t n,\n\t r,\n\t i,\n\t s,\n\t o = document.getElementsByTagName(\"body\")[0],\n\t u = document.createElement(\"div\");t = document.createElement(o ? \"div\" : \"body\"), r = { visibility: \"hidden\", width: 0, height: 0, border: 0, margin: 0, background: \"none\" }, o && e.extend(r, { position: \"absolute\", left: \"-1000px\", top: \"-1000px\" });for (s in r) t.style[s] = r[s];t.appendChild(u), n = o || document.documentElement, n.insertBefore(t, n.firstChild), u.style.cssText = \"position: absolute; left: 10.7432222px;\", i = e(u).offset().left, e.support.offsetFractions = i > 10 && i < 11, t.innerHTML = \"\", n.removeChild(t);\n\t }(), e.uiBackCompat !== !1 && function (e) {\n\t var n = e.fn.position;e.fn.position = function (r) {\n\t if (!r || !r.offset) return n.call(this, r);var i = r.offset.split(\" \"),\n\t s = r.at.split(\" \");return i.length === 1 && (i[1] = i[0]), /^\\d/.test(i[0]) && (i[0] = \"+\" + i[0]), /^\\d/.test(i[1]) && (i[1] = \"+\" + i[1]), s.length === 1 && (/left|center|right/.test(s[0]) ? s[1] = \"center\" : (s[1] = s[0], s[0] = \"center\")), n.call(this, e.extend(r, { at: s[0] + i[0] + \" \" + s[1] + i[1], offset: t }));\n\t };\n\t }(jQuery);\n\t})(jQuery);(function (e, t) {\n\t var n = 0;e.widget(\"ui.autocomplete\", { version: \"1.9.1\", defaultElement: \"\", options: { appendTo: \"body\", autoFocus: !1, delay: 300, minLength: 1, position: { my: \"left top\", at: \"left bottom\", collision: \"none\" }, source: null, change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, pending: 0, _create: function () {\n\t var t, n, r;this.isMultiLine = this._isMultiLine(), this.valueMethod = this.element[this.element.is(\"input,textarea\") ? \"val\" : \"text\"], this.isNewMenu = !0, this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\", \"off\"), this._on(this.element, { keydown: function (i) {\n\t if (this.element.prop(\"readOnly\")) {\n\t t = !0, r = !0, n = !0;return;\n\t }t = !1, r = !1, n = !1;var s = e.ui.keyCode;switch (i.keyCode) {case s.PAGE_UP:\n\t t = !0, this._move(\"previousPage\", i);break;case s.PAGE_DOWN:\n\t t = !0, this._move(\"nextPage\", i);break;case s.UP:\n\t t = !0, this._keyEvent(\"previous\", i);break;case s.DOWN:\n\t t = !0, this._keyEvent(\"next\", i);break;case s.ENTER:case s.NUMPAD_ENTER:\n\t this.menu.active && (t = !0, i.preventDefault(), this.menu.select(i));break;case s.TAB:\n\t this.menu.active && this.menu.select(i);break;case s.ESCAPE:\n\t this.menu.element.is(\":visible\") && (this._value(this.term), this.close(i), i.preventDefault());break;default:\n\t n = !0, this._searchTimeout(i);}\n\t }, keypress: function (r) {\n\t if (t) {\n\t t = !1, r.preventDefault();return;\n\t }if (n) return;var i = e.ui.keyCode;switch (r.keyCode) {case i.PAGE_UP:\n\t this._move(\"previousPage\", r);break;case i.PAGE_DOWN:\n\t this._move(\"nextPage\", r);break;case i.UP:\n\t this._keyEvent(\"previous\", r);break;case i.DOWN:\n\t this._keyEvent(\"next\", r);}\n\t }, input: function (e) {\n\t if (r) {\n\t r = !1, e.preventDefault();return;\n\t }this._searchTimeout(e);\n\t }, focus: function () {\n\t this.selectedItem = null, this.previous = this._value();\n\t }, blur: function (e) {\n\t if (this.cancelBlur) {\n\t delete this.cancelBlur;return;\n\t }clearTimeout(this.searching), this.close(e), this._change(e);\n\t } }), this._initSource(), this.menu = e(\"
    \").addClass(\"ui-autocomplete\").appendTo(this.document.find(this.options.appendTo || \"body\")[0]).menu({ input: e(), role: null }).zIndex(this.element.zIndex() + 1).hide().data(\"menu\"), this._on(this.menu.element, { mousedown: function (t) {\n\t t.preventDefault(), this.cancelBlur = !0, this._delay(function () {\n\t delete this.cancelBlur;\n\t });var n = this.menu.element[0];e(t.target).closest(\".ui-menu-item\").length || this._delay(function () {\n\t var t = this;this.document.one(\"mousedown\", function (r) {\n\t r.target !== t.element[0] && r.target !== n && !e.contains(n, r.target) && t.close();\n\t });\n\t });\n\t }, menufocus: function (t, n) {\n\t if (this.isNewMenu) {\n\t this.isNewMenu = !1;if (t.originalEvent && /^mouse/.test(t.originalEvent.type)) {\n\t this.menu.blur(), this.document.one(\"mousemove\", function () {\n\t e(t.target).trigger(t.originalEvent);\n\t });return;\n\t }\n\t }var r = n.item.data(\"ui-autocomplete-item\") || n.item.data(\"item.autocomplete\");!1 !== this._trigger(\"focus\", t, { item: r }) ? t.originalEvent && /^key/.test(t.originalEvent.type) && this._value(r.value) : this.liveRegion.text(r.value);\n\t }, menuselect: function (e, t) {\n\t var n = t.item.data(\"ui-autocomplete-item\") || t.item.data(\"item.autocomplete\"),\n\t r = this.previous;this.element[0] !== this.document[0].activeElement && (this.element.focus(), this.previous = r, this._delay(function () {\n\t this.previous = r, this.selectedItem = n;\n\t })), !1 !== this._trigger(\"select\", e, { item: n }) && this._value(n.value), this.term = this._value(), this.close(e), this.selectedItem = n;\n\t } }), this.liveRegion = e(\"\", { role: \"status\", \"aria-live\": \"polite\" }).addClass(\"ui-helper-hidden-accessible\").insertAfter(this.element), e.fn.bgiframe && this.menu.element.bgiframe(), this._on(this.window, { beforeunload: function () {\n\t this.element.removeAttr(\"autocomplete\");\n\t } });\n\t }, _destroy: function () {\n\t clearTimeout(this.searching), this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"), this.menu.element.remove(), this.liveRegion.remove();\n\t }, _setOption: function (e, t) {\n\t this._super(e, t), e === \"source\" && this._initSource(), e === \"appendTo\" && this.menu.element.appendTo(this.document.find(t || \"body\")[0]), e === \"disabled\" && t && this.xhr && this.xhr.abort();\n\t }, _isMultiLine: function () {\n\t return this.element.is(\"textarea\") ? !0 : this.element.is(\"input\") ? !1 : this.element.prop(\"isContentEditable\");\n\t }, _initSource: function () {\n\t var t,\n\t n,\n\t r = this;e.isArray(this.options.source) ? (t = this.options.source, this.source = function (n, r) {\n\t r(e.ui.autocomplete.filter(t, n.term));\n\t }) : typeof this.options.source == \"string\" ? (n = this.options.source, this.source = function (t, i) {\n\t r.xhr && r.xhr.abort(), r.xhr = e.ajax({ url: n, data: t, dataType: \"json\", success: function (e) {\n\t i(e);\n\t }, error: function () {\n\t i([]);\n\t } });\n\t }) : this.source = this.options.source;\n\t }, _searchTimeout: function (e) {\n\t clearTimeout(this.searching), this.searching = this._delay(function () {\n\t this.term !== this._value() && (this.selectedItem = null, this.search(null, e));\n\t }, this.options.delay);\n\t }, search: function (e, t) {\n\t e = e != null ? e : this._value(), this.term = this._value();if (e.length < this.options.minLength) return this.close(t);if (this._trigger(\"search\", t) === !1) return;return this._search(e);\n\t }, _search: function (e) {\n\t this.pending++, this.element.addClass(\"ui-autocomplete-loading\"), this.cancelSearch = !1, this.source({ term: e }, this._response());\n\t }, _response: function () {\n\t var e = this,\n\t t = ++n;return function (r) {\n\t t === n && e.__response(r), e.pending--, e.pending || e.element.removeClass(\"ui-autocomplete-loading\");\n\t };\n\t }, __response: function (e) {\n\t e && (e = this._normalize(e)), this._trigger(\"response\", null, { content: e }), !this.options.disabled && e && e.length && !this.cancelSearch ? (this._suggest(e), this._trigger(\"open\")) : this._close();\n\t }, close: function (e) {\n\t this.cancelSearch = !0, this._close(e);\n\t }, _close: function (e) {\n\t this.menu.element.is(\":visible\") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger(\"close\", e));\n\t }, _change: function (e) {\n\t this.previous !== this._value() && this._trigger(\"change\", e, { item: this.selectedItem });\n\t }, _normalize: function (t) {\n\t return t.length && t[0].label && t[0].value ? t : e.map(t, function (t) {\n\t return typeof t == \"string\" ? { label: t, value: t } : e.extend({ label: t.label || t.value, value: t.value || t.label }, t);\n\t });\n\t }, _suggest: function (t) {\n\t var n = this.menu.element.empty().zIndex(this.element.zIndex() + 1);this._renderMenu(n, t), this.menu.refresh(), n.show(), this._resizeMenu(), n.position(e.extend({ of: this.element }, this.options.position)), this.options.autoFocus && this.menu.next();\n\t }, _resizeMenu: function () {\n\t var e = this.menu.element;e.outerWidth(Math.max(e.width(\"\").outerWidth() + 1, this.element.outerWidth()));\n\t }, _renderMenu: function (t, n) {\n\t var r = this;e.each(n, function (e, n) {\n\t r._renderItemData(t, n);\n\t });\n\t }, _renderItemData: function (e, t) {\n\t return this._renderItem(e, t).data(\"ui-autocomplete-item\", t);\n\t }, _renderItem: function (t, n) {\n\t return e(\"
  • \").append(e(\"\").text(n.label)).appendTo(t);\n\t }, _move: function (e, t) {\n\t if (!this.menu.element.is(\":visible\")) {\n\t this.search(null, t);return;\n\t }if (this.menu.isFirstItem() && /^previous/.test(e) || this.menu.isLastItem() && /^next/.test(e)) {\n\t this._value(this.term), this.menu.blur();return;\n\t }this.menu[e](t);\n\t }, widget: function () {\n\t return this.menu.element;\n\t }, _value: function () {\n\t return this.valueMethod.apply(this.element, arguments);\n\t }, _keyEvent: function (e, t) {\n\t if (!this.isMultiLine || this.menu.element.is(\":visible\")) this._move(e, t), t.preventDefault();\n\t } }), e.extend(e.ui.autocomplete, { escapeRegex: function (e) {\n\t return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t }, filter: function (t, n) {\n\t var r = new RegExp(e.ui.autocomplete.escapeRegex(n), \"i\");return e.grep(t, function (e) {\n\t return r.test(e.label || e.value || e);\n\t });\n\t } }), e.widget(\"ui.autocomplete\", e.ui.autocomplete, { options: { messages: { noResults: \"No search results.\", results: function (e) {\n\t return e + (e > 1 ? \" results are\" : \" result is\") + \" available, use up and down arrow keys to navigate.\";\n\t } } }, __response: function (e) {\n\t var t;this._superApply(arguments);if (this.options.disabled || this.cancelSearch) return;e && e.length ? t = this.options.messages.results(e.length) : t = this.options.messages.noResults, this.liveRegion.text(t);\n\t } });\n\t})(jQuery);(function (e, t) {\n\t var n,\n\t r,\n\t i,\n\t s,\n\t o = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\t u = \"ui-state-hover ui-state-active \",\n\t a = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\t f = function () {\n\t var t = e(this).find(\":ui-button\");setTimeout(function () {\n\t t.button(\"refresh\");\n\t }, 1);\n\t },\n\t l = function (t) {\n\t var n = t.name,\n\t r = t.form,\n\t i = e([]);return n && (r ? i = e(r).find(\"[name='\" + n + \"']\") : i = e(\"[name='\" + n + \"']\", t.ownerDocument).filter(function () {\n\t return !this.form;\n\t })), i;\n\t };e.widget(\"ui.button\", { version: \"1.9.1\", defaultElement: \"
\"\n )\n });\n modal.show( { backdrop: true } );\n}\n\n\n// ============================================================================\n return {\n Modal : Modal,\n hide_modal : hide_modal,\n show_modal : show_modal,\n show_message : show_message,\n show_in_overlay : show_in_overlay,\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/modal.js","/* ========================================================================\n * bootstrap-tour - v0.10.2\n * http://bootstraptour.com\n * ========================================================================\n * Copyright 2012-2015 Ulrich Sossou\n *\n * ========================================================================\n * Licensed under the MIT License (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://opensource.org/licenses/MIT\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================================\n */\n\n(function($, window) {\n var Tour, document;\n document = window.document;\n Tour = (function() {\n function Tour(options) {\n var storage;\n try {\n storage = window.localStorage;\n } catch (_error) {\n storage = false;\n }\n this._options = $.extend({\n name: 'tour',\n steps: [],\n container: 'body',\n autoscroll: true,\n keyboard: true,\n storage: storage,\n debug: false,\n backdrop: false,\n backdropContainer: 'body',\n backdropPadding: 0,\n redirect: true,\n orphan: false,\n duration: false,\n delay: false,\n basePath: '',\n template: '

',\n afterSetState: function(key, value) {},\n afterGetState: function(key, value) {},\n afterRemoveState: function(key) {},\n onStart: function(tour) {},\n onEnd: function(tour) {},\n onShow: function(tour) {},\n onShown: function(tour) {},\n onHide: function(tour) {},\n onHidden: function(tour) {},\n onNext: function(tour) {},\n onPrev: function(tour) {},\n onPause: function(tour, duration) {},\n onResume: function(tour, duration) {},\n onRedirectError: function(tour) {}\n }, options);\n this._force = false;\n this._inited = false;\n this._current = null;\n this.backdrop = {\n overlay: null,\n $element: null,\n $background: null,\n backgroundShown: false,\n overlayElementShown: false\n };\n this;\n }\n\n Tour.prototype.addSteps = function(steps) {\n var step, _i, _len;\n for (_i = 0, _len = steps.length; _i < _len; _i++) {\n step = steps[_i];\n this.addStep(step);\n }\n return this;\n };\n\n Tour.prototype.addStep = function(step) {\n this._options.steps.push(step);\n return this;\n };\n\n Tour.prototype.getStep = function(i) {\n if (this._options.steps[i] != null) {\n return $.extend({\n id: \"step-\" + i,\n path: '',\n host: '',\n placement: 'right',\n title: '',\n content: '

',\n next: i === this._options.steps.length - 1 ? -1 : i + 1,\n prev: i - 1,\n animation: true,\n container: this._options.container,\n autoscroll: this._options.autoscroll,\n backdrop: this._options.backdrop,\n backdropContainer: this._options.backdropContainer,\n backdropPadding: this._options.backdropPadding,\n redirect: this._options.redirect,\n reflexElement: this._options.steps[i].element,\n orphan: this._options.orphan,\n duration: this._options.duration,\n delay: this._options.delay,\n template: this._options.template,\n onShow: this._options.onShow,\n onShown: this._options.onShown,\n onHide: this._options.onHide,\n onHidden: this._options.onHidden,\n onNext: this._options.onNext,\n onPrev: this._options.onPrev,\n onPause: this._options.onPause,\n onResume: this._options.onResume,\n onRedirectError: this._options.onRedirectError\n }, this._options.steps[i]);\n }\n };\n\n Tour.prototype.init = function(force) {\n this._force = force;\n if (this.ended()) {\n this._debug('Tour ended, init prevented.');\n return this;\n }\n this.setCurrentStep();\n this._initMouseNavigation();\n this._initKeyboardNavigation();\n this._onResize((function(_this) {\n return function() {\n return _this.showStep(_this._current);\n };\n })(this));\n if (this._current !== null) {\n this.showStep(this._current);\n }\n this._inited = true;\n return this;\n };\n\n Tour.prototype.start = function(force) {\n var promise;\n if (force == null) {\n force = false;\n }\n if (!this._inited) {\n this.init(force);\n }\n if (this._current === null) {\n promise = this._makePromise(this._options.onStart != null ? this._options.onStart(this) : void 0);\n this._callOnPromiseDone(promise, this.showStep, 0);\n }\n return this;\n };\n\n Tour.prototype.next = function() {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this._showNextStep);\n };\n\n Tour.prototype.prev = function() {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this._showPrevStep);\n };\n\n Tour.prototype.goTo = function(i) {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this.showStep, i);\n };\n\n Tour.prototype.end = function() {\n var endHelper, promise;\n endHelper = (function(_this) {\n return function(e) {\n $(document).off(\"click.tour-\" + _this._options.name);\n $(document).off(\"keyup.tour-\" + _this._options.name);\n $(window).off(\"resize.tour-\" + _this._options.name);\n _this._setState('end', 'yes');\n _this._inited = false;\n _this._force = false;\n _this._clearTimer();\n if (_this._options.onEnd != null) {\n return _this._options.onEnd(_this);\n }\n };\n })(this);\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, endHelper);\n };\n\n Tour.prototype.ended = function() {\n return !this._force && !!this._getState('end');\n };\n\n Tour.prototype.restart = function() {\n this._removeState('current_step');\n this._removeState('end');\n this._removeState('redirect_to');\n return this.start();\n };\n\n Tour.prototype.pause = function() {\n var step;\n step = this.getStep(this._current);\n if (!(step && step.duration)) {\n return this;\n }\n this._paused = true;\n this._duration -= new Date().getTime() - this._start;\n window.clearTimeout(this._timer);\n this._debug(\"Paused/Stopped step \" + (this._current + 1) + \" timer (\" + this._duration + \" remaining).\");\n if (step.onPause != null) {\n return step.onPause(this, this._duration);\n }\n };\n\n Tour.prototype.resume = function() {\n var step;\n step = this.getStep(this._current);\n if (!(step && step.duration)) {\n return this;\n }\n this._paused = false;\n this._start = new Date().getTime();\n this._duration = this._duration || step.duration;\n this._timer = window.setTimeout((function(_this) {\n return function() {\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n };\n })(this), this._duration);\n this._debug(\"Started step \" + (this._current + 1) + \" timer with duration \" + this._duration);\n if ((step.onResume != null) && this._duration !== step.duration) {\n return step.onResume(this, this._duration);\n }\n };\n\n Tour.prototype.hideStep = function(i) {\n var hideStepHelper, promise, step;\n step = this.getStep(i);\n if (!step) {\n return;\n }\n this._clearTimer();\n promise = this._makePromise(step.onHide != null ? step.onHide(this, i) : void 0);\n hideStepHelper = (function(_this) {\n return function(e) {\n var $element;\n $element = $(step.element);\n if (!($element.data('bs.popover') || $element.data('popover'))) {\n $element = $('body');\n }\n $element.popover('destroy').removeClass(\"tour-\" + _this._options.name + \"-element tour-\" + _this._options.name + \"-\" + i + \"-element\");\n $element.removeData('bs.popover');\n if (step.reflex) {\n $(step.reflexElement).removeClass('tour-step-element-reflex').off(\"\" + (_this._reflexEvent(step.reflex)) + \".tour-\" + _this._options.name);\n }\n if (step.backdrop) {\n _this._hideBackdrop();\n }\n if (step.onHidden != null) {\n return step.onHidden(_this);\n }\n };\n })(this);\n this._callOnPromiseDone(promise, hideStepHelper);\n return promise;\n };\n\n Tour.prototype.showStep = function(i) {\n var promise, showStepHelper, skipToPrevious, step;\n if (this.ended()) {\n this._debug('Tour ended, showStep prevented.');\n return this;\n }\n step = this.getStep(i);\n if (!step) {\n return;\n }\n skipToPrevious = i < this._current;\n promise = this._makePromise(step.onShow != null ? step.onShow(this, i) : void 0);\n showStepHelper = (function(_this) {\n return function(e) {\n var path, showPopoverAndOverlay;\n _this.setCurrentStep(i);\n path = (function() {\n switch ({}.toString.call(step.path)) {\n case '[object Function]':\n return step.path();\n case '[object String]':\n return this._options.basePath + step.path;\n default:\n return step.path;\n }\n }).call(_this);\n if (_this._isRedirect(step.host, path, document.location)) {\n _this._redirect(step, i, path);\n if (!_this._isJustPathHashDifferent(step.host, path, document.location)) {\n return;\n }\n }\n if (_this._isOrphan(step)) {\n if (step.orphan === false) {\n _this._debug(\"Skip the orphan step \" + (_this._current + 1) + \".\\nOrphan option is false and the element does not exist or is hidden.\");\n if (skipToPrevious) {\n _this._showPrevStep();\n } else {\n _this._showNextStep();\n }\n return;\n }\n _this._debug(\"Show the orphan step \" + (_this._current + 1) + \". Orphans option is true.\");\n }\n if (step.backdrop) {\n _this._showBackdrop(step);\n }\n showPopoverAndOverlay = function() {\n if (_this.getCurrentStep() !== i || _this.ended()) {\n return;\n }\n if ((step.element != null) && step.backdrop) {\n _this._showOverlayElement(step);\n }\n _this._showPopover(step, i);\n if (step.onShown != null) {\n step.onShown(_this);\n }\n return _this._debug(\"Step \" + (_this._current + 1) + \" of \" + _this._options.steps.length);\n };\n if (step.autoscroll) {\n _this._scrollIntoView(step.element, showPopoverAndOverlay);\n } else {\n showPopoverAndOverlay();\n }\n if (step.duration) {\n return _this.resume();\n }\n };\n })(this);\n if (step.delay) {\n this._debug(\"Wait \" + step.delay + \" milliseconds to show the step \" + (this._current + 1));\n window.setTimeout((function(_this) {\n return function() {\n return _this._callOnPromiseDone(promise, showStepHelper);\n };\n })(this), step.delay);\n } else {\n this._callOnPromiseDone(promise, showStepHelper);\n }\n return promise;\n };\n\n Tour.prototype.getCurrentStep = function() {\n return this._current;\n };\n\n Tour.prototype.setCurrentStep = function(value) {\n if (value != null) {\n this._current = value;\n this._setState('current_step', value);\n } else {\n this._current = this._getState('current_step');\n this._current = this._current === null ? null : parseInt(this._current, 10);\n }\n return this;\n };\n\n Tour.prototype.redraw = function() {\n return this._showOverlayElement(this.getStep(this.getCurrentStep()).element, true);\n };\n\n Tour.prototype._setState = function(key, value) {\n var e, keyName;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n try {\n this._options.storage.setItem(keyName, value);\n } catch (_error) {\n e = _error;\n if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n this._debug('LocalStorage quota exceeded. State storage failed.');\n }\n }\n return this._options.afterSetState(keyName, value);\n } else {\n if (this._state == null) {\n this._state = {};\n }\n return this._state[key] = value;\n }\n };\n\n Tour.prototype._removeState = function(key) {\n var keyName;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n this._options.storage.removeItem(keyName);\n return this._options.afterRemoveState(keyName);\n } else {\n if (this._state != null) {\n return delete this._state[key];\n }\n }\n };\n\n Tour.prototype._getState = function(key) {\n var keyName, value;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n value = this._options.storage.getItem(keyName);\n } else {\n if (this._state != null) {\n value = this._state[key];\n }\n }\n if (value === void 0 || value === 'null') {\n value = null;\n }\n this._options.afterGetState(key, value);\n return value;\n };\n\n Tour.prototype._showNextStep = function() {\n var promise, showNextStepHelper, step;\n step = this.getStep(this._current);\n showNextStepHelper = (function(_this) {\n return function(e) {\n return _this.showStep(step.next);\n };\n })(this);\n promise = this._makePromise(step.onNext != null ? step.onNext(this) : void 0);\n return this._callOnPromiseDone(promise, showNextStepHelper);\n };\n\n Tour.prototype._showPrevStep = function() {\n var promise, showPrevStepHelper, step;\n step = this.getStep(this._current);\n showPrevStepHelper = (function(_this) {\n return function(e) {\n return _this.showStep(step.prev);\n };\n })(this);\n promise = this._makePromise(step.onPrev != null ? step.onPrev(this) : void 0);\n return this._callOnPromiseDone(promise, showPrevStepHelper);\n };\n\n Tour.prototype._debug = function(text) {\n if (this._options.debug) {\n return window.console.log(\"Bootstrap Tour '\" + this._options.name + \"' | \" + text);\n }\n };\n\n Tour.prototype._isRedirect = function(host, path, location) {\n var currentPath;\n if (host !== '') {\n if (this._isHostDifferent(host, location.href)) {\n return true;\n }\n }\n currentPath = [location.pathname, location.search, location.hash].join('');\n return (path != null) && path !== '' && (({}.toString.call(path) === '[object RegExp]' && !path.test(currentPath)) || ({}.toString.call(path) === '[object String]' && this._isPathDifferent(path, currentPath)));\n };\n\n Tour.prototype._isHostDifferent = function(host, currentURL) {\n return this._getProtocol(host) !== this._getProtocol(currentURL) || this._getHost(host) !== this._getHost(currentURL);\n };\n\n Tour.prototype._isPathDifferent = function(path, currentPath) {\n return this._getPath(path) !== this._getPath(currentPath) || !this._equal(this._getQuery(path), this._getQuery(currentPath)) || !this._equal(this._getHash(path), this._getHash(currentPath));\n };\n\n Tour.prototype._isJustPathHashDifferent = function(host, path, location) {\n var currentPath;\n if (host !== '') {\n if (this._isHostDifferent(host, location.href)) {\n return false;\n }\n }\n currentPath = [location.pathname, location.search, location.hash].join('');\n if ({}.toString.call(path) === '[object String]') {\n return this._getPath(path) === this._getPath(currentPath) && this._equal(this._getQuery(path), this._getQuery(currentPath)) && !this._equal(this._getHash(path), this._getHash(currentPath));\n }\n return false;\n };\n\n Tour.prototype._redirect = function(step, i, path) {\n if ($.isFunction(step.redirect)) {\n return step.redirect.call(this, path);\n } else if (step.redirect === true) {\n this._debug(\"Redirect to \" + step.host + path);\n if (this._getState('redirect_to') === (\"\" + i)) {\n this._debug(\"Error redirection loop to \" + path);\n this._removeState('redirect_to');\n if (step.onRedirectError != null) {\n return step.onRedirectError(this);\n }\n } else {\n this._setState('redirect_to', \"\" + i);\n return document.location.href = \"\" + step.host + path;\n }\n }\n };\n\n Tour.prototype._isOrphan = function(step) {\n return (step.element == null) || !$(step.element).length || $(step.element).is(':hidden') && ($(step.element)[0].namespaceURI !== 'http://www.w3.org/2000/svg');\n };\n\n Tour.prototype._isLast = function() {\n return this._current < this._options.steps.length - 1;\n };\n\n Tour.prototype._showPopover = function(step, i) {\n var $element, $tip, isOrphan, options, shouldAddSmart;\n $(\".tour-\" + this._options.name).remove();\n options = $.extend({}, this._options);\n isOrphan = this._isOrphan(step);\n step.template = this._template(step, i);\n if (isOrphan) {\n step.element = 'body';\n step.placement = 'top';\n }\n $element = $(step.element);\n $element.addClass(\"tour-\" + this._options.name + \"-element tour-\" + this._options.name + \"-\" + i + \"-element\");\n if (step.options) {\n $.extend(options, step.options);\n }\n if (step.reflex && !isOrphan) {\n $(step.reflexElement).addClass('tour-step-element-reflex').off(\"\" + (this._reflexEvent(step.reflex)) + \".tour-\" + this._options.name).on(\"\" + (this._reflexEvent(step.reflex)) + \".tour-\" + this._options.name, (function(_this) {\n return function() {\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n };\n })(this));\n }\n shouldAddSmart = step.smartPlacement === true && step.placement.search(/auto/i) === -1;\n $element.popover({\n placement: shouldAddSmart ? \"auto \" + step.placement : step.placement,\n trigger: 'manual',\n title: step.title,\n content: step.content,\n html: true,\n animation: step.animation,\n container: step.container,\n template: step.template,\n selector: step.element\n }).popover('show');\n $tip = $element.data('bs.popover') ? $element.data('bs.popover').tip() : $element.data('popover').tip();\n $tip.attr('id', step.id);\n this._reposition($tip, step);\n if (isOrphan) {\n return this._center($tip);\n }\n };\n\n Tour.prototype._template = function(step, i) {\n var $navigation, $next, $prev, $resume, $template, template;\n template = step.template;\n if (this._isOrphan(step) && {}.toString.call(step.orphan) !== '[object Boolean]') {\n template = step.orphan;\n }\n $template = $.isFunction(template) ? $(template(i, step)) : $(template);\n $navigation = $template.find('.popover-navigation');\n $prev = $navigation.find('[data-role=\"prev\"]');\n $next = $navigation.find('[data-role=\"next\"]');\n $resume = $navigation.find('[data-role=\"pause-resume\"]');\n if (this._isOrphan(step)) {\n $template.addClass('orphan');\n }\n $template.addClass(\"tour-\" + this._options.name + \" tour-\" + this._options.name + \"-\" + i);\n if (step.reflex) {\n $template.addClass(\"tour-\" + this._options.name + \"-reflex\");\n }\n if (step.prev < 0) {\n $prev.addClass('disabled');\n $prev.prop('disabled', true);\n }\n if (step.next < 0) {\n $next.addClass('disabled');\n $next.prop('disabled', true);\n }\n if (!step.duration) {\n $resume.remove();\n }\n return $template.clone().wrap('
').parent().html();\n };\n\n Tour.prototype._reflexEvent = function(reflex) {\n if ({}.toString.call(reflex) === '[object Boolean]') {\n return 'click';\n } else {\n return reflex;\n }\n };\n\n Tour.prototype._reposition = function($tip, step) {\n var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset;\n offsetWidth = $tip[0].offsetWidth;\n offsetHeight = $tip[0].offsetHeight;\n tipOffset = $tip.offset();\n originalLeft = tipOffset.left;\n originalTop = tipOffset.top;\n offsetBottom = $(document).outerHeight() - tipOffset.top - $tip.outerHeight();\n if (offsetBottom < 0) {\n tipOffset.top = tipOffset.top + offsetBottom;\n }\n offsetRight = $('html').outerWidth() - tipOffset.left - $tip.outerWidth();\n if (offsetRight < 0) {\n tipOffset.left = tipOffset.left + offsetRight;\n }\n if (tipOffset.top < 0) {\n tipOffset.top = 0;\n }\n if (tipOffset.left < 0) {\n tipOffset.left = 0;\n }\n $tip.offset(tipOffset);\n if (step.placement === 'bottom' || step.placement === 'top') {\n if (originalLeft !== tipOffset.left) {\n return this._replaceArrow($tip, (tipOffset.left - originalLeft) * 2, offsetWidth, 'left');\n }\n } else {\n if (originalTop !== tipOffset.top) {\n return this._replaceArrow($tip, (tipOffset.top - originalTop) * 2, offsetHeight, 'top');\n }\n }\n };\n\n Tour.prototype._center = function($tip) {\n return $tip.css('top', $(window).outerHeight() / 2 - $tip.outerHeight() / 2);\n };\n\n Tour.prototype._replaceArrow = function($tip, delta, dimension, position) {\n return $tip.find('.arrow').css(position, delta ? 50 * (1 - delta / dimension) + '%' : '');\n };\n\n Tour.prototype._scrollIntoView = function(element, callback) {\n var $element, $window, counter, offsetTop, scrollTop, windowHeight;\n $element = $(element);\n if (!$element.length) {\n return callback();\n }\n $window = $(window);\n offsetTop = $element.offset().top;\n windowHeight = $window.height();\n scrollTop = Math.max(0, offsetTop - (windowHeight / 2));\n this._debug(\"Scroll into view. ScrollTop: \" + scrollTop + \". Element offset: \" + offsetTop + \". Window height: \" + windowHeight + \".\");\n counter = 0;\n return $('body, html').stop(true, true).animate({\n scrollTop: Math.ceil(scrollTop)\n }, (function(_this) {\n return function() {\n if (++counter === 2) {\n callback();\n return _this._debug(\"Scroll into view.\\nAnimation end element offset: \" + ($element.offset().top) + \".\\nWindow height: \" + ($window.height()) + \".\");\n }\n };\n })(this));\n };\n\n Tour.prototype._onResize = function(callback, timeout) {\n return $(window).on(\"resize.tour-\" + this._options.name, function() {\n clearTimeout(timeout);\n return timeout = setTimeout(callback, 100);\n });\n };\n\n Tour.prototype._initMouseNavigation = function() {\n var _this;\n _this = this;\n return $(document).off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\").on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.next();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.prev();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.end();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\", function(e) {\n var $this;\n e.preventDefault();\n $this = $(this);\n $this.text(_this._paused ? $this.data('pause-text') : $this.data('resume-text'));\n if (_this._paused) {\n return _this.resume();\n } else {\n return _this.pause();\n }\n });\n };\n\n Tour.prototype._initKeyboardNavigation = function() {\n if (!this._options.keyboard) {\n return;\n }\n return $(document).on(\"keyup.tour-\" + this._options.name, (function(_this) {\n return function(e) {\n if (!e.which) {\n return;\n }\n switch (e.which) {\n case 39:\n e.preventDefault();\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n break;\n case 37:\n e.preventDefault();\n if (_this._current > 0) {\n return _this.prev();\n }\n break;\n case 27:\n e.preventDefault();\n return _this.end();\n }\n };\n })(this));\n };\n\n Tour.prototype._makePromise = function(result) {\n if (result && $.isFunction(result.then)) {\n return result;\n } else {\n return null;\n }\n };\n\n Tour.prototype._callOnPromiseDone = function(promise, cb, arg) {\n if (promise) {\n return promise.then((function(_this) {\n return function(e) {\n return cb.call(_this, arg);\n };\n })(this));\n } else {\n return cb.call(this, arg);\n }\n };\n\n Tour.prototype._showBackdrop = function(step) {\n if (this.backdrop.backgroundShown) {\n return;\n }\n this.backdrop = $('
', {\n \"class\": 'tour-backdrop'\n });\n this.backdrop.backgroundShown = true;\n return $(step.backdropContainer).append(this.backdrop);\n };\n\n Tour.prototype._hideBackdrop = function() {\n this._hideOverlayElement();\n return this._hideBackground();\n };\n\n Tour.prototype._hideBackground = function() {\n if (this.backdrop) {\n this.backdrop.remove();\n this.backdrop.overlay = null;\n return this.backdrop.backgroundShown = false;\n }\n };\n\n Tour.prototype._showOverlayElement = function(step, force) {\n var $element, elementData;\n $element = $(step.element);\n if (!$element || $element.length === 0 || this.backdrop.overlayElementShown && !force) {\n return;\n }\n if (!this.backdrop.overlayElementShown) {\n this.backdrop.$element = $element.addClass('tour-step-backdrop');\n this.backdrop.$background = $('
', {\n \"class\": 'tour-step-background'\n });\n this.backdrop.$background.appendTo(step.backdropContainer);\n this.backdrop.overlayElementShown = true;\n }\n elementData = {\n width: $element.innerWidth(),\n height: $element.innerHeight(),\n offset: $element.offset()\n };\n if (step.backdropPadding) {\n elementData = this._applyBackdropPadding(step.backdropPadding, elementData);\n }\n return this.backdrop.$background.width(elementData.width).height(elementData.height).offset(elementData.offset);\n };\n\n Tour.prototype._hideOverlayElement = function() {\n if (!this.backdrop.overlayElementShown) {\n return;\n }\n this.backdrop.$element.removeClass('tour-step-backdrop');\n this.backdrop.$background.remove();\n this.backdrop.$element = null;\n this.backdrop.$background = null;\n return this.backdrop.overlayElementShown = false;\n };\n\n Tour.prototype._applyBackdropPadding = function(padding, data) {\n if (typeof padding === 'object') {\n if (padding.top == null) {\n padding.top = 0;\n }\n if (padding.right == null) {\n padding.right = 0;\n }\n if (padding.bottom == null) {\n padding.bottom = 0;\n }\n if (padding.left == null) {\n padding.left = 0;\n }\n data.offset.top = data.offset.top - padding.top;\n data.offset.left = data.offset.left - padding.left;\n data.width = data.width + padding.left + padding.right;\n data.height = data.height + padding.top + padding.bottom;\n } else {\n data.offset.top = data.offset.top - padding;\n data.offset.left = data.offset.left - padding;\n data.width = data.width + (padding * 2);\n data.height = data.height + (padding * 2);\n }\n return data;\n };\n\n Tour.prototype._clearTimer = function() {\n window.clearTimeout(this._timer);\n this._timer = null;\n return this._duration = null;\n };\n\n Tour.prototype._getProtocol = function(url) {\n url = url.split('://');\n if (url.length > 1) {\n return url[0];\n } else {\n return 'http';\n }\n };\n\n Tour.prototype._getHost = function(url) {\n url = url.split('//');\n url = url.length > 1 ? url[1] : url[0];\n return url.split('/')[0];\n };\n\n Tour.prototype._getPath = function(path) {\n return path.replace(/\\/?$/, '').split('?')[0].split('#')[0];\n };\n\n Tour.prototype._getQuery = function(path) {\n return this._getParams(path, '?');\n };\n\n Tour.prototype._getHash = function(path) {\n return this._getParams(path, '#');\n };\n\n Tour.prototype._getParams = function(path, start) {\n var param, params, paramsObject, _i, _len;\n params = path.split(start);\n if (params.length === 1) {\n return {};\n }\n params = params[1].split('&');\n paramsObject = {};\n for (_i = 0, _len = params.length; _i < _len; _i++) {\n param = params[_i];\n param = param.split('=');\n paramsObject[param[0]] = param[1] || '';\n }\n return paramsObject;\n };\n\n Tour.prototype._equal = function(obj1, obj2) {\n var k, v;\n if ({}.toString.call(obj1) === '[object Object]' && {}.toString.call(obj2) === '[object Object]') {\n for (k in obj1) {\n v = obj1[k];\n if (obj2[k] !== v) {\n return false;\n }\n }\n for (k in obj2) {\n v = obj2[k];\n if (obj1[k] !== v) {\n return false;\n }\n }\n return true;\n }\n return obj1 === obj2;\n };\n\n return Tour;\n\n })();\n return window.Tour = Tour;\n})(jQuery, window);\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/libs/bootstrap-tour.js","/*! jQuery UI - v1.9.1 - 2012-10-29\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.menu.js, jquery.ui.slider.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return\"area\"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!==\"map\"?!1:(o=e(\"img[usemap=#\"+i+\"]\")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:\"a\"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,\"visibility\")===\"hidden\"}).length}var n=0,r=/^ui-id-\\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:\"1.9.1\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t==\"number\"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css(\"position\"))||/absolute/.test(this.css(\"position\"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,\"position\"))&&/(auto|scroll)/.test(e.css(this,\"overflow\")+e.css(this,\"overflow-y\")+e.css(this,\"overflow-x\"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,\"overflow\")+e.css(this,\"overflow-y\")+e.css(this,\"overflow-x\"))}).eq(0),/fixed/.test(this.css(\"position\"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css(\"zIndex\",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css(\"position\");if(i===\"absolute\"||i===\"relative\"||i===\"fixed\"){s=parseInt(r.css(\"zIndex\"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr(\"id\")})}}),e(\"\").outerWidth(1).jquery||e.each([\"Width\",\"Height\"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,\"padding\"+this))||0,r&&(n-=parseFloat(e.css(t,\"border\"+this+\"Width\"))||0),s&&(n-=parseFloat(e.css(t,\"margin\"+this))||0)}),n}var i=r===\"Width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn[\"inner\"+r]=function(n){return n===t?o[\"inner\"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+\"px\")})},e.fn[\"outer\"+r]=function(t,n){return typeof t!=\"number\"?o[\"outer\"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+\"px\")})}}),e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,\"tabindex\")))},tabbable:function(t){var n=e.attr(t,\"tabindex\"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement(\"div\"));n.offsetHeight,e.extend(n.style,{minHeight:\"100px\",height:\"auto\",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart=\"onselectstart\"in n,t.removeChild(n).style.display=\"none\"}),function(){var t=/msie ([\\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?\"selectstart\":\"mousedown\")+\".ui-disableSelection\",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(\".ui-disableSelection\")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e\",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled \"+\"ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n==\"string\"){i={},s=n.split(\".\"),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\\+\\-]\\d+%?/,f=/^\\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e(\"
\"),o=s.children()[0];return e(\"body\").append(s),r=o.offsetWidth,s.css(\"overflow\",\"scroll\"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?\"\":t.element.css(\"overflow-x\"),r=t.isWindow?\"\":t.element.css(\"overflow-y\"),i=n===\"scroll\"||n===\"auto\"&&t.width0?\"right\":\"center\",vertical:u<0?\"top\":o>0?\"bottom\":\"middle\"};lr(i(o),i(u))?h.important=\"horizontal\":h.important=\"vertical\",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]===\"left\"?-t.elemWidth:t.my[0]===\"right\"?t.elemWidth:0,c=t.at[0]===\"left\"?t.targetWidth:t.at[0]===\"right\"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML=\"\",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(\" \"),s=r.at.split(\" \");return i.length===1&&(i[1]=i[0]),/^\\d/.test(i[0])&&(i[0]=\"+\"+i[0]),/^\\d/.test(i[1])&&(i[1]=\"+\"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]=\"center\":(s[1]=s[0],s[0]=\"center\")),n.call(this,e.extend(r,{at:s[0]+i[0]+\" \"+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){var n=0;e.widget(\"ui.autocomplete\",{version:\"1.9.1\",defaultElement:\"\",options:{appendTo:\"body\",autoFocus:!1,delay:300,minLength:1,position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is(\"input,textarea\")?\"val\":\"text\"],this.isNewMenu=!0,this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\",\"off\"),this._on(this.element,{keydown:function(i){if(this.element.prop(\"readOnly\")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move(\"previousPage\",i);break;case s.PAGE_DOWN:t=!0,this._move(\"nextPage\",i);break;case s.UP:t=!0,this._keyEvent(\"previous\",i);break;case s.DOWN:t=!0,this._keyEvent(\"next\",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(\":visible\")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move(\"previousPage\",r);break;case i.PAGE_DOWN:this._move(\"nextPage\",r);break;case i.UP:this._keyEvent(\"previous\",r);break;case i.DOWN:this._keyEvent(\"next\",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e(\"
    \").addClass(\"ui-autocomplete\").appendTo(this.document.find(this.options.appendTo||\"body\")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data(\"menu\"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(\".ui-menu-item\").length||this._delay(function(){var t=this;this.document.one(\"mousedown\",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one(\"mousemove\",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data(\"ui-autocomplete-item\")||n.item.data(\"item.autocomplete\");!1!==this._trigger(\"focus\",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data(\"ui-autocomplete-item\")||t.item.data(\"item.autocomplete\"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger(\"select\",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e(\"\",{role:\"status\",\"aria-live\":\"polite\"}).addClass(\"ui-helper-hidden-accessible\").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e===\"source\"&&this._initSource(),e===\"appendTo\"&&this.menu.element.appendTo(this.document.find(t||\"body\")[0]),e===\"disabled\"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is(\"textarea\")?!0:this.element.is(\"input\")?!1:this.element.prop(\"isContentEditable\")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source==\"string\"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:\"json\",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length\").append(e(\"\").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(\":visible\")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(\":visible\"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),\"i\");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget(\"ui.autocomplete\",e.ui.autocomplete,{options:{messages:{noResults:\"No search results.\",results:function(e){return e+(e>1?\" results are\":\" result is\")+\" available, use up and down arrow keys to navigate.\"}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o=\"ui-button ui-widget ui-state-default ui-corner-all\",u=\"ui-state-hover ui-state-active \",a=\"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",f=function(){var t=e(this).find(\":ui-button\");setTimeout(function(){t.button(\"refresh\")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find(\"[name='\"+n+\"']\"):i=e(\"[name='\"+n+\"']\",t.ownerDocument).filter(function(){return!this.form})),i};e.widget(\"ui.button\",{version:\"1.9.1\",defaultElement:\"
\")\n\t });\n\t modal.show({ backdrop: true });\n\t }\n\t\n\t // ============================================================================\n\t return {\n\t Modal: Modal,\n\t hide_modal: hide_modal,\n\t show_modal: show_modal,\n\t show_message: show_message,\n\t show_in_overlay: show_in_overlay\n\t };\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n\t * bootstrap-tour - v0.10.2\n\t * http://bootstraptour.com\n\t * ========================================================================\n\t * Copyright 2012-2015 Ulrich Sossou\n\t *\n\t * ========================================================================\n\t * Licensed under the MIT License (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * https://opensource.org/licenses/MIT\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t * ========================================================================\n\t */\n\t\n\t(function ($, window) {\n\t var Tour, document;\n\t document = window.document;\n\t Tour = function () {\n\t function Tour(options) {\n\t var storage;\n\t try {\n\t storage = window.localStorage;\n\t } catch (_error) {\n\t storage = false;\n\t }\n\t this._options = $.extend({\n\t name: 'tour',\n\t steps: [],\n\t container: 'body',\n\t autoscroll: true,\n\t keyboard: true,\n\t storage: storage,\n\t debug: false,\n\t backdrop: false,\n\t backdropContainer: 'body',\n\t backdropPadding: 0,\n\t redirect: true,\n\t orphan: false,\n\t duration: false,\n\t delay: false,\n\t basePath: '',\n\t template: '

',\n\t afterSetState: function (key, value) {},\n\t afterGetState: function (key, value) {},\n\t afterRemoveState: function (key) {},\n\t onStart: function (tour) {},\n\t onEnd: function (tour) {},\n\t onShow: function (tour) {},\n\t onShown: function (tour) {},\n\t onHide: function (tour) {},\n\t onHidden: function (tour) {},\n\t onNext: function (tour) {},\n\t onPrev: function (tour) {},\n\t onPause: function (tour, duration) {},\n\t onResume: function (tour, duration) {},\n\t onRedirectError: function (tour) {}\n\t }, options);\n\t this._force = false;\n\t this._inited = false;\n\t this._current = null;\n\t this.backdrop = {\n\t overlay: null,\n\t $element: null,\n\t $background: null,\n\t backgroundShown: false,\n\t overlayElementShown: false\n\t };\n\t this;\n\t }\n\t\n\t Tour.prototype.addSteps = function (steps) {\n\t var step, _i, _len;\n\t for (_i = 0, _len = steps.length; _i < _len; _i++) {\n\t step = steps[_i];\n\t this.addStep(step);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.addStep = function (step) {\n\t this._options.steps.push(step);\n\t return this;\n\t };\n\t\n\t Tour.prototype.getStep = function (i) {\n\t if (this._options.steps[i] != null) {\n\t return $.extend({\n\t id: \"step-\" + i,\n\t path: '',\n\t host: '',\n\t placement: 'right',\n\t title: '',\n\t content: '

',\n\t next: i === this._options.steps.length - 1 ? -1 : i + 1,\n\t prev: i - 1,\n\t animation: true,\n\t container: this._options.container,\n\t autoscroll: this._options.autoscroll,\n\t backdrop: this._options.backdrop,\n\t backdropContainer: this._options.backdropContainer,\n\t backdropPadding: this._options.backdropPadding,\n\t redirect: this._options.redirect,\n\t reflexElement: this._options.steps[i].element,\n\t orphan: this._options.orphan,\n\t duration: this._options.duration,\n\t delay: this._options.delay,\n\t template: this._options.template,\n\t onShow: this._options.onShow,\n\t onShown: this._options.onShown,\n\t onHide: this._options.onHide,\n\t onHidden: this._options.onHidden,\n\t onNext: this._options.onNext,\n\t onPrev: this._options.onPrev,\n\t onPause: this._options.onPause,\n\t onResume: this._options.onResume,\n\t onRedirectError: this._options.onRedirectError\n\t }, this._options.steps[i]);\n\t }\n\t };\n\t\n\t Tour.prototype.init = function (force) {\n\t this._force = force;\n\t if (this.ended()) {\n\t this._debug('Tour ended, init prevented.');\n\t return this;\n\t }\n\t this.setCurrentStep();\n\t this._initMouseNavigation();\n\t this._initKeyboardNavigation();\n\t this._onResize(function (_this) {\n\t return function () {\n\t return _this.showStep(_this._current);\n\t };\n\t }(this));\n\t if (this._current !== null) {\n\t this.showStep(this._current);\n\t }\n\t this._inited = true;\n\t return this;\n\t };\n\t\n\t Tour.prototype.start = function (force) {\n\t var promise;\n\t if (force == null) {\n\t force = false;\n\t }\n\t if (!this._inited) {\n\t this.init(force);\n\t }\n\t if (this._current === null) {\n\t promise = this._makePromise(this._options.onStart != null ? this._options.onStart(this) : void 0);\n\t this._callOnPromiseDone(promise, this.showStep, 0);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.next = function () {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this._showNextStep);\n\t };\n\t\n\t Tour.prototype.prev = function () {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this._showPrevStep);\n\t };\n\t\n\t Tour.prototype.goTo = function (i) {\n\t var promise;\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, this.showStep, i);\n\t };\n\t\n\t Tour.prototype.end = function () {\n\t var endHelper, promise;\n\t endHelper = function (_this) {\n\t return function (e) {\n\t $(document).off(\"click.tour-\" + _this._options.name);\n\t $(document).off(\"keyup.tour-\" + _this._options.name);\n\t $(window).off(\"resize.tour-\" + _this._options.name);\n\t _this._setState('end', 'yes');\n\t _this._inited = false;\n\t _this._force = false;\n\t _this._clearTimer();\n\t if (_this._options.onEnd != null) {\n\t return _this._options.onEnd(_this);\n\t }\n\t };\n\t }(this);\n\t promise = this.hideStep(this._current);\n\t return this._callOnPromiseDone(promise, endHelper);\n\t };\n\t\n\t Tour.prototype.ended = function () {\n\t return !this._force && !!this._getState('end');\n\t };\n\t\n\t Tour.prototype.restart = function () {\n\t this._removeState('current_step');\n\t this._removeState('end');\n\t this._removeState('redirect_to');\n\t return this.start();\n\t };\n\t\n\t Tour.prototype.pause = function () {\n\t var step;\n\t step = this.getStep(this._current);\n\t if (!(step && step.duration)) {\n\t return this;\n\t }\n\t this._paused = true;\n\t this._duration -= new Date().getTime() - this._start;\n\t window.clearTimeout(this._timer);\n\t this._debug(\"Paused/Stopped step \" + (this._current + 1) + \" timer (\" + this._duration + \" remaining).\");\n\t if (step.onPause != null) {\n\t return step.onPause(this, this._duration);\n\t }\n\t };\n\t\n\t Tour.prototype.resume = function () {\n\t var step;\n\t step = this.getStep(this._current);\n\t if (!(step && step.duration)) {\n\t return this;\n\t }\n\t this._paused = false;\n\t this._start = new Date().getTime();\n\t this._duration = this._duration || step.duration;\n\t this._timer = window.setTimeout(function (_this) {\n\t return function () {\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t };\n\t }(this), this._duration);\n\t this._debug(\"Started step \" + (this._current + 1) + \" timer with duration \" + this._duration);\n\t if (step.onResume != null && this._duration !== step.duration) {\n\t return step.onResume(this, this._duration);\n\t }\n\t };\n\t\n\t Tour.prototype.hideStep = function (i) {\n\t var hideStepHelper, promise, step;\n\t step = this.getStep(i);\n\t if (!step) {\n\t return;\n\t }\n\t this._clearTimer();\n\t promise = this._makePromise(step.onHide != null ? step.onHide(this, i) : void 0);\n\t hideStepHelper = function (_this) {\n\t return function (e) {\n\t var $element;\n\t $element = $(step.element);\n\t if (!($element.data('bs.popover') || $element.data('popover'))) {\n\t $element = $('body');\n\t }\n\t $element.popover('destroy').removeClass(\"tour-\" + _this._options.name + \"-element tour-\" + _this._options.name + \"-\" + i + \"-element\");\n\t $element.removeData('bs.popover');\n\t if (step.reflex) {\n\t $(step.reflexElement).removeClass('tour-step-element-reflex').off(\"\" + _this._reflexEvent(step.reflex) + \".tour-\" + _this._options.name);\n\t }\n\t if (step.backdrop) {\n\t _this._hideBackdrop();\n\t }\n\t if (step.onHidden != null) {\n\t return step.onHidden(_this);\n\t }\n\t };\n\t }(this);\n\t this._callOnPromiseDone(promise, hideStepHelper);\n\t return promise;\n\t };\n\t\n\t Tour.prototype.showStep = function (i) {\n\t var promise, showStepHelper, skipToPrevious, step;\n\t if (this.ended()) {\n\t this._debug('Tour ended, showStep prevented.');\n\t return this;\n\t }\n\t step = this.getStep(i);\n\t if (!step) {\n\t return;\n\t }\n\t skipToPrevious = i < this._current;\n\t promise = this._makePromise(step.onShow != null ? step.onShow(this, i) : void 0);\n\t showStepHelper = function (_this) {\n\t return function (e) {\n\t var path, showPopoverAndOverlay;\n\t _this.setCurrentStep(i);\n\t path = function () {\n\t switch ({}.toString.call(step.path)) {\n\t case '[object Function]':\n\t return step.path();\n\t case '[object String]':\n\t return this._options.basePath + step.path;\n\t default:\n\t return step.path;\n\t }\n\t }.call(_this);\n\t if (_this._isRedirect(step.host, path, document.location)) {\n\t _this._redirect(step, i, path);\n\t if (!_this._isJustPathHashDifferent(step.host, path, document.location)) {\n\t return;\n\t }\n\t }\n\t if (_this._isOrphan(step)) {\n\t if (step.orphan === false) {\n\t _this._debug(\"Skip the orphan step \" + (_this._current + 1) + \".\\nOrphan option is false and the element does not exist or is hidden.\");\n\t if (skipToPrevious) {\n\t _this._showPrevStep();\n\t } else {\n\t _this._showNextStep();\n\t }\n\t return;\n\t }\n\t _this._debug(\"Show the orphan step \" + (_this._current + 1) + \". Orphans option is true.\");\n\t }\n\t if (step.backdrop) {\n\t _this._showBackdrop(step);\n\t }\n\t showPopoverAndOverlay = function () {\n\t if (_this.getCurrentStep() !== i || _this.ended()) {\n\t return;\n\t }\n\t if (step.element != null && step.backdrop) {\n\t _this._showOverlayElement(step);\n\t }\n\t _this._showPopover(step, i);\n\t if (step.onShown != null) {\n\t step.onShown(_this);\n\t }\n\t return _this._debug(\"Step \" + (_this._current + 1) + \" of \" + _this._options.steps.length);\n\t };\n\t if (step.autoscroll) {\n\t _this._scrollIntoView(step.element, showPopoverAndOverlay);\n\t } else {\n\t showPopoverAndOverlay();\n\t }\n\t if (step.duration) {\n\t return _this.resume();\n\t }\n\t };\n\t }(this);\n\t if (step.delay) {\n\t this._debug(\"Wait \" + step.delay + \" milliseconds to show the step \" + (this._current + 1));\n\t window.setTimeout(function (_this) {\n\t return function () {\n\t return _this._callOnPromiseDone(promise, showStepHelper);\n\t };\n\t }(this), step.delay);\n\t } else {\n\t this._callOnPromiseDone(promise, showStepHelper);\n\t }\n\t return promise;\n\t };\n\t\n\t Tour.prototype.getCurrentStep = function () {\n\t return this._current;\n\t };\n\t\n\t Tour.prototype.setCurrentStep = function (value) {\n\t if (value != null) {\n\t this._current = value;\n\t this._setState('current_step', value);\n\t } else {\n\t this._current = this._getState('current_step');\n\t this._current = this._current === null ? null : parseInt(this._current, 10);\n\t }\n\t return this;\n\t };\n\t\n\t Tour.prototype.redraw = function () {\n\t return this._showOverlayElement(this.getStep(this.getCurrentStep()).element, true);\n\t };\n\t\n\t Tour.prototype._setState = function (key, value) {\n\t var e, keyName;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t try {\n\t this._options.storage.setItem(keyName, value);\n\t } catch (_error) {\n\t e = _error;\n\t if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n\t this._debug('LocalStorage quota exceeded. State storage failed.');\n\t }\n\t }\n\t return this._options.afterSetState(keyName, value);\n\t } else {\n\t if (this._state == null) {\n\t this._state = {};\n\t }\n\t return this._state[key] = value;\n\t }\n\t };\n\t\n\t Tour.prototype._removeState = function (key) {\n\t var keyName;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t this._options.storage.removeItem(keyName);\n\t return this._options.afterRemoveState(keyName);\n\t } else {\n\t if (this._state != null) {\n\t return delete this._state[key];\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._getState = function (key) {\n\t var keyName, value;\n\t if (this._options.storage) {\n\t keyName = \"\" + this._options.name + \"_\" + key;\n\t value = this._options.storage.getItem(keyName);\n\t } else {\n\t if (this._state != null) {\n\t value = this._state[key];\n\t }\n\t }\n\t if (value === void 0 || value === 'null') {\n\t value = null;\n\t }\n\t this._options.afterGetState(key, value);\n\t return value;\n\t };\n\t\n\t Tour.prototype._showNextStep = function () {\n\t var promise, showNextStepHelper, step;\n\t step = this.getStep(this._current);\n\t showNextStepHelper = function (_this) {\n\t return function (e) {\n\t return _this.showStep(step.next);\n\t };\n\t }(this);\n\t promise = this._makePromise(step.onNext != null ? step.onNext(this) : void 0);\n\t return this._callOnPromiseDone(promise, showNextStepHelper);\n\t };\n\t\n\t Tour.prototype._showPrevStep = function () {\n\t var promise, showPrevStepHelper, step;\n\t step = this.getStep(this._current);\n\t showPrevStepHelper = function (_this) {\n\t return function (e) {\n\t return _this.showStep(step.prev);\n\t };\n\t }(this);\n\t promise = this._makePromise(step.onPrev != null ? step.onPrev(this) : void 0);\n\t return this._callOnPromiseDone(promise, showPrevStepHelper);\n\t };\n\t\n\t Tour.prototype._debug = function (text) {\n\t if (this._options.debug) {\n\t return window.console.log(\"Bootstrap Tour '\" + this._options.name + \"' | \" + text);\n\t }\n\t };\n\t\n\t Tour.prototype._isRedirect = function (host, path, location) {\n\t var currentPath;\n\t if (host !== '') {\n\t if (this._isHostDifferent(host, location.href)) {\n\t return true;\n\t }\n\t }\n\t currentPath = [location.pathname, location.search, location.hash].join('');\n\t return path != null && path !== '' && ({}.toString.call(path) === '[object RegExp]' && !path.test(currentPath) || {}.toString.call(path) === '[object String]' && this._isPathDifferent(path, currentPath));\n\t };\n\t\n\t Tour.prototype._isHostDifferent = function (host, currentURL) {\n\t return this._getProtocol(host) !== this._getProtocol(currentURL) || this._getHost(host) !== this._getHost(currentURL);\n\t };\n\t\n\t Tour.prototype._isPathDifferent = function (path, currentPath) {\n\t return this._getPath(path) !== this._getPath(currentPath) || !this._equal(this._getQuery(path), this._getQuery(currentPath)) || !this._equal(this._getHash(path), this._getHash(currentPath));\n\t };\n\t\n\t Tour.prototype._isJustPathHashDifferent = function (host, path, location) {\n\t var currentPath;\n\t if (host !== '') {\n\t if (this._isHostDifferent(host, location.href)) {\n\t return false;\n\t }\n\t }\n\t currentPath = [location.pathname, location.search, location.hash].join('');\n\t if ({}.toString.call(path) === '[object String]') {\n\t return this._getPath(path) === this._getPath(currentPath) && this._equal(this._getQuery(path), this._getQuery(currentPath)) && !this._equal(this._getHash(path), this._getHash(currentPath));\n\t }\n\t return false;\n\t };\n\t\n\t Tour.prototype._redirect = function (step, i, path) {\n\t if ($.isFunction(step.redirect)) {\n\t return step.redirect.call(this, path);\n\t } else if (step.redirect === true) {\n\t this._debug(\"Redirect to \" + step.host + path);\n\t if (this._getState('redirect_to') === \"\" + i) {\n\t this._debug(\"Error redirection loop to \" + path);\n\t this._removeState('redirect_to');\n\t if (step.onRedirectError != null) {\n\t return step.onRedirectError(this);\n\t }\n\t } else {\n\t this._setState('redirect_to', \"\" + i);\n\t return document.location.href = \"\" + step.host + path;\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._isOrphan = function (step) {\n\t return step.element == null || !$(step.element).length || $(step.element).is(':hidden') && $(step.element)[0].namespaceURI !== 'http://www.w3.org/2000/svg';\n\t };\n\t\n\t Tour.prototype._isLast = function () {\n\t return this._current < this._options.steps.length - 1;\n\t };\n\t\n\t Tour.prototype._showPopover = function (step, i) {\n\t var $element, $tip, isOrphan, options, shouldAddSmart;\n\t $(\".tour-\" + this._options.name).remove();\n\t options = $.extend({}, this._options);\n\t isOrphan = this._isOrphan(step);\n\t step.template = this._template(step, i);\n\t if (isOrphan) {\n\t step.element = 'body';\n\t step.placement = 'top';\n\t }\n\t $element = $(step.element);\n\t $element.addClass(\"tour-\" + this._options.name + \"-element tour-\" + this._options.name + \"-\" + i + \"-element\");\n\t if (step.options) {\n\t $.extend(options, step.options);\n\t }\n\t if (step.reflex && !isOrphan) {\n\t $(step.reflexElement).addClass('tour-step-element-reflex').off(\"\" + this._reflexEvent(step.reflex) + \".tour-\" + this._options.name).on(\"\" + this._reflexEvent(step.reflex) + \".tour-\" + this._options.name, function (_this) {\n\t return function () {\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t };\n\t }(this));\n\t }\n\t shouldAddSmart = step.smartPlacement === true && step.placement.search(/auto/i) === -1;\n\t $element.popover({\n\t placement: shouldAddSmart ? \"auto \" + step.placement : step.placement,\n\t trigger: 'manual',\n\t title: step.title,\n\t content: step.content,\n\t html: true,\n\t animation: step.animation,\n\t container: step.container,\n\t template: step.template,\n\t selector: step.element\n\t }).popover('show');\n\t $tip = $element.data('bs.popover') ? $element.data('bs.popover').tip() : $element.data('popover').tip();\n\t $tip.attr('id', step.id);\n\t this._reposition($tip, step);\n\t if (isOrphan) {\n\t return this._center($tip);\n\t }\n\t };\n\t\n\t Tour.prototype._template = function (step, i) {\n\t var $navigation, $next, $prev, $resume, $template, template;\n\t template = step.template;\n\t if (this._isOrphan(step) && {}.toString.call(step.orphan) !== '[object Boolean]') {\n\t template = step.orphan;\n\t }\n\t $template = $.isFunction(template) ? $(template(i, step)) : $(template);\n\t $navigation = $template.find('.popover-navigation');\n\t $prev = $navigation.find('[data-role=\"prev\"]');\n\t $next = $navigation.find('[data-role=\"next\"]');\n\t $resume = $navigation.find('[data-role=\"pause-resume\"]');\n\t if (this._isOrphan(step)) {\n\t $template.addClass('orphan');\n\t }\n\t $template.addClass(\"tour-\" + this._options.name + \" tour-\" + this._options.name + \"-\" + i);\n\t if (step.reflex) {\n\t $template.addClass(\"tour-\" + this._options.name + \"-reflex\");\n\t }\n\t if (step.prev < 0) {\n\t $prev.addClass('disabled');\n\t $prev.prop('disabled', true);\n\t }\n\t if (step.next < 0) {\n\t $next.addClass('disabled');\n\t $next.prop('disabled', true);\n\t }\n\t if (!step.duration) {\n\t $resume.remove();\n\t }\n\t return $template.clone().wrap('
').parent().html();\n\t };\n\t\n\t Tour.prototype._reflexEvent = function (reflex) {\n\t if ({}.toString.call(reflex) === '[object Boolean]') {\n\t return 'click';\n\t } else {\n\t return reflex;\n\t }\n\t };\n\t\n\t Tour.prototype._reposition = function ($tip, step) {\n\t var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset;\n\t offsetWidth = $tip[0].offsetWidth;\n\t offsetHeight = $tip[0].offsetHeight;\n\t tipOffset = $tip.offset();\n\t originalLeft = tipOffset.left;\n\t originalTop = tipOffset.top;\n\t offsetBottom = $(document).outerHeight() - tipOffset.top - $tip.outerHeight();\n\t if (offsetBottom < 0) {\n\t tipOffset.top = tipOffset.top + offsetBottom;\n\t }\n\t offsetRight = $('html').outerWidth() - tipOffset.left - $tip.outerWidth();\n\t if (offsetRight < 0) {\n\t tipOffset.left = tipOffset.left + offsetRight;\n\t }\n\t if (tipOffset.top < 0) {\n\t tipOffset.top = 0;\n\t }\n\t if (tipOffset.left < 0) {\n\t tipOffset.left = 0;\n\t }\n\t $tip.offset(tipOffset);\n\t if (step.placement === 'bottom' || step.placement === 'top') {\n\t if (originalLeft !== tipOffset.left) {\n\t return this._replaceArrow($tip, (tipOffset.left - originalLeft) * 2, offsetWidth, 'left');\n\t }\n\t } else {\n\t if (originalTop !== tipOffset.top) {\n\t return this._replaceArrow($tip, (tipOffset.top - originalTop) * 2, offsetHeight, 'top');\n\t }\n\t }\n\t };\n\t\n\t Tour.prototype._center = function ($tip) {\n\t return $tip.css('top', $(window).outerHeight() / 2 - $tip.outerHeight() / 2);\n\t };\n\t\n\t Tour.prototype._replaceArrow = function ($tip, delta, dimension, position) {\n\t return $tip.find('.arrow').css(position, delta ? 50 * (1 - delta / dimension) + '%' : '');\n\t };\n\t\n\t Tour.prototype._scrollIntoView = function (element, callback) {\n\t var $element, $window, counter, offsetTop, scrollTop, windowHeight;\n\t $element = $(element);\n\t if (!$element.length) {\n\t return callback();\n\t }\n\t $window = $(window);\n\t offsetTop = $element.offset().top;\n\t windowHeight = $window.height();\n\t scrollTop = Math.max(0, offsetTop - windowHeight / 2);\n\t this._debug(\"Scroll into view. ScrollTop: \" + scrollTop + \". Element offset: \" + offsetTop + \". Window height: \" + windowHeight + \".\");\n\t counter = 0;\n\t return $('body, html').stop(true, true).animate({\n\t scrollTop: Math.ceil(scrollTop)\n\t }, function (_this) {\n\t return function () {\n\t if (++counter === 2) {\n\t callback();\n\t return _this._debug(\"Scroll into view.\\nAnimation end element offset: \" + $element.offset().top + \".\\nWindow height: \" + $window.height() + \".\");\n\t }\n\t };\n\t }(this));\n\t };\n\t\n\t Tour.prototype._onResize = function (callback, timeout) {\n\t return $(window).on(\"resize.tour-\" + this._options.name, function () {\n\t clearTimeout(timeout);\n\t return timeout = setTimeout(callback, 100);\n\t });\n\t };\n\t\n\t Tour.prototype._initMouseNavigation = function () {\n\t var _this;\n\t _this = this;\n\t return $(document).off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\").on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.next();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.prev();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\", function (_this) {\n\t return function (e) {\n\t e.preventDefault();\n\t return _this.end();\n\t };\n\t }(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\", function (e) {\n\t var $this;\n\t e.preventDefault();\n\t $this = $(this);\n\t $this.text(_this._paused ? $this.data('pause-text') : $this.data('resume-text'));\n\t if (_this._paused) {\n\t return _this.resume();\n\t } else {\n\t return _this.pause();\n\t }\n\t });\n\t };\n\t\n\t Tour.prototype._initKeyboardNavigation = function () {\n\t if (!this._options.keyboard) {\n\t return;\n\t }\n\t return $(document).on(\"keyup.tour-\" + this._options.name, function (_this) {\n\t return function (e) {\n\t if (!e.which) {\n\t return;\n\t }\n\t switch (e.which) {\n\t case 39:\n\t e.preventDefault();\n\t if (_this._isLast()) {\n\t return _this.next();\n\t } else {\n\t return _this.end();\n\t }\n\t break;\n\t case 37:\n\t e.preventDefault();\n\t if (_this._current > 0) {\n\t return _this.prev();\n\t }\n\t break;\n\t case 27:\n\t e.preventDefault();\n\t return _this.end();\n\t }\n\t };\n\t }(this));\n\t };\n\t\n\t Tour.prototype._makePromise = function (result) {\n\t if (result && $.isFunction(result.then)) {\n\t return result;\n\t } else {\n\t return null;\n\t }\n\t };\n\t\n\t Tour.prototype._callOnPromiseDone = function (promise, cb, arg) {\n\t if (promise) {\n\t return promise.then(function (_this) {\n\t return function (e) {\n\t return cb.call(_this, arg);\n\t };\n\t }(this));\n\t } else {\n\t return cb.call(this, arg);\n\t }\n\t };\n\t\n\t Tour.prototype._showBackdrop = function (step) {\n\t if (this.backdrop.backgroundShown) {\n\t return;\n\t }\n\t this.backdrop = $('
', {\n\t \"class\": 'tour-backdrop'\n\t });\n\t this.backdrop.backgroundShown = true;\n\t return $(step.backdropContainer).append(this.backdrop);\n\t };\n\t\n\t Tour.prototype._hideBackdrop = function () {\n\t this._hideOverlayElement();\n\t return this._hideBackground();\n\t };\n\t\n\t Tour.prototype._hideBackground = function () {\n\t if (this.backdrop) {\n\t this.backdrop.remove();\n\t this.backdrop.overlay = null;\n\t return this.backdrop.backgroundShown = false;\n\t }\n\t };\n\t\n\t Tour.prototype._showOverlayElement = function (step, force) {\n\t var $element, elementData;\n\t $element = $(step.element);\n\t if (!$element || $element.length === 0 || this.backdrop.overlayElementShown && !force) {\n\t return;\n\t }\n\t if (!this.backdrop.overlayElementShown) {\n\t this.backdrop.$element = $element.addClass('tour-step-backdrop');\n\t this.backdrop.$background = $('
', {\n\t \"class\": 'tour-step-background'\n\t });\n\t this.backdrop.$background.appendTo(step.backdropContainer);\n\t this.backdrop.overlayElementShown = true;\n\t }\n\t elementData = {\n\t width: $element.innerWidth(),\n\t height: $element.innerHeight(),\n\t offset: $element.offset()\n\t };\n\t if (step.backdropPadding) {\n\t elementData = this._applyBackdropPadding(step.backdropPadding, elementData);\n\t }\n\t return this.backdrop.$background.width(elementData.width).height(elementData.height).offset(elementData.offset);\n\t };\n\t\n\t Tour.prototype._hideOverlayElement = function () {\n\t if (!this.backdrop.overlayElementShown) {\n\t return;\n\t }\n\t this.backdrop.$element.removeClass('tour-step-backdrop');\n\t this.backdrop.$background.remove();\n\t this.backdrop.$element = null;\n\t this.backdrop.$background = null;\n\t return this.backdrop.overlayElementShown = false;\n\t };\n\t\n\t Tour.prototype._applyBackdropPadding = function (padding, data) {\n\t if (typeof padding === 'object') {\n\t if (padding.top == null) {\n\t padding.top = 0;\n\t }\n\t if (padding.right == null) {\n\t padding.right = 0;\n\t }\n\t if (padding.bottom == null) {\n\t padding.bottom = 0;\n\t }\n\t if (padding.left == null) {\n\t padding.left = 0;\n\t }\n\t data.offset.top = data.offset.top - padding.top;\n\t data.offset.left = data.offset.left - padding.left;\n\t data.width = data.width + padding.left + padding.right;\n\t data.height = data.height + padding.top + padding.bottom;\n\t } else {\n\t data.offset.top = data.offset.top - padding;\n\t data.offset.left = data.offset.left - padding;\n\t data.width = data.width + padding * 2;\n\t data.height = data.height + padding * 2;\n\t }\n\t return data;\n\t };\n\t\n\t Tour.prototype._clearTimer = function () {\n\t window.clearTimeout(this._timer);\n\t this._timer = null;\n\t return this._duration = null;\n\t };\n\t\n\t Tour.prototype._getProtocol = function (url) {\n\t url = url.split('://');\n\t if (url.length > 1) {\n\t return url[0];\n\t } else {\n\t return 'http';\n\t }\n\t };\n\t\n\t Tour.prototype._getHost = function (url) {\n\t url = url.split('//');\n\t url = url.length > 1 ? url[1] : url[0];\n\t return url.split('/')[0];\n\t };\n\t\n\t Tour.prototype._getPath = function (path) {\n\t return path.replace(/\\/?$/, '').split('?')[0].split('#')[0];\n\t };\n\t\n\t Tour.prototype._getQuery = function (path) {\n\t return this._getParams(path, '?');\n\t };\n\t\n\t Tour.prototype._getHash = function (path) {\n\t return this._getParams(path, '#');\n\t };\n\t\n\t Tour.prototype._getParams = function (path, start) {\n\t var param, params, paramsObject, _i, _len;\n\t params = path.split(start);\n\t if (params.length === 1) {\n\t return {};\n\t }\n\t params = params[1].split('&');\n\t paramsObject = {};\n\t for (_i = 0, _len = params.length; _i < _len; _i++) {\n\t param = params[_i];\n\t param = param.split('=');\n\t paramsObject[param[0]] = param[1] || '';\n\t }\n\t return paramsObject;\n\t };\n\t\n\t Tour.prototype._equal = function (obj1, obj2) {\n\t var k, v;\n\t if ({}.toString.call(obj1) === '[object Object]' && {}.toString.call(obj2) === '[object Object]') {\n\t for (k in obj1) {\n\t v = obj1[k];\n\t if (obj2[k] !== v) {\n\t return false;\n\t }\n\t }\n\t for (k in obj2) {\n\t v = obj2[k];\n\t if (obj1[k] !== v) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\t return obj1 === obj2;\n\t };\n\t\n\t return Tour;\n\t }();\n\t return window.Tour = Tour;\n\t})(jQuery, window);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(jQuery) {/*! jQuery UI - v1.9.1 - 2012-10-29\n\t* http://jqueryui.com\n\t* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.menu.js, jquery.ui.slider.js\n\t* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\t\n\t(function (e, t) {\n\t function i(t, n) {\n\t var r,\n\t i,\n\t o,\n\t u = t.nodeName.toLowerCase();return \"area\" === u ? (r = t.parentNode, i = r.name, !t.href || !i || r.nodeName.toLowerCase() !== \"map\" ? !1 : (o = e(\"img[usemap=#\" + i + \"]\")[0], !!o && s(o))) : (/input|select|textarea|button|object/.test(u) ? !t.disabled : \"a\" === u ? t.href || n : n) && s(t);\n\t }function s(t) {\n\t return e.expr.filters.visible(t) && !e(t).parents().andSelf().filter(function () {\n\t return e.css(this, \"visibility\") === \"hidden\";\n\t }).length;\n\t }var n = 0,\n\t r = /^ui-id-\\d+$/;e.ui = e.ui || {};if (e.ui.version) return;e.extend(e.ui, { version: \"1.9.1\", keyCode: { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 } }), e.fn.extend({ _focus: e.fn.focus, focus: function (t, n) {\n\t return typeof t == \"number\" ? this.each(function () {\n\t var r = this;setTimeout(function () {\n\t e(r).focus(), n && n.call(r);\n\t }, t);\n\t }) : this._focus.apply(this, arguments);\n\t }, scrollParent: function () {\n\t var t;return e.ui.ie && /(static|relative)/.test(this.css(\"position\")) || /absolute/.test(this.css(\"position\")) ? t = this.parents().filter(function () {\n\t return (/(relative|absolute|fixed)/.test(e.css(this, \"position\")) && /(auto|scroll)/.test(e.css(this, \"overflow\") + e.css(this, \"overflow-y\") + e.css(this, \"overflow-x\"))\n\t );\n\t }).eq(0) : t = this.parents().filter(function () {\n\t return (/(auto|scroll)/.test(e.css(this, \"overflow\") + e.css(this, \"overflow-y\") + e.css(this, \"overflow-x\"))\n\t );\n\t }).eq(0), /fixed/.test(this.css(\"position\")) || !t.length ? e(document) : t;\n\t }, zIndex: function (n) {\n\t if (n !== t) return this.css(\"zIndex\", n);if (this.length) {\n\t var r = e(this[0]),\n\t i,\n\t s;while (r.length && r[0] !== document) {\n\t i = r.css(\"position\");if (i === \"absolute\" || i === \"relative\" || i === \"fixed\") {\n\t s = parseInt(r.css(\"zIndex\"), 10);if (!isNaN(s) && s !== 0) return s;\n\t }r = r.parent();\n\t }\n\t }return 0;\n\t }, uniqueId: function () {\n\t return this.each(function () {\n\t this.id || (this.id = \"ui-id-\" + ++n);\n\t });\n\t }, removeUniqueId: function () {\n\t return this.each(function () {\n\t r.test(this.id) && e(this).removeAttr(\"id\");\n\t });\n\t } }), e(\"\").outerWidth(1).jquery || e.each([\"Width\", \"Height\"], function (n, r) {\n\t function u(t, n, r, s) {\n\t return e.each(i, function () {\n\t n -= parseFloat(e.css(t, \"padding\" + this)) || 0, r && (n -= parseFloat(e.css(t, \"border\" + this + \"Width\")) || 0), s && (n -= parseFloat(e.css(t, \"margin\" + this)) || 0);\n\t }), n;\n\t }var i = r === \"Width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\n\t s = r.toLowerCase(),\n\t o = { innerWidth: e.fn.innerWidth, innerHeight: e.fn.innerHeight, outerWidth: e.fn.outerWidth, outerHeight: e.fn.outerHeight };e.fn[\"inner\" + r] = function (n) {\n\t return n === t ? o[\"inner\" + r].call(this) : this.each(function () {\n\t e(this).css(s, u(this, n) + \"px\");\n\t });\n\t }, e.fn[\"outer\" + r] = function (t, n) {\n\t return typeof t != \"number\" ? o[\"outer\" + r].call(this, t) : this.each(function () {\n\t e(this).css(s, u(this, t, !0, n) + \"px\");\n\t });\n\t };\n\t }), e.extend(e.expr[\":\"], { data: e.expr.createPseudo ? e.expr.createPseudo(function (t) {\n\t return function (n) {\n\t return !!e.data(n, t);\n\t };\n\t }) : function (t, n, r) {\n\t return !!e.data(t, r[3]);\n\t }, focusable: function (t) {\n\t return i(t, !isNaN(e.attr(t, \"tabindex\")));\n\t }, tabbable: function (t) {\n\t var n = e.attr(t, \"tabindex\"),\n\t r = isNaN(n);return (r || n >= 0) && i(t, !r);\n\t } }), e(function () {\n\t var t = document.body,\n\t n = t.appendChild(n = document.createElement(\"div\"));n.offsetHeight, e.extend(n.style, { minHeight: \"100px\", height: \"auto\", padding: 0, borderWidth: 0 }), e.support.minHeight = n.offsetHeight === 100, e.support.selectstart = \"onselectstart\" in n, t.removeChild(n).style.display = \"none\";\n\t }), function () {\n\t var t = /msie ([\\w.]+)/.exec(navigator.userAgent.toLowerCase()) || [];e.ui.ie = t.length ? !0 : !1, e.ui.ie6 = parseFloat(t[1], 10) === 6;\n\t }(), e.fn.extend({ disableSelection: function () {\n\t return this.bind((e.support.selectstart ? \"selectstart\" : \"mousedown\") + \".ui-disableSelection\", function (e) {\n\t e.preventDefault();\n\t });\n\t }, enableSelection: function () {\n\t return this.unbind(\".ui-disableSelection\");\n\t } }), e.extend(e.ui, { plugin: { add: function (t, n, r) {\n\t var i,\n\t s = e.ui[t].prototype;for (i in r) s.plugins[i] = s.plugins[i] || [], s.plugins[i].push([n, r[i]]);\n\t }, call: function (e, t, n) {\n\t var r,\n\t i = e.plugins[t];if (!i || !e.element[0].parentNode || e.element[0].parentNode.nodeType === 11) return;for (r = 0; r < i.length; r++) e.options[i[r][0]] && i[r][1].apply(e.element, n);\n\t } }, contains: e.contains, hasScroll: function (t, n) {\n\t if (e(t).css(\"overflow\") === \"hidden\") return !1;var r = n && n === \"left\" ? \"scrollLeft\" : \"scrollTop\",\n\t i = !1;return t[r] > 0 ? !0 : (t[r] = 1, i = t[r] > 0, t[r] = 0, i);\n\t }, isOverAxis: function (e, t, n) {\n\t return e > t && e < t + n;\n\t }, isOver: function (t, n, r, i, s, o) {\n\t return e.ui.isOverAxis(t, r, s) && e.ui.isOverAxis(n, i, o);\n\t } });\n\t})(jQuery);(function (e, t) {\n\t var n = 0,\n\t r = Array.prototype.slice,\n\t i = e.cleanData;e.cleanData = function (t) {\n\t for (var n = 0, r; (r = t[n]) != null; n++) try {\n\t e(r).triggerHandler(\"remove\");\n\t } catch (s) {}i(t);\n\t }, e.widget = function (t, n, r) {\n\t var i,\n\t s,\n\t o,\n\t u,\n\t a = t.split(\".\")[0];t = t.split(\".\")[1], i = a + \"-\" + t, r || (r = n, n = e.Widget), e.expr[\":\"][i.toLowerCase()] = function (t) {\n\t return !!e.data(t, i);\n\t }, e[a] = e[a] || {}, s = e[a][t], o = e[a][t] = function (e, t) {\n\t if (!this._createWidget) return new o(e, t);arguments.length && this._createWidget(e, t);\n\t }, e.extend(o, s, { version: r.version, _proto: e.extend({}, r), _childConstructors: [] }), u = new n(), u.options = e.widget.extend({}, u.options), e.each(r, function (t, i) {\n\t e.isFunction(i) && (r[t] = function () {\n\t var e = function () {\n\t return n.prototype[t].apply(this, arguments);\n\t },\n\t r = function (e) {\n\t return n.prototype[t].apply(this, e);\n\t };return function () {\n\t var t = this._super,\n\t n = this._superApply,\n\t s;return this._super = e, this._superApply = r, s = i.apply(this, arguments), this._super = t, this._superApply = n, s;\n\t };\n\t }());\n\t }), o.prototype = e.widget.extend(u, { widgetEventPrefix: u.widgetEventPrefix || t }, r, { constructor: o, namespace: a, widgetName: t, widgetBaseClass: i, widgetFullName: i }), s ? (e.each(s._childConstructors, function (t, n) {\n\t var r = n.prototype;e.widget(r.namespace + \".\" + r.widgetName, o, n._proto);\n\t }), delete s._childConstructors) : n._childConstructors.push(o), e.widget.bridge(t, o);\n\t }, e.widget.extend = function (n) {\n\t var i = r.call(arguments, 1),\n\t s = 0,\n\t o = i.length,\n\t u,\n\t a;for (; s < o; s++) for (u in i[s]) a = i[s][u], i[s].hasOwnProperty(u) && a !== t && (e.isPlainObject(a) ? n[u] = e.isPlainObject(n[u]) ? e.widget.extend({}, n[u], a) : e.widget.extend({}, a) : n[u] = a);return n;\n\t }, e.widget.bridge = function (n, i) {\n\t var s = i.prototype.widgetFullName;e.fn[n] = function (o) {\n\t var u = typeof o == \"string\",\n\t a = r.call(arguments, 1),\n\t f = this;return o = !u && a.length ? e.widget.extend.apply(null, [o].concat(a)) : o, u ? this.each(function () {\n\t var r,\n\t i = e.data(this, s);if (!i) return e.error(\"cannot call methods on \" + n + \" prior to initialization; \" + \"attempted to call method '\" + o + \"'\");if (!e.isFunction(i[o]) || o.charAt(0) === \"_\") return e.error(\"no such method '\" + o + \"' for \" + n + \" widget instance\");r = i[o].apply(i, a);if (r !== i && r !== t) return f = r && r.jquery ? f.pushStack(r.get()) : r, !1;\n\t }) : this.each(function () {\n\t var t = e.data(this, s);t ? t.option(o || {})._init() : new i(o, this);\n\t }), f;\n\t };\n\t }, e.Widget = function () {}, e.Widget._childConstructors = [], e.Widget.prototype = { widgetName: \"widget\", widgetEventPrefix: \"\", defaultElement: \"
\", options: { disabled: !1, create: null }, _createWidget: function (t, r) {\n\t r = e(r || this.defaultElement || this)[0], this.element = e(r), this.uuid = n++, this.eventNamespace = \".\" + this.widgetName + this.uuid, this.options = e.widget.extend({}, this.options, this._getCreateOptions(), t), this.bindings = e(), this.hoverable = e(), this.focusable = e(), r !== this && (e.data(r, this.widgetName, this), e.data(r, this.widgetFullName, this), this._on(this.element, { remove: function (e) {\n\t e.target === r && this.destroy();\n\t } }), this.document = e(r.style ? r.ownerDocument : r.document || r), this.window = e(this.document[0].defaultView || this.document[0].parentWindow)), this._create(), this._trigger(\"create\", null, this._getCreateEventData()), this._init();\n\t }, _getCreateOptions: e.noop, _getCreateEventData: e.noop, _create: e.noop, _init: e.noop, destroy: function () {\n\t this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)), this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName + \"-disabled \" + \"ui-state-disabled\"), this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass(\"ui-state-hover\"), this.focusable.removeClass(\"ui-state-focus\");\n\t }, _destroy: e.noop, widget: function () {\n\t return this.element;\n\t }, option: function (n, r) {\n\t var i = n,\n\t s,\n\t o,\n\t u;if (arguments.length === 0) return e.widget.extend({}, this.options);if (typeof n == \"string\") {\n\t i = {}, s = n.split(\".\"), n = s.shift();if (s.length) {\n\t o = i[n] = e.widget.extend({}, this.options[n]);for (u = 0; u < s.length - 1; u++) o[s[u]] = o[s[u]] || {}, o = o[s[u]];n = s.pop();if (r === t) return o[n] === t ? null : o[n];o[n] = r;\n\t } else {\n\t if (r === t) return this.options[n] === t ? null : this.options[n];i[n] = r;\n\t }\n\t }return this._setOptions(i), this;\n\t }, _setOptions: function (e) {\n\t var t;for (t in e) this._setOption(t, e[t]);return this;\n\t }, _setOption: function (e, t) {\n\t return this.options[e] = t, e === \"disabled\" && (this.widget().toggleClass(this.widgetFullName + \"-disabled ui-state-disabled\", !!t).attr(\"aria-disabled\", t), this.hoverable.removeClass(\"ui-state-hover\"), this.focusable.removeClass(\"ui-state-focus\")), this;\n\t }, enable: function () {\n\t return this._setOption(\"disabled\", !1);\n\t }, disable: function () {\n\t return this._setOption(\"disabled\", !0);\n\t }, _on: function (t, n) {\n\t var r,\n\t i = this;n ? (t = r = e(t), this.bindings = this.bindings.add(t)) : (n = t, t = this.element, r = this.widget()), e.each(n, function (n, s) {\n\t function o() {\n\t if (i.options.disabled === !0 || e(this).hasClass(\"ui-state-disabled\")) return;return (typeof s == \"string\" ? i[s] : s).apply(i, arguments);\n\t }typeof s != \"string\" && (o.guid = s.guid = s.guid || o.guid || e.guid++);var u = n.match(/^(\\w+)\\s*(.*)$/),\n\t a = u[1] + i.eventNamespace,\n\t f = u[2];f ? r.delegate(f, a, o) : t.bind(a, o);\n\t });\n\t }, _off: function (e, t) {\n\t t = (t || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace, e.unbind(t).undelegate(t);\n\t }, _delay: function (e, t) {\n\t function n() {\n\t return (typeof e == \"string\" ? r[e] : e).apply(r, arguments);\n\t }var r = this;return setTimeout(n, t || 0);\n\t }, _hoverable: function (t) {\n\t this.hoverable = this.hoverable.add(t), this._on(t, { mouseenter: function (t) {\n\t e(t.currentTarget).addClass(\"ui-state-hover\");\n\t }, mouseleave: function (t) {\n\t e(t.currentTarget).removeClass(\"ui-state-hover\");\n\t } });\n\t }, _focusable: function (t) {\n\t this.focusable = this.focusable.add(t), this._on(t, { focusin: function (t) {\n\t e(t.currentTarget).addClass(\"ui-state-focus\");\n\t }, focusout: function (t) {\n\t e(t.currentTarget).removeClass(\"ui-state-focus\");\n\t } });\n\t }, _trigger: function (t, n, r) {\n\t var i,\n\t s,\n\t o = this.options[t];r = r || {}, n = e.Event(n), n.type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), n.target = this.element[0], s = n.originalEvent;if (s) for (i in s) i in n || (n[i] = s[i]);return this.element.trigger(n, r), !(e.isFunction(o) && o.apply(this.element[0], [n].concat(r)) === !1 || n.isDefaultPrevented());\n\t } }, e.each({ show: \"fadeIn\", hide: \"fadeOut\" }, function (t, n) {\n\t e.Widget.prototype[\"_\" + t] = function (r, i, s) {\n\t typeof i == \"string\" && (i = { effect: i });var o,\n\t u = i ? i === !0 || typeof i == \"number\" ? n : i.effect || n : t;i = i || {}, typeof i == \"number\" && (i = { duration: i }), o = !e.isEmptyObject(i), i.complete = s, i.delay && r.delay(i.delay), o && e.effects && (e.effects.effect[u] || e.uiBackCompat !== !1 && e.effects[u]) ? r[t](i) : u !== t && r[u] ? r[u](i.duration, i.easing, s) : r.queue(function (n) {\n\t e(this)[t](), s && s.call(r[0]), n();\n\t });\n\t };\n\t }), e.uiBackCompat !== !1 && (e.Widget.prototype._getCreateOptions = function () {\n\t return e.metadata && e.metadata.get(this.element[0])[this.widgetName];\n\t });\n\t})(jQuery);(function (e, t) {\n\t var n = !1;e(document).mouseup(function (e) {\n\t n = !1;\n\t }), e.widget(\"ui.mouse\", { version: \"1.9.1\", options: { cancel: \"input,textarea,button,select,option\", distance: 1, delay: 0 }, _mouseInit: function () {\n\t var t = this;this.element.bind(\"mousedown.\" + this.widgetName, function (e) {\n\t return t._mouseDown(e);\n\t }).bind(\"click.\" + this.widgetName, function (n) {\n\t if (!0 === e.data(n.target, t.widgetName + \".preventClickEvent\")) return e.removeData(n.target, t.widgetName + \".preventClickEvent\"), n.stopImmediatePropagation(), !1;\n\t }), this.started = !1;\n\t }, _mouseDestroy: function () {\n\t this.element.unbind(\".\" + this.widgetName), this._mouseMoveDelegate && e(document).unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n\t }, _mouseDown: function (t) {\n\t if (n) return;this._mouseStarted && this._mouseUp(t), this._mouseDownEvent = t;var r = this,\n\t i = t.which === 1,\n\t s = typeof this.options.cancel == \"string\" && t.target.nodeName ? e(t.target).closest(this.options.cancel).length : !1;if (!i || s || !this._mouseCapture(t)) return !0;this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () {\n\t r.mouseDelayMet = !0;\n\t }, this.options.delay));if (this._mouseDistanceMet(t) && this._mouseDelayMet(t)) {\n\t this._mouseStarted = this._mouseStart(t) !== !1;if (!this._mouseStarted) return t.preventDefault(), !0;\n\t }return !0 === e.data(t.target, this.widgetName + \".preventClickEvent\") && e.removeData(t.target, this.widgetName + \".preventClickEvent\"), this._mouseMoveDelegate = function (e) {\n\t return r._mouseMove(e);\n\t }, this._mouseUpDelegate = function (e) {\n\t return r._mouseUp(e);\n\t }, e(document).bind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).bind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), t.preventDefault(), n = !0, !0;\n\t }, _mouseMove: function (t) {\n\t return !e.ui.ie || document.documentMode >= 9 || !!t.button ? this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, t) !== !1, this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted) : this._mouseUp(t);\n\t }, _mouseUp: function (t) {\n\t return e(document).unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && e.data(t.target, this.widgetName + \".preventClickEvent\", !0), this._mouseStop(t)), !1;\n\t }, _mouseDistanceMet: function (e) {\n\t return Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance;\n\t }, _mouseDelayMet: function (e) {\n\t return this.mouseDelayMet;\n\t }, _mouseStart: function (e) {}, _mouseDrag: function (e) {}, _mouseStop: function (e) {}, _mouseCapture: function (e) {\n\t return !0;\n\t } });\n\t})(jQuery);(function (e, t) {\n\t function h(e, t, n) {\n\t return [parseInt(e[0], 10) * (l.test(e[0]) ? t / 100 : 1), parseInt(e[1], 10) * (l.test(e[1]) ? n / 100 : 1)];\n\t }function p(t, n) {\n\t return parseInt(e.css(t, n), 10) || 0;\n\t }e.ui = e.ui || {};var n,\n\t r = Math.max,\n\t i = Math.abs,\n\t s = Math.round,\n\t o = /left|center|right/,\n\t u = /top|center|bottom/,\n\t a = /[\\+\\-]\\d+%?/,\n\t f = /^\\w+/,\n\t l = /%$/,\n\t c = e.fn.position;e.position = { scrollbarWidth: function () {\n\t if (n !== t) return n;var r,\n\t i,\n\t s = e(\"
\"),\n\t o = s.children()[0];return e(\"body\").append(s), r = o.offsetWidth, s.css(\"overflow\", \"scroll\"), i = o.offsetWidth, r === i && (i = s[0].clientWidth), s.remove(), n = r - i;\n\t }, getScrollInfo: function (t) {\n\t var n = t.isWindow ? \"\" : t.element.css(\"overflow-x\"),\n\t r = t.isWindow ? \"\" : t.element.css(\"overflow-y\"),\n\t i = n === \"scroll\" || n === \"auto\" && t.width < t.element[0].scrollWidth,\n\t s = r === \"scroll\" || r === \"auto\" && t.height < t.element[0].scrollHeight;return { width: i ? e.position.scrollbarWidth() : 0, height: s ? e.position.scrollbarWidth() : 0 };\n\t }, getWithinInfo: function (t) {\n\t var n = e(t || window),\n\t r = e.isWindow(n[0]);return { element: n, isWindow: r, offset: n.offset() || { left: 0, top: 0 }, scrollLeft: n.scrollLeft(), scrollTop: n.scrollTop(), width: r ? n.width() : n.outerWidth(), height: r ? n.height() : n.outerHeight() };\n\t } }, e.fn.position = function (t) {\n\t if (!t || !t.of) return c.apply(this, arguments);t = e.extend({}, t);var n,\n\t l,\n\t d,\n\t v,\n\t m,\n\t g = e(t.of),\n\t y = e.position.getWithinInfo(t.within),\n\t b = e.position.getScrollInfo(y),\n\t w = g[0],\n\t E = (t.collision || \"flip\").split(\" \"),\n\t S = {};return w.nodeType === 9 ? (l = g.width(), d = g.height(), v = { top: 0, left: 0 }) : e.isWindow(w) ? (l = g.width(), d = g.height(), v = { top: g.scrollTop(), left: g.scrollLeft() }) : w.preventDefault ? (t.at = \"left top\", l = d = 0, v = { top: w.pageY, left: w.pageX }) : (l = g.outerWidth(), d = g.outerHeight(), v = g.offset()), m = e.extend({}, v), e.each([\"my\", \"at\"], function () {\n\t var e = (t[this] || \"\").split(\" \"),\n\t n,\n\t r;e.length === 1 && (e = o.test(e[0]) ? e.concat([\"center\"]) : u.test(e[0]) ? [\"center\"].concat(e) : [\"center\", \"center\"]), e[0] = o.test(e[0]) ? e[0] : \"center\", e[1] = u.test(e[1]) ? e[1] : \"center\", n = a.exec(e[0]), r = a.exec(e[1]), S[this] = [n ? n[0] : 0, r ? r[0] : 0], t[this] = [f.exec(e[0])[0], f.exec(e[1])[0]];\n\t }), E.length === 1 && (E[1] = E[0]), t.at[0] === \"right\" ? m.left += l : t.at[0] === \"center\" && (m.left += l / 2), t.at[1] === \"bottom\" ? m.top += d : t.at[1] === \"center\" && (m.top += d / 2), n = h(S.at, l, d), m.left += n[0], m.top += n[1], this.each(function () {\n\t var o,\n\t u,\n\t a = e(this),\n\t f = a.outerWidth(),\n\t c = a.outerHeight(),\n\t w = p(this, \"marginLeft\"),\n\t x = p(this, \"marginTop\"),\n\t T = f + w + p(this, \"marginRight\") + b.width,\n\t N = c + x + p(this, \"marginBottom\") + b.height,\n\t C = e.extend({}, m),\n\t k = h(S.my, a.outerWidth(), a.outerHeight());t.my[0] === \"right\" ? C.left -= f : t.my[0] === \"center\" && (C.left -= f / 2), t.my[1] === \"bottom\" ? C.top -= c : t.my[1] === \"center\" && (C.top -= c / 2), C.left += k[0], C.top += k[1], e.support.offsetFractions || (C.left = s(C.left), C.top = s(C.top)), o = { marginLeft: w, marginTop: x }, e.each([\"left\", \"top\"], function (r, i) {\n\t e.ui.position[E[r]] && e.ui.position[E[r]][i](C, { targetWidth: l, targetHeight: d, elemWidth: f, elemHeight: c, collisionPosition: o, collisionWidth: T, collisionHeight: N, offset: [n[0] + k[0], n[1] + k[1]], my: t.my, at: t.at, within: y, elem: a });\n\t }), e.fn.bgiframe && a.bgiframe(), t.using && (u = function (e) {\n\t var n = v.left - C.left,\n\t s = n + l - f,\n\t o = v.top - C.top,\n\t u = o + d - c,\n\t h = { target: { element: g, left: v.left, top: v.top, width: l, height: d }, element: { element: a, left: C.left, top: C.top, width: f, height: c }, horizontal: s < 0 ? \"left\" : n > 0 ? \"right\" : \"center\", vertical: u < 0 ? \"top\" : o > 0 ? \"bottom\" : \"middle\" };l < f && i(n + s) < l && (h.horizontal = \"center\"), d < c && i(o + u) < d && (h.vertical = \"middle\"), r(i(n), i(s)) > r(i(o), i(u)) ? h.important = \"horizontal\" : h.important = \"vertical\", t.using.call(this, e, h);\n\t }), a.offset(e.extend(C, { using: u }));\n\t });\n\t }, e.ui.position = { fit: { left: function (e, t) {\n\t var n = t.within,\n\t i = n.isWindow ? n.scrollLeft : n.offset.left,\n\t s = n.width,\n\t o = e.left - t.collisionPosition.marginLeft,\n\t u = i - o,\n\t a = o + t.collisionWidth - s - i,\n\t f;t.collisionWidth > s ? u > 0 && a <= 0 ? (f = e.left + u + t.collisionWidth - s - i, e.left += u - f) : a > 0 && u <= 0 ? e.left = i : u > a ? e.left = i + s - t.collisionWidth : e.left = i : u > 0 ? e.left += u : a > 0 ? e.left -= a : e.left = r(e.left - o, e.left);\n\t }, top: function (e, t) {\n\t var n = t.within,\n\t i = n.isWindow ? n.scrollTop : n.offset.top,\n\t s = t.within.height,\n\t o = e.top - t.collisionPosition.marginTop,\n\t u = i - o,\n\t a = o + t.collisionHeight - s - i,\n\t f;t.collisionHeight > s ? u > 0 && a <= 0 ? (f = e.top + u + t.collisionHeight - s - i, e.top += u - f) : a > 0 && u <= 0 ? e.top = i : u > a ? e.top = i + s - t.collisionHeight : e.top = i : u > 0 ? e.top += u : a > 0 ? e.top -= a : e.top = r(e.top - o, e.top);\n\t } }, flip: { left: function (e, t) {\n\t var n = t.within,\n\t r = n.offset.left + n.scrollLeft,\n\t s = n.width,\n\t o = n.isWindow ? n.scrollLeft : n.offset.left,\n\t u = e.left - t.collisionPosition.marginLeft,\n\t a = u - o,\n\t f = u + t.collisionWidth - s - o,\n\t l = t.my[0] === \"left\" ? -t.elemWidth : t.my[0] === \"right\" ? t.elemWidth : 0,\n\t c = t.at[0] === \"left\" ? t.targetWidth : t.at[0] === \"right\" ? -t.targetWidth : 0,\n\t h = -2 * t.offset[0],\n\t p,\n\t d;if (a < 0) {\n\t p = e.left + l + c + h + t.collisionWidth - s - r;if (p < 0 || p < i(a)) e.left += l + c + h;\n\t } else if (f > 0) {\n\t d = e.left - t.collisionPosition.marginLeft + l + c + h - o;if (d > 0 || i(d) < f) e.left += l + c + h;\n\t }\n\t }, top: function (e, t) {\n\t var n = t.within,\n\t r = n.offset.top + n.scrollTop,\n\t s = n.height,\n\t o = n.isWindow ? n.scrollTop : n.offset.top,\n\t u = e.top - t.collisionPosition.marginTop,\n\t a = u - o,\n\t f = u + t.collisionHeight - s - o,\n\t l = t.my[1] === \"top\",\n\t c = l ? -t.elemHeight : t.my[1] === \"bottom\" ? t.elemHeight : 0,\n\t h = t.at[1] === \"top\" ? t.targetHeight : t.at[1] === \"bottom\" ? -t.targetHeight : 0,\n\t p = -2 * t.offset[1],\n\t d,\n\t v;a < 0 ? (v = e.top + c + h + p + t.collisionHeight - s - r, e.top + c + h + p > a && (v < 0 || v < i(a)) && (e.top += c + h + p)) : f > 0 && (d = e.top - t.collisionPosition.marginTop + c + h + p - o, e.top + c + h + p > f && (d > 0 || i(d) < f) && (e.top += c + h + p));\n\t } }, flipfit: { left: function () {\n\t e.ui.position.flip.left.apply(this, arguments), e.ui.position.fit.left.apply(this, arguments);\n\t }, top: function () {\n\t e.ui.position.flip.top.apply(this, arguments), e.ui.position.fit.top.apply(this, arguments);\n\t } } }, function () {\n\t var t,\n\t n,\n\t r,\n\t i,\n\t s,\n\t o = document.getElementsByTagName(\"body\")[0],\n\t u = document.createElement(\"div\");t = document.createElement(o ? \"div\" : \"body\"), r = { visibility: \"hidden\", width: 0, height: 0, border: 0, margin: 0, background: \"none\" }, o && e.extend(r, { position: \"absolute\", left: \"-1000px\", top: \"-1000px\" });for (s in r) t.style[s] = r[s];t.appendChild(u), n = o || document.documentElement, n.insertBefore(t, n.firstChild), u.style.cssText = \"position: absolute; left: 10.7432222px;\", i = e(u).offset().left, e.support.offsetFractions = i > 10 && i < 11, t.innerHTML = \"\", n.removeChild(t);\n\t }(), e.uiBackCompat !== !1 && function (e) {\n\t var n = e.fn.position;e.fn.position = function (r) {\n\t if (!r || !r.offset) return n.call(this, r);var i = r.offset.split(\" \"),\n\t s = r.at.split(\" \");return i.length === 1 && (i[1] = i[0]), /^\\d/.test(i[0]) && (i[0] = \"+\" + i[0]), /^\\d/.test(i[1]) && (i[1] = \"+\" + i[1]), s.length === 1 && (/left|center|right/.test(s[0]) ? s[1] = \"center\" : (s[1] = s[0], s[0] = \"center\")), n.call(this, e.extend(r, { at: s[0] + i[0] + \" \" + s[1] + i[1], offset: t }));\n\t };\n\t }(jQuery);\n\t})(jQuery);(function (e, t) {\n\t var n = 0;e.widget(\"ui.autocomplete\", { version: \"1.9.1\", defaultElement: \"\", options: { appendTo: \"body\", autoFocus: !1, delay: 300, minLength: 1, position: { my: \"left top\", at: \"left bottom\", collision: \"none\" }, source: null, change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, pending: 0, _create: function () {\n\t var t, n, r;this.isMultiLine = this._isMultiLine(), this.valueMethod = this.element[this.element.is(\"input,textarea\") ? \"val\" : \"text\"], this.isNewMenu = !0, this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\", \"off\"), this._on(this.element, { keydown: function (i) {\n\t if (this.element.prop(\"readOnly\")) {\n\t t = !0, r = !0, n = !0;return;\n\t }t = !1, r = !1, n = !1;var s = e.ui.keyCode;switch (i.keyCode) {case s.PAGE_UP:\n\t t = !0, this._move(\"previousPage\", i);break;case s.PAGE_DOWN:\n\t t = !0, this._move(\"nextPage\", i);break;case s.UP:\n\t t = !0, this._keyEvent(\"previous\", i);break;case s.DOWN:\n\t t = !0, this._keyEvent(\"next\", i);break;case s.ENTER:case s.NUMPAD_ENTER:\n\t this.menu.active && (t = !0, i.preventDefault(), this.menu.select(i));break;case s.TAB:\n\t this.menu.active && this.menu.select(i);break;case s.ESCAPE:\n\t this.menu.element.is(\":visible\") && (this._value(this.term), this.close(i), i.preventDefault());break;default:\n\t n = !0, this._searchTimeout(i);}\n\t }, keypress: function (r) {\n\t if (t) {\n\t t = !1, r.preventDefault();return;\n\t }if (n) return;var i = e.ui.keyCode;switch (r.keyCode) {case i.PAGE_UP:\n\t this._move(\"previousPage\", r);break;case i.PAGE_DOWN:\n\t this._move(\"nextPage\", r);break;case i.UP:\n\t this._keyEvent(\"previous\", r);break;case i.DOWN:\n\t this._keyEvent(\"next\", r);}\n\t }, input: function (e) {\n\t if (r) {\n\t r = !1, e.preventDefault();return;\n\t }this._searchTimeout(e);\n\t }, focus: function () {\n\t this.selectedItem = null, this.previous = this._value();\n\t }, blur: function (e) {\n\t if (this.cancelBlur) {\n\t delete this.cancelBlur;return;\n\t }clearTimeout(this.searching), this.close(e), this._change(e);\n\t } }), this._initSource(), this.menu = e(\"
    \").addClass(\"ui-autocomplete\").appendTo(this.document.find(this.options.appendTo || \"body\")[0]).menu({ input: e(), role: null }).zIndex(this.element.zIndex() + 1).hide().data(\"menu\"), this._on(this.menu.element, { mousedown: function (t) {\n\t t.preventDefault(), this.cancelBlur = !0, this._delay(function () {\n\t delete this.cancelBlur;\n\t });var n = this.menu.element[0];e(t.target).closest(\".ui-menu-item\").length || this._delay(function () {\n\t var t = this;this.document.one(\"mousedown\", function (r) {\n\t r.target !== t.element[0] && r.target !== n && !e.contains(n, r.target) && t.close();\n\t });\n\t });\n\t }, menufocus: function (t, n) {\n\t if (this.isNewMenu) {\n\t this.isNewMenu = !1;if (t.originalEvent && /^mouse/.test(t.originalEvent.type)) {\n\t this.menu.blur(), this.document.one(\"mousemove\", function () {\n\t e(t.target).trigger(t.originalEvent);\n\t });return;\n\t }\n\t }var r = n.item.data(\"ui-autocomplete-item\") || n.item.data(\"item.autocomplete\");!1 !== this._trigger(\"focus\", t, { item: r }) ? t.originalEvent && /^key/.test(t.originalEvent.type) && this._value(r.value) : this.liveRegion.text(r.value);\n\t }, menuselect: function (e, t) {\n\t var n = t.item.data(\"ui-autocomplete-item\") || t.item.data(\"item.autocomplete\"),\n\t r = this.previous;this.element[0] !== this.document[0].activeElement && (this.element.focus(), this.previous = r, this._delay(function () {\n\t this.previous = r, this.selectedItem = n;\n\t })), !1 !== this._trigger(\"select\", e, { item: n }) && this._value(n.value), this.term = this._value(), this.close(e), this.selectedItem = n;\n\t } }), this.liveRegion = e(\"\", { role: \"status\", \"aria-live\": \"polite\" }).addClass(\"ui-helper-hidden-accessible\").insertAfter(this.element), e.fn.bgiframe && this.menu.element.bgiframe(), this._on(this.window, { beforeunload: function () {\n\t this.element.removeAttr(\"autocomplete\");\n\t } });\n\t }, _destroy: function () {\n\t clearTimeout(this.searching), this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"), this.menu.element.remove(), this.liveRegion.remove();\n\t }, _setOption: function (e, t) {\n\t this._super(e, t), e === \"source\" && this._initSource(), e === \"appendTo\" && this.menu.element.appendTo(this.document.find(t || \"body\")[0]), e === \"disabled\" && t && this.xhr && this.xhr.abort();\n\t }, _isMultiLine: function () {\n\t return this.element.is(\"textarea\") ? !0 : this.element.is(\"input\") ? !1 : this.element.prop(\"isContentEditable\");\n\t }, _initSource: function () {\n\t var t,\n\t n,\n\t r = this;e.isArray(this.options.source) ? (t = this.options.source, this.source = function (n, r) {\n\t r(e.ui.autocomplete.filter(t, n.term));\n\t }) : typeof this.options.source == \"string\" ? (n = this.options.source, this.source = function (t, i) {\n\t r.xhr && r.xhr.abort(), r.xhr = e.ajax({ url: n, data: t, dataType: \"json\", success: function (e) {\n\t i(e);\n\t }, error: function () {\n\t i([]);\n\t } });\n\t }) : this.source = this.options.source;\n\t }, _searchTimeout: function (e) {\n\t clearTimeout(this.searching), this.searching = this._delay(function () {\n\t this.term !== this._value() && (this.selectedItem = null, this.search(null, e));\n\t }, this.options.delay);\n\t }, search: function (e, t) {\n\t e = e != null ? e : this._value(), this.term = this._value();if (e.length < this.options.minLength) return this.close(t);if (this._trigger(\"search\", t) === !1) return;return this._search(e);\n\t }, _search: function (e) {\n\t this.pending++, this.element.addClass(\"ui-autocomplete-loading\"), this.cancelSearch = !1, this.source({ term: e }, this._response());\n\t }, _response: function () {\n\t var e = this,\n\t t = ++n;return function (r) {\n\t t === n && e.__response(r), e.pending--, e.pending || e.element.removeClass(\"ui-autocomplete-loading\");\n\t };\n\t }, __response: function (e) {\n\t e && (e = this._normalize(e)), this._trigger(\"response\", null, { content: e }), !this.options.disabled && e && e.length && !this.cancelSearch ? (this._suggest(e), this._trigger(\"open\")) : this._close();\n\t }, close: function (e) {\n\t this.cancelSearch = !0, this._close(e);\n\t }, _close: function (e) {\n\t this.menu.element.is(\":visible\") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger(\"close\", e));\n\t }, _change: function (e) {\n\t this.previous !== this._value() && this._trigger(\"change\", e, { item: this.selectedItem });\n\t }, _normalize: function (t) {\n\t return t.length && t[0].label && t[0].value ? t : e.map(t, function (t) {\n\t return typeof t == \"string\" ? { label: t, value: t } : e.extend({ label: t.label || t.value, value: t.value || t.label }, t);\n\t });\n\t }, _suggest: function (t) {\n\t var n = this.menu.element.empty().zIndex(this.element.zIndex() + 1);this._renderMenu(n, t), this.menu.refresh(), n.show(), this._resizeMenu(), n.position(e.extend({ of: this.element }, this.options.position)), this.options.autoFocus && this.menu.next();\n\t }, _resizeMenu: function () {\n\t var e = this.menu.element;e.outerWidth(Math.max(e.width(\"\").outerWidth() + 1, this.element.outerWidth()));\n\t }, _renderMenu: function (t, n) {\n\t var r = this;e.each(n, function (e, n) {\n\t r._renderItemData(t, n);\n\t });\n\t }, _renderItemData: function (e, t) {\n\t return this._renderItem(e, t).data(\"ui-autocomplete-item\", t);\n\t }, _renderItem: function (t, n) {\n\t return e(\"
  • \").append(e(\"\").text(n.label)).appendTo(t);\n\t }, _move: function (e, t) {\n\t if (!this.menu.element.is(\":visible\")) {\n\t this.search(null, t);return;\n\t }if (this.menu.isFirstItem() && /^previous/.test(e) || this.menu.isLastItem() && /^next/.test(e)) {\n\t this._value(this.term), this.menu.blur();return;\n\t }this.menu[e](t);\n\t }, widget: function () {\n\t return this.menu.element;\n\t }, _value: function () {\n\t return this.valueMethod.apply(this.element, arguments);\n\t }, _keyEvent: function (e, t) {\n\t if (!this.isMultiLine || this.menu.element.is(\":visible\")) this._move(e, t), t.preventDefault();\n\t } }), e.extend(e.ui.autocomplete, { escapeRegex: function (e) {\n\t return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t }, filter: function (t, n) {\n\t var r = new RegExp(e.ui.autocomplete.escapeRegex(n), \"i\");return e.grep(t, function (e) {\n\t return r.test(e.label || e.value || e);\n\t });\n\t } }), e.widget(\"ui.autocomplete\", e.ui.autocomplete, { options: { messages: { noResults: \"No search results.\", results: function (e) {\n\t return e + (e > 1 ? \" results are\" : \" result is\") + \" available, use up and down arrow keys to navigate.\";\n\t } } }, __response: function (e) {\n\t var t;this._superApply(arguments);if (this.options.disabled || this.cancelSearch) return;e && e.length ? t = this.options.messages.results(e.length) : t = this.options.messages.noResults, this.liveRegion.text(t);\n\t } });\n\t})(jQuery);(function (e, t) {\n\t var n,\n\t r,\n\t i,\n\t s,\n\t o = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\t u = \"ui-state-hover ui-state-active \",\n\t a = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\t f = function () {\n\t var t = e(this).find(\":ui-button\");setTimeout(function () {\n\t t.button(\"refresh\");\n\t }, 1);\n\t },\n\t l = function (t) {\n\t var n = t.name,\n\t r = t.form,\n\t i = e([]);return n && (r ? i = e(r).find(\"[name='\" + n + \"']\") : i = e(\"[name='\" + n + \"']\", t.ownerDocument).filter(function () {\n\t return !this.form;\n\t })), i;\n\t };e.widget(\"ui.button\", { version: \"1.9.1\", defaultElement: \"
\"\n )\n });\n modal.show( { backdrop: true } );\n}\n\n\n// ============================================================================\n return {\n Modal : Modal,\n hide_modal : hide_modal,\n show_modal : show_modal,\n show_message : show_message,\n show_in_overlay : show_in_overlay,\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/modal.js","/* ========================================================================\n * bootstrap-tour - v0.10.2\n * http://bootstraptour.com\n * ========================================================================\n * Copyright 2012-2015 Ulrich Sossou\n *\n * ========================================================================\n * Licensed under the MIT License (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://opensource.org/licenses/MIT\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================================\n */\n\n(function($, window) {\n var Tour, document;\n document = window.document;\n Tour = (function() {\n function Tour(options) {\n var storage;\n try {\n storage = window.localStorage;\n } catch (_error) {\n storage = false;\n }\n this._options = $.extend({\n name: 'tour',\n steps: [],\n container: 'body',\n autoscroll: true,\n keyboard: true,\n storage: storage,\n debug: false,\n backdrop: false,\n backdropContainer: 'body',\n backdropPadding: 0,\n redirect: true,\n orphan: false,\n duration: false,\n delay: false,\n basePath: '',\n template: '

',\n afterSetState: function(key, value) {},\n afterGetState: function(key, value) {},\n afterRemoveState: function(key) {},\n onStart: function(tour) {},\n onEnd: function(tour) {},\n onShow: function(tour) {},\n onShown: function(tour) {},\n onHide: function(tour) {},\n onHidden: function(tour) {},\n onNext: function(tour) {},\n onPrev: function(tour) {},\n onPause: function(tour, duration) {},\n onResume: function(tour, duration) {},\n onRedirectError: function(tour) {}\n }, options);\n this._force = false;\n this._inited = false;\n this._current = null;\n this.backdrop = {\n overlay: null,\n $element: null,\n $background: null,\n backgroundShown: false,\n overlayElementShown: false\n };\n this;\n }\n\n Tour.prototype.addSteps = function(steps) {\n var step, _i, _len;\n for (_i = 0, _len = steps.length; _i < _len; _i++) {\n step = steps[_i];\n this.addStep(step);\n }\n return this;\n };\n\n Tour.prototype.addStep = function(step) {\n this._options.steps.push(step);\n return this;\n };\n\n Tour.prototype.getStep = function(i) {\n if (this._options.steps[i] != null) {\n return $.extend({\n id: \"step-\" + i,\n path: '',\n host: '',\n placement: 'right',\n title: '',\n content: '

',\n next: i === this._options.steps.length - 1 ? -1 : i + 1,\n prev: i - 1,\n animation: true,\n container: this._options.container,\n autoscroll: this._options.autoscroll,\n backdrop: this._options.backdrop,\n backdropContainer: this._options.backdropContainer,\n backdropPadding: this._options.backdropPadding,\n redirect: this._options.redirect,\n reflexElement: this._options.steps[i].element,\n orphan: this._options.orphan,\n duration: this._options.duration,\n delay: this._options.delay,\n template: this._options.template,\n onShow: this._options.onShow,\n onShown: this._options.onShown,\n onHide: this._options.onHide,\n onHidden: this._options.onHidden,\n onNext: this._options.onNext,\n onPrev: this._options.onPrev,\n onPause: this._options.onPause,\n onResume: this._options.onResume,\n onRedirectError: this._options.onRedirectError\n }, this._options.steps[i]);\n }\n };\n\n Tour.prototype.init = function(force) {\n this._force = force;\n if (this.ended()) {\n this._debug('Tour ended, init prevented.');\n return this;\n }\n this.setCurrentStep();\n this._initMouseNavigation();\n this._initKeyboardNavigation();\n this._onResize((function(_this) {\n return function() {\n return _this.showStep(_this._current);\n };\n })(this));\n if (this._current !== null) {\n this.showStep(this._current);\n }\n this._inited = true;\n return this;\n };\n\n Tour.prototype.start = function(force) {\n var promise;\n if (force == null) {\n force = false;\n }\n if (!this._inited) {\n this.init(force);\n }\n if (this._current === null) {\n promise = this._makePromise(this._options.onStart != null ? this._options.onStart(this) : void 0);\n this._callOnPromiseDone(promise, this.showStep, 0);\n }\n return this;\n };\n\n Tour.prototype.next = function() {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this._showNextStep);\n };\n\n Tour.prototype.prev = function() {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this._showPrevStep);\n };\n\n Tour.prototype.goTo = function(i) {\n var promise;\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, this.showStep, i);\n };\n\n Tour.prototype.end = function() {\n var endHelper, promise;\n endHelper = (function(_this) {\n return function(e) {\n $(document).off(\"click.tour-\" + _this._options.name);\n $(document).off(\"keyup.tour-\" + _this._options.name);\n $(window).off(\"resize.tour-\" + _this._options.name);\n _this._setState('end', 'yes');\n _this._inited = false;\n _this._force = false;\n _this._clearTimer();\n if (_this._options.onEnd != null) {\n return _this._options.onEnd(_this);\n }\n };\n })(this);\n promise = this.hideStep(this._current);\n return this._callOnPromiseDone(promise, endHelper);\n };\n\n Tour.prototype.ended = function() {\n return !this._force && !!this._getState('end');\n };\n\n Tour.prototype.restart = function() {\n this._removeState('current_step');\n this._removeState('end');\n this._removeState('redirect_to');\n return this.start();\n };\n\n Tour.prototype.pause = function() {\n var step;\n step = this.getStep(this._current);\n if (!(step && step.duration)) {\n return this;\n }\n this._paused = true;\n this._duration -= new Date().getTime() - this._start;\n window.clearTimeout(this._timer);\n this._debug(\"Paused/Stopped step \" + (this._current + 1) + \" timer (\" + this._duration + \" remaining).\");\n if (step.onPause != null) {\n return step.onPause(this, this._duration);\n }\n };\n\n Tour.prototype.resume = function() {\n var step;\n step = this.getStep(this._current);\n if (!(step && step.duration)) {\n return this;\n }\n this._paused = false;\n this._start = new Date().getTime();\n this._duration = this._duration || step.duration;\n this._timer = window.setTimeout((function(_this) {\n return function() {\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n };\n })(this), this._duration);\n this._debug(\"Started step \" + (this._current + 1) + \" timer with duration \" + this._duration);\n if ((step.onResume != null) && this._duration !== step.duration) {\n return step.onResume(this, this._duration);\n }\n };\n\n Tour.prototype.hideStep = function(i) {\n var hideStepHelper, promise, step;\n step = this.getStep(i);\n if (!step) {\n return;\n }\n this._clearTimer();\n promise = this._makePromise(step.onHide != null ? step.onHide(this, i) : void 0);\n hideStepHelper = (function(_this) {\n return function(e) {\n var $element;\n $element = $(step.element);\n if (!($element.data('bs.popover') || $element.data('popover'))) {\n $element = $('body');\n }\n $element.popover('destroy').removeClass(\"tour-\" + _this._options.name + \"-element tour-\" + _this._options.name + \"-\" + i + \"-element\");\n $element.removeData('bs.popover');\n if (step.reflex) {\n $(step.reflexElement).removeClass('tour-step-element-reflex').off(\"\" + (_this._reflexEvent(step.reflex)) + \".tour-\" + _this._options.name);\n }\n if (step.backdrop) {\n _this._hideBackdrop();\n }\n if (step.onHidden != null) {\n return step.onHidden(_this);\n }\n };\n })(this);\n this._callOnPromiseDone(promise, hideStepHelper);\n return promise;\n };\n\n Tour.prototype.showStep = function(i) {\n var promise, showStepHelper, skipToPrevious, step;\n if (this.ended()) {\n this._debug('Tour ended, showStep prevented.');\n return this;\n }\n step = this.getStep(i);\n if (!step) {\n return;\n }\n skipToPrevious = i < this._current;\n promise = this._makePromise(step.onShow != null ? step.onShow(this, i) : void 0);\n showStepHelper = (function(_this) {\n return function(e) {\n var path, showPopoverAndOverlay;\n _this.setCurrentStep(i);\n path = (function() {\n switch ({}.toString.call(step.path)) {\n case '[object Function]':\n return step.path();\n case '[object String]':\n return this._options.basePath + step.path;\n default:\n return step.path;\n }\n }).call(_this);\n if (_this._isRedirect(step.host, path, document.location)) {\n _this._redirect(step, i, path);\n if (!_this._isJustPathHashDifferent(step.host, path, document.location)) {\n return;\n }\n }\n if (_this._isOrphan(step)) {\n if (step.orphan === false) {\n _this._debug(\"Skip the orphan step \" + (_this._current + 1) + \".\\nOrphan option is false and the element does not exist or is hidden.\");\n if (skipToPrevious) {\n _this._showPrevStep();\n } else {\n _this._showNextStep();\n }\n return;\n }\n _this._debug(\"Show the orphan step \" + (_this._current + 1) + \". Orphans option is true.\");\n }\n if (step.backdrop) {\n _this._showBackdrop(step);\n }\n showPopoverAndOverlay = function() {\n if (_this.getCurrentStep() !== i || _this.ended()) {\n return;\n }\n if ((step.element != null) && step.backdrop) {\n _this._showOverlayElement(step);\n }\n _this._showPopover(step, i);\n if (step.onShown != null) {\n step.onShown(_this);\n }\n return _this._debug(\"Step \" + (_this._current + 1) + \" of \" + _this._options.steps.length);\n };\n if (step.autoscroll) {\n _this._scrollIntoView(step.element, showPopoverAndOverlay);\n } else {\n showPopoverAndOverlay();\n }\n if (step.duration) {\n return _this.resume();\n }\n };\n })(this);\n if (step.delay) {\n this._debug(\"Wait \" + step.delay + \" milliseconds to show the step \" + (this._current + 1));\n window.setTimeout((function(_this) {\n return function() {\n return _this._callOnPromiseDone(promise, showStepHelper);\n };\n })(this), step.delay);\n } else {\n this._callOnPromiseDone(promise, showStepHelper);\n }\n return promise;\n };\n\n Tour.prototype.getCurrentStep = function() {\n return this._current;\n };\n\n Tour.prototype.setCurrentStep = function(value) {\n if (value != null) {\n this._current = value;\n this._setState('current_step', value);\n } else {\n this._current = this._getState('current_step');\n this._current = this._current === null ? null : parseInt(this._current, 10);\n }\n return this;\n };\n\n Tour.prototype.redraw = function() {\n return this._showOverlayElement(this.getStep(this.getCurrentStep()).element, true);\n };\n\n Tour.prototype._setState = function(key, value) {\n var e, keyName;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n try {\n this._options.storage.setItem(keyName, value);\n } catch (_error) {\n e = _error;\n if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n this._debug('LocalStorage quota exceeded. State storage failed.');\n }\n }\n return this._options.afterSetState(keyName, value);\n } else {\n if (this._state == null) {\n this._state = {};\n }\n return this._state[key] = value;\n }\n };\n\n Tour.prototype._removeState = function(key) {\n var keyName;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n this._options.storage.removeItem(keyName);\n return this._options.afterRemoveState(keyName);\n } else {\n if (this._state != null) {\n return delete this._state[key];\n }\n }\n };\n\n Tour.prototype._getState = function(key) {\n var keyName, value;\n if (this._options.storage) {\n keyName = \"\" + this._options.name + \"_\" + key;\n value = this._options.storage.getItem(keyName);\n } else {\n if (this._state != null) {\n value = this._state[key];\n }\n }\n if (value === void 0 || value === 'null') {\n value = null;\n }\n this._options.afterGetState(key, value);\n return value;\n };\n\n Tour.prototype._showNextStep = function() {\n var promise, showNextStepHelper, step;\n step = this.getStep(this._current);\n showNextStepHelper = (function(_this) {\n return function(e) {\n return _this.showStep(step.next);\n };\n })(this);\n promise = this._makePromise(step.onNext != null ? step.onNext(this) : void 0);\n return this._callOnPromiseDone(promise, showNextStepHelper);\n };\n\n Tour.prototype._showPrevStep = function() {\n var promise, showPrevStepHelper, step;\n step = this.getStep(this._current);\n showPrevStepHelper = (function(_this) {\n return function(e) {\n return _this.showStep(step.prev);\n };\n })(this);\n promise = this._makePromise(step.onPrev != null ? step.onPrev(this) : void 0);\n return this._callOnPromiseDone(promise, showPrevStepHelper);\n };\n\n Tour.prototype._debug = function(text) {\n if (this._options.debug) {\n return window.console.log(\"Bootstrap Tour '\" + this._options.name + \"' | \" + text);\n }\n };\n\n Tour.prototype._isRedirect = function(host, path, location) {\n var currentPath;\n if (host !== '') {\n if (this._isHostDifferent(host, location.href)) {\n return true;\n }\n }\n currentPath = [location.pathname, location.search, location.hash].join('');\n return (path != null) && path !== '' && (({}.toString.call(path) === '[object RegExp]' && !path.test(currentPath)) || ({}.toString.call(path) === '[object String]' && this._isPathDifferent(path, currentPath)));\n };\n\n Tour.prototype._isHostDifferent = function(host, currentURL) {\n return this._getProtocol(host) !== this._getProtocol(currentURL) || this._getHost(host) !== this._getHost(currentURL);\n };\n\n Tour.prototype._isPathDifferent = function(path, currentPath) {\n return this._getPath(path) !== this._getPath(currentPath) || !this._equal(this._getQuery(path), this._getQuery(currentPath)) || !this._equal(this._getHash(path), this._getHash(currentPath));\n };\n\n Tour.prototype._isJustPathHashDifferent = function(host, path, location) {\n var currentPath;\n if (host !== '') {\n if (this._isHostDifferent(host, location.href)) {\n return false;\n }\n }\n currentPath = [location.pathname, location.search, location.hash].join('');\n if ({}.toString.call(path) === '[object String]') {\n return this._getPath(path) === this._getPath(currentPath) && this._equal(this._getQuery(path), this._getQuery(currentPath)) && !this._equal(this._getHash(path), this._getHash(currentPath));\n }\n return false;\n };\n\n Tour.prototype._redirect = function(step, i, path) {\n if ($.isFunction(step.redirect)) {\n return step.redirect.call(this, path);\n } else if (step.redirect === true) {\n this._debug(\"Redirect to \" + step.host + path);\n if (this._getState('redirect_to') === (\"\" + i)) {\n this._debug(\"Error redirection loop to \" + path);\n this._removeState('redirect_to');\n if (step.onRedirectError != null) {\n return step.onRedirectError(this);\n }\n } else {\n this._setState('redirect_to', \"\" + i);\n return document.location.href = \"\" + step.host + path;\n }\n }\n };\n\n Tour.prototype._isOrphan = function(step) {\n return (step.element == null) || !$(step.element).length || $(step.element).is(':hidden') && ($(step.element)[0].namespaceURI !== 'http://www.w3.org/2000/svg');\n };\n\n Tour.prototype._isLast = function() {\n return this._current < this._options.steps.length - 1;\n };\n\n Tour.prototype._showPopover = function(step, i) {\n var $element, $tip, isOrphan, options, shouldAddSmart;\n $(\".tour-\" + this._options.name).remove();\n options = $.extend({}, this._options);\n isOrphan = this._isOrphan(step);\n step.template = this._template(step, i);\n if (isOrphan) {\n step.element = 'body';\n step.placement = 'top';\n }\n $element = $(step.element);\n $element.addClass(\"tour-\" + this._options.name + \"-element tour-\" + this._options.name + \"-\" + i + \"-element\");\n if (step.options) {\n $.extend(options, step.options);\n }\n if (step.reflex && !isOrphan) {\n $(step.reflexElement).addClass('tour-step-element-reflex').off(\"\" + (this._reflexEvent(step.reflex)) + \".tour-\" + this._options.name).on(\"\" + (this._reflexEvent(step.reflex)) + \".tour-\" + this._options.name, (function(_this) {\n return function() {\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n };\n })(this));\n }\n shouldAddSmart = step.smartPlacement === true && step.placement.search(/auto/i) === -1;\n $element.popover({\n placement: shouldAddSmart ? \"auto \" + step.placement : step.placement,\n trigger: 'manual',\n title: step.title,\n content: step.content,\n html: true,\n animation: step.animation,\n container: step.container,\n template: step.template,\n selector: step.element\n }).popover('show');\n $tip = $element.data('bs.popover') ? $element.data('bs.popover').tip() : $element.data('popover').tip();\n $tip.attr('id', step.id);\n this._reposition($tip, step);\n if (isOrphan) {\n return this._center($tip);\n }\n };\n\n Tour.prototype._template = function(step, i) {\n var $navigation, $next, $prev, $resume, $template, template;\n template = step.template;\n if (this._isOrphan(step) && {}.toString.call(step.orphan) !== '[object Boolean]') {\n template = step.orphan;\n }\n $template = $.isFunction(template) ? $(template(i, step)) : $(template);\n $navigation = $template.find('.popover-navigation');\n $prev = $navigation.find('[data-role=\"prev\"]');\n $next = $navigation.find('[data-role=\"next\"]');\n $resume = $navigation.find('[data-role=\"pause-resume\"]');\n if (this._isOrphan(step)) {\n $template.addClass('orphan');\n }\n $template.addClass(\"tour-\" + this._options.name + \" tour-\" + this._options.name + \"-\" + i);\n if (step.reflex) {\n $template.addClass(\"tour-\" + this._options.name + \"-reflex\");\n }\n if (step.prev < 0) {\n $prev.addClass('disabled');\n $prev.prop('disabled', true);\n }\n if (step.next < 0) {\n $next.addClass('disabled');\n $next.prop('disabled', true);\n }\n if (!step.duration) {\n $resume.remove();\n }\n return $template.clone().wrap('
').parent().html();\n };\n\n Tour.prototype._reflexEvent = function(reflex) {\n if ({}.toString.call(reflex) === '[object Boolean]') {\n return 'click';\n } else {\n return reflex;\n }\n };\n\n Tour.prototype._reposition = function($tip, step) {\n var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset;\n offsetWidth = $tip[0].offsetWidth;\n offsetHeight = $tip[0].offsetHeight;\n tipOffset = $tip.offset();\n originalLeft = tipOffset.left;\n originalTop = tipOffset.top;\n offsetBottom = $(document).outerHeight() - tipOffset.top - $tip.outerHeight();\n if (offsetBottom < 0) {\n tipOffset.top = tipOffset.top + offsetBottom;\n }\n offsetRight = $('html').outerWidth() - tipOffset.left - $tip.outerWidth();\n if (offsetRight < 0) {\n tipOffset.left = tipOffset.left + offsetRight;\n }\n if (tipOffset.top < 0) {\n tipOffset.top = 0;\n }\n if (tipOffset.left < 0) {\n tipOffset.left = 0;\n }\n $tip.offset(tipOffset);\n if (step.placement === 'bottom' || step.placement === 'top') {\n if (originalLeft !== tipOffset.left) {\n return this._replaceArrow($tip, (tipOffset.left - originalLeft) * 2, offsetWidth, 'left');\n }\n } else {\n if (originalTop !== tipOffset.top) {\n return this._replaceArrow($tip, (tipOffset.top - originalTop) * 2, offsetHeight, 'top');\n }\n }\n };\n\n Tour.prototype._center = function($tip) {\n return $tip.css('top', $(window).outerHeight() / 2 - $tip.outerHeight() / 2);\n };\n\n Tour.prototype._replaceArrow = function($tip, delta, dimension, position) {\n return $tip.find('.arrow').css(position, delta ? 50 * (1 - delta / dimension) + '%' : '');\n };\n\n Tour.prototype._scrollIntoView = function(element, callback) {\n var $element, $window, counter, offsetTop, scrollTop, windowHeight;\n $element = $(element);\n if (!$element.length) {\n return callback();\n }\n $window = $(window);\n offsetTop = $element.offset().top;\n windowHeight = $window.height();\n scrollTop = Math.max(0, offsetTop - (windowHeight / 2));\n this._debug(\"Scroll into view. ScrollTop: \" + scrollTop + \". Element offset: \" + offsetTop + \". Window height: \" + windowHeight + \".\");\n counter = 0;\n return $('body, html').stop(true, true).animate({\n scrollTop: Math.ceil(scrollTop)\n }, (function(_this) {\n return function() {\n if (++counter === 2) {\n callback();\n return _this._debug(\"Scroll into view.\\nAnimation end element offset: \" + ($element.offset().top) + \".\\nWindow height: \" + ($window.height()) + \".\");\n }\n };\n })(this));\n };\n\n Tour.prototype._onResize = function(callback, timeout) {\n return $(window).on(\"resize.tour-\" + this._options.name, function() {\n clearTimeout(timeout);\n return timeout = setTimeout(callback, 100);\n });\n };\n\n Tour.prototype._initMouseNavigation = function() {\n var _this;\n _this = this;\n return $(document).off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\").off(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\").on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='next']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.next();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='prev']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.prev();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='end']\", (function(_this) {\n return function(e) {\n e.preventDefault();\n return _this.end();\n };\n })(this)).on(\"click.tour-\" + this._options.name, \".popover.tour-\" + this._options.name + \" *[data-role='pause-resume']\", function(e) {\n var $this;\n e.preventDefault();\n $this = $(this);\n $this.text(_this._paused ? $this.data('pause-text') : $this.data('resume-text'));\n if (_this._paused) {\n return _this.resume();\n } else {\n return _this.pause();\n }\n });\n };\n\n Tour.prototype._initKeyboardNavigation = function() {\n if (!this._options.keyboard) {\n return;\n }\n return $(document).on(\"keyup.tour-\" + this._options.name, (function(_this) {\n return function(e) {\n if (!e.which) {\n return;\n }\n switch (e.which) {\n case 39:\n e.preventDefault();\n if (_this._isLast()) {\n return _this.next();\n } else {\n return _this.end();\n }\n break;\n case 37:\n e.preventDefault();\n if (_this._current > 0) {\n return _this.prev();\n }\n break;\n case 27:\n e.preventDefault();\n return _this.end();\n }\n };\n })(this));\n };\n\n Tour.prototype._makePromise = function(result) {\n if (result && $.isFunction(result.then)) {\n return result;\n } else {\n return null;\n }\n };\n\n Tour.prototype._callOnPromiseDone = function(promise, cb, arg) {\n if (promise) {\n return promise.then((function(_this) {\n return function(e) {\n return cb.call(_this, arg);\n };\n })(this));\n } else {\n return cb.call(this, arg);\n }\n };\n\n Tour.prototype._showBackdrop = function(step) {\n if (this.backdrop.backgroundShown) {\n return;\n }\n this.backdrop = $('
', {\n \"class\": 'tour-backdrop'\n });\n this.backdrop.backgroundShown = true;\n return $(step.backdropContainer).append(this.backdrop);\n };\n\n Tour.prototype._hideBackdrop = function() {\n this._hideOverlayElement();\n return this._hideBackground();\n };\n\n Tour.prototype._hideBackground = function() {\n if (this.backdrop) {\n this.backdrop.remove();\n this.backdrop.overlay = null;\n return this.backdrop.backgroundShown = false;\n }\n };\n\n Tour.prototype._showOverlayElement = function(step, force) {\n var $element, elementData;\n $element = $(step.element);\n if (!$element || $element.length === 0 || this.backdrop.overlayElementShown && !force) {\n return;\n }\n if (!this.backdrop.overlayElementShown) {\n this.backdrop.$element = $element.addClass('tour-step-backdrop');\n this.backdrop.$background = $('
', {\n \"class\": 'tour-step-background'\n });\n this.backdrop.$background.appendTo(step.backdropContainer);\n this.backdrop.overlayElementShown = true;\n }\n elementData = {\n width: $element.innerWidth(),\n height: $element.innerHeight(),\n offset: $element.offset()\n };\n if (step.backdropPadding) {\n elementData = this._applyBackdropPadding(step.backdropPadding, elementData);\n }\n return this.backdrop.$background.width(elementData.width).height(elementData.height).offset(elementData.offset);\n };\n\n Tour.prototype._hideOverlayElement = function() {\n if (!this.backdrop.overlayElementShown) {\n return;\n }\n this.backdrop.$element.removeClass('tour-step-backdrop');\n this.backdrop.$background.remove();\n this.backdrop.$element = null;\n this.backdrop.$background = null;\n return this.backdrop.overlayElementShown = false;\n };\n\n Tour.prototype._applyBackdropPadding = function(padding, data) {\n if (typeof padding === 'object') {\n if (padding.top == null) {\n padding.top = 0;\n }\n if (padding.right == null) {\n padding.right = 0;\n }\n if (padding.bottom == null) {\n padding.bottom = 0;\n }\n if (padding.left == null) {\n padding.left = 0;\n }\n data.offset.top = data.offset.top - padding.top;\n data.offset.left = data.offset.left - padding.left;\n data.width = data.width + padding.left + padding.right;\n data.height = data.height + padding.top + padding.bottom;\n } else {\n data.offset.top = data.offset.top - padding;\n data.offset.left = data.offset.left - padding;\n data.width = data.width + (padding * 2);\n data.height = data.height + (padding * 2);\n }\n return data;\n };\n\n Tour.prototype._clearTimer = function() {\n window.clearTimeout(this._timer);\n this._timer = null;\n return this._duration = null;\n };\n\n Tour.prototype._getProtocol = function(url) {\n url = url.split('://');\n if (url.length > 1) {\n return url[0];\n } else {\n return 'http';\n }\n };\n\n Tour.prototype._getHost = function(url) {\n url = url.split('//');\n url = url.length > 1 ? url[1] : url[0];\n return url.split('/')[0];\n };\n\n Tour.prototype._getPath = function(path) {\n return path.replace(/\\/?$/, '').split('?')[0].split('#')[0];\n };\n\n Tour.prototype._getQuery = function(path) {\n return this._getParams(path, '?');\n };\n\n Tour.prototype._getHash = function(path) {\n return this._getParams(path, '#');\n };\n\n Tour.prototype._getParams = function(path, start) {\n var param, params, paramsObject, _i, _len;\n params = path.split(start);\n if (params.length === 1) {\n return {};\n }\n params = params[1].split('&');\n paramsObject = {};\n for (_i = 0, _len = params.length; _i < _len; _i++) {\n param = params[_i];\n param = param.split('=');\n paramsObject[param[0]] = param[1] || '';\n }\n return paramsObject;\n };\n\n Tour.prototype._equal = function(obj1, obj2) {\n var k, v;\n if ({}.toString.call(obj1) === '[object Object]' && {}.toString.call(obj2) === '[object Object]') {\n for (k in obj1) {\n v = obj1[k];\n if (obj2[k] !== v) {\n return false;\n }\n }\n for (k in obj2) {\n v = obj2[k];\n if (obj1[k] !== v) {\n return false;\n }\n }\n return true;\n }\n return obj1 === obj2;\n };\n\n return Tour;\n\n })();\n return window.Tour = Tour;\n})(jQuery, window);\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/libs/bootstrap-tour.js","/*! jQuery UI - v1.9.1 - 2012-10-29\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.menu.js, jquery.ui.slider.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return\"area\"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!==\"map\"?!1:(o=e(\"img[usemap=#\"+i+\"]\")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:\"a\"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,\"visibility\")===\"hidden\"}).length}var n=0,r=/^ui-id-\\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:\"1.9.1\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t==\"number\"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css(\"position\"))||/absolute/.test(this.css(\"position\"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,\"position\"))&&/(auto|scroll)/.test(e.css(this,\"overflow\")+e.css(this,\"overflow-y\")+e.css(this,\"overflow-x\"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,\"overflow\")+e.css(this,\"overflow-y\")+e.css(this,\"overflow-x\"))}).eq(0),/fixed/.test(this.css(\"position\"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css(\"zIndex\",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css(\"position\");if(i===\"absolute\"||i===\"relative\"||i===\"fixed\"){s=parseInt(r.css(\"zIndex\"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr(\"id\")})}}),e(\"\").outerWidth(1).jquery||e.each([\"Width\",\"Height\"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,\"padding\"+this))||0,r&&(n-=parseFloat(e.css(t,\"border\"+this+\"Width\"))||0),s&&(n-=parseFloat(e.css(t,\"margin\"+this))||0)}),n}var i=r===\"Width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn[\"inner\"+r]=function(n){return n===t?o[\"inner\"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+\"px\")})},e.fn[\"outer\"+r]=function(t,n){return typeof t!=\"number\"?o[\"outer\"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+\"px\")})}}),e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,\"tabindex\")))},tabbable:function(t){var n=e.attr(t,\"tabindex\"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement(\"div\"));n.offsetHeight,e.extend(n.style,{minHeight:\"100px\",height:\"auto\",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart=\"onselectstart\"in n,t.removeChild(n).style.display=\"none\"}),function(){var t=/msie ([\\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?\"selectstart\":\"mousedown\")+\".ui-disableSelection\",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(\".ui-disableSelection\")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e\",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled \"+\"ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n==\"string\"){i={},s=n.split(\".\"),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\\+\\-]\\d+%?/,f=/^\\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e(\"
\"),o=s.children()[0];return e(\"body\").append(s),r=o.offsetWidth,s.css(\"overflow\",\"scroll\"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?\"\":t.element.css(\"overflow-x\"),r=t.isWindow?\"\":t.element.css(\"overflow-y\"),i=n===\"scroll\"||n===\"auto\"&&t.width0?\"right\":\"center\",vertical:u<0?\"top\":o>0?\"bottom\":\"middle\"};lr(i(o),i(u))?h.important=\"horizontal\":h.important=\"vertical\",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]===\"left\"?-t.elemWidth:t.my[0]===\"right\"?t.elemWidth:0,c=t.at[0]===\"left\"?t.targetWidth:t.at[0]===\"right\"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML=\"\",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(\" \"),s=r.at.split(\" \");return i.length===1&&(i[1]=i[0]),/^\\d/.test(i[0])&&(i[0]=\"+\"+i[0]),/^\\d/.test(i[1])&&(i[1]=\"+\"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]=\"center\":(s[1]=s[0],s[0]=\"center\")),n.call(this,e.extend(r,{at:s[0]+i[0]+\" \"+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){var n=0;e.widget(\"ui.autocomplete\",{version:\"1.9.1\",defaultElement:\"\",options:{appendTo:\"body\",autoFocus:!1,delay:300,minLength:1,position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is(\"input,textarea\")?\"val\":\"text\"],this.isNewMenu=!0,this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\",\"off\"),this._on(this.element,{keydown:function(i){if(this.element.prop(\"readOnly\")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move(\"previousPage\",i);break;case s.PAGE_DOWN:t=!0,this._move(\"nextPage\",i);break;case s.UP:t=!0,this._keyEvent(\"previous\",i);break;case s.DOWN:t=!0,this._keyEvent(\"next\",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(\":visible\")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move(\"previousPage\",r);break;case i.PAGE_DOWN:this._move(\"nextPage\",r);break;case i.UP:this._keyEvent(\"previous\",r);break;case i.DOWN:this._keyEvent(\"next\",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e(\"
    \").addClass(\"ui-autocomplete\").appendTo(this.document.find(this.options.appendTo||\"body\")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data(\"menu\"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(\".ui-menu-item\").length||this._delay(function(){var t=this;this.document.one(\"mousedown\",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one(\"mousemove\",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data(\"ui-autocomplete-item\")||n.item.data(\"item.autocomplete\");!1!==this._trigger(\"focus\",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data(\"ui-autocomplete-item\")||t.item.data(\"item.autocomplete\"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger(\"select\",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e(\"\",{role:\"status\",\"aria-live\":\"polite\"}).addClass(\"ui-helper-hidden-accessible\").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e===\"source\"&&this._initSource(),e===\"appendTo\"&&this.menu.element.appendTo(this.document.find(t||\"body\")[0]),e===\"disabled\"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is(\"textarea\")?!0:this.element.is(\"input\")?!1:this.element.prop(\"isContentEditable\")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source==\"string\"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:\"json\",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length\").append(e(\"\").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(\":visible\")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(\":visible\"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),\"i\");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget(\"ui.autocomplete\",e.ui.autocomplete,{options:{messages:{noResults:\"No search results.\",results:function(e){return e+(e>1?\" results are\":\" result is\")+\" available, use up and down arrow keys to navigate.\"}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o=\"ui-button ui-widget ui-state-default ui-corner-all\",u=\"ui-state-hover ui-state-active \",a=\"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",f=function(){var t=e(this).find(\":ui-button\");setTimeout(function(){t.button(\"refresh\")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find(\"[name='\"+n+\"']\"):i=e(\"[name='\"+n+\"']\",t.ownerDocument).filter(function(){return!this.form})),i};e.widget(\"ui.button\",{version:\"1.9.1\",defaultElement:\"