/* ../node_modules/jquery/dist/jquery.min.js */
/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});

/* ../node_modules/oojs/dist/oojs.min.js */
/*! OOjs v7.0.1 | https://oojs.mit-license.org */
!function(t){"use strict";var s={},c=s.hasOwnProperty,a=Array.prototype.slice,e=s.toString;function r(t,e,r){for(var i=new Set(e),n=[],o=0;o<t.length;o++)i.has(t[o])===r&&n.push(t[o]);return n}function o(t,e){if("string"==typeof t){if(null==e)throw new Error('Method name "'+t+'" has no context.');if("function"!=typeof e[t])throw new Error('Property "'+t+'" is not a function')}else if("function"!=typeof t)throw new Error("Invalid callback. Function or method name expected.")}function n(t,e,r){t=c.call(t.bindings,e)?t.bindings[e]:t.bindings[e]=[];t.push(r)}function h(t,e){return void 0===e||e<0||e>=t.length?t.length:e}s.initClass=function(t){t.static=t.static||{}},s.inheritClass=function(t,e){if(!e)throw new Error("inheritClass: Origin is not a function (actually "+e+")");if(t.prototype instanceof e)throw new Error("inheritClass: Target already inherits from origin");var r=t.prototype.constructor;t.super=t.parent=e,t.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s.initClass(e),t.static=Object.create(e.static)},s.mixinClass=function(t,e){if(!e)throw new Error("mixinClass: Origin is not a function (actually "+e+")");for(var r in e.prototype)"constructor"!==r&&c.call(e.prototype,r)&&(t.prototype[r]=e.prototype[r]);if(s.initClass(t),e.static)for(r in e.static)c.call(e.static,r)&&(t.static[r]=e.static[r]);else s.initClass(e)},s.isSubclass=function(t,e){return t===e||t.prototype instanceof e},s.getProp=function(t){for(var e=t,r=1;r<arguments.length;r++){if(null==e)return;e=e[arguments[r]]}return e},s.setProp=function(t){if(!(Object(t)!==t||arguments.length<2)){for(var e=t,r=1;r<arguments.length-2;r++){if(void 0===e[arguments[r]]&&(e[arguments[r]]={}),Object(e[arguments[r]])!==e[arguments[r]])return;e=e[arguments[r]]}e[arguments[arguments.length-2]]=arguments[arguments.length-1]}},s.deleteProp=function(t){if(!(Object(t)!==t||arguments.length<2)){for(var e=t,r=[e],i=1;i<arguments.length-1;i++){if(void 0===e[arguments[i]]||Object(e[arguments[i]])!==e[arguments[i]])return;e=e[arguments[i]],r.push(e)}for(delete e[arguments[i]];1<r.length&&(e=r.pop())&&s.isPlainObject(e)&&!Object.keys(e).length;)delete r[r.length-1][arguments[r.length]]}},s.cloneObject=function(t){var e,r=Object.create(t.constructor.prototype);for(e in t)c.call(t,e)&&(r[e]=t[e]);return r},s.getObjectValues=function(t){if(t!==Object(t))throw new TypeError("Called on non-object");var e,r=[];for(e in t)c.call(t,e)&&(r[r.length]=t[e]);return r},s.binarySearch=function(t,e,r){for(var i=0,n=t.length;i<n;){var o=i+n>>1,s=e(t[o]);if(s<0)n=o;else{if(!(0<s))return o;i=1+o}}return r?n:null},s.compare=function(t,e,r){if(t===e)return!0;if(e=e||{},"number"==typeof(t=t||{}).nodeType&&"function"==typeof t.isEqualNode)return t.isEqualNode(e);for(var i in t)if(c.call(t,i)&&void 0!==t[i]&&t[i]!==e[i]){var n=t[i],i=e[i],o=typeof n;if(o!=typeof i||("string"==o||"number"==o||"boolean"==o)&&n!==i||n===Object(n)&&!s.compare(n,i,!0))return!1}return!!r||s.compare(e,t,!0)},s.copy=function(t,e,r){var i;if(!r||void 0===(i=r(t))){if(Array.isArray(t))i=new Array(t.length);else{if(t&&"function"==typeof t.clone)return e?e(t.clone()):t.clone();if(t&&"function"==typeof t.cloneNode)return e?e(t.cloneNode(!0)):t.cloneNode(!0);if(!s.isPlainObject(t))return e?e(t):t;i={}}for(var n in t)i[n]=s.copy(t[n],e,r)}return i},s.getHash=function(t){return JSON.stringify(t,s.getHash.keySortReplacer)},s.getHash.keySortReplacer=function(t,e){if(e&&"function"==typeof e.getHashObject&&(e=e.getHashObject()),Array.isArray(e)||Object(e)!==e)return e;for(var r={},i=Object.keys(e).sort(),n=0,o=i.length;n<o;n++)r[i[n]]=e[i[n]];return r},s.unique=function(t){return Array.from(new Set(t))},s.simpleArrayUnion=function(t,...e){for(var r=new Set(t),i=0;i<e.length;i++)for(var n=e[i],o=0;o<n.length;o++)r.add(n[o]);return Array.from(r)},s.simpleArrayIntersection=function(t,e){return r(t,e,!0)},s.simpleArrayDifference=function(t,e){return r(t,e,!1)},s.isPlainObject=function(t){return!(!t||"[object Object]"!==e.call(t))&&(!(t=Object.getPrototypeOf(t))||c.call(t,"isPrototypeOf"))},s.EventEmitter=function(){this.bindings={}},s.initClass(s.EventEmitter),s.EventEmitter.prototype.on=function(t,e,r,i){return o(e,i),n(this,t,{method:e,args:r,context:arguments.length<4?null:i,once:!1}),this},s.EventEmitter.prototype.once=function(t,e){return o(e),n(this,t,{method:e,args:void 0,context:null,once:!0}),this},s.EventEmitter.prototype.off=function(t,e,r){if(1===arguments.length)delete this.bindings[t];else if(o(e,r),c.call(this.bindings,t)&&this.bindings[t].length){arguments.length<3&&(r=null);for(var i=this.bindings[t],n=i.length;n--;)i[n].method===e&&i[n].context===r&&i.splice(n,1);0===i.length&&delete this.bindings[t]}return this},s.EventEmitter.prototype.emit=function(t){if(!c.call(this.bindings,t))return!1;for(var e=this.bindings[t].slice(),r=a.call(arguments,1),i=0;i<e.length;i++){var n=e[i],o="string"==typeof n.method?n.context[n.method]:n.method;n.once&&this.off(t,o);try{o.apply(n.context,n.args?n.args.concat(r):r)}catch(t){setTimeout(function(t){throw t}.bind(null,t))}}return!0},s.EventEmitter.prototype.emitThrow=function(t){if(!c.call(this.bindings,t))return!1;for(var e,r=this.bindings[t].slice(),i=a.call(arguments,1),n=0;n<r.length;n++){var o=r[n],s="string"==typeof o.method?o.context[o.method]:o.method;o.once&&this.off(t,s);try{s.apply(o.context,o.args?o.args.concat(i):i)}catch(t){void 0===e?e=t:setTimeout(function(t){throw t}.bind(null,t))}}if(void 0!==e)throw e;return!0},s.EventEmitter.prototype.connect=function(t,e){for(var r in e){var i,n=e[r];Array.isArray(n)?(i=n.slice(1),n=n[0]):i=[],this.on(r,n,i,t)}return this},s.EventEmitter.prototype.disconnect=function(t,e){if(e)for(var r in e){var i=e[r];Array.isArray(i)&&(i=i[0]),this.off(r,i,t)}else for(r in this.bindings)for(var n=this.bindings[r],o=n.length;o--;)n[o]&&n[o].context===t&&this.off(r,n[o].method,t);return this},s.EmitterList=function(){this.items=[],this.aggregateItemEvents={}},s.initClass(s.EmitterList),s.EmitterList.prototype.getItems=function(){return this.items.slice(0)},s.EmitterList.prototype.getItemIndex=function(t){return this.items.indexOf(t)},s.EmitterList.prototype.getItemCount=function(){return this.items.length},s.EmitterList.prototype.isEmpty=function(){return!this.items.length},s.EmitterList.prototype.aggregate=function(t){var e,r;for(r in t){var i,n,o,s=t[r];if(Object.prototype.hasOwnProperty.call(this.aggregateItemEvents,r)){if(s)throw new Error("Duplicate item event aggregation for "+r);for(e=0;e<this.items.length;e++)(n=this.items[e]).connect&&n.disconnect&&((i={})[r]=["emit",this.aggregateItemEvents[r],n],n.disconnect(this,i));delete this.aggregateItemEvents[r]}if(s)for(this.aggregateItemEvents[r]=s,e=0;e<this.items.length;e++)(n=this.items[e]).connect&&n.disconnect&&((o={})[r]=["emit",s,n],n.connect(this,o))}},s.EmitterList.prototype.addItems=function(t,e){if(0!==(t=Array.isArray(t)?t:[t]).length){e=h(this.items,e);for(var r=0;r<t.length;r++){var i=this.items.indexOf(t[r]);-1!==i?(e=this.moveItem(t[r],e),this.emit("move",t[r],e,i)):(e=this.insertItem(t[r],e),this.emit("add",t[r],e)),e++}}return this},s.EmitterList.prototype.moveItem=function(t,e){var r=this.items.indexOf(t);if(-1===r)throw new Error("Item cannot be moved, because it is not in the list.");return e=h(this.items,e),this.items.splice(r,1),r<e&&e--,this.items.splice(e,0,t),e},s.EmitterList.prototype.insertItem=function(t,e){if(null===t||"object"!=typeof t)throw new Error("Expected object, but item is "+typeof t);if(t.connect&&t.disconnect){var r,i={};for(r in this.aggregateItemEvents)i[r]=["emit",this.aggregateItemEvents[r],t];t.connect(this,i)}return e=h(this.items,e),this.items.splice(e,0,t),e},s.EmitterList.prototype.removeItems=function(t){if(0!==(t=Array.isArray(t)?t:[t]).length)for(var e=0;e<t.length;e++){var r=t[e],i=this.items.indexOf(r);-1!==i&&(r.connect&&r.disconnect&&r.disconnect(this),this.items.splice(i,1),this.emit("remove",r,i))}return this},s.EmitterList.prototype.clearItems=function(){for(var t=this.items.splice(0,this.items.length),e=0;e<t.length;e++){var r=t[e];r.connect&&r.disconnect&&r.disconnect(this)}return this.emit("clear"),this},s.SortedEmitterList=function(t){s.EmitterList.call(this),this.sortingCallback=t,this.aggregate({sortChange:"itemSortChange"}),this.connect(this,{itemSortChange:"onItemSortChange"})},s.mixinClass(s.SortedEmitterList,s.EmitterList),s.SortedEmitterList.prototype.onItemSortChange=function(t){this.removeItems(t),this.addItems(t)},s.SortedEmitterList.prototype.setSortingCallback=function(t){var e=this.getItems();this.sortingCallback=t,this.clearItems(),this.addItems(e)},s.SortedEmitterList.prototype.addItems=function(t){if(0!==(t=Array.isArray(t)?t:[t]).length)for(var e=0;e<t.length;e++){var r=this.findInsertionIndex(t[e]),r=(r<=this.items.length&&this.items[r]&&0===this.sortingCallback(this.items[r],t[e])&&this.removeItems(this.items[r]),this.insertItem(t[e],r));this.emit("add",t[e],r)}return this},s.SortedEmitterList.prototype.findInsertionIndex=function(e){var r=this;return s.binarySearch(this.items,function(t){return r.sortingCallback(e,t)},!0)},s.Registry=function(){s.EventEmitter.call(this),this.registry={}},s.mixinClass(s.Registry,s.EventEmitter),s.Registry.prototype.register=function(t,e){if("string"==typeof t)this.registry[t]=e,this.emit("register",t,e);else{if(!Array.isArray(t))throw new Error("Name must be a string or array, cannot be a "+typeof t);for(var r=0,i=t.length;r<i;r++)this.register(t[r],e)}},s.Registry.prototype.unregister=function(t){if("string"==typeof t){var e=this.lookup(t);void 0!==e&&(delete this.registry[t],this.emit("unregister",t,e))}else{if(!Array.isArray(t))throw new Error("Name must be a string or array, cannot be a "+typeof t);for(var r=0,i=t.length;r<i;r++)this.unregister(t[r])}},s.Registry.prototype.lookup=function(t){if(c.call(this.registry,t))return this.registry[t]},s.Factory=function(){s.Factory.super.call(this)},s.inheritClass(s.Factory,s.Registry),s.Factory.prototype.register=function(t,e){if("function"!=typeof t)throw new Error("constructor must be a function, got "+typeof t);if("string"!=typeof(e=arguments.length<=1?t.key||t.static&&t.static.name:e)||""===e)throw new Error("key must be a non-empty string");s.Factory.super.prototype.register.call(this,e,t)},s.Factory.prototype.unregister=function(t){if("string"!=typeof(t="function"==typeof t?t.key||t.static&&t.static.name:t)||""===t)throw new Error("key must be a non-empty string");s.Factory.super.prototype.unregister.call(this,t)},s.Factory.prototype.create=function(t,...e){var r=this.lookup(t);if(r)return new r(...e);throw new Error("No class registered by that key: "+t)},"undefined"!=typeof module&&module.exports?module.exports=s:t.OO=s}(this);
//# sourceMappingURL=oojs.min.js.map
/* ../node_modules/oojs-ui/dist/oojs-ui.min.js */
/*! OOUI v0.48.2 | http://oojs.mit-license.org */
!function(c){"use strict";function i(){var t=$("<div>").attr({dir:"rtl",style:"font-size: 14px; width: 4px; height: 1px; position: absolute; top: -1000px; overflow: scroll;"}).text("ABCD"),e=t[0];t.appendTo("body"),n=0<e.scrollLeft?"default":(e.scrollLeft=1,0===e.scrollLeft?"negative":"reverse"),t.remove()}function o(t){return t===t.window||t===t.ownerDocument.body||t===t.ownerDocument.documentElement}var n;c.ui={},c.ui.bind=$.proxy,c.ui.Keys={UNDEFINED:0,BACKSPACE:8,DELETE:46,LEFT:37,RIGHT:39,UP:38,DOWN:40,ENTER:13,END:35,HOME:36,TAB:9,PAGEUP:33,PAGEDOWN:34,ESCAPE:27,SHIFT:16,SPACE:32},c.ui.MouseButtons={LEFT:1,MIDDLE:2,RIGHT:3},c.ui.elementId=0,c.ui.generateElementId=function(){return c.ui.elementId++,"ooui-"+c.ui.elementId},c.ui.isFocusableElement=function(t){var e=t[0];return!e.disabled&&!(!$.expr.pseudos.visible(e)||t.parents().addBack().filter(function(){return"hidden"===$.css(this,"visibility")}).length)&&("true"===e.contentEditable||0<=t.prop("tabIndex")||(e=e.nodeName.toLowerCase(),-1!==["input","select","textarea","button","object"].indexOf(e))||("a"===e||"area"===e)&&void 0!==t.attr("href"))},c.ui.findFocusable=function(t,e){var i=$([]),t=t.find("input, select, textarea, button, object, a, area, [contenteditable], [tabindex]");return(t=e?Array.prototype.reverse.call(t):t).each(function(){var t=$(this);if(c.ui.isFocusableElement(t))return i=t,!1}),i},c.ui.getUserLanguages=function(){return["en"]},c.ui.getLocalValue=function(t,e,i){if(t[e])return t[e];for(var o=c.ui.getUserLanguages(),n=0,s=o.length;n<s;n++)if(t[e=o[n]])return t[e];if(t[i])return t[i];for(e in t)return t[e]},c.ui.contains=function(t,e,i){for(var o=(t=Array.isArray(t)?t:[t]).length-1;0<=o;o--)if(i&&e===t[o]||$.contains(t[o],e))return!0;return!1},c.ui.debounce=function(i,o,n){var s;return function(){var t=this,e=arguments;n&&!s&&i.apply(t,e),s&&!o||(clearTimeout(s),s=setTimeout(function(){s=null,n||i.apply(t,e)},o))}},c.ui.warnDeprecation=function(t){void 0!==c.getProp(window,"console","warn")&&console.warn(t)},c.ui.throttle=function(t,e){function i(){s=null,l=Date.now(),t.apply(o,n)}var o,n,s,l=Date.now()-e;return function(){var t=Math.max(e-(Date.now()-l),0);o=this,n=arguments,s=s||setTimeout(i,t)}},c.ui.infuse=function(t,e){return"string"==typeof t&&c.ui.warnDeprecation("Passing a selector to infuse is deprecated. Use an HTMLElement or jQuery collection instead."),c.ui.Element.static.infuse(t,e)},c.ui.msg=function(t){var e=c.ui.msg.messages[t],o=Array.prototype.slice.call(arguments,1);return e="string"==typeof e?e.replace(/\$(\d+)/g,function(t,e){var i=parseInt(e,10);return void 0!==o[i-1]?o[i-1]:"$"+e}):"["+t+"]"},c.ui.deferMsg=function(){var t=arguments;return function(){return c.ui.msg.apply(c.ui,t)}},c.ui.resolveMsg=function(t){return"function"==typeof t?t():t},c.ui.isSafeUrl=function(t){function e(t,e){return t.slice(0,e.length)===e}var i=["bitcoin","ftp","ftps","geo","git","gopher","http","https","irc","ircs","magnet","mailto","mms","news","nntp","redis","sftp","sip","sips","sms","ssh","svn","tel","telnet","urn","worldwind","xmpp"];if(""===t)return!0;for(var o=0;o<i.length;o++)if(e(t,i[o]+":"))return!0;return!!(e(t,"/")||e(t,"./")||e(t,"?")||e(t,"#"))},c.ui.isMobile=function(){return!1},c.ui.getViewportSpacing=function(){return{top:0,right:0,bottom:0,left:0}},c.ui.getTeleportTarget=function(){return document.body},c.ui.getDefaultOverlay=function(){return c.ui.$defaultOverlay||(c.ui.$defaultOverlay=$("<div>").addClass("oo-ui-defaultOverlay"),$(c.ui.getTeleportTarget()).append(c.ui.$defaultOverlay)),c.ui.$defaultOverlay},c.ui.msg.messages={"ooui-copytextlayout-copy":"Copy","ooui-outline-control-move-down":"Move item down","ooui-outline-control-move-up":"Move item up","ooui-outline-control-remove":"Remove item","ooui-toolbar-more":"More","ooui-toolgroup-expand":"More","ooui-toolgroup-collapse":"Fewer","ooui-item-remove":"Remove","ooui-dialog-message-accept":"OK","ooui-dialog-message-reject":"Cancel","ooui-dialog-process-error":"Something went wrong","ooui-dialog-process-dismiss":"Dismiss","ooui-dialog-process-retry":"Try again","ooui-dialog-process-continue":"Continue","ooui-combobox-button-label":"Toggle options","ooui-selectfile-button-select":"Select a file","ooui-selectfile-button-select-multiple":"Select files","ooui-selectfile-not-supported":"File selection is not supported","ooui-selectfile-placeholder":"No file is selected","ooui-selectfile-dragdrop-placeholder":"Drop file here","ooui-selectfile-dragdrop-placeholder-multiple":"Drop files here","ooui-popup-widget-close-button-aria-label":"Close","ooui-field-help":"Help"},c.ui.mixin={},c.ui.Element=function(t){c.ui.isDemo&&(this.initialConfig=t),t=t||{},this.elementId=null,this.visible=!0,this.data=t.data,this.$element=t.$element||$(window.document.createElement(this.getTagName())),this.elementGroup=null;var e=c.ui.Element.static.getDocument(this.$element);Array.isArray(t.classes)&&this.$element.addClass(t.classes),t.id&&this.setElementId(t.id),t.text&&this.$element.text(t.text),t.content&&this.$element.append(t.content.map(function(t){return"string"==typeof t?t?e.createTextNode(t):void 0:t instanceof c.ui.HtmlSnippet?t.toString():t instanceof c.ui.Element?t.$element:t})),t.$content&&this.$element.append(t.$content)},c.initClass(c.ui.Element),c.ui.Element.static.tagName="div",c.ui.Element.static.infuse=function(t,e){return c.ui.Element.static.unsafeInfuse(t,e,!1)},c.ui.Element.static.unsafeInfuse=function(t,i,o){var n=$(t);if(1<n.length)throw new Error("Collection contains more than one element");if(!n.length)throw new Error("Widget not found");var t=(n=n[0].$oouiInfused?n[0].$oouiInfused:n).attr("id"),s=this.getDocument(n);if(a=n.data("ooui-infused")){if(!0===a)throw new Error("Circular dependency! "+t);return o&&(l=a.constructor.static.gatherPreInfuseState(n,a),o.done(a.restorePreInfuseState.bind(a,l)),l=n.data("ooui-infused-children"))&&l.length&&l.forEach(function(t){var e=t.constructor.static.gatherPreInfuseState(n,t);o.done(t.restorePreInfuseState.bind(t,e))}),a}if(!(a=n.attr("data-ooui")))throw new Error("No infusion data found: "+t);try{a=JSON.parse(a)}catch(t){a=null}if(!a||!a._)throw new Error("No valid infusion data found: "+t);if("Tag"===a._)return new c.ui.Element($.extend({},i,{$element:n}));var e,l=a._.split("."),l=c.getProp.apply(c,[window].concat(l));if(!l||!(l===c.ui.Element||l.prototype instanceof c.ui.Element))throw new Error("Unknown widget type: id: "+t+", class: "+a._);o||(e=$.Deferred(),o=e.promise()),n.data("ooui-infused",!0),a.id=t;var u=[],a=c.copy(a,null,function(t){var e;if(c.isPlainObject(t))return t.tag&&s.getElementById(t.tag)?(e=c.ui.Element.static.unsafeInfuse(s.getElementById(t.tag),i,o),u.push(e),u.push.apply(u,e.$element.data("ooui-infused-children")||[]),e.$element.removeData("ooui-infused-children"),e):void 0!==t.html?new c.ui.HtmlSnippet(t.html):void 0}),t=(a=l.static.reusePreInfuseDOM(n[0],a),l.static.gatherPreInfuseState(n[0],a)),l=new l($.extend({},i,a));return n[0].$oouiInfused=l.$element,e&&(n[0]!==l.$element[0]&&n.replaceWith(l.$element),e.resolve()),l.$element.data({"ooui-infused":l,"ooui-infused-children":u}).attr("data-ooui",""),o.done(l.restorePreInfuseState.bind(l,t)),l},c.ui.Element.static.reusePreInfuseDOM=function(t,e){return e},c.ui.Element.static.gatherPreInfuseState=function(){return{}},c.ui.Element.static.getDocument=function(t){return t.ownerDocument||t.document||t.nodeType===Node.DOCUMENT_NODE&&t||t[0]&&t[0].ownerDocument||t.context||null},c.ui.Element.static.getWindow=function(t){return this.getDocument(t).defaultView},c.ui.Element.static.getDir=function(t){var e=(t=t instanceof $?t[0]:t).nodeType===Node.DOCUMENT_NODE,i=void 0!==t.document;return(e||i)&&(t=(t=i?t.document:t).body),$(t).css("direction")},c.ui.Element.static.getFrameOffset=function(t,e,i){if(e=e||window,i=i||{top:0,left:0},t.parent!==t){for(var o,n,s=t.parent.document.getElementsByTagName("iframe"),l=0,u=s.length;l<u;l++)if(s[l].contentWindow===t){o=s[l];break}o&&(n=o.getBoundingClientRect(),i.left+=n.left,i.top+=n.top,t!==e)&&this.getFrameOffset(t.parent,i)}return i},c.ui.Element.static.getRelativePosition=function(t,e){for(var i=t.offset(),o=e.offset(),n=this.getDocument(t),s=this.getDocument(e);n!==s;){var l=n.defaultView.frameElement;if(!l)throw new Error("$element frame is not contained in $anchor frame");var u=$(l).offset();i.left+=u.left,i.top+=u.top,n=this.getDocument(l)}return i.left-=o.left,i.top-=o.top,i},c.ui.Element.static.getBorders=function(t){var e=this.getDocument(t).defaultView.getComputedStyle(t,null),t=$(t);return{top:parseFloat(e?e.borderTopWidth:t.css("borderTopWidth"))||0,left:parseFloat(e?e.borderLeftWidth:t.css("borderLeftWidth"))||0,bottom:parseFloat(e?e.borderBottomWidth:t.css("borderBottomWidth"))||0,right:parseFloat(e?e.borderRightWidth:t.css("borderRightWidth"))||0}},c.ui.Element.static.getDimensions=function(t){var e=this.getDocument(t),i=e.defaultView;return i===t||t===e.documentElement?{borders:{top:0,left:0,bottom:0,right:0},scroll:{top:(e=$(i)).scrollTop(),left:c.ui.Element.static.getScrollLeft(i)},scrollbar:{right:0,bottom:0},rect:{top:0,left:0,bottom:e.innerHeight(),right:e.innerWidth()}}:(i=$(t),{borders:this.getBorders(t),scroll:{top:i.scrollTop(),left:c.ui.Element.static.getScrollLeft(t)},scrollbar:{right:i.innerWidth()-t.clientWidth,bottom:i.innerHeight()-t.clientHeight},rect:t.getBoundingClientRect()})},n=null,c.ui.Element.static.computeNormalizedScrollLeft=function(t,e){if("rtl"===(o(e)?"ltr":$(e).css("direction"))){if(null===n&&i(),"reverse"===n)return-t;if("default"===n)return t-e.scrollWidth+e.clientWidth}return t},c.ui.Element.static.computeNativeScrollLeft=function(t,e){if("rtl"===(o(e)?"ltr":$(e).css("direction"))){if(null===n&&i(),"reverse"===n)return-t;if("default"===n)return t+e.scrollWidth-e.clientWidth}return t},c.ui.Element.static.getScrollLeft=function(t){var e=o(t)?$(window).scrollLeft():t.scrollLeft;return c.ui.Element.static.computeNormalizedScrollLeft(e,t)},c.ui.Element.static.setScrollLeft=function(t,e){e=c.ui.Element.static.computeNativeScrollLeft(e,t),o(t)?$(window).scrollLeft(e):t.scrollLeft=e},c.ui.Element.static.getRootScrollableElement=function(t){var e,i,t=this.getDocument(t);return void 0===c.ui.scrollableElement&&(i=(e=t.body).scrollTop,(e.scrollTop=1)===Math.round(e.scrollTop)?(e.scrollTop=i,c.ui.scrollableElement="body"):c.ui.scrollableElement="documentElement"),t[c.ui.scrollableElement]},c.ui.Element.static.getClosestScrollableContainer=function(t,e){var i=this.getDocument(t),o=this.getRootScrollableElement(t),n=["overflow-x","overflow-y"],s=$(t).parent();if(t!==i.documentElement)for("x"!==e&&"y"!==e||(n=["overflow-"+e]);s.length&&s[0]!==i;){if(s[0]===o)return s[0];for(var l=n.length;l--;){var u=s.css(n[l]);if("auto"===u||"scroll"===u)return s[0]===i.body?o:s[0]}s=s.parent()}return o},c.ui.Element.static.scrollIntoView=function(t,e){var i=$.Deferred(),o=(e=e||{},$.extend({top:0,bottom:0,left:0,right:0},e.padding)),n=!1!==e.animate,s=(window.matchMedia("(prefers-reduced-motion: reduce)").matches&&(n=!1),{}),l=t instanceof HTMLElement?this.getDimensions(t).rect:t,t=e.scrollContainer||(t instanceof HTMLElement?this.getClosestScrollableContainer(t,e.direction):this.getClosestScrollableContainer(window.document.body)),u=$(t),a=this.getDimensions(t),r=$(this.getWindow(t)),r=u.is("html, body")?{top:l.top,bottom:r.innerHeight()-l.bottom,left:l.left,right:r.innerWidth()-l.right}:{top:l.top-(a.rect.top+a.borders.top),bottom:a.rect.bottom-a.borders.bottom-a.scrollbar.bottom-l.bottom,left:l.left-(a.rect.left+a.borders.left),right:a.rect.right-a.borders.right-a.scrollbar.right-l.right};if(e.direction&&"y"!==e.direction||(r.top<o.top||e.alignToTop?s.scrollTop=a.scroll.top+r.top-o.top:r.bottom<o.bottom&&(s.scrollTop=a.scroll.top+Math.min(r.top-o.top,-r.bottom+o.bottom))),e.direction&&"x"!==e.direction||(r.left<o.left?s.scrollLeft=a.scroll.left+r.left-o.left:r.right<o.right&&(s.scrollLeft=a.scroll.left+Math.min(r.left-o.left,-r.right+o.right)),void 0!==s.scrollLeft&&(s.scrollLeft=c.ui.Element.static.computeNativeScrollLeft(s.scrollLeft,t))),$.isEmptyObject(s))i.resolve();else if(n)u.stop(!0).animate(s,{duration:void 0===e.duration?"fast":e.duration,always:i.resolve});else{for(var h in u.stop(!0),s)u[h](s[h]);i.resolve()}return i.promise()},c.ui.Element.static.reconsiderScrollbars=function(t){for(var e=t.scrollLeft,i=t.scrollTop,o=[];t.firstChild;)o.push(t.firstChild),t.removeChild(t.firstChild);t.offsetHeight;for(var n=0,s=o.length;n<s;n++)t.appendChild(o[n]);t.scrollLeft=e,t.scrollTop=i},c.ui.Element.prototype.toggle=function(t){return(t=void 0===t?!this.visible:!!t)!==this.isVisible()&&(this.visible=t,this.$element.toggleClass("oo-ui-element-hidden",!this.visible),this.emit("toggle",t)),this},c.ui.Element.prototype.isVisible=function(){return this.visible},c.ui.Element.prototype.getData=function(){return this.data},c.ui.Element.prototype.setData=function(t){return this.data=t,this},c.ui.Element.prototype.setElementId=function(t){return this.elementId=t,this.$element.attr("id",t),this},c.ui.Element.prototype.getElementId=function(){return null===this.elementId&&this.setElementId(c.ui.generateElementId()),this.elementId},c.ui.Element.prototype.supports=function(t){var e;return Array.isArray(t)?(e=this,t.every(function(t){return"function"==typeof e[t]})):"function"==typeof this[t]},c.ui.Element.prototype.updateThemeClasses=function(){c.ui.theme.queueUpdateElementClasses(this)},c.ui.Element.prototype.getTagName=function(){return this.constructor.static.tagName},c.ui.Element.prototype.isElementAttached=function(){return $.contains(this.getElementDocument(),this.$element[0])},c.ui.Element.prototype.getElementDocument=function(){return c.ui.Element.static.getDocument(this.$element)},c.ui.Element.prototype.getElementWindow=function(){return c.ui.Element.static.getWindow(this.$element)},c.ui.Element.prototype.getClosestScrollableElementContainer=function(){return c.ui.Element.static.getClosestScrollableContainer(this.$element[0])},c.ui.Element.prototype.getElementGroup=function(){return this.elementGroup},c.ui.Element.prototype.setElementGroup=function(t){return this.elementGroup=t,this},c.ui.Element.prototype.scrollElementIntoView=function(t){return!this.isElementAttached()||!this.isVisible()||this.getElementGroup()&&!this.getElementGroup().isVisible()?$.Deferred().resolve():c.ui.Element.static.scrollIntoView(this.$element[0],t)},c.ui.Element.prototype.restorePreInfuseState=function(){},c.ui.HtmlSnippet=function(t){this.content=t},c.initClass(c.ui.HtmlSnippet),c.ui.HtmlSnippet.prototype.toString=function(){return this.content},c.ui.Layout=function(t){c.ui.Layout.super.call(this,t=t||{}),c.EventEmitter.call(this),this.$element.addClass("oo-ui-layout")},c.inheritClass(c.ui.Layout,c.ui.Element),c.mixinClass(c.ui.Layout,c.EventEmitter),c.ui.Layout.prototype.resetScroll=function(){return this.$element[0].scrollTop=0,c.ui.Element.static.setScrollLeft(this.$element[0],0),this},c.ui.Widget=function(t){c.ui.Widget.super.call(this,t),c.EventEmitter.call(this),this.disabled=null,this.wasDisabled=null,this.$element.addClass("oo-ui-widget"),this.setDisabled(t&&t.disabled)},c.inheritClass(c.ui.Widget,c.ui.Element),c.mixinClass(c.ui.Widget,c.EventEmitter),c.ui.Widget.prototype.isDisabled=function(){return this.disabled},c.ui.Widget.prototype.setDisabled=function(t){this.disabled=!!t;t=this.isDisabled();return t!==this.wasDisabled&&(this.$element.toggleClass("oo-ui-widget-disabled",t),this.$element.toggleClass("oo-ui-widget-enabled",!t),this.$element.attr("aria-disabled",t?"true":null),this.emit("disable",t),this.updateThemeClasses(),this.wasDisabled=t),this},c.ui.Widget.prototype.updateDisabled=function(){return this.setDisabled(this.disabled),this},c.ui.Widget.prototype.getInputId=function(){return null},c.ui.Widget.prototype.simulateLabelClick=function(){},c.ui.Widget.prototype.setLabelledBy=function(t){t?this.$element.attr("aria-labelledby",t):this.$element.removeAttr("aria-labelledby")},c.ui.Theme=function(){this.elementClassesQueue=[],this.debouncedUpdateQueuedElementClasses=c.ui.debounce(this.updateQueuedElementClasses)},c.initClass(c.ui.Theme),c.ui.Theme.prototype.getElementClasses=function(){return{on:[],off:[]}},c.ui.Theme.prototype.updateElementClasses=function(t){var e=[];t.$icon&&e.push(t.$icon[0]),t.$indicator&&e.push(t.$indicator[0]),e.length&&(t=this.getElementClasses(t),$(e).removeClass(t.off).addClass(t.on))},c.ui.Theme.prototype.updateQueuedElementClasses=function(){for(var t=0;t<this.elementClassesQueue.length;t++)this.updateElementClasses(this.elementClassesQueue[t]);this.elementClassesQueue=[]},c.ui.Theme.prototype.queueUpdateElementClasses=function(t){-1===this.elementClassesQueue.lastIndexOf(t)&&(this.elementClassesQueue.push(t),this.debouncedUpdateQueuedElementClasses())},c.ui.Theme.prototype.getDialogTransitionDuration=function(){return 0},c.ui.mixin.TabIndexedElement=function(t){t=$.extend({tabIndex:0},t),this.$tabIndexed=null,this.tabIndex=null,this.connect(this,{disable:"onTabIndexedElementDisable"}),this.setTabIndex(t.tabIndex),this.setTabIndexedElement(t.$tabIndexed||this.$element)},c.initClass(c.ui.mixin.TabIndexedElement),c.ui.mixin.TabIndexedElement.prototype.setTabIndexedElement=function(t){var e=this.tabIndex;return this.setTabIndex(null),this.$tabIndexed=t,this.tabIndex=e,this.updateTabIndex()},c.ui.mixin.TabIndexedElement.prototype.setTabIndex=function(t){return t=/^-?\d+$/.test(t)?Number(t):null,this.tabIndex!==t&&(this.tabIndex=t,this.updateTabIndex()),this},c.ui.mixin.TabIndexedElement.prototype.updateTabIndex=function(){return this.$tabIndexed&&(null!==this.tabIndex?this.$tabIndexed.attr({tabindex:this.isDisabled()?-1:this.tabIndex,"aria-disabled":this.isDisabled()?"true":null}):this.$tabIndexed.removeAttr("tabindex aria-disabled")),this},c.ui.mixin.TabIndexedElement.prototype.onTabIndexedElementDisable=function(){this.updateTabIndex()},c.ui.mixin.TabIndexedElement.prototype.getTabIndex=function(){return this.tabIndex},c.ui.mixin.TabIndexedElement.prototype.getInputId=function(){var t;return this.$tabIndexed&&this.isLabelableNode(this.$tabIndexed)?(void 0===(t=this.$tabIndexed.attr("id"))&&(t=c.ui.generateElementId(),this.$tabIndexed.attr("id",t)),t):null},c.ui.mixin.TabIndexedElement.prototype.isLabelableNode=function(t){var e=(t.prop("tagName")||"").toLowerCase();return"input"===e&&"hidden"!==t.attr("type")||-1!==["button","meter","output","progress","select","textarea"].indexOf(e)},c.ui.mixin.TabIndexedElement.prototype.focus=function(){return this.isDisabled()||this.$tabIndexed.trigger("focus"),this},c.ui.mixin.TabIndexedElement.prototype.blur=function(){return this.$tabIndexed.trigger("blur"),this},c.ui.mixin.TabIndexedElement.prototype.simulateLabelClick=function(){this.focus()},c.ui.mixin.ButtonElement=function(t){t=t||{},this.$button=null,this.framed=null,this.active=void 0!==t.active&&t.active,this.onDocumentMouseUpHandler=this.onDocumentMouseUp.bind(this),this.onMouseDownHandler=this.onMouseDown.bind(this),this.onDocumentKeyUpHandler=this.onDocumentKeyUp.bind(this),this.onKeyDownHandler=this.onKeyDown.bind(this),this.onClickHandler=this.onClick.bind(this),this.onKeyPressHandler=this.onKeyPress.bind(this),this.$element.addClass("oo-ui-buttonElement"),this.toggleFramed(void 0===t.framed||t.framed),this.setButtonElement(t.$button||$("<a>"))},c.initClass(c.ui.mixin.ButtonElement),c.ui.mixin.ButtonElement.static.cancelButtonMouseDownEvents=!0,c.ui.mixin.ButtonElement.prototype.setButtonElement=function(t){this.$button&&this.$button.removeClass("oo-ui-buttonElement-button").removeAttr("role accesskey").off({mousedown:this.onMouseDownHandler,keydown:this.onKeyDownHandler,click:this.onClickHandler,keypress:this.onKeyPressHandler}),this.$button=t.addClass("oo-ui-buttonElement-button").on({mousedown:this.onMouseDownHandler,keydown:this.onKeyDownHandler,click:this.onClickHandler,keypress:this.onKeyPressHandler}),"A"===this.$button.prop("tagName").toUpperCase()&&this.$button.attr("role","button")},c.ui.mixin.ButtonElement.prototype.onMouseDown=function(t){if(!this.isDisabled()&&t.which===c.ui.MouseButtons.LEFT)return this.$element.addClass("oo-ui-buttonElement-pressed"),this.getElementDocument().addEventListener("mouseup",this.onDocumentMouseUpHandler,!0),!this.constructor.static.cancelButtonMouseDownEvents&&void 0},c.ui.mixin.ButtonElement.prototype.onDocumentMouseUp=function(t){this.isDisabled()||t.which!==c.ui.MouseButtons.LEFT||(this.$element.removeClass("oo-ui-buttonElement-pressed"),this.getElementDocument().removeEventListener("mouseup",this.onDocumentMouseUpHandler,!0))},c.ui.mixin.ButtonElement.prototype.onClick=function(t){if(!this.isDisabled()&&t.which===c.ui.MouseButtons.LEFT&&this.emit("click"))return!1},c.ui.mixin.ButtonElement.prototype.onKeyDown=function(t){this.isDisabled()||t.which!==c.ui.Keys.SPACE&&t.which!==c.ui.Keys.ENTER||(this.$element.addClass("oo-ui-buttonElement-pressed"),this.getElementDocument().addEventListener("keyup",this.onDocumentKeyUpHandler,!0))},c.ui.mixin.ButtonElement.prototype.onDocumentKeyUp=function(t){this.isDisabled()||t.which!==c.ui.Keys.SPACE&&t.which!==c.ui.Keys.ENTER||(this.$element.removeClass("oo-ui-buttonElement-pressed"),this.getElementDocument().removeEventListener("keyup",this.onDocumentKeyUpHandler,!0))},c.ui.mixin.ButtonElement.prototype.onKeyPress=function(t){if(!this.isDisabled()&&(t.which===c.ui.Keys.SPACE||t.which===c.ui.Keys.ENTER)&&this.emit("click"))return!1},c.ui.mixin.ButtonElement.prototype.isFramed=function(){return this.framed},c.ui.mixin.ButtonElement.prototype.toggleFramed=function(t){return(t=void 0===t?!this.framed:!!t)!==this.framed&&(this.framed=t,this.$element.toggleClass("oo-ui-buttonElement-frameless",!t).toggleClass("oo-ui-buttonElement-framed",t),this.updateThemeClasses()),this},c.ui.mixin.ButtonElement.prototype.setActive=function(t){return this.active=!!t,this.$element.toggleClass("oo-ui-buttonElement-active",this.active),this.updateThemeClasses(),this},c.ui.mixin.ButtonElement.prototype.isActive=function(){return this.active},c.ui.mixin.GroupElement=function(t){c.EmitterList.call(this,t=t||{}),this.$group=null,this.setGroupElement(t.$group||$("<div>"))},c.mixinClass(c.ui.mixin.GroupElement,c.EmitterList),c.ui.mixin.GroupElement.prototype.setGroupElement=function(t){this.$group=t;for(var e=0,i=this.items.length;e<i;e++)this.$group.append(this.items[e].$element)},c.ui.mixin.GroupElement.prototype.findItemFromData=function(t){for(var e=c.getHash(t),i=0,o=this.items.length;i<o;i++){var n=this.items[i];if(e===c.getHash(n.getData()))return n}return null},c.ui.mixin.GroupElement.prototype.findItemsFromData=function(t){for(var e=c.getHash(t),i=[],o=0,n=this.items.length;o<n;o++){var s=this.items[o];e===c.getHash(s.getData())&&i.push(s)}return i},c.ui.mixin.GroupElement.prototype.addItems=function(t,e){return t&&0!==t.length&&(c.EmitterList.prototype.addItems.call(this,t,e),this.emit("change",this.getItems())),this},c.ui.mixin.GroupElement.prototype.moveItem=function(t,e){return this.insertItemElements(t,e),e=c.EmitterList.prototype.moveItem.call(this,t,e)},c.ui.mixin.GroupElement.prototype.insertItem=function(t,e){return t.setElementGroup(this),this.insertItemElements(t,e),e=c.EmitterList.prototype.insertItem.call(this,t,e)},c.ui.mixin.GroupElement.prototype.insertItemElements=function(t,e){void 0===e||e<0||e>=this.items.length?this.$group.append(t.$element):0===e?this.$group.prepend(t.$element):this.items[e].$element.before(t.$element)},c.ui.mixin.GroupElement.prototype.removeItems=function(t){if(0!==t.length){for(var e=0,i=t.length;e<i;e++){var o=t[e];-1!==this.items.indexOf(o)&&(o.setElementGroup(null),o.$element.detach())}c.EmitterList.prototype.removeItems.call(this,t),this.emit("change",this.getItems())}return this},c.ui.mixin.GroupElement.prototype.clearItems=function(){for(var t=0,e=this.items.length;t<e;t++)this.items[t].setElementGroup(null),this.items[t].$element.detach();return c.EmitterList.prototype.clearItems.call(this),this.emit("change",this.getItems()),this},c.ui.mixin.LabelElement=function(t){t=t||{},this.$label=null,this.label=null,this.invisibleLabel=!1,this.setLabel(t.label||this.constructor.static.label),this.setLabelElement(t.$label||$("<span>")),this.setInvisibleLabel(t.invisibleLabel)},c.initClass(c.ui.mixin.LabelElement),c.ui.mixin.LabelElement.static.label=null,c.ui.mixin.LabelElement.static.highlightQuery=function(t,e,i,o){var n=-1,s=$("<span>"),l=0;if(i)for(var u=t.length,a=e.length,r=0;-1===n&&r<=u-a;r++)0===i(e,t.slice(r,r+a))&&(n=r);else n=t.toLowerCase().indexOf(e.toLowerCase());return e.length&&-1!==n?(o&&(o=new RegExp("(^)[̀-ͯ҃-҉֑-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࣓-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣ৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣஂா-ூெ-ைொ-்ௗఀ-ఄా-ౄె-ైొ-్ౕౖౢౣಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣංඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ູົຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍ᢅᢆᢩᤠ-ᤫᤰ-᤻ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼᪰-᪾ᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭ᳲ-᳴᳷-᳹᷀-᷹᷻-᷿⃐-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯-꙲ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꧥꨩ-ꨶꩃꩌꩍꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︯]*"),o=t.slice(n+e.length).match(o))&&o.length&&(l=o[0].length),s.append(document.createTextNode(t.slice(0,n)),$("<span>").addClass("oo-ui-labelElement-label-highlight").text(t.slice(n,n+e.length+l)),document.createTextNode(t.slice(n+e.length+l)))):s.text(t),s.contents()},c.ui.mixin.LabelElement.prototype.setLabelElement=function(t){this.$label&&this.$label.removeClass("oo-ui-labelElement-label").empty(),this.$label=t.addClass("oo-ui-labelElement-label"),this.setLabelContent(this.label)},c.ui.mixin.LabelElement.prototype.setLabelId=function(t){return this.$label.attr("id",t),this},c.ui.mixin.LabelElement.prototype.setLabel=function(t){return t=("string"==typeof(t=c.ui.resolveMsg(t))||t instanceof $)&&t.length||t instanceof c.ui.HtmlSnippet&&t.toString().length?t:null,this.label!==t&&(this.$label&&this.setLabelContent(t),this.label=t,this.$element.toggleClass("oo-ui-labelElement",!!this.label&&!this.invisibleLabel),this.emit("labelChange")),this},c.ui.mixin.LabelElement.prototype.setInvisibleLabel=function(t){return this.invisibleLabel!==(t=!!t)&&(this.invisibleLabel=t,this.$label.toggleClass("oo-ui-labelElement-invisible",this.invisibleLabel),this.$element.toggleClass("oo-ui-labelElement",!!this.label&&!this.invisibleLabel),this.emit("labelChange")),this},c.ui.mixin.LabelElement.prototype.setHighlightedQuery=function(t,e,i,o){return this.setLabel(this.constructor.static.highlightQuery(t,e,i,o))},c.ui.mixin.LabelElement.prototype.getLabel=function(){return this.label},c.ui.mixin.LabelElement.prototype.setLabelContent=function(t){"string"==typeof t?t.match(/^\s*$/)?this.$label.html("&nbsp;"):this.$label.text(t):t instanceof c.ui.HtmlSnippet?this.$label.html(t.toString()):t instanceof $?this.$label.empty().append(t):this.$label.empty()},c.ui.mixin.IconElement=function(t){t=t||{},this.$icon=null,this.icon=null,this.setIcon(t.icon||this.constructor.static.icon),this.setIconElement(t.$icon||$("<span>"))},c.initClass(c.ui.mixin.IconElement),c.ui.mixin.IconElement.static.icon=null,c.ui.mixin.IconElement.static.iconTitle=null,c.ui.mixin.IconElement.prototype.setIconElement=function(t){this.$icon&&this.$icon.removeClass("oo-ui-iconElement-icon oo-ui-icon-"+this.icon).removeAttr("title"),this.$icon=t.addClass("oo-ui-iconElement-icon").toggleClass("oo-ui-iconElement-noIcon",!this.icon).toggleClass("oo-ui-icon-"+this.icon,!!this.icon),null!==this.iconTitle&&this.$icon.attr("title",this.iconTitle),this.updateThemeClasses()},c.ui.mixin.IconElement.prototype.setIcon=function(t){return t&&"string"!=typeof t&&(t=c.ui.getLocalValue(t,null,"default")),this.icon!==t&&(this.$element.toggleClass("oo-ui-iconElement",!!t),this.$icon&&(this.icon&&this.$icon.removeClass("oo-ui-icon-"+this.icon),t&&this.$icon.addClass("oo-ui-icon-"+t),this.$icon.toggleClass("oo-ui-iconElement-noIcon",!t)),this.icon=t,this.updateThemeClasses()),this},c.ui.mixin.IconElement.prototype.getIcon=function(){return this.icon},c.ui.mixin.IndicatorElement=function(t){t=t||{},this.$indicator=null,this.indicator=null,this.setIndicator(t.indicator||this.constructor.static.indicator),this.setIndicatorElement(t.$indicator||$("<span>"))},c.initClass(c.ui.mixin.IndicatorElement),c.ui.mixin.IndicatorElement.static.indicator=null,c.ui.mixin.IndicatorElement.static.indicatorTitle=null,c.ui.mixin.IndicatorElement.prototype.setIndicatorElement=function(t){this.$indicator&&this.$indicator.removeClass("oo-ui-indicatorElement-indicator oo-ui-indicator-"+this.indicator).removeAttr("title"),this.$indicator=t.addClass("oo-ui-indicatorElement-indicator").toggleClass("oo-ui-indicatorElement-noIndicator",!this.indicator).toggleClass("oo-ui-indicator-"+this.indicator,!!this.indicator),null!==this.indicatorTitle&&this.$indicator.attr("title",this.indicatorTitle),this.updateThemeClasses()},c.ui.mixin.IndicatorElement.prototype.setIndicator=function(t){return t="string"==typeof t&&t.length?t.trim():null,this.indicator!==t&&(this.$indicator&&(null!==this.indicator&&this.$indicator.removeClass("oo-ui-indicator-"+this.indicator),null!==t)&&this.$indicator.addClass("oo-ui-indicator-"+t),this.indicator=t),this.$element.toggleClass("oo-ui-indicatorElement",!!this.indicator),this.$indicator&&this.$indicator.toggleClass("oo-ui-indicatorElement-noIndicator",!this.indicator),this.updateThemeClasses(),this},c.ui.mixin.IndicatorElement.prototype.getIndicator=function(){return this.indicator},c.ui.mixin.FlaggedElement=function(t){t=t||{},this.flags={},this.$flagged=null,this.setFlags(t.flags||this.constructor.static.flags),this.setFlaggedElement(t.$flagged||this.$element)},c.initClass(c.ui.mixin.FlaggedElement),c.ui.mixin.FlaggedElement.static.flags=null,c.ui.mixin.FlaggedElement.prototype.setFlaggedElement=function(t){var e=Object.keys(this.flags).map(function(t){return"oo-ui-flaggedElement-"+t});this.$flagged&&this.$flagged.removeClass(e),this.$flagged=t.addClass(e)},c.ui.mixin.FlaggedElement.prototype.hasFlag=function(t){return this.flags&&t in this.flags},c.ui.mixin.FlaggedElement.prototype.getFlags=function(){return Object.keys(this.flags||{})},c.ui.mixin.FlaggedElement.prototype.clearFlags=function(){var t,e={},i=[];for(t in this.flags){var o="oo-ui-flaggedElement-"+t;e[t]=!1,delete this.flags[t],i.push(o)}return this.$flagged&&this.$flagged.removeClass(i),this.updateThemeClasses(),this.emit("flag",e),this},c.ui.mixin.FlaggedElement.prototype.setFlags=function(t){var e,i,o={},n=[],s=[],l="oo-ui-flaggedElement-";if("string"==typeof t)e=l+t,this.flags[t]||(this.flags[t]=!0,n.push(e));else if(Array.isArray(t))for(var u=0,a=t.length;u<a;u++)e=l+(i=t[u]),this.flags[i]||(this.flags[i]=o[i]=!0,n.push(e));else if(c.isPlainObject(t))for(i in t)e=l+i,t[i]?this.flags[i]||(this.flags[i]=o[i]=!0,n.push(e)):this.flags[i]&&(o[i]=!1,delete this.flags[i],s.push(e));return this.$flagged&&this.$flagged.addClass(n).removeClass(s),this.updateThemeClasses(),this.emit("flag",o),this},c.ui.mixin.TitledElement=function(t){t=t||{},this.$titled=null,this.title=null;var e=(void 0!==t.title?t:this.constructor.static).title;null===e&&t.invisibleLabel&&"string"==typeof t.label&&(e=t.label),this.setTitle(e),this.setTitledElement(t.$titled||this.$element)},c.initClass(c.ui.mixin.TitledElement),c.ui.mixin.TitledElement.static.title=null,c.ui.mixin.TitledElement.prototype.setTitledElement=function(t){this.$titled&&this.$titled.removeAttr("title"),this.$titled=t,this.updateTitle()},c.ui.mixin.TitledElement.prototype.setTitle=function(t){return t=c.ui.resolveMsg(t),this.title!==(t="string"==typeof t?t:null)&&(this.title=t,this.updateTitle()),this},c.ui.mixin.TitledElement.prototype.updateTitle=function(){var t=this.getTitle();return this.$titled&&(null!==t?(this.formatTitleWithAccessKey&&(t=this.formatTitleWithAccessKey(t)),this.$titled.attr("title",t)):this.$titled.removeAttr("title")),this},c.ui.mixin.TitledElement.prototype.getTitle=function(){return this.title},c.ui.mixin.AccessKeyedElement=function(t){t=t||{},this.$accessKeyed=null,this.accessKey=null,this.setAccessKey(t.accessKey||null),this.setAccessKeyedElement(t.$accessKeyed||this.$element),this.updateTitle&&this.updateTitle()},c.initClass(c.ui.mixin.AccessKeyedElement),c.ui.mixin.AccessKeyedElement.static.accessKey=null,c.ui.mixin.AccessKeyedElement.prototype.setAccessKeyedElement=function(t){this.$accessKeyed&&this.$accessKeyed.removeAttr("accesskey"),this.$accessKeyed=t,this.accessKey&&this.$accessKeyed.attr("accesskey",this.accessKey)},c.ui.mixin.AccessKeyedElement.prototype.setAccessKey=function(t){return t=c.ui.resolveMsg(t),this.accessKey!==(t="string"==typeof t?t:null)&&(this.$accessKeyed&&(null!==t?this.$accessKeyed.attr("accesskey",t):this.$accessKeyed.removeAttr("accesskey")),this.accessKey=t,this.updateTitle)&&this.updateTitle(),this},c.ui.mixin.AccessKeyedElement.prototype.getAccessKey=function(){return this.accessKey},c.ui.mixin.AccessKeyedElement.prototype.formatTitleWithAccessKey=function(t){var e;return this.$accessKeyed&&(e=$.fn.updateTooltipAccessKeys&&$.fn.updateTooltipAccessKeys.getAccessKeyLabel?$.fn.updateTooltipAccessKeys.getAccessKeyLabel(this.$accessKeyed[0]):this.getAccessKey())&&(t+=" ["+e+"]"),t},c.ui.mixin.RequiredElement=function(t){if(this.$required=(t=t||{}).$required||this.$input||this.$element,this.required=!1,this.indicatorElement=void 0!==t.indicatorElement?t.indicatorElement:this,this.indicatorElement&&!this.indicatorElement.getIndicator)throw new Error("config.indicatorElement must mixin OO.ui.mixin.IndicatorElement.");this.setRequired(!!t.required)},c.initClass(c.ui.mixin.RequiredElement),c.ui.mixin.RequiredElement.prototype.setRequiredElement=function(t){this.$required!==t&&(this.$required&&this.required&&this.updateRequiredElement(!1),this.$required=t,this.updateRequiredElement())},c.ui.mixin.RequiredElement.prototype.updateRequiredElement=function(t){void 0===t&&(t=this.required),this.$required.prop("required",t)},c.ui.mixin.RequiredElement.prototype.isRequired=function(){return this.required},c.ui.mixin.RequiredElement.prototype.setRequired=function(t){var e;return this.required!==t&&(this.required=!!t,this.updateRequiredElement(),this.indicatorElement&&(e=t?null:"required",this.indicatorElement.getIndicator()===e))&&this.indicatorElement.setIndicator(t?"required":null),this},c.ui.ButtonWidget=function(t){c.ui.ButtonWidget.super.call(this,t=t||{}),c.ui.mixin.ButtonElement.call(this,t),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.IndicatorElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$button},t)),c.ui.mixin.FlaggedElement.call(this,t),c.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$button},t)),c.ui.mixin.AccessKeyedElement.call(this,$.extend({$accessKeyed:this.$button},t)),this.href=null,this.target=null,this.noFollow=!1,this.rel=[],this.connect(this,{disable:"onDisable"}),this.$button.append(this.$icon,this.$label,this.$indicator),this.$element.addClass("oo-ui-buttonWidget").append(this.$button),this.setActive(t.active),this.setHref(t.href),this.setTarget(t.target),void 0!==t.rel?this.setRel(t.rel):this.setNoFollow(t.noFollow)},c.inheritClass(c.ui.ButtonWidget,c.ui.Widget),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.ButtonElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.IndicatorElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.FlaggedElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.TabIndexedElement),c.mixinClass(c.ui.ButtonWidget,c.ui.mixin.AccessKeyedElement),c.ui.ButtonWidget.static.cancelButtonMouseDownEvents=!1,c.ui.ButtonWidget.static.tagName="span",c.ui.ButtonWidget.prototype.getHref=function(){return this.href},c.ui.ButtonWidget.prototype.getTarget=function(){return this.target},c.ui.ButtonWidget.prototype.getNoFollow=function(){return this.noFollow},c.ui.ButtonWidget.prototype.getRel=function(){return this.rel},c.ui.ButtonWidget.prototype.setHref=function(t){return(t=null===(t="string"==typeof t?t:null)||c.ui.isSafeUrl(t)?t:"./"+t)!==this.href&&(this.href=t,this.updateHref()),this},c.ui.ButtonWidget.prototype.updateHref=function(){return null===this.href||this.isDisabled()?this.$button.removeAttr("href"):this.$button.attr("href",this.href),this},c.ui.ButtonWidget.prototype.onDisable=function(){this.updateHref()},c.ui.ButtonWidget.prototype.setTarget=function(t){return(t="string"==typeof t?t:null)!==this.target&&(null!==(this.target=t)?this.$button.attr("target",t):this.$button.removeAttr("target")),this},c.ui.ButtonWidget.prototype.setNoFollow=function(t){return(t="boolean"!=typeof t||t)!==this.noFollow&&(t=t?this.rel.concat(["nofollow"]):this.rel.filter(function(t){return"nofollow"!==t}),this.setRel(t)),this},c.ui.ButtonWidget.prototype.setRel=function(t){return Array.isArray(t)||(t=t?[t]:[]),this.rel=t,this.noFollow=-1!==t.indexOf("nofollow"),this.$button.attr("rel",t.join(" ")||null),this},c.ui.ButtonGroupWidget=function(t){c.ui.ButtonGroupWidget.super.call(this,t=t||{}),c.ui.mixin.GroupElement.call(this,$.extend({$group:this.$element},t)),c.ui.mixin.TitledElement.call(this,t),this.$element.addClass("oo-ui-buttonGroupWidget"),this.addItems(t.items||[])},c.inheritClass(c.ui.ButtonGroupWidget,c.ui.Widget),c.mixinClass(c.ui.ButtonGroupWidget,c.ui.mixin.GroupElement),c.mixinClass(c.ui.ButtonGroupWidget,c.ui.mixin.TitledElement),c.ui.ButtonGroupWidget.static.tagName="span",c.ui.ButtonGroupWidget.prototype.focus=function(){return this.isDisabled()||this.items[0]&&this.items[0].focus(),this},c.ui.ButtonGroupWidget.prototype.simulateLabelClick=function(){this.focus()},c.ui.IconWidget=function(t){c.ui.IconWidget.super.call(this,t=t||{}),c.ui.mixin.IconElement.call(this,$.extend({$icon:this.$element},t)),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$element},t)),c.ui.mixin.LabelElement.call(this,$.extend({$label:this.$element,invisibleLabel:!0},t)),c.ui.mixin.FlaggedElement.call(this,$.extend({$flagged:this.$element},t)),this.$element.addClass("oo-ui-iconWidget"),this.$element.removeClass("oo-ui-labelElement-label")},c.inheritClass(c.ui.IconWidget,c.ui.Widget),c.mixinClass(c.ui.IconWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.IconWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.IconWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.IconWidget,c.ui.mixin.FlaggedElement),c.ui.IconWidget.static.tagName="span",c.ui.IndicatorWidget=function(t){c.ui.IndicatorWidget.super.call(this,t=t||{}),c.ui.mixin.IndicatorElement.call(this,$.extend({$indicator:this.$element},t)),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$element},t)),c.ui.mixin.LabelElement.call(this,$.extend({$label:this.$element,invisibleLabel:!0},t)),this.$element.addClass("oo-ui-indicatorWidget"),this.$element.removeClass("oo-ui-labelElement-label")},c.inheritClass(c.ui.IndicatorWidget,c.ui.Widget),c.mixinClass(c.ui.IndicatorWidget,c.ui.mixin.IndicatorElement),c.mixinClass(c.ui.IndicatorWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.IndicatorWidget,c.ui.mixin.LabelElement),c.ui.IndicatorWidget.static.tagName="span",c.ui.LabelWidget=function(t){c.ui.LabelWidget.super.call(this,t=t||{}),c.ui.mixin.LabelElement.call(this,$.extend({$label:this.$element},t)),c.ui.mixin.TitledElement.call(this,t),this.input=t.input,this.input&&(this.input.getInputId()?this.$element.attr("for",this.input.getInputId()):this.$label.on("click",function(){this.input.simulateLabelClick()}.bind(this))),this.$element.addClass("oo-ui-labelWidget")},c.inheritClass(c.ui.LabelWidget,c.ui.Widget),c.mixinClass(c.ui.LabelWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.LabelWidget,c.ui.mixin.TitledElement),c.ui.LabelWidget.static.tagName="label",c.ui.MessageWidget=function(t){c.ui.MessageWidget.super.call(this,t=t||{}),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.TitledElement.call(this,t),c.ui.mixin.FlaggedElement.call(this,t),this.setType(t.type),this.setInline(t.inline),t.icon&&this.setIcon(t.icon),!this.inline&&t.showClose&&(this.closeButton=new c.ui.ButtonWidget({classes:["oo-ui-messageWidget-close"],framed:!1,icon:"close",label:c.ui.msg("ooui-popup-widget-close-button-aria-label"),invisibleLabel:!0}),this.closeButton.connect(this,{click:"onCloseButtonClick"}),this.$element.addClass("oo-ui-messageWidget-showClose")),this.$element.append(this.$icon,this.$label,this.closeButton&&this.closeButton.$element).addClass("oo-ui-messageWidget")},c.inheritClass(c.ui.MessageWidget,c.ui.Widget),c.mixinClass(c.ui.MessageWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.MessageWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.MessageWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.MessageWidget,c.ui.mixin.FlaggedElement),c.ui.MessageWidget.static.iconMap={notice:"infoFilled",error:"error",warning:"alert",success:"success"},c.ui.MessageWidget.prototype.setInline=function(t){this.inline!==(t=!!t)&&(this.inline=t,this.$element.toggleClass("oo-ui-messageWidget-block",!this.inline))},c.ui.MessageWidget.prototype.setType=function(t){this.constructor.static.iconMap[t]||(t="notice"),this.type!==t&&(this.clearFlags(),this.setFlags(t),this.setIcon(this.constructor.static.iconMap[t]),this.$icon.removeClass("oo-ui-image-"+this.type),this.$icon.addClass("oo-ui-image-"+t),"error"===t?(this.$element.attr("role","alert"),this.$element.removeAttr("aria-live")):(this.$element.removeAttr("role"),this.$element.attr("aria-live","polite")),this.type=t)},c.ui.MessageWidget.prototype.onCloseButtonClick=function(){this.toggle(!1),this.emit("close")},c.ui.ToggleWidget=function(t){c.ui.ToggleWidget.super.call(this,t=t||{}),c.ui.mixin.TitledElement.call(this,t),this.value=null,this.$element.addClass("oo-ui-toggleWidget"),this.setValue(!!t.value)},c.inheritClass(c.ui.ToggleWidget,c.ui.Widget),c.mixinClass(c.ui.ToggleWidget,c.ui.mixin.TitledElement),c.ui.ToggleWidget.prototype.getValue=function(){return this.value},c.ui.ToggleWidget.prototype.setValue=function(t){return this.value!==(t=!!t)&&(this.value=t,this.emit("change",t),this.$element.toggleClass("oo-ui-toggleWidget-on",t),this.$element.toggleClass("oo-ui-toggleWidget-off",!t)),this},c.ui.ToggleSwitchWidget=function(t){c.ui.ToggleSwitchWidget.super.call(this,t),c.ui.mixin.TabIndexedElement.call(this,t),this.dragging=!1,this.dragStart=null,this.sliding=!1,this.$glow=$("<span>"),this.$grip=$("<span>"),this.$element.on({click:this.onClick.bind(this),keypress:this.onKeyPress.bind(this)}),this.$glow.addClass("oo-ui-toggleSwitchWidget-glow"),this.$grip.addClass("oo-ui-toggleSwitchWidget-grip"),this.$element.addClass("oo-ui-toggleSwitchWidget").attr("role","switch").append(this.$glow,this.$grip)},c.inheritClass(c.ui.ToggleSwitchWidget,c.ui.ToggleWidget),c.mixinClass(c.ui.ToggleSwitchWidget,c.ui.mixin.TabIndexedElement),c.ui.ToggleSwitchWidget.prototype.onClick=function(t){return this.isDisabled()||t.which!==c.ui.MouseButtons.LEFT||this.setValue(!this.value),!1},c.ui.ToggleSwitchWidget.prototype.onKeyPress=function(t){if(!this.isDisabled()&&(t.which===c.ui.Keys.SPACE||t.which===c.ui.Keys.ENTER))return this.setValue(!this.value),!1},c.ui.ToggleSwitchWidget.prototype.setValue=function(t){return c.ui.ToggleSwitchWidget.super.prototype.setValue.call(this,t),this.$element.attr("aria-checked",this.value.toString()),this},c.ui.ToggleSwitchWidget.prototype.simulateLabelClick=function(){this.isDisabled()||this.setValue(!this.value),this.focus()},c.ui.mixin.PendingElement=function(t){t=t||{},this.pending=0,this.$pending=null,this.setPendingElement(t.$pending||this.$element)},c.initClass(c.ui.mixin.PendingElement),c.ui.mixin.PendingElement.prototype.setPendingElement=function(t){this.$pending&&this.$pending.removeClass("oo-ui-pendingElement-pending"),this.$pending=t,0<this.pending&&this.$pending.addClass("oo-ui-pendingElement-pending")},c.ui.mixin.PendingElement.prototype.isPending=function(){return!!this.pending},c.ui.mixin.PendingElement.prototype.pushPending=function(){return 0===this.pending&&(this.$pending.addClass("oo-ui-pendingElement-pending"),this.updateThemeClasses()),this.pending++,this},c.ui.mixin.PendingElement.prototype.popPending=function(){return 1===this.pending&&(this.$pending.removeClass("oo-ui-pendingElement-pending"),this.updateThemeClasses()),this.pending=Math.max(0,this.pending-1),this},c.ui.mixin.FloatableElement=function(t){t=t||{},this.$floatable=null,this.$floatableContainer=null,this.$floatableWindow=null,this.$floatableClosestScrollable=null,this.floatableOutOfView=!1,this.onFloatableScrollHandler=this.position.bind(this),this.onFloatableWindowResizeHandler=this.position.bind(this),this.setFloatableContainer(t.$floatableContainer),this.setFloatableElement(t.$floatable||this.$element),this.setVerticalPosition(t.verticalPosition||"below"),this.setHorizontalPosition(t.horizontalPosition||"start"),this.hideWhenOutOfView=void 0===t.hideWhenOutOfView||!!t.hideWhenOutOfView},c.ui.mixin.FloatableElement.prototype.setFloatableElement=function(t){this.$floatable&&(this.$floatable.removeClass("oo-ui-floatableElement-floatable"),this.$floatable.css({top:"",left:"",bottom:"",right:""})),this.$floatable=t.addClass("oo-ui-floatableElement-floatable"),this.position()},c.ui.mixin.FloatableElement.prototype.setFloatableContainer=function(t){this.$floatableContainer=t,this.$floatable&&this.position()},c.ui.mixin.FloatableElement.prototype.setVerticalPosition=function(t){if(-1===["below","above","top","bottom","center"].indexOf(t))throw new Error("Invalid value for vertical position: "+t);this.verticalPosition!==t&&(this.verticalPosition=t,this.$floatable)&&this.position()},c.ui.mixin.FloatableElement.prototype.setHorizontalPosition=function(t){if(-1===["before","after","start","end","center"].indexOf(t))throw new Error("Invalid value for horizontal position: "+t);this.horizontalPosition!==t&&(this.horizontalPosition=t,this.$floatable)&&this.position()},c.ui.mixin.FloatableElement.prototype.togglePositioning=function(t){var e;return this.$floatable&&this.$floatableContainer&&(!(t=void 0===t?!this.positioning:!!t)||this.warnedUnattached||this.isElementAttached()||(c.ui.warnDeprecation("FloatableElement#togglePositioning: Before calling this method, the element must be attached to the DOM."),this.warnedUnattached=!0),this.positioning!==t)&&(this.positioning=t,e=c.ui.Element.static.getClosestScrollableContainer(this.$floatableContainer[0]),$(e).is("html, body")&&(e=c.ui.Element.static.getWindow(e)),t?(this.$floatableWindow=$(this.getElementWindow()),this.$floatableWindow.on("resize",this.onFloatableWindowResizeHandler),this.$floatableClosestScrollable=$(e),this.$floatableClosestScrollable.on("scroll",this.onFloatableScrollHandler),this.position()):(this.$floatableWindow&&(this.$floatableWindow.off("resize",this.onFloatableWindowResizeHandler),this.$floatableWindow=null),this.$floatableClosestScrollable&&(this.$floatableClosestScrollable.off("scroll",this.onFloatableScrollHandler),this.$floatableClosestScrollable=null),this.$floatable.css({top:"",left:"",bottom:"",right:""}))),this},c.ui.mixin.FloatableElement.prototype.isElementInViewport=function(t,e){var i,o,n=t.css("direction"),t=t[0].getBoundingClientRect(),s=(e[0]===window?(s=c.ui.getViewportSpacing(),(i={top:0,left:0,right:document.documentElement.clientWidth,bottom:document.documentElement.clientHeight}).top+=s.top,i.left+=s.left,i.right-=s.right,i.bottom-=s.bottom):i=e[0].getBoundingClientRect(),t.top>=i.top&&t.top<=i.bottom),e=t.bottom>=i.top&&t.bottom<=i.bottom,l=t.left>=i.left&&t.left<=i.right,u=t.right>=i.left&&t.right<=i.right,n="rtl"===n?(o=u,l):(o=l,u);return!("below"===this.verticalPosition&&!e)&&("above"!==this.verticalPosition||s)&&!("before"===this.horizontalPosition&&!o)&&!("after"===this.horizontalPosition&&!n)&&t.top<=i.bottom&&t.bottom>=i.top&&t.left<=i.right&&t.right>=i.left},c.ui.mixin.FloatableElement.prototype.isFloatableOutOfView=function(){return this.floatableOutOfView},c.ui.mixin.FloatableElement.prototype.position=function(){return this.positioning&&this.isElementAttached()&&(this.$floatableClosestScrollable[0]===this.getElementWindow()||$.contains(this.getElementDocument(),this.$floatableClosestScrollable[0]))&&(this.floatableOutOfView=this.hideWhenOutOfView&&!this.isElementInViewport(this.$floatableContainer,this.$floatableClosestScrollable),this.$floatable.toggleClass("oo-ui-element-hidden",this.floatableOutOfView),!this.floatableOutOfView)&&(this.$floatable.css(this.computePosition()),this.clip)&&this.clip(),this},c.ui.mixin.FloatableElement.prototype.computePosition=function(){var t={top:"",left:"",bottom:"",right:""},e=this.$floatableContainer.css("direction"),i=this.$floatable.offsetParent(),o=(i=i.is("html")?$(i[0].ownerDocument.body):i).is("body"),n="scroll"===i.css("overflow-x")||"auto"===i.css("overflow-x"),s="scroll"===i.css("overflow-y")||"auto"===i.css("overflow-y"),l=i.innerWidth()-i.prop("clientWidth"),u=i.innerHeight()-i.prop("clientHeight"),s=s&&!o?i.scrollTop():0,n=n&&!o?c.ui.Element.static.getScrollLeft(i[0]):0,a=o?this.$floatableContainer.offset():c.ui.Element.static.getRelativePosition(this.$floatableContainer,i);return a.bottom=a.top+this.$floatableContainer.outerHeight(),a.right=a.left+this.$floatableContainer.outerWidth(),a.start="rtl"===e?a.right:a.left,a.end="rtl"===e?a.left:a.right,"below"===this.verticalPosition?t.top=a.bottom:"above"===this.verticalPosition?t.bottom=i.outerHeight()-a.top:"top"===this.verticalPosition?t.top=a.top:"bottom"===this.verticalPosition?t.bottom=i.outerHeight()-a.bottom:"center"===this.verticalPosition&&(t.top=a.top+(this.$floatableContainer.height()-this.$floatable.height())/2),"before"===this.horizontalPosition?t.end=a.start:"after"===this.horizontalPosition?t.start=a.end:"start"===this.horizontalPosition?t.start=a.start:"end"===this.horizontalPosition?t.end=a.end:"center"===this.horizontalPosition&&(t.left=a.left+(this.$floatableContainer.width()-this.$floatable.width())/2),void 0!==t.start&&("rtl"===e?t.right=(o?$(i[0].ownerDocument.documentElement):i).outerWidth()-t.start:t.left=t.start,delete t.start),void 0!==t.end&&("rtl"===e?t.left=t.end:t.right=(o?$(i[0].ownerDocument.documentElement):i).outerWidth()-t.end,delete t.end),""!==t.top&&(t.top+=s),""!==t.bottom&&(t.bottom-=s),""!==t.left&&(t.left+=n),""!==t.right&&(t.right-=n),""!==t.bottom&&(t.bottom-=u),"rtl"===e?""!==t.left&&(t.left-=l):""!==t.right&&(t.right-=l),t},c.ui.mixin.ClippableElement=function(t){t=t||{},this.$clippable=null,this.$clippableContainer=null,this.clipping=!1,this.clippedHorizontally=!1,this.clippedVertically=!1,this.$clippableScrollableContainer=null,this.$clippableScroller=null,this.$clippableWindow=null,this.idealWidth=null,this.idealHeight=null,this.onClippableScrollHandler=this.clip.bind(this),this.onClippableWindowResizeHandler=this.clip.bind(this),t.$clippableContainer&&this.setClippableContainer(t.$clippableContainer),this.setClippableElement(t.$clippable||this.$element)},c.ui.mixin.ClippableElement.prototype.setClippableElement=function(t){this.$clippable&&(this.$clippable.removeClass("oo-ui-clippableElement-clippable"),this.$clippable.css({width:"",height:"",overflowX:"",overflowY:""}),c.ui.Element.static.reconsiderScrollbars(this.$clippable[0])),this.$clippable=t.addClass("oo-ui-clippableElement-clippable"),this.clip()},c.ui.mixin.ClippableElement.prototype.setClippableContainer=function(t){this.$clippableContainer=t,this.$clippable&&this.clip()},c.ui.mixin.ClippableElement.prototype.toggleClipping=function(t){return!(t=void 0===t?!this.clipping:!!t)||this.warnedUnattached||this.isElementAttached()||(c.ui.warnDeprecation("ClippableElement#toggleClipping: Before calling this method, the element must be attached to the DOM."),this.warnedUnattached=!0),this.clipping!==t&&((this.clipping=t)?(this.$clippableScrollableContainer=$(this.getClosestScrollableElementContainer()),this.$clippableScroller=this.$clippableScrollableContainer.is("html, body")?$(c.ui.Element.static.getWindow(this.$clippableScrollableContainer)):this.$clippableScrollableContainer,this.$clippableScroller.on("scroll",this.onClippableScrollHandler),this.$clippableWindow=$(this.getElementWindow()).on("resize",this.onClippableWindowResizeHandler),this.clip()):(this.$clippable.css({width:"",height:"",maxWidth:"",maxHeight:"",overflowX:"",overflowY:""}),c.ui.Element.static.reconsiderScrollbars(this.$clippable[0]),this.$clippableScrollableContainer=null,this.$clippableScroller.off("scroll",this.onClippableScrollHandler),this.$clippableScroller=null,this.$clippableWindow.off("resize",this.onClippableWindowResizeHandler),this.$clippableWindow=null)),this},c.ui.mixin.ClippableElement.prototype.isClipping=function(){return this.clipping},c.ui.mixin.ClippableElement.prototype.isClipped=function(){return this.clippedHorizontally||this.clippedVertically},c.ui.mixin.ClippableElement.prototype.isClippedHorizontally=function(){return this.clippedHorizontally},c.ui.mixin.ClippableElement.prototype.isClippedVertically=function(){return this.clippedVertically},c.ui.mixin.ClippableElement.prototype.setIdealSize=function(t,e){this.idealWidth=t,this.idealHeight=e,this.clipping||this.$clippable.css({width:t,height:e})},c.ui.mixin.ClippableElement.prototype.getHorizontalAnchorEdge=function(){return this.computePosition&&this.positioning&&""!==this.computePosition().right?"right":"left"},c.ui.mixin.ClippableElement.prototype.getVerticalAnchorEdge=function(){return this.computePosition&&this.positioning&&""!==this.computePosition().bottom?"bottom":"top"},c.ui.mixin.ClippableElement.prototype.clip=function(){var t,e,i,o,n,s,l;return this.clipping&&(o=c.ui.getViewportSpacing(),this.$clippableScrollableContainer.is("html, body")?(i=$(this.$clippableScrollableContainer[0].ownerDocument.body),(e={top:0,left:0,right:document.documentElement.clientWidth,bottom:document.documentElement.clientHeight}).top+=o.top,e.left+=o.left,e.right-=o.right,e.bottom-=o.bottom):(e=(i=this.$clippableScrollableContainer)[0].getBoundingClientRect(),e=$.extend({},e)),t=i.css("direction"),s=i.innerWidth()-i.prop("clientWidth"),i=i.innerHeight()-i.prop("clientHeight"),e.bottom-=i,"rtl"===t?e.left+=s:e.right-=s,e.top+=7,e.left+=7,e.right-=7,e.bottom-=7,t=(i=this.$clippableContainer||this.$clippable).outerHeight()-this.$clippable.outerHeight(),s=i.outerWidth()-this.$clippable.outerWidth(),i=i[0].getBoundingClientRect(),i=$.extend({},i),"right"===this.getHorizontalAnchorEdge()?i.left=e.left:i.right=e.right,"bottom"===this.getVerticalAnchorEdge()?i.top=e.top:i.bottom=e.bottom,e=e,i=i,(l={}).top=Math.max(e.top,i.top),l.left=Math.max(e.left,i.left),l.bottom=Math.min(e.bottom,i.bottom),l.right=Math.min(e.right,i.right),l=l,n=Math.max(0,l.right-l.left),l=Math.max(0,l.bottom-l.top),n=Math.min(n,document.documentElement.clientWidth-o.left-o.right),l=Math.min(l,document.documentElement.clientHeight-o.top-o.right),o=Math.ceil(n-s),n=Math.ceil(l-t),s=o<this.$clippable.prop("scrollWidth"),l=n<this.$clippable.prop("scrollHeight"),s?(this.$clippable.css("overflowX","scroll"),this.$clippable[0].offsetHeight,this.$clippable.css("overflowX","auto"),this.$clippable[0].offsetHeight,this.$clippable.css({width:Math.max(0,o),maxWidth:""})):this.$clippable.css({overflowX:"",width:this.idealWidth||"",maxWidth:Math.max(0,o)}),l?(this.$clippable.css("overflowY","scroll"),this.$clippable[0].offsetHeight,this.$clippable.css("overflowY","auto"),this.$clippable[0].offsetHeight,this.$clippable.css({height:Math.max(0,n),maxHeight:""})):this.$clippable.css({overflowY:"",height:this.idealHeight||"",maxHeight:Math.max(0,n)}),(this.clippedHorizontally&&!s||this.clippedVertically&&!l)&&c.ui.Element.static.reconsiderScrollbars(this.$clippable[0]),this.clippedHorizontally=s,this.clippedVertically=l),this},c.ui.PopupWidget=function(t){c.ui.PopupWidget.super.call(this,t=t||{}),this.$body=$("<div>"),this.$popup=$("<div>"),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.ClippableElement.call(this,$.extend({$clippable:this.$body,$clippableContainer:this.$popup},t)),c.ui.mixin.FloatableElement.call(this,t),this.$anchor=$("<div>"),this.$container=t.$container,this.containerPadding=void 0!==t.containerPadding?t.containerPadding:10,this.autoClose=!!t.autoClose,this.transitionTimeout=null,this.anchored=!1,this.onDocumentMouseDownHandler=this.onDocumentMouseDown.bind(this),this.onDocumentKeyDownHandler=this.onDocumentKeyDown.bind(this),this.onTabKeyDownHandler=this.onTabKeyDown.bind(this),this.onShiftTabKeyDownHandler=this.onShiftTabKeyDown.bind(this),this.setSize(t.width,t.height),this.toggleAnchor(void 0===t.anchor||t.anchor),this.setAlignment(t.align||"center"),this.setPosition(t.position||"below"),this.setAutoFlip(void 0===t.autoFlip||t.autoFlip),this.setAutoCloseIgnore(t.$autoCloseIgnore),this.$body.addClass("oo-ui-popupWidget-body"),this.$anchor.addClass("oo-ui-popupWidget-anchor"),this.$popup.addClass("oo-ui-popupWidget-popup").append(this.$body),this.$element.addClass("oo-ui-popupWidget").append(this.$popup,this.$anchor),t.$content instanceof $&&this.$body.append(t.$content),this.padded=!!t.padded,t.padded&&this.$body.addClass("oo-ui-popupWidget-body-padded"),t.head&&(t.hideCloseButton||(this.closeButton=new c.ui.ButtonWidget({framed:!1,icon:"close",label:c.ui.msg("ooui-popup-widget-close-button-aria-label"),invisibleLabel:!0}),this.closeButton.connect(this,{click:"onCloseButtonClick"})),this.$head=$("<div>").addClass("oo-ui-popupWidget-head").append(this.$icon,this.$label,this.closeButton&&this.closeButton.$element),this.$popup.prepend(this.$head)),t.$footer&&(this.$footer=$("<div>").addClass("oo-ui-popupWidget-footer").append(t.$footer),this.$popup.append(this.$footer)),this.visible=!1,this.$element.addClass("oo-ui-element-hidden")},c.inheritClass(c.ui.PopupWidget,c.ui.Widget),c.mixinClass(c.ui.PopupWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.PopupWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.PopupWidget,c.ui.mixin.ClippableElement),c.mixinClass(c.ui.PopupWidget,c.ui.mixin.FloatableElement),c.ui.PopupWidget.prototype.onDocumentMouseDown=function(t){this.isVisible()&&!c.ui.contains(this.$element.add(this.$autoCloseIgnore).get(),t.target,!0)&&this.toggle(!1)},c.ui.PopupWidget.prototype.bindDocumentMouseDownListener=function(){this.getElementDocument().addEventListener("mousedown",this.onDocumentMouseDownHandler,!0),this.getElementDocument().addEventListener("click",this.onDocumentMouseDownHandler,!0)},c.ui.PopupWidget.prototype.onCloseButtonClick=function(){this.isVisible()&&this.toggle(!1)},c.ui.PopupWidget.prototype.unbindDocumentMouseDownListener=function(){this.getElementDocument().removeEventListener("mousedown",this.onDocumentMouseDownHandler,!0),this.getElementDocument().removeEventListener("click",this.onDocumentMouseDownHandler,!0)},c.ui.PopupWidget.prototype.onDocumentKeyDown=function(t){t.which===c.ui.Keys.ESCAPE&&this.isVisible()&&(this.toggle(!1),t.preventDefault(),t.stopPropagation())},c.ui.PopupWidget.prototype.bindDocumentKeyDownListener=function(){this.getElementDocument().addEventListener("keydown",this.onDocumentKeyDownHandler,!0)},c.ui.PopupWidget.prototype.unbindDocumentKeyDownListener=function(){this.getElementDocument().removeEventListener("keydown",this.onDocumentKeyDownHandler,!0)},c.ui.PopupWidget.prototype.onTabKeyDown=function(t){t.shiftKey||t.which!==c.ui.Keys.TAB||(t.preventDefault(),this.toggle(!1))},c.ui.PopupWidget.prototype.onShiftTabKeyDown=function(t){t.shiftKey&&t.which===c.ui.Keys.TAB&&(t.preventDefault(),this.toggle(!1))},c.ui.PopupWidget.prototype.toggleAnchor=function(t){t=void 0===t?!this.anchored:!!t,this.anchored!==t&&(this.$element.toggleClass("oo-ui-popupWidget-anchored oo-ui-popupWidget-anchored-"+this.anchorEdge,t),this.anchored=t)},c.ui.PopupWidget.prototype.setAnchorEdge=function(t){if(-1===["top","bottom","start","end"].indexOf(t))throw new Error("Invalid value for edge: "+t);null!==this.anchorEdge&&this.$element.removeClass("oo-ui-popupWidget-anchored-"+this.anchorEdge),this.anchorEdge=t,this.anchored&&this.$element.addClass("oo-ui-popupWidget-anchored-"+t)},c.ui.PopupWidget.prototype.hasAnchor=function(){return this.anchored},c.ui.PopupWidget.prototype.toggle=function(t){var e,i=(t=void 0===t?!this.isVisible():!!t)!==this.isVisible();return!t||this.warnedUnattached||this.isElementAttached()||(c.ui.warnDeprecation("PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM."),this.warnedUnattached=!0),t&&!this.$floatableContainer&&this.isElementAttached()&&this.setFloatableContainer(this.$element.parent()),i&&t&&this.autoFlip&&(this.isAutoFlipped=!1),c.ui.PopupWidget.super.prototype.toggle.call(this,t),i&&(this.togglePositioning(t&&!!this.$floatableContainer),i=c.ui.findFocusable(this.$element,!0),e=c.ui.findFocusable(this.$element,!1),t?(this.autoClose&&(this.bindDocumentMouseDownListener(),this.bindDocumentKeyDownListener(),i.on("keydown",this.onTabKeyDownHandler),e.on("keydown",this.onShiftTabKeyDownHandler)),this.updateDimensions(),this.toggleClipping(!0),this.autoFlip&&("above"!==this.popupPosition&&"below"!==this.popupPosition||(this.isClippedVertically()||this.isFloatableOutOfView())&&(t=this.$element.height(),this.isAutoFlipped=!this.isAutoFlipped,this.position(),this.isClippedVertically()||this.isFloatableOutOfView())&&this.$element.height()<t&&(this.isAutoFlipped=!this.isAutoFlipped,this.position()),"before"!==this.popupPosition&&"after"!==this.popupPosition||(this.isClippedHorizontally()||this.isFloatableOutOfView())&&(t=this.$element.width(),this.isAutoFlipped=!this.isAutoFlipped,this.toggleClipping(!1),this.position(),this.toggleClipping(!0),this.isClippedHorizontally()||this.isFloatableOutOfView())&&this.$element.width()<t&&(this.isAutoFlipped=!this.isAutoFlipped,this.toggleClipping(!1),this.position(),this.toggleClipping(!0))),this.emit("ready")):(this.toggleClipping(!1),this.autoClose&&(i.off("keydown",this.onTabKeyDownHandler),e.off("keydown",this.onShiftTabKeyDownHandler),this.unbindDocumentMouseDownListener(),this.unbindDocumentKeyDownListener()),this.emit("closing"))),this},c.ui.PopupWidget.prototype.setSize=function(t,e,i){this.width=void 0!==t?t:320,this.height=void 0!==e?e:null,this.isVisible()&&this.updateDimensions(i)},c.ui.PopupWidget.prototype.updateDimensions=function(t){var e=this;clearTimeout(this.transitionTimeout),t&&this.$element.addClass("oo-ui-popupWidget-transitioning"),this.position(),t?this.transitionTimeout=setTimeout(function(){e.$element.removeClass("oo-ui-popupWidget-transitioning")},200):this.$element.removeClass("oo-ui-popupWidget-transitioning")},c.ui.PopupWidget.prototype.computePosition=function(){var t,e={},i={left:"",right:"",top:"",bottom:""},o={forwards:"start",center:"center",backwards:this.anchored?"before":"end"},n=(this.$container||(this.$container=$(this.getClosestScrollableElementContainer())),this.$container.css("direction")),s=(this.setIdealSize(null!==this.width?this.width-(this.padded?24:0):"auto",null!==this.height?this.height-(this.padded?10:0):"auto"),{ltr:{"force-left":"backwards","force-right":"forwards"},rtl:{"force-left":"forwards","force-right":"backwards"}}[n][this.align]||this.align),l=this.popupPosition,u="before"===(l=this.isAutoFlipped?{above:"below",below:"above",before:"after",after:"before"}[l]:l)||"after"===l,a=u?"top":"rtl"===n?"right":"left",n=u?"bottom":"rtl"===n?"left":"right",r=u?"top":"left",h=u?"bottom":"right",d=u?"Height":"Width",p=u?this.$popup.height():this.$popup.width(),o=(this.setAnchorEdge({above:"bottom",below:"top",before:"end",after:"start"}[l]),this.horizontalPosition=u?l:o[s],this.verticalPosition=u?{forwards:"top",center:"center",backwards:"bottom"}[s]:l,c.ui.mixin.FloatableElement.prototype.computePosition.call(this)),s=u?""!==o.top?"top":"bottom":""!==o.left?"left":"right",l=this.$floatableContainer.offset(),u=(l[h]=l[r]+this.$floatableContainer["outer"+d](),this.$element.offsetParent()[0]===document.documentElement?{top:0,left:0}:this.$element.offsetParent().offset()),l=(s==r?(e[r]=u[r]+o[r],e[h]=e[r]+p):(e[h]=u[r]+this.$element.offsetParent()["inner"+d]()-o[h],e[r]=e[h]-p),n=this.anchored?(t=(a==h?-1:1)*((l[a]+l[n])/2-e[a]),u=this.$anchor[0]["scroll"+d],t+(l=parseFloat(this.$anchor.css("margin-"+a)))<2*u?(s==a?-1:1)*(2*u-(t+l)):p-2*u<t+l?(s==n?-1:1)*(t+l-(p-2*u)):0):0,this.$container[0]===document.documentElement?{top:0,left:0}:this.$container.offset());return l[h]=l[r]+this.$container["inner"+d](),this.$container[0]===document.documentElement&&(p=c.ui.getViewportSpacing(),l[r]+=p[r],l[h]-=p[h]),e[r]+=(s==r?1:-1)*n,e[h]+=(s==r?1:-1)*n,l[r]+this.containerPadding>e[r]?n+=(s==r?1:-1)*(l[r]+this.containerPadding-e[r]):l[h]-this.containerPadding<e[h]&&(n+=(s==h?1:-1)*(e[h]-(l[h]-this.containerPadding))),this.anchored&&(i[a]=t+=(s==a?-1:1)*n,this.$anchor.css(i)),o[s]+=n,o},c.ui.PopupWidget.prototype.setAlignment=function(t){-1<["force-left","force-right","backwards","forwards","center"].indexOf(t)?this.align=t:this.align="center",this.position()},c.ui.PopupWidget.prototype.getAlignment=function(){return this.align},c.ui.PopupWidget.prototype.setPosition=function(t){-1===["above","below","before","after"].indexOf(t)&&(t="below"),this.popupPosition=t,this.position()},c.ui.PopupWidget.prototype.getPosition=function(){return this.popupPosition},c.ui.PopupWidget.prototype.setAutoFlip=function(t){this.autoFlip!==(t=!!t)&&(this.autoFlip=t)},c.ui.PopupWidget.prototype.setAutoCloseIgnore=function(t){this.$autoCloseIgnore=t},c.ui.PopupWidget.prototype.getBodyId=function(){var t=this.$body.attr("id");return void 0===t&&(t=c.ui.generateElementId(),this.$body.attr("id",t)),t},c.ui.mixin.PopupElement=function(t){t=t||{},this.popup=new c.ui.PopupWidget($.extend({autoClose:!0,$floatableContainer:this.$element},t.popup,{$autoCloseIgnore:this.$element.add(t.popup&&t.popup.$autoCloseIgnore)}))},c.ui.mixin.PopupElement.prototype.getPopup=function(){return this.popup},c.ui.PopupButtonWidget=function(t){c.ui.PopupButtonWidget.super.call(this,t=t||{}),c.ui.mixin.PopupElement.call(this,t),this.$overlay=(!0===t.$overlay?c.ui.getDefaultOverlay():t.$overlay)||this.$element,this.connect(this,{click:"onAction"}),this.$element.addClass("oo-ui-popupButtonWidget").attr({"aria-haspopup":"dialog","aria-owns":this.popup.getElementId()}),this.popup.$element.addClass("oo-ui-popupButtonWidget-popup").attr({role:"dialog","aria-describedby":this.getElementId()}).toggleClass("oo-ui-popupButtonWidget-framed-popup",this.isFramed()).toggleClass("oo-ui-popupButtonWidget-frameless-popup",!this.isFramed()),this.$overlay.append(this.popup.$element)},c.inheritClass(c.ui.PopupButtonWidget,c.ui.ButtonWidget),c.mixinClass(c.ui.PopupButtonWidget,c.ui.mixin.PopupElement),c.ui.PopupButtonWidget.prototype.onAction=function(){this.popup.toggle()},c.ui.mixin.GroupWidget=function(t){c.ui.mixin.GroupElement.call(this,t)},c.mixinClass(c.ui.mixin.GroupWidget,c.ui.mixin.GroupElement),c.ui.mixin.GroupWidget.prototype.setDisabled=function(t){if(c.ui.Widget.prototype.setDisabled.call(this,t),this.items)for(var e=0,i=this.items.length;e<i;e++)this.items[e].updateDisabled();return this},c.ui.mixin.ItemWidget=function(){},c.ui.mixin.ItemWidget.prototype.isDisabled=function(){return this.disabled||this.elementGroup instanceof c.ui.Widget&&this.elementGroup.isDisabled()},c.ui.mixin.ItemWidget.prototype.setElementGroup=function(t){return c.ui.Element.prototype.setElementGroup.call(this,t),this.updateDisabled(),this},c.ui.OptionWidget=function(t){c.ui.OptionWidget.super.call(this,t=t||{}),c.ui.mixin.ItemWidget.call(this),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.FlaggedElement.call(this,t),c.ui.mixin.AccessKeyedElement.call(this,t),c.ui.mixin.TitledElement.call(this,t),this.highlighted=!1,this.pressed=!1,this.setSelected(!!t.selected),this.$element.data("oo-ui-optionWidget",this).attr({tabindex:"-1",role:"option"}).addClass("oo-ui-optionWidget").append(this.$label)},c.inheritClass(c.ui.OptionWidget,c.ui.Widget),c.mixinClass(c.ui.OptionWidget,c.ui.mixin.ItemWidget),c.mixinClass(c.ui.OptionWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.OptionWidget,c.ui.mixin.FlaggedElement),c.mixinClass(c.ui.OptionWidget,c.ui.mixin.AccessKeyedElement),c.mixinClass(c.ui.OptionWidget,c.ui.mixin.TitledElement),c.ui.OptionWidget.static.selectable=!0,c.ui.OptionWidget.static.highlightable=!0,c.ui.OptionWidget.static.pressable=!0,c.ui.OptionWidget.static.scrollIntoViewOnSelect=!1,c.ui.OptionWidget.prototype.isSelectable=function(){return this.constructor.static.selectable&&!this.disabled&&this.isVisible()},c.ui.OptionWidget.prototype.isHighlightable=function(){return this.constructor.static.highlightable&&!this.disabled&&this.isVisible()},c.ui.OptionWidget.prototype.isPressable=function(){return this.constructor.static.pressable&&!this.disabled&&this.isVisible()},c.ui.OptionWidget.prototype.isSelected=function(){return this.selected},c.ui.OptionWidget.prototype.isHighlighted=function(){return this.highlighted},c.ui.OptionWidget.prototype.isPressed=function(){return this.pressed},c.ui.OptionWidget.prototype.setSelected=function(t){return this.constructor.static.selectable&&(this.selected=!!t,this.$element.toggleClass("oo-ui-optionWidget-selected",t).attr("aria-selected",this.selected.toString()),t&&this.constructor.static.scrollIntoViewOnSelect&&this.scrollElementIntoView(),this.updateThemeClasses()),this},c.ui.OptionWidget.prototype.setHighlighted=function(t){return this.constructor.static.highlightable&&(this.highlighted=!!t,this.$element.toggleClass("oo-ui-optionWidget-highlighted",t),this.updateThemeClasses()),this},c.ui.OptionWidget.prototype.setPressed=function(t){return this.constructor.static.pressable&&(this.pressed=!!t,this.$element.toggleClass("oo-ui-optionWidget-pressed",t),this.updateThemeClasses()),this},c.ui.OptionWidget.prototype.getMatchText=function(){var t=this.getLabel();return"string"==typeof t?t:this.$label.text()},c.ui.SelectWidget=function(t){c.ui.SelectWidget.super.call(this,t=t||{}),c.ui.mixin.GroupWidget.call(this,$.extend({$group:this.$element},t)),this.pressed=!1,this.selecting=null,this.multiselect=!!t.multiselect,this.onDocumentMouseUpHandler=this.onDocumentMouseUp.bind(this),this.onDocumentMouseMoveHandler=this.onDocumentMouseMove.bind(this),this.onDocumentKeyDownHandler=this.onDocumentKeyDown.bind(this),this.onDocumentKeyPressHandler=this.onDocumentKeyPress.bind(this),this.keyPressBuffer="",this.keyPressBufferTimer=null,this.blockMouseOverEvents=0,this.connect(this,{toggle:"onToggle"}),this.$element.on({focusin:this.onFocus.bind(this),mousedown:this.onMouseDown.bind(this),mouseover:this.onMouseOver.bind(this),mouseleave:this.onMouseLeave.bind(this)}),this.$element.addClass("oo-ui-selectWidget oo-ui-selectWidget-unpressed").attr({role:"listbox","aria-multiselectable":this.multiselect.toString()}),this.setFocusOwner(this.$element),this.addItems(t.items||[])},c.inheritClass(c.ui.SelectWidget,c.ui.Widget),c.mixinClass(c.ui.SelectWidget,c.ui.mixin.GroupWidget),c.ui.SelectWidget.static.handleNavigationKeys=!1,c.ui.SelectWidget.static.listWrapsAround=!0,c.ui.SelectWidget.static.normalizeForMatching=function(t){return t.trim().replace(/\s+/," ").toLowerCase().normalize()},c.ui.SelectWidget.prototype.onFocus=function(t){var e;if(t.target===this.$element[0])this.findFirstSelectedItem()||(e=this.findFirstSelectableItem());else{if(-1!==t.target.tabIndex)return;if((e=this.findTargetItem(t))&&!e.isHighlightable()&&!e.isSelectable())return}e&&(e.constructor.static.highlightable?this.highlightItem(e):this.selectItem(e)),t.target!==this.$element[0]&&this.$focusOwner.trigger("focus")},c.ui.SelectWidget.prototype.onMouseDown=function(t){return this.isDisabled()||t.which!==c.ui.MouseButtons.LEFT||(this.togglePressed(!0),(t=this.findTargetItem(t))&&t.isSelectable()&&(this.pressItem(t),this.selecting=t,this.getElementDocument().addEventListener("mouseup",this.onDocumentMouseUpHandler,!0),this.getElementDocument().addEventListener("mousemove",this.onDocumentMouseMoveHandler,!0))),!1},c.ui.SelectWidget.prototype.onDocumentMouseUp=function(t){var e;return this.togglePressed(!1),this.selecting||(e=this.findTargetItem(t))&&e.isSelectable()&&(this.selecting=e),!this.isDisabled()&&t.which===c.ui.MouseButtons.LEFT&&this.selecting&&(this.pressItem(null),this.chooseItem(this.selecting),this.selecting=null),this.getElementDocument().removeEventListener("mouseup",this.onDocumentMouseUpHandler,!0),this.getElementDocument().removeEventListener("mousemove",this.onDocumentMouseMoveHandler,!0),!1},c.ui.SelectWidget.prototype.onDocumentMouseMove=function(t){!this.isDisabled()&&this.pressed&&(t=this.findTargetItem(t))&&t!==this.selecting&&t.isSelectable()&&(this.pressItem(t),this.selecting=t)},c.ui.SelectWidget.prototype.onMouseOver=function(t){if(!this.blockMouseOverEvents)return this.isDisabled()||(t=this.findTargetItem(t),this.highlightItem(t&&t.isHighlightable()?t:null)),!1},c.ui.SelectWidget.prototype.onMouseLeave=function(){return this.isDisabled()||this.highlightItem(null),!1},c.ui.SelectWidget.prototype.onDocumentKeyDown=function(t){var e,i=!1,o=this.isVisible()&&this.findHighlightedItem()||!this.multiselect&&this.findSelectedItem();if(!this.isDisabled()){switch(t.keyCode){case c.ui.Keys.ENTER:o&&(this.chooseItem(o),i=!0);break;case c.ui.Keys.UP:case c.ui.Keys.LEFT:case c.ui.Keys.DOWN:case c.ui.Keys.RIGHT:this.clearKeyPressBuffer(),e=this.findRelativeSelectableItem(o,t.keyCode===c.ui.Keys.UP||t.keyCode===c.ui.Keys.LEFT?-1:1,null,this.constructor.static.listWrapsAround),i=!0;break;case c.ui.Keys.HOME:case c.ui.Keys.END:this.constructor.static.handleNavigationKeys&&(this.clearKeyPressBuffer(),e=this.findRelativeSelectableItem(null,t.keyCode===c.ui.Keys.HOME?1:-1,null,this.constructor.static.listWrapsAround),i=!0);break;case c.ui.Keys.PAGEUP:case c.ui.Keys.PAGEDOWN:this.constructor.static.handleNavigationKeys&&(this.clearKeyPressBuffer(),e=this.findRelativeSelectableItem(o,t.keyCode===c.ui.Keys.PAGEUP?-10:10,null,this.constructor.static.listWrapsAround),i=!0);break;case c.ui.Keys.ESCAPE:case c.ui.Keys.TAB:o&&o.setHighlighted(!1),this.unbindDocumentKeyDownListener(),this.unbindDocumentKeyPressListener(),i=!1}e&&(this.isVisible()&&e.constructor.static.highlightable?this.highlightItem(e):(this.screenReaderMode&&this.highlightItem(e),this.chooseItem(e)),this.scrollItemIntoView(e)),i&&(t.preventDefault(),t.stopPropagation())}},c.ui.SelectWidget.prototype.bindDocumentKeyDownListener=function(){this.getElementDocument().addEventListener("keydown",this.onDocumentKeyDownHandler,!0)},c.ui.SelectWidget.prototype.unbindDocumentKeyDownListener=function(){this.getElementDocument().removeEventListener("keydown",this.onDocumentKeyDownHandler,!0)},c.ui.SelectWidget.prototype.scrollItemIntoView=function(t){var e=this;this.blockMouseOverEvents++,t.scrollElementIntoView().done(function(){setTimeout(function(){e.blockMouseOverEvents--},200)})},c.ui.SelectWidget.prototype.clearKeyPressBuffer=function(){this.keyPressBufferTimer&&(clearTimeout(this.keyPressBufferTimer),this.keyPressBufferTimer=null),this.keyPressBuffer=""},c.ui.SelectWidget.prototype.onDocumentKeyPress=function(t){if(!t.charCode)return t.keyCode===c.ui.Keys.BACKSPACE&&""!==this.keyPressBuffer?(this.keyPressBuffer=this.keyPressBuffer.slice(0,this.keyPressBuffer.length-1),!1):void 0;var e=String.fromCodePoint(t.charCode),i=(this.keyPressBufferTimer&&clearTimeout(this.keyPressBufferTimer),this.keyPressBufferTimer=setTimeout(this.clearKeyPressBuffer.bind(this),1500),this.isVisible()&&this.findHighlightedItem()||!this.multiselect&&this.findSelectedItem()),e=(this.keyPressBuffer===e?i=i&&this.findRelativeSelectableItem(i,1):this.keyPressBuffer+=e,this.getItemMatcher(this.keyPressBuffer,!1));(i=i&&e(i)?i:this.findRelativeSelectableItem(i,1,e))&&(this.isVisible()&&i.constructor.static.highlightable?this.highlightItem(i):(this.screenReaderMode&&this.highlightItem(i),this.chooseItem(i)),this.scrollItemIntoView(i)),t.preventDefault(),t.stopPropagation()},c.ui.SelectWidget.prototype.getItemMatcher=function(t,i){var o=this.constructor.static.normalizeForMatching,n=o(t);return!0===i&&(i="exact"),function(t){var e=o(t.getMatchText());if(""===n)return"exact"!==i;switch(i){case"exact":return e===n;case"substring":return-1!==e.indexOf(n);default:return 0===e.indexOf(n)}}},c.ui.SelectWidget.prototype.bindDocumentKeyPressListener=function(){this.getElementDocument().addEventListener("keypress",this.onDocumentKeyPressHandler,!0)},c.ui.SelectWidget.prototype.unbindDocumentKeyPressListener=function(){this.getElementDocument().removeEventListener("keypress",this.onDocumentKeyPressHandler,!0),this.clearKeyPressBuffer()},c.ui.SelectWidget.prototype.onToggle=function(t){t||this.clearKeyPressBuffer()},c.ui.SelectWidget.prototype.findTargetItem=function(t){t=$(t.target).closest(".oo-ui-optionWidget");return t.closest(".oo-ui-selectWidget").is(this.$element)&&t.data("oo-ui-optionWidget")||null},c.ui.SelectWidget.prototype.findFirstSelectedItem=function(){for(var t=0;t<this.items.length;t++)if(this.items[t].isSelected())return this.items[t];return null},c.ui.SelectWidget.prototype.findSelectedItems=function(){return this.multiselect?this.items.filter(function(t){return t.isSelected()}):this.findFirstSelectedItem()},c.ui.SelectWidget.prototype.findSelectedItem=function(){return this.findSelectedItems()},c.ui.SelectWidget.prototype.findHighlightedItem=function(){for(var t=0;t<this.items.length;t++)if(this.items[t].isHighlighted())return this.items[t];return null},c.ui.SelectWidget.prototype.togglePressed=function(t){(t=void 0===t?!this.pressed:t)!==this.pressed&&(this.$element.toggleClass("oo-ui-selectWidget-pressed",t).toggleClass("oo-ui-selectWidget-unpressed",!t),this.pressed=t)},c.ui.SelectWidget.prototype.highlightItem=function(t){if(!t||!t.isHighlighted()){for(var e=!1,i=0;i<this.items.length;i++){var o=this.items[i]===t;if(this.items[i].isHighlighted()!==o){if(this.items[i].setHighlighted(o),e)break;e=!o||this.items[i].isHighlighted()}}e&&(t?this.$focusOwner.attr("aria-activedescendant",t.getElementId()):this.$focusOwner.removeAttr("aria-activedescendant"),this.emit("highlight",t))}return this},c.ui.SelectWidget.prototype.getItemFromLabel=function(t,e){var i,o=this.items.length,n=this.getItemMatcher(t,"exact");for(l=0;l<o;l++)if((i=this.items[l])instanceof c.ui.OptionWidget&&i.isSelectable()&&n(i))return i;if(e){for(var s=null,n=this.getItemMatcher(t,"prefix"),l=0;l<o;l++)if((i=this.items[l])instanceof c.ui.OptionWidget&&i.isSelectable()&&n(i)){if(s)return null;s=i}if(s)return s}return null},c.ui.SelectWidget.prototype.selectItemByLabel=function(t,e){e=this.getItemFromLabel(t,!!e);return void 0!==t&&e?this.selectItem(e):this.selectItem()},c.ui.SelectWidget.prototype.selectItemByData=function(t){var e=this.findItemFromData(t);return void 0!==t&&e?this.selectItem(e):this.selectItem()},c.ui.SelectWidget.prototype.unselectItem=function(t){return t?t.isSelected()&&(t.setSelected(!1),this.emit("select",this.findSelectedItems())):this.selectItem(),this},c.ui.SelectWidget.prototype.selectItem=function(t){if(t){if(t.isSelected())return this;if(this.multiselect)return t.setSelected(!0),this.emit("select",this.findSelectedItems()),this}for(var e=!1,i=0;i<this.items.length;i++){var o=this.items[i]===t;if(this.items[i].isSelected()!==o){if(this.items[i].setSelected(o),e&&!this.multiselect)break;e=!o||this.items[i].isSelected()}}return e&&(this.multiselect||!t||t.constructor.static.highlightable||this.$focusOwner.attr("aria-activedescendant",t.getElementId()),this.emit("select",this.findSelectedItems())),this},c.ui.SelectWidget.prototype.pressItem=function(t){if(!t||!t.isPressed()){for(var e=!1,i=0;i<this.items.length;i++){var o=this.items[i]===t;if(this.items[i].isPressed()!==o){if(this.items[i].setPressed(o),e)break;e=!o||this.items[i].isPressed()}}e&&this.emit("press",t)}return this},c.ui.SelectWidget.prototype.chooseItem=function(t){return t&&(this.multiselect&&t.isSelected()?this.unselectItem(t):this.selectItem(t),this.emit("choose",t,t.isSelected())),this},c.ui.SelectWidget.prototype.findRelativeSelectableItem=function(t,e,i,o){for(var n,s=0<e?1:-1,l=this.items.length,u=(void 0===o&&(o=!0),t instanceof c.ui.OptionWidget?n=this.items.indexOf(t):(n=0<e?0:l-1,e-=s),t),a=null,r=0;r<l&&((t=this.items[n])instanceof c.ui.OptionWidget&&t.isSelectable()&&(!i||i(t))&&(a=t),0!==e||!a||a===u);r++){if((n+=s)<0||l<=n){if(!o)break;n=(n+l)%l}0!==e&&(e-=s)}return a},c.ui.SelectWidget.prototype.findFirstSelectableItem=function(){return this.findRelativeSelectableItem(null,1)},c.ui.SelectWidget.prototype.addItems=function(t,e){return t&&0!==t.length&&(c.ui.mixin.GroupWidget.prototype.addItems.call(this,t,e),this.emit("add",t,void 0===e?this.items.length-t.length-1:e)),this},c.ui.SelectWidget.prototype.removeItems=function(t){for(var e=0;e<t.length;e++)t[e].isSelected()&&this.selectItem(null);return c.ui.mixin.GroupWidget.prototype.removeItems.call(this,t),this.emit("remove",t),this},c.ui.SelectWidget.prototype.clearItems=function(){var t=this.items.slice();return c.ui.mixin.GroupWidget.prototype.clearItems.call(this),this.selectItem(null),this.emit("remove",t),this},c.ui.SelectWidget.prototype.setFocusOwner=function(t){this.$focusOwner=t},c.ui.DecoratedOptionWidget=function(t){c.ui.DecoratedOptionWidget.super.call(this,t),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.IndicatorElement.call(this,t),this.$element.addClass("oo-ui-decoratedOptionWidget").prepend(this.$icon).append(this.$indicator)},c.inheritClass(c.ui.DecoratedOptionWidget,c.ui.OptionWidget),c.mixinClass(c.ui.DecoratedOptionWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.DecoratedOptionWidget,c.ui.mixin.IndicatorElement),c.ui.MenuOptionWidget=function(t){c.ui.MenuOptionWidget.super.call(this,t),this.checkIcon=new c.ui.IconWidget({icon:"check",classes:["oo-ui-menuOptionWidget-checkIcon"]}),this.$element.prepend(this.checkIcon.$element).addClass("oo-ui-menuOptionWidget")},c.inheritClass(c.ui.MenuOptionWidget,c.ui.DecoratedOptionWidget),c.ui.MenuOptionWidget.static.scrollIntoViewOnSelect=!0,c.ui.MenuSectionOptionWidget=function(t){c.ui.MenuSectionOptionWidget.super.call(this,t),this.$element.addClass("oo-ui-menuSectionOptionWidget").removeAttr("role aria-selected"),this.selected=!1},c.inheritClass(c.ui.MenuSectionOptionWidget,c.ui.DecoratedOptionWidget),c.ui.MenuSectionOptionWidget.static.selectable=!1,c.ui.MenuSectionOptionWidget.static.highlightable=!1,c.ui.MenuSelectWidget=function(t){c.ui.MenuSelectWidget.super.call(this,t=t||{}),c.ui.mixin.ClippableElement.call(this,$.extend({$clippable:this.$group},t)),c.ui.mixin.FloatableElement.call(this,t),this.originalVerticalPosition=this.verticalPosition,this.autoHide=void 0===t.autoHide||!!t.autoHide,this.hideOnChoose=void 0===t.hideOnChoose||!!t.hideOnChoose,this.filterFromInput=!!t.filterFromInput,this.previouslySelectedValue=null,this.$input=t.$input||(t.input?t.input.$input:null),this.$widget=t.widget?t.widget.$element:null,this.$autoCloseIgnore=t.$autoCloseIgnore||$([]),this.onDocumentMouseDownHandler=this.onDocumentMouseDown.bind(this),this.onInputEditHandler=c.ui.debounce(this.updateItemVisibility.bind(this),100),this.highlightOnFilter=!!t.highlightOnFilter,this.lastHighlightedItem=null,this.width=t.width,this.filterMode=t.filterMode,this.screenReaderMode=!1,this.$element.addClass("oo-ui-menuSelectWidget"),t.widget&&this.setFocusOwner(t.widget.$tabIndexed),this.visible=!1,this.$element.addClass("oo-ui-element-hidden"),this.$focusOwner.attr("aria-expanded","false")},c.inheritClass(c.ui.MenuSelectWidget,c.ui.SelectWidget),c.mixinClass(c.ui.MenuSelectWidget,c.ui.mixin.ClippableElement),c.mixinClass(c.ui.MenuSelectWidget,c.ui.mixin.FloatableElement),c.ui.MenuSelectWidget.static.handleNavigationKeys=!0,c.ui.MenuSelectWidget.static.listWrapsAround=!1,c.ui.MenuSelectWidget.static.flippedPositions={below:"above",above:"below",top:"bottom",bottom:"top"},c.ui.MenuSelectWidget.prototype.onDocumentMouseDown=function(t){this.isVisible()&&!c.ui.contains(this.$element.add(this.$widget).add(this.$autoCloseIgnore).get(),t.target,!0)&&this.toggle(!1)},c.ui.MenuSelectWidget.prototype.onDocumentKeyDown=function(t){var e=!1,i=this.findHighlightedItem()||this.findFirstSelectedItem();if(!this.isDisabled()&&this.getVisibleItems().length){switch(t.keyCode){case c.ui.Keys.ENTER:this.isVisible()&&c.ui.MenuSelectWidget.super.prototype.onDocumentKeyDown.call(this,t);break;case c.ui.Keys.TAB:this.isVisible()&&(i&&!i.isSelected()&&(this.chooseItem(i),e=!0),this.toggle(!1));break;case c.ui.Keys.LEFT:case c.ui.Keys.RIGHT:case c.ui.Keys.HOME:case c.ui.Keys.END:this.$input||c.ui.MenuSelectWidget.super.prototype.onDocumentKeyDown.call(this,t);break;case c.ui.Keys.ESCAPE:this.isVisible()&&(i&&!this.multiselect&&i.setHighlighted(!1),this.toggle(!1),e=!0);break;default:return c.ui.MenuSelectWidget.super.prototype.onDocumentKeyDown.call(this,t)}e&&(t.preventDefault(),t.stopPropagation())}},c.ui.MenuSelectWidget.prototype.getVisibleItems=function(){return this.getItems().filter(function(t){return t.isVisible()})},c.ui.MenuSelectWidget.prototype.updateItemVisibility=function(){if(this.filterFromInput&&this.$input){for(var t,e,i,o,n=!1,s=!this.isVisible()||this.previouslySelectedValue===this.$input.val(),l=s?null:this.getItemMatcher(this.$input.val(),this.filterMode),u=0;u<this.items.length;u++)(o=this.items[u])instanceof c.ui.MenuSectionOptionWidget?(t&&t.toggle(s||!i),t=o,i=!0):o instanceof c.ui.OptionWidget&&(e=!l||l(o),n=n||e,i=i&&!e,o.toggle(e));t&&t.toggle(s||!i),n||this.highlightItem(null),this.$element.toggleClass("oo-ui-menuSelectWidget-invisible",!n),!this.highlightOnFilter||this.lastHighlightedItem&&this.lastHighlightedItem.isSelectable()||!this.isVisible()||(o=this.findFirstSelectableItem(),this.highlightItem(o),this.lastHighlightedItem=o)}this.clip()},c.ui.MenuSelectWidget.prototype.bindDocumentKeyDownListener=function(){this.$input?this.$input.on("keydown",this.onDocumentKeyDownHandler):c.ui.MenuSelectWidget.super.prototype.bindDocumentKeyDownListener.call(this)},c.ui.MenuSelectWidget.prototype.unbindDocumentKeyDownListener=function(){this.$input?this.$input.off("keydown",this.onDocumentKeyDownHandler):c.ui.MenuSelectWidget.super.prototype.unbindDocumentKeyDownListener.call(this)},c.ui.MenuSelectWidget.prototype.bindDocumentKeyPressListener=function(){this.$input?this.filterFromInput&&(this.$input.on("keydown mouseup cut paste change input select",this.onInputEditHandler),this.$input.one("keypress",function(){this.previouslySelectedValue=null}.bind(this)),this.previouslySelectedValue=this.$input.val(),this.updateItemVisibility()):c.ui.MenuSelectWidget.super.prototype.bindDocumentKeyPressListener.call(this)},c.ui.MenuSelectWidget.prototype.unbindDocumentKeyPressListener=function(){this.$input?this.filterFromInput&&(this.$input.off("keydown mouseup cut paste change input select",this.onInputEditHandler),this.updateItemVisibility()):c.ui.MenuSelectWidget.super.prototype.unbindDocumentKeyPressListener.call(this)},c.ui.MenuSelectWidget.prototype.chooseItem=function(t){return c.ui.MenuSelectWidget.super.prototype.chooseItem.call(this,t),this.hideOnChoose&&this.toggle(!1),this},c.ui.MenuSelectWidget.prototype.addItems=function(t,e){return t&&0!==t.length&&(c.ui.MenuSelectWidget.super.prototype.addItems.call(this,t,e),this.updateItemVisibility()),this},c.ui.MenuSelectWidget.prototype.removeItems=function(t){return c.ui.MenuSelectWidget.super.prototype.removeItems.call(this,t),this.updateItemVisibility(),this},c.ui.MenuSelectWidget.prototype.clearItems=function(){return c.ui.MenuSelectWidget.super.prototype.clearItems.call(this),this.updateItemVisibility(),this},c.ui.MenuSelectWidget.prototype.toggleScreenReaderMode=function(t){this.screenReaderMode=t=!!t,this.$element.toggleClass("oo-ui-menuSelectWidget-screenReaderMode",this.screenReaderMode),t?(this.bindDocumentKeyDownListener(),this.bindDocumentKeyPressListener()):(this.$focusOwner.removeAttr("aria-activedescendant"),this.unbindDocumentKeyDownListener(),this.unbindDocumentKeyPressListener())},c.ui.MenuSelectWidget.prototype.toggle=function(t){var e=(t=(void 0===t?!this.visible:!!t)&&!!this.items.length)!==this.isVisible();return!t||this.warnedUnattached||this.isElementAttached()||(c.ui.warnDeprecation("MenuSelectWidget#toggle: Before calling this method, the menu must be attached to the DOM."),this.warnedUnattached=!0),e&&t&&this.setVerticalPosition(this.originalVerticalPosition),c.ui.MenuSelectWidget.super.prototype.toggle.call(this,t),e&&(t?(this.width?this.setIdealSize(this.width):this.$floatableContainer&&(this.$clippable.css("width","auto"),this.setIdealSize(this.$floatableContainer[0].offsetWidth>this.$clippable[0].offsetWidth?this.$floatableContainer[0].offsetWidth:"auto"),this.$clippable.css("width","")),this.togglePositioning(!!this.$floatableContainer),this.toggleClipping(!0),this.screenReaderMode||(this.bindDocumentKeyDownListener(),this.bindDocumentKeyPressListener()),(this.isClippedVertically()||this.isFloatableOutOfView())&&"center"!==this.originalVerticalPosition&&(e=this.$element.height(),this.setVerticalPosition(this.constructor.static.flippedPositions[this.originalVerticalPosition]),this.isClippedVertically()||this.isFloatableOutOfView())&&this.$element.height()<e&&this.setVerticalPosition(this.originalVerticalPosition),this.$focusOwner.attr("aria-expanded","true"),this.$focusOwner.attr("aria-owns",this.getElementId()),(t=!this.multiselect&&this.findSelectedItem())&&(this.$focusOwner.attr("aria-activedescendant",t.getElementId()),t.scrollElementIntoView({duration:0})),this.autoHide&&this.getElementDocument().addEventListener("mousedown",this.onDocumentMouseDownHandler,!0),this.emit("ready")):(this.$focusOwner.removeAttr("aria-activedescendant"),this.screenReaderMode||(this.unbindDocumentKeyDownListener(),this.unbindDocumentKeyPressListener()),this.$focusOwner.attr("aria-expanded","false"),this.$focusOwner.removeAttr("aria-owns"),this.getElementDocument().removeEventListener("mousedown",this.onDocumentMouseDownHandler,!0),this.togglePositioning(!1),this.toggleClipping(!1),this.lastHighlightedItem=null)),this},c.ui.MenuSelectWidget.prototype.scrollToTop=function(){this.$element.scrollTop(0)},c.ui.DropdownWidget=function(t){t=$.extend({indicator:"down"},t),c.ui.DropdownWidget.super.call(this,t),this.$handle=$("<span>"),this.$overlay=(!0===t.$overlay?c.ui.getDefaultOverlay():t.$overlay)||this.$element,c.ui.mixin.IconElement.call(this,t),c.ui.mixin.IndicatorElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$label},t)),c.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$handle},t)),this.menu=new c.ui.MenuSelectWidget($.extend({widget:this,$floatableContainer:this.$element},t.menu)),this.$handle.on({click:this.onClick.bind(this),keydown:this.onKeyDown.bind(this),focus:this.onFocus.bind(this),blur:this.onBlur.bind(this)}),this.menu.connect(this,{select:"onMenuSelect",toggle:"onMenuToggle"});t=c.ui.generateElementId();this.setLabelId(t),this.$label.attr({role:"textbox","aria-readonly":"true"}),this.$handle.addClass("oo-ui-dropdownWidget-handle").append(this.$icon,this.$label,this.$indicator).attr({role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-haspopup":"true","aria-labelledby":t}),this.$element.addClass("oo-ui-dropdownWidget").append(this.$handle),this.$overlay.append(this.menu.$element)},c.inheritClass(c.ui.DropdownWidget,c.ui.Widget),c.mixinClass(c.ui.DropdownWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.DropdownWidget,c.ui.mixin.IndicatorElement),c.mixinClass(c.ui.DropdownWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.DropdownWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.DropdownWidget,c.ui.mixin.TabIndexedElement),c.ui.DropdownWidget.prototype.getMenu=function(){return this.menu},c.ui.DropdownWidget.prototype.onMenuSelect=function(t){t?((t=t.getLabel())instanceof $&&(t=t.clone()),this.setLabel(t)):this.setLabel(null)},c.ui.DropdownWidget.prototype.onMenuToggle=function(t){this.$element.toggleClass("oo-ui-dropdownWidget-open",t)},c.ui.DropdownWidget.prototype.onClick=function(t){return this.isDisabled()||t.which!==c.ui.MouseButtons.LEFT||this.menu.toggle(),!1},c.ui.DropdownWidget.prototype.onKeyDown=function(t){if(!this.isDisabled())switch(t.keyCode){case c.ui.Keys.ENTER:return this.menu.toggle(),!1;case c.ui.Keys.SPACE:if(""===this.menu.keyPressBuffer)return this.menu.toggle(),!1}},c.ui.DropdownWidget.prototype.onFocus=function(){this.menu.toggleScreenReaderMode(!0)},c.ui.DropdownWidget.prototype.onBlur=function(){this.menu.toggleScreenReaderMode(!1)},c.ui.DropdownWidget.prototype.setLabelledBy=function(t){var e=this.$label.attr("id");t?this.$handle.attr("aria-labelledby",t+" "+e):this.$handle.attr("aria-labelledby",e)},c.ui.RadioOptionWidget=function(t){this.radio=new c.ui.RadioInputWidget({value:(t=t||{}).data,tabIndex:-1}),c.ui.RadioOptionWidget.super.call(this,t),this.radio.$input.attr("role","presentation"),this.$element.addClass("oo-ui-radioOptionWidget").attr({role:"radio","aria-checked":"false"}).removeAttr("aria-selected").prepend(this.radio.$element)},c.inheritClass(c.ui.RadioOptionWidget,c.ui.OptionWidget),c.ui.RadioOptionWidget.static.highlightable=!1,c.ui.RadioOptionWidget.static.pressable=!1,c.ui.RadioOptionWidget.static.tagName="label",c.ui.RadioOptionWidget.prototype.setSelected=function(t){return c.ui.RadioOptionWidget.super.prototype.setSelected.call(this,t),this.radio.setSelected(t),this.$element.attr("aria-checked",this.selected.toString()).removeAttr("aria-selected"),this},c.ui.RadioOptionWidget.prototype.setDisabled=function(t){return c.ui.RadioOptionWidget.super.prototype.setDisabled.call(this,t),this.radio.setDisabled(this.isDisabled()),this},c.ui.RadioSelectWidget=function(t){c.ui.RadioSelectWidget.super.call(this,t),c.ui.mixin.TabIndexedElement.call(this,t),this.$element.on({focus:this.bindDocumentKeyDownListener.bind(this),blur:this.unbindDocumentKeyDownListener.bind(this)}),this.$element.addClass("oo-ui-radioSelectWidget").attr("role","radiogroup").removeAttr("aria-multiselectable")},c.inheritClass(c.ui.RadioSelectWidget,c.ui.SelectWidget),c.mixinClass(c.ui.RadioSelectWidget,c.ui.mixin.TabIndexedElement),c.ui.MultioptionWidget=function(t){c.ui.MultioptionWidget.super.call(this,t=t||{}),c.ui.mixin.ItemWidget.call(this),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.TitledElement.call(this,t),this.selected=null,this.$element.addClass("oo-ui-multioptionWidget").append(this.$label),this.setSelected(t.selected)},c.inheritClass(c.ui.MultioptionWidget,c.ui.Widget),c.mixinClass(c.ui.MultioptionWidget,c.ui.mixin.ItemWidget),c.mixinClass(c.ui.MultioptionWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.MultioptionWidget,c.ui.mixin.TitledElement),c.ui.MultioptionWidget.prototype.isSelected=function(){return this.selected},c.ui.MultioptionWidget.prototype.setSelected=function(t){return this.selected!==(t=!!t)&&(this.selected=t,this.emit("change",t),this.$element.toggleClass("oo-ui-multioptionWidget-selected",t)),this},c.ui.MultiselectWidget=function(t){c.ui.MultiselectWidget.super.call(this,t),c.ui.mixin.GroupWidget.call(this,t=t||{}),c.ui.mixin.TitledElement.call(this,t),this.aggregate({change:"select"}),this.connect(this,{select:["emit","change"]}),this.addItems(t.items||[]),this.$group.addClass("oo-ui-multiselectWidget-group"),this.$element.addClass("oo-ui-multiselectWidget").append(this.$group)},c.inheritClass(c.ui.MultiselectWidget,c.ui.Widget),c.mixinClass(c.ui.MultiselectWidget,c.ui.mixin.GroupWidget),c.mixinClass(c.ui.MultiselectWidget,c.ui.mixin.TitledElement),c.ui.MultiselectWidget.prototype.findSelectedItems=function(){return this.items.filter(function(t){return t.isSelected()})},c.ui.MultiselectWidget.prototype.findSelectedItemsData=function(){return this.findSelectedItems().map(function(t){return t.data})},c.ui.MultiselectWidget.prototype.selectItems=function(t){var i=new Set(t);return this.items.forEach(function(t){var e=i.has(t);t.setSelected(e)}),this},c.ui.MultiselectWidget.prototype.selectItemsByData=function(t){var i=new Set(t.map(function(t){return c.getHash(t)}));return this.items.forEach(function(t){var e=i.has(c.getHash(t.getData()));t.setSelected(e)}),this},c.ui.CheckboxMultioptionWidget=function(t){t=t||{},this.checkbox=new c.ui.CheckboxInputWidget,c.ui.CheckboxMultioptionWidget.super.call(this,t),this.checkbox.on("change",this.onCheckboxChange.bind(this)),this.$element.on("keydown",this.onKeyDown.bind(this)),this.$element.addClass("oo-ui-checkboxMultioptionWidget").prepend(this.checkbox.$element)},c.inheritClass(c.ui.CheckboxMultioptionWidget,c.ui.MultioptionWidget),c.ui.CheckboxMultioptionWidget.static.tagName="label",c.ui.CheckboxMultioptionWidget.prototype.onCheckboxChange=function(){this.setSelected(this.checkbox.isSelected())},c.ui.CheckboxMultioptionWidget.prototype.setSelected=function(t){return c.ui.CheckboxMultioptionWidget.super.prototype.setSelected.call(this,t),this.checkbox.setSelected(t),this},c.ui.CheckboxMultioptionWidget.prototype.setDisabled=function(t){return c.ui.CheckboxMultioptionWidget.super.prototype.setDisabled.call(this,t),this.checkbox.setDisabled(this.isDisabled()),this},c.ui.CheckboxMultioptionWidget.prototype.focus=function(){this.checkbox.focus()},c.ui.CheckboxMultioptionWidget.prototype.onKeyDown=function(t){var e,i=this.getElementGroup();t.keyCode===c.ui.Keys.LEFT||t.keyCode===c.ui.Keys.UP?e=i.getRelativeFocusableItem(this,-1):t.keyCode!==c.ui.Keys.RIGHT&&t.keyCode!==c.ui.Keys.DOWN||(e=i.getRelativeFocusableItem(this,1)),e&&(t.preventDefault(),e.focus())},c.ui.CheckboxMultiselectWidget=function(t){c.ui.CheckboxMultiselectWidget.super.call(this,t),this.$lastClicked=null,this.$group.on("click",this.onClick.bind(this)),this.$element.addClass("oo-ui-checkboxMultiselectWidget")},c.inheritClass(c.ui.CheckboxMultiselectWidget,c.ui.MultiselectWidget),c.ui.CheckboxMultiselectWidget.prototype.getRelativeFocusableItem=function(t,e){var i,o=0<e?1:-1,n=this.items.length;i=t?(this.items.indexOf(t)+o+n)%n:0<e?0:n-1;for(var s=0;s<n;s++){if((t=this.items[i])&&!t.isDisabled())return t;i=(i+o+n)%n}return null},c.ui.CheckboxMultiselectWidget.prototype.onClick=function(t){var e=this.$lastClicked,i=$(t.target).closest(".oo-ui-checkboxMultioptionWidget").not(".oo-ui-widget-disabled");if(e&&i.length&&t.shiftKey){var o=this.$group.find(".oo-ui-checkboxMultioptionWidget"),e=o.index(e),n=o.index(i);if(n!==e){for(var s=this.items,l=s[n].isSelected(),u=e<n?1:-1,a=e;a!==n;a+=u)s[a].isDisabled()||s[a].setSelected(!l);t.preventDefault(),setTimeout(function(){s[n].isDisabled()||s[n].setSelected(!l)})}}i.length&&(this.$lastClicked=i)},c.ui.CheckboxMultiselectWidget.prototype.focus=function(){var t;return this.isDisabled()||(t=this.getRelativeFocusableItem(null,1))&&t.focus(),this},c.ui.CheckboxMultiselectWidget.prototype.simulateLabelClick=function(){this.focus()},c.ui.ProgressBarWidget=function(t){c.ui.ProgressBarWidget.super.call(this,t=t||{}),c.ui.mixin.PendingElement.call(this,t),this.$bar=$("<div>"),this.progress=null,this.setProgress(void 0!==t.progress&&t.progress),this.$bar.addClass("oo-ui-progressBarWidget-bar"),this.$element.attr({role:"progressbar","aria-valuemin":0,"aria-valuemax":100}).addClass("oo-ui-progressBarWidget").append(this.$bar)},c.inheritClass(c.ui.ProgressBarWidget,c.ui.Widget),c.mixinClass(c.ui.ProgressBarWidget,c.ui.mixin.PendingElement),c.ui.ProgressBarWidget.static.tagName="div",c.ui.ProgressBarWidget.prototype.getProgress=function(){return this.progress},c.ui.ProgressBarWidget.prototype.setProgress=function(t){!1!==(this.progress=t)?(this.$bar.css("width",this.progress+"%"),this.$element.attr("aria-valuenow",this.progress)):(this.$bar.css("width",""),this.$element.removeAttr("aria-valuenow")),this.$element.toggleClass("oo-ui-progressBarWidget-indeterminate",!1===t)},c.ui.InputWidget=function(t){c.ui.InputWidget.super.call(this,t=t||{}),this.$input=t.$input||this.getInputElement(t),this.value="",this.inputFilter=t.inputFilter,c.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$input},t)),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$input},t)),c.ui.mixin.AccessKeyedElement.call(this,$.extend({$accessKeyed:this.$input},t)),this.$input.on("keydown mouseup cut paste change input select",this.onEdit.bind(this)),this.$input.addClass("oo-ui-inputWidget-input").attr("name",t.name).prop("disabled",this.isDisabled()),this.$element.addClass("oo-ui-inputWidget").append(this.$input),this.setValue(t.value),t.dir&&this.setDir(t.dir),void 0!==t.inputId&&this.setInputId(t.inputId)},c.inheritClass(c.ui.InputWidget,c.ui.Widget),c.mixinClass(c.ui.InputWidget,c.ui.mixin.TabIndexedElement),c.mixinClass(c.ui.InputWidget,c.ui.mixin.TitledElement),c.mixinClass(c.ui.InputWidget,c.ui.mixin.AccessKeyedElement),c.ui.InputWidget.static.reusePreInfuseDOM=function(t,e){var i=$(t).find(".oo-ui-inputWidget-input");return e=c.ui.InputWidget.super.static.reusePreInfuseDOM(t,e),i.length&&(e.$input=i),e},c.ui.InputWidget.static.gatherPreInfuseState=function(t,e){t=c.ui.InputWidget.super.static.gatherPreInfuseState(t,e);return e.$input&&(t.value=e.$input.val(),t.focus=e.$input.is(":focus")),t},c.ui.InputWidget.prototype.getInputElement=function(){return $("<input>")},c.ui.InputWidget.prototype.onEdit=function(){var t=this;this.isDisabled()||(t.setValue(t.$input.val()),setTimeout(function(){t.setValue(t.$input.val())}))},c.ui.InputWidget.prototype.getValue=function(){var t=this.$input.val();return this.value!==t&&this.setValue(t),this.value},c.ui.InputWidget.prototype.setDir=function(t){return this.$input.prop("dir",t),this},c.ui.InputWidget.prototype.setValue=function(t){return t=this.cleanUpValue(t),this.$input.val()!==t&&this.$input.val(t),this.value!==t&&(this.value=t,this.emit("change",this.value)),void 0===this.defaultValue&&(this.defaultValue=this.value,this.$input[0].defaultValue=this.defaultValue),this},c.ui.InputWidget.prototype.cleanUpValue=function(t){return null==t?"":this.inputFilter?this.inputFilter(String(t)):String(t)},c.ui.InputWidget.prototype.setDisabled=function(t){return c.ui.InputWidget.super.prototype.setDisabled.call(this,t),this.$input&&this.$input.prop("disabled",this.isDisabled()),this},c.ui.InputWidget.prototype.setInputId=function(t){return this.$input.attr("id",t),this},c.ui.InputWidget.prototype.restorePreInfuseState=function(t){c.ui.InputWidget.super.prototype.restorePreInfuseState.call(this,t),void 0!==t.value&&t.value!==this.getValue()&&this.setValue(t.value),t.focus&&this.focus()},c.ui.HiddenInputWidget=function(t){t=$.extend({value:"",name:""},t),c.ui.HiddenInputWidget.super.call(this,t),this.$element.attr({type:"hidden",value:t.value,name:t.name}),this.$element.removeAttr("aria-disabled")},c.inheritClass(c.ui.HiddenInputWidget,c.ui.Widget),c.ui.HiddenInputWidget.static.tagName="input",c.ui.ButtonInputWidget=function(t){(t=$.extend({type:"button",useInputTag:!1,formNoValidate:!1},t)).$input&&t.$input.empty(),this.useInputTag=t.useInputTag,c.ui.ButtonInputWidget.super.call(this,t),c.ui.mixin.ButtonElement.call(this,$.extend({$button:this.$input},t)),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.IndicatorElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.FlaggedElement.call(this,t),t.useInputTag||this.$input.append(this.$icon,this.$label,this.$indicator),t.formNoValidate&&this.$input.attr("formnovalidate","formnovalidate"),this.$element.addClass("oo-ui-buttonInputWidget")},c.inheritClass(c.ui.ButtonInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.ButtonInputWidget,c.ui.mixin.ButtonElement),c.mixinClass(c.ui.ButtonInputWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.ButtonInputWidget,c.ui.mixin.IndicatorElement),c.mixinClass(c.ui.ButtonInputWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.ButtonInputWidget,c.ui.mixin.FlaggedElement),c.ui.ButtonInputWidget.static.tagName="span",c.ui.ButtonInputWidget.prototype.getInputElement=function(t){var e="submit"===t.type||"reset"===t.type?t.type:"button";return $("<"+(t.useInputTag?"input":"button")+' type="'+e+'">')},c.ui.ButtonInputWidget.prototype.setLabel=function(t){return t=c.ui.resolveMsg(t),this.useInputTag&&this.$input.val(t="string"!=typeof t?"":t),c.ui.mixin.LabelElement.prototype.setLabel.call(this,t)},c.ui.ButtonInputWidget.prototype.setValue=function(t){return this.useInputTag||c.ui.ButtonInputWidget.super.prototype.setValue.call(this,t),this},c.ui.ButtonInputWidget.prototype.getInputId=function(){return null},c.ui.CheckboxInputWidget=function(t){c.ui.CheckboxInputWidget.super.call(this,t=t||{}),c.ui.mixin.RequiredElement.call(this,$.extend({},{indicatorElement:null},t)),this.checkIcon=new c.ui.IconWidget({icon:"check",classes:["oo-ui-checkboxInputWidget-checkIcon"]}),this.$element.addClass("oo-ui-checkboxInputWidget").append(this.checkIcon.$element),this.setSelected(void 0!==t.selected&&t.selected),this.setIndeterminate(void 0!==t.indeterminate&&t.indeterminate)},c.inheritClass(c.ui.CheckboxInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.CheckboxInputWidget,c.ui.mixin.RequiredElement),c.ui.CheckboxInputWidget.static.tagName="span",c.ui.CheckboxInputWidget.static.gatherPreInfuseState=function(t,e){t=c.ui.CheckboxInputWidget.super.static.gatherPreInfuseState(t,e);return e.$input&&(t.checked=e.$input.prop("checked")),t},c.ui.CheckboxInputWidget.prototype.getInputElement=function(){return $("<input>").attr("type","checkbox")},c.ui.CheckboxInputWidget.prototype.onEdit=function(){var t=this;this.isDisabled()||setTimeout(function(){t.setSelected(t.$input.prop("checked")),t.setIndeterminate(t.$input.prop("indeterminate"))})},c.ui.CheckboxInputWidget.prototype.setSelected=function(t,e){return this.selected!==(t=!!t)&&(this.selected=t,this.$input.prop("checked",this.selected),e||(this.setIndeterminate(!1,!0),this.emit("change",this.selected,this.indeterminate))),void 0===this.defaultSelected&&(this.defaultSelected=this.selected,this.$input[0].defaultChecked=this.defaultSelected),this},c.ui.CheckboxInputWidget.prototype.isSelected=function(){var t=this.$input.prop("checked");return this.selected!==t&&this.setSelected(t),this.selected},c.ui.CheckboxInputWidget.prototype.setIndeterminate=function(t,e){return this.indeterminate!==(t=!!t)&&(this.indeterminate=t,this.$input.prop("indeterminate",this.indeterminate),e||(this.setSelected(!1,!0),this.emit("change",this.selected,this.indeterminate))),this},c.ui.CheckboxInputWidget.prototype.isIndeterminate=function(){var t=this.$input.prop("indeterminate");return this.indeterminate!==t&&this.setIndeterminate(t),this.indeterminate},c.ui.CheckboxInputWidget.prototype.simulateLabelClick=function(){this.isDisabled()||this.$handle.trigger("click"),this.focus()},c.ui.CheckboxInputWidget.prototype.restorePreInfuseState=function(t){c.ui.CheckboxInputWidget.super.prototype.restorePreInfuseState.call(this,t),void 0!==t.checked&&t.checked!==this.isSelected()&&this.setSelected(t.checked)},c.ui.DropdownInputWidget=function(t){t=t||{},this.dropdownWidget=new c.ui.DropdownWidget($.extend({$overlay:t.$overlay},t.dropdown)),this.setOptionsData(t.options||[]),c.ui.DropdownInputWidget.super.call(this,t),c.ui.mixin.RequiredElement.call(this,$.extend({},{indicatorElement:null},t)),this.dropdownWidget.getMenu().connect(this,{select:"onMenuSelect"}),this.$element.addClass("oo-ui-dropdownInputWidget").append(this.dropdownWidget.$element),c.ui.isMobile()&&this.$element.addClass("oo-ui-isMobile"),this.setTabIndexedElement(this.dropdownWidget.$tabIndexed),this.setTitledElement(this.dropdownWidget.$handle)},c.inheritClass(c.ui.DropdownInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.DropdownInputWidget,c.ui.mixin.RequiredElement),c.ui.DropdownInputWidget.prototype.getInputElement=function(){return $("<select>").addClass("oo-ui-indicator-down")},c.ui.DropdownInputWidget.prototype.onMenuSelect=function(t){this.setValue(t?t.getData():"")},c.ui.DropdownInputWidget.prototype.setValue=function(t){t=this.cleanUpValue(t);var e=this.dropdownWidget.getMenu().findItemFromData(t)||this.dropdownWidget.getMenu().findFirstSelectableItem();return this.dropdownWidget.getMenu().selectItem(e),t=e?e.getData():"",c.ui.DropdownInputWidget.super.prototype.setValue.call(this,t),this.optionsDirty&&this.updateOptionsInterface(),this},c.ui.DropdownInputWidget.prototype.setDisabled=function(t){return this.dropdownWidget.setDisabled(t),c.ui.DropdownInputWidget.super.prototype.setDisabled.call(this,t),this},c.ui.DropdownInputWidget.prototype.setOptions=function(t){var e=this.getValue();return this.setOptionsData(t),this.setValue(e),this},c.ui.DropdownInputWidget.prototype.setOptionsData=function(t){this.optionsDirty=!0;for(var e,i=[],o=0;o<t.length;o++){var n,s,l=t[o];void 0!==l.optgroup?e=s=this.createMenuSectionOptionWidget(l.optgroup):(n=this.cleanUpValue(l.data),s=this.createMenuOptionWidget(n,void 0!==l.label?l.label:n)),(void 0!==l.disabled||e instanceof c.ui.MenuSectionOptionWidget&&e.isDisabled())&&s.setDisabled(!0),i.push(s)}this.dropdownWidget.getMenu().clearItems().addItems(i)},c.ui.DropdownInputWidget.prototype.createMenuOptionWidget=function(t,e){return new c.ui.MenuOptionWidget({data:t,label:e})},c.ui.DropdownInputWidget.prototype.createMenuSectionOptionWidget=function(t){return new c.ui.MenuSectionOptionWidget({label:t})},c.ui.DropdownInputWidget.prototype.updateOptionsInterface=function(){var i=this.$input,o=this.defaultValue,n=this;this.$input.empty(),this.dropdownWidget.getMenu().getItems().forEach(function(t){var e;t instanceof c.ui.MenuSectionOptionWidget?(e=$("<optgroup>").attr("label",t.getLabel()),n.$input.append(e),i=e):((e=$("<option>").attr("value",t.getData()).text(t.getLabel()))[0].defaultSelected=t.getData()===o,i.append(e)),t.isDisabled()&&e.prop("disabled",!0)}),this.optionsDirty=!1},c.ui.DropdownInputWidget.prototype.focus=function(){return this.dropdownWidget.focus(),this},c.ui.DropdownInputWidget.prototype.blur=function(){return this.dropdownWidget.blur(),this},c.ui.DropdownInputWidget.prototype.setLabelledBy=function(t){this.dropdownWidget.setLabelledBy(t)},c.ui.RadioInputWidget=function(t){c.ui.RadioInputWidget.super.call(this,t=t||{}),c.ui.mixin.RequiredElement.call(this,$.extend({},{indicatorElement:null},t)),this.$element.addClass("oo-ui-radioInputWidget").append($("<span>")),this.setSelected(void 0!==t.selected&&t.selected)},c.inheritClass(c.ui.RadioInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.RadioInputWidget,c.ui.mixin.RequiredElement),c.ui.RadioInputWidget.static.tagName="span",c.ui.RadioInputWidget.static.gatherPreInfuseState=function(t,e){t=c.ui.RadioInputWidget.super.static.gatherPreInfuseState(t,e);return e.$input&&(t.checked=e.$input.prop("checked")),t},c.ui.RadioInputWidget.prototype.getInputElement=function(){return $("<input>").attr("type","radio")},c.ui.RadioInputWidget.prototype.onEdit=function(){},c.ui.RadioInputWidget.prototype.setSelected=function(t){return this.$input.prop("checked",t),void 0===this.defaultSelected&&(this.defaultSelected=t,this.$input[0].defaultChecked=this.defaultSelected),this},c.ui.RadioInputWidget.prototype.isSelected=function(){return this.$input.prop("checked")},c.ui.RadioInputWidget.prototype.simulateLabelClick=function(){this.isDisabled()||this.$input.trigger("click"),this.focus()},c.ui.RadioInputWidget.prototype.restorePreInfuseState=function(t){c.ui.RadioInputWidget.super.prototype.restorePreInfuseState.call(this,t),void 0!==t.checked&&t.checked!==this.isSelected()&&this.setSelected(t.checked)},c.ui.RadioSelectInputWidget=function(t){t=t||{},this.radioSelectWidget=new c.ui.RadioSelectWidget,this.setOptionsData(t.options||[]),c.ui.RadioSelectInputWidget.super.call(this,t),this.radioSelectWidget.connect(this,{select:"onMenuSelect"}),this.$element.addClass("oo-ui-radioSelectInputWidget").append(this.radioSelectWidget.$element),this.setTabIndexedElement(this.radioSelectWidget.$tabIndexed)},c.inheritClass(c.ui.RadioSelectInputWidget,c.ui.InputWidget),c.ui.RadioSelectInputWidget.static.gatherPreInfuseState=function(t,e){e=c.ui.RadioSelectInputWidget.super.static.gatherPreInfuseState(t,e);return e.value=$(t).find(".oo-ui-radioInputWidget .oo-ui-inputWidget-input:checked").val(),e},c.ui.RadioSelectInputWidget.static.reusePreInfuseDOM=function(t,e){return delete(e=c.ui.RadioSelectInputWidget.super.static.reusePreInfuseDOM(t,e)).$input,e},c.ui.RadioSelectInputWidget.prototype.getInputElement=function(){return $("<input>").addClass("oo-ui-element-hidden")},c.ui.RadioSelectInputWidget.prototype.onMenuSelect=function(t){this.setValue(t.getData())},c.ui.RadioSelectInputWidget.prototype.setValue=function(t){t=this.cleanUpValue(t);var e=this.radioSelectWidget.findItemFromData(t)||this.radioSelectWidget.findFirstSelectableItem();return this.radioSelectWidget.selectItem(e),t=e?e.getData():"",c.ui.RadioSelectInputWidget.super.prototype.setValue.call(this,t),this},c.ui.RadioSelectInputWidget.prototype.setDisabled=function(t){return this.radioSelectWidget.setDisabled(t),c.ui.RadioSelectInputWidget.super.prototype.setDisabled.call(this,t),this},c.ui.RadioSelectInputWidget.prototype.setOptions=function(t){var e=this.getValue();return this.setOptionsData(t),this.setValue(e),this},c.ui.RadioSelectInputWidget.prototype.setOptionsData=function(t){var i=this;this.radioSelectWidget.clearItems().addItems(t.map(function(t){var e=i.cleanUpValue(t.data);return new c.ui.RadioOptionWidget({data:e,label:void 0!==t.label?t.label:e})}))},c.ui.RadioSelectInputWidget.prototype.focus=function(){return this.radioSelectWidget.focus(),this},c.ui.RadioSelectInputWidget.prototype.blur=function(){return this.radioSelectWidget.blur(),this},c.ui.CheckboxMultiselectInputWidget=function(t){t=t||{},this.checkboxMultiselectWidget=new c.ui.CheckboxMultiselectWidget,this.inputName=t.name,this.setOptionsData(t.options||[]),c.ui.CheckboxMultiselectInputWidget.super.call(this,t),this.onCheckboxesSelectHandler=c.ui.debounce(this.onCheckboxesSelect),this.checkboxMultiselectWidget.connect(this,{select:"onCheckboxesSelectHandler"}),this.$element.addClass("oo-ui-checkboxMultiselectInputWidget").append(this.checkboxMultiselectWidget.$element),this.$input.detach()},c.inheritClass(c.ui.CheckboxMultiselectInputWidget,c.ui.InputWidget),c.ui.CheckboxMultiselectInputWidget.static.gatherPreInfuseState=function(t,e){e=c.ui.CheckboxMultiselectInputWidget.super.static.gatherPreInfuseState(t,e);return e.value=$(t).find(".oo-ui-checkboxInputWidget .oo-ui-inputWidget-input:checked").toArray().map(function(t){return t.value}),e},c.ui.CheckboxMultiselectInputWidget.static.reusePreInfuseDOM=function(t,e){return delete(e=c.ui.CheckboxMultiselectInputWidget.super.static.reusePreInfuseDOM(t,e)).$input,e},c.ui.CheckboxMultiselectInputWidget.prototype.getInputElement=function(){return $("<unused>")},c.ui.CheckboxMultiselectInputWidget.prototype.onCheckboxesSelect=function(){this.setValue(this.checkboxMultiselectWidget.findSelectedItemsData())},c.ui.CheckboxMultiselectInputWidget.prototype.getValue=function(){var t=this.$element.find(".oo-ui-checkboxInputWidget .oo-ui-inputWidget-input:checked").toArray().map(function(t){return t.value});return c.compare(this.value,t)||this.setValue(t),this.value},c.ui.CheckboxMultiselectInputWidget.prototype.setValue=function(t){return t=this.cleanUpValue(t),this.checkboxMultiselectWidget.selectItemsByData(t),c.ui.CheckboxMultiselectInputWidget.super.prototype.setValue.call(this,t),this.optionsDirty&&this.updateOptionsInterface(),this},c.ui.CheckboxMultiselectInputWidget.prototype.cleanUpValue=function(t){var e=[];if(Array.isArray(t))for(var i=new Set(this.checkboxMultiselectWidget.getItems().map(function(t){return c.getHash(t.getData())})),o=0;o<t.length;o++){var n=c.ui.CheckboxMultiselectInputWidget.super.prototype.cleanUpValue.call(this,t[o]);i.has(c.getHash(n))&&e.push(n)}return e},c.ui.CheckboxMultiselectInputWidget.prototype.setDisabled=function(t){return this.checkboxMultiselectWidget.setDisabled(t),c.ui.CheckboxMultiselectInputWidget.super.prototype.setDisabled.call(this,t),this},c.ui.CheckboxMultiselectInputWidget.prototype.setOptions=function(t){var e=this.getValue();return this.setOptionsData(t),this.setValue(e),this},c.ui.CheckboxMultiselectInputWidget.prototype.setOptionsData=function(t){var o=this;this.optionsDirty=!0,this.checkboxMultiselectWidget.clearItems().addItems(t.map(function(t){var e=c.ui.CheckboxMultiselectInputWidget.super.prototype.cleanUpValue.call(o,t.data),i=void 0!==t.disabled&&t.disabled,t=new c.ui.CheckboxMultioptionWidget({data:e,label:void 0!==t.label?t.label:e,disabled:i});return t.checkbox.$input.attr("name",o.inputName),t.checkbox.setValue(e),t}))},c.ui.CheckboxMultiselectInputWidget.prototype.updateOptionsInterface=function(){var i=new Set(this.defaultValue);this.checkboxMultiselectWidget.getItems().forEach(function(t){var e=i.has(t.getData());t.checkbox.defaultSelected=e,t.checkbox.$input[0].defaultChecked=e}),this.optionsDirty=!1},c.ui.CheckboxMultiselectInputWidget.prototype.focus=function(){return this.checkboxMultiselectWidget.focus(),this},c.ui.TextInputWidget=function(t){(t=$.extend({labelPosition:"after"},t)).type=this.getSaneType(t),!1===t.autocomplete?t.autocomplete="off":!0===t.autocomplete&&(t.autocomplete="on"),c.ui.TextInputWidget.super.call(this,t),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.IndicatorElement.call(this,t),c.ui.mixin.PendingElement.call(this,$.extend({$pending:this.$input},t)),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.FlaggedElement.call(this,t),c.ui.mixin.RequiredElement.call(this,t),this.type=t.type,this.readOnly=!1,this.validate=null,this.scrollWidth=null,this.setValidation(t.validate),this.setLabelPosition(t.labelPosition),this.$input.on({keypress:this.onKeyPress.bind(this),blur:this.onBlur.bind(this),focus:this.onFocus.bind(this)}),this.$icon.on("mousedown",this.onIconMouseDown.bind(this)),this.$indicator.on("mousedown",this.onIndicatorMouseDown.bind(this)),this.on("labelChange",this.updatePosition.bind(this)),this.on("change",c.ui.debounce(this.onDebouncedChange.bind(this),250)),this.$element.addClass("oo-ui-textInputWidget oo-ui-textInputWidget-type-"+t.type).append(this.$icon,this.$indicator),this.setReadOnly(!!t.readOnly),void 0!==t.placeholder&&this.$input.attr("placeholder",t.placeholder),void 0!==t.maxLength&&this.$input.attr("maxlength",t.maxLength),void 0!==t.minLength&&this.$input.attr("minlength",t.minLength),t.autofocus&&this.$input.attr("autofocus","autofocus"),null!==t.autocomplete&&void 0!==t.autocomplete&&(this.$input.attr("autocomplete",t.autocomplete),"off"===t.autocomplete)&&$(window).on({beforeunload:function(){this.$input.removeAttr("autocomplete")}.bind(this),pageshow:function(){this.$input.attr("autocomplete","off")}.bind(this)}),void 0!==t.spellcheck&&this.$input.attr("spellcheck",t.spellcheck?"true":"false"),this.label&&(this.isWaitingToBeAttached=!0,this.installParentChangeDetector())},c.inheritClass(c.ui.TextInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.IconElement),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.IndicatorElement),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.PendingElement),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.LabelElement),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.FlaggedElement),c.mixinClass(c.ui.TextInputWidget,c.ui.mixin.RequiredElement),c.ui.TextInputWidget.static.validationPatterns={"non-empty":/.+/,integer:/^\d+$/},c.ui.TextInputWidget.prototype.onIconMouseDown=function(t){if(t.which===c.ui.MouseButtons.LEFT)return this.focus(),!1},c.ui.TextInputWidget.prototype.onIndicatorMouseDown=function(t){if(t.which===c.ui.MouseButtons.LEFT)return this.focus(),!1},c.ui.TextInputWidget.prototype.onKeyPress=function(t){t.which===c.ui.Keys.ENTER&&this.emit("enter",t)},c.ui.TextInputWidget.prototype.onBlur=function(){this.setValidityFlag()},c.ui.TextInputWidget.prototype.onFocus=function(){this.isWaitingToBeAttached&&this.onElementAttach(),this.setValidityFlag(!0)},c.ui.TextInputWidget.prototype.onElementAttach=function(){this.isWaitingToBeAttached=!1,this.valCache=null,this.positionLabel()},c.ui.TextInputWidget.prototype.onDebouncedChange=function(){this.setValidityFlag()},c.ui.TextInputWidget.prototype.isReadOnly=function(){return this.readOnly},c.ui.TextInputWidget.prototype.setReadOnly=function(t){return this.readOnly=!!t,this.$input.prop("readOnly",this.readOnly),this},c.ui.TextInputWidget.prototype.installParentChangeDetector=function(){var t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(t&&!this.isElementAttached()){for(var e=this,n=this.$element[0];n.parentNode;)n=n.parentNode;var i=new t(function(t){for(var e=0;e<t.length;e++)for(var i=t[e].removedNodes,o=0;o<i.length;o++)if(i[o]===n)return void setTimeout(s,0)}),s=function(){e.isElementAttached()&&e.onElementAttach(),i.disconnect(),e.installParentChangeDetector()},t=document.createElement("div");t.appendChild(n),i.observe(t,{childList:!0})}},c.ui.TextInputWidget.prototype.getInputElement=function(t){var e=$("<input>").attr("type",t.type);return"number"===t.type&&e.attr("step","any"),e},c.ui.TextInputWidget.prototype.getSaneType=function(t){return-1!==["text","password","email","url","number"].indexOf(t.type)?t.type:"text"},c.ui.TextInputWidget.prototype.selectRange=function(t,e){var i=this.$input[0],o=(e=e||t)<t,n=o?e:t,t=o?t:e;this.focus();try{i.setSelectionRange(n,t,o?"backward":"forward")}catch(t){if(this.getElementDocument().body.contains(i))throw t}return this},c.ui.TextInputWidget.prototype.getRange=function(){var t=this.$input[0],e=t.selectionStart,i=t.selectionEnd,t="backward"===t.selectionDirection;return{from:t?i:e,to:t?e:i}},c.ui.TextInputWidget.prototype.getInputLength=function(){return this.$input[0].value.length},c.ui.TextInputWidget.prototype.select=function(){return this.selectRange(0,this.getInputLength())},c.ui.TextInputWidget.prototype.moveCursorToStart=function(){return this.selectRange(0)},c.ui.TextInputWidget.prototype.moveCursorToEnd=function(){return this.selectRange(this.getInputLength())},c.ui.TextInputWidget.prototype.insertContent=function(t){var e=this.getValue(),i=this.getRange(),o=Math.min(i.from,i.to),i=Math.max(i.from,i.to);return this.setValue(e.slice(0,o)+t+e.slice(i)),this.selectRange(o+t.length),this},c.ui.TextInputWidget.prototype.encapsulateContent=function(t,e){var i=t.length,o=this.getRange(),n=Math.min(o.from,o.to),o=Math.max(o.from,o.to);return this.selectRange(n).insertContent(t),this.selectRange(i+o).insertContent(e),this.selectRange(i+n,i+o),this},c.ui.TextInputWidget.prototype.setValidation=function(t){this.validate=t instanceof RegExp||t instanceof Function?t:this.constructor.static.validationPatterns[t]},c.ui.TextInputWidget.prototype.setValidityFlag=function(t){function e(t){t?i.$input.removeAttr("aria-invalid"):i.$input.attr("aria-invalid","true"),i.setFlags({invalid:!t})}var i=this;void 0!==t?e(t):this.getValidity().then(function(){e(!0)},function(){e(!1)})},c.ui.TextInputWidget.prototype.getValidity=function(){function t(t){var e=$.Deferred();return(t?e.resolve():e.reject()).promise()}if(this.$input[0].checkValidity&&!1===this.$input[0].checkValidity())return t(!1);if(!this.validate)return t(!0);var e;if(this.validate instanceof Function){if((e=this.validate(this.getValue()))&&"function"==typeof e.promise)return e.promise().then(t)}else e=this.validate.test(this.getValue());return t(e)},c.ui.TextInputWidget.prototype.setLabelPosition=function(t){return this.labelPosition=t,this.label&&this.updatePosition(),this},c.ui.TextInputWidget.prototype.updatePosition=function(){var t="after"===this.labelPosition;return this.$element.toggleClass("oo-ui-textInputWidget-labelPosition-after",!!this.label&&t).toggleClass("oo-ui-textInputWidget-labelPosition-before",!!this.label&&!t),this.valCache=null,this.scrollWidth=null,this.positionLabel(),this},c.ui.TextInputWidget.prototype.positionLabel=function(){var t,e;return this.isWaitingToBeAttached?this:(t={"padding-right":"","padding-left":""},this.label?(this.$element.append(this.$label),t[(e="after"===this.labelPosition)==("rtl"===this.$element.css("direction"))?"padding-left":"padding-right"]=this.$label.outerWidth(!0)+(e?this.scrollWidth:0),this.$input.css(t),this):(this.$label.detach(),void this.$input.css(t)))},c.ui.SearchInputWidget=function(t){t=$.extend({icon:"search"},t),c.ui.SearchInputWidget.super.call(this,t),this.connect(this,{change:"onChange"}),this.$indicator.on("click",this.onIndicatorClick.bind(this)),this.$indicator.on("keydown",this.onIndicatorKeyDown.bind(this)),this.updateSearchIndicator(),this.connect(this,{disable:"onDisable"}),this.$indicator.attr({tabindex:-1,role:"button"})},c.inheritClass(c.ui.SearchInputWidget,c.ui.TextInputWidget),c.ui.SearchInputWidget.prototype.getSaneType=function(){return"search"},c.ui.SearchInputWidget.prototype.onIndicatorKeyDown=function(t){if(t.keyCode===c.ui.Keys.ENTER)return this.setValue(""),this.focus(),!1},c.ui.SearchInputWidget.prototype.onIndicatorClick=function(t){if(t.which===c.ui.MouseButtons.LEFT)return this.setValue(""),this.focus(),!1},c.ui.SearchInputWidget.prototype.updateSearchIndicator=function(){""===this.getValue()||this.isDisabled()||this.isReadOnly()?this.setIndicator(null):(this.setIndicator("clear"),this.$indicator.attr("aria-label",c.ui.msg("ooui-item-remove")))},c.ui.SearchInputWidget.prototype.onChange=function(){this.updateSearchIndicator()},c.ui.SearchInputWidget.prototype.onDisable=function(){this.updateSearchIndicator()},c.ui.SearchInputWidget.prototype.setReadOnly=function(t){return c.ui.SearchInputWidget.super.prototype.setReadOnly.call(this,t),this.updateSearchIndicator(),this},c.ui.MultilineTextInputWidget=function(t){t=$.extend({type:"text"},t),this.allowLinebreaks=void 0===t.allowLinebreaks||t.allowLinebreaks,c.ui.MultilineTextInputWidget.super.call(this,t),this.autosize=!!t.autosize,this.styleHeight=null,this.minRows=void 0!==t.rows?t.rows:"",this.maxRows=t.maxRows||Math.max(2*(this.minRows||0),10),this.autosize&&(this.$clone=this.$input.clone().removeAttr("id").removeAttr("name").insertAfter(this.$input).attr("aria-hidden","true").css("overflow","hidden").addClass("oo-ui-element-hidden")),this.connect(this,{change:"onChange"}),t.rows&&this.$input.attr("rows",t.rows),this.autosize&&(this.$input.addClass("oo-ui-textInputWidget-autosized"),this.isWaitingToBeAttached=!0,this.installParentChangeDetector())},c.inheritClass(c.ui.MultilineTextInputWidget,c.ui.TextInputWidget),c.ui.MultilineTextInputWidget.static.gatherPreInfuseState=function(t,e){t=c.ui.MultilineTextInputWidget.super.static.gatherPreInfuseState(t,e);return e.$input&&(t.scrollTop=e.$input.scrollTop()),t},c.ui.MultilineTextInputWidget.prototype.onElementAttach=function(){c.ui.MultilineTextInputWidget.super.prototype.onElementAttach.call(this),this.adjustSize()},c.ui.MultilineTextInputWidget.prototype.onChange=function(){this.adjustSize()},c.ui.MultilineTextInputWidget.prototype.updatePosition=function(){c.ui.MultilineTextInputWidget.super.prototype.updatePosition.call(this),this.adjustSize()},c.ui.MultilineTextInputWidget.prototype.onKeyPress=function(t){if(!this.allowLinebreaks)return t.which===c.ui.Keys.ENTER&&t.preventDefault(),c.ui.TextInputWidget.prototype.onKeyPress.call(this,t);(t.which===c.ui.Keys.ENTER&&(t.ctrlKey||t.metaKey)||10===t.which)&&this.emit("enter",t)},c.ui.MultilineTextInputWidget.prototype.cleanUpValue=function(t){return t=c.ui.MultilineTextInputWidget.super.prototype.cleanUpValue(t),t=this.allowLinebreaks?t:t.replace(/\r?\n/g," ")},c.ui.MultilineTextInputWidget.prototype.adjustSize=function(t){var e,i,o,n;return!t&&this.$input.val()===this.valCache||(this.autosize&&(this.$clone.val(this.$input.val()).attr("rows",this.minRows).css("height",0).removeClass("oo-ui-element-hidden"),this.valCache=this.$input.val(),this.$clone[0].scrollHeight,t=this.$clone[0].scrollHeight,this.$clone.css("height",""),e=this.$clone.innerHeight(),i=this.$clone.outerHeight(),this.$clone.attr("rows",this.maxRows).css("height","auto").val(""),o=(n=this.$clone.innerHeight())-this.$clone[0].scrollHeight,n=Math.min(n,t+o),this.$clone.addClass("oo-ui-element-hidden"),(t=e<n?n+(i-e):"")!==this.styleHeight)&&(this.$input.css("height",t),this.styleHeight=t,this.emit("resize")),(o=this.$input[0].offsetWidth-this.$input[0].clientWidth)===this.scrollWidth)||(n="rtl"===this.$element.css("direction")?"left":"right",this.$label.css({right:"",left:""}),this.$indicator.css({right:"",left:""}),o&&(this.$indicator.css(n,o),"after"===this.labelPosition)&&this.$label.css(n,o),this.scrollWidth=o,this.positionLabel()),this},c.ui.MultilineTextInputWidget.prototype.getInputElement=function(){return $("<textarea>")},c.ui.MultilineTextInputWidget.prototype.isAutosizing=function(){return!!this.autosize},c.ui.MultilineTextInputWidget.prototype.restorePreInfuseState=function(t){c.ui.MultilineTextInputWidget.super.prototype.restorePreInfuseState.call(this,t),void 0!==t.scrollTop&&this.$input.scrollTop(t.scrollTop)},c.ui.ComboBoxInputWidget=function(t){(t=$.extend({autocomplete:!1},t)).$input&&t.$input.removeAttr("list"),c.ui.ComboBoxInputWidget.super.call(this,t),this.$overlay=(!0===t.$overlay?c.ui.getDefaultOverlay():t.$overlay)||this.$element,this.dropdownButton=new c.ui.ButtonWidget({classes:["oo-ui-comboBoxInputWidget-dropdownButton"],label:c.ui.msg("ooui-combobox-button-label"),indicator:"down",invisibleLabel:!0,disabled:this.disabled}),this.menu=new c.ui.MenuSelectWidget($.extend({widget:this,input:this,$floatableContainer:this.$element,disabled:this.isDisabled()},t.menu)),this.connect(this,{change:"onInputChange",enter:"onInputEnter"}),this.dropdownButton.connect(this,{click:"onDropdownButtonClick"}),this.menu.connect(this,{choose:"onMenuChoose",add:"onMenuItemsChange",remove:"onMenuItemsChange",toggle:"onMenuToggle"}),this.$input.attr({role:"combobox","aria-owns":this.menu.getElementId(),"aria-autocomplete":"list"}),this.dropdownButton.$button.attr({"aria-controls":this.menu.getElementId()}),void 0!==t.options&&this.setOptions(t.options),this.$field=$("<div>").addClass("oo-ui-comboBoxInputWidget-field").append(this.$input,this.dropdownButton.$element),this.$element.addClass("oo-ui-comboBoxInputWidget").append(this.$field),this.$overlay.append(this.menu.$element),this.onMenuItemsChange()},c.inheritClass(c.ui.ComboBoxInputWidget,c.ui.TextInputWidget),c.ui.ComboBoxInputWidget.prototype.getMenu=function(){return this.menu},c.ui.ComboBoxInputWidget.prototype.getInput=function(){return this},c.ui.ComboBoxInputWidget.prototype.onEdit=function(t){c.ui.ComboBoxInputWidget.super.prototype.onEdit.apply(this,arguments),this.menu.isVisible()||this.isDisabled()||!this.isVisible()||"input"!==t.type&&"mouseup"!==t.type&&("keydown"!==t.type||t.keyCode!==c.ui.Keys.ENTER&&t.keyCode!==c.ui.Keys.UP&&t.keyCode!==c.ui.Keys.DOWN)||this.menu.toggle(!0)},c.ui.ComboBoxInputWidget.prototype.onInputChange=function(t){t=this.menu.findItemFromData(t);this.menu.selectItem(t),this.menu.findHighlightedItem()&&this.menu.highlightItem(t)},c.ui.ComboBoxInputWidget.prototype.onInputEnter=function(){this.isDisabled()||this.menu.toggle(!1)},c.ui.ComboBoxInputWidget.prototype.onDropdownButtonClick=function(){this.menu.toggle(),this.focus()},c.ui.ComboBoxInputWidget.prototype.onMenuChoose=function(t){this.setValue(t.getData())},c.ui.ComboBoxInputWidget.prototype.onMenuItemsChange=function(){var t=this.menu.findItemFromData(this.getValue());this.menu.selectItem(t),this.menu.findHighlightedItem()&&this.menu.highlightItem(t),this.$element.toggleClass("oo-ui-comboBoxInputWidget-empty",this.menu.isEmpty())},c.ui.ComboBoxInputWidget.prototype.onMenuToggle=function(t){this.$element.toggleClass("oo-ui-comboBoxInputWidget-open",t)},c.ui.ComboBoxInputWidget.prototype.updateControlsDisabled=function(){var t=this.isDisabled()||this.isReadOnly();return this.dropdownButton&&this.dropdownButton.setDisabled(t),this.menu&&this.menu.setDisabled(t),this},c.ui.ComboBoxInputWidget.prototype.setDisabled=function(){return c.ui.ComboBoxInputWidget.super.prototype.setDisabled.apply(this,arguments),this.updateControlsDisabled(),this},c.ui.ComboBoxInputWidget.prototype.setReadOnly=function(){return c.ui.ComboBoxInputWidget.super.prototype.setReadOnly.apply(this,arguments),this.updateControlsDisabled(),this},c.ui.ComboBoxInputWidget.prototype.setOptions=function(t){return this.getMenu().clearItems().addItems(t.map(function(t){return new c.ui.MenuOptionWidget({data:t.data,label:void 0!==t.label?t.label:t.data})})),this},c.ui.FieldLayout=function(t,e){if(void 0===(t=c.isPlainObject(t)&&void 0===e?(e=t).fieldWidget:t))throw new Error("Widget not found");(e=$.extend({align:"left",helpInline:!1},e)).help&&!e.label&&(e.label=" "),c.ui.FieldLayout.super.call(this,e),c.ui.mixin.LabelElement.call(this,$.extend({$label:$("<label>")},e)),c.ui.mixin.TitledElement.call(this,$.extend({$titled:this.$label},e)),this.fieldWidget=t,this.errors=[],this.warnings=[],this.successMessages=[],this.notices=[],this.$field=this.isFieldInline()?$("<span>"):$("<div>"),this.$messages=$("<div>"),this.$header=$("<span>"),this.$body=$("<div>"),this.align=null,this.helpInline=e.helpInline,this.fieldWidget.connect(this,{disable:"onFieldDisable"}),this.$help=e.help?this.createHelpElement(e.help,e.$overlay):$([]),this.fieldWidget.getInputId()?(this.$label.attr("for",this.fieldWidget.getInputId()),this.helpInline&&this.$help.attr("for",this.fieldWidget.getInputId())):(t=c.ui.generateElementId(),this.$label.attr("id",t),this.fieldWidget.setLabelledBy(t),this.$label.on("click",this.onLabelClick.bind(this)),this.helpInline&&this.$help.on("click",this.onLabelClick.bind(this))),this.$element.addClass("oo-ui-fieldLayout").toggleClass("oo-ui-fieldLayout-disabled",this.fieldWidget.isDisabled()).append(this.$body),this.$body.addClass("oo-ui-fieldLayout-body"),this.$header.addClass("oo-ui-fieldLayout-header"),this.$messages.addClass("oo-ui-fieldLayout-messages"),this.$field.addClass("oo-ui-fieldLayout-field").append(this.fieldWidget.$element),this.setErrors(e.errors||[]),this.setWarnings(e.warnings||[]),this.setSuccess(e.successMessages||[]),this.setNotices(e.notices||[]),this.setAlignment(e.align),this.updateTitle()},c.inheritClass(c.ui.FieldLayout,c.ui.Layout),c.mixinClass(c.ui.FieldLayout,c.ui.mixin.LabelElement),c.mixinClass(c.ui.FieldLayout,c.ui.mixin.TitledElement),c.ui.FieldLayout.prototype.onFieldDisable=function(t){this.$element.toggleClass("oo-ui-fieldLayout-disabled",t)},c.ui.FieldLayout.prototype.onLabelClick=function(){this.fieldWidget.simulateLabelClick()},c.ui.FieldLayout.prototype.getField=function(){return this.fieldWidget},c.ui.FieldLayout.prototype.isFieldInline=function(){return"span"===this.getField().$element.prop("tagName").toLowerCase()},c.ui.FieldLayout.prototype.makeMessage=function(t,e){return new c.ui.MessageWidget({type:t,inline:!0,label:e}).$element},c.ui.FieldLayout.prototype.setAlignment=function(t){return t!==this.align&&("inline"!==(t=-1===["left","right","top","inline"].indexOf(t)?"left":t)||this.isFieldInline()||(t="top"),this.helpInline?"top"===t?(this.$header.append(this.$label),this.$body.append(this.$header,this.$field,this.$help)):"inline"===t?(this.$header.append(this.$label,this.$help),this.$body.append(this.$field,this.$header)):(this.$header.append(this.$label,this.$help),this.$body.append(this.$header,this.$field)):"top"===t?(this.$header.append(this.$help,this.$label),this.$body.append(this.$header,this.$field)):"inline"===t?(this.$header.append(this.$help,this.$label),this.$body.append(this.$field,this.$header)):(this.$header.append(this.$label),this.$body.append(this.$header,this.$help,this.$field)),this.align&&this.$element.removeClass("oo-ui-fieldLayout-align-"+this.align),this.$element.addClass("oo-ui-fieldLayout-align-"+t),this.align=t),this},c.ui.FieldLayout.prototype.setErrors=function(t){return this.errors=t.slice(),this.updateMessages(),this},c.ui.FieldLayout.prototype.setWarnings=function(t){return this.warnings=t.slice(),this.updateMessages(),this},c.ui.FieldLayout.prototype.setSuccess=function(t){return this.successMessages=t.slice(),this.updateMessages(),this},c.ui.FieldLayout.prototype.setNotices=function(t){return this.notices=t.slice(),this.updateMessages(),this},c.ui.FieldLayout.prototype.updateMessages=function(){if(this.$messages.empty(),this.errors.length||this.warnings.length||this.successMessages.length||this.notices.length){var t;for(this.$body.after(this.$messages),t=0;t<this.errors.length;t++)this.$messages.append(this.makeMessage("error",this.errors[t]));for(t=0;t<this.warnings.length;t++)this.$messages.append(this.makeMessage("warning",this.warnings[t]));for(t=0;t<this.successMessages.length;t++)this.$messages.append(this.makeMessage("success",this.successMessages[t]));for(t=0;t<this.notices.length;t++)this.$messages.append(this.makeMessage("notice",this.notices[t]))}else this.$messages.remove()},c.ui.FieldLayout.prototype.formatTitleWithAccessKey=function(t){return this.fieldWidget&&this.fieldWidget.formatTitleWithAccessKey?this.fieldWidget.formatTitleWithAccessKey(t):t},c.ui.FieldLayout.prototype.createHelpElement=function(t,e){var i,e=this.helpInline?(i=new c.ui.LabelWidget({label:t,classes:["oo-ui-inline-help"]})).getElementId():((i=new c.ui.PopupButtonWidget({$overlay:e,popup:{padded:!0},classes:["oo-ui-fieldLayout-help"],framed:!1,icon:"info",label:c.ui.msg("ooui-field-help"),invisibleLabel:!0})).popup.on("ready",function(){var t=i.popup.$element;t.attr("tabindex",0),t.trigger("focus")}),i.popup.on("closing",function(){i.$button.trigger("focus")}),t instanceof c.ui.HtmlSnippet?i.getPopup().$body.html(t.toString()):i.getPopup().$body.text(t),i.getPopup().getBodyId());return(this.fieldWidget.$input||this.fieldWidget.input&&this.fieldWidget.input.$input||this.fieldWidget.$button||this.fieldWidget.$element).attr("aria-describedby",e),i.$element},c.ui.ActionFieldLayout=function(t,e,i){c.isPlainObject(t)&&void 0===i&&(t=(i=t).fieldWidget,e=i.buttonWidget),c.ui.ActionFieldLayout.super.call(this,t,i),this.buttonWidget=e,this.$button=$("<span>"),this.$input=this.isFieldInline()?$("<span>"):$("<div>"),this.$element.addClass("oo-ui-actionFieldLayout"),this.$button.addClass("oo-ui-actionFieldLayout-button").append(this.buttonWidget.$element),this.$input.addClass("oo-ui-actionFieldLayout-input").append(this.fieldWidget.$element),this.$field.append(this.$input,this.$button)},c.inheritClass(c.ui.ActionFieldLayout,c.ui.FieldLayout),c.ui.FieldsetLayout=function(t){var e;c.ui.FieldsetLayout.super.call(this,t=t||{}),c.ui.mixin.IconElement.call(this,t),c.ui.mixin.LabelElement.call(this,t),c.ui.mixin.GroupElement.call(this,t),this.$header=$("<legend>"),this.$header.addClass("oo-ui-fieldsetLayout-header").append(this.$icon,this.$label),this.$group.addClass("oo-ui-fieldsetLayout-group"),this.$element.addClass("oo-ui-fieldsetLayout").prepend(this.$header,this.$group),t.help&&(t.helpInline?(e=new c.ui.LabelWidget({label:t.help,classes:["oo-ui-inline-help"]}),this.$element.prepend(this.$header,e.$element,this.$group)):(e=new c.ui.PopupButtonWidget({$overlay:t.$overlay,popup:{padded:!0},classes:["oo-ui-fieldsetLayout-help"],framed:!1,icon:"info",label:c.ui.msg("ooui-field-help"),invisibleLabel:!0}),t.help instanceof c.ui.HtmlSnippet?e.getPopup().$body.html(t.help.toString()):e.getPopup().$body.text(t.help),this.$header.append(e.$element))),this.addItems(t.items||[])},c.inheritClass(c.ui.FieldsetLayout,c.ui.Layout),c.mixinClass(c.ui.FieldsetLayout,c.ui.mixin.IconElement),c.mixinClass(c.ui.FieldsetLayout,c.ui.mixin.LabelElement),c.mixinClass(c.ui.FieldsetLayout,c.ui.mixin.GroupElement),c.ui.FieldsetLayout.static.tagName="fieldset",c.ui.FormLayout=function(t){c.ui.FormLayout.super.call(this,t=t||{}),c.ui.mixin.GroupElement.call(this,$.extend({$group:this.$element},t)),this.$element.on("submit",this.onFormSubmit.bind(this));var e=t.action;void 0===e||c.ui.isSafeUrl(e)||(e="./"+e),this.$element.addClass("oo-ui-formLayout").attr({method:t.method,action:e,enctype:t.enctype}),this.addItems(t.items||[])},c.inheritClass(c.ui.FormLayout,c.ui.Layout),c.mixinClass(c.ui.FormLayout,c.ui.mixin.GroupElement),c.ui.FormLayout.static.tagName="form",c.ui.FormLayout.prototype.onFormSubmit=function(){if(this.emit("submit"))return!1},c.ui.PanelLayout=function(t){t=$.extend({scrollable:!1,padded:!1,expanded:!0,framed:!1},t),c.ui.PanelLayout.super.call(this,t),this.$element.addClass("oo-ui-panelLayout"),t.scrollable&&this.$element.addClass("oo-ui-panelLayout-scrollable"),t.padded&&this.$element.addClass("oo-ui-panelLayout-padded"),t.expanded&&this.$element.addClass("oo-ui-panelLayout-expanded"),t.framed&&this.$element.addClass("oo-ui-panelLayout-framed")},c.inheritClass(c.ui.PanelLayout,c.ui.Layout),c.ui.PanelLayout.static.reusePreInfuseDOM=function(t,e){return!1!==(e=c.ui.PanelLayout.super.static.reusePreInfuseDOM(t,e)).preserveContent&&(e.$content=$(t).contents()),e},c.ui.PanelLayout.prototype.focus=function(){c.ui.findFocusable(this.$element).focus()},c.ui.HorizontalLayout=function(t){c.ui.HorizontalLayout.super.call(this,t=t||{}),c.ui.mixin.GroupElement.call(this,$.extend({$group:this.$element},t)),this.$element.addClass("oo-ui-horizontalLayout"),this.addItems(t.items||[])},c.inheritClass(c.ui.HorizontalLayout,c.ui.Layout),c.mixinClass(c.ui.HorizontalLayout,c.ui.mixin.GroupElement),c.ui.NumberInputWidget=function(t){var e=$("<div>").addClass("oo-ui-numberInputWidget-field");t=$.extend({min:-1/0,max:1/0,showButtons:!0},t),$.extend(t,t.input),this.input=this,c.ui.NumberInputWidget.super.call(this,$.extend(t,{type:"number"})),t.showButtons&&(this.minusButton=new c.ui.ButtonWidget($.extend({disabled:this.isDisabled(),tabIndex:-1,classes:["oo-ui-numberInputWidget-minusButton"],icon:"subtract"},t.minusButton)),this.minusButton.$element.attr("aria-hidden","true"),this.plusButton=new c.ui.ButtonWidget($.extend({disabled:this.isDisabled(),tabIndex:-1,classes:["oo-ui-numberInputWidget-plusButton"],icon:"add"},t.plusButton)),this.plusButton.$element.attr("aria-hidden","true")),this.$input.on({keydown:this.onKeyDown.bind(this),"wheel mousewheel DOMMouseScroll":this.onWheel.bind(this)}),t.showButtons&&(this.plusButton.connect(this,{click:["onButtonClick",1]}),this.minusButton.connect(this,{click:["onButtonClick",-1]})),e.append(this.$input),t.showButtons&&e.prepend(this.minusButton.$element).append(this.plusButton.$element),(t.allowInteger||t.isInteger)&&(t.step=1),this.setRange(t.min,t.max),this.setStep(t.buttonStep,t.pageStep,t.step),this.setValidation(this.validateNumber.bind(this)),this.$element.addClass("oo-ui-numberInputWidget").toggleClass("oo-ui-numberInputWidget-buttoned",t.showButtons).append(e)},c.inheritClass(c.ui.NumberInputWidget,c.ui.TextInputWidget),c.ui.NumberInputWidget.prototype.setAllowInteger=function(t){this.setStep(t?1:null)},c.ui.NumberInputWidget.prototype.setIsInteger=c.ui.NumberInputWidget.prototype.setAllowInteger,c.ui.NumberInputWidget.prototype.getAllowInteger=function(){return 1===this.step},c.ui.NumberInputWidget.prototype.getIsInteger=c.ui.NumberInputWidget.prototype.getAllowInteger,c.ui.NumberInputWidget.prototype.setRange=function(t,e){if(e<t)throw new Error("Minimum ("+t+") must not be greater than maximum ("+e+")");this.min=t,this.max=e,this.$input.attr({min:this.min,max:this.max}),this.setValidityFlag()},c.ui.NumberInputWidget.prototype.getRange=function(){return[this.min,this.max]},c.ui.NumberInputWidget.prototype.setStep=function(t,e,i){if(void 0===t&&(t=i||1),void 0===e&&(e=10*t),null!==i&&i<=0)throw new Error("Step value, if given, must be positive");if(t<=0)throw new Error("Button step value must be positive");if(e<=0)throw new Error("Page step value must be positive");this.step=i,this.buttonStep=t,this.pageStep=e,this.$input.attr("step",this.step||"any"),this.setValidityFlag()},c.ui.NumberInputWidget.prototype.setValue=function(t){return""===t&&this.$input.val(""),c.ui.NumberInputWidget.super.prototype.setValue.call(this,t)},c.ui.NumberInputWidget.prototype.getStep=function(){return[this.buttonStep,this.pageStep,this.step]},c.ui.NumberInputWidget.prototype.getNumericValue=function(){return+this.getValue()},c.ui.NumberInputWidget.prototype.adjustValue=function(t){var e,i=this.getNumericValue();if(t=+t,isNaN(t)||!isFinite(t))throw new Error("Delta must be a finite number");isNaN(i)?e=0:(e=i+t,e=Math.max(Math.min(e,this.max),this.min),this.step&&(e=Math.round(e/this.step)*this.step)),e!==i&&this.setValue(e)},c.ui.NumberInputWidget.prototype.validateNumber=function(t){var e=+t;return""===t?!this.isRequired():!(isNaN(e)||!isFinite(e)||this.step&&Math.floor(e/this.step)!==e/this.step||e<this.min||e>this.max)},c.ui.NumberInputWidget.prototype.onButtonClick=function(t){this.adjustValue(t*this.buttonStep)},c.ui.NumberInputWidget.prototype.onWheel=function(t){var e=0;return!this.isDisabled()&&!this.isReadOnly()&&this.$input.is(":focus")?(void 0!==t.originalEvent.deltaMode&&(this.sawWheelEvent=!0),t.originalEvent.deltaY?e=-t.originalEvent.deltaY:t.originalEvent.deltaX&&(e=t.originalEvent.deltaX),this.sawWheelEvent||(t.originalEvent.wheelDeltaX?e=-t.originalEvent.wheelDeltaX:t.originalEvent.wheelDeltaY?e=t.originalEvent.wheelDeltaY:t.originalEvent.wheelDelta?e=t.originalEvent.wheelDelta:t.originalEvent.detail&&(e=-t.originalEvent.detail)),e&&this.adjustValue((e=e<0?-1:1)*this.buttonStep),!1):void 0},c.ui.NumberInputWidget.prototype.onKeyDown=function(t){if(!this.isDisabled()&&!this.isReadOnly())switch(t.which){case c.ui.Keys.UP:return this.adjustValue(this.buttonStep),!1;case c.ui.Keys.DOWN:return this.adjustValue(-this.buttonStep),!1;case c.ui.Keys.PAGEUP:return this.adjustValue(this.pageStep),!1;case c.ui.Keys.PAGEDOWN:return this.adjustValue(-this.pageStep),!1}},c.ui.NumberInputWidget.prototype.updateControlsDisabled=function(){var t=this.isDisabled()||this.isReadOnly();return this.minusButton&&this.minusButton.setDisabled(t),this.plusButton&&this.plusButton.setDisabled(t),this},c.ui.NumberInputWidget.prototype.setDisabled=function(t){return c.ui.NumberInputWidget.super.prototype.setDisabled.call(this,t),this.updateControlsDisabled(),this},c.ui.NumberInputWidget.prototype.setReadOnly=function(){return c.ui.NumberInputWidget.super.prototype.setReadOnly.apply(this,arguments),this.updateControlsDisabled(),this},c.ui.SelectFileInputWidget=function(t){var e=this;t=t||{},this.selectButton=new c.ui.ButtonWidget($.extend({$element:$("<label>"),classes:["oo-ui-selectFileInputWidget-selectButton"],label:c.ui.msg(t.multiple?"ooui-selectfile-button-select-multiple":"ooui-selectfile-button-select")},t.button)),t=$.extend({accept:null,placeholder:c.ui.msg("ooui-selectfile-placeholder"),$tabIndexed:this.selectButton.$tabIndexed},t),this.info=new c.ui.SearchInputWidget({classes:["oo-ui-selectFileInputWidget-info"],placeholder:t.placeholder,$tabIndexed:$([])}).setIcon(t.icon),this.info.$input.attr("tabindex",-1),this.info.$indicator.attr("tabindex",0),c.ui.SelectFileInputWidget.super.call(this,t),c.ui.mixin.RequiredElement.call(this,$.extend({},{indicatorElement:null},t)),this.currentFiles=this.filterFiles(this.$input[0].files||[]),Array.isArray(t.accept)?this.accept=t.accept:this.accept=null,this.multiple=!!t.multiple,this.info.connect(this,{change:"onInfoChange"}),this.selectButton.$button.on({keypress:this.onKeyPress.bind(this)}),this.$input.on({change:this.onFileSelected.bind(this),focus:function(){e.$input.parent().prop("scrollTop",0)}}),this.connect(this,{change:"updateUI"}),this.fieldLayout=new c.ui.ActionFieldLayout(this.info,this.selectButton,{align:"top"}),this.$input.attr({type:"file",tabindex:-1,"aria-disabled":null}),this.accept&&this.$input.attr("accept",this.accept.join(", ")),this.multiple&&this.$input.attr("multiple",""),this.selectButton.$button.append(this.$input),this.$element.addClass("oo-ui-selectFileInputWidget").append(this.fieldLayout.$element),this.updateUI()},c.inheritClass(c.ui.SelectFileInputWidget,c.ui.InputWidget),c.mixinClass(c.ui.SelectFileInputWidget,c.ui.mixin.RequiredElement),c.ui.SelectFileInputWidget.static.title="",c.ui.SelectFileInputWidget.prototype.getFilename=function(){return this.currentFiles.length?this.currentFiles.map(function(t){return t.name}).join(", "):this.getValue().split("\\").pop()},c.ui.SelectFileInputWidget.prototype.setValue=function(t){return void 0===t?this:t?(this.value!==t&&(this.value=t,this.emit("change",this.value)),this):(this.currentFiles=[],c.ui.SelectFileInputWidget.super.prototype.setValue.call(this,""))},c.ui.SelectFileInputWidget.prototype.onFileSelected=function(t){this.currentFiles=this.filterFiles(t.target.files||[])},c.ui.SelectFileInputWidget.prototype.updateUI=function(){this.info.setValue(this.getFilename())},c.ui.SelectFileInputWidget.prototype.filterFiles=function(t){var n=this.accept;return Array.prototype.filter.call(t,function(t){var e=t.type;if(!n||!e)return!0;for(var i=0;i<n.length;i++){var o=n[i];if(o===e)return!0;if("/*"===o.slice(-2)&&(o=o.slice(0,o.length-1),e.slice(0,o.length)===o))return!0}return!1})},c.ui.SelectFileInputWidget.prototype.onInfoChange=function(t){""===t&&this.setValue(null)},c.ui.SelectFileInputWidget.prototype.onKeyPress=function(t){if(!this.isDisabled()&&this.$input&&(t.which===c.ui.Keys.SPACE||t.which===c.ui.Keys.ENTER))return this.$input.trigger("click"),this.selectButton.onDocumentKeyUp(t),!1},c.ui.SelectFileInputWidget.prototype.setDisabled=function(t){return c.ui.SelectFileInputWidget.super.prototype.setDisabled.call(this,t),this.selectButton.setDisabled(t),this.info.setDisabled(t),this.info.$input.attr("disabled",!0),this}}(OO),function(d){"use strict";d.ui.mixin.DraggableElement=function(t){t=t||{},this.index=null,this.$handle=t.$handle||this.$element,this.wasHandleUsed=null,this.$element.addClass("oo-ui-draggableElement").on({mousedown:this.onDragMouseDown.bind(this),dragstart:this.onDragStart.bind(this),dragover:this.onDragOver.bind(this),dragend:this.onDragEnd.bind(this),drop:this.onDrop.bind(this)}),this.$handle.addClass("oo-ui-draggableElement-handle"),this.toggleDraggable(void 0===t.draggable||!!t.draggable)},d.initClass(d.ui.mixin.DraggableElement),d.ui.mixin.DraggableElement.static.cancelButtonMouseDownEvents=!1,d.ui.mixin.DraggableElement.prototype.toggleDraggable=function(t){t=void 0!==t?!!t:!this.draggable,this.draggable!==t&&(this.draggable=t,this.$handle.toggleClass("oo-ui-draggableElement-undraggable",!this.draggable),this.$element.prop("draggable",this.draggable))},d.ui.mixin.DraggableElement.prototype.isDraggable=function(){return this.draggable},d.ui.mixin.DraggableElement.prototype.onDragMouseDown=function(t){this.isDraggable()&&(this.wasHandleUsed=this.$handle[0]===this.$element[0]||d.ui.contains(this.$handle[0],t.target,!0))},d.ui.mixin.DraggableElement.prototype.onDragStart=function(t){var e=this;if(!this.wasHandleUsed||!this.isDraggable())return!1;t=t.originalEvent.dataTransfer;t.dropEffect="none",t.effectAllowed="move";try{t.setData("application-x/OOUI-draggable",this.getIndex())}catch(t){}if(!t.getData("text"))try{t.setData("text"," ")}catch(t){}return this.$element.addClass("oo-ui-draggableElement-clone"),setTimeout(function(){e.$element.removeClass("oo-ui-draggableElement-clone").addClass("oo-ui-draggableElement-placeholder")}),this.emit("dragstart",this),!0},d.ui.mixin.DraggableElement.prototype.onDragEnd=function(){this.$element.removeClass("oo-ui-draggableElement-placeholder"),this.emit("dragend")},d.ui.mixin.DraggableElement.prototype.onDrop=function(t){t.preventDefault(),this.emit("drop",t)},d.ui.mixin.DraggableElement.prototype.onDragOver=function(t){t.preventDefault()},d.ui.mixin.DraggableElement.prototype.setIndex=function(t){this.index!==t&&(this.index=t,this.$element.data("index",t))},d.ui.mixin.DraggableElement.prototype.getIndex=function(){return this.index},d.ui.mixin.DraggableGroupElement=function(t){d.ui.mixin.GroupElement.call(this,t=t||{}),this.orientation=t.orientation||"vertical",this.dragItem=null,this.itemKeys={},this.dir=null,this.itemsOrder=null,this.draggable=void 0===t.draggable||!!t.draggable,this.aggregate({dragstart:"itemDragStart",dragend:"itemDragEnd",drop:"itemDrop"}),this.connect(this,{itemDragStart:"onItemDragStart",itemDrop:"onItemDropOrDragEnd",itemDragEnd:"onItemDropOrDragEnd"}),this.addItems(t.items||[]),this.$element.addClass("oo-ui-draggableGroupElement").toggleClass("oo-ui-draggableGroupElement-horizontal","horizontal"===this.orientation)},d.mixinClass(d.ui.mixin.DraggableGroupElement,d.ui.mixin.GroupElement),d.ui.mixin.DraggableGroupElement.prototype.toggleDraggable=function(t){t=void 0!==t?!!t:!this.draggable,this.draggable!==t&&(this.draggable=t,this.getItems().forEach(function(t){t.toggleDraggable(this.draggable)}.bind(this)),this.emit("draggable",this.draggable))},d.ui.mixin.DraggableGroupElement.prototype.isDraggable=function(){return this.draggable},d.ui.mixin.DraggableGroupElement.prototype.onItemDragStart=function(t){this.isDraggable()&&(this.itemsOrder=this.items.slice(),this.updateIndexes(),"horizontal"===this.orientation&&(this.dir=this.$element.css("direction")),this.setDragItem(t))},d.ui.mixin.DraggableGroupElement.prototype.updateIndexes=function(){for(var t=0,e=this.itemsOrder.length;t<e;t++)this.itemsOrder[t].setIndex(t)},d.ui.mixin.DraggableGroupElement.prototype.onItemDropOrDragEnd=function(){var t,e=this.getDragItem();return e&&(t=this.items.indexOf(e),(e=e.getIndex()+(e.getIndex()>t?1:0))!==t&&(this.reorder(this.getDragItem(),e),this.emit("reorder",this.getDragItem(),e)),this.updateIndexes()),this.unsetDragItem(),!1},d.ui.mixin.DraggableGroupElement.prototype.onDragOver=function(t){var e,i=this.getDragItem(),o=i.getIndex(),n=$(t.target).closest(".oo-ui-draggableElement").data("index");void 0!==n&&n!==o&&(0<(e=n+(o<n?1:0))?this.$group.children().eq(e-1).after(i.$element):this.$group.prepend(i.$element),this.itemsOrder.splice(n,0,this.itemsOrder.splice(o,1)[0]),this.updateIndexes(),this.emit("drag",i,e)),t.preventDefault()},d.ui.mixin.DraggableGroupElement.prototype.reorder=function(t,e){this.addItems([t],e)},d.ui.mixin.DraggableGroupElement.prototype.setDragItem=function(t){this.dragItem!==t&&(this.dragItem=t,this.$element.on("dragover",this.onDragOver.bind(this)),this.$element.addClass("oo-ui-draggableGroupElement-dragging"))},d.ui.mixin.DraggableGroupElement.prototype.unsetDragItem=function(){this.dragItem&&(this.dragItem=null,this.$element.off("dragover"),this.$element.removeClass("oo-ui-draggableGroupElement-dragging"))},d.ui.mixin.DraggableGroupElement.prototype.getDragItem=function(){return this.dragItem},d.ui.mixin.RequestManager=function(t){this.requestCache={},this.requestQuery=null,this.requestRequest=null,this.showPendingRequest=!!this.pushPending&&!1!==t.showPendingRequest},d.initClass(d.ui.mixin.RequestManager),d.ui.mixin.RequestManager.prototype.getRequestData=function(){var e,i=this,o=this.getRequestQuery(),n=$.Deferred();return this.abortRequest(),Object.prototype.hasOwnProperty.call(this.requestCache,o)?n.resolve(this.requestCache[o]):(this.showPendingRequest&&this.pushPending(),this.requestQuery=o,(e=this.requestRequest=this.getRequest()).always(function(){i.showPendingRequest&&i.popPending()}).done(function(t){e===i.requestRequest&&(i.requestQuery=null,i.requestRequest=null,i.requestCache[o]=i.getRequestCacheDataFromResponse(t),n.resolve(i.requestCache[o]))}).fail(function(){e===i.requestRequest&&(i.requestQuery=null,i.requestRequest=null,n.reject())})),n.promise()},d.ui.mixin.RequestManager.prototype.abortRequest=function(){var t=this.requestRequest;t&&(this.requestRequest=null,this.requestQuery=null,t.abort())},d.ui.mixin.RequestManager.prototype.getRequestQuery=null,d.ui.mixin.RequestManager.prototype.getRequest=null,d.ui.mixin.RequestManager.prototype.getRequestCacheDataFromResponse=null,d.ui.mixin.LookupElement=function(t){t=$.extend({highlightFirst:!0},t),d.ui.mixin.RequestManager.call(this,t),this.$overlay=(!0===t.$overlay?d.ui.getDefaultOverlay():t.$overlay)||this.$element,this.lookupMenu=new d.ui.MenuSelectWidget($.extend({widget:this,input:this,$floatableContainer:t.$container||this.$element},t.menu)),this.allowSuggestionsWhenEmpty=t.allowSuggestionsWhenEmpty||!1,this.lookupsDisabled=!1,this.lookupInputFocused=!1,this.lookupHighlightFirstItem=t.highlightFirst,this.showSuggestionsOnFocus=!1!==t.showSuggestionsOnFocus,this.$input.on({focus:this.onLookupInputFocus.bind(this),blur:this.onLookupInputBlur.bind(this),mousedown:this.onLookupInputMouseDown.bind(this)}),this.connect(this,{change:"onLookupInputChange"}),this.lookupMenu.connect(this,{toggle:"onLookupMenuToggle",choose:"onLookupMenuChoose"}),this.$input.attr({role:"combobox","aria-owns":this.lookupMenu.getElementId(),"aria-autocomplete":"list"}),this.$element.addClass("oo-ui-lookupElement"),this.lookupMenu.$element.addClass("oo-ui-lookupElement-menu"),this.$overlay.append(this.lookupMenu.$element)},d.mixinClass(d.ui.mixin.LookupElement,d.ui.mixin.RequestManager),d.ui.mixin.LookupElement.prototype.onLookupInputFocus=function(){this.lookupInputFocused=!0,this.showSuggestionsOnFocus&&this.populateLookupMenu()},d.ui.mixin.LookupElement.prototype.onLookupInputBlur=function(){this.closeLookupMenu(),this.lookupInputFocused=!1},d.ui.mixin.LookupElement.prototype.onLookupInputMouseDown=function(){this.lookupMenu.isVisible()||!this.lookupInputFocused&&this.showSuggestionsOnFocus||this.populateLookupMenu()},d.ui.mixin.LookupElement.prototype.onLookupInputChange=function(){this.lookupInputFocused&&this.populateLookupMenu()},d.ui.mixin.LookupElement.prototype.onLookupMenuToggle=function(t){t||(this.abortLookupRequest(),this.lookupMenu.clearItems())},d.ui.mixin.LookupElement.prototype.onLookupMenuChoose=function(t){this.setValue(t.getData())},d.ui.mixin.LookupElement.prototype.getLookupMenu=function(){return this.lookupMenu},d.ui.mixin.LookupElement.prototype.setLookupsDisabled=function(t){this.lookupsDisabled=!!t},d.ui.mixin.LookupElement.prototype.openLookupMenu=function(){return this.lookupMenu.isEmpty()||this.lookupMenu.toggle(!0),this},d.ui.mixin.LookupElement.prototype.closeLookupMenu=function(){return this.lookupMenu.toggle(!1),this.abortLookupRequest(),this.lookupMenu.clearItems(),this},d.ui.mixin.LookupElement.prototype.populateLookupMenu=function(){var e=this,t=this.getValue();if(!this.lookupsDisabled&&!this.isReadOnly())return this.allowSuggestionsWhenEmpty||""!==t?t!==this.lookupQuery&&this.getLookupMenuItems().done(function(t){e.lookupMenu.clearItems(),t.length?(e.lookupMenu.addItems(t).toggle(!0),e.initializeLookupMenuSelection()):e.lookupMenu.toggle(!1)}).fail(function(){e.lookupMenu.clearItems(),e.lookupMenu.toggle(!1)}):this.closeLookupMenu(),this},d.ui.mixin.LookupElement.prototype.initializeLookupMenuSelection=function(){this.lookupHighlightFirstItem&&!this.lookupMenu.findSelectedItem()&&this.lookupMenu.highlightItem(this.lookupMenu.findFirstSelectableItem())},d.ui.mixin.LookupElement.prototype.getLookupMenuItems=function(){return this.getRequestData().then(function(t){return this.getLookupMenuOptionsFromData(t)}.bind(this))},d.ui.mixin.LookupElement.prototype.abortLookupRequest=function(){this.abortRequest()},d.ui.mixin.LookupElement.prototype.getLookupRequest=null,d.ui.mixin.LookupElement.prototype.getLookupCacheDataFromResponse=null,d.ui.mixin.LookupElement.prototype.getLookupMenuOptionsFromData=null,d.ui.mixin.LookupElement.prototype.setReadOnly=function(t){return d.ui.TextInputWidget.prototype.setReadOnly.call(this,t),this.isReadOnly()&&this.lookupMenu&&this.closeLookupMenu(),this},d.ui.mixin.LookupElement.prototype.getRequestQuery=function(){return this.getValue()},d.ui.mixin.LookupElement.prototype.getRequest=function(){return this.getLookupRequest()},d.ui.mixin.LookupElement.prototype.getRequestCacheDataFromResponse=function(t){return this.getLookupCacheDataFromResponse(t)},d.ui.TabPanelLayout=function(t,e){d.isPlainObject(t)&&void 0===e&&(t=(e=t).name),e=$.extend({scrollable:!0},e),d.ui.TabPanelLayout.super.call(this,e),this.name=t,this.label=e.label,this.tabItemConfig=e.tabItemConfig||{},this.tabItem=null,this.active=!1,this.$element.addClass("oo-ui-tabPanelLayout").attr("role","tabpanel")},d.inheritClass(d.ui.TabPanelLayout,d.ui.PanelLayout),d.ui.TabPanelLayout.prototype.getName=function(){return this.name},d.ui.TabPanelLayout.prototype.isActive=function(){return this.active},d.ui.TabPanelLayout.prototype.getTabItem=function(){return this.tabItem},d.ui.TabPanelLayout.prototype.getTabItemConfig=function(){return this.tabItemConfig},d.ui.TabPanelLayout.prototype.setTabItem=function(t){return this.tabItem=t||null,t&&this.setupTabItem(),this},d.ui.TabPanelLayout.prototype.setupTabItem=function(){return this.$element.attr("aria-labelledby",this.tabItem.getElementId()),this.tabItem.$element.attr("aria-controls",this.getElementId()),this.label&&this.tabItem.setLabel(this.label),this},d.ui.TabPanelLayout.prototype.setActive=function(t){(t=!!t)!==this.active&&(this.active=t,this.$element.toggleClass("oo-ui-tabPanelLayout-active",this.active),this.emit("active",this.active))},d.ui.PageLayout=function(t,e){d.isPlainObject(t)&&void 0===e&&(t=(e=t).name),e=$.extend({scrollable:!0},e),d.ui.PageLayout.super.call(this,e),this.name=t,this.outlineItem=null,this.active=!1,this.$element.addClass("oo-ui-pageLayout")},d.inheritClass(d.ui.PageLayout,d.ui.PanelLayout),d.ui.PageLayout.prototype.getName=function(){return this.name},d.ui.PageLayout.prototype.isActive=function(){return this.active},d.ui.PageLayout.prototype.getOutlineItem=function(){return this.outlineItem},d.ui.PageLayout.prototype.setOutlineItem=function(t){return this.outlineItem=t||null,t&&this.setupOutlineItem(),this},d.ui.PageLayout.prototype.setupOutlineItem=function(){},d.ui.PageLayout.prototype.setActive=function(t){(t=!!t)!==this.active&&(this.active=t,this.$element.toggleClass("oo-ui-pageLayout-active",t),this.emit("active",this.active))},d.ui.StackLayout=function(t){t=$.extend({scrollable:!(!t||!t.continuous)},t),d.ui.StackLayout.super.call(this,t),d.ui.mixin.GroupElement.call(this,$.extend({$group:this.$element},t)),this.currentItem=null,this.setContinuous(!!t.continuous),this.hideUntilFound=!!t.hideUntilFound,this.$element.addClass("oo-ui-stackLayout"),this.addItems(t.items||[])},d.inheritClass(d.ui.StackLayout,d.ui.PanelLayout),d.mixinClass(d.ui.StackLayout,d.ui.mixin.GroupElement),d.ui.StackLayout.prototype.setContinuous=function(t){this.continuous=t,this.$element.toggleClass("oo-ui-stackLayout-continuous",!!t),this.updateHiddenState(this.items,this.currentItem)},d.ui.StackLayout.prototype.isContinuous=function(){return this.continuous},d.ui.StackLayout.prototype.getCurrentItem=function(){return this.currentItem},d.ui.StackLayout.prototype.unsetCurrentItem=function(){null!==this.currentItem&&(this.currentItem=null,this.emit("set",null))},d.ui.StackLayout.prototype.setHideUntilFound=function(t){this.hideUntilFound=t,this.updateHiddenState(this.items,this.currentItem)},d.ui.StackLayout.prototype.addItems=function(t,e){return t&&0!==t.length&&(this.updateHiddenState(t,this.currentItem),d.ui.mixin.GroupElement.prototype.addItems.call(this,t,e),this.currentItem||this.setItem(t[0])),this},d.ui.StackLayout.prototype.removeItems=function(t){var e,i=-1!==t.indexOf(this.currentItem);if(i)for(var o=this.items.indexOf(this.currentItem);(e=this.items[++o])&&-1!==t.indexOf(e););return d.ui.mixin.GroupElement.prototype.removeItems.call(this,t),i&&(this.items.length?this.setItem(e||this.items[this.items.length-1]):this.unsetCurrentItem()),this},d.ui.StackLayout.prototype.clearItems=function(){return this.unsetCurrentItem(),d.ui.mixin.GroupElement.prototype.clearItems.call(this),this},d.ui.StackLayout.prototype.setItem=function(t){return t!==this.currentItem&&(this.updateHiddenState(this.items,t),-1!==this.items.indexOf(t)?(this.currentItem=t,this.emit("set",t)):this.unsetCurrentItem()),this},d.ui.StackLayout.prototype.resetScroll=function(){return this.isContinuous()?d.ui.StackLayout.super.prototype.resetScroll.call(this):(this.getItems().forEach(function(t){var e=t.$element.hasClass("oo-ui-element-hidden");t.$element.removeClass("oo-ui-element-hidden"),t.resetScroll(),e&&t.$element.addClass("oo-ui-element-hidden")}),this)},d.ui.StackLayout.prototype.updateHiddenState=function(t,i){var o=this;this.isContinuous()?t.forEach(function(t){t.$element[0].removeAttribute("hidden"),t.$element.removeAttr("aria-hidden")}):(t.forEach(function(t){var e;i&&i===t||(e=!(t instanceof d.ui.TabPanelLayout&&t.getTabItem()&&t.getTabItem().isDisabled())&&o.hideUntilFound,t.$element[0].setAttribute("hidden",e?"until-found":"hidden"),t.$element.attr("aria-hidden","true"))}),i&&(i.$element[0].removeAttribute("hidden"),i.$element.removeAttr("aria-hidden")))},d.ui.MenuLayout=function(t){t=$.extend({expanded:!0,showMenu:!0,menuPosition:"before"},t),d.ui.MenuLayout.super.call(this,t),this.menuPanel=null,this.contentPanel=null,this.expanded=!!t.expanded,this.$menu=$("<div>"),this.$content=$("<div>"),this.$menu.addClass("oo-ui-menuLayout-menu"),this.$content.addClass("oo-ui-menuLayout-content"),this.$element.addClass("oo-ui-menuLayout"),t.expanded?this.$element.addClass("oo-ui-menuLayout-expanded"):this.$element.addClass("oo-ui-menuLayout-static"),t.menuPanel&&this.setMenuPanel(t.menuPanel),t.contentPanel&&this.setContentPanel(t.contentPanel),this.setMenuPosition(t.menuPosition),this.toggleMenu(t.showMenu)},d.inheritClass(d.ui.MenuLayout,d.ui.Layout),d.ui.MenuLayout.prototype.toggleMenu=function(t){return t=void 0===t?!this.showMenu:!!t,this.showMenu!==t&&(this.showMenu=t,this.$element.toggleClass("oo-ui-menuLayout-showMenu",this.showMenu).toggleClass("oo-ui-menuLayout-hideMenu",!this.showMenu),this.$menu.attr("aria-hidden",this.showMenu?"false":"true")),this},d.ui.MenuLayout.prototype.isMenuVisible=function(){return this.showMenu},d.ui.MenuLayout.prototype.setMenuPosition=function(t){return-1===["top","bottom","before","after"].indexOf(t)&&(t="before"),this.$element.removeClass("oo-ui-menuLayout-"+this.menuPosition),this.menuPosition=t,"top"===this.menuPosition||"before"===this.menuPosition?this.$element.append(this.$menu,this.$content):this.$element.append(this.$content,this.$menu),this.$element.addClass("oo-ui-menuLayout-"+t),this},d.ui.MenuLayout.prototype.getMenuPosition=function(){return this.menuPosition},d.ui.MenuLayout.prototype.setMenuPanel=function(t){this.menuPanel=t,this.$menu.append(this.menuPanel.$element)},d.ui.MenuLayout.prototype.setContentPanel=function(t){this.contentPanel=t,this.$content.append(this.contentPanel.$element)},d.ui.MenuLayout.prototype.clearMenuPanel=function(){this.menuPanel=null,this.$menu.empty()},d.ui.MenuLayout.prototype.clearContentPanel=function(){this.contentPanel=null,this.$content.empty()},d.ui.MenuLayout.prototype.resetScroll=function(){return this.menuPanel&&this.menuPanel.resetScroll(),this.contentPanel&&this.contentPanel.resetScroll(),this},d.ui.BookletLayout=function(t){d.ui.BookletLayout.super.call(this,t=t||{}),this.currentPageName=null,this.pages={},this.ignoreFocus=!1,this.stackLayout=new d.ui.StackLayout({continuous:!!t.continuous,expanded:this.expanded}),this.setContentPanel(this.stackLayout),this.autoFocus=void 0===t.autoFocus||!!t.autoFocus,this.outlineVisible=!1,this.outlined=!!t.outlined,this.outlined&&(this.editable=!!t.editable,this.outlineControlsWidget=null,this.outlineSelectWidget=new d.ui.OutlineSelectWidget,this.outlinePanel=new d.ui.PanelLayout({expanded:this.expanded,scrollable:!0}),this.setMenuPanel(this.outlinePanel),this.outlineVisible=!0,this.editable)&&(this.outlineControlsWidget=new d.ui.OutlineControlsWidget(this.outlineSelectWidget)),this.toggleMenu(this.outlined),this.stackLayout.connect(this,{set:"onStackLayoutSet"}),this.outlined&&this.outlineSelectWidget.connect(this,{select:"onOutlineSelectWidgetSelect"}),this.autoFocus&&this.stackLayout.$element.on("focusin",this.onStackLayoutFocus.bind(this)),this.$element.addClass("oo-ui-bookletLayout"),this.stackLayout.$element.addClass("oo-ui-bookletLayout-stackLayout"),this.outlined&&(this.outlinePanel.$element.addClass("oo-ui-bookletLayout-outlinePanel").append(this.outlineSelectWidget.$element),this.editable)&&this.outlinePanel.$element.addClass("oo-ui-bookletLayout-outlinePanel-editable").append(this.outlineControlsWidget.$element)},d.inheritClass(d.ui.BookletLayout,d.ui.MenuLayout),d.ui.BookletLayout.prototype.onStackLayoutFocus=function(t){var e,i=$(t.target).closest(".oo-ui-pageLayout");for(e in this.pages)if(this.pages[e].$element[0]===i[0]&&e!==this.currentPageName){this.setPage(e);break}},d.ui.BookletLayout.prototype.onStackLayoutSet=function(t){var e=this;t&&(t=this.stackLayout.isContinuous()&&!this.scrolling?t.scrollElementIntoView():$.Deferred().resolve(),!this.autoFocus||d.ui.isMobile()||this.scrolling||t.done(function(){e.focus()}))},d.ui.BookletLayout.prototype.focus=function(t){var e=this.stackLayout.getItems(),e=void 0!==t&&e[t]?e[t]:this.stackLayout.getCurrentItem();!e&&this.outlined&&(this.selectFirstSelectablePage(),e=this.stackLayout.getCurrentItem()),e&&!d.ui.contains(e.$element[0],this.getElementDocument().activeElement,!0)&&e.focus()},d.ui.BookletLayout.prototype.focusFirstFocusable=function(){d.ui.findFocusable(this.stackLayout.$element).focus()},d.ui.BookletLayout.prototype.onOutlineSelectWidgetSelect=function(t){t&&this.setPage(t.getData())},d.ui.BookletLayout.prototype.isOutlined=function(){return this.outlined},d.ui.BookletLayout.prototype.isEditable=function(){return this.editable},d.ui.BookletLayout.prototype.isOutlineVisible=function(){return this.outlined&&this.outlineVisible},d.ui.BookletLayout.prototype.toggleOutline=function(t){var e=this;return this.outlined&&(t=void 0===t?!this.outlineVisible:!!t,this.outlineVisible=t,this.toggleMenu(t),t)&&this.editable&&setTimeout(function(){d.ui.Element.static.reconsiderScrollbars(e.outlinePanel.$element[0])},d.ui.theme.getDialogTransitionDuration()),this},d.ui.BookletLayout.prototype.findClosestPage=function(t){var e=this.stackLayout.getItems(),i=e.indexOf(t);if(-1===i)return null;var o=e[i+1],e=e[i-1];if(this.outlined){i=this.outlineSelectWidget.findItemFromData(t.getName()).getLevel();if(e&&i===this.outlineSelectWidget.findItemFromData(e.getName()).getLevel())return e;if(o&&i===this.outlineSelectWidget.findItemFromData(o.getName()).getLevel())return o}return e||o||null},d.ui.BookletLayout.prototype.getOutline=function(){return this.outlineSelectWidget},d.ui.BookletLayout.prototype.getOutlineControls=function(){return this.outlineControlsWidget},d.ui.BookletLayout.prototype.getPage=function(t){return this.pages[t]},d.ui.BookletLayout.prototype.getCurrentPage=function(){var t=this.getCurrentPageName();return t?this.getPage(t):void 0},d.ui.BookletLayout.prototype.getCurrentPageName=function(){return this.currentPageName},d.ui.BookletLayout.prototype.addPages=function(t,e){for(var i,o=this.stackLayout.getItems(),n=[],s=[],l=0,u=t.length;l<u;l++){var a,r,h=(r=t[l]).getName();Object.prototype.hasOwnProperty.call(this.pages,h)&&(-1!==(a=o.indexOf(this.pages[h]))&&a+1<e&&e--,n.push(this.pages[h]))}for(n.length&&this.removePages(n),l=0,u=t.length;l<u;l++)h=(r=t[l]).getName(),this.pages[r.getName()]=r,this.outlined&&(i=new d.ui.OutlineOptionWidget({data:h}),r.setOutlineItem(i),s.push(i));return this.outlined&&this.outlineSelectWidget.addItems(s,e),this.stackLayout.addItems(t,e),this.emit("add",t,e),this},d.ui.BookletLayout.prototype.removePages=function(t){for(var e=[],i=0,o=t.length;i<o;i++){var n=t[i],s=n.getName();delete this.pages[s],this.outlined&&(e.push(this.outlineSelectWidget.findItemFromData(s)),n.setOutlineItem(null)),this.currentPageName===s&&(this.currentPageName=null)}return e.length&&this.outlineSelectWidget.removeItems(e),this.stackLayout.removeItems(t),this.emit("remove",t),this},d.ui.BookletLayout.prototype.clearPages=function(){var t=this.stackLayout.getItems();if(this.pages={},this.currentPageName=null,this.outlined){this.outlineSelectWidget.clearItems();for(var e=0,i=t.length;e<i;e++)t[e].setOutlineItem(null)}return this.stackLayout.clearItems(),this.emit("remove",t),this},d.ui.BookletLayout.prototype.setPage=function(t){var e,i,o,n=this.pages[t];n&&t!==this.currentPageName&&(e=this.currentPageName?this.pages[this.currentPageName]:null,this.currentPageName=t,!this.outlined||(i=this.outlineSelectWidget.findSelectedItem())&&i.getData()===t||this.outlineSelectWidget.selectItemByData(t),e&&(e.setActive(!1),this.autoFocus)&&!d.ui.isMobile()&&this.stackLayout.isContinuous()&&0!==d.ui.findFocusable(n.$element).length&&(o=e.$element.find(":focus")).length&&o[0].blur(),n.setActive(!0),this.stackLayout.setItem(n),!this.stackLayout.isContinuous()&&e&&(o=e.$element.find(":focus")).length&&o[0].blur(),this.emit("set",n))},d.ui.BookletLayout.prototype.resetScroll=function(){return d.ui.BookletLayout.super.prototype.resetScroll.call(this),this.outlined&&this.stackLayout.isContinuous()&&this.outlineSelectWidget.findFirstSelectableItem()&&(this.scrolling=!0,this.outlineSelectWidget.selectItem(this.outlineSelectWidget.findFirstSelectableItem()),this.scrolling=!1),this},d.ui.BookletLayout.prototype.selectFirstSelectablePage=function(){return this.outlineSelectWidget.findSelectedItem()||this.outlineSelectWidget.selectItem(this.outlineSelectWidget.findFirstSelectableItem()),this},d.ui.IndexLayout=function(i){i=$.extend({},i,{menuPosition:"top"}),d.ui.IndexLayout.super.call(this,i),this.currentTabPanelName=null,this.tabPanels=i.tabPanels||{},this.openMatchedPanels=void 0===i.openMatchedPanels||!!i.openMatchedPanels,this.ignoreFocus=!1,this.contentPanel&&this.contentPanel.setHideUntilFound(this.openMatchedPanels),this.stackLayout=this.contentPanel||new d.ui.StackLayout({continuous:!!i.continuous,expanded:this.expanded,hideUntilFound:this.openMatchedPanels}),this.setContentPanel(this.stackLayout),this.autoFocus=void 0===i.autoFocus||!!i.autoFocus,i.tabSelectWidget&&this.stackLayout.getItems().forEach(function(t,e){t.getTabItem()||t.setTabItem(i.tabSelectWidget.items[e]||null)}),this.tabSelectWidget=i.tabSelectWidget||new d.ui.TabSelectWidget({framed:void 0===i.framed||i.framed}),this.tabPanel=this.menuPanel||new d.ui.PanelLayout({expanded:this.expanded}),this.setMenuPanel(this.tabPanel),this.toggleMenu(!0),this.stackLayout.connect(this,{set:"onStackLayoutSet"}),this.openMatchedPanels&&this.stackLayout.$element.on("beforematch",this.onStackLayoutBeforeMatch.bind(this)),this.tabSelectWidget.connect(this,{select:"onTabSelectWidgetSelect"}),this.autoFocus&&this.stackLayout.$element.on("focusin",this.onStackLayoutFocus.bind(this)),this.$element.addClass("oo-ui-indexLayout"),this.stackLayout.$element.addClass("oo-ui-indexLayout-stackLayout"),this.tabPanel.$element.addClass("oo-ui-indexLayout-tabPanel").append(this.tabSelectWidget.$element),this.selectFirstSelectableTabPanel()},d.inheritClass(d.ui.IndexLayout,d.ui.MenuLayout),d.ui.IndexLayout.prototype.onStackLayoutFocus=function(t){var e,i=$(t.target).closest(".oo-ui-tabPanelLayout");for(e in this.tabPanels)if(this.tabPanels[e].$element[0]===i[0]&&e!==this.currentTabPanelName){this.setTabPanel(e);break}},d.ui.IndexLayout.prototype.onStackLayoutSet=function(t){t&&this.autoFocus&&!d.ui.isMobile()&&this.focus()},d.ui.IndexLayout.prototype.onStackLayoutBeforeMatch=function(e){var i,t;this.stackLayout.getItems().some(function(t){return t.$element[0]===e.target&&(i=t,!0)}),i&&(t=i.getTabItem())&&this.tabSelectWidget.selectItem(t)},d.ui.IndexLayout.prototype.focus=function(t){var e=this.stackLayout.getItems(),e=void 0!==t&&e[t]?e[t]:this.stackLayout.getCurrentItem();e||(this.selectFirstSelectableTabPanel(),e=this.stackLayout.getCurrentItem()),e&&!d.ui.contains(e.$element[0],this.getElementDocument().activeElement,!0)&&e.focus()},d.ui.IndexLayout.prototype.focusFirstFocusable=function(){d.ui.findFocusable(this.stackLayout.$element).focus()},d.ui.IndexLayout.prototype.onTabSelectWidgetSelect=function(t){t&&this.setTabPanel(t.getData())},d.ui.IndexLayout.prototype.getClosestTabPanel=function(t){var e,i=this.stackLayout.getItems(),o=i.indexOf(t);return-1===o?null:(e=i[o+1],i=i[o-1],o=this.tabSelectWidget.findItemFromData(t.getName()).getLevel(),i&&o===this.tabSelectWidget.findItemFromData(i.getName()).getLevel()?i:e&&o===this.tabSelectWidget.findItemFromData(e.getName()).getLevel()?e:i||e||null)},d.ui.IndexLayout.prototype.getTabs=function(){return this.tabSelectWidget},d.ui.IndexLayout.prototype.getTabPanel=function(t){return this.tabPanels[t]},d.ui.IndexLayout.prototype.getCurrentTabPanel=function(){var t=this.getCurrentTabPanelName();return t?this.getTabPanel(t):void 0},d.ui.IndexLayout.prototype.getCurrentTabPanelName=function(){return this.currentTabPanelName},d.ui.IndexLayout.prototype.addTabPanels=function(t,e){for(var i,o,n,s,l=this.stackLayout.getItems(),u=[],a=[],r=0,h=t.length;r<h;r++)i=(o=t[r]).getName(),Object.prototype.hasOwnProperty.call(this.tabPanels,i)&&(-1!==(s=l.indexOf(this.tabPanels[i]))&&s+1<e&&e--,u.push(this.tabPanels[i]));for(u.length&&this.removeTabPanels(u),r=0,h=t.length;r<h;r++)i=(o=t[r]).getName(),this.tabPanels[i]=o,n=new d.ui.TabOptionWidget($.extend({data:i},o.getTabItemConfig())),o.setTabItem(n),a.push(n);return a.length&&(this.tabSelectWidget.addItems(a,e),this.selectFirstSelectableTabPanel()),this.stackLayout.addItems(t,e),this.emit("add",t,e),this},d.ui.IndexLayout.prototype.removeTabPanels=function(t){for(var e,i,o=[],n=0,s=t.length;n<s;n++)e=(i=t[n]).getName(),delete this.tabPanels[e],o.push(this.tabSelectWidget.findItemFromData(e)),i.setTabItem(null);return o.length&&(this.tabSelectWidget.removeItems(o),this.selectFirstSelectableTabPanel()),this.stackLayout.removeItems(t),this.emit("remove",t),this},d.ui.IndexLayout.prototype.clearTabPanels=function(){var t,e,i=this.stackLayout.getItems();for(this.tabPanels={},this.currentTabPanelName=null,this.tabSelectWidget.clearItems(),t=0,e=i.length;t<e;t++)i[t].setTabItem(null);return this.stackLayout.clearItems(),this.emit("remove",i),this},d.ui.IndexLayout.prototype.setTabPanel=function(t){var e,i,o,n;t!==this.currentTabPanelName&&(n=this.getTabPanel(t),o=this.getCurrentTabPanel(),(e=this.tabSelectWidget.findSelectedItem())&&e.getData()===t||this.tabSelectWidget.selectItemByData(t),n)&&(o&&(o.setActive(!1),this.autoFocus)&&!d.ui.isMobile()&&this.stackLayout.isContinuous()&&0!==d.ui.findFocusable(n.$element).length&&(i=o.$element.find(":focus")).length&&i[0].blur(),this.currentTabPanelName=t,n.setActive(!0),this.stackLayout.setItem(n),!this.stackLayout.isContinuous()&&o&&(i=o.$element.find(":focus")).length&&i[0].blur(),this.emit("set",n))},d.ui.IndexLayout.prototype.selectFirstSelectableTabPanel=function(){return this.tabSelectWidget.findSelectedItem()||this.tabSelectWidget.selectItem(this.tabSelectWidget.findFirstSelectableItem()),this},d.ui.CopyTextLayout=function(t){var e=(t=t||{}).multiline?d.ui.MultilineTextInputWidget:d.ui.TextInputWidget;this.textInput=new e($.extend({value:t.copyText,readOnly:!0},t.textInput)),this.button=new d.ui.ButtonWidget($.extend({label:d.ui.msg("ooui-copytextlayout-copy"),icon:"copy"},t.button)),d.ui.CopyTextLayout.super.call(this,this.textInput,this.button,t),t.multiline&&(this.$input.removeClass("oo-ui-actionFieldLayout-input"),this.$button.removeClass("oo-ui-actionFieldLayout-button").addClass("oo-ui-copyTextLayout-multiline-button")),this.button.connect(this,{click:"onButtonClick"}),this.textInput.$input.on("focus",this.onInputFocus.bind(this)),this.$element.addClass("oo-ui-copyTextLayout")},d.inheritClass(d.ui.CopyTextLayout,d.ui.ActionFieldLayout),d.ui.CopyTextLayout.prototype.onButtonClick=function(){var e;this.selectText();try{e=document.execCommand("copy")}catch(t){e=!1}this.emit("copy",e)},d.ui.CopyTextLayout.prototype.onInputFocus=function(){this.selecting||this.selectText()},d.ui.CopyTextLayout.prototype.selectText=function(){var t=this.textInput.$input[0],e=t.scrollTop,i=t.scrollLeft;this.selecting=!0,this.textInput.select(),this.selecting=!1,t.scrollTop=e,t.scrollLeft=i},d.ui.ToggleButtonWidget=function(t){d.ui.ToggleButtonWidget.super.call(this,t=t||{}),d.ui.mixin.ButtonElement.call(this,$.extend({active:this.active},t)),d.ui.mixin.IconElement.call(this,t),d.ui.mixin.IndicatorElement.call(this,t),d.ui.mixin.LabelElement.call(this,t),d.ui.mixin.FlaggedElement.call(this,t),d.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$button},t)),this.connect(this,{click:"onAction"}),this.$button.append(this.$icon,this.$label,this.$indicator),this.$element.addClass("oo-ui-toggleButtonWidget").append(this.$button),this.setTitledElement(this.$button)},d.inheritClass(d.ui.ToggleButtonWidget,d.ui.ToggleWidget),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.ButtonElement),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.IconElement),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.IndicatorElement),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.LabelElement),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.FlaggedElement),d.mixinClass(d.ui.ToggleButtonWidget,d.ui.mixin.TabIndexedElement),d.ui.ToggleButtonWidget.static.tagName="span",d.ui.ToggleButtonWidget.prototype.onAction=function(){this.setValue(!this.value)},d.ui.ToggleButtonWidget.prototype.setValue=function(t){return(t=!!t)!==this.value&&(this.$button&&this.$button.attr("aria-pressed",t.toString()),this.setActive(t)),d.ui.ToggleButtonWidget.super.prototype.setValue.call(this,t),this},d.ui.ToggleButtonWidget.prototype.setButtonElement=function(t){this.$button&&this.$button.removeAttr("aria-pressed"),d.ui.mixin.ButtonElement.prototype.setButtonElement.call(this,t),this.$button.attr("aria-pressed",this.value.toString())},d.ui.OutlineControlsWidget=function(t,e){d.isPlainObject(t)&&void 0===e&&(t=(e=t).outline),d.ui.OutlineControlsWidget.super.call(this,e=e||{}),d.ui.mixin.GroupElement.call(this,e),this.outline=t,this.$movers=$("<div>"),this.upButton=new d.ui.ButtonWidget({framed:!1,icon:"upTriangle",title:d.ui.msg("ooui-outline-control-move-up")}),this.downButton=new d.ui.ButtonWidget({framed:!1,icon:"downTriangle",title:d.ui.msg("ooui-outline-control-move-down")}),this.removeButton=new d.ui.ButtonWidget({framed:!1,icon:"trash",title:d.ui.msg("ooui-outline-control-remove")}),this.abilities={move:!0,remove:!0},t.connect(this,{select:"onOutlineChange",add:"onOutlineChange",remove:"onOutlineChange"}),this.upButton.connect(this,{click:["emit","move",-1]}),this.downButton.connect(this,{click:["emit","move",1]}),this.removeButton.connect(this,{click:["emit","remove"]}),this.$element.addClass("oo-ui-outlineControlsWidget"),this.$group.addClass("oo-ui-outlineControlsWidget-items"),this.$movers.addClass("oo-ui-outlineControlsWidget-movers").append(this.upButton.$element,this.downButton.$element,this.removeButton.$element),this.$element.append(this.$icon,this.$group,this.$movers),this.setAbilities(e.abilities||{})},d.inheritClass(d.ui.OutlineControlsWidget,d.ui.Widget),d.mixinClass(d.ui.OutlineControlsWidget,d.ui.mixin.GroupElement),d.ui.OutlineControlsWidget.prototype.setAbilities=function(t){for(var e in this.abilities)void 0!==t[e]&&(this.abilities[e]=!!t[e]);this.onOutlineChange()},d.ui.OutlineControlsWidget.prototype.onOutlineChange=function(){var t,e,i=this.outline.getItems(),o=this.outline.findSelectedItem(),n=this.abilities.move&&o&&o.isMovable(),s=this.abilities.remove&&o&&o.isRemovable();if(n){for(var l=-1,u=i.length;++l<u;)if(i[l].isMovable()){t=i[l];break}for(l=u;l--;)if(i[l].isMovable()){e=i[l];break}}this.upButton.setDisabled(!n||o===t),this.downButton.setDisabled(!n||o===e),this.removeButton.setDisabled(!s)},d.ui.OutlineOptionWidget=function(t){d.ui.OutlineOptionWidget.super.call(this,t=t||{}),this.movable=!!t.movable,this.removable=!!t.removable,this.$element.addClass("oo-ui-outlineOptionWidget"),this.setLevel(t.level)},d.inheritClass(d.ui.OutlineOptionWidget,d.ui.DecoratedOptionWidget),d.ui.OutlineOptionWidget.static.highlightable=!0,d.ui.OutlineOptionWidget.static.scrollIntoViewOnSelect=!0,d.ui.OutlineOptionWidget.static.levelClass="oo-ui-outlineOptionWidget-level-",d.ui.OutlineOptionWidget.static.levels=3,d.ui.OutlineOptionWidget.prototype.isMovable=function(){return this.movable},d.ui.OutlineOptionWidget.prototype.isRemovable=function(){return this.removable},d.ui.OutlineOptionWidget.prototype.getLevel=function(){return this.level},d.ui.OutlineOptionWidget.prototype.setMovable=function(t){return this.movable=!!t,this.updateThemeClasses(),this},d.ui.OutlineOptionWidget.prototype.setRemovable=function(t){return this.removable=!!t,this.updateThemeClasses(),this},d.ui.OutlineOptionWidget.prototype.setLevel=function(t){var e,i;return this.level!==(t=t||0)&&(e=this.constructor.static.levels,i=this.constructor.static.levelClass,void 0!==this.level&&this.$element.removeClass(i+this.level),this.level=0<t?Math.min(t,e-1):0,this.$element.addClass(i+this.level),this.updateThemeClasses()),this},d.ui.OutlineSelectWidget=function(t){d.ui.OutlineSelectWidget.super.call(this,t),d.ui.mixin.TabIndexedElement.call(this,t),this.$element.on({focus:this.bindDocumentKeyDownListener.bind(this),blur:this.unbindDocumentKeyDownListener.bind(this)}),this.$element.addClass("oo-ui-outlineSelectWidget")},d.inheritClass(d.ui.OutlineSelectWidget,d.ui.SelectWidget),d.mixinClass(d.ui.OutlineSelectWidget,d.ui.mixin.TabIndexedElement),d.ui.ButtonOptionWidget=function(t){d.ui.ButtonOptionWidget.super.call(this,t=t||{}),d.ui.mixin.ButtonElement.call(this,t),d.ui.mixin.IconElement.call(this,t),d.ui.mixin.IndicatorElement.call(this,t),this.$element.addClass("oo-ui-buttonOptionWidget"),this.$button.append(this.$icon,this.$label,this.$indicator),this.$element.append(this.$button),this.setTitledElement(this.$button)},d.inheritClass(d.ui.ButtonOptionWidget,d.ui.OptionWidget),d.mixinClass(d.ui.ButtonOptionWidget,d.ui.mixin.ButtonElement),d.mixinClass(d.ui.ButtonOptionWidget,d.ui.mixin.IconElement),d.mixinClass(d.ui.ButtonOptionWidget,d.ui.mixin.IndicatorElement),d.ui.ButtonOptionWidget.static.cancelButtonMouseDownEvents=!1,d.ui.ButtonOptionWidget.static.highlightable=!1,d.ui.ButtonOptionWidget.prototype.setSelected=function(t){return d.ui.ButtonOptionWidget.super.prototype.setSelected.call(this,t),this.constructor.static.selectable&&this.setActive(t),this},d.ui.ButtonSelectWidget=function(t){d.ui.ButtonSelectWidget.super.call(this,t),d.ui.mixin.TabIndexedElement.call(this,t),this.$element.on({focus:this.bindDocumentKeyDownListener.bind(this),blur:this.unbindDocumentKeyDownListener.bind(this)}),this.$element.addClass("oo-ui-buttonSelectWidget")},d.inheritClass(d.ui.ButtonSelectWidget,d.ui.SelectWidget),d.mixinClass(d.ui.ButtonSelectWidget,d.ui.mixin.TabIndexedElement),d.ui.TabOptionWidget=function(t){(t=t||{}).href&&(t=$.extend({$label:$("<a>").attr("href",t.href)},t)),d.ui.TabOptionWidget.super.call(this,t),this.$element.addClass("oo-ui-tabOptionWidget").attr("role","tab")},d.inheritClass(d.ui.TabOptionWidget,d.ui.OptionWidget),d.ui.TabOptionWidget.static.highlightable=!1,d.ui.TabOptionWidget.static.scrollIntoViewOnSelect=!0,d.ui.TabOptionWidget.prototype.scrollElementIntoView=function(t){var e;return d.ui.isMobile()&&this.getElementGroup()?(e=Math.max((this.getElementGroup().$element[0].clientWidth-this.$element[0].clientWidth)/2,0),d.ui.TabOptionWidget.super.prototype.scrollElementIntoView.call(this,$.extend({padding:{left:e,right:e}},t))):d.ui.TabOptionWidget.super.prototype.scrollElementIntoView.call(this)},d.ui.TabSelectWidget=function(t){d.ui.TabSelectWidget.super.call(this,t),d.ui.mixin.TabIndexedElement.call(this,t),this.$element.on({focus:this.bindDocumentKeyDownListener.bind(this),blur:this.unbindDocumentKeyDownListener.bind(this)}),this.$element.addClass("oo-ui-tabSelectWidget").attr("role","tablist"),this.toggleFramed(void 0===t.framed||t.framed),d.ui.isMobile()&&this.$element.addClass("oo-ui-tabSelectWidget-mobile")},d.inheritClass(d.ui.TabSelectWidget,d.ui.SelectWidget),d.mixinClass(d.ui.TabSelectWidget,d.ui.mixin.TabIndexedElement),d.ui.TabSelectWidget.prototype.isFramed=function(){return this.framed},d.ui.TabSelectWidget.prototype.toggleFramed=function(t){return(t=void 0===t?!this.framed:!!t)!==this.framed&&(this.framed=t,this.$element.toggleClass("oo-ui-tabSelectWidget-frameless",!t).toggleClass("oo-ui-tabSelectWidget-framed",t)),this},d.ui.ButtonMenuSelectWidget=function(t){d.ui.ButtonMenuSelectWidget.super.call(this,t=t||{}),this.$overlay=(!0===t.$overlay?d.ui.getDefaultOverlay():t.$overlay)||this.$element;var e=t.menuClass||d.ui.MenuSelectWidget;this.clearOnSelect=!1!==t.clearOnSelect,this.menu=new e($.extend({widget:this,$floatableContainer:this.$element},t.menu)),this.connect(this,{click:"onButtonMenuClick"}),this.getMenu().connect(this,{select:"onMenuSelect",toggle:"onMenuToggle"}),this.$button.attr({"aria-expanded":"false","aria-haspopup":"true","aria-owns":this.menu.getElementId()}),this.$element.addClass("oo-ui-buttonMenuSelectWidget"),this.$overlay.append(this.menu.$element)},d.inheritClass(d.ui.ButtonMenuSelectWidget,d.ui.ButtonWidget),d.ui.ButtonMenuSelectWidget.prototype.getMenu=function(){return this.menu},d.ui.ButtonMenuSelectWidget.prototype.onMenuSelect=function(t){this.clearOnSelect&&t&&this.getMenu().selectItem()},d.ui.ButtonMenuSelectWidget.prototype.onMenuToggle=function(t){this.$element.toggleClass("oo-ui-buttonElement-pressed",t)},d.ui.ButtonMenuSelectWidget.prototype.onButtonMenuClick=function(){this.menu.toggle()},d.ui.TagItemWidget=function(t){d.ui.TagItemWidget.super.call(this,t=t||{}),d.ui.mixin.ItemWidget.call(this),d.ui.mixin.LabelElement.call(this,t),d.ui.mixin.FlaggedElement.call(this,t),d.ui.mixin.TabIndexedElement.call(this,t),d.ui.mixin.DraggableElement.call(this,t),this.valid=void 0===t.valid||!!t.valid,this.fixed=!!t.fixed,this.closeButton=new d.ui.ButtonWidget({framed:!1,icon:"close",tabIndex:-1,title:d.ui.msg("ooui-item-remove")}),this.closeButton.setDisabled(this.isDisabled()),this.closeButton.connect(this,{click:"remove"}),this.$element.on("click",this.select.bind(this)).on("keydown",this.onKeyDown.bind(this)).on("mousedown",function(t){t.stopPropagation()}),this.$element.addClass("oo-ui-tagItemWidget").append(this.$label,this.closeButton.$element)},d.inheritClass(d.ui.TagItemWidget,d.ui.Widget),d.mixinClass(d.ui.TagItemWidget,d.ui.mixin.ItemWidget),d.mixinClass(d.ui.TagItemWidget,d.ui.mixin.LabelElement),d.mixinClass(d.ui.TagItemWidget,d.ui.mixin.FlaggedElement),d.mixinClass(d.ui.TagItemWidget,d.ui.mixin.TabIndexedElement),d.mixinClass(d.ui.TagItemWidget,d.ui.mixin.DraggableElement),d.ui.TagItemWidget.prototype.setFixed=function(t){return t=void 0===t?!this.fixed:!!t,this.fixed!==t&&(this.fixed=t,this.closeButton&&this.closeButton.toggle(!this.fixed),this.fixed||!this.elementGroup||this.elementGroup.isDraggable()||this.toggleDraggable(!this.fixed),this.$element.toggleClass("oo-ui-tagItemWidget-fixed",this.fixed),this.emit("fixed",this.isFixed())),this},d.ui.TagItemWidget.prototype.isFixed=function(){return this.fixed},d.ui.TagItemWidget.prototype.remove=function(){this.isDisabled()||this.isFixed()||this.emit("remove")},d.ui.TagItemWidget.prototype.onKeyDown=function(t){var e;return this.isDisabled()||this.isFixed()||t.keyCode!==d.ui.Keys.BACKSPACE&&t.keyCode!==d.ui.Keys.DELETE?t.keyCode===d.ui.Keys.ENTER?(this.select(),!1):t.keyCode===d.ui.Keys.LEFT||t.keyCode===d.ui.Keys.RIGHT?(e="rtl"===d.ui.Element.static.getDir(this.$element)?{left:"forwards",right:"backwards"}:{left:"backwards",right:"forwards"},this.emit("navigate",t.keyCode===d.ui.Keys.LEFT?e.left:e.right),!1):void 0:(this.remove(),!1)},d.ui.TagItemWidget.prototype.select=function(){this.isDisabled()||this.emit("select")},d.ui.TagItemWidget.prototype.toggleValid=function(t){t=void 0===t?!this.valid:!!t,this.valid!==t&&(this.valid=t,this.setFlags({invalid:!this.valid}),this.emit("valid",this.valid))},d.ui.TagItemWidget.prototype.isValid=function(){return this.valid},d.ui.TagMultiselectWidget=function(t){var e,i=window.requestAnimationFrame||setTimeout,o=this,n=$("<span>").addClass("oo-ui-tagMultiselectWidget-focusTrap");d.ui.TagMultiselectWidget.super.call(this,t=t||{}),d.ui.mixin.GroupWidget.call(this,t),d.ui.mixin.IndicatorElement.call(this,t),d.ui.mixin.IconElement.call(this,t),d.ui.mixin.TabIndexedElement.call(this,t),d.ui.mixin.FlaggedElement.call(this,t),d.ui.mixin.DraggableGroupElement.call(this,t),d.ui.mixin.TitledElement.call(this,t),this.toggleDraggable(void 0===t.allowReordering||!!t.allowReordering),this.inputPosition=-1<this.constructor.static.allowedInputPositions.indexOf(t.inputPosition)?t.inputPosition:"inline",this.allowEditTags=void 0===t.allowEditTags||!!t.allowEditTags,this.allowArbitrary=!!t.allowArbitrary,this.allowDuplicates=!!t.allowDuplicates,this.allowedValues=t.allowedValues||[],this.allowDisplayInvalidTags=t.allowDisplayInvalidTags,this.hasInput="none"!==this.inputPosition,this.tagLimit=t.tagLimit,this.height=null,this.valid=!0,this.$content=$("<div>").addClass("oo-ui-tagMultiselectWidget-content"),this.$handle=$("<div>").addClass("oo-ui-tagMultiselectWidget-handle").append(this.$indicator,this.$icon,this.$content.append(this.$group.addClass("oo-ui-tagMultiselectWidget-group"))),this.aggregate({remove:"itemRemove",navigate:"itemNavigate",select:"itemSelect",fixed:"itemFixed"}),this.connect(this,{itemRemove:"onTagRemove",itemSelect:"onTagSelect",itemFixed:"onTagFixed",itemNavigate:"onTagNavigate",change:"onChangeTags"}),this.$handle.on({mousedown:this.onMouseDown.bind(this)}),this.$element.addClass("oo-ui-tagMultiselectWidget").append(this.$handle),this.hasInput?(t.inputWidget?this.input=t.inputWidget:this.input=new d.ui.TextInputWidget($.extend({placeholder:t.placeholder,classes:["oo-ui-tagMultiselectWidget-input"]},t.input)),this.input.setDisabled(this.isDisabled()),e={focus:this.onInputFocus.bind(this),blur:this.onInputBlur.bind(this),"propertychange change click mouseup keydown keyup input cut paste select focus":d.ui.debounce(this.updateInputSize.bind(this)),keydown:this.onInputKeyDown.bind(this),keypress:this.onInputKeyPress.bind(this)},this.input.$input.on(e),this.inputPlaceholder=this.input.$input.attr("placeholder"),"outline"===this.inputPosition?(this.input.$element.css("max-width","inherit"),this.$element.addClass("oo-ui-tagMultiselectWidget-outlined").append(this.input.$element)):(this.$element.addClass("oo-ui-tagMultiselectWidget-inlined"),this.$group.append(this.input.$input))):this.$content.append(n),this.setTabIndexedElement(this.hasInput?this.input.$input:n),t.selected&&this.setValue(t.selected),i(function(){o.hasInput&&o.updateInputSize()})},d.inheritClass(d.ui.TagMultiselectWidget,d.ui.Widget),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.GroupWidget),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.DraggableGroupElement),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.IndicatorElement),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.IconElement),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.TabIndexedElement),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.FlaggedElement),d.mixinClass(d.ui.TagMultiselectWidget,d.ui.mixin.TitledElement),d.ui.TagMultiselectWidget.static.allowedInputPositions=["inline","outline","none"],d.ui.TagMultiselectWidget.prototype.onMouseDown=function(t){if(!(this.isDisabled()||this.hasInput&&t.target===this.input.$input[0]||t.which!==d.ui.MouseButtons.LEFT))return this.focus(),!1},d.ui.TagMultiselectWidget.prototype.onInputKeyPress=function(t){var e,i=t.metaKey||t.ctrlKey;if(!this.isDisabled())return t.which===d.ui.Keys.ENTER&&(e=this.doInputEnter(t,i)),this.updateInputSize(),e},d.ui.TagMultiselectWidget.prototype.onInputKeyDown=function(t){var e,i,o=this,n=t.metaKey||t.ctrlKey;if(!this.isDisabled()){if(t.keyCode===d.ui.Keys.BACKSPACE)return this.doInputBackspace(t,n);if(t.keyCode===d.ui.Keys.ESCAPE)return this.doInputEscape(t);if(t.keyCode===d.ui.Keys.LEFT||t.keyCode===d.ui.Keys.RIGHT){var s="rtl"===d.ui.Element.static.getDir(this.$element)?{left:"forwards",right:"backwards"}:{left:"backwards",right:"forwards"},s=t.keyCode===d.ui.Keys.LEFT?s.left:s.right;if(!this.hasInput||(e=s,i=o.input.getRange(),o=o.hasInput&&o.input.getValue(),"forwards"===e&&i.to>o.length-1)||"backwards"===e&&i.from<=0)return this.doInputArrow(t,s,n)}}},d.ui.TagMultiselectWidget.prototype.onInputFocus=function(){this.$element.addClass("oo-ui-tagMultiselectWidget-focus"),this.toggleValid(!0)},d.ui.TagMultiselectWidget.prototype.onInputBlur=function(){this.changing||(this.$element.removeClass("oo-ui-tagMultiselectWidget-focus"),this.addTagFromInput(),this.toggleValid(this.checkValidity()&&(!this.hasInput||!this.input.getValue())))},d.ui.TagMultiselectWidget.prototype.doInputEnter=function(){return this.addTagFromInput(),!1},d.ui.TagMultiselectWidget.prototype.doInputBackspace=function(t,e){var i,o;if("inline"===this.inputPosition&&""===this.input.getValue()&&!this.isEmpty())return(i=(i=this.getItems())[i.length-1]).isDisabled()||i.isFixed()||(this.removeItems([i]),e)||("string"==typeof i.getLabel()?o=i.getLabel():i.getLabel()instanceof $&&(o=i.getLabel().text()),this.input.setValue(o)),!1},d.ui.TagMultiselectWidget.prototype.doInputEscape=function(){this.clearInput()},d.ui.TagMultiselectWidget.prototype.doInputArrow=function(t,e){"inline"!==this.inputPosition||this.isEmpty()||"backwards"!==e||this.getPreviousItem().focus()},d.ui.TagMultiselectWidget.prototype.onTagSelect=function(t){this.hasInput&&this.allowEditTags&&!t.isFixed()&&(this.input.getValue()&&this.addTagFromInput(),this.input.setValue(t.getLabel()),this.removeItems([t]),this.focus())},d.ui.TagMultiselectWidget.prototype.onTagFixed=function(t){for(var e=this.getItems(),i=0;i<e.length&&(e[i]===t||e[i].isFixed());i++);this.addItems([t],i)},d.ui.TagMultiselectWidget.prototype.onChangeTags=function(){var t,e=this.isUnderLimit();this.changing=!0,this.toggleValid(this.checkValidity()),this.hasInput&&(this.updateInputSize(),e||this.input.setValue(""),"outline"===this.inputPosition?(this.input.$input.attr("placeholder",e?this.inputPlaceholder:""),this.input.setDisabled(!e)):(t=document.activeElement===this.input.$input[0],this.$group.append(this.input.$input),this.input.$input.toggleClass("oo-ui-element-hidden",!e),t&&e&&this.input.focus())),this.updateIfHeightChanged(),this.changing=!1},d.ui.TagMultiselectWidget.prototype.setDisabled=function(e){d.ui.TagMultiselectWidget.super.prototype.setDisabled.call(this,e),this.hasInput&&this.input&&(e||this.updateInputSize(),this.input.setDisabled(!!e||!this.isUnderLimit())),this.items&&this.getItems().forEach(function(t){t.setDisabled(!!e)})},d.ui.TagMultiselectWidget.prototype.onTagRemove=function(t){this.removeTagByData(t.getData())},d.ui.TagMultiselectWidget.prototype.onTagNavigate=function(t,e){var i=this.getItems()[0];"forwards"===e?this.getNextItem(t).focus():"inline"!==!this.inputPosition&&t===i||this.getPreviousItem(t).focus()},d.ui.TagMultiselectWidget.prototype.getTagInfoFromInput=function(){var t=this.input.getValue();return{data:t,label:t}},d.ui.TagMultiselectWidget.prototype.addTagFromInput=function(){var t=this.getTagInfoFromInput();t.data&&this.addTag(t.data,t.label)&&this.clearInput()},d.ui.TagMultiselectWidget.prototype.clearInput=function(){this.input.setValue("")},d.ui.TagMultiselectWidget.prototype.isDuplicateData=function(t){return!!this.findItemFromData(t)},d.ui.TagMultiselectWidget.prototype.isAllowedData=function(e){return!(!this.allowDuplicates&&this.isDuplicateData(e)||!this.allowArbitrary&&!this.getAllowedValues().some(function(t){return e===t}))},d.ui.TagMultiselectWidget.prototype.getAllowedValues=function(){return this.allowedValues},d.ui.TagMultiselectWidget.prototype.addAllowedValue=function(t){-1===this.allowedValues.indexOf(t)&&this.allowedValues.push(t)},d.ui.TagMultiselectWidget.prototype.getValue=function(){return this.getItems().filter(function(t){return t.isValid()}).map(function(t){return t.getData()})},d.ui.TagMultiselectWidget.prototype.setValue=function(t){t=Array.isArray(t)?t:[t],this.clearItems(),t.forEach(function(t){"object"==typeof t?this.addTag(t.data,t.label):this.addTag(String(t))}.bind(this))},d.ui.TagMultiselectWidget.prototype.addTag=function(t,e){var i=this.isAllowedData(t);return!(!this.isUnderLimit()||!i&&!this.allowDisplayInvalidTags||((t=this.createTagItemWidget(t,e)).toggleValid(i),this.addItems([t]),0))},d.ui.TagMultiselectWidget.prototype.isUnderLimit=function(){return!this.tagLimit||this.getItemCount()<this.tagLimit},d.ui.TagMultiselectWidget.prototype.removeTagByData=function(t){t=this.findItemFromData(t);this.removeItems([t])},d.ui.TagMultiselectWidget.prototype.createTagItemWidget=function(t,e){return new d.ui.TagItemWidget({data:t,label:e||t})},d.ui.TagMultiselectWidget.prototype.getNextItem=function(t){var e=this.items.indexOf(t);return void 0===t||-1===e?this.items[0]:e===this.items.length-1?this.hasInput?this.input:this.items[0]:this.items[e+1]},d.ui.TagMultiselectWidget.prototype.getPreviousItem=function(t){var e=this.items.indexOf(t);return void 0===t||-1===e?this.items[this.items.length-1]:0===e?this.hasInput?this.input:this.items[this.items.length-1]:this.items[e-1]},d.ui.TagMultiselectWidget.prototype.updateInputSize=function(){var t,e,i;"inline"!==this.inputPosition||this.isDisabled()?this.updateIfHeightChanged():0!==this.input.$input[0].scrollWidth&&(this.input.$input.css("width","1em"),t=this.$group.children().last(),i=d.ui.Element.static.getDir(this.$handle),e=this.input.$input.attr("placeholder"),void 0===this.contentWidthWithPlaceholder&&""===this.input.getValue()&&void 0!==e&&(this.input.$input.val(e),this.contentWidthWithPlaceholder=this.input.$input[0].scrollWidth,this.input.$input.val("")),(e=Math.max(this.input.$input[0].scrollWidth,void 0===this.contentWidthWithPlaceholder?0:this.contentWidthWithPlaceholder))<this.input.$input.width()||(i=0===t.length?this.$content.innerWidth():"ltr"===i?this.$content.innerWidth()-t.position().left-t.outerWidth():t.position().left,(i-=13)<e&&(i=this.$content.innerWidth()-13),this.input.$input.width(Math.floor(i))),this.updateIfHeightChanged())},d.ui.TagMultiselectWidget.prototype.updateIfHeightChanged=function(){var t=this.$element.height();t!==this.height&&(this.height=t,this.emit("resize"))},d.ui.TagMultiselectWidget.prototype.checkValidity=function(){return this.getItems().every(function(t){return t.isValid()})},d.ui.TagMultiselectWidget.prototype.toggleValid=function(t){t=void 0===t?!this.valid:!!t,this.valid!==t&&(this.valid=t,this.setFlags({invalid:!this.valid}),this.emit("valid",this.valid))},d.ui.TagMultiselectWidget.prototype.isValid=function(){return this.valid},d.ui.PopupTagMultiselectWidget=function(t){var e,i={popup:{}};t=t||{},d.ui.PopupTagMultiselectWidget.super.call(this,$.extend({inputPosition:"none"},t)),this.$overlay=(!0===t.$overlay?d.ui.getDefaultOverlay():t.$overlay)||this.$element,t.popup||(e=new d.ui.TextInputWidget,i.popupInput=e,i.popup.$content=e.$element,i.popup.padded=!0,this.$element.addClass("oo-ui-popupTagMultiselectWidget-defaultPopup")),i.popup.$overlay=this.$overlay,i.popup.$autoCloseIgnore=this.hasInput?this.input.$element.add(this.$overlay):this.$overlay,t=$.extend(i,t),d.ui.mixin.PopupElement.call(this,t),this.hasInput&&this.input.$input.on("focus",this.popup.toggle.bind(this.popup,!0)),this.popupInput=t.popupInput,this.popupInput&&this.popupInput.connect(this,{enter:"onPopupInputEnter"}),this.on("resize",this.popup.updateDimensions.bind(this.popup)),this.popup.connect(this,{toggle:"onPopupToggle"}),this.$tabIndexed.on("focus",this.onFocus.bind(this)),this.$element.append(this.popup.$element).addClass("oo-ui-popupTagMultiselectWidget"),d.ui.warnDeprecation("PopupTagMultiselectWidget: Deprecated widget. Use MenuTagMultiselectWidget instead. See T208821.")},d.inheritClass(d.ui.PopupTagMultiselectWidget,d.ui.TagMultiselectWidget),d.mixinClass(d.ui.PopupTagMultiselectWidget,d.ui.mixin.PopupElement),d.ui.PopupTagMultiselectWidget.prototype.onFocus=function(){this.popup.toggle(!0)},d.ui.PopupTagMultiselectWidget.prototype.onPopupToggle=function(t){t&&this.popupInput&&this.popupInput.focus()},d.ui.PopupTagMultiselectWidget.prototype.onPopupInputEnter=function(){this.popupInput&&(this.addTagByPopupValue(this.popupInput.getValue()),this.popupInput.setValue(""))},d.ui.PopupTagMultiselectWidget.prototype.onTagSelect=function(t){this.popupInput&&this.allowEditTags?(this.popupInput.setValue(t.getData()),this.removeItems([t]),this.popup.toggle(!0),this.popupInput.focus()):d.ui.PopupTagMultiselectWidget.super.prototype.onTagSelect.call(this,t)},d.ui.PopupTagMultiselectWidget.prototype.addTagByPopupValue=function(t,e){this.addTag(t,e)},d.ui.MenuTagMultiselectWidget=function(t){var e=$([]),i=(t=t||{}).options||[],o=t.selected||[],i=i.concat(o.map(function(t){return"string"==typeof t?{data:t,label:t}:t})),n=d.copy(t);n.options=i,n.selected=o,d.ui.MenuTagMultiselectWidget.super.call(this,n),e=e.add(this.$group),this.hasInput&&(e=e.add(this.input.$element)),this.$overlay=(!0===t.$overlay?d.ui.getDefaultOverlay():t.$overlay)||this.$element,this.clearInputOnChoose=void 0===t.clearInputOnChoose||!!t.clearInputOnChoose,this.menu=this.createMenuWidget($.extend({widget:this,hideOnChoose:!1,input:this.hasInput?this.input:null,$input:this.hasInput?this.input.$input:null,filterFromInput:!!this.hasInput,highlightOnFilter:!this.allowArbitrary,multiselect:!0,$autoCloseIgnore:e,$floatableContainer:(this.hasInput&&"outline"===this.inputPosition?this.input:this).$element,$overlay:this.$overlay,disabled:this.isDisabled()},t.menu)),this.addOptions(i),this.menu.connect(this,{choose:"onMenuChoose",toggle:"onMenuToggle"}),this.hasInput&&this.input.connect(this,{change:"onInputChange"}),this.connect(this,{resize:"onResize"}),this.$overlay.append(this.menu.$element),this.$element.addClass("oo-ui-menuTagMultiselectWidget"),this.menu.$focusOwner.removeAttr("aria-expanded"),0<o.length&&this.setValue(o)},d.inheritClass(d.ui.MenuTagMultiselectWidget,d.ui.TagMultiselectWidget),d.ui.MenuTagMultiselectWidget.prototype.onResize=function(){this.menu.position()},d.ui.MenuTagMultiselectWidget.prototype.onInputFocus=function(){var t=this.isValid();d.ui.MenuTagMultiselectWidget.super.prototype.onInputFocus.call(this),this.menu.toggle(!0),t||this.menu.highlightItem()},d.ui.MenuTagMultiselectWidget.prototype.onInputChange=function(){this.menu.toggle(!0)},d.ui.MenuTagMultiselectWidget.prototype.onMenuChoose=function(t,e){e&&!this.findItemFromData(t.getData())?this.addTag(t.getData(),t.getLabel()):this.removeTagByData(t.getData()),this.hasInput&&this.clearInputOnChoose&&this.input.setValue("")},d.ui.MenuTagMultiselectWidget.prototype.onMenuToggle=function(t){t||(this.menu.highlightItem(null),this.menu.scrollToTop()),setTimeout(function(){this.menu.$focusOwner.removeAttr("aria-expanded")}.bind(this))},d.ui.MenuTagMultiselectWidget.prototype.onTagSelect=function(t){var e=this.menu.findItemFromData(t.getData());this.allowArbitrary?d.ui.MenuTagMultiselectWidget.super.prototype.onTagSelect.call(this,t):(this.hasInput&&this.menu.filterFromInput&&this.input.setValue(""),this.focus(),this.menu.highlightItem(e),this.menu.scrollItemIntoView(e))},d.ui.MenuTagMultiselectWidget.prototype.removeItems=function(t){var e=this;d.ui.MenuTagMultiselectWidget.super.prototype.removeItems.call(this,t),t.forEach(function(t){t=e.menu.findItemFromData(t.getData());t&&e.menu.unselectItem(t)})},d.ui.MenuTagMultiselectWidget.prototype.setValue=function(t){t=Array.isArray(t)?t:[t],this.menu&&(this.clearItems(),t.forEach(function(t){"string"==typeof t?e=i=t:(e=t.data,i=t.label);var e,i,t=this.menu.getItemFromLabel(i)||this.menu.findItemFromData(e);t?(this.addTag(t.getData(),t.getLabel()),this.menu.selectItem(t)):this.allowArbitrary&&this.addTag(e,i)}.bind(this)))},d.ui.MenuTagMultiselectWidget.prototype.setDisabled=function(t){d.ui.MenuTagMultiselectWidget.super.prototype.setDisabled.call(this,t),this.menu&&this.menu.setDisabled(t)},d.ui.MenuTagMultiselectWidget.prototype.initializeMenuSelection=function(){this.menu.highlightItem(this.allowArbitrary?null:this.menu.findFirstSelectableItem());var t=this.menu.findHighlightedItem();t&&this.menu.scrollItemIntoView(t)},d.ui.MenuTagMultiselectWidget.prototype.getTagInfoFromInput=function(){var t=this.input.getValue(),e=this.menu.findHighlightedItem()||this.menu.findItemFromData(t);return{data:e?e.getData():t,label:e?e.getLabel():t}},d.ui.MenuTagMultiselectWidget.prototype.createMenuWidget=function(t){return new d.ui.MenuSelectWidget(t)},d.ui.MenuTagMultiselectWidget.prototype.addOptions=function(t){var e=this,i=[],o=[];t.forEach(function(t){-1===i.indexOf(t.data)&&(i.push(t.data),o.push(e.createMenuOptionWidget(t.data,t.label,t.icon)))}),this.menu.addItems(o)},d.ui.MenuTagMultiselectWidget.prototype.createMenuOptionWidget=function(t,e,i){return new d.ui.MenuOptionWidget({data:t,label:e||t,icon:i})},d.ui.MenuTagMultiselectWidget.prototype.getMenu=function(){return this.menu},d.ui.MenuTagMultiselectWidget.prototype.getAllowedValues=function(){var t=[];return this.menu&&(t=this.menu.getItems().map(function(t){return t.getData()})),this.allowedValues.concat(t)},d.ui.SelectFileWidget=function(t){var e=this.constructor.static.isSupported(),e=(t=$.extend({notsupported:d.ui.msg("ooui-selectfile-not-supported"),droppable:!0,buttonOnly:!1,showDropTarget:!1,thumbnailSizeLimit:20},t),e||(t.disabled=!0),d.ui.SelectFileWidget.super.call(this,t),d.ui.mixin.PendingElement.call(this),e||this.info.setValue(t.notsupported),t.droppable&&e);this.showDropTarget=e&&t.showDropTarget,this.thumbnailSizeLimit=t.thumbnailSizeLimit,this.showDropTarget?(this.selectButton.setIcon("upload"),this.$element.addClass("oo-ui-selectFileWidget-dropTarget").on({click:this.onDropTargetClick.bind(this)}).append(this.info.$element,this.selectButton.$element,$("<span>").addClass("oo-ui-selectFileWidget-dropLabel").text(d.ui.msg(this.multiple?"ooui-selectfile-dragdrop-placeholder-multiple":"ooui-selectfile-dragdrop-placeholder"))),this.multiple||(this.$thumbnail=$("<div>").addClass("oo-ui-selectFileWidget-thumbnail"),this.setPendingElement(this.$thumbnail),this.$element.addClass("oo-ui-selectFileWidget-withThumbnail").prepend(this.$thumbnail)),this.fieldLayout.$element.remove()):t.buttonOnly&&(this.selectButton.$element.addClass(this.$element.attr("class")).addClass("oo-ui-selectFileWidget-buttonOnly"),this.$element=this.selectButton.$element),e&&(t=this.onDragEnterOrOver.bind(this),this.$element.on({dragenter:t,dragover:t,dragleave:this.onDragLeave.bind(this),drop:this.onDrop.bind(this)})),this.$input.on("click",function(t){t.stopPropagation()}),this.$element.addClass("oo-ui-selectFileWidget"),this.updateUI()},d.inheritClass(d.ui.SelectFileWidget,d.ui.SelectFileInputWidget),d.mixinClass(d.ui.SelectFileWidget,d.ui.mixin.PendingElement),d.ui.SelectFileWidget.static.isSupported=function(){var t;return null===d.ui.SelectFileWidget.static.isSupportedCache&&(t=$("<input>").attr("type","file"),d.ui.SelectFileWidget.static.isSupportedCache=void 0!==t[0].files),d.ui.SelectFileWidget.static.isSupportedCache},d.ui.SelectFileWidget.static.isSupportedCache=null,d.ui.SelectFileWidget.prototype.getValue=function(){return this.multiple?this.currentFiles:this.currentFiles[0]},d.ui.SelectFileWidget.prototype.setValue=function(t){function e(t){return $.extend({},t)}t&&!this.multiple&&(t=t.slice(0,1)),d.compare(t&&t.map(e),this.currentFiles&&this.currentFiles.map(e))||(this.currentFiles=t||[],this.emit("change",this.currentFiles))},d.ui.SelectFileWidget.prototype.getFilename=function(){return this.currentFiles.map(function(t){return t.name}).join(", ")},d.ui.SelectFileWidget.prototype.onEdit=function(){},d.ui.SelectFileWidget.prototype.updateUI=function(){this.selectButton&&this.constructor.static.isSupported()&&(d.ui.SelectFileWidget.super.prototype.updateUI.call(this),this.currentFiles.length?(this.$element.removeClass("oo-ui-selectFileInputWidget-empty"),this.showDropTarget&&(this.multiple||(this.pushPending(),this.loadAndGetImageUrl(this.currentFiles[0]).done(function(t){this.$thumbnail.css("background-image","url( "+t+" )")}.bind(this)).fail(function(){this.$thumbnail.append(new d.ui.IconWidget({icon:"attachment",classes:["oo-ui-selectFileWidget-noThumbnail-icon"]}).$element)}.bind(this)).always(function(){this.popPending()}.bind(this))),this.$element.off("click"))):(this.showDropTarget&&(this.$element.off("click"),this.$element.on({click:this.onDropTargetClick.bind(this)}),this.multiple||this.$thumbnail.empty().css("background-image","")),this.$element.addClass("oo-ui-selectFileInputWidget-empty")))},d.ui.SelectFileWidget.prototype.loadAndGetImageUrl=function(t){var i=$.Deferred(),e=new FileReader;return 0===(d.getProp(t,"type")||"").indexOf("image/")&&t.size<1024*this.thumbnailSizeLimit*1024?(e.onload=function(t){var e=document.createElement("img");e.addEventListener("load",function(){0===e.naturalWidth||0===e.naturalHeight||!1===e.complete?i.reject():i.resolve(t.target.result)}),e.src=t.target.result},e.readAsDataURL(t)):i.reject(),i.promise()},d.ui.SelectFileWidget.prototype.onFileSelected=function(t){this.inputClearing||(t=this.filterFiles(t.target.files||[]),this.inputClearing=!0,this.$input[0].value="",this.inputClearing=!1,this.setValue(t))},d.ui.SelectFileWidget.prototype.onDropTargetClick=function(){if(!this.isDisabled()&&this.$input)return this.$input.trigger("click"),!1},d.ui.SelectFileWidget.prototype.onDragEnterOrOver=function(t){var e=!1,i=t.originalEvent.dataTransfer;return t.preventDefault(),t.stopPropagation(),this.isDisabled()?(this.$element.removeClass("oo-ui-selectFileWidget-canDrop"),!(i.dropEffect="none")):((t=i.items||i.files)&&t.length?this.filterFiles(t).length&&(e=!0):-1!==Array.prototype.indexOf.call(d.getProp(i,"types")||[],"Files")&&(e=!0),this.$element.toggleClass("oo-ui-selectFileWidget-canDrop",e),e||(i.dropEffect="none"),!1)},d.ui.SelectFileWidget.prototype.onDragLeave=function(){this.$element.removeClass("oo-ui-selectFileWidget-canDrop")},d.ui.SelectFileWidget.prototype.onDrop=function(t){var e=t.originalEvent.dataTransfer;return t.preventDefault(),t.stopPropagation(),this.$element.removeClass("oo-ui-selectFileWidget-canDrop"),this.isDisabled()||(t=this.filterFiles(e.files||[]),this.setValue(t)),!1},d.ui.SelectFileWidget.prototype.setDisabled=function(t){t=t||!this.constructor.static.isSupported(),d.ui.SelectFileWidget.super.prototype.setDisabled.call(this,t)},d.ui.SearchWidget=function(t){d.ui.SearchWidget.super.call(this,t=t||{}),this.query=t.input||new d.ui.SearchInputWidget({placeholder:t.placeholder,value:t.value}),this.results=new d.ui.SelectWidget,this.results.setFocusOwner(this.query.$input),this.$query=$("<div>"),this.$results=$("<div>"),this.query.connect(this,{change:"onQueryChange",enter:"onQueryEnter"}),this.query.$input.on("keydown",this.onQueryKeydown.bind(this)),this.$query.addClass("oo-ui-searchWidget-query").append(this.query.$element),this.$results.addClass("oo-ui-searchWidget-results").append(this.results.$element),this.$element.addClass("oo-ui-searchWidget").append(this.$results,this.$query)},d.inheritClass(d.ui.SearchWidget,d.ui.Widget),d.ui.SearchWidget.prototype.onQueryKeydown=function(t){var e,t=t.which===d.ui.Keys.DOWN?1:t.which===d.ui.Keys.UP?-1:0;t&&(e=this.results.findHighlightedItem()||this.results.findSelectedItem(),e=this.results.findRelativeSelectableItem(e,t),this.results.highlightItem(e),e)&&e.scrollElementIntoView()},d.ui.SearchWidget.prototype.onQueryChange=function(){this.results.clearItems()},d.ui.SearchWidget.prototype.onQueryEnter=function(){var t=this.results.findHighlightedItem();t&&this.results.chooseItem(t)},d.ui.SearchWidget.prototype.getQuery=function(){return this.query},d.ui.SearchWidget.prototype.getResults=function(){return this.results}}(OO),function(r){"use strict";r.ui.Toolbar=function(t,e,i){r.isPlainObject(t)&&void 0===i&&(t=(i=t).toolFactory,e=i.toolGroupFactory),r.ui.Toolbar.super.call(this,i=i||{}),r.EventEmitter.call(this),r.ui.mixin.GroupElement.call(this,i),this.toolFactory=t,this.toolGroupFactory=e,this.groupsByName={},this.activeToolGroups=0,this.tools={},this.position=i.position||"top",this.$bar=$("<div>"),this.$after=$("<div>"),this.$actions=$("<div>"),this.$popups=$("<div>"),this.initialized=!1,this.narrow=!1,this.narrowThreshold=null,this.onWindowResizeHandler=this.onWindowResize.bind(this),this.$overlay=(!0===i.$overlay?r.ui.getDefaultOverlay():i.$overlay)||this.$element,this.$element.add(this.$bar).add(this.$group).add(this.$after).add(this.$actions).on("mousedown keydown",this.onPointerDown.bind(this)),this.$bar.addClass("oo-ui-toolbar-bar"),this.$group.addClass("oo-ui-toolbar-tools"),this.$after.addClass("oo-ui-toolbar-tools oo-ui-toolbar-after"),this.$popups.addClass("oo-ui-toolbar-popups"),this.$bar.append(this.$group,this.$after),i.actions&&this.$bar.append(this.$actions.addClass("oo-ui-toolbar-actions")),this.$bar.append($("<div>").css("clear","both")),this.$element.addClass("oo-ui-toolbar oo-ui-toolbar-position-"+this.position).append(this.$bar),this.$overlay.append(this.$popups)},r.inheritClass(r.ui.Toolbar,r.ui.Element),r.mixinClass(r.ui.Toolbar,r.EventEmitter),r.mixinClass(r.ui.Toolbar,r.ui.mixin.GroupElement),r.ui.Toolbar.prototype.getToolFactory=function(){return this.toolFactory},r.ui.Toolbar.prototype.getToolGroupFactory=function(){return this.toolGroupFactory},r.ui.Toolbar.prototype.insertItemElements=function(t){r.ui.mixin.GroupElement.prototype.insertItemElements.apply(this,arguments),"after"===t.align&&this.$after.append(t.$element)},r.ui.Toolbar.prototype.onPointerDown=function(t){var t=$(t.target).closest(".oo-ui-widget"),e=this.$element.closest(".oo-ui-widget");if(!t.length||t[0]===e[0])return!1},r.ui.Toolbar.prototype.onWindowResize=function(){this.setNarrow(this.$bar[0].clientWidth<=this.getNarrowThreshold())},r.ui.Toolbar.prototype.isNarrow=function(){return this.narrow},r.ui.Toolbar.prototype.setNarrow=function(t){t!==this.narrow&&(this.narrow=t,this.$element.add(this.$popups).toggleClass("oo-ui-toolbar-narrow",this.narrow),this.emit("resize"))},r.ui.Toolbar.prototype.getNarrowThreshold=function(){return null===this.narrowThreshold&&(this.narrowThreshold=this.$group[0].offsetWidth+this.$after[0].offsetWidth+this.$actions[0].offsetWidth),this.narrowThreshold},r.ui.Toolbar.prototype.initialize=function(){this.initialized||(this.initialized=!0,$(this.getElementWindow()).on("resize",this.onWindowResizeHandler),this.onWindowResize())},r.ui.Toolbar.prototype.setup=function(t){this.reset();for(var e=[],i=0,o=t.length;i<o;i++){var n=t[i],s=("*"===n.include&&(void 0===n.type&&(n.type="list"),void 0===n.label)&&(n.label=r.ui.msg("ooui-toolbar-more")),this.getToolGroupFactory().lookup(n.type)?n.type:"bar"),s=this.getToolGroupFactory().create(s,this,n);e.push(s),(this.groupsByName[n.name]=s).connect(this,{active:"onToolGroupActive"})}this.addItems(e)},r.ui.Toolbar.prototype.onToolGroupActive=function(t){t?(this.activeToolGroups++,1===this.activeToolGroups&&this.emit("active",!0)):(this.activeToolGroups--,0===this.activeToolGroups&&this.emit("active",!1))},r.ui.Toolbar.prototype.getToolGroupByName=function(t){return this.groupsByName[t]||null},r.ui.Toolbar.prototype.reset=function(){this.groupsByName={},this.tools={};for(var t=0,e=this.items.length;t<e;t++)this.items[t].destroy();this.clearItems()},r.ui.Toolbar.prototype.destroy=function(){$(this.getElementWindow()).off("resize",this.onWindowResizeHandler),this.reset(),this.$element.remove()},r.ui.Toolbar.prototype.isToolAvailable=function(t){return!this.tools[t]},r.ui.Toolbar.prototype.reserveTool=function(t){this.tools[t.getName()]=t},r.ui.Toolbar.prototype.releaseTool=function(t){delete this.tools[t.getName()]},r.ui.Toolbar.prototype.getToolAccelerator=function(){},r.ui.Tool=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolGroup),r.ui.Tool.super.call(this,e=e||{}),this.toolGroup=t,this.toolbar=this.toolGroup.getToolbar(),this.active=!1,this.$title=$("<span>"),this.$accel=$("<span>"),this.$link=$("<a>"),this.title=null,this.checkIcon=new r.ui.IconWidget({icon:"check",classes:["oo-ui-tool-checkIcon"]}),this.displayBothIconAndLabel=(void 0!==e.displayBothIconAndLabel?e:this.constructor.static).displayBothIconAndLabel,this.narrowConfig=e.narrowConfig||this.constructor.static.narrowConfig,r.ui.mixin.IconElement.call(this,e),r.ui.mixin.FlaggedElement.call(this,e),r.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$link},e)),this.toolbar.connect(this,{updateState:"onUpdateState",resize:"onToolbarResize"}),this.$title.addClass("oo-ui-tool-title"),this.$accel.addClass("oo-ui-tool-accel").prop({dir:"ltr",lang:"en"}),this.$link.addClass("oo-ui-tool-link").append(this.checkIcon.$element,this.$icon,this.$title,this.$accel).attr("role","button"),r.ui.isMobile()||this.$link.append(this.$accel),this.$element.data("oo-ui-tool",this).addClass("oo-ui-tool").addClass("oo-ui-tool-name-"+this.constructor.static.name.replace(/^([^/]+)\/([^/]+).*$/,"$1-$2")).append(this.$link),this.setTitle(e.title||this.constructor.static.title)},r.inheritClass(r.ui.Tool,r.ui.Widget),r.mixinClass(r.ui.Tool,r.ui.mixin.IconElement),r.mixinClass(r.ui.Tool,r.ui.mixin.FlaggedElement),r.mixinClass(r.ui.Tool,r.ui.mixin.TabIndexedElement),r.ui.Tool.static.tagName="span",r.ui.Tool.static.name="",r.ui.Tool.static.group="",r.ui.Tool.static.title="",r.ui.Tool.static.displayBothIconAndLabel=!1,r.ui.Tool.static.autoAddToCatchall=!0,r.ui.Tool.static.autoAddToGroup=!0,r.ui.Tool.static.isCompatibleWith=function(){return!1},r.ui.Tool.static.narrowConfig=null,r.ui.Tool.prototype.onUpdateState=null,r.ui.Tool.prototype.onSelect=null,r.ui.Tool.prototype.isActive=function(){return this.active},r.ui.Tool.prototype.setActive=function(t){this.active=!!t,this.$element.toggleClass("oo-ui-tool-active",this.active),this.updateThemeClasses()},r.ui.Tool.prototype.setTitle=function(t){return this.title=r.ui.resolveMsg(t),this.updateTitle(),this.setDisplayBothIconAndLabel(this.displayBothIconAndLabel),this},r.ui.Tool.prototype.setDisplayBothIconAndLabel=function(t){return this.displayBothIconAndLabel=t,this.$element.toggleClass("oo-ui-tool-with-label",!!this.title&&this.displayBothIconAndLabel),this},r.ui.Tool.prototype.getTitle=function(){return this.title},r.ui.Tool.prototype.getName=function(){return this.constructor.static.name},r.ui.Tool.prototype.onToolbarResize=function(){this.narrowConfig&&(this.toolbar.isNarrow()?(void 0!==this.narrowConfig.displayBothIconAndLabel&&(this.wideDisplayBothIconAndLabel=this.displayBothIconAndLabel,this.setDisplayBothIconAndLabel(this.narrowConfig.displayBothIconAndLabel)),void 0!==this.narrowConfig.title&&(this.wideTitle=this.title,this.setTitle(this.narrowConfig.title)),void 0!==this.narrowConfig.icon&&(this.wideIcon=this.icon,this.setIcon(this.narrowConfig.icon))):(void 0!==this.wideDisplayBothIconAndLabel&&this.setDisplayBothIconAndLabel(this.wideDisplayBothIconAndLabel),void 0!==this.wideTitle&&this.setTitle(this.wideTitle),void 0!==this.wideIcon&&this.setIcon(this.wideIcon)))},r.ui.Tool.prototype.updateTitle=function(){var t=this.toolGroup.constructor.static.titleTooltips,e=this.toolGroup.constructor.static.accelTooltips,i=this.toolbar.getToolAccelerator(this.constructor.static.name),o=[];this.$title.text(this.title),this.$accel.text(i),t&&"string"==typeof this.title&&this.title.length&&o.push(this.title),e&&"string"==typeof i&&i.length&&o.push(i),o.length?this.$link.attr("title",o.join(" ")):this.$link.removeAttr("title")},r.ui.Tool.prototype.setIcon=function(t){return r.ui.mixin.IconElement.prototype.setIcon.call(this,t),this.$element.toggleClass("oo-ui-tool-with-icon",!!this.icon),this},r.ui.Tool.prototype.destroy=function(){this.toolbar.disconnect(this),this.$element.remove()},r.ui.ToolGroup=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolbar),r.ui.ToolGroup.super.call(this,e=e||{}),r.ui.mixin.GroupElement.call(this,e),this.toolbar=t,this.tools={},this.pressed=null,this.autoDisabled=!1,this.include=e.include||[],this.exclude=e.exclude||[],this.promote=e.promote||[],this.demote=e.demote||[],this.align=e.align||"before",this.onDocumentMouseKeyUpHandler=this.onDocumentMouseKeyUp.bind(this),this.$group.on({mousedown:this.onMouseKeyDown.bind(this),mouseup:this.onMouseKeyUp.bind(this),keydown:this.onMouseKeyDown.bind(this),keyup:this.onMouseKeyUp.bind(this),focus:this.onMouseOverFocus.bind(this),blur:this.onMouseOutBlur.bind(this),mouseover:this.onMouseOverFocus.bind(this),mouseout:this.onMouseOutBlur.bind(this)}),this.toolbar.getToolFactory().connect(this,{register:"onToolFactoryRegister"}),this.aggregate({disable:"itemDisable"}),this.connect(this,{itemDisable:"updateDisabled",disable:"onDisable"}),this.$group.addClass("oo-ui-toolGroup-tools"),this.$element.addClass("oo-ui-toolGroup").append(this.$group),this.onDisable(this.isDisabled()),this.populate()},r.inheritClass(r.ui.ToolGroup,r.ui.Widget),r.mixinClass(r.ui.ToolGroup,r.ui.mixin.GroupElement),r.ui.ToolGroup.static.titleTooltips=!1,r.ui.ToolGroup.static.accelTooltips=!1,r.ui.ToolGroup.static.autoDisable=!0,r.ui.ToolGroup.static.name=null,r.ui.ToolGroup.prototype.isDisabled=function(){return this.autoDisabled||r.ui.ToolGroup.super.prototype.isDisabled.apply(this,arguments)},r.ui.ToolGroup.prototype.updateDisabled=function(){var t=!0;if(this.constructor.static.autoDisable){for(var e=this.items.length-1;0<=e;e--)if(!this.items[e].isDisabled()){t=!1;break}this.autoDisabled=t}r.ui.ToolGroup.super.prototype.updateDisabled.apply(this,arguments)},r.ui.ToolGroup.prototype.onDisable=function(t){this.$group.toggleClass("oo-ui-toolGroup-disabled-tools",t),this.$group.toggleClass("oo-ui-toolGroup-enabled-tools",!t)},r.ui.ToolGroup.prototype.onMouseKeyDown=function(t){if(!this.isDisabled()&&(t.which===r.ui.MouseButtons.LEFT||t.which===r.ui.Keys.SPACE||t.which===r.ui.Keys.ENTER)&&(this.pressed=this.findTargetTool(t),this.pressed))return this.pressed.setActive(!0),this.getElementDocument().addEventListener("mouseup",this.onDocumentMouseKeyUpHandler,!0),this.getElementDocument().addEventListener("keyup",this.onDocumentMouseKeyUpHandler,!0),!1},r.ui.ToolGroup.prototype.onDocumentMouseKeyUp=function(t){this.getElementDocument().removeEventListener("mouseup",this.onDocumentMouseKeyUpHandler,!0),this.getElementDocument().removeEventListener("keyup",this.onDocumentMouseKeyUpHandler,!0),this.onMouseKeyUp(t)},r.ui.ToolGroup.prototype.onMouseKeyUp=function(t){var e=this.findTargetTool(t);this.isDisabled()||!this.pressed||this.pressed!==e||t.which!==r.ui.MouseButtons.LEFT&&t.which!==r.ui.Keys.SPACE&&t.which!==r.ui.Keys.ENTER||(this.pressed.onSelect(),this.pressed=null,t.preventDefault(),t.stopPropagation()),this.pressed=null},r.ui.ToolGroup.prototype.onMouseOverFocus=function(t){t=this.findTargetTool(t);this.pressed&&this.pressed===t&&this.pressed.setActive(!0)},r.ui.ToolGroup.prototype.onMouseOutBlur=function(t){t=this.findTargetTool(t);this.pressed&&this.pressed===t&&this.pressed.setActive(!1)},r.ui.ToolGroup.prototype.findTargetTool=function(t){var e,t=$(t.target).closest(".oo-ui-tool-link");return(e=t.length?t.parent().data("oo-ui-tool"):e)&&!e.isDisabled()?e:null},r.ui.ToolGroup.prototype.onToolFactoryRegister=function(){this.populate()},r.ui.ToolGroup.prototype.getToolbar=function(){return this.toolbar},r.ui.ToolGroup.prototype.populate=function(){for(var t=this.toolbar.getToolFactory(),e={},i=[],o=[],n=this.toolbar.getToolFactory().getTools(this.include,this.exclude,this.promote,this.demote),s=0,l=n.length;s<l;s++){var u,a=n[s];t.lookup(a)&&(this.toolbar.isToolAvailable(a)||this.tools[a])&&(this.toolbar.tools[a]=!0,(u=this.tools[a])||(this.tools[a]=u=t.create(a,this),u.updateTitle()),this.toolbar.reserveTool(u),i.push(u),e[a]=!0)}for(a in this.tools)e[a]||(this.tools[a].destroy(),this.toolbar.releaseTool(this.tools[a]),o.push(this.tools[a]),delete this.tools[a]);o.length&&this.removeItems(o),this.$element.toggleClass("oo-ui-toolGroup-empty",!i.length),this.addItems(i),this.updateDisabled()},r.ui.ToolGroup.prototype.destroy=function(){for(var t in this.clearItems(),this.toolbar.getToolFactory().disconnect(this),this.tools)this.toolbar.releaseTool(this.tools[t]),this.tools[t].disconnect(this).destroy(),delete this.tools[t];this.$element.remove()},r.ui.ToolFactory=function(){r.ui.ToolFactory.super.call(this)},r.inheritClass(r.ui.ToolFactory,r.Factory),r.ui.ToolFactory.prototype.getTools=function(t,e,i,o){for(var n=[],s={},l=r.simpleArrayDifference(this.extract(t),this.extract(e)),t=this.extract(i,s),e=this.extract(o,s),u=0,a=l.length;u<a;u++)s[l[u]]||n.push(l[u]);return t.concat(n).concat(e)},r.ui.ToolFactory.prototype.extract=function(t,e){for(var i=[],o=0,n=(t=Array.isArray(t)?t:[t]).length;o<n;o++){var s,l,u=t[o];if("*"===u)for(s in this.registry)!(l=this.registry[s]).static.autoAddToCatchall||e&&e[s]||(i.push(s),e&&(e[s]=!0));else if("string"==typeof u&&(u={name:u}),r.isPlainObject(u))if(u.group)for(s in this.registry)(l=this.registry[s]).static.group!==u.group||!l.static.autoAddToGroup||e&&e[s]||(i.push(s),e&&(e[s]=!0));else!u.name||e&&e[u.name]||(i.push(u.name),e&&(e[u.name]=!0))}return i},r.ui.ToolGroupFactory=function(){r.Factory.call(this);for(var t=this.constructor.static.getDefaultClasses(),e=0,i=t.length;e<i;e++)this.register(t[e])},r.inheritClass(r.ui.ToolGroupFactory,r.Factory),r.ui.ToolGroupFactory.static.getDefaultClasses=function(){return[r.ui.BarToolGroup,r.ui.ListToolGroup,r.ui.MenuToolGroup]},r.ui.PopupTool=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolGroup),r.ui.PopupTool.super.call(this,t,e),r.ui.mixin.PopupElement.call(this,e),this.popup.connect(this,{toggle:"onPopupToggle"}),this.popup.setAutoFlip(!1),this.popup.setPosition("bottom"===t.getToolbar().position?"above":"below"),this.$element.addClass("oo-ui-popupTool"),this.popup.$element.addClass("oo-ui-popupTool-popup"),this.toolbar.$popups.append(this.popup.$element)},r.inheritClass(r.ui.PopupTool,r.ui.Tool),r.mixinClass(r.ui.PopupTool,r.ui.mixin.PopupElement),r.ui.PopupTool.prototype.onSelect=function(){return this.isDisabled()||this.popup.toggle(),!1},r.ui.PopupTool.prototype.onUpdateState=function(){},r.ui.PopupTool.prototype.onPopupToggle=function(t){this.setActive(t),this.toolGroup.emit("active",t)},r.ui.ToolGroupTool=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolGroup),r.ui.ToolGroupTool.super.call(this,t,e),this.innerToolGroup=this.createGroup(this.constructor.static.groupConfig),this.innerToolGroup.connect(this,{disable:"onToolGroupDisable",active:this.toolGroup.emit.bind(this.toolGroup,"active")}),this.$link.remove(),this.$element.addClass("oo-ui-toolGroupTool").append(this.innerToolGroup.$element)},r.inheritClass(r.ui.ToolGroupTool,r.ui.Tool),r.ui.ToolGroupTool.static.groupConfig={},r.ui.ToolGroupTool.prototype.onSelect=function(){return this.innerToolGroup.setActive(!this.innerToolGroup.active),!1},r.ui.ToolGroupTool.prototype.onToolGroupDisable=function(t){this.setDisabled(t)},r.ui.ToolGroupTool.prototype.onUpdateState=function(){this.setActive(!1)},r.ui.ToolGroupTool.prototype.createGroup=function(t){return"*"===t.include&&void 0===t.label&&(t.label=r.ui.msg("ooui-toolbar-more")),this.toolbar.getToolGroupFactory().create("list",this.toolbar,t)},r.ui.BarToolGroup=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolbar),r.ui.BarToolGroup.super.call(this,t,e),this.$element.addClass("oo-ui-barToolGroup"),this.$group.addClass("oo-ui-barToolGroup-tools")},r.inheritClass(r.ui.BarToolGroup,r.ui.ToolGroup),r.ui.BarToolGroup.static.titleTooltips=!0,r.ui.BarToolGroup.static.accelTooltips=!0,r.ui.BarToolGroup.static.name="bar",r.ui.PopupToolGroup=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolbar),e=$.extend({indicator:void 0===e.indicator?"bottom"===t.position?"up":"down":e.indicator},e),r.ui.PopupToolGroup.super.call(this,t,e),this.active=!1,this.dragging=!1,this.onPopupDocumentMouseKeyUpHandler=this.onPopupDocumentMouseKeyUp.bind(this),this.$handle=$("<span>"),this.narrowConfig=e.narrowConfig||this.constructor.static.narrowConfig,r.ui.mixin.IconElement.call(this,e),r.ui.mixin.IndicatorElement.call(this,e),r.ui.mixin.LabelElement.call(this,e),r.ui.mixin.TitledElement.call(this,e),r.ui.mixin.FlaggedElement.call(this,e),r.ui.mixin.ClippableElement.call(this,$.extend({$clippable:this.$group},e)),r.ui.mixin.FloatableElement.call(this,$.extend({$floatable:this.$group,$floatableContainer:this.$handle,hideWhenOutOfView:!1,verticalPosition:"bottom"===this.toolbar.position?"above":"below"},e)),r.ui.mixin.TabIndexedElement.call(this,$.extend({$tabIndexed:this.$handle},e)),this.$handle.on({keydown:this.onHandleMouseKeyDown.bind(this),keyup:this.onHandleMouseKeyUp.bind(this),mousedown:this.onHandleMouseKeyDown.bind(this),mouseup:this.onHandleMouseKeyUp.bind(this)}),this.toolbar.connect(this,{resize:"onToolbarResize"}),this.$handle.addClass("oo-ui-popupToolGroup-handle").attr({role:"button","aria-expanded":"false"}).append(this.$icon,this.$label,this.$indicator),void 0!==e.header&&this.$group.prepend($("<span>").addClass("oo-ui-popupToolGroup-header").text(e.header)),this.$element.addClass("oo-ui-popupToolGroup").prepend(this.$handle),this.$group.addClass("oo-ui-popupToolGroup-tools"),this.toolbar.$popups.append(this.$group)},r.inheritClass(r.ui.PopupToolGroup,r.ui.ToolGroup),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.IconElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.IndicatorElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.LabelElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.TitledElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.FlaggedElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.ClippableElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.FloatableElement),r.mixinClass(r.ui.PopupToolGroup,r.ui.mixin.TabIndexedElement),r.ui.PopupToolGroup.static.narrowConfig=null,r.ui.PopupToolGroup.prototype.setDisabled=function(){r.ui.PopupToolGroup.super.prototype.setDisabled.apply(this,arguments),this.isDisabled()&&this.isElementAttached()&&this.setActive(!1)},r.ui.PopupToolGroup.prototype.onToolbarResize=function(){this.narrowConfig&&(this.toolbar.isNarrow()?(void 0!==this.narrowConfig.invisibleLabel&&(this.wideInvisibleLabel=this.invisibleLabel,this.setInvisibleLabel(this.narrowConfig.invisibleLabel)),void 0!==this.narrowConfig.label&&(this.wideLabel=this.label,this.setLabel(this.narrowConfig.label)),void 0!==this.narrowConfig.icon&&(this.wideIcon=this.icon,this.setIcon(this.narrowConfig.icon))):(void 0!==this.wideInvisibleLabel&&this.setInvisibleLabel(this.wideInvisibleLabel),void 0!==this.wideLabel&&this.setLabel(this.wideLabel),void 0!==this.wideIcon&&this.setIcon(this.wideIcon)))},r.ui.PopupToolGroup.prototype.onPopupDocumentMouseKeyUp=function(t){t=$(t.target);t.closest(".oo-ui-popupToolGroup")[0]!==this.$element[0]&&t.closest(".oo-ui-popupToolGroup-tools")[0]!==this.$group[0]&&this.setActive(!1)},r.ui.PopupToolGroup.prototype.onMouseKeyUp=function(t){return this.isDisabled()||!this.pressed||this.pressed!==this.findTargetTool(t)||t.which!==r.ui.MouseButtons.LEFT&&t.which!==r.ui.Keys.SPACE&&t.which!==r.ui.Keys.ENTER||this.setActive(!1),r.ui.PopupToolGroup.super.prototype.onMouseKeyUp.call(this,t)},r.ui.PopupToolGroup.prototype.onMouseKeyDown=function(t){if(!this.isDisabled()&&t.which===r.ui.Keys.TAB){var e=$(document.activeElement),i=r.ui.findFocusable(this.$group);if(e[0]===i[0]&&t.shiftKey)return this.$handle.trigger("focus"),!1;i=r.ui.findFocusable(this.$group,!0);e[0]!==i[0]||t.shiftKey||(this.$handle.trigger("focus"),this.setActive(!1))}return r.ui.PopupToolGroup.super.prototype.onMouseKeyDown.call(this,t)},r.ui.PopupToolGroup.prototype.onHandleMouseKeyUp=function(t){if(!this.isDisabled()&&(t.which===r.ui.MouseButtons.LEFT||t.which===r.ui.Keys.SPACE||t.which===r.ui.Keys.ENTER))return!1},r.ui.PopupToolGroup.prototype.onHandleMouseKeyDown=function(t){var e;if(!this.isDisabled())return t.which===r.ui.Keys.TAB&&!t.shiftKey&&(e=r.ui.findFocusable(this.$group)).length?(e.trigger("focus"),!1):t.which===r.ui.MouseButtons.LEFT||t.which===r.ui.Keys.SPACE||t.which===r.ui.Keys.ENTER?(this.setActive(!this.active),!1):void 0},r.ui.PopupToolGroup.prototype.isActive=function(){return this.active},r.ui.PopupToolGroup.prototype.setActive=function(t){var e,i;this.active!==(t=!!t)&&((this.active=t)?(this.getElementDocument().addEventListener("mouseup",this.onPopupDocumentMouseKeyUpHandler,!0),this.getElementDocument().addEventListener("keyup",this.onPopupDocumentMouseKeyUpHandler,!0),this.$clippable.css("left",""),this.$element.addClass("oo-ui-popupToolGroup-active"),this.$group.addClass("oo-ui-popupToolGroup-active-tools"),this.$handle.attr("aria-expanded",!0),this.togglePositioning(!0),this.toggleClipping(!0),t="before"===this.align?"start":"end",i="before"===this.align?"end":"start",this.setHorizontalPosition(t),(this.isClippedHorizontally()||this.isFloatableOutOfView())&&this.setHorizontalPosition(i),(this.isClippedHorizontally()||this.isFloatableOutOfView())&&(i=this.$clippableScrollableContainer.width(),e=this.$clippableScrollableContainer[0]===document.documentElement?0:this.$clippableScrollableContainer.offset().left,this.toggleClipping(!1),this.setHorizontalPosition(t),this.$clippable.css({"margin-left":-(this.$element.offset().left-e),width:i}))):(this.getElementDocument().removeEventListener("mouseup",this.onPopupDocumentMouseKeyUpHandler,!0),this.getElementDocument().removeEventListener("keyup",this.onPopupDocumentMouseKeyUpHandler,!0),this.$element.removeClass("oo-ui-popupToolGroup-active"),this.$group.removeClass("oo-ui-popupToolGroup-active-tools"),this.$handle.attr("aria-expanded",!1),this.togglePositioning(!1),this.toggleClipping(!1)),this.emit("active",this.active),this.updateThemeClasses())},r.ui.ListToolGroup=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolbar),this.allowCollapse=(e=e||{}).allowCollapse,this.forceExpand=e.forceExpand,this.expanded=void 0!==e.expanded&&e.expanded,this.collapsibleTools=[],r.ui.ListToolGroup.super.call(this,t,e),this.$element.addClass("oo-ui-listToolGroup"),this.$group.addClass("oo-ui-listToolGroup-tools")},r.inheritClass(r.ui.ListToolGroup,r.ui.PopupToolGroup),r.ui.ListToolGroup.static.name="list",r.ui.ListToolGroup.prototype.populate=function(){r.ui.ListToolGroup.super.prototype.populate.call(this);var t=[];void 0!==this.allowCollapse?t=this.allowCollapse:void 0!==this.forceExpand&&(t=r.simpleArrayDifference(Object.keys(this.tools),this.forceExpand)),this.collapsibleTools=[];for(var e=0,i=t.length;e<i;e++)void 0!==this.tools[t[e]]&&this.collapsibleTools.push(this.tools[t[e]]);this.$group.append(this.getExpandCollapseTool().$element),this.getExpandCollapseTool().toggle(0!==this.collapsibleTools.length),this.updateCollapsibleState()},r.ui.ListToolGroup.prototype.getExpandCollapseTool=function(){var t;return void 0===this.expandCollapseTool&&(r.inheritClass(t=function(){t.super.apply(this,arguments)},r.ui.Tool),t.prototype.onSelect=function(){this.toolGroup.expanded=!this.toolGroup.expanded,this.toolGroup.updateCollapsibleState(),this.setActive(!1)},t.prototype.onUpdateState=function(){},t.static.name="more-fewer",this.expandCollapseTool=new t(this)),this.expandCollapseTool},r.ui.ListToolGroup.prototype.onMouseKeyUp=function(t){return(!$(t.target).closest(".oo-ui-tool-name-more-fewer").length||t.which!==r.ui.MouseButtons.LEFT&&t.which!==r.ui.Keys.SPACE&&t.which!==r.ui.Keys.ENTER?r.ui.ListToolGroup:r.ui.ListToolGroup.super).super.prototype.onMouseKeyUp.call(this,t)},r.ui.ListToolGroup.prototype.updateCollapsibleState=function(){var t="bottom"===this.toolbar.position,t=this.expanded===t?"expand":"collapse";this.getExpandCollapseTool().setIcon(t).setTitle(r.ui.msg(this.expanded?"ooui-toolgroup-collapse":"ooui-toolgroup-expand"));for(var e=0;e<this.collapsibleTools.length;e++)this.collapsibleTools[e].toggle(this.expanded);this.clip()},r.ui.MenuToolGroup=function(t,e){r.isPlainObject(t)&&void 0===e&&(t=(e=t).toolbar),r.ui.MenuToolGroup.super.call(this,t,e=e||{}),this.toolbar.connect(this,{updateState:"onUpdateState"}),this.$element.addClass("oo-ui-menuToolGroup"),this.$group.addClass("oo-ui-menuToolGroup-tools")},r.inheritClass(r.ui.MenuToolGroup,r.ui.PopupToolGroup),r.ui.MenuToolGroup.static.name="menu",r.ui.MenuToolGroup.prototype.onUpdateState=function(){var t,e=[];for(t in this.tools)this.tools[t].isActive()&&e.push(this.tools[t].getTitle());this.setLabel(e.join(", ")||" ")}}(OO),function(a){"use strict";a.ui.ActionWidget=function(t){t=$.extend({framed:!1},t),a.ui.ActionWidget.super.call(this,t),a.ui.mixin.PendingElement.call(this,t),this.action=t.action||"",this.modes=t.modes||[],this.width=0,this.height=0,this.$element.addClass("oo-ui-actionWidget")},a.inheritClass(a.ui.ActionWidget,a.ui.ButtonWidget),a.mixinClass(a.ui.ActionWidget,a.ui.mixin.PendingElement),a.ui.ActionWidget.prototype.hasMode=function(t){return-1!==this.modes.indexOf(t)},a.ui.ActionWidget.prototype.getAction=function(){return this.action},a.ui.ActionWidget.prototype.getModes=function(){return this.modes.slice()},a.ui.ActionSet=function(t){a.EventEmitter.call(this),this.list=[],this.categories={actions:"getAction",flags:"getFlags",modes:"getModes"},this.categorized={},this.special={},this.others=[],this.organized=!1,this.changing=!1,this.changed=!1},a.mixinClass(a.ui.ActionSet,a.EventEmitter),a.ui.ActionSet.static.specialFlags=["safe","primary"],a.ui.ActionSet.prototype.onActionChange=function(){this.organized=!1,this.changing?this.changed=!0:this.emit("change")},a.ui.ActionSet.prototype.isSpecial=function(t){for(var e in this.special)if(t===this.special[e])return!0;return!1},a.ui.ActionSet.prototype.get=function(t){if(t){this.organize();var e,i,o,n=[];for(o in this.categorized){var s=t[o];if(s)for(e=0,i=(s=Array.isArray(s)?s:[s]).length;e<i;e++){var l=this.categorized[o][s[e]];Array.isArray(l)&&n.push.apply(n,l)}}for(e=0,i=n.length;e<i;e++)u=n[e],(void 0!==t.visible&&u.isVisible()!==t.visible||void 0!==t.disabled&&u.isDisabled()!==t.disabled)&&(n.splice(e,1),i--,e--);for(e=0,i=n.length;e<i;e++)for(var u=n[e],a=n.lastIndexOf(u);a!==e;)n.splice(a,1),i--,a=n.lastIndexOf(u);return n}return this.list.slice()},a.ui.ActionSet.prototype.getSpecial=function(){return this.organize(),$.extend({},this.special)},a.ui.ActionSet.prototype.getOthers=function(){return this.organize(),this.others.slice()},a.ui.ActionSet.prototype.setMode=function(t){this.changing=!0;for(var e=0,i=this.list.length;e<i;e++){var o=this.list[e];o.toggle(o.hasMode(t))}return this.organized=!1,this.changing=!1,this.emit("change"),this},a.ui.ActionSet.prototype.setAbilities=function(t){for(var e=0,i=this.list.length;e<i;e++){var o=this.list[e],n=o.getAction();void 0!==t[n]&&o.setDisabled(!t[n])}return this},a.ui.ActionSet.prototype.forEach=function(t,e){return this.changed=!1,this.changing=!0,this.get(t).forEach(e),this.changing=!1,this.changed&&this.emit("change"),this},a.ui.ActionSet.prototype.add=function(t){this.changing=!0;for(var e=0,i=t.length;e<i;e++){var o=t[e];o.connect(this,{click:["emit","click",o],toggle:["onActionChange"]}),this.list.push(o)}return this.organized=!1,this.emit("add",t),this.changing=!1,this.emit("change"),this},a.ui.ActionSet.prototype.remove=function(t){this.changing=!0;for(var e=0,i=t.length;e<i;e++){var o=t[e],n=this.list.indexOf(o);-1!==n&&(o.disconnect(this),this.list.splice(n,1))}return this.organized=!1,this.emit("remove",t),this.changing=!1,this.emit("change"),this},a.ui.ActionSet.prototype.clear=function(){var t=this.list.slice();this.changing=!0;for(var e=0,i=this.list.length;e<i;e++)this.list[e].disconnect(this);return this.list=[],this.organized=!1,this.emit("remove",t),this.changing=!1,this.emit("change"),this},a.ui.ActionSet.prototype.organize=function(){var t=this.constructor.static.specialFlags;if(!this.organized){this.categorized={},this.special={},this.others=[];for(var e=0,i=this.list.length;e<i;e++){var o,n=this.list[e];for(o in this.categories){this.categorized[o]||(this.categorized[o]={});for(var s=n[this.categories[o]](),l=0,u=(s=Array.isArray(s)?s:[s]).length;l<u;l++){var a=s[l];this.categorized[o][a]||(this.categorized[o][a]=[]),this.categorized[o][a].push(n)}}if(n.isVisible()){var r=!1;for(l=0,u=t.length;l<u;l++){var h=t[l];if(!this.special[h]&&n.hasFlag(h)){this.special[h]=n,r=!0;break}}r||this.others.push(n)}}this.organized=!0}return this},a.ui.Error=function(t,e){a.isPlainObject(t)&&void 0===e&&(t=(e=t).message),e=e||{},this.message=t instanceof $?t:String(t),this.recoverable=void 0===e.recoverable||!!e.recoverable,this.warning=!!e.warning},a.initClass(a.ui.Error),a.ui.Error.prototype.isRecoverable=function(){return this.recoverable},a.ui.Error.prototype.isWarning=function(){return this.warning},a.ui.Error.prototype.getMessage=function(){return this.message instanceof $?this.message.clone():$("<div>").text(this.message).contents()},a.ui.Error.prototype.getMessageText=function(){return this.message instanceof $?this.message.text():this.message},a.ui.Process=function(t,e){this.steps=[],void 0!==t&&this.next(t,e)},a.initClass(a.ui.Process),a.ui.Process.prototype.execute=function(){function t(i){return function(){var t=i.callback.call(i.context);if(!1===t)return $.Deferred().reject([]).promise();if("number"!=typeof t)return(t instanceof a.ui.Error?$.Deferred().reject([t]):Array.isArray(t)&&t.length&&t[0]instanceof a.ui.Error?$.Deferred().reject(t):t&&"function"==typeof t.then?$.when(t):$.Deferred().resolve()).promise();if(t<0)throw new Error("Cannot go back in time: flux capacitor is out of service");var e=$.Deferred();return setTimeout(e.resolve,t),e.promise()}}if(this.steps.length)for(var e=t(this.steps[0])(),i=1,o=this.steps.length;i<o;i++)e=e.then(t(this.steps[i]));else e=$.Deferred().resolve().promise();return e},a.ui.Process.prototype.createStep=function(t,e){if("number"==typeof t||"function"==typeof t.then)return{callback:function(){return t},context:null};if("function"==typeof t)return{callback:t,context:e};throw new Error("Cannot create process step: number, promise or function expected")},a.ui.Process.prototype.first=function(t,e){return this.steps.unshift(this.createStep(t,e)),this},a.ui.Process.prototype.next=function(t,e){return this.steps.push(this.createStep(t,e)),this},a.ui.WindowInstance=function(){var t={opening:$.Deferred(),opened:$.Deferred(),closing:$.Deferred(),closed:$.Deferred()};this.deferreds=t,this.opening=t.opening.promise(),this.opened=this.opening.then(function(){return t.opened}),this.closing=this.opened.then(function(){return t.closing}),this.closed=this.closing.then(function(){return t.closed})},a.initClass(a.ui.WindowInstance),a.ui.WindowInstance.prototype.isOpening=function(){return"pending"===this.deferreds.opened.state()},a.ui.WindowInstance.prototype.isOpened=function(){return"resolved"===this.deferreds.opened.state()&&"pending"===this.deferreds.closing.state()},a.ui.WindowInstance.prototype.isClosing=function(){return"resolved"===this.deferreds.closing.state()&&"pending"===this.deferreds.closed.state()},a.ui.WindowInstance.prototype.isClosed=function(){return"resolved"===this.deferreds.closed.state()},a.ui.WindowManager=function(t){a.ui.WindowManager.super.call(this,t=t||{}),a.EventEmitter.call(this),this.factory=t.factory,this.modal=void 0===t.modal||!!t.modal,this.windows={},this.compatOpened=null,this.preparingToOpen=null,this.preparingToClose=null,this.currentWindow=null,this.lastSize=null,this.globalEvents=!1,this.$returnFocusTo=null,this.isolated=!1,this.$ariaHidden=null,this.$inert=null,this.onWindowResizeTimeout=null,this.onWindowResizeHandler=this.onWindowResize.bind(this),this.afterWindowResizeHandler=this.afterWindowResize.bind(this),this.onWindowFocusHandler=this.onWindowFocus.bind(this),this.$element.addClass("oo-ui-windowManager").toggleClass("oo-ui-windowManager-modal",this.isModal()).toggleClass("oo-ui-windowManager-forceTrapFocus",!!t.forceTrapFocus),this.isModal()&&this.$element.attr("aria-hidden","true").attr("inert","")},a.inheritClass(a.ui.WindowManager,a.ui.Element),a.mixinClass(a.ui.WindowManager,a.EventEmitter),a.ui.WindowManager.static.sizes={small:{width:300},medium:{width:500},large:{width:700},larger:{width:900},full:{width:"100%",height:"100%"}},a.ui.WindowManager.static.defaultSize="medium",a.ui.WindowManager.prototype.isModal=function(){return this.modal},a.ui.WindowManager.prototype.onWindowResize=function(){clearTimeout(this.onWindowResizeTimeout),this.onWindowResizeTimeout=setTimeout(this.afterWindowResizeHandler,200)},a.ui.WindowManager.prototype.onWindowFocus=function(){var t=this.getCurrentWindow();t&&!a.ui.contains(t.$element[0],document.activeElement)&&t.focus()},a.ui.WindowManager.prototype.afterWindowResize=function(){var t=document.activeElement;this.currentWindow&&(this.updateWindowSize(this.currentWindow),t!==document.activeElement)&&t.focus()},a.ui.WindowManager.prototype.isOpening=function(t){return t===this.currentWindow&&!!this.lifecycle&&this.lifecycle.isOpening()},a.ui.WindowManager.prototype.isClosing=function(t){return t===this.currentWindow&&!!this.lifecycle&&this.lifecycle.isClosing()},a.ui.WindowManager.prototype.isOpened=function(t){return t===this.currentWindow&&!!this.lifecycle&&this.lifecycle.isOpened()},a.ui.WindowManager.prototype.hasWindow=function(t){for(var e in this.windows)if(this.windows[e]===t)return!0;return!1},a.ui.WindowManager.prototype.getSetupDelay=function(){return 0},a.ui.WindowManager.prototype.getReadyDelay=function(){return this.isModal()?a.ui.theme.getDialogTransitionDuration():0},a.ui.WindowManager.prototype.getHoldDelay=function(){return 0},a.ui.WindowManager.prototype.getTeardownDelay=function(){return this.isModal()?a.ui.theme.getDialogTransitionDuration():0},a.ui.WindowManager.prototype.getWindow=function(t){var e=$.Deferred(),i=this.windows[t];return i instanceof a.ui.Window?e.resolve(i):this.factory?this.factory.lookup(t)?(i=this.factory.create(t),this.addWindows([i]),e.resolve(i)):e.reject(new a.ui.Error("Cannot auto-instantiate window: symbolic name is unrecognized by the factory")):e.reject(new a.ui.Error("Cannot get unmanaged window: symbolic name unrecognized as a managed window")),e.promise()},a.ui.WindowManager.prototype.getCurrentWindow=function(){return this.currentWindow},a.ui.WindowManager.prototype.openWindow=function(e,i,o,n){var t,s=this;return i=i||{},o=o||new a.ui.WindowInstance,n=n||$.Deferred(),["state","always","catch","pipe","then","promise","progress","done","fail"].forEach(function(t){o[t]=function(){return a.ui.warnDeprecation("Using the return value of openWindow as a promise is deprecated. Use .openWindow( ... ).opening."+t+"( ... ) instead."),n[t].apply(this,arguments)}}),"string"==typeof e?this.getWindow(e).then(function(t){s.openWindow(t,i,o,n)},function(t){o.deferreds.opening.reject(t)}):(this.hasWindow(e)?this.lifecycle&&this.lifecycle.isOpened()?t="Cannot open window: another window is open":(this.preparingToOpen||this.lifecycle&&this.lifecycle.isOpening())&&(t="Cannot open window: another window is opening"):t="Cannot open window: window is not attached to manager",t?(n.reject(new a.ui.Error(t)),o.deferreds.opening.reject(new a.ui.Error(t))):(this.preparingToOpen=$.when(this.lifecycle&&this.lifecycle.closed),this.preparingToOpen.done(function(){s.isModal()&&(s.toggleGlobalEvents(!0),s.toggleIsolation(!0)),s.$returnFocusTo=void 0!==i.$returnFocusTo?i.$returnFocusTo:$(document.activeElement),s.currentWindow=e,s.lifecycle=o,s.preparingToOpen=null,s.emit("opening",e,n,i),o.deferreds.opening.resolve(i),setTimeout(function(){s.compatOpened=$.Deferred(),e.setup(i).then(function(){n.notify({state:"setup"}),setTimeout(function(){e.ready(i).then(function(){n.notify({state:"ready"}),o.deferreds.opened.resolve(i),n.resolve(s.compatOpened.promise(),i),s.togglePreventIosScrolling(!0)},function(t){o.deferreds.opened.reject(),n.reject(),s.closeWindow(e),t instanceof Error&&setTimeout(function(){throw t})})},s.getReadyDelay())},function(t){o.deferreds.opened.reject(),n.reject(),s.closeWindow(e),t instanceof Error&&setTimeout(function(){throw t})})},s.getSetupDelay())}))),o},a.ui.WindowManager.prototype.closeWindow=function(e,i){var t,o=this,n=$.Deferred(),s=this.lifecycle;return"string"==typeof e?e=this.windows[e]:this.hasWindow(e)||(e=null),s?e?e!==this.currentWindow||this.lifecycle.isClosed()?t="Cannot close window: window already closed with different data":(this.preparingToClose||this.lifecycle.isClosing())&&(t="Cannot close window: window already closing with different data"):t="Cannot close window: window is not attached to manager":t="Cannot close window: no window is currently open",t&&((s=new a.ui.WindowInstance).deferreds.opening.resolve({}),s.deferreds.opened.resolve({})),["state","always","catch","pipe","then","promise","progress","done","fail"].forEach(function(t){s[t]=function(){return a.ui.warnDeprecation("Using the return value of closeWindow as a promise is deprecated. Use .closeWindow( ... ).closed."+t+"( ... ) instead."),n[t].apply(this,arguments)}}),t?(n.reject(new a.ui.Error(t)),s.deferreds.closing.reject(new a.ui.Error(t))):(this.preparingToClose=$.when(this.lifecycle.opened),this.preparingToClose.always(function(){o.preparingToClose=null,o.emit("closing",e,n,i),s.deferreds.closing.resolve(i);var t=o.compatOpened;o.compatOpened=null,t.resolve(n.promise(),i),o.togglePreventIosScrolling(!1),setTimeout(function(){e.hold(i).then(function(){n.notify({state:"hold"}),setTimeout(function(){e.teardown(i).then(function(){n.notify({state:"teardown"}),o.isModal()&&(o.toggleGlobalEvents(!1),o.toggleIsolation(!1)),o.$returnFocusTo&&o.$returnFocusTo.length&&o.$returnFocusTo[0].focus(),o.currentWindow=null,o.lifecycle=null,s.deferreds.closed.resolve(i),n.resolve(i)})},o.getTeardownDelay())})},o.getHoldDelay())})),s},a.ui.WindowManager.prototype.addWindows=function(t){if(Array.isArray(t))for(var e={},i=0,o=t.length;i<o;i++){var n=t[i].constructor.static.name;if(!n)throw new Error("Windows must have a `name` static property defined.");e[n]=t[i]}else a.isPlainObject(t)&&(e=t);for(var s in e){var l=e[s];this.windows[s]=l.toggle(!1),this.$element.append(l.$element),l.setManager(this)}},a.ui.WindowManager.prototype.removeWindows=function(t){var i=this;t=t.map(function(t){var e=i.windows[t];if(e)return e=function(t,e){delete i.windows[t],e.$element.detach()}.bind(null,t,e),i.closeWindow(t).closed.then(e,e);throw new Error("Cannot remove window")});return $.when.apply($,t)},a.ui.WindowManager.prototype.clearWindows=function(){return this.removeWindows(Object.keys(this.windows))},a.ui.WindowManager.prototype.updateWindowSize=function(t){var e;if(t===this.currentWindow)return e=t.getSize(),this.$element.removeClass("oo-ui-windowManager-size-"+this.lastSize).addClass("oo-ui-windowManager-size-"+e),e="full"===(this.lastSize=e),this.$element.toggleClass("oo-ui-windowManager-fullscreen",e),this.$element.toggleClass("oo-ui-windowManager-floating",!e),t.setDimensions(t.getSizeProperties()),this.emit("resize",t),this},a.ui.WindowManager.prototype.togglePreventIosScrolling=function(t){var e=/ipad|iphone|ipod/i.test(navigator.userAgent),i=$(this.getElementDocument().body),o=i.data("windowManagerGlobalEvents")||0;return e&&1===o&&(e=a.ui.Element.static.getRootScrollableElement(i[0]),t?(this.iosOrigScrollPosition=e.scrollTop,"full"===this.getCurrentWindow().getSize()&&i.add(i.parent()).addClass("oo-ui-windowManager-ios-modal-ready")):(i.add(i.parent()).removeClass("oo-ui-windowManager-ios-modal-ready"),"full"===this.getCurrentWindow().getSize()&&(e.scrollTop=this.iosOrigScrollPosition))),this},a.ui.WindowManager.prototype.toggleGlobalEvents=function(t){var e,i=$(this.getElementDocument().body),o=$(this.getElementWindow()),n=i.data("windowManagerGlobalEvents")||0;return(t=void 0===t?!!this.globalEvents:!!t)?this.globalEvents||(o.on({"orientationchange resize":this.onWindowResizeHandler,focus:this.onWindowFocusHandler}),0===n&&(t=window.innerWidth-document.documentElement.clientWidth,e=parseFloat(i.css("margin-right"))||0,i.addClass("oo-ui-windowManager-modal-active").css("margin-right",e+t)),n++,this.globalEvents=!0):this.globalEvents&&(o.off({"orientationchange resize":this.onWindowResizeHandler,focus:this.onWindowFocusHandler}),0===--n&&i.removeClass("oo-ui-windowManager-modal-active").css("margin-right",""),this.globalEvents=!1),i.data("windowManagerGlobalEvents",n),this},a.ui.WindowManager.prototype.toggleIsolation=function(t){if(this.isolated=void 0===t?!this.isolated:!!t,this.isolated){this.$element.removeAttr("aria-hidden").removeAttr("inert");for(var e=this.$element,i=[],o=[];!e.is("body")&&e.length;){var n=e.siblings().not("script");e.removeAttr("aria-hidden").removeAttr("inert"),i.push.apply(i,n.not("[aria-hidden=true]").toArray()),o.push.apply(o,n.not("[inert]").toArray()),e=e.parent()}this.$ariaHidden=$(i),this.$inert=$(o),this.$ariaHidden.attr("aria-hidden","true"),this.$inert.attr("inert","")}else this.$ariaHidden.removeAttr("aria-hidden"),this.$inert.removeAttr("inert"),this.$ariaHidden=null,this.$inert=null,this.$element.attr("aria-hidden","true").attr("inert","");return this},a.ui.WindowManager.prototype.toggleAriaIsolation=a.ui.WindowManager.prototype.toggleIsolation,a.ui.WindowManager.prototype.destroy=function(){this.clearWindows(),this.$element.remove()},a.ui.Window=function(t){a.ui.Window.super.call(this,t=t||{}),a.EventEmitter.call(this),this.manager=null,this.size=t.size||this.constructor.static.size,this.$frame=$("<div>"),this.$overlay=$("<div>"),this.$content=$("<div>"),this.$focusTrapBefore=$("<div>").addClass("oo-ui-window-focusTrap").prop("tabIndex",0),this.$focusTrapAfter=this.$focusTrapBefore.clone(),this.$focusTraps=this.$focusTrapBefore.add(this.$focusTrapAfter),this.$overlay.addClass("oo-ui-window-overlay"),this.$content.addClass("oo-ui-window-content").attr("tabindex",-1),this.$frame.addClass("oo-ui-window-frame").append(this.$focusTrapBefore,this.$content,this.$focusTrapAfter),this.$element.addClass("oo-ui-window").append(this.$frame,this.$overlay),this.visible=!1,this.$element.addClass("oo-ui-element-hidden")},a.inheritClass(a.ui.Window,a.ui.Element),a.mixinClass(a.ui.Window,a.EventEmitter),a.ui.Window.static.size="medium",a.ui.Window.prototype.onMouseDown=function(t){if(t.target===this.$element[0])return!1},a.ui.Window.prototype.isInitialized=function(){return!!this.manager},a.ui.Window.prototype.isVisible=function(){return this.visible},a.ui.Window.prototype.isOpening=function(){return this.manager.isOpening(this)},a.ui.Window.prototype.isClosing=function(){return this.manager.isClosing(this)},a.ui.Window.prototype.isOpened=function(){return this.manager.isOpened(this)},a.ui.Window.prototype.getManager=function(){return this.manager},a.ui.Window.prototype.getSize=function(){var t=a.ui.Element.static.getDimensions(this.getElementWindow()),e=this.manager.constructor.static.sizes,i=this.size;return i="full"!==(i=e[i]?i:this.manager.constructor.static.defaultSize)&&t.rect.right-t.rect.left<e[i].width?"full":i},a.ui.Window.prototype.getSizeProperties=function(){return this.manager.constructor.static.sizes[this.getSize()]},a.ui.Window.prototype.withoutSizeTransitions=function(t){var e=this.$frame.css("transition-property")+" "+this.$frame.css("transition-duration")+" "+this.$frame.css("transition-timing-function")+" "+this.$frame.css("transition-delay");this.$frame.css("transition","none"),t(),this.$frame.height(),this.$frame.css("transition",e)},a.ui.Window.prototype.getContentHeight=function(){var o,n=this,s=this.$body[0],l=this.$frame[0];return this.withoutSizeTransitions(function(){var t=l.style.height,e=s.style.position,i=s.scrollTop;l.style.height="1px",s.style.position="relative",o=n.getBodyHeight(),l.style.height=t,s.style.position=e,s.scrollTop=i}),this.$frame.outerHeight()-this.$frame.innerHeight()+(this.$head.outerHeight(!0)+o+this.$foot.outerHeight(!0))},a.ui.Window.prototype.getBodyHeight=function(){return this.$body[0].scrollHeight},a.ui.Window.prototype.getDir=function(){return a.ui.Element.static.getDir(this.$content)||"ltr"},a.ui.Window.prototype.getSetupProcess=function(){return new a.ui.Process},a.ui.Window.prototype.getReadyProcess=function(){return new a.ui.Process},a.ui.Window.prototype.getHoldProcess=function(){return new a.ui.Process},a.ui.Window.prototype.getTeardownProcess=function(){return new a.ui.Process},a.ui.Window.prototype.setManager=function(t){if(this.manager)throw new Error("Cannot set window manager, window already has a manager");return this.manager=t,this.initialize(),this},a.ui.Window.prototype.setSize=function(t){return this.size=t,this.updateSize(),this},a.ui.Window.prototype.updateSize=function(){if(this.manager)return this.manager.updateWindowSize(this),this;throw new Error("Cannot update window size, must be attached to a manager")},a.ui.Window.prototype.setDimensions=function(e){var i,o=this,n=this.$frame[0].style;return void 0===e.height?this.withoutSizeTransitions(function(){var t=n.width;o.$frame.css("width",e.width||""),i=o.getContentHeight(),n.width=t}):i=e.height,this.$frame.css({width:e.width||"",minWidth:e.minWidth||"",maxWidth:e.maxWidth||"",height:i||"",minHeight:e.minHeight||"",maxHeight:e.maxHeight||""}),this},a.ui.Window.prototype.initialize=function(){if(this.manager)return this.$head=$("<div>"),this.$body=$("<div>"),this.$foot=$("<div>"),this.$document=$(this.getElementDocument()),this.$element.on("mousedown",this.onMouseDown.bind(this)),this.$focusTraps.on("focus",this.onFocusTrapFocused.bind(this)),this.$head.addClass("oo-ui-window-head"),this.$body.addClass("oo-ui-window-body"),this.$foot.addClass("oo-ui-window-foot"),this.$content.append(this.$head,this.$body,this.$foot),this;throw new Error("Cannot initialize window, must be attached to a manager")},a.ui.Window.prototype.onFocusTrapFocused=function(t){t=this.$focusTrapBefore.is(t.target);this.focus(t)},a.ui.Window.prototype.focus=function(t){t=a.ui.findFocusable(this.$content,!!t);return t?t.focus():this.$content.trigger("focus"),this},a.ui.Window.prototype.open=function(t){if(this.manager)return this.manager.openWindow(this,t);throw new Error("Cannot open window, must be attached to a manager")},a.ui.Window.prototype.close=function(t){if(this.manager)return this.manager.closeWindow(this,t);throw new Error("Cannot close window, must be attached to a manager")},a.ui.Window.prototype.setup=function(t){var e=this;return this.toggle(!0),this.getSetupProcess(t).execute().then(function(){e.updateSize(),e.$element.addClass("oo-ui-window-active oo-ui-window-setup").width(),e.$content.addClass("oo-ui-window-content-setup").width()})},a.ui.Window.prototype.ready=function(t){var e=this;return this.$content.trigger("focus"),this.getReadyProcess(t).execute().then(function(){e.$element.addClass("oo-ui-window-ready").width(),e.$content.addClass("oo-ui-window-content-ready").width()})},a.ui.Window.prototype.hold=function(t){var e=this;return this.getHoldProcess(t).execute().then(function(){var t=e.$content.find(a.ui.Element.static.getDocument(e.$content).activeElement);t.length&&t[0].blur(),e.$element.removeClass("oo-ui-window-ready oo-ui-window-setup").width(),e.$content.removeClass("oo-ui-window-content-ready oo-ui-window-content-setup").width()})},a.ui.Window.prototype.teardown=function(t){var e=this;return this.getTeardownProcess(t).execute().then(function(){e.$element.removeClass("oo-ui-window-active").width(),e.toggle(!1)})},a.ui.Dialog=function(t){a.ui.Dialog.super.call(this,t),a.ui.mixin.PendingElement.call(this),this.actions=new a.ui.ActionSet,this.attachedActions=[],this.currentAction=null,this.onDialogKeyDownHandler=this.onDialogKeyDown.bind(this),this.actions.connect(this,{click:"onActionClick",change:"onActionsChange"}),this.$element.addClass("oo-ui-dialog").attr("role","dialog")},a.inheritClass(a.ui.Dialog,a.ui.Window),a.mixinClass(a.ui.Dialog,a.ui.mixin.PendingElement),a.ui.Dialog.static.name="",a.ui.Dialog.static.title="",a.ui.Dialog.static.actions=[],a.ui.Dialog.static.escapable=!0,a.ui.Dialog.prototype.onDialogKeyDown=function(t){var e;t.which===a.ui.Keys.ESCAPE&&this.constructor.static.escapable?(this.executeAction(""),t.preventDefault(),t.stopPropagation()):t.which===a.ui.Keys.ENTER&&(t.ctrlKey||t.metaKey)&&0<(e=this.actions.get({flags:"primary",visible:!0,disabled:!1})).length&&(this.executeAction(e[0].getAction()),t.preventDefault(),t.stopPropagation())},a.ui.Dialog.prototype.onActionClick=function(t){this.isPending()||this.executeAction(t.getAction())},a.ui.Dialog.prototype.onActionsChange=function(){this.detachActions(),this.isClosing()||(this.attachActions(),this.isOpening())||this.updateSize()},a.ui.Dialog.prototype.getActions=function(){return this.actions},a.ui.Dialog.prototype.getActionProcess=function(t){return(new a.ui.Process).next(function(){t||this.close()},this)},a.ui.Dialog.prototype.getSetupProcess=function(i){return i=i||{},a.ui.Dialog.super.prototype.getSetupProcess.call(this,i).next(function(){var t=this.constructor.static,e=(void 0!==i.actions?i:t).actions,t=(void 0!==i.title?i:t).title;this.title.setLabel(t),this.actions.add(this.getActionWidgets(e)),this.$element.on("keydown",this.onDialogKeyDownHandler)},this)},a.ui.Dialog.prototype.getTeardownProcess=function(t){return a.ui.Dialog.super.prototype.getTeardownProcess.call(this,t).first(function(){this.$element.off("keydown",this.onDialogKeyDownHandler),this.actions.clear(),this.currentAction=null},this)},a.ui.Dialog.prototype.initialize=function(){a.ui.Dialog.super.prototype.initialize.call(this),this.title=new a.ui.LabelWidget,this.$content.addClass("oo-ui-dialog-content"),this.$element.attr("aria-labelledby",this.title.getElementId()),this.setPendingElement(this.$head)},a.ui.Dialog.prototype.getActionWidgets=function(t){for(var e=[],i=0,o=t.length;i<o;i++)e.push(this.getActionWidget(t[i]));return e},a.ui.Dialog.prototype.getActionWidget=function(t){return new a.ui.ActionWidget(this.getActionWidgetConfig(t))},a.ui.Dialog.prototype.getActionWidgetConfig=function(t){return t},a.ui.Dialog.prototype.attachActions=function(){this.attachedActions=this.actions.get()},a.ui.Dialog.prototype.detachActions=function(){for(var t=0,e=this.attachedActions.length;t<e;t++)this.attachedActions[t].$element.detach();return this.attachedActions=[],this},a.ui.Dialog.prototype.executeAction=function(t){return this.pushPending(),this.currentAction=t,this.getActionProcess(t).execute().always(this.popPending.bind(this))},a.ui.MessageDialog=function(t){a.ui.MessageDialog.super.call(this,t),this.verticalActionLayout=null,this.$element.addClass("oo-ui-messageDialog")},a.inheritClass(a.ui.MessageDialog,a.ui.Dialog),a.ui.MessageDialog.static.name="message",a.ui.MessageDialog.static.size="small",a.ui.MessageDialog.static.title=null,a.ui.MessageDialog.static.message=null,a.ui.MessageDialog.static.actions=[{action:"accept",label:a.ui.deferMsg("ooui-dialog-message-accept"),flags:"primary"},{action:"reject",label:a.ui.deferMsg("ooui-dialog-message-reject"),flags:"safe"}],a.ui.MessageDialog.prototype.toggleVerticalActionLayout=function(t){return(t=void 0===t?!this.verticalActionLayout:!!t)!==this.verticalActionLayout&&(this.verticalActionLayout=t,this.$actions.toggleClass("oo-ui-messageDialog-actions-vertical",t).toggleClass("oo-ui-messageDialog-actions-horizontal",!t)),this},a.ui.MessageDialog.prototype.getActionProcess=function(t){return t?new a.ui.Process(function(){this.close({action:t})},this):a.ui.MessageDialog.super.prototype.getActionProcess.call(this,t)},a.ui.MessageDialog.prototype.getSetupProcess=function(t){return t=t||{},a.ui.MessageDialog.super.prototype.getSetupProcess.call(this,t).next(function(){this.title.setLabel((void 0!==t.title?t:this.constructor.static).title),this.message.setLabel((void 0!==t.message?t:this.constructor.static).message),this.size=(void 0!==t.size?t:this.constructor.static).size},this)},a.ui.MessageDialog.prototype.getReadyProcess=function(t){return a.ui.MessageDialog.super.prototype.getReadyProcess.call(this,t=t||{}).next(function(){var t=this.actions.get();0<(t=t.filter(function(t){return-1<t.getFlags().indexOf("primary")})).length&&t[0].focus()},this)},a.ui.MessageDialog.prototype.getBodyHeight=function(){var t=this.container.$element,e=t[0].style.overflow,i=(t[0].style.overflow="hidden",a.ui.Element.static.reconsiderScrollbars(t[0]),this.text.$element.outerHeight(!0));return t[0].style.overflow=e,i},a.ui.MessageDialog.prototype.setDimensions=function(t){var e=this,i=this.container.$element;return a.ui.MessageDialog.super.prototype.setDimensions.call(this,t),setTimeout(function(){var t=i[0].style.overflow,e=document.activeElement;i[0].style.overflow="hidden",a.ui.Element.static.reconsiderScrollbars(i[0]),e&&e!==document.activeElement&&e.focus&&e.focus(),i[0].style.overflow=t},300),e.fitActions(),setTimeout(function(){e.fitActions()},300),this},a.ui.MessageDialog.prototype.initialize=function(){a.ui.MessageDialog.super.prototype.initialize.call(this),this.$actions=$("<div>"),this.container=new a.ui.PanelLayout({scrollable:!0,classes:["oo-ui-messageDialog-container"]}),this.text=new a.ui.PanelLayout({padded:!0,expanded:!1,classes:["oo-ui-messageDialog-text"]}),this.message=new a.ui.LabelWidget({classes:["oo-ui-messageDialog-message"]}),this.title.$element.addClass("oo-ui-messageDialog-title"),this.$content.addClass("oo-ui-messageDialog-content"),this.container.$element.append(this.text.$element),this.text.$element.append(this.title.$element,this.message.$element),this.$body.append(this.container.$element),this.$actions.addClass("oo-ui-messageDialog-actions"),this.$foot.append(this.$actions)},a.ui.MessageDialog.prototype.getActionWidgetConfig=function(t){return $.extend({},t,{framed:!1})},a.ui.MessageDialog.prototype.attachActions=function(){a.ui.MessageDialog.super.prototype.attachActions.call(this);var t=this.actions.getSpecial(),e=this.actions.getOthers();t.safe&&(this.$actions.append(t.safe.$element),t.safe.toggleFramed(!0));for(var i=0,o=e.length;i<o;i++)this.$actions.append(e[i].$element),e[i].toggleFramed(!0);t.primary&&(this.$actions.append(t.primary.$element),t.primary.toggleFramed(!0))},a.ui.MessageDialog.prototype.fitActions=function(){var t=this.verticalActionLayout;this.toggleVerticalActionLayout(!1),this.$actions[0].scrollWidth>this.$actions[0].clientWidth&&this.toggleVerticalActionLayout(!0),this.$body.css("bottom",this.$foot.outerHeight(!0)),this.verticalActionLayout!==t&&this.updateSize()},a.ui.ProcessDialog=function(t){a.ui.ProcessDialog.super.call(this,t),this.fitOnOpen=!1,this.$element.addClass("oo-ui-processDialog"),a.ui.isMobile()&&this.$element.addClass("oo-ui-isMobile")},a.inheritClass(a.ui.ProcessDialog,a.ui.Dialog),a.ui.ProcessDialog.prototype.onDismissErrorButtonClick=function(){this.hideErrors()},a.ui.ProcessDialog.prototype.onRetryButtonClick=function(){this.hideErrors(),this.executeAction(this.currentAction)},a.ui.ProcessDialog.prototype.initialize=function(){a.ui.ProcessDialog.super.prototype.initialize.call(this),this.$navigation=$("<div>"),this.$location=$("<div>"),this.$safeActions=$("<div>"),this.$primaryActions=$("<div>"),this.$otherActions=$("<div>"),this.dismissButton=new a.ui.ButtonWidget({label:a.ui.msg("ooui-dialog-process-dismiss")}),this.retryButton=new a.ui.ButtonWidget,this.$errors=$("<div>"),this.$errorsTitle=$("<div>"),this.dismissButton.connect(this,{click:"onDismissErrorButtonClick"}),this.retryButton.connect(this,{click:"onRetryButtonClick"}),this.title.connect(this,{labelChange:"fitLabel"}),this.title.$element.addClass("oo-ui-processDialog-title"),this.$location.append(this.title.$element).addClass("oo-ui-processDialog-location"),this.$safeActions.addClass("oo-ui-processDialog-actions-safe"),this.$primaryActions.addClass("oo-ui-processDialog-actions-primary"),this.$otherActions.addClass("oo-ui-processDialog-actions-other"),this.$errorsTitle.addClass("oo-ui-processDialog-errors-title").text(a.ui.msg("ooui-dialog-process-error")),this.$errors.addClass("oo-ui-processDialog-errors oo-ui-element-hidden").append(this.$errorsTitle,$("<div>").addClass("oo-ui-processDialog-errors-actions").append(this.dismissButton.$element,this.retryButton.$element)),this.$content.addClass("oo-ui-processDialog-content").append(this.$errors),this.$navigation.addClass("oo-ui-processDialog-navigation").append(this.$primaryActions,this.$location,this.$safeActions),this.$head.append(this.$navigation),this.$foot.append(this.$otherActions)},a.ui.ProcessDialog.prototype.getActionWidgetConfig=function(e){function t(t){return e.flags===t||Array.isArray(e.flags)&&-1!==e.flags.indexOf(t)}return e=$.extend({framed:!0},e),t("close")?$.extend(e,{icon:"close",invisibleLabel:!0}):t("back")&&$.extend(e,{icon:"previous",invisibleLabel:!0}),e},a.ui.ProcessDialog.prototype.attachActions=function(){a.ui.ProcessDialog.super.prototype.attachActions.call(this);var t=this.actions.getSpecial(),e=this.actions.getOthers();t.primary&&this.$primaryActions.append(t.primary.$element);for(var i=0,o=e.length;i<o;i++){var n=e[i];this.$otherActions.append(n.$element)}t.safe&&this.$safeActions.append(t.safe.$element)},a.ui.ProcessDialog.prototype.executeAction=function(t){var e=this;return a.ui.ProcessDialog.super.prototype.executeAction.call(this,t).fail(function(t){e.showErrors(t||[])})},a.ui.ProcessDialog.prototype.setDimensions=function(){var t=this;a.ui.ProcessDialog.super.prototype.setDimensions.apply(this,arguments),this.fitLabel(),t.$body.css("bottom",t.$foot.outerHeight(!0)),setTimeout(function(){t.$body.css("bottom",t.$foot.outerHeight(!0))},300)},a.ui.ProcessDialog.prototype.fitLabel=function(){var t,e=this.getSizeProperties();if("number"!=typeof e.width){if(!this.isOpened())return this.isOpening()?void(this.fitOnOpen||(this.manager.lifecycle.opened.done(this.fitLabel.bind(this)),this.fitOnOpen=!0)):void 0;t=this.$head.width()-20}else t=e.width-20;var i,o,e=this.$safeActions.width(),n=this.$primaryActions.width(),s=Math.max(e,n),l=this.title.$element.width();return!a.ui.isMobile()&&2*s+l<t?i=o=s:o="ltr"===this.getDir()?(i=e,n):(i=n,e),this.$location.css({paddingLeft:i,paddingRight:o}),this},a.ui.ProcessDialog.prototype.showErrors=function(t){for(var e,i=[],o={},n=!0,s=!1,l=0,u=(t=t instanceof a.ui.Error?[t]:t).length;l<u;l++)t[l].isRecoverable()||(n=!1),t[l].isWarning()&&(s=!0),i.push(new a.ui.MessageWidget({type:"error",label:t[l].getMessage()}).$element[0]);this.$errorItems=$(i),n?(o[this.currentAction]=!0,(e=this.actions.get({actions:this.currentAction})).length&&this.retryButton.clearFlags().setFlags(e[0].getFlags())):(o[this.currentAction]=!1,this.actions.setAbilities(o)),s?this.retryButton.setLabel(a.ui.msg("ooui-dialog-process-continue")):this.retryButton.setLabel(a.ui.msg("ooui-dialog-process-retry")),this.retryButton.toggle(n),this.$errorsTitle.after(this.$errorItems),this.$errors.removeClass("oo-ui-element-hidden").scrollTop(0)},a.ui.ProcessDialog.prototype.hideErrors=function(){this.$errors.addClass("oo-ui-element-hidden"),this.$errorItems&&(this.$errorItems.remove(),this.$errorItems=null)},a.ui.ProcessDialog.prototype.getTeardownProcess=function(t){return a.ui.ProcessDialog.super.prototype.getTeardownProcess.call(this,t).first(function(){this.hideErrors(),this.fitOnOpen=!1},this)},a.ui.getWindowManager=function(){return a.ui.windowManager||(a.ui.windowManager=new a.ui.WindowManager,$(a.ui.getTeleportTarget()).append(a.ui.windowManager.$element),a.ui.windowManager.addWindows([new a.ui.MessageDialog])),a.ui.windowManager},a.ui.alert=function(t,e){return a.ui.getWindowManager().openWindow("message",$.extend({message:t,actions:[a.ui.MessageDialog.static.actions[0]]},e)).closed.then(function(){})},a.ui.confirm=function(t,e){return a.ui.getWindowManager().openWindow("message",$.extend({message:t},e)).closed.then(function(t){return!(!t||"accept"!==t.action)})},a.ui.prompt=function(t,e){var i=a.ui.getWindowManager(),o=new a.ui.TextInputWidget(e&&e.textInput||{}),t=new a.ui.FieldLayout(o,{align:"top",label:t}),t=i.openWindow("message",$.extend({message:t.$element},e));return t.opened.then(function(){o.on("enter",function(){i.getCurrentWindow().close({action:"accept"})}),o.focus()}),t.closed.then(function(t){return t&&"accept"===t.action?o.getValue():null})}}(OO);
//# sourceMappingURL=oojs-ui.min.js.map
/* ../node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js */
/*! OOUI v0.48.2 | http://oojs.mit-license.org */
!function(o){"use strict";o.ui.WikimediaUITheme=function(){o.ui.WikimediaUITheme.super.call(this)},o.inheritClass(o.ui.WikimediaUITheme,o.ui.Theme),o.ui.WikimediaUITheme.prototype.getElementClasses=function(i){var e,s,t,r,a={invert:!1,progressive:!1,destructive:!1,error:!1,warning:!1,success:!1},n=o.ui.WikimediaUITheme.super.prototype.getElementClasses.call(this,i);for(r in i instanceof o.ui.IconWidget&&i.$element.hasClass("oo-ui-checkboxInputWidget-checkIcon")?a.invert=!0:i.supports("hasFlag")&&(e=i.supports("isFramed")&&i.isFramed(),s=i.supports("isActive")&&i.isActive(),t=o.ui.Tool&&i instanceof o.ui.Tool||o.ui.ToolGroup&&i instanceof o.ui.ToolGroup,e&&(s||i.isDisabled()||i.hasFlag("primary"))||t&&i.hasFlag("primary")?a.invert=!0:e||!i.isDisabled()||i.hasFlag("invert")?i.isDisabled()||(a.progressive=i.hasFlag("progressive")||t&&s||(i instanceof o.ui.MenuOptionWidget||o.ui.OutlineOptionWidget&&i instanceof o.ui.OutlineOptionWidget)&&(i.isPressed()||i.isSelected()),a.destructive=i.hasFlag("destructive"),a.invert=i.hasFlag("invert"),a.error=i.hasFlag("error"),a.warning=i.hasFlag("warning"),a.success=i.hasFlag("success")):a.invert=!1),a)n[a[r]?"on":"off"].push("oo-ui-image-"+r);return n},o.ui.WikimediaUITheme.prototype.getDialogTransitionDuration=function(){return 250},o.ui.theme=new o.ui.WikimediaUITheme}(OO);
//# sourceMappingURL=oojs-ui-wikimediaui.min.js.map
/* ../static/NamespaceLookupWidget.js */
/**
 * Select element for namespaces of an object
 *
 * @constructor
 * @param {object} config Configuration options
 */
 function NamespaceLookupWidget(config) {
	config.allowArbitrary = true;
	NamespaceLookupWidget.super.call(this, config);

	this.setValue(config.value);
	this.setDomain(config.domain);
}

OO.inheritClass(NamespaceLookupWidget, OO.ui.MenuTagMultiselectWidget);

NamespaceLookupWidget.prototype.clearMenu = function() {
	let oldValues = this.getValue();

	this.clearItems();
	this.getMenu().clearItems();

	this.allowArbitrary = true;
	this.setValue(oldValues);
}

NamespaceLookupWidget.prototype.setDomain = function(domain) {
	if (!domain) {
		this.clearMenu();
		return;
	}

	return $.get('https://' + domain + '/w/api.php', {
		action: 'query',
		meta: 'siteinfo',
		siprop: 'namespaces',
		format: 'json',
		origin: '*',
		formatversion: 2
	}).then(function(res) {
		let oldValues = this.getValue(),
			options = [];

		this.clearItems();
		this.getMenu().clearItems();

		for (let id in res.query.namespaces) {
			if (id < 0) continue; // Ignore virtual namespaces

			let info = res.query.namespaces[id];

			options.push({
				data: info.id.toString(),
				label: info.name || '(Article)'
			});
		}

		this.allowArbitrary = false;

		this.addOptions(options);
		this.setValue(oldValues);
	}.bind(this), this.clearMenu.bind(this));
}

NamespaceLookupWidget.prototype.isAllowedData = function(data) {
	return NamespaceLookupWidget.super.prototype.isAllowedData.call(this, data) && /^-?[0-9]+$/.test(data);
}

/* ../static/PageLookupWidget.js */
/**
 * Lookup element for pages of a project
 * setProject must be called for lookup to start
 *
 * @constructor
 * @param {object} config Configuration options
 */
 function PageLookupWidget(config) {
	PageLookupWidget.super.call(this, config);
	OO.ui.mixin.LookupElement.call(this, config);

	this.setDomain(config.domain);
}

OO.inheritClass(PageLookupWidget, OO.ui.TextInputWidget);
OO.mixinClass(PageLookupWidget, OO.ui.mixin.LookupElement);

PageLookupWidget.prototype.getLookupRequest = function() {
	return this.domain ? $.get('https://' + this.domain + '/w/api.php', {
		action: 'query',
		generator: 'prefixsearch',
		gpssearch: this.getValue(),
		gpslimit: 10,
		origin: '*',
		format: 'json',
		formatversion: 2
	}) : $.Deferred().resolve({
		query: {
			pages: []
		}
	}).promise();
};

PageLookupWidget.prototype.getLookupCacheDataFromResponse = function(res) {
	var titles = res.query.pages || [];

	titles.sort(function(a, b) {
		return a.index - b.index;
	});

	return titles;
};

PageLookupWidget.prototype.getLookupMenuOptionsFromData = function(titles) {
	return titles.map(function(value) {
		return new OO.ui.MenuOptionWidget({
			data: value.title,
			label: value.title
		});
	})
};

PageLookupWidget.prototype.setDomain = function(domain) {
	this.domain = domain;
};

PageLookupWidget.prototype.getRequestQuery = function() {
	return this.domain + '/' + this.getValue();
};

/* ../static/ProjectLookupWidget.js */
/**
 * Lookup element for project names
 *
 * @constructor
 * @param {object} config Configuration options
 */
 function ProjectLookupWidget(config) {
	ProjectLookupWidget.super.call(this, config);
	OO.ui.mixin.LookupElement.call(this, config);

	this.domain = config.domain;
	this.default = config.default;

	this.lookupMenu.connect(this, {
		choose: 'onProjectLookupMenuChoose'
	});
}

OO.inheritClass(ProjectLookupWidget, OO.ui.TextInputWidget);
OO.mixinClass(ProjectLookupWidget, OO.ui.mixin.LookupElement);

ProjectLookupWidget.prototype.getLookupRequest = function() {
	return $.get('projects/', {
		prefix: this.getValue()
	});
};

ProjectLookupWidget.prototype.getLookupCacheDataFromResponse = function(response) {
	return response || [];
};

ProjectLookupWidget.prototype.getLookupMenuOptionsFromData = function(data) {
	this.setDomain(data.exact);

	return data.projects.map(function(value) {
		return new OO.ui.MenuOptionWidget({
			data: value,
			label: value
		});
	});
};

ProjectLookupWidget.prototype.onProjectLookupMenuChoose = function(item) {
	this.setDomain(item.getData());
};

ProjectLookupWidget.prototype.getValue = function() {
	return this.value || this.default;
};

ProjectLookupWidget.prototype.getDomain = function() {
	return this.domain;
}

ProjectLookupWidget.prototype.setDomain = function(domain) {
	if (domain == this.domain) return;

	this.domain = domain;
	this.emit('domain', domain);
}

ProjectLookupWidget.prototype.getValidity = function() {
	var deferred = $.Deferred();

	if (this.domain) {
		deferred.resolve();
	} else {
		deferred.reject();
	}

	return deferred.promise();
}

/* ../static/index.js */
let projectLookup = OO.ui.infuse($('#project')),
	pageLookup = OO.ui.infuse($('#page'), {
		domain: projectLookup.getDomain()
	}),
	namespacesInput = OO.ui.infuse($('#namespaces')),
	button = OO.ui.infuse($('#submit')),
	namespacesSelect = new NamespaceLookupWidget({
		value: namespacesInput.getValue() && namespacesInput.getValue().split(','),
		domain: projectLookup.getDomain()
	}),
	progressWidget = new OO.ui.ProgressBarWidget(),
	progressLayout = new OO.ui.FieldLayout(progressWidget, {
		align: 'top'
	}),
	out = $('#out'),
	request,
	currentSearch = location.search;

function submitForm(pushState) {
	let params = {
			project: projectLookup.getValue(),
			page: pageLookup.getValue(),
			namespaces: namespacesSelect.getValue().join(',')
		},
		query = Object.keys(params)
			.filter(param => params[param])
			.map(param => param + '=' + encodeURIComponent(params[param]))
			.join('&');

	if (pushState) {
		currentSearch = (query ? '?' : '') + query;
		history.pushState({}, null, currentSearch);
	}

	if (!query) {
		out.empty();
		return;
	}

	if (request) {
		request.wasReplaced = true;
		request.abort();
	}

	out.html(progressLayout.$element);

	request = $.get('output/?' + query);

	request.then(function(res) {
		document.title = res.title;
		out.html(res.html);
	}, function(req) {
		if (req.wasReplaced) return;

		out.html('<div class="error">Failed to send API request.</div>');
	});
}

projectLookup.on('domain', function (domain) {
	pageLookup.setDomain(domain);
	namespacesSelect.setDomain(domain);
});

button.on('click', function() {
	submitForm(true);
});

window.addEventListener('popstate', function() {
	if (currentSearch === location.search) return;
	currentSearch = location.search;

	let params = {};

	currentSearch.slice(1).split('&').forEach(param => {
		let chunks = param.split('='),
			key = chunks.shift(),
			value = decodeURIComponent(chunks.join('='));

		params[key] = value;
	});

	projectLookup.setValue(params.project || '');
	pageLookup.setValue(params.page || '');
	namespacesSelect.setValue((params.namespaces || '').split(','));

	submitForm(false);
});

$('#skip').on('click', function(e) {
	e.preventDefault();
	out.trigger('focus');
});

namespacesInput.$element.replaceWith(namespacesSelect.$element);

