/*! toast 2.1.1 (https://github.com/pyrsmk/toast) */

var handled_resources = {};

function toast() {
    var head = document.getElementsByTagName('head')[0],

	// Load as much resources as we can
	loadResources = function (resources) {
	    // Waiting for DOM readiness then load resources
	    if (!head) {
	        setTimeout(function () {
	            loadResources(resources);
	        }, 50);
	    }
	        // Load resources
	    else if (resources.length) {
	        var i = -1,
				resource,
				callback;
	        while (resource = resources[++i]) {
	            // Resource
	            if (typeof resource == 'string') {
	                loadResource(resource);
	            }
	                // Callback
	            else if (typeof resource == 'function') {
	                callback = resource;
	                break;
	            }
	        }
	        watchResources(callback, Array.prototype.slice.call(resources, i + 1));
	    }
	},

	// Load one resource
	loadResource = function (resource) {
	    // Extract resource type
	    var implicit_type = /\.(\w+)$/.exec(resource),
			explicit_type = /^\[(\w+)\](.+)/.exec(resource),
			type, node;
	    if (explicit_type !== null) {
	        type = explicit_type[1];
	        resource = explicit_type[2];
	    }
	    else if (implicit_type !== null) {
	        type = implicit_type[1];
	    }
	    else {
	        return;
	    }
	    // Verify if the resource is not already handled
	    if (resource in handled_resources) {
	        return;
	    }
	    // Mark the resource as handled (but not loaded yet)
	    handled_resources[resource] = false;
	    // Load resource
	    switch (type) {
	        case 'js':
	            // Create SCRIPT element
	            node = document.createElement('script');
	            node.src = resource;
	            node.type = 'text/javascript';
	            head.appendChild(node);
	            // Watch loading state
	            var version = navigator.appVersion.match(/MSIE (\d)/);
	            if (version !== null && parseInt(version[1], 10) < 9) {
	                // IE<9
	                node.onreadystatechange = function () {
	                    if (/ded|co/.test(this.readyState)) {
	                        handled_resources[resource] = true;
	                    }
	                };
	            }
	            else {
	                // Other browsers
	                node.onload = function () {
	                    handled_resources[resource] = true;
	                };
	            }
	            break;
	        case 'css':
	            // Create LINK element
	            node = document.createElement('link');
	            node.rel = 'styleSheet';
	            node.href = resource;
	            head.appendChild(node);
	            // Watch loading state
	            watchStylesheet(node, resource);
	            break;
	        default:
	            delete handled_resources[resource];
	            return;
	    }
	},

	// Watch if all resources have been loaded
	watchResources = function (callback, resourcesToLoad) {
	    for (var resource in handled_resources) {
	        if (!handled_resources[resource]) {
	            setTimeout(function () {
	                watchResources(callback, resourcesToLoad);
	            }, 50);
	            return;
	        }
	    }
	    if (typeof callback == 'function') {
	        callback();
	    }
	    loadResources(resourcesToLoad);
	},

	// Watch if a CSS resource has been loaded
	watchStylesheet = function (node, resource) {
	    if (node.sheet || node.styleSheet) {
	        handled_resources[resource] = true;
	    }
	    else {
	        setTimeout(function () {
	            watchStylesheet(node, resource);
	        }, 50);
	    }
	};

    // Load resources
    loadResources(arguments);
}
/*! 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});

(function($){$.browserTest=function(a,z){var u='unknown',x='X',m=function(r,h){for(var i=0;i<h.length;i=i+1){r=r.replace(h[i][0],h[i][1]);}return r;},c=function(i,a,b,c){var r={name:m((a.exec(i)||[u,u])[1],b)};r[r.name]=true;r.version=(c.exec(i)||[x,x,x,x])[3];if(r.name.match(/safari/)&&r.version>400){r.version='2.0';}if(r.name==='presto'){r.version=($.browser.version>9.27)?'futhark':'linear_b';}r.versionNumber=parseFloat(r.version,10)||0;r.versionX=(r.version!==x)?(r.version+'').substr(0,1):x;r.className=r.name+r.versionX;return r;};a=(a.match(/Opera|Navigator|Minefield|KHTML|Chrome/)?m(a,[[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/,''],['Chrome Safari','Chrome'],['KHTML','Konqueror'],['Minefield','Firefox'],['Navigator','Netscape']]):a).toLowerCase();$.browser=$.extend((!z)?$.browser:{},c(a,/(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/,[],/(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));$.layout=c(a,/(gecko|konqueror|msie|opera|webkit)/,[['konqueror','khtml'],['msie','trident'],['opera','presto']],/(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);$.os={name:(/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase())||[u])[0].replace('sunos','solaris')};if(!z){$('html').addClass([$.os.name,$.browser.name,$.browser.className,$.layout.name,$.layout.className].join(' '));}};$.browserTest(navigator.userAgent);})(jQuery);
/*! jQuery UI - v1.14.0 - 2024-09-13
* https://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright OpenJS Foundation and other contributors; Licensed MIT */

!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){V.ui=V.ui||{};V.ui.version="1.14.0";var n,s,k,x,o,a,r,h,l,i,c=0,u=Array.prototype.hasOwnProperty,d=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],h=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[h.toLowerCase()]=function(t){return!!V.data(t,h)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:h}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=d.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],u.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=d.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(function(){var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})}(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+r.eventNamespace,t=t[2];t?a.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}}),V.widget;function C(t,e,i){return[parseFloat(t[0])*(l.test(t[0])?e/100:1),parseFloat(t[1])*(l.test(t[1])?i/100:1)]}function D(t,e){return parseInt(V.css(t,e),10)||0}function I(t){return null!=t&&t===t.window}k=Math.max,x=Math.abs,o=/left|center|right/,a=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,h=/^\w+/,l=/%$/,i=V.fn.position,V.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=I(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){var d,p,f,g,m,_,v,b,y,w,t,e;return u&&u.of?(_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(e=(t=_)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:I(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},_[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):a.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=a.test(i[1])?i[1]:"center",t=r.exec(i[0]),e=r.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[h.exec(i[0])[0],h.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=C(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),h=a.outerHeight(),e=D(this,"marginLeft"),s=D(this,"marginTop"),n=r+e+D(this,"marginRight")+b.width,o=h+s+D(this,"marginBottom")+b.height,l=V.extend({},m),c=C(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?l.left-=r:"center"===u.my[0]&&(l.left-=r/2),"bottom"===u.my[1]?l.top-=h:"center"===u.my[1]&&(l.top-=h/2),l.left+=c[0],l.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](l,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:h,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-l.left,i=e+p-r,s=g.top-l.top,n=s+f-h,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:l.left,top:l.top,width:r,height:h},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&x(e+i)<p&&(o.horizontal="center"),f<h&&x(s+n)<f&&(o.vertical="middle"),k(x(e),x(i))>k(x(s),x(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(l,{using:t}))})):i.apply(this,arguments)},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,i=i.width,n=t.left-e.collisionPosition.marginLeft,o=s-n,a=n+e.collisionWidth-i-s;i<e.collisionWidth?0<o&&a<=0?t.left+=o-(t.left+o+e.collisionWidth-i-s):t.left=!(0<a&&o<=0)&&a<o?s+i-e.collisionWidth:s:0<o?t.left+=o:0<a?t.left-=a:t.left=k(t.left-n,t.left)},top:function(t,e){var i=e.within,i=i.isWindow?i.scrollTop:i.offset.top,s=e.within.height,n=t.top-e.collisionPosition.marginTop,o=i-n,a=n+e.collisionHeight-s-i;s<e.collisionHeight?0<o&&a<=0?t.top+=o-(t.top+o+e.collisionHeight-s-i):t.top=!(0<a&&o<=0)&&a<o?i+s-e.collisionHeight:i:0<o?t.top+=o:0<a?t.top-=a:t.top=k(t.top-n,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,o=t.left-e.collisionPosition.marginLeft,a=o-i,o=o+e.collisionWidth-n-i,r="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,h="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,l=-2*e.offset[0];a<0?((n=t.left+r+h+l+e.collisionWidth-n-s)<0||n<x(a))&&(t.left+=r+h+l):0<o&&(0<(s=t.left-e.collisionPosition.marginLeft+r+h+l-i)||x(s)<o)&&(t.left+=r+h+l)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,i=i.isWindow?i.scrollTop:i.offset.top,o=t.top-e.collisionPosition.marginTop,a=o-i,o=o+e.collisionHeight-n-i,r="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,h="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,l=-2*e.offset[1];a<0?((n=t.top+r+h+l+e.collisionHeight-n-s)<0||n<x(a))&&(t.top+=r+h+l):0<o&&(0<(s=t.top-e.collisionPosition.marginTop+r+h+l-i)||x(s)<o)&&(t.top+=r+h+l)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}})}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}),V.ui.focusable=function(t,e){var i,s,n,o=t.nodeName.toLowerCase();return"area"===o?(n=(i=t.parentNode).name,!(!t.href||!n||"map"!==i.nodeName.toLowerCase())&&0<(i=V("img[usemap='#"+n+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(o)?(s=!t.disabled)&&(n=V(t).closest("fieldset")[0])&&(s=!n.disabled):s="a"===o&&t.href||e,s&&V(t).is(":visible")&&"visible"===V(t).css("visibility"))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}}),V.ui.focusable,V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=V(this.element.prop("form")),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},V.escapeSelector||(V.escapeSelector=function(t){return CSS.escape(t+"")}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+CSS.escape(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(e=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}});var t,e,p=!1;V(document).on("mouseup",function(){p=!1}),V.widget("ui.mouse",{version:"1.14.0",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){var e,i,s;if(!p)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),i=1===(this._mouseDownEvent=t).which,s="string"==typeof(e=this).options.cancel&&V(t.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(t)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?t.preventDefault():(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),p=!0)),!0},_mouseMove:function(t){if(this._mouseMoved&&!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t);return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,p=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.widget("ui.draggable",V.ui.mouse,{version:"1.14.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length||(this.handle=this._getHandle(t),!this.handle)||(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=this.document[0].activeElement;V(t.target).closest(e).length||V(e).trigger("blur")},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t,e;return"relative"!==this.cssPosition?{top:0,left:0}:(t=this.element.position(),e=this._isRootNode(this.scrollParent[0]),{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())})},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e=this.options,i=this.document[0];this.relativeContainer=null,e.containment?"window"===e.containment?this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||i.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:"document"===e.containment?this.containment=[0,0,V(i).width()-this.helperProportions.width-this.margins.left,(V(i).height()||i.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:e.containment.constructor===Array?this.containment=e.containment:("parent"===e.containment&&(e.containment=this.helper[0].parentNode),(e=(i=V(e.containment))[0])&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i)):this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*t}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),{top:(a=e&&(this.containment&&(i=this.relativeContainer?(e=this.relativeContainer.offset(),[this.containment[0]+e.left,this.containment[1]+e.top,this.containment[2]+e.left,this.containment[3]+e.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3])&&(a=i[3]+this.offset.click.top),s.grid&&(e=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||e-this.offset.click.top>=i[1]||e-this.offset.click.top>i[3]?e:e-this.offset.click.top>=i[1]?e-s.grid[1]:e+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis)?this.originalPageY:a)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(i.cancelHelperRemoval=!(t.isOver=0),t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,h,l,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)h=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(l=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||h+p<f||_<l-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(l-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(h-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:l-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a)&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h}).left),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(l-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(h-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:l,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a)&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h-i.helperProportions.width}).left),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}}),V.ui.draggable;function f(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.14.0",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0]||(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),s)||!this.accept.call(this.element[0],i.currentItem||i.element))&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,h=e.offset.left,l=e.offset.top,c=h+e.proportions().width,u=l+e.proportions().height;switch(i){case"fit":return h<=n&&a<=c&&l<=o&&r<=u;case"intersect":return h<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&l<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return f(s.pageY,l,e.proportions().height)&&f(s.pageX,h,e.proportions().width);case"touch":return(l<=o&&o<=u||l<=r&&r<=u||o<l&&u<r)&&(h<=n&&n<=c||h<=a&&a<=c||n<h&&c<a);default:return!1}},V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled)&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(s=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":s&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length)&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t)&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}},!0===V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.resizable",V.ui.mouse,{version:"1.14.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var e=e&&"left"===e?"scrollLeft":"scrollTop",i=!1;if(0<t[e])return!0;try{t[e]=1,i=0<t[e],t[e]=0}catch(t){}return i},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,e=e?0:o.sizeDiff.width,e={width:o.helper.width()-e,height:o.helper.height()-i},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper)&&!n.animate&&this._proportionallyResize(),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(t=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,e=n.maxHeight*this.aspectRatio,s=n.maxWidth/this.aspectRatio,n.minWidth<t&&(n.minWidth=t),n.minHeight<i&&(n.minHeight=i),e<n.maxWidth&&(n.maxWidth=e),s<n.maxHeight)&&(n.maxHeight=s),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&i&&(t.top=h-e.minHeight),n&&i&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,n=n?0:i.sizeDiff.width,n={width:i.size.width-n,height:i.size.height-o},o=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,a=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,a&&o?{top:a,left:o}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n=V(this).resizable("instance"),o=n.options,a=n.element,o=o.containment,a=o instanceof V?o.get(0):/parent/.test(o)?a.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},o=n.containerOffset,e=n.containerSize.height,t=n.containerSize.width,t=n._hasScroll(a,"left")?a.scrollWidth:t,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:o.left,top:o.top,width:t,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,t=e._aspectRatio||t.shiftKey,o={top:0,left:0},a=e.containerElement,r=!0;a[0]!==document&&/static/.test(a.css("position"))&&(o=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-o.left),t&&(e.size.height=e.size.width/e.aspectRatio,r=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,r=!1),e.position.top=e._helper?s.top:0),a=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),a&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-o.left:e.offset.left-s.left)),a=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-o.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,t)&&(e.size.height=e.size.width/e.aspectRatio,r=!1),a+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-a,t)&&(e.size.width=e.size.height*e.aspectRatio,r=!1),r||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.css("width")),height:parseFloat(t.css("height")),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!0===V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,s=Math.round((s.height-n.height)/l)*l,u=n.width+c,d=n.height+s,p=i.maxWidth&&i.maxWidth<u,f=i.maxHeight&&i.maxHeight<d,g=i.minWidth&&i.minWidth>u,m=i.minHeight&&i.minHeight>d;i.grid=r,g&&(u+=h),m&&(d+=l),p&&(u-=h),f&&(d-=l),/^(se|s|e)$/.test(a)?(e.size.width=u,e.size.height=d):/^(ne)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.top=o.top-s):/^(sw)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.left=o.left-c):((d-l<=0||u-h<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<d-l?(e.size.height=d,e.position.top=o.top-s):(d=l-t.height,e.size.height=d,e.position.top=o.top+n.height-d),0<u-h?(e.size.width=u,e.position.left=o.left-c):(u=h-t.width,e.size.width=u,e.position.left=o.left+n.width-u))}}),V.ui.resizable,V.widget("ui.selectable",V.ui.mouse,{version:"1.14.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){var t,n,o,a,r,h,l;if(this.dragged=!0,!this.options.disabled)return o=(n=this).options,a=this.opos[0],r=this.opos[1],(h=s.pageX)<a&&(t=h,h=a,a=t),(l=s.pageY)<r&&(t=l,l=r,r=t),this.helper.css({left:a,top:r,width:h-a,height:l-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(h<i.left||i.right<a||l<i.top||i.bottom<r):"fit"===o.tolerance&&(e=a<i.left&&i.right<h&&r<i.top&&i.bottom<l),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),!t.selected||s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element}))))}),!1},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.14.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i))||(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this._storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager)&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,l="x"===this.options.axis||r<s+l&&s+l<h,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?l&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<h},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),t=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this.dragDirection.vertical,s=this.dragDirection.horizontal;return this.floating&&s?"right"===s&&t||"left"===s&&!t:i&&("down"===i&&e||"up"===i&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function h(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(h);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,h,l=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],h=(a=c[e][i=0]).length;i<h;i++)(r=V(a[i])).data(this.widgetName+"-item",o),l.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,h,l,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(h=c.floating||this._isFloating(this.currentItem))?"left":"top",o=h?"width":"height",l=h?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[l]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[l]-a)<i)&&(i=Math.abs(t[l]-a),s=this.items[e],this.direction=r?"up":"down");(s||this.options.dropOnEmpty)&&(this.currentContainer===this.containers[u]?this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1):(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t;return"relative"===this.cssPosition?{top:(t=this.currentItem.position()).top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}:{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],i=V(i.containment).offset(),e="hidden"!==V(t).css("overflow"),this.containment=[i.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(e?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(e?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,i="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():s?0:i.scrollTop())*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*t}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this._storedStylesheet&&(this._storedStylesheet.remove(),this._storedStylesheet=null),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}}),V.widget("ui.accordion",{version:"1.14.0",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").filter(function(t){return t%2==0}))},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"===t?this._activate(e):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e)&&this._createIcons())},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,r)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(a=i.children(".ui-accordion-header-icon"),this._removeClass(a,null,e.icons.activeHeader)._addClass(a,null,e.icons.header)),n)||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(t=s.children(".ui-accordion-header-icon"),this._removeClass(t,null,e.icons.header)._addClass(t,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active"))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){function s(){o._toggleComplete(e)}var n,o=this,a=0,r=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),l=this.options.animate||{},h=h&&l.down||l,c=(c="string"==typeof h?h:c)||h.easing||l.easing,u=(u="number"==typeof h?h:u)||h.duration||l.duration;return i.length?t.length?(n=t.show().outerHeight(),i.animate(this.hideProps,{duration:u,easing:c,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:u,easing:c,complete:s,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===r&&(a+=e.now):"content"!==o.options.heightStyle&&(e.now=Math.round(n-i.outerHeight()-a),a=0)}})):i.animate(this.hideProps,u,c,s):t.animate(this.showProps,u,c,s)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),this._trigger("activate",null,t)}}),V.widget("ui.menu",{version:"1.14.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}}),V.widget("ui.autocomplete",{version:"1.14.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}}),V.ui.autocomplete;var g,m,_=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.14.0",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};t&&("controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),a=a.concat(e.get())):V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(_,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}}),V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.14.0",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("<div></div>").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+CSS.escape(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(V(this).prop("form")).length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),V.ui.checkboxradio,V.widget("ui.button",{version:"1.14.0",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var t="iconPosition"!==t,i=t?this.options.iconPosition:e,s="top"===i||"bottom"===i;this.icon?t&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),t&&this._addClass(this.icon,null,e),this._attachIcon(i),s?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(i))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace)&&this.iconSpace.remove()),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e)&&this.element.trigger("blur")},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!0===V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"===t?this._super("showLabel",e):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments))}}),V.fn.button=(g=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==e&&"radio"!==e?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),t="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",e=V.data(this,"ui-"+t);e?(e.option(i||{}),e._init&&e._init()):"button"==t?g.call(V(this),i):V(this).checkboxradio(V.extend({icon:!1},i))})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),V.ui.button;function v(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=b(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function b(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,y)}function y(){V.datepicker._isDisabledDatepicker((m.inline?m.dpDiv.parent():m.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function w(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i])}V.extend(V.ui,{datepicker:{version:"1.14.0"}}),V.extend(v.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return w(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?b(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(s=this._get(e,"showOn"))&&"both"!==s||t.on("focus",this._showDatepicker),"button"!==s&&"both"!==s||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(o.setMonth((e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s})(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),w(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),V.datepicker._hideDatepicker(),m===s)&&(m=null,this._curInst=null)},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((s=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((s=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(t)for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),e=this._getDateDatepicker(t,!0),i=this._getMinMaxDate(o,"min"),n=this._getMinMaxDate(o,"max"),w(o.settings,s),null!==i&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,i)),null!==n&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,n)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,e),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(i=V.datepicker._get(s,"onSelect"))?(e=V.datepicker._formatDate(s),i.apply(s.input?s.input[0]:null,[e,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return i=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),e=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||e<" "||!i||-1<i.indexOf(e)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n)&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0]),!1===(i=(i=V.datepicker._get(n,"beforeShow"))?i.apply(t,[t,n]):{}))||(w(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),i={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),i=V.datepicker._checkOffset(n,i,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:i.left+"px",top:i.top+"px"}),n.inline)||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(e=parseInt(t.css("zIndex"),10),!isNaN(e))&&0!==e)return e;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)},_updateDatepicker:function(t){this.maxRows=4,(m=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&y.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),h=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,r<e.left+s&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,h<e.top+n&&n<h?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(t=this._get(s,"showAnim"),i=this._get(s,"duration"),e=function(){V.datepicker._tidyDialog(s)},V.effects&&V.effects.effect[t]?s.dpDiv.hide(t,V.datepicker._get(s,"showOptions"),i,e):s.dpDiv["slideDown"===t?"slideUp":"fadeIn"===t?"fadeOut":"hide"](t?i:null,e),t||e(),this._datepickerShowing=!1,(i=this._get(s,"onClose"))&&i.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI)&&(V.unblockUI(),V("body").append(this.dpDiv)),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(t=V(t.target),e=V.datepicker._getInst(t[0]),!(t[0].id===V.datepicker._mainDivId||0!==t.parents("#"+V.datepicker._mainDivId).length||t.hasClass(V.datepicker.markerClassName)||t.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)||t.hasClass(V.datepicker.markerClassName)&&V.datepicker._curInst!==e)&&V.datepicker._hideDatepicker()},_adjustDate:function(t,e,i){var t=V(t),s=this._getInst(t[0]);this._isDisabledDatepicker(t[0])||(this._adjustInstDate(s,e,i),this._updateDatepicker(s))},_gotoToday:function(t){var e,t=V(t),i=this._getInst(t[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(e=new Date,i.selectedDay=e.getDate(),i.drawMonth=i.selectedMonth=e.getMonth(),i.drawYear=i.selectedYear=e.getFullYear()),this._notifyChange(i),this._adjustDate(t)},_selectMonthYear:function(t,e,i){var t=V(t),s=this._getInst(t[0]);s["selected"+("M"===i?"Month":"Year")]=s["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(t)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i,t=V(t),t=this._getInst(t[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),e=this._getDate(t),i=this.formatDate(i,e,this._getFormatConfig(t)),V(document).find(s).val(i))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e,t=new Date(t.getTime());return t.setDate(t.getDate()+4-(t.getDay()||7)),e=t.getTime(),t.setMonth(0),t.setDate(1),Math.floor(Math.round((e-t)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o=0,a=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,a="string"!=typeof a?a:(new Date).getFullYear()%100+parseInt(a,10),r=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,l=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,c=(t?t.monthNames:null)||this._defaults.monthNames,u=-1,d=-1,p=-1,f=-1,g=!1,m=function(t){t=y+1<e.length&&e.charAt(y+1)===t;return t&&y++,t},_=function(t){var e=m(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,t=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(o).match(t);if(e)return o+=e[0].length,parseInt(e[0],10);throw"Missing number at position "+o},v=function(t,e,i){var s=-1,t=V.map(m(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(t,function(t,e){var i=e[1];if(n.substr(o,i.length).toLowerCase()===i.toLowerCase())return s=e[0],o+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+o},b=function(){if(n.charAt(o)!==e.charAt(y))throw"Unexpected literal at position "+o;o++},y=0;y<e.length;y++)if(g)"'"!==e.charAt(y)||m("'")?b():g=!1;else switch(e.charAt(y)){case"d":p=_("d");break;case"D":v("D",r,h);break;case"o":f=_("o");break;case"m":d=_("m");break;case"M":d=v("M",l,c);break;case"y":u=_("y");break;case"@":u=(s=new Date(_("@"))).getFullYear(),d=s.getMonth()+1,p=s.getDate();break;case"!":u=(s=new Date((_("!")-this._ticksTo1970)/1e4)).getFullYear(),d=s.getMonth()+1,p=s.getDate();break;case"'":m("'")?b():g=!0;break;default:b()}if(o<n.length&&(t=n.substr(o),!/^\s+/.test(t)))throw"Extra/unparsed characters found in date: "+t;if(-1===u?u=(new Date).getFullYear():u<100&&(u+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u<=a?0:-100)),-1<f)for(d=1,p=f;;){if(p<=(i=this._getDaysInMonth(u,d-1)))break;d++,p-=i}if((s=this._daylightSavingAdjust(new Date(u,d-1,p))).getFullYear()!==u||s.getMonth()+1!==d||s.getDate()!==p)throw"Invalid date";return s},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,h=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,l=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),h,l);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(s=t,(i=new Date).setDate(i.getDate()+s),i):new Date(t.getTime());return(s=s&&"Invalid Date"===s.toString()?e:s)&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,N,W,F,L,a,r,R,h,l,c,u,d,p,f,g,m,_,Y,v,b,B,y,j,K,w,k,x,C=new Date,U=this._daylightSavingAdjust(new Date(C.getFullYear(),C.getMonth(),C.getDate())),D=this._get(t,"isRTL"),C=this._get(t,"showButtonPanel"),I=this._get(t,"hideIfNoPrevNext"),P=this._get(t,"navigationAsDateFormat"),T=this._getNumberOfMonths(t),M=this._get(t,"showCurrentAtPos"),S=this._get(t,"stepMonths"),q=1!==T[0]||1!==T[1],z=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),H=this._getMinMaxDate(t,"min"),O=this._getMinMaxDate(t,"max"),A=t.drawMonth-M,E=t.drawYear;if(A<0&&(A+=12,E--),O)for(e=this._daylightSavingAdjust(new Date(O.getFullYear(),O.getMonth()-T[0]*T[1]+1,O.getDate())),e=H&&e<H?H:e;this._daylightSavingAdjust(new Date(E,A,1))>e;)--A<0&&(A=11,E--);for(t.drawMonth=A,t.drawYear=E,M=this._get(t,"prevText"),M=P?this.formatDate(M,this._daylightSavingAdjust(new Date(E,A-S,1)),this._getFormatConfig(t)):M,i=this._canAdjustMonth(t,-1,E,A)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"e":"w")).text(M))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"e":"w")).text(M))[0].outerHTML,M=this._get(t,"nextText"),M=P?this.formatDate(M,this._daylightSavingAdjust(new Date(E,A+S,1)),this._getFormatConfig(t)):M,s=this._canAdjustMonth(t,1,E,A)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:M}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(D?"w":"e")).text(M))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:M}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(D?"w":"e")).text(M))[0].outerHTML,S=this._get(t,"currentText"),I=this._get(t,"gotoCurrent")&&t.currentDay?z:U,S=P?this.formatDate(S,I,this._getFormatConfig(t)):S,M="",t.inline||(M=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),P="",C&&(P=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(D?M:"").append(this._isInRange(t,I)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(S):"").append(D?"":M)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),N=this._get(t,"dayNames"),W=this._get(t,"dayNamesMin"),F=this._get(t,"monthNames"),L=this._get(t,"monthNamesShort"),a=this._get(t,"beforeShowDay"),r=this._get(t,"showOtherMonths"),R=this._get(t,"selectOtherMonths"),h=this._getDefaultDate(t),l="",u=0;u<T[0];u++){for(d="",this.maxRows=4,p=0;p<T[1];p++){if(f=this._daylightSavingAdjust(new Date(E,A,t.selectedDay)),g=" ui-corner-all",m="",q){if(m+="<div class='ui-datepicker-group",1<T[1])switch(p){case 0:m+=" ui-datepicker-group-first",g=" ui-corner-"+(D?"right":"left");break;case T[1]-1:m+=" ui-datepicker-group-last",g=" ui-corner-"+(D?"left":"right");break;default:m+=" ui-datepicker-group-middle",g=""}m+="'>"}for(m+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+g+"'>"+(/all|left/.test(g)&&0===u?D?s:i:"")+(/all|right/.test(g)&&0===u?D?i:s:"")+this._generateMonthYearHeader(t,A,E,H,O,0<u||0<p,F,L)+"</div><table class='ui-datepicker-calendar'><thead><tr>",_=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",c=0;c<7;c++)_+="<th scope='col'"+(5<=(c+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+N[Y=(c+n)%7]+"'>"+W[Y]+"</span></th>";for(m+=_+"</tr></thead><tbody>",b=this._getDaysInMonth(E,A),E===t.selectedYear&&A===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,b)),v=(this._getFirstDayOfMonth(E,A)-n+7)%7,b=Math.ceil((v+b)/7),B=q&&this.maxRows>b?this.maxRows:b,this.maxRows=B,y=this._daylightSavingAdjust(new Date(E,A,1-v)),j=0;j<B;j++){for(m+="<tr>",K=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(y)+"</td>":"",c=0;c<7;c++)w=a?a.apply(t.input?t.input[0]:null,[y]):[!0,""],x=(k=y.getMonth()!==A)&&!R||!w[0]||H&&y<H||O&&O<y,K+="<td class='"+(5<=(c+n+6)%7?" ui-datepicker-week-end":"")+(k?" ui-datepicker-other-month":"")+(y.getTime()===f.getTime()&&A===t.selectedMonth&&t._keyEvent||h.getTime()===y.getTime()&&h.getTime()===f.getTime()?" "+this._dayOverClass:"")+(x?" "+this._unselectableClass+" ui-state-disabled":"")+(k&&!r?"":" "+w[1]+(y.getTime()===z.getTime()?" "+this._currentClass:"")+(y.getTime()===U.getTime()?" ui-datepicker-today":""))+"'"+(k&&!r||!w[2]?"":" title='"+w[2].replace(/'/g,"&#39;")+"'")+(x?"":" data-handler='selectDay' data-event='click' data-month='"+y.getMonth()+"' data-year='"+y.getFullYear()+"'")+">"+(k&&!r?"&#xa0;":x?"<span class='ui-state-default'>"+y.getDate()+"</span>":"<a class='ui-state-default"+(y.getTime()===U.getTime()?" ui-state-highlight":"")+(y.getTime()===z.getTime()?" ui-state-active":"")+(k?" ui-priority-secondary":"")+"' href='#' aria-current='"+(y.getTime()===z.getTime()?"true":"false")+"' data-date='"+y.getDate()+"'>"+y.getDate()+"</a>")+"</td>",y.setDate(y.getDate()+1),y=this._daylightSavingAdjust(y);m+=K+"</tr>"}11<++A&&(A=0,E++),d+=m+="</tbody></table>"+(q?"</div>"+(0<T[0]&&p===T[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}l+=d}return l+=P,t._keyEvent=!1,l},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!h||c>=s.getMonth())&&(!l||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),i=i&&e<i?i:e;return t&&t<i?t:i},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),i=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&i.setDate(this._getDaysInMonth(i.getFullYear(),i.getMonth())),this._isInRange(t,i)},_isInRange:function(t,e){var i,s=this._getMinMaxDate(t,"min"),n=this._getMinMaxDate(t,"max"),o=null,a=null,t=this._get(t,"yearRange");return t&&(t=t.split(":"),i=(new Date).getFullYear(),o=parseInt(t[0],10),a=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(o+=i),t[1].match(/[+\-].*/))&&(a+=i),(!s||e.getTime()>=s.getTime())&&(!n||e.getTime()<=n.getTime())&&(!o||e.getFullYear()>=o)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);s=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),s,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new v,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.14.0";V.widget("ui.dialog",{version:"1.14.0",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V(this.document[0].activeElement).trigger("blur"),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=this.document[0].activeElement;this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus()},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog","aria-modal":this.options.modal?"true":null}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){var e,i,s;this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE?(t.preventDefault(),this.close(t)):t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i)&&e&&this._makeDraggable(),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")),"modal"===t)&&s.attr("aria-modal",e?"true":null)},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i;this.options.modal&&(i=!0,this._delay(function(){i=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;i||(e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable())}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!0===V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),V.ui.dialog,V.widget("ui.progressbar",{version:"1.14.0",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.14.0",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),e.hidden?i.prop("hidden",!0):this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&((t=window.getSelection()).removeAllRanges(),t.addRange(this.range))},_documentClick:{mousedown:function(t){!this.isOpen||V(t.target).closest(".ui-selectmenu-menu, #"+CSS.escape(this.ids.button)).length||this.close(t)}},_buttonEvents:{mousedown:function(){var t=window.getSelection();t.rangeCount&&(this.range=t.getRangeAt(0))},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1===t?this.button.css("width",""):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:i.prop("hidden")||t.prop("hidden"),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.14.0",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,h=this.options;return!h.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===h.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o))&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0)},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),t=this._valueMin()+t*e,this._trimAlignValue(t)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){if(!arguments.length)return this._value();this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0)},values:function(t,e){var i,s,n;if(1<arguments.length)this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),this._change(null,t);else{if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()}},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){var e,i;return t<=this._valueMin()?this._valueMin():t>=this._valueMax()?this._valueMax():(e=0<this.options.step?this.options.step:1,i=t-(t=(t-this._valueMin())%e),2*Math.abs(t)>=e&&(i+=0<t?e:-e),parseFloat(i.toFixed(5)))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,h=!this._animateOff&&a.animate,l={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,l["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[h?"animate":"css"](l,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,l["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](l,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1!==this._start(t,n)))break;return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}});function P(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.14.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t)},mousewheel:function(t,e){var i=this.document[0].activeElement;if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;e=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),function(){this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=e)}.call(this),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i))):("max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e))},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:P(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:P(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:P(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:P(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:P(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());P(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!0===V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var T;V.ui.spinner,V.widget("ui.tabs",{version:"1.14.0",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(T=/#.*$/,function(t){var e=t.href.replace(T,""),i=location.href.replace(T,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(this.document[0].activeElement).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"===t?this._activate(e):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e))},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var h=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");h._isLocal(e)?(n=(i=e.hash).substring(1),s=h.element.find(h._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=h.element.find(i="#"+n)).length||(s=h._createPanel(n)).insertAfter(h.panels[t-1]||h.tablist),s.attr("aria-live","polite")),s.length&&(h.panels=h.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+CSS.escape(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){a.html(t),o._trigger("load",s,r),n(i,e)}).fail(function(t,e){n(t,e)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!0===V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),V.ui.tabs,V.widget("ui.tooltip",{version:"1.14.0",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){e.data("ui-tooltip-open")&&(i&&(i.type=n),s._open(i,e,t))}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,s.is(":hidden")||s.position(a)}i&&((o=this._find(e))?o.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),o=this._tooltip(e),s=o.tooltip,this._addDescribedBy(e,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=V("<div>").html(s.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(V.extend({of:e},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(a.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:s})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding)||(n.closing=!1)):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!0===V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),V.ui.tooltip});

/*!
 * History API JavaScript Library v4.0.9
 *
 * Support: IE8+, FF3+, Opera 9+, Safari, Chrome and other
 *
 * Copyright 2011-2013, Dmitrii Pakhtinov ( spb.piksel@gmail.com )
 *
 * http://spb-piksel.ru/
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Update: 2013-11-20 13:03
 */
(function(e){var i=!0,j=null,n=!1;function D(){}function k(a,b,c){if(a!=j&&""!==a&&!b)var b=k(),c=b.d,d=b.h,a=""+a,a=/^(?:[\w0-9]+\:)?\/\//.test(a)?0===a.indexOf("/")?d+a:a:d+"//"+b.g+(0===a.indexOf("/")?a:0===a.indexOf("?")?c+a:0===a.indexOf("#")?c+b.e+a:c.replace(/[^\/]+$/g,"")+a);else if(a=b?a:f.href,!p||c)a=a.replace(/^[^#]*/,"")||"#",a=f.protocol+"//"+f.host+l.basepath+a.replace(RegExp("^#[/]?(?:"+l.type+")?"),"");I.href=a;var a=/(?:([\w0-9]+:))?(?:\/\/(?:[^@]*@)?([^\/:\?#]+)(?::([0-9]+))?)?([^\?#]*)(?:(\?[^#]+)|\?)?(?:(#.*))?/.exec(I.href),b=
a[2]+(a[3]?":"+a[3]:""),c=a[4]||"/",d=a[5]||"",e="#"===a[6]?"":a[6]||"",g=c+d+e,h=c.replace(RegExp("^"+l.basepath,"i"),l.type)+d;return{b:a[1]+"//"+b+g,h:a[1],g:b,i:a[2],k:a[3]||"",d:c,e:d,a:e,c:g,j:h,f:h+e}}function W(){var a;try{a=e.sessionStorage,a.setItem(x+"t","1"),a.removeItem(x+"t")}catch(b){a={getItem:function(a){a=g.cookie.split(a+"=");return 1<a.length&&a.pop().split(";").shift()||"null"},setItem:function(a){var b={};if(b[f.href]=h.state)g.cookie=a+"="+y.stringify(b)}}}try{m=y.parse(a.getItem(x))||
{}}catch(c){m={}}o(r+"unload",function(){a.setItem(x,y.stringify(m))},n)}function z(a,b,c,d){var c=c||{set:D},f=!c.set,g=!c.get,h={configurable:i,set:function(){f=1},get:function(){g=1}};try{u(a,b,h),a[b]=a[b],u(a,b,c)}catch(k){}if(!f||!g)if(a.__defineGetter__&&(a.__defineGetter__(b,h.get),a.__defineSetter__(b,h.set),a[b]=a[b],c.get&&a.__defineGetter__(b,c.get),c.set&&a.__defineSetter__(b,c.set)),(!f||!g)&&a===e){try{var l=a[b];a[b]=j}catch(p){}if("execScript"in e)e.execScript("Public "+b,"VBScript");
else try{u(a,b,{value:D})}catch(q){}a[b]=l}else if(!f||!g)try{try{var m=E.create(a);u(E.getPrototypeOf(m)===a?m:a,b,c);for(var o in a)"function"===typeof a[o]&&(m[o]=a[o].bind(a));try{d.call(m,m,a)}catch(r){}a=m}catch(s){u(a.constructor.prototype,b,c)}}catch(t){return n}return a}function X(a,b,c){c=c||{};a=a===J?f:a;c.set=c.set||function(c){a[b]=c};c.get=c.get||function(){return a[b]};return c}function A(a,b){var c=(""+("string"===typeof a?a:a.type)).replace(/^on/,""),d=s[c];if(d){b="string"===typeof a?
b:a;if(b.target==j)for(var f=["target","currentTarget","srcElement","type"];a=f.pop();)b=z(b,a,{get:"type"===a?function(){return c}:function(){return e}});(("popstate"===c?e.onpopstate:e.onhashchange)||D).call(e,b);for(var f=0,g=d.length;f<g;f++)d[f].call(e,b);return i}return Y(a,b)}function K(){var a=g.createEvent?g.createEvent("Event"):g.createEventObject();a.initEvent?a.initEvent("popstate",n,n):a.type="popstate";a.state=h.state;A(a)}function v(a,b,c,d){p||(b=k(b),b.c!==k().c&&(w=d,c?f.replace("#"+
b.f):f.hash=b.f));!B&&a&&(m[f.href]=a);C=n}function L(a){if(w){M!==f.href&&K();var a=a||e.event,b=k(w,i),c=k();a.oldURL||(a.oldURL=b.b,a.newURL=c.b);b.a!==c.a&&A(a)}w=f.href}function N(a){setTimeout(function(){o("popstate",function(a){M=f.href;B||(a=z(a,"state",{get:function(){return h.state}}));A(a)},n)},0);!p&&a!==i&&h.location&&(O(h.location.hash),C&&(C=n,K()))}function Z(a){var a=a||e.event,b;a:{for(b=a.target||a.srcElement;b;){if("A"===b.nodeName)break a;b=b.parentNode}b=void 0}var c="defaultPrevented"in
a?a.defaultPrevented:a.returnValue===n;b&&"A"===b.nodeName&&!c&&(c=k(),b=k(b.getAttribute("href",2)),c.b.split("#").shift()===b.b.split("#").shift()&&b.a&&(c.a!==b.a&&(h.location.hash=b.a),O(b.a),a.preventDefault?a.preventDefault():a.returnValue=n))}function O(a){var b=g.getElementById(a=(a||"").replace(/^#/,""));b&&b.id===a&&"A"===b.nodeName&&(a=b.getBoundingClientRect(),e.scrollTo(F.scrollLeft||0,a.top+(F.scrollTop||0)-(F.clientTop||0)))}if(e.history){var g=e.document,F=g.documentElement,E=e.Object,
y=e.JSON,f=e.location,q=e.history,h=q,G=q.pushState,P=q.replaceState,p=!!G,B="state"in q,u=E.defineProperty,Q=z({},"t")?{}:g.createElement("a"),r="",H=e.addEventListener?"addEventListener":(r="on")&&"attachEvent",R=e.removeEventListener?"removeEventListener":"detachEvent",S=e.dispatchEvent?"dispatchEvent":"fireEvent",o=e[H],T=e[R],Y=e[S],l={basepath:"/",redirect:0,type:"/"},x="__historyAPI__",I=g.createElement("a"),w=f.href,M="",C=n,m={},s={},t=g.title,$={onhashchange:j,onpopstate:j},U=function(a,
b){var c=e.history!==q;c&&(e.history=q);a.apply(q,b);c&&(e.history=h)},V={redirect:function(a,b){l.basepath=b=b==j?l.basepath:b;l.type=a=a==j?l.type:a;if(e.top==e.self){var c=k(j,n,i).c,d=f.pathname+f.search;p?(d=d.replace(/([^\/])$/,"$1/"),c!=b&&RegExp("^"+b+"$","i").test(d)&&f.replace(c)):d!=b&&(d=d.replace(/([^\/])\?/,"$1/?"),RegExp("^"+b,"i").test(d)&&f.replace(b+"#"+d.replace(RegExp("^"+b,"i"),a)+f.hash))}},pushState:function(a,b,c){var d=g.title;t!=j&&(g.title=t);G&&U(G,arguments);v(a,c);g.title=
d;t=b},replaceState:function(a,b,c){var d=g.title;t!=j&&(g.title=t);delete m[f.href];P&&U(P,arguments);v(a,c,i);g.title=d;t=b},location:{set:function(a){e.location=a},get:function(){return p?f:Q}},state:{get:function(){return m[f.href]||j}}},J={assign:function(a){0===(""+a).indexOf("#")?v(j,a):f.assign(a)},reload:function(){f.reload()},replace:function(a){0===(""+a).indexOf("#")?v(j,a,i):f.replace(a)},toString:function(){return this.href},href:{get:function(){return k().b}},protocol:j,host:j,hostname:j,
port:j,pathname:{get:function(){return k().d}},search:{get:function(){return k().e}},hash:{set:function(a){v(j,(""+a).replace(/^(#|)/,"#"),n,w)},get:function(){return k().a}}};(function(){var a=g.getElementsByTagName("script"),a=(a[a.length-1]||{}).src||"";(-1!==a.indexOf("?")?a.split("?").pop():"").replace(/(\w+)(?:=([^&]*))?/g,function(a,b,c){l[b]=(c||("basepath"===b?"/":"")).replace(/^(0|false)$/,"")});o(r+"hashchange",L,n);var b=[J,Q,$,e,V,h];B&&delete V.state;for(var c=0;c<b.length;c+=2)for(var d in b[c])if(b[c].hasOwnProperty(d))if("function"===
typeof b[c][d])b[c+1][d]=b[c][d];else{a=X(b[c],d,b[c][d]);if(!z(b[c+1],d,a,function(a,d){if(d===h)e.history=h=b[c+1]=a}))return T(r+"hashchange",L,n),n;b[c+1]===e&&(s[d]=s[d.substr(2)]=[])}l.redirect&&h.redirect();!B&&y&&W();if(!p)g[H](r+"click",Z,n);"complete"===g.readyState?N(i):(!p&&k().c!==l.basepath&&(C=i),o(r+"load",N,n));return i})()&&(h.emulate=!p,e[H]=function(a,b,c){a in s?s[a].push(b):3<arguments.length?o(a,b,c,arguments[3]):o(a,b,c)},e[R]=function(a,b,c){var d=s[a];if(d)for(a=d.length;--a;){if(d[a]===
b){d.splice(a,1);break}}else T(a,b,c)},e[S]=A)}})(window);

//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxCore.js
Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function.validateParameters=function(c,b,a){return Function._validateParams(c,b,a)};Function._validateParams=function(g,e,c){var a,d=e.length;c=c||typeof c==="undefined";a=Function._validateParameterCount(g,e,c);if(a){a.popStackFrame();return a}for(var b=0,i=g.length;b<i;b++){var f=e[Math.min(b,d-1)],h=f.name;if(f.parameterArray)h+="["+(b-d+1)+"]";else if(!c&&b>=d)break;a=Function._validateParameter(g[b],f,h);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(j,d,i){var a,c,b=d.length,e=j.length;if(e<b){var f=b;for(a=0;a<b;a++){var g=d[a];if(g.optional||g.parameterArray)f--}if(e<f)c=true}else if(i&&e>b){c=true;for(a=0;a<b;a++)if(d[a].parameterArray){c=false;break}}if(c){var h=Error.parameterCount();h.popStackFrame();return h}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(b,c,k,j,h,d){var a,g;if(typeof b==="undefined")if(h)return null;else{a=Error.argumentUndefined(d);a.popStackFrame();return a}if(b===null)if(h)return null;else{a=Error.argumentNull(d);a.popStackFrame();return a}if(c&&c.__enum){if(typeof b!=="number"){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(b%1===0){var e=c.prototype;if(!c.__flags||b===0){for(g in e)if(e[g]===b)return null}else{var i=b;for(g in e){var f=e[g];if(f===0)continue;if((f&b)===f)i-=f;if(i===0)return null}}}a=Error.argumentOutOfRange(d,b,String.format(Sys.Res.enumInvalidValue,b,c.getName()));a.popStackFrame();return a}if(j&&(!Sys._isDomElement(b)||b.nodeType===3)){a=Error.argument(d,Sys.Res.argumentDomElement);a.popStackFrame();return a}if(c&&!Sys._isInstanceOfType(c,b)){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(c===Number&&k)if(b%1!==0){a=Error.argumentOutOfRange(d,b,Sys.Res.argumentInteger);a.popStackFrame();return a}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g),10)+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Number.__typeName="Number";Number.__class=true;RegExp.__typeName="RegExp";RegExp.__class=true;if(!window)this.window=this;window.Type=Function;Type.prototype.callBaseMethod=function(a,d,b){var c=Sys._getBaseMethod(this,a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(a,b){return Sys._getBaseMethod(this,a,b)};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(a){return Sys._isInstanceOfType(this,a)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}Sys.__upperCaseTypes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2,f=arguments.length;a<f;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){Sys.__upperCaseTypes[a.toUpperCase()]=this;this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(Sys.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){fn=Sys.__upperCaseTypes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(e){var d=window,c=e.split(".");for(var b=0;b<c.length;b++){var f=c[b],a=d[f];if(!a)a=d[f]={};if(!a.__namespace){if(b===0&&e!=="Sys")Sys.__rootNamespaces[Sys.__rootNamespaces.length]=a;a.__namespace=true;a.__typeName=c.slice(0,b+1).join(".");a.getName=function(){return this.__typeName}}d=a}};Type._checkDependency=function(c,a){var d=Type._registerScript._scripts,b=d?!!d[c]:false;if(typeof a!=="undefined"&&!b)throw Error.invalidOperation(String.format(Sys.Res.requiredScriptReferenceNotIncluded,a,c));return b};Type._registerScript=function(a,c){var b=Type._registerScript._scripts;if(!b)Type._registerScript._scripts=b={};if(b[a])throw Error.invalidOperation(String.format(Sys.Res.scriptAlreadyLoaded,a));b[a]=true;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Type._checkDependency(e))throw Error.invalidOperation(String.format(Sys.Res.scriptDependencyNotFound,a,e))}};Type.registerNamespace("Sys");Sys.__upperCaseTypes={};Sys.__rootNamespaces=[Sys];Sys._isInstanceOfType=function(c,b){if(typeof b==="undefined"||b===null)return false;if(b instanceof c)return true;var a=Object.getType(b);return !!(a===c)||a.inheritsFrom&&a.inheritsFrom(c)||a.implementsInterface&&a.implementsInterface(c)};Sys._getBaseMethod=function(d,e,c){var b=d.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Sys._isDomElement=function(a){var c=false;if(typeof a.nodeType!=="number"){var b=a.ownerDocument||a.document||a;if(b!=a){var d=b.defaultView||b.parentWindow;c=d!=a}else c=typeof b.body==="undefined"}return !c};Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Sys._indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(a,c,b){return Sys._indexOf(a,c,b)};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Sys._indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};Sys._indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Type._registerScript("MicrosoftAjaxCore.js");Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);Sys.Browser.documentMode=0;if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={_addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},addHandler:function(b,a){this._addHandler(b,a)},_removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},removeHandler:function(b,a){this._removeHandler(b,a)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)}},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.CollectionChange=function(e,a,c,b,d){this.action=e;if(a)if(!(a instanceof Array))a=[a];this.newItems=a||null;if(typeof c!=="number")c=-1;this.newStartingIndex=c;if(b)if(!(b instanceof Array))b=[b];this.oldItems=b||null;if(typeof d!=="number")d=-1;this.oldStartingIndex=d};Sys.CollectionChange.registerClass("Sys.CollectionChange");Sys.NotifyCollectionChangedAction=function(){throw Error.notImplemented()};Sys.NotifyCollectionChangedAction.prototype={add:0,remove:1,reset:2};Sys.NotifyCollectionChangedAction.registerEnum("Sys.NotifyCollectionChangedAction");Sys.NotifyCollectionChangedEventArgs=function(a){this._changes=a;Sys.NotifyCollectionChangedEventArgs.initializeBase(this)};Sys.NotifyCollectionChangedEventArgs.prototype={get_changes:function(){return this._changes||[]}};Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.Observer=function(){};Sys.Observer.registerClass("Sys.Observer");Sys.Observer.makeObservable=function(a){var c=a instanceof Array,b=Sys.Observer;if(a.setValue===b._observeMethods.setValue)return a;b._addMethods(a,b._observeMethods);if(c)b._addMethods(a,b._arrayMethods);return a};Sys.Observer._addMethods=function(c,b){for(var a in b)c[a]=b[a]};Sys.Observer._addEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._addHandler(a,b)};Sys.Observer.addEventHandler=function(c,a,b){Sys.Observer._addEventHandler(c,a,b)};Sys.Observer._removeEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._removeHandler(a,b)};Sys.Observer.removeEventHandler=function(c,a,b){Sys.Observer._removeEventHandler(c,a,b)};Sys.Observer.raiseEvent=function(b,e,d){var c=Sys.Observer._getContext(b);if(!c)return;var a=c.events.getHandler(e);if(a)a(b,d)};Sys.Observer.addPropertyChanged=function(b,a){Sys.Observer._addEventHandler(b,"propertyChanged",a)};Sys.Observer.removePropertyChanged=function(b,a){Sys.Observer._removeEventHandler(b,"propertyChanged",a)};Sys.Observer.beginUpdate=function(a){Sys.Observer._getContext(a,true).updating=true};Sys.Observer.endUpdate=function(b){var a=Sys.Observer._getContext(b);if(!a||!a.updating)return;a.updating=false;var d=a.dirty;a.dirty=false;if(d){if(b instanceof Array){var c=a.changes;a.changes=null;Sys.Observer.raiseCollectionChanged(b,c)}Sys.Observer.raisePropertyChanged(b,"")}};Sys.Observer.isUpdating=function(b){var a=Sys.Observer._getContext(b);return a?a.updating:false};Sys.Observer._setValue=function(a,j,g){var b,f,k=a,d=j.split(".");for(var i=0,m=d.length-1;i<m;i++){var l=d[i];b=a["get_"+l];if(typeof b==="function")a=b.call(a);else a=a[l];var n=typeof a;if(a===null||n==="undefined")throw Error.invalidOperation(String.format(Sys.Res.nullReferenceInPath,j))}var e,c=d[m];b=a["get_"+c];f=a["set_"+c];if(typeof b==="function")e=b.call(a);else e=a[c];if(typeof f==="function")f.call(a,g);else a[c]=g;if(e!==g){var h=Sys.Observer._getContext(k);if(h&&h.updating){h.dirty=true;return}Sys.Observer.raisePropertyChanged(k,d[0])}};Sys.Observer.setValue=function(b,a,c){Sys.Observer._setValue(b,a,c)};Sys.Observer.raisePropertyChanged=function(b,a){Sys.Observer.raiseEvent(b,"propertyChanged",new Sys.PropertyChangedEventArgs(a))};Sys.Observer.addCollectionChanged=function(b,a){Sys.Observer._addEventHandler(b,"collectionChanged",a)};Sys.Observer.removeCollectionChanged=function(b,a){Sys.Observer._removeEventHandler(b,"collectionChanged",a)};Sys.Observer._collectionChange=function(d,c){var a=Sys.Observer._getContext(d);if(a&&a.updating){a.dirty=true;var b=a.changes;if(!b)a.changes=b=[c];else b.push(c)}else{Sys.Observer.raiseCollectionChanged(d,[c]);Sys.Observer.raisePropertyChanged(d,"length")}};Sys.Observer.add=function(a,b){var c=new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add,[b],a.length);Array.add(a,b);Sys.Observer._collectionChange(a,c)};Sys.Observer.addRange=function(a,b){var c=new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add,b,a.length);Array.addRange(a,b);Sys.Observer._collectionChange(a,c)};Sys.Observer.clear=function(a){var b=Array.clone(a);Array.clear(a);Sys.Observer._collectionChange(a,new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.reset,null,-1,b,0))};Sys.Observer.insert=function(a,b,c){Array.insert(a,b,c);Sys.Observer._collectionChange(a,new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add,[c],b))};Sys.Observer.remove=function(a,b){var c=Array.indexOf(a,b);if(c!==-1){Array.remove(a,b);Sys.Observer._collectionChange(a,new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove,null,-1,[b],c));return true}return false};Sys.Observer.removeAt=function(b,a){if(a>-1&&a<b.length){var c=b[a];Array.removeAt(b,a);Sys.Observer._collectionChange(b,new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove,null,-1,[c],a))}};Sys.Observer.raiseCollectionChanged=function(b,a){Sys.Observer.raiseEvent(b,"collectionChanged",new Sys.NotifyCollectionChangedEventArgs(a))};Sys.Observer._observeMethods={add_propertyChanged:function(a){Sys.Observer._addEventHandler(this,"propertyChanged",a)},remove_propertyChanged:function(a){Sys.Observer._removeEventHandler(this,"propertyChanged",a)},addEventHandler:function(a,b){Sys.Observer._addEventHandler(this,a,b)},removeEventHandler:function(a,b){Sys.Observer._removeEventHandler(this,a,b)},get_isUpdating:function(){return Sys.Observer.isUpdating(this)},beginUpdate:function(){Sys.Observer.beginUpdate(this)},endUpdate:function(){Sys.Observer.endUpdate(this)},setValue:function(b,a){Sys.Observer._setValue(this,b,a)},raiseEvent:function(b,a){Sys.Observer.raiseEvent(this,b,a)},raisePropertyChanged:function(a){Sys.Observer.raiseEvent(this,"propertyChanged",new Sys.PropertyChangedEventArgs(a))}};Sys.Observer._arrayMethods={add_collectionChanged:function(a){Sys.Observer._addEventHandler(this,"collectionChanged",a)},remove_collectionChanged:function(a){Sys.Observer._removeEventHandler(this,"collectionChanged",a)},add:function(a){Sys.Observer.add(this,a)},addRange:function(a){Sys.Observer.addRange(this,a)},clear:function(){Sys.Observer.clear(this)},insert:function(a,b){Sys.Observer.insert(this,a,b)},remove:function(a){return Sys.Observer.remove(this,a)},removeAt:function(a){Sys.Observer.removeAt(this,a)},raiseCollectionChanged:function(a){Sys.Observer.raiseEvent(this,"collectionChanged",new Sys.NotifyCollectionChangedEventArgs(a))}};Sys.Observer._getContext=function(b,c){var a=b._observerContext;if(a)return a();if(c)return (b._observerContext=Sys.Observer._createContext())();return null};Sys.Observer._createContext=function(){var a={events:new Sys.EventHandlerList};return function(){return a}};
Type.registerNamespace('Sys');Sys.Res={'argumentInteger':'Value must be an integer.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','scriptAlreadyLoaded':'The script \'{0}\' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.','scriptDependencyNotFound':'The script \'{0}\' failed to load because it is dependent on script \'{1}\'.','formatBadFormatSpecifier':'Format specifier was invalid.','requiredScriptReferenceNotIncluded':'\'{0}\' requires that you have included a script reference to \'{1}\'.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','nullReferenceInPath':'Null reference while evaluating data path: \'{0}\'.','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'};

//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxComponentModel.js
Type._registerScript("MicrosoftAjaxComponentModel.js",["MicrosoftAjaxCore.js"]);Type.registerNamespace("Sys.UI");Sys.CommandEventArgs=function(c,a,b){Sys.CommandEventArgs.initializeBase(this);this._commandName=c;this._commandArgument=a;this._commandSource=b};Sys.CommandEventArgs.prototype={_commandName:null,_commandArgument:null,_commandSource:null,get_commandName:function(){return this._commandName},get_commandArgument:function(){return this._commandArgument},get_commandSource:function(){return this._commandSource}};Sys.CommandEventArgs.registerClass("Sys.CommandEventArgs",Sys.CancelEventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);if(a.get_id())b.addComponent(a);if(i){b._createdComponents[b._createdComponents.length]=a;if(c)b._addComponentToSecondPass(a,c);else a.endUpdate()}else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomEvent=function(e){var a=e,b=this.type=a.type.toLowerCase();this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(b==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(!b.startsWith("key"))if(typeof a.offsetX!=="undefined"&&typeof a.offsetY!=="undefined"){this.offsetX=a.offsetX;this.offsetY=a.offsetY}else if(this.target&&this.target.nodeType!==3&&typeof a.clientX==="number"){var c=Sys.UI.DomElement.getLocation(this.target),d=Sys.UI.DomElement._getWindow(this.target);this.offsetX=(d.pageXOffset||0)+a.clientX-c.x;this.offsetY=(d.pageYOffset||0)+a.clientY-c.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)this.rawEvent.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)this.rawEvent.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e,g){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){var b={};try{b=Sys.UI.DomElement._getWindow(a).event}catch(c){}return e.call(a,new Sys.UI.DomEvent(b))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b,autoRemove:g};if(g){var f=a.dispose;if(f!==Sys.UI.DomEvent._disposeHandlers){a.dispose=Sys.UI.DomEvent._disposeHandlers;if(typeof f!=="undefined")a._chainDispose=f}}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(f,d,c,e){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(f,b,a,e||false)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){Sys.UI.DomEvent._clearHandlers(a,false)};Sys.UI.DomEvent._clearHandlers=function(a,g){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--){var f=d[c];if(!g||f.autoRemove)$removeHandler(a,b,f.handler)}}a._events=null}};Sys.UI.DomEvent._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,true);var b=this._chainDispose,a=typeof b;if(a!=="undefined"){this.dispose=b;this._chainDispose=null;if(a==="function")this.dispose()}};var $removeHandler=Sys.UI.DomEvent.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};Sys.UI.DomEvent._removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};if(document.documentElement.getBoundingClientRect)Sys.UI.DomElement.getLocation=function(b){if(b.self||b.nodeType===9||b===document.documentElement||b.parentNode===b.ownerDocument.documentElement)return new Sys.UI.Point(0,0);var f=b.getBoundingClientRect();if(!f)return new Sys.UI.Point(0,0);var k,e=b.ownerDocument.documentElement,c=Math.round(f.left)+e.scrollLeft,d=Math.round(f.top)+e.scrollTop;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){try{var g=b.ownerDocument.parentWindow.frameElement||null;if(g){var h=g.frameBorder==="0"||g.frameBorder==="no"?2:0;c+=h;d+=h}}catch(l){}if(Sys.Browser.version===7&&!document.documentMode){var i=document.body,j=i.getBoundingClientRect(),a=(j.right-j.left)/i.clientWidth;a=Math.round(a*100);a=(a-a%5)/100;if(!isNaN(a)&&a!==1){c=Math.round(c/a);d=Math.round(d/a)}}if((document.documentMode||0)<8){c-=e.clientLeft;d-=e.clientTop}}return new Sys.UI.Point(c,d)};else if(Sys.Browser.agent===Sys.Browser.Safari)Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,a,j=null,g=null,b;for(a=c;a;j=a,(g=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var f=a.tagName?a.tagName.toUpperCase():null;if((a.offsetLeft||a.offsetTop)&&(f!=="BODY"||(!g||g.position!=="absolute"))){d+=a.offsetLeft;e+=a.offsetTop}if(j&&Sys.Browser.version>=3){d+=parseInt(b.borderLeftWidth);e+=parseInt(b.borderTopWidth)}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(a=c.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)){d-=a.scrollLeft||0;e-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(d,e)};else Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,a,i=null,g=null,b=null;for(a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)};Sys.UI.DomElement.isDomElement=function(a){return Sys._isDomElement(a)};Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.resolveElement=function(b,c){var a=b;if(!a)return null;if(typeof a==="string")a=Sys.UI.DomElement.getElementById(a,c);return a};Sys.UI.DomElement.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){Sys.UI.DomElement._raiseBubbleEventFromControl(a,c,d);return}b=b.parentNode}};Sys.UI.DomElement._raiseBubbleEventFromControl=function(a,b,c){if(!a.onBubbleEvent(b,c))a._raiseBubbleEvent(b,c)};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);this._domReady()};Sys._Application.prototype={_creatingComponents:false,_disposing:false,_deleteCount:0,get_isCreatingComponents:function(){return this._creatingComponents},get_isDisposing:function(){return this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,f=b.length;a<f;a++){var d=b[a];if(typeof d!=="undefined")d.dispose()}Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(Sys._ScriptLoader){var e=Sys._ScriptLoader.getInstance();if(e)e.dispose()}Sys._Application.callBaseMethod(this,"dispose")}},disposeElement:function(c,j){if(c.nodeType===1){var b,h=c.getElementsByTagName("*"),g=h.length,i=new Array(g);for(b=0;b<g;b++)i[b]=h[b];for(b=g-1;b>=0;b--){var d=i[b],f=d.dispose;if(f&&typeof f==="function")d.dispose();else{var e=d.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=d._behaviors;if(a)this._disposeComponents(a);a=d._components;if(a){this._disposeComponents(a);d._components=null}}if(!j){var f=c.dispose;if(f&&typeof f==="function")c.dispose();else{var e=c.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=c._behaviors;if(a)this._disposeComponents(a);a=c._components;if(a){this._disposeComponents(a);c._components=null}}}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this.get_isInitialized()&&!this._disposing){Sys._Application.callBaseMethod(this,"initialize");this._raiseInit();if(this.get_stateString){if(Sys.WebForms&&Sys.WebForms.PageRequestManager){this._beginRequestHandler=Function.createDelegate(this,this._onPageRequestManagerBeginRequest);Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this._beginRequestHandler);this._endRequestHandler=Function.createDelegate(this,this._onPageRequestManagerEndRequest);Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler)}var a=this.get_stateString();if(a!==this._currentEntry)this._navigate(a);else this._ensureHistory()}this.raiseLoad()}},notifyScriptLoaded:function(){},registerDisposableObject:function(b){if(!this._disposing){var a=this._disposableObjects,c=a.length;a[c]=b;b.__msdisposeindex=c}},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!!this._loaded);this._loaded=true;if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing){var e=a.__msdisposeindex;if(typeof e==="number"){var b=this._disposableObjects;delete b[e];delete a.__msdisposeindex;if(++this._deleteCount>1000){var c=[];for(var d=0,f=b.length;d<f;d++){a=b[d];if(typeof a!=="undefined"){a.__msdisposeindex=c.length;c.push(a)}}this._disposableObjects=c;this._deleteCount=0}}}},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_disposeComponents:function(a){if(a)for(var b=a.length-1;b>=0;b--){var c=a[b];if(typeof c.dispose==="function")c.dispose()}},_domReady:function(){var a,g,f=this;function b(){f.initialize()}var c=function(){Sys.UI.DomEvent.removeHandler(window,"load",c);b()};Sys.UI.DomEvent.addHandler(window,"load",c);if(document.addEventListener)try{document.addEventListener("DOMContentLoaded",a=function(){document.removeEventListener("DOMContentLoaded",a,false);b()},false)}catch(h){}else if(document.attachEvent)if(window==window.top&&document.documentElement.doScroll){var e,d=document.createElement("div");a=function(){try{d.doScroll("left")}catch(c){e=window.setTimeout(a,0);return}d=null;b()};a()}else document.attachEvent("onreadystatechange",a=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",a);b()}})},_raiseInit:function(){var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!==-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");var a=this._element;if(a){var c=this.get_name();if(c)a[c]=null;var b=a._behaviors;Array.remove(b,this);if(b.length===0)a._behaviors=null;delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this;var b=this.get_role();if(b)a.setAttribute("role",b)};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;if(!this._element)return null;var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null},set_parent:function(a){this._parent=a},get_role:function(){return null},get_visibilityMode:function(){return Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=null;delete this._element}if(this._parent)delete this._parent},onBubbleEvent:function(){return false},raiseBubbleEvent:function(a,b){this._raiseBubbleEvent(a,b)},_raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component);

//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxGlobalization.js
Type._registerScript("MicrosoftAjaxGlobalization.js",["MicrosoftAjaxCore.js"]);Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false}}return d};Date._expandFormat=function(a,b){if(!b)b="F";var c=b.length;if(c===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "f":return a.LongDatePattern+" "+a.ShortTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}else if(c===2&&b.charAt(0)==="%")b=b.charAt(1);return b};Date._expandYear=function(c,a){var d=new Date,e=Date._getEra(d);if(a<100){var b=Date._getEraYear(d,c,e);a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)a-=100}return a};Date._getEra=function(e,c){if(!c)return 0;var b,d=e.getTime();for(var a=0,f=c.length;a<f;a+=4){b=c[a+2];if(b===null||d>=b)return a}return 0};Date._getEraYear=function(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":case "gg":case "g":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break;case "/":a.append("(\\"+b.DateSeparator+")")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(h,d,i){var a,c,b,f,e,g=false;for(a=1,c=i.length;a<c;a++){f=i[a];if(f){g=true;b=Date._parseExact(h,f,d);if(b)return b}}if(!g){e=d._getDateTimeFormats();for(a=0,c=e.length;a<c;a++){b=Date._parseExact(h,e[a],d);if(b)return b}}return null};Date._parseExact=function(w,D,k){w=w.trim();var g=k.dateTimeFormat,A=Date._getParseRegExp(g,D),C=(new RegExp(A.regExp)).exec(w);if(C===null)return null;var B=A.groups,x=null,e=null,c=null,j=null,i=null,d=0,h,p=0,q=0,f=0,l=null,v=false;for(var s=0,E=B.length;s<E;s++){var a=C[s+1];if(a)switch(B[s]){case "dd":case "d":j=parseInt(a,10);if(j<1||j>31)return null;break;case "MMMM":c=k._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=k._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":e=Date._expandYear(g,parseInt(a,10));if(e<0||e>9999)return null;break;case "yyyy":e=parseInt(a,10);if(e<0||e>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":p=parseInt(a,10);if(p<0||p>59)return null;break;case "s":case "ss":q=parseInt(a,10);if(q<0||q>59)return null;break;case "tt":case "t":var z=a.toUpperCase();v=z===g.PMDesignator.toUpperCase();if(!v&&z!==g.AMDesignator.toUpperCase())return null;break;case "f":f=parseInt(a,10)*100;if(f<0||f>999)return null;break;case "ff":f=parseInt(a,10)*10;if(f<0||f>999)return null;break;case "fff":f=parseInt(a,10);if(f<0||f>999)return null;break;case "dddd":i=k._getDayIndex(a);if(i<0||i>6)return null;break;case "ddd":i=k._getAbbrDayIndex(a);if(i<0||i>6)return null;break;case "zzz":var u=a.split(/:/);if(u.length!==2)return null;h=parseInt(u[0],10);if(h<-12||h>13)return null;var m=parseInt(u[1],10);if(m<0||m>59)return null;l=h*60+(a.startsWith("-")?-m:m);break;case "z":case "zz":h=parseInt(a,10);if(h<-12||h>13)return null;l=h*60;break;case "g":case "gg":var o=a;if(!o||!g.eras)return null;o=o.toLowerCase().trim();for(var r=0,F=g.eras.length;r<F;r+=4)if(o===g.eras[r+1].toLowerCase()){x=r;break}if(x===null)return null}}var b=new Date,t,n=g.Calendar.convert;if(n)t=n.fromGregorian(b)[0];else t=b.getFullYear();if(e===null)e=t;else if(g.eras)e+=g.eras[(x||0)+3];if(c===null)c=0;if(j===null)j=1;if(n){b=n.toGregorian(e,c,j);if(b===null)return null}else{b.setFullYear(e,c,j);if(b.getDate()!==j)return null;if(i!==null&&b.getDay()!==i)return null}if(v&&d<12)d+=12;b.setHours(d,p,q,f);if(l!==null){var y=b.getMinutes()-(l+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(y/60,10),y%60)}return b};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,j){var b=j.dateTimeFormat,n=b.Calendar.convert;if(!e||!e.length||e==="i")if(j&&j.name.length)if(n)return this._toFormattedString(b.FullDateTimePattern,j);else{var r=new Date(this.getTime()),x=Date._getEra(this,b.eras);r.setFullYear(Date._getEraYear(this,b,x));return r.toLocaleString()}else return this.toString();var l=b.eras,k=e==="s";e=Date._expandFormat(b,e);var a=new Sys.StringBuilder,c;function d(a){if(a<10)return "0"+a;return a.toString()}function m(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}function v(a){if(a<10)return "000"+a;else if(a<100)return "00"+a;else if(a<1000)return "0"+a;return a.toString()}var h,p,t=/([^d]|^)(d|dd)([^d]|$)/g;function s(){if(h||p)return h;h=t.test(e);p=true;return h}var q=0,o=Date._getTokenRegExp(),f;if(!k&&n)f=n.fromGregorian(this);for(;true;){var w=o.lastIndex,i=o.exec(e),u=e.slice(w,i?i.index:e.length);q+=Date._appendPreOrPostMatch(u,a);if(!i)break;if(q%2===1){a.append(i[0]);continue}function g(a,b){if(f)return f[b];switch(b){case 0:return a.getFullYear();case 1:return a.getMonth();case 2:return a.getDate()}}switch(i[0]){case "dddd":a.append(b.DayNames[this.getDay()]);break;case "ddd":a.append(b.AbbreviatedDayNames[this.getDay()]);break;case "dd":h=true;a.append(d(g(this,2)));break;case "d":h=true;a.append(g(this,2));break;case "MMMM":a.append(b.MonthGenitiveNames&&s()?b.MonthGenitiveNames[g(this,1)]:b.MonthNames[g(this,1)]);break;case "MMM":a.append(b.AbbreviatedMonthGenitiveNames&&s()?b.AbbreviatedMonthGenitiveNames[g(this,1)]:b.AbbreviatedMonthNames[g(this,1)]);break;case "MM":a.append(d(g(this,1)+1));break;case "M":a.append(g(this,1)+1);break;case "yyyy":a.append(v(f?f[0]:Date._getEraYear(this,b,Date._getEra(this,l),k)));break;case "yy":a.append(d((f?f[0]:Date._getEraYear(this,b,Date._getEra(this,l),k))%100));break;case "y":a.append((f?f[0]:Date._getEraYear(this,b,Date._getEra(this,l),k))%100);break;case "hh":c=this.getHours()%12;if(c===0)c=12;a.append(d(c));break;case "h":c=this.getHours()%12;if(c===0)c=12;a.append(c);break;case "HH":a.append(d(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(d(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(d(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?b.AMDesignator:b.PMDesignator);break;case "t":a.append((this.getHours()<12?b.AMDesignator:b.PMDesignator).charAt(0));break;case "f":a.append(m(this.getMilliseconds()).charAt(0));break;case "ff":a.append(m(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(m(this.getMilliseconds()));break;case "z":c=this.getTimezoneOffset()/60;a.append((c<=0?"+":"-")+Math.floor(Math.abs(c)));break;case "zz":c=this.getTimezoneOffset()/60;a.append((c<=0?"+":"-")+d(Math.floor(Math.abs(c))));break;case "zzz":c=this.getTimezoneOffset()/60;a.append((c<=0?"+":"-")+d(Math.floor(Math.abs(c)))+":"+d(Math.abs(this.getTimezoneOffset()%60)));break;case "g":case "gg":if(b.eras)a.append(b.eras[Date._getEra(this,l)+1]);break;case "/":a.append(b.DateSeparator)}}return a.toString()};String.localeFormat=function(){return String._toFormattedString(true,arguments)};Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(b,o){b=b.trim();if(b.match(/^[+-]?infinity$/i))return parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var a=o.numberFormat,g=Number._parseNumberNegativePattern(b,a,a.NumberNegativePattern),h=g[0],e=g[1];if(h===""&&a.NumberNegativePattern!==1){g=Number._parseNumberNegativePattern(b,a,1);h=g[0];e=g[1]}if(h==="")h="+";var j,d,f=e.indexOf("e");if(f<0)f=e.indexOf("E");if(f<0){d=e;j=null}else{d=e.substr(0,f);j=e.substr(f+1)}var c,k,m=d.indexOf(a.NumberDecimalSeparator);if(m<0){c=d;k=null}else{c=d.substr(0,m);k=d.substr(m+a.NumberDecimalSeparator.length)}c=c.split(a.NumberGroupSeparator).join("");var n=a.NumberGroupSeparator.replace(/\u00A0/g," ");if(a.NumberGroupSeparator!==n)c=c.split(n).join("");var l=h+c;if(k!==null)l+="."+k;if(j!==null){var i=Number._parseNumberNegativePattern(j,a,1);if(i[0]==="")i[0]="+";l+="e"+i[0]+i[1]}if(l.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/))return parseFloat(l);return Number.NaN};Number._parseNumberNegativePattern=function(a,d,e){var b=d.NegativeSign,c=d.PositiveSign;switch(e){case 4:b=" "+b;c=" "+c;case 3:if(a.endsWith(b))return ["-",a.substr(0,a.length-b.length)];else if(a.endsWith(c))return ["+",a.substr(0,a.length-c.length)];break;case 2:b+=" ";c+=" ";case 1:if(a.startsWith(b))return ["-",a.substr(b.length)];else if(a.startsWith(c))return ["+",a.substr(c.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return ["-",a.substr(1,a.length-2)]}return ["",a]};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(e,j){if(!e||e.length===0||e==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b<c;b++)a=d?"0"+a:a+"0";return a}function i(j,i,l,n,p){var h=l[0],k=1,o=Math.pow(10,i),m=Math.round(j*o)/o;if(!isFinite(m))m=j;j=m;var b=j.toString(),a="",c,e=b.split(/e/i);b=e[0];c=e.length>1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k<l.length){h=l[k];k++}}return b.slice(0,d+1)+n+f+a}var a=j.numberFormat,d=Math.abs(this);if(!e)e="D";var b=-1;if(e.length>1)b=parseInt(e.slice(1),10);var c;switch(e.charAt(0)){case "d":case "D":c="n";if(b!==-1)d=g(""+d,b,true);if(this<0)d=-d;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;d=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;d=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;d=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=d;break;case "$":f+=a.CurrencySymbol;break;case "-":if(/[1-9]/.test(d))f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getIndex:function(c,d,e){var b=this._toUpper(c),a=Array.indexOf(d,b);if(a===-1)a=Array.indexOf(e,b);return a},_getMonthIndex:function(a){if(!this._upperMonths){this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);this._upperMonthsGenitive=this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames)}return this._getIndex(a,this._upperMonths,this._upperMonthsGenitive)},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths){this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);this._upperAbbrMonthsGenitive=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames)}return this._getIndex(a,this._upperAbbrMonths,this._upperAbbrMonthsGenitive)},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00a0").join(" ").toUpperCase()}};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo._parse=function(a){var b=a.dateTimeFormat;if(b&&!b.eras)b.eras=a.eras;return new Sys.CultureInfo(a.name,a.numberFormat,b)};Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse({"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00a4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy'-'MM'-'dd'T'HH':'mm':'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy'-'MM'-'dd HH':'mm':'ss'Z'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]});if(typeof __cultureInfo==="object"){Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo}else Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse({"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy'-'MM'-'dd'T'HH':'mm':'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy'-'MM'-'dd HH':'mm':'ss'Z'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]});

(function defineMustache(global, factory) { if (typeof exports === "object" && exports && typeof exports.nodeName !== "string") { factory(exports) } else if (typeof define === "function" && define.amd) { define(["exports"], factory) } else { global.Mustache = {}; factory(global.Mustache) } })(this, function mustacheFactory(mustache) { var objectToString = Object.prototype.toString; var isArray = Array.isArray || function isArrayPolyfill(object) { return objectToString.call(object) === "[object Array]" }; function isFunction(object) { return typeof object === "function" } function typeStr(obj) { return isArray(obj) ? "array" : typeof obj } function escapeRegExp(string) { return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") } function hasProperty(obj, propName) { return obj != null && typeof obj === "object" && propName in obj } var regExpTest = RegExp.prototype.test; function testRegExp(re, string) { return regExpTest.call(re, string) } var nonSpaceRe = /\S/; function isWhitespace(string) { return !testRegExp(nonSpaceRe, string) } var entityMap = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;", "/": "&#x2F;", "`": "&#x60;", "=": "&#x3D;" }; function escapeHtml(string) { return String(string).replace(/[&<>"'`=\/]/g, function fromEntityMap(s) { return entityMap[s] }) } var whiteRe = /\s*/; var spaceRe = /\s+/; var equalsRe = /\s*=/; var curlyRe = /\s*\}/; var tagRe = /#|\^|\/|>|\{|&|=|!/; function parseTemplate(template, tags) { if (!template) return []; var sections = []; var tokens = []; var spaces = []; var hasTag = false; var nonSpace = false; function stripSpace() { if (hasTag && !nonSpace) { while (spaces.length) delete tokens[spaces.pop()] } else { spaces = [] } hasTag = false; nonSpace = false } var openingTagRe, closingTagRe, closingCurlyRe; function compileTags(tagsToCompile) { if (typeof tagsToCompile === "string") tagsToCompile = tagsToCompile.split(spaceRe, 2); if (!isArray(tagsToCompile) || tagsToCompile.length !== 2) throw new Error("Invalid tags: " + tagsToCompile); openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + "\\s*"); closingTagRe = new RegExp("\\s*" + escapeRegExp(tagsToCompile[1])); closingCurlyRe = new RegExp("\\s*" + escapeRegExp("}" + tagsToCompile[1])) } compileTags(tags || mustache.tags); var scanner = new Scanner(template); var start, type, value, chr, token, openSection; while (!scanner.eos()) { start = scanner.pos; value = scanner.scanUntil(openingTagRe); if (value) { for (var i = 0, valueLength = value.length; i < valueLength; ++i) { chr = value.charAt(i); if (isWhitespace(chr)) { spaces.push(tokens.length) } else { nonSpace = true } tokens.push(["text", chr, start, start + 1]); start += 1; if (chr === "\n") stripSpace() } } if (!scanner.scan(openingTagRe)) break; hasTag = true; type = scanner.scan(tagRe) || "name"; scanner.scan(whiteRe); if (type === "=") { value = scanner.scanUntil(equalsRe); scanner.scan(equalsRe); scanner.scanUntil(closingTagRe) } else if (type === "{") { value = scanner.scanUntil(closingCurlyRe); scanner.scan(curlyRe); scanner.scanUntil(closingTagRe); type = "&" } else { value = scanner.scanUntil(closingTagRe) } if (!scanner.scan(closingTagRe)) throw new Error("Unclosed tag at " + scanner.pos); token = [type, value, start, scanner.pos]; tokens.push(token); if (type === "#" || type === "^") { sections.push(token) } else if (type === "/") { openSection = sections.pop(); if (!openSection) throw new Error('Unopened section "' + value + '" at ' + start); if (openSection[1] !== value) throw new Error('Unclosed section "' + openSection[1] + '" at ' + start) } else if (type === "name" || type === "{" || type === "&") { nonSpace = true } else if (type === "=") { compileTags(value) } } openSection = sections.pop(); if (openSection) throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos); return nestTokens(squashTokens(tokens)) } function squashTokens(tokens) { var squashedTokens = []; var token, lastToken; for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) { token = tokens[i]; if (token) { if (token[0] === "text" && lastToken && lastToken[0] === "text") { lastToken[1] += token[1]; lastToken[3] = token[3] } else { squashedTokens.push(token); lastToken = token } } } return squashedTokens } function nestTokens(tokens) { var nestedTokens = []; var collector = nestedTokens; var sections = []; var token, section; for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) { token = tokens[i]; switch (token[0]) { case "#": case "^": collector.push(token); sections.push(token); collector = token[4] = []; break; case "/": section = sections.pop(); section[5] = token[2]; collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens; break; default: collector.push(token) } } return nestedTokens } function Scanner(string) { this.string = string; this.tail = string; this.pos = 0 } Scanner.prototype.eos = function eos() { return this.tail === "" }; Scanner.prototype.scan = function scan(re) { var match = this.tail.match(re); if (!match || match.index !== 0) return ""; var string = match[0]; this.tail = this.tail.substring(string.length); this.pos += string.length; return string }; Scanner.prototype.scanUntil = function scanUntil(re) { var index = this.tail.search(re), match; switch (index) { case -1: match = this.tail; this.tail = ""; break; case 0: match = ""; break; default: match = this.tail.substring(0, index); this.tail = this.tail.substring(index) } this.pos += match.length; return match }; function Context(view, parentContext) { this.view = view; this.cache = { ".": this.view }; this.parent = parentContext } Context.prototype.push = function push(view) { return new Context(view, this) }; Context.prototype.lookup = function lookup(name) { var cache = this.cache; var value; if (cache.hasOwnProperty(name)) { value = cache[name] } else { var context = this, names, index, lookupHit = false; while (context) { if (name.indexOf(".") > 0) { value = context.view; names = name.split("."); index = 0; while (value != null && index < names.length) { if (index === names.length - 1) lookupHit = hasProperty(value, names[index]); value = value[names[index++]] } } else { value = context.view[name]; lookupHit = hasProperty(context.view, name) } if (lookupHit) break; context = context.parent } cache[name] = value } if (isFunction(value)) value = value.call(this.view); return value }; function Writer() { this.cache = {} } Writer.prototype.clearCache = function clearCache() { this.cache = {} }; Writer.prototype.parse = function parse(template, tags) { var cache = this.cache; var tokens = cache[template]; if (tokens == null) tokens = cache[template] = parseTemplate(template, tags); return tokens }; Writer.prototype.render = function render(template, view, partials) { var tokens = this.parse(template); var context = view instanceof Context ? view : new Context(view); return this.renderTokens(tokens, context, partials, template) }; Writer.prototype.renderTokens = function renderTokens(tokens, context, partials, originalTemplate) { var buffer = ""; var token, symbol, value; for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) { value = undefined; token = tokens[i]; symbol = token[0]; if (symbol === "#") value = this.renderSection(token, context, partials, originalTemplate); else if (symbol === "^") value = this.renderInverted(token, context, partials, originalTemplate); else if (symbol === ">") value = this.renderPartial(token, context, partials, originalTemplate); else if (symbol === "&") value = this.unescapedValue(token, context); else if (symbol === "name") value = this.escapedValue(token, context); else if (symbol === "text") value = this.rawValue(token); if (value !== undefined) buffer += value } return buffer }; Writer.prototype.renderSection = function renderSection(token, context, partials, originalTemplate) { var self = this; var buffer = ""; var value = context.lookup(token[1]); function subRender(template) { return self.render(template, context, partials) } if (!value) return; if (isArray(value)) { for (var j = 0, valueLength = value.length; j < valueLength; ++j) { buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate) } } else if (typeof value === "object" || typeof value === "string" || typeof value === "number") { buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate) } else if (isFunction(value)) { if (typeof originalTemplate !== "string") throw new Error("Cannot use higher-order sections without the original template"); value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender); if (value != null) buffer += value } else { buffer += this.renderTokens(token[4], context, partials, originalTemplate) } return buffer }; Writer.prototype.renderInverted = function renderInverted(token, context, partials, originalTemplate) { var value = context.lookup(token[1]); if (!value || isArray(value) && value.length === 0) return this.renderTokens(token[4], context, partials, originalTemplate) }; Writer.prototype.renderPartial = function renderPartial(token, context, partials) { if (!partials) return; var value = isFunction(partials) ? partials(token[1]) : partials[token[1]]; if (value != null) return this.renderTokens(this.parse(value), context, partials, value) }; Writer.prototype.unescapedValue = function unescapedValue(token, context) { var value = context.lookup(token[1]); if (value != null) return value }; Writer.prototype.escapedValue = function escapedValue(token, context) { var value = context.lookup(token[1]); if (value != null) return mustache.escape(value) }; Writer.prototype.rawValue = function rawValue(token) { return token[1] }; mustache.name = "mustache.js"; mustache.version = "2.3.0"; mustache.tags = ["{{", "}}"]; var defaultWriter = new Writer; mustache.clearCache = function clearCache() { return defaultWriter.clearCache() }; mustache.parse = function parse(template, tags) { return defaultWriter.parse(template, tags) }; mustache.render = function render(template, view, partials) { if (typeof template !== "string") { throw new TypeError('Invalid template! Template should be a "string" ' + 'but "' + typeStr(template) + '" was given as the first ' + "argument for mustache#render(template, view, partials)") } return defaultWriter.render(template, view, partials) }; mustache.to_html = function to_html(template, view, partials, send) { var result = mustache.render(template, view, partials); if (isFunction(send)) { send(result) } else { return result } }; mustache.escape = escapeHtml; mustache.Scanner = Scanner; mustache.Context = Context; mustache.Writer = Writer; return mustache });
/*!
 * JQuery Spliter Plugin version 0.27.0
 * Copyright (C) 2010-2017 Jakub Jankiewicz <http://jcubic.pl>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
(function ($, undefined) {
    var count = 0;
    var splitter_id = null;
    var splitters = [];
    var current_splitter = null;
    $.fn.split = function (options) {
        var data = this.data('splitter');
        if (data) {
            return data;
        }
        var panel_1;
        var panel_2;
        var settings = $.extend({
            limit: 100,
            orientation: 'horizontal',
            position: '50%',
            invisible: false,
            onDragStart: $.noop,
            onDragEnd: $.noop,
            onDrag: $.noop,
            percent: false
        }, options || {});
        this.settings = settings;
        var cls;
        var children = this.children();
        if (settings.orientation == 'vertical') {
            panel_1 = children.first().addClass('left_panel');
            panel_2 = panel_1.next().addClass('right_panel');
            cls = 'vsplitter';
        } else if (settings.orientation == 'horizontal') {
            panel_1 = children.first().addClass('top_panel');
            panel_2 = panel_1.next().addClass('bottom_panel');
            cls = 'hsplitter';
        }
        if (settings.invisible) {
            cls += ' splitter-invisible';
        }
        var width = this.width();
        var height = this.height();
        var id = count++;
        this.addClass('splitter_panel');
        var splitter = $('<div/>').addClass(cls).bind('mouseenter touchstart', function () {
            splitter_id = id;
        }).bind('mouseleave touchend', function () {
            splitter_id = null;
        }).insertAfter(panel_1);
        var position;

        function get_position(position) {
            if (typeof position === 'number') {
                return position;
            } else if (typeof position === 'string') {
                var match = position.match(/^([0-9\.]+)(px|%)$/);
                if (match) {
                    if (match[2] == 'px') {
                        return +match[1];
                    } else {
                        if (settings.orientation == 'vertical') {
                            return (width * +match[1]) / 100;
                        } else if (settings.orientation == 'horizontal') {
                            return (height * +match[1]) / 100;
                        }
                    }
                } else {
                    //throw position + ' is invalid value';
                }
            } else {
                //throw 'position have invalid type';
            }
        }

        function set_limit(limit) {
            if (!isNaN(parseFloat(limit)) && isFinite(limit)) {
                return {
                    leftUpper: limit,
                    rightBottom: limit
                };
            }
            return limit;
        }

        var self = $.extend(this, {
            refresh: function () {
                var new_width = this.width();
                var new_height = this.height();
                if (width != new_width || height != new_height) {
                    width = this.width();
                    height = this.height();
                    self.position(position);
                }
            },
            option: function (name, value) {
                if (name === 'position') {
                    return self.position(value);
                } else if (typeof value === 'undefined') {
                    return settings[name];
                } else {
                    settings[name] = value;
                }
                return self;
            },
            position: (function () {
                if (settings.orientation == 'vertical') {
                    return function (n, silent) {
                        if (n === undefined) {
                            return position;
                        } else {
                            position = get_position(n);
                            var sw = splitter.width();
                            var sw2 = sw / 2, pw;
                            var width = self.width();
                            if (settings.invisible) {
                                pw = panel_1.width(position).outerWidth();
                                panel_2.width(width - pw);
                                splitter.css('left', pw - sw2);
                            } else {
                                if (settings.percent) {
                                    var w1 = (position - sw2) / width * 100;
                                    pw = panel_1.css('width', w1 + '%').outerWidth();
                                    panel_2.css('width', (width - pw - sw) / width * 100 + '%');
                                    splitter.css('left', (pw / width * 100) + '%');
                                } else {
                                    pw = panel_1.css('width', position - sw2).outerWidth();
                                    panel_2.width(width - pw - sw);
                                    splitter.css('left', pw);
                                }
                            }
                            panel_1.find('.splitter_panel').eq(0).height(self.height());
                            panel_2.find('.splitter_panel').eq(0).height(self.height());
                        }
                        if (!silent) {
                            self.trigger('splitter.resize');
                            self.find('.splitter_panel').trigger('splitter.resize');
                        }
                        return self;
                    };
                } else if (settings.orientation == 'horizontal') {
                    return function (n, silent) {
                        if (n === undefined) {
                            return position;
                        } else {
                            position = get_position(n);
                            var sw = splitter.height();
                            var sw2 = sw / 2, pw;
                            var height = self.height();
                            if (settings.invisible) {
                                pw = panel_1.height(position).outerHeight();
                                panel_2.height(height - pw);
                                splitter.css('top', pw - sw2);
                            } else if (settings.percent) {
                                var h1 = (position - sw2) / height * 100;
                                pw = panel_1.css('height', h1 + '%').outerHeight();
                                panel_2.css('height', ((height - pw - sw) / height * 100) + '%');
                                splitter.css('top', (pw / height * 100) + '%');
                            } else {
                                pw = panel_1.height(position - sw2).outerHeight();
                                panel_2.height(height - pw - sw);
                                splitter.css('top', pw);
                            }
                        }
                        if (!silent) {
                            self.trigger('splitter.resize');
                            self.find('.splitter_panel').trigger('splitter.resize');
                        }
                        return self;
                    };
                } else {
                    return $.noop;
                }
            })(),
            orientation: settings.orientation,
            limit: set_limit(settings.limit),
            isActive: function () {
                return splitter_id === id;
            },
            destroy: function () {
                self.removeClass('splitter_panel');
                splitter.unbind('mouseenter');
                splitter.unbind('mouseleave');
                splitter.unbind('touchstart');
                splitter.unbind('touchmove');
                splitter.unbind('touchend');
                splitter.unbind('touchleave');
                splitter.unbind('touchcancel');
                if (settings.orientation == 'vertical') {
                    panel_1.removeClass('left_panel');
                    panel_2.removeClass('right_panel');
                } else if (settings.orientation == 'horizontal') {
                    panel_1.removeClass('top_panel');
                    panel_2.removeClass('bottom_panel');
                }
                self.unbind('splitter.resize');
                self.trigger('splitter.resize');
                self.find('.splitter_panel').trigger('splitter.resize');
                splitters[id] = null;
                count--;
                splitter.remove();
                self.removeData('splitter');
                var not_null = false;
                for (var i = splitters.length; i--;) {
                    if (splitters[i] !== null) {
                        not_null = true;
                        break;
                    }
                }
                //remove document events when no splitters
                if (!not_null) {
                    $(document.documentElement).unbind('.splitter');
                    $(window).unbind('resize.splitter');
                    splitters = [];
                    count = 0;
                }
            }
        });
        self.bind('splitter.resize', function (e) {
            var pos = self.position();
            if (self.orientation == 'vertical' &&
                pos > self.width()) {
                pos = self.width() - self.limit.rightBottom - 1;
            } else if (self.orientation == 'horizontal' &&
                       pos > self.height()) {
                pos = self.height() - self.limit.rightBottom - 1;
            }
            if (pos < self.limit.leftUpper) {
                pos = self.limit.leftUpper + 1;
            }
            e.stopPropagation();
            self.position(pos, true);
        });
        //inital position of splitter
        var pos;
        if (settings.orientation == 'vertical') {
            if (pos > width - settings.limit.rightBottom) {
                pos = width - settings.limit.rightBottom;
            } else {
                pos = get_position(settings.position);
            }
        } else if (settings.orientation == 'horizontal') {
            //position = height/2;
            if (pos > height - settings.limit.rightBottom) {
                pos = height - settings.limit.rightBottom;
            } else {
                pos = get_position(settings.position);
            }
        }
        if (pos < settings.limit.leftUpper) {
            pos = settings.limit.leftUpper;
        }
        self.position(pos, true);
        var parent = this.closest('.splitter_panel');
        if (parent.length) {
            this.height(parent.height());
        }
        // bind events to document if no splitters
        if (splitters.filter(Boolean).length === 0) {
            $(window).bind('resize.splitter', function () {
                $.each(splitters, function (i, splitter) {
                    if (splitter) {
                        splitter.refresh();
                    }
                });
            });
            $(document.documentElement).on('mousedown.splitter touchstart.splitter', function (e) {
                if (splitter_id !== null) {
                    e.preventDefault();
                    current_splitter = splitters[splitter_id];
                    setTimeout(function () {
                        $('<div class="splitterMask"></div>').
                            css('cursor', current_splitter.children().eq(1).css('cursor')).
                            insertAfter(current_splitter);
                    });
                    current_splitter.settings.onDragStart(e);
                }
            }).bind('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function (e) {
                if (current_splitter) {
                    setTimeout(function () {
                        $('.splitterMask').remove();
                    });
                    current_splitter.settings.onDragEnd(e);
                    current_splitter = null;
                }
            }).bind('mousemove.splitter touchmove.splitter', function (e) {
                if (current_splitter !== null) {
                    var leftUpperLimit = current_splitter.limit.leftUpper;
                    var rightBottomLimit = current_splitter.limit.rightBottom;
                    var offset = current_splitter.offset();
                    if (current_splitter.orientation == 'vertical') {
                        var pageX = e.pageX;
                        if (e.originalEvent && e.originalEvent.changedTouches) {
                            pageX = e.originalEvent.changedTouches[0].pageX;
                        }
                        var x = pageX - offset.left;
                        if (x <= current_splitter.limit.leftUpper) {
                            x = current_splitter.limit.leftUpper + 1;
                        } else if (x >= current_splitter.width() - rightBottomLimit) {
                            x = current_splitter.width() - rightBottomLimit - 1;
                        }
                        if (x > current_splitter.limit.leftUpper &&
                            x < current_splitter.width() - rightBottomLimit) {
                            current_splitter.position(x, true);
                            current_splitter.trigger('splitter.resize');
                            current_splitter.find('.splitter_panel').
                                trigger('splitter.resize');
                            //e.preventDefault();
                        }
                    } else if (current_splitter.orientation == 'horizontal') {
                        var pageY = e.pageY;
                        if (e.originalEvent && e.originalEvent.changedTouches) {
                            pageY = e.originalEvent.changedTouches[0].pageY;
                        }
                        var y = pageY - offset.top;
                        if (y <= current_splitter.limit.leftUpper) {
                            y = current_splitter.limit.leftUpper + 1;
                        } else if (y >= current_splitter.height() - rightBottomLimit) {
                            y = current_splitter.height() - rightBottomLimit - 1;
                        }
                        if (y > current_splitter.limit.leftUpper &&
                            y < current_splitter.height() - rightBottomLimit) {
                            current_splitter.position(y, true);
                            current_splitter.trigger('splitter.resize');
                            current_splitter.find('.splitter_panel').
                                trigger('splitter.resize');
                            //e.preventDefault();
                        }
                    }
                    current_splitter.settings.onDrag(e);
                }
            });//*/
        }
        splitters[id] = self;
        self.data('splitter', self);
        return self;
    };
})(jQuery);
/*!
 * WARNING!! This file has been modified by RQL. Before you update this library, PLEASE DIFF the file and preserve the RQL code. 
 *
*/
/*!
 * Select2 4.0.13
 * https://select2.github.io
 *
 * Released under the MIT license
 * https://github.com/select2/select2/blob/master/LICENSE.md
 */
(function(n){typeof define=="function"&&define.amd?define(["jquery"],n):typeof module=="object"&&module.exports?module.exports=function(t,i){return i===undefined&&(i=typeof window!="undefined"?require("jquery"):require("jquery")(t)),n(i),i}:n(jQuery)})(function(n){var t=function(){var t;n&&n.fn&&n.fn.select2&&n.fn.select2.amd&&(t=n.fn.select2.amd),function(){if(!t||!t.requirejs){t?i=t:t={};
/**
 * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
 * Released under MIT license, http://github.com/requirejs/almond/LICENSE
 */
var n,i,r;(function(t){function e(n,t){return d.call(n,t)}function l(n,t){var o,s,u,e,h,y,c,b,i,l,p,k,r=t&&t.split("/"),a=f.map,v=a&&a["*"]||{};if(n){for(n=n.split("/"),h=n.length-1,f.nodeIdCompat&&w.test(n[h])&&(n[h]=n[h].replace(w,"")),n[0].charAt(0)==="."&&r&&(k=r.slice(0,r.length-1),n=k.concat(n)),i=0;i<n.length;i++)if(p=n[i],p===".")n.splice(i,1),i-=1;else if(p==="..")if(i===0||i===1&&n[2]===".."||n[i-1]==="..")continue;else i>0&&(n.splice(i-1,2),i-=2);n=n.join("/")}if((r||v)&&a){for(o=n.split("/"),i=o.length;i>0;i-=1){if(s=o.slice(0,i).join("/"),r)for(l=r.length;l>0;l-=1)if(u=a[r.slice(0,l).join("/")],u&&(u=u[s],u)){e=u;y=i;break}if(e)break;!c&&v&&v[s]&&(c=v[s],b=i)}!e&&c&&(e=c,y=b);e&&(o.splice(0,y,e),n=o.join("/"))}return n}function b(n,i){return function(){var r=g.call(arguments,0);return typeof r[0]!="string"&&r.length===1&&r.push(null),o.apply(t,r.concat([n,i]))}}function nt(n){return function(t){return l(t,n)}}function tt(n){return function(t){u[n]=t}}function a(n){if(e(h,n)){var i=h[n];delete h[n];y[n]=!0;c.apply(t,i)}if(!e(u,n)&&!e(y,n))throw new Error("No "+n);return u[n]}function p(n){var i,t=n?n.indexOf("!"):-1;return t>-1&&(i=n.substring(0,t),n=n.substring(t+1,n.length)),[i,n]}function k(n){return n?p(n):[]}function it(n){return function(){return f&&f.config&&f.config[n]||{}}}var c,o,v,s,u={},h={},f={},y={},d=Object.prototype.hasOwnProperty,g=[].slice,w=/\.js$/;v=function(n,t){var r,u=p(n),i=u[0],f=t[1];return n=u[1],i&&(i=l(i,f),r=a(i)),i?n=r&&r.normalize?r.normalize(n,nt(f)):l(n,f):(n=l(n,f),u=p(n),i=u[0],n=u[1],i&&(r=a(i))),{f:i?i+"!"+n:n,n:n,pr:i,p:r}};s={require:function(n){return b(n)},exports:function(n){var t=u[n];return typeof t!="undefined"?t:u[n]={}},module:function(n){return{id:n,uri:"",exports:u[n],config:it(n)}}};c=function(n,i,r,f){var p,o,d,w,c,g,l=[],nt=typeof r,it;if(f=f||n,g=k(f),nt==="undefined"||nt==="function"){for(i=!i.length&&r.length?["require","exports","module"]:i,c=0;c<i.length;c+=1)if(w=v(i[c],g),o=w.f,o==="require")l[c]=s.require(n);else if(o==="exports")l[c]=s.exports(n),it=!0;else if(o==="module")p=l[c]=s.module(n);else if(e(u,o)||e(h,o)||e(y,o))l[c]=a(o);else if(w.p)w.p.load(w.n,b(f,!0),tt(o),{}),l[c]=u[o];else throw new Error(n+" missing "+o);d=r?r.apply(u[n],l):undefined;n&&(p&&p.exports!==t&&p.exports!==u[n]?u[n]=p.exports:d===t&&it||(u[n]=d))}else n&&(u[n]=r)};n=i=o=function(n,i,r,u,e){if(typeof n=="string")return s[n]?s[n](i):a(v(n,k(i)).f);if(!n.splice){if(f=n,f.deps&&o(f.deps,f.callback),!i)return;i.splice?(n=i,i=r,r=null):n=t}return i=i||function(){},typeof r=="function"&&(r=u,u=e),u?c(t,n,i,r):setTimeout(function(){c(t,n,i,r)},4),o};o.config=function(n){return o(n)};n._defined=u;r=function(n,t,i){if(typeof n!="string")throw new Error("See almond README: incorrect module build, no module name");t.splice||(i=t,t=[]);e(u,n)||e(h,n)||(h[n]=[n,t,i])};r.amd={jQuery:!0}})();t.requirejs=n;t.require=i;t.define=r}}();t.define("almond",function(){});t.define("jquery",[],function(){var t=n||$;return t==null&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),t});t.define("select2/utils",["jquery"],function(n){function u(n){var i=n.prototype,r=[],t,u;for(t in i)(u=i[t],typeof u=="function")&&t!=="constructor"&&r.push(t);return r}var t={},i,r;return t.Extend=function(n,t){function r(){this.constructor=n}var u={}.hasOwnProperty;for(var i in t)u.call(t,i)&&(n[i]=t[i]);return r.prototype=t.prototype,n.prototype=new r,n.__super__=t.prototype,n},t.Decorate=function(n,t){function i(){var r=Array.prototype.unshift,u=t.prototype.constructor.length,i=n.prototype.constructor;u>0&&(r.call(arguments,n.prototype.constructor),i=t.prototype.constructor);i.apply(this,arguments)}function l(){this.constructor=i}var s=u(t),h=u(n),r,e,c,f,o;for(t.displayName=n.displayName,i.prototype=new l,r=0;r<h.length;r++)e=h[r],i.prototype[e]=n.prototype[e];for(c=function(n){var r=function(){},u;return n in i.prototype&&(r=i.prototype[n]),u=t.prototype[n],function(){var n=Array.prototype.unshift;return n.call(arguments,r),u.apply(this,arguments)}},f=0;f<s.length;f++)o=s[f],i.prototype[o]=c(o);return i},i=function(){this.listeners={}},i.prototype.on=function(n,t){this.listeners=this.listeners||{};n in this.listeners?this.listeners[n].push(t):this.listeners[n]=[t]},i.prototype.trigger=function(n){var i=Array.prototype.slice,t=i.call(arguments,1);this.listeners=this.listeners||{};t==null&&(t=[]);t.length===0&&t.push({});t[0]._type=n;n in this.listeners&&this.invoke(this.listeners[n],i.call(arguments,1));"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},i.prototype.invoke=function(n,t){for(var i=0,r=n.length;i<r;i++)n[i].apply(this,t)},t.Observable=i,t.generateChars=function(n){for(var r,t="",i=0;i<n;i++)r=Math.floor(Math.random()*36),t+=r.toString(36);return t},t.bind=function(n,t){return function(){n.apply(t,arguments)}},t._convertData=function(n){var f,r,i,u,t;for(f in n)if(r=f.split("-"),i=n,r.length!==1){for(u=0;u<r.length;u++)t=r[u],t=t.substring(0,1).toLowerCase()+t.substring(1),t in i||(i[t]={}),u==r.length-1&&(i[t]=n[f]),i=i[t];delete n[f]}return n},t.hasScroll=function(t,i){var u=n(i),f=i.style.overflowX,r=i.style.overflowY;return f===r&&(r==="hidden"||r==="visible")?!1:f==="scroll"||r==="scroll"?!0:u.innerHeight()<i.scrollHeight||u.innerWidth()<i.scrollWidth},t.escapeMarkup=function(n){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return typeof n!="string"?n:String(n).replace(/[&<>"'\/\\]/g,function(n){return t[n]})},t.appendMany=function(t,i){if(n.fn.jquery.substr(0,3)==="1.7"){var r=n();n.map(i,function(n){r=r.add(n)});i=r}t.append(i)},t.__cache={},r=0,t.GetUniqueElementId=function(n){var t=n.getAttribute("data-select2-id");return t==null&&(n.id?(t=n.id,n.setAttribute("data-select2-id",t)):(n.setAttribute("data-select2-id",++r),t=r.toString())),t},t.StoreData=function(n,i,r){var u=t.GetUniqueElementId(n);t.__cache[u]||(t.__cache[u]={});t.__cache[u][i]=r},t.GetData=function(i,r){var u=t.GetUniqueElementId(i);return r?t.__cache[u]?t.__cache[u][r]!=null?t.__cache[u][r]:n(i).data(r):n(i).data(r):t.__cache[u]},t.RemoveData=function(n){var i=t.GetUniqueElementId(n);t.__cache[i]!=null&&delete t.__cache[i];n.removeAttribute("data-select2-id")},t});t.define("select2/results",["jquery","./utils"],function(n,t){function i(n,t,r){this.$element=n;this.data=r;this.options=t;i.__super__.constructor.call(this)}return t.Extend(i,t.Observable),i.prototype.render=function(){var t=n('<ul class="select2-results__options" role="listbox"><\/ul>');return this.options.get("multiple")&&t.attr("aria-multiselectable","true"),this.$results=t,t},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(t){var u=this.options.get("escapeMarkup"),i,r;this.clear();this.hideLoading();i=n('<li role="alert" aria-live="assertive" class="select2-results__option"><\/li>');r=this.options.get("translations").get(t.message);i.append(u(r(t.args)));i[0].className+=" select2-results__message";this.$results.append(i)},i.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},i.prototype.append=function(n){var i,t,r,u;if(this.hideLoading(),i=[],n.results==null||n.results.length===0){this.$results.children().length===0&&this.trigger("results:message",{message:"noResults"});return}for(n.results=this.sort(n.results),t=0;t<n.results.length;t++)r=n.results[t],u=this.option(r),i.push(u);this.$results.append(i)},i.prototype.position=function(n,t){var i=t.find(".select2-results");i.append(n)},i.prototype.sort=function(n){var t=this.options.get("sorter");return t(n)},i.prototype.highlightFirstItem=function(){var n=this.$results.find(".select2-results__option[aria-selected]"),t=n.filter("[aria-selected=true]");t.length>0?t.first().trigger("mouseenter"):n.first().trigger("mouseenter");this.ensureHighlightVisible()},i.prototype.setClasses=function(){var i=this;this.data.current(function(r){var u=n.map(r,function(n){return n.id.toString()}),f=i.$results.find(".select2-results__option[aria-selected]");f.each(function(){var r=n(this),i=t.GetData(this,"data"),f=""+i.id;i.element!=null&&i.element.selected||i.element==null&&n.inArray(f,u)>-1?r.attr("aria-selected","true"):r.attr("aria-selected","false")})})},i.prototype.showLoading=function(n){this.hideLoading();var i=this.options.get("translations").get("searching"),r={disabled:!0,loading:!0,text:i(n)},t=this.option(r);t.className+=" loading-results";this.$results.prepend(t)},i.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},i.prototype.option=function(i){var u=document.createElement("li"),r,l,o,a,s,f,p,h,e,v,y,c;u.className="select2-results__option";r={role:"option","aria-selected":"false"};l=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;(i.element!=null&&l.call(i.element,":disabled")||i.element==null&&i.disabled)&&(delete r["aria-selected"],r["aria-disabled"]="true");i.id==null&&delete r["aria-selected"];i._resultId!=null&&(u.id=i._resultId);i.title&&(u.title=i.title);i.children&&(r.role="group",r["aria-label"]=i.text,delete r["aria-selected"]);for(o in r)a=r[o],u.setAttribute(o,a);if(i.children){for(s=n(u),f=document.createElement("strong"),f.className="select2-results__group",p=n(f),this.template(i,f),h=[],e=0;e<i.children.length;e++)v=i.children[e],y=this.option(v),h.push(y);c=n("<ul><\/ul>",{"class":"select2-results__options select2-results__options--nested"});c.append(h);s.append(f);s.append(c)}else this.template(i,u);return t.StoreData(u,"data",i),u},i.prototype.bind=function(i){var r=this,u=i.id+"-results";this.$results.attr("id",u);i.on("results:all",function(n){r.clear();r.append(n.data);i.isOpen()&&(r.setClasses(),r.highlightFirstItem())});i.on("results:append",function(n){r.append(n.data);i.isOpen()&&r.setClasses()});i.on("query",function(n){r.hideMessages();r.showLoading(n)});i.on("select",function(){i.isOpen()&&(r.setClasses(),r.options.get("scrollAfterSelect")&&r.highlightFirstItem())});i.on("unselect",function(){i.isOpen()&&(r.setClasses(),r.options.get("scrollAfterSelect")&&r.highlightFirstItem())});i.on("open",function(){r.$results.attr("aria-expanded","true");r.$results.attr("aria-hidden","false");r.setClasses();r.ensureHighlightVisible()});i.on("close",function(){r.$results.attr("aria-expanded","false");r.$results.attr("aria-hidden","true");r.$results.removeAttr("aria-activedescendant")});i.on("results:toggle",function(){var n=r.getHighlightedResults();n.length!==0&&n.trigger("mouseup")});i.on("results:select",function(){var n=r.getHighlightedResults(),i;n.length!==0&&(i=t.GetData(n[0],"data"),n.attr("aria-selected")=="true"?r.trigger("close",{}):r.trigger("select",{data:i}))});i.on("results:previous",function(){var i=r.getHighlightedResults(),u=r.$results.find("[aria-selected]"),f=u.index(i),n,t;if(!(f<=0)){n=f-1;i.length===0&&(n=0);t=u.eq(n);t.trigger("mouseenter");var e=r.$results.offset().top,o=t.offset().top,s=r.$results.scrollTop()+(o-e);n===0?r.$results.scrollTop(0):o-e<0&&r.$results.scrollTop(s)}});i.on("results:next",function(){var e=r.getHighlightedResults(),t=r.$results.find("[aria-selected]"),o=t.index(e),i=o+1,n;if(!(i>=t.length)){n=t.eq(i);n.trigger("mouseenter");var u=r.$results.offset().top+r.$results.outerHeight(!1),f=n.offset().top+n.outerHeight(!1),s=r.$results.scrollTop()+f-u;i===0?r.$results.scrollTop(0):f>u&&r.$results.scrollTop(s)}});i.on("results:focus",function(n){n.element.addClass("select2-results__option--highlighted")});i.on("results:message",function(n){r.displayMessage(n)});if(n.fn.mousewheel)this.$results.on("mousewheel",function(n){var t=r.$results.scrollTop(),i=r.$results.get(0).scrollHeight-t+n.deltaY,u=n.deltaY>0&&t-n.deltaY<=0,f=n.deltaY<0&&i<=r.$results.height();u?(r.$results.scrollTop(0),n.preventDefault(),n.stopPropagation()):f&&(r.$results.scrollTop(r.$results.get(0).scrollHeight-r.$results.height()),n.preventDefault(),n.stopPropagation())});this.$results.on("mouseup",".select2-results__option[aria-selected]",function(i){var f=n(this),u=t.GetData(this,"data");if(f.attr("aria-selected")==="true"){r.options.get("multiple")?r.trigger("unselect",{originalEvent:i,data:u}):r.trigger("close",{});return}r.trigger("select",{originalEvent:i,data:u})});this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(){var i=t.GetData(this,"data");r.getHighlightedResults().removeClass("select2-results__option--highlighted");r.trigger("results:focus",{data:i,element:n(this)})})},i.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},i.prototype.destroy=function(){this.$results.remove()},i.prototype.ensureHighlightVisible=function(){var n=this.getHighlightedResults();if(n.length!==0){var f=this.$results.find("[aria-selected]"),e=f.index(n),t=this.$results.offset().top,i=n.offset().top,r=this.$results.scrollTop()+(i-t),u=i-t;r-=n.outerHeight(!1)*2;e<=2?this.$results.scrollTop(0):(u>this.$results.outerHeight()||u<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(t,i){var u=this.options.get("templateResult"),f=this.options.get("escapeMarkup"),r=u(t,i);r==null?i.style.display="none":typeof r=="string"?i.innerHTML=f(r):n(i).append(r)},i});t.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}});t.define("select2/selection/base",["jquery","../utils","../keys"],function(n,t,i){function r(n,t){this.$element=n;this.options=t;r.__super__.constructor.call(this)}return t.Extend(r,t.Observable),r.prototype.render=function(){var i=n('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"><\/span>');return this._tabindex=0,t.GetData(this.$element[0],"old-tabindex")!=null?this._tabindex=t.GetData(this.$element[0],"old-tabindex"):this.$element.attr("tabindex")!=null&&(this._tabindex=this.$element.attr("tabindex")),i.attr("title",this.$element.attr("title")),i.attr("tabindex",this._tabindex),i.attr("aria-disabled","false"),this.$selection=i,i},r.prototype.bind=function(n){var t=this,r=n.id+"-results";this.container=n;this.$selection.on("focus",function(n){t.trigger("focus",n)});this.$selection.on("blur",function(n){t._handleBlur(n)});this.$selection.on("keydown",function(n){t.trigger("keypress",n);n.which===i.SPACE&&n.preventDefault()});n.on("results:focus",function(n){t.$selection.attr("aria-activedescendant",n.data._resultId)});n.on("selection:update",function(n){t.update(n.data)});n.on("open",function(){t.$selection.attr("aria-expanded","true");t.$selection.attr("aria-owns",r);t._attachCloseHandler(n)});n.on("close",function(){t.$selection.attr("aria-expanded","false");t.$selection.removeAttr("aria-activedescendant");t.$selection.removeAttr("aria-owns");var i=document.activeElement;i&&i.tagName!="BODY"||(t.$selection.focus(),window.setTimeout(function(){t.$selection.focus()},0));t._detachCloseHandler(n)});n.on("enable",function(){t.$selection.attr("tabindex",t._tabindex);t.$selection.attr("aria-disabled","false")});n.on("disable",function(){t.$selection.attr("tabindex","-1");t.$selection.attr("aria-disabled","true")})},r.prototype._handleBlur=function(t){var i=this;window.setTimeout(function(){document.activeElement==i.$selection[0]||n.contains(i.$selection[0],document.activeElement)||i.trigger("blur",t)},1)},r.prototype._attachCloseHandler=function(i){n(document.body).on("mousedown.select2."+i.id,function(i){var r=n(i.target),u=r.closest(".select2"),f=n(".select2.select2-container--open");f.each(function(){if(this!=u[0]){var n=t.GetData(this,"element");n.select2("close")}})})},r.prototype._detachCloseHandler=function(t){n(document.body).off("mousedown.select2."+t.id)},r.prototype.position=function(n,t){var i=t.find(".selection");i.append(n)},r.prototype.destroy=function(){this._detachCloseHandler(this.container)},r.prototype.update=function(){throw new Error("The `update` method must be defined in child classes.");},r.prototype.isEnabled=function(){return!this.isDisabled()},r.prototype.isDisabled=function(){return this.options.get("disabled")},r});t.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(n,t,i){function r(){r.__super__.constructor.apply(this,arguments)}return i.Extend(r,t),r.prototype.render=function(){var n=r.__super__.render.call(this);return n.addClass("select2-selection--single"),n.html('<span class="select2-selection__rendered"><\/span><span class="select2-selection__arrow" role="presentation"><b role="presentation"><\/b><\/span>'),n},r.prototype.bind=function(n){var i=this,t;r.__super__.bind.apply(this,arguments);t=n.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",t).attr("role","textbox").attr("aria-readonly","true");this.$selection.attr("aria-labelledby",t);this.$selection.on("mousedown",function(n){n.which===1&&i.trigger("toggle",{originalEvent:n})});this.$selection.on("focus",function(){});this.$selection.on("blur",function(){});n.on("focus",function(){n.isOpen()||i.$selection.trigger("focus")})},r.prototype.clear=function(){var n=this.$selection.find(".select2-selection__rendered");n.empty();n.removeAttr("title")},r.prototype.display=function(n,t){var i=this.options.get("templateSelection"),r=this.options.get("escapeMarkup");return r(i(n,t))},r.prototype.selectionContainer=function(){return n("<span><\/span>")},r.prototype.update=function(n){var r;if(n.length===0){this.clear();return}var i=n[0],t=this.$selection.find(".select2-selection__rendered"),u=this.display(i,t);t.empty().append(u);r=i.title||i.text;r?t.attr("title",r):t.removeAttr("title")},r});t.define("select2/selection/multiple",["jquery","./base","../utils"],function(n,t,i){function r(){r.__super__.constructor.apply(this,arguments)}return i.Extend(r,t),r.prototype.render=function(){var n=r.__super__.render.call(this);return n.addClass("select2-selection--multiple"),n.html('<ul class="select2-selection__rendered"><\/ul>'),n},r.prototype.bind=function(){var t=this;r.__super__.bind.apply(this,arguments);this.$selection.on("click",function(n){t.trigger("toggle",{originalEvent:n})});this.$selection.on("click",".select2-selection__choice__remove",function(r){if(!t.isDisabled()){var u=n(this),f=u.parent(),e=i.GetData(f[0],"data");t.trigger("unselect",{originalEvent:r,data:e})}})},r.prototype.clear=function(){var n=this.$selection.find(".select2-selection__rendered");n.empty();n.removeAttr("title")},r.prototype.display=function(n,t){var i=this.options.get("templateSelection"),r=this.options.get("escapeMarkup");return r(i(n,t))},r.prototype.selectionContainer=function(){return n('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;<\/span><\/li>')},r.prototype.update=function(n){var f,r,e,o;if(this.clear(),n.length!==0){for(f=[],r=0;r<n.length;r++){var u=n[r],t=this.selectionContainer(),s=this.display(u,t);t.append(s);e=u.title||u.text;e&&t.attr("title",e);i.StoreData(t[0],"data",u);f.push(t)}o=this.$selection.find(".select2-selection__rendered");i.appendMany(o,f)}},r});t.define("select2/selection/placeholder",["../utils"],function(){function n(n,t,i){this.placeholder=this.normalizePlaceholder(i.get("placeholder"));n.call(this,t,i)}return n.prototype.normalizePlaceholder=function(n,t){return typeof t=="string"&&(t={id:"",text:t}),t},n.prototype.createPlaceholder=function(n,t){var i=this.selectionContainer();return i.html(this.display(t)),i.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),i},n.prototype.update=function(n,t){var r=t.length==1&&t[0].id!=this.placeholder.id,u=t.length>1,i;if(u||r)return n.call(this,t);this.clear();i=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(i)},n});t.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(n,t,i){function r(){}return r.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);this.placeholder==null&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option.");this.$selection.on("mousedown",".select2-selection__clear",function(n){r._handleClear(n)});t.on("keypress",function(n){r._handleKeyboardClear(n,t)})},r.prototype._handleClear=function(n,t){var e,u,o,r,f;if(!this.isDisabled()&&(e=this.$selection.find(".select2-selection__clear"),e.length!==0)){if(t.stopPropagation(),u=i.GetData(e[0],"data"),o=this.$element.val(),this.$element.val(this.placeholder.id),r={data:u},this.trigger("clear",r),r.prevented){this.$element.val(o);return}for(f=0;f<u.length;f++)if(r={data:u[f]},this.trigger("unselect",r),r.prevented){this.$element.val(o);return}this.$element.trigger("input").trigger("change");this.trigger("toggle",{})}},r.prototype._handleKeyboardClear=function(n,i,r){r.isOpen()||(i.which==t.DELETE||i.which==t.BACKSPACE)&&this._handleClear(i)},r.prototype.update=function(t,r){if(t.call(this,r),!(this.$selection.find(".select2-selection__placeholder").length>0)&&r.length!==0){var f=this.options.get("translations").get("removeAllItems"),u=n('<span class="select2-selection__clear" title="'+f()+'">&times;<\/span>');i.StoreData(u[0],"data",r);this.$selection.find(".select2-selection__rendered").prepend(u)}},r});t.define("select2/selection/search",["jquery","../utils","../keys"],function(n,t,i){function r(n,t,i){n.call(this,t,i)}return r.prototype.render=function(t){var u=typeof CSS!="undefined"&&CSS.supports("(-ms-ime-align:auto)"),f=u?"text":"search",i=n(String.format('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="{0}" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /><\/li>',f)),r;return this.$searchContainer=i,this.$search=i.find("input"),r=t.call(this),this._transferTabIndex(),r},r.prototype.bind=function(n,r,u){var f=this,s=r.id+"-results",e,o;n.call(this,r,u);r.on("open",function(){f.$search.attr("aria-controls",s);f.$search.trigger("focus")});r.on("close",function(){f.$search.val("");f.$search.removeAttr("aria-controls");f.$search.removeAttr("aria-activedescendant");f.$search.trigger("focus")});r.on("enable",function(){f.$search.prop("disabled",!1);f._transferTabIndex()});r.on("disable",function(){f.$search.prop("disabled",!0)});r.on("focus",function(){f.$search.trigger("focus")});r.on("results:focus",function(n){n.data._resultId?f.$search.attr("aria-activedescendant",n.data._resultId):f.$search.removeAttr("aria-activedescendant")});this.$selection.on("focusin",".select2-search--inline",function(n){f.trigger("focus",n)});this.$selection.on("focusout",".select2-search--inline",function(n){f._handleBlur(n)});this.$selection.on("keydown",".select2-search--inline",function(n){var u,r,e;n.stopPropagation();f.trigger("keypress",n);f._keyUpPrevented=n.isDefaultPrevented();u=n.which;u===i.BACKSPACE&&f.$search.val()===""&&(r=f.$searchContainer.prev(".select2-selection__choice"),r.length>0&&(e=t.GetData(r[0],"data"),f.searchRemoveChoice(e),n.preventDefault()))});this.$selection.on("click",".select2-search--inline",function(n){f.$search.val()&&n.stopPropagation()});e=document.documentMode;o=e&&e<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(){if(o){f.$selection.off("input.search input.searchcheck");return}f.$selection.off("keyup.search")});this.$selection.on("keyup.search input.search",".select2-search--inline",function(n){if(o&&n.type==="input"){f.$selection.off("input.search input.searchcheck");return}var t=n.which;t!=i.SHIFT&&t!=i.CTRL&&t!=i.ALT&&t!=i.TAB&&f.handleSearch(n)})},r.prototype._transferTabIndex=function(){this.$search.attr("tabindex",this.$selection.attr("tabindex"));this.$selection.attr("tabindex","-1")},r.prototype.createPlaceholder=function(n,t){this.$search.attr("placeholder",t.text)},r.prototype.update=function(n,t){var r=this.$search[0]==document.activeElement,i;this.$search.attr("placeholder","");n.call(this,t);this.$selection.find(".select2-selection__rendered").append(this.$searchContainer);this.resizeSearch();r&&(i=this.$element.find("[data-select2-tag]").length,i?this.$search.focus():this.$search.focus())},r.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var n=this.$search.val();this.trigger("query",{term:n})}this._keyUpPrevented=!1},r.prototype.searchRemoveChoice=function(n,t){this.trigger("unselect",{data:t});this.$search.val(t.text);this.handleSearch()},r.prototype.resizeSearch=function(){var n,t;this.$search.css("width","25px");n="";this.$search.attr("placeholder")!==""?n=this.$selection.find(".select2-selection__rendered").width():(t=this.$search.val().length+1,n=t*.75+"em");this.$search.css("width",n)},r});t.define("select2/selection/eventRelay",["jquery"],function(n){function t(){}return t.prototype.bind=function(t,i,r){var u=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],e=["opening","closing","selecting","unselecting","clearing"];t.call(this,i,r);i.on("*",function(t,i){if(n.inArray(t,f)!==-1){i=i||{};var r=n.Event("select2:"+t,{params:i});(u.$element.trigger(r),n.inArray(t,e)!==-1)&&(i.prevented=r.isDefaultPrevented())}})},t});t.define("select2/translation",["jquery","require"],function(n,t){function i(n){this.dict=n||{}}return i.prototype.all=function(){return this.dict},i.prototype.get=function(n){return this.dict[n]},i.prototype.extend=function(t){this.dict=n.extend({},t.all(),this.dict)},i._cache={},i.loadPath=function(n){if(!(n in i._cache)){var r=t(n);i._cache[n]=r}return new i(i._cache[n])},i});t.define("select2/diacritics",[],function(){return{"Ⓐ":"A","Ａ":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","Ｂ":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","Ｃ":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","Ｄ":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","Ǳ":"DZ","Ǆ":"DZ","ǲ":"Dz","ǅ":"Dz","Ⓔ":"E","Ｅ":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","Ｆ":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","Ｇ":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","Ｈ":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","Ｉ":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","Ｊ":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","Ｋ":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","Ｌ":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","Ǉ":"LJ","ǈ":"Lj","Ⓜ":"M","Ｍ":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","Ｎ":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","Ǌ":"NJ","ǋ":"Nj","Ⓞ":"O","Ｏ":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","Ｐ":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Ｑ":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","Ｒ":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","Ｓ":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","Ｔ":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","Ｕ":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","Ｖ":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","Ｗ":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","Ｘ":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Ｙ":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Ｚ":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","ａ":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","ｂ":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","ｃ":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","ｄ":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","ǳ":"dz","ǆ":"dz","ⓔ":"e","ｅ":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","ｆ":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","ｇ":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","ｈ":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","ｉ":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","ｊ":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","ｋ":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","ｌ":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","ǉ":"lj","ⓜ":"m","ｍ":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","ｎ":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ŉ":"n","ꞑ":"n","ꞥ":"n","ǌ":"nj","ⓞ":"o","ｏ":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","ｐ":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","ｑ":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","ｒ":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","ｓ":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","ｔ":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","ｕ":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","ｖ":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","ｗ":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","ｘ":"x","ẋ":"x","ẍ":"x","ⓨ":"y","ｙ":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","ｚ":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}});t.define("select2/data/base",["../utils"],function(n){function t(){t.__super__.constructor.call(this)}return n.Extend(t,n.Observable),t.prototype.current=function(){throw new Error("The `current` method must be defined in child classes.");},t.prototype.query=function(){throw new Error("The `query` method must be defined in child classes.");},t.prototype.bind=function(){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,i){var r=t.id+"-result-";return r+=n.generateChars(4),r+(i.id!=null?"-"+i.id.toString():"-"+n.generateChars(4))},t});t.define("select2/data/select",["./base","../utils","jquery"],function(n,t,i){function r(n,t){this.$element=n;this.options=t;r.__super__.constructor.call(this)}return t.Extend(r,n),r.prototype.current=function(n){var t=[],r=this;this.$element.find(":selected").each(function(){var n=i(this),u=r.item(n);t.push(u)});n(t)},r.prototype.select=function(n){var t=this,r;if(n.selected=!0,i(n.element).is("option")){n.element.selected=!0;this.$element.trigger("input").trigger("change");return}this.$element.prop("multiple")?this.current(function(r){var f=[],u,e;for(n=[n],n.push.apply(n,r),u=0;u<n.length;u++)e=n[u].id,i.inArray(e,f)===-1&&f.push(e);t.$element.val(f);t.$element.trigger("input").trigger("change")}):(r=n.id,this.$element.val(r),this.$element.trigger("input").trigger("change"))},r.prototype.unselect=function(n){var t=this;if(this.$element.prop("multiple")){if(n.selected=!1,i(n.element).is("option")){n.element.selected=!1;this.$element.trigger("input").trigger("change");return}this.current(function(r){for(var u,f=[],e=0;e<r.length;e++)u=r[e].id,u!==n.id&&i.inArray(u,f)===-1&&f.push(u);t.$element.val(f);t.$element.trigger("input").trigger("change")})}},r.prototype.bind=function(n){var t=this;this.container=n;n.on("select",function(n){t.select(n.data)});n.on("unselect",function(n){t.unselect(n.data)})},r.prototype.destroy=function(){this.$element.find("*").each(function(){t.RemoveData(this)})},r.prototype.query=function(n,t){var r=[],u=this,f=this.$element.children();f.each(function(){var t=i(this),e,f;(t.is("option")||t.is("optgroup"))&&(e=u.item(t),f=u.matches(n,e),f!==null&&r.push(f))});t({results:r})},r.prototype.addOptions=function(n){t.appendMany(this.$element,n)},r.prototype.option=function(n){var r,f,u;return n.children?(r=document.createElement("optgroup"),r.label=n.text):(r=document.createElement("option"),r.textContent!==undefined?r.textContent=n.text:r.innerText=n.text),n.id!==undefined&&(r.value=n.id),n.disabled&&(r.disabled=!0),n.selected&&(r.selected=!0),n.title&&(r.title=n.title),f=i(r),u=this._normalizeItem(n),u.element=r,t.StoreData(r,"data",u),f},r.prototype.item=function(n){var r={},f,e,u,o,s;if(r=t.GetData(n[0],"data"),r!=null)return r;if(n.is("option"))r={id:n.val(),text:n.text(),disabled:n.prop("disabled"),selected:n.prop("selected"),title:n.prop("title")};else if(n.is("optgroup")){for(r={text:n.prop("label"),children:[],title:n.prop("title")},f=n.children("option"),e=[],u=0;u<f.length;u++)o=i(f[u]),s=this.item(o),e.push(s);r.children=e}return r=this._normalizeItem(r),r.element=n[0],t.StoreData(n[0],"data",r),r},r.prototype._normalizeItem=function(n){n!==Object(n)&&(n={id:n,text:n});n=i.extend({},{text:""},n);return n.id!=null&&(n.id=n.id.toString()),n.text!=null&&(n.text=n.text.toString()),n._resultId==null&&n.id&&this.container!=null&&(n._resultId=this.generateResultId(this.container,n)),i.extend({},{selected:!1,disabled:!1},n)},r.prototype.matches=function(n,t){var i=this.options.get("matcher");return i(n,t)},r});t.define("select2/data/array",["./select","../utils","jquery"],function(n,t,i){function r(n,t){this._dataToConvert=t.get("data")||[];r.__super__.constructor.call(this,n,t)}return t.Extend(r,n),r.prototype.bind=function(n,t){r.__super__.bind.call(this,n,t);this.addOptions(this.convertToOptions(this._dataToConvert))},r.prototype.select=function(n){var t=this.$element.find("option").filter(function(t,i){return i.value==n.id.toString()});t.length===0&&(t=this.option(n),this.addOptions(t));r.__super__.select.call(this,n)},r.prototype.convertToOptions=function(n){function a(n){return function(){return i(this).val()==n.id}}for(var r,f,h,c=this,e=this.$element.find("option"),l=e.map(function(){return c.item(i(this)).id}).get(),o=[],u=0;u<n.length;u++){if(r=this._normalizeItem(n[u]),i.inArray(r.id,l)>=0){var s=e.filter(a(r)),v=this.item(s),y=i.extend(!0,{},r,v),p=this.option(y);s.replaceWith(p);continue}f=this.option(r);r.children&&(h=this.convertToOptions(r.children),t.appendMany(f,h));o.push(f)}return o},r});t.define("select2/data/ajax",["./array","../utils","jquery"],function(n,t,i){function r(n,t){this.ajaxOptions=this._applyDefaults(t.get("ajax"));this.ajaxOptions.processResults!=null&&(this.processResults=this.ajaxOptions.processResults);r.__super__.constructor.call(this,n,t)}return t.Extend(r,n),r.prototype._applyDefaults=function(n){var t={data:function(n){return i.extend({},n,{q:n.term})},transport:function(n,t,r){var u=i.ajax(n);return u.then(t),u.fail(r),u}};return i.extend({},t,n,!0)},r.prototype.processResults=function(n){return n},r.prototype.query=function(n,t){function f(){var f=r.transport(r,function(r){var f=u.processResults(r,n);u.options.get("debug")&&window.console&&console.error&&(f&&f.results&&i.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response."));t(f)},function(){"status"in f&&(f.status===0||f.status==="0")||u.trigger("results:message",{message:"errorLoading"})});u._request=f}var u=this,r;this._request!=null&&(i.isFunction(this._request.abort)&&this._request.abort(),this._request=null);r=i.extend({type:"GET"},this.ajaxOptions);typeof r.url=="function"&&(r.url=r.url.call(this.$element,n));typeof r.data=="function"&&(r.data=r.data.call(this.$element,n));this.ajaxOptions.delay&&n.term!=null?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(f,this.ajaxOptions.delay)):f()},r});t.define("select2/data/tags",["jquery"],function(n){function t(t,i,r){var f=r.get("tags"),o=r.get("createTag"),e,u;if(o!==undefined&&(this.createTag=o),e=r.get("insertTag"),e!==undefined&&(this.insertTag=e),t.call(this,i,r),n.isArray(f))for(u=0;u<f.length;u++){var s=f[u],h=this._normalizeItem(s),c=this.option(h);this.$element.append(c)}}return t.prototype.query=function(n,t,i){function u(n,f){for(var o,c,e=n.results,s=0;s<e.length;s++){var h=e[s],l=h.children!=null&&!u({results:h.children},!0),a=(h.text||"").toUpperCase(),v=(t.term||"").toUpperCase(),y=a===v;if(y||l){if(f)return!1;n.data=e;i(n);return}}if(f)return!0;o=r.createTag(t);o!=null&&(c=r.option(o),c.attr("data-select2-tag",!0),r.addOptions([c]),r.insertTag(e,o));n.results=e;i(n)}var r=this;if(this._removeOldTags(),t.term==null||t.page!=null){n.call(this,t,i);return}n.call(this,t,u)},t.prototype.createTag=function(t,i){var r=n.trim(i.term);return r===""?null:{id:r,text:r}},t.prototype.insertTag=function(n,t,i){t.unshift(i)},t.prototype._removeOldTags=function(){var t=this.$element.find("option[data-select2-tag]");t.each(function(){this.selected||n(this).remove()})},t});t.define("select2/data/tokenizer",["jquery"],function(n){function t(n,t,i){var r=i.get("tokenizer");r!==undefined&&(this.tokenizer=r);n.call(this,t,i)}return t.prototype.bind=function(n,t,i){n.call(this,t,i);this.$search=t.dropdown.$search||t.selection.$search||i.find(".select2-search__field")},t.prototype.query=function(t,i,r){function e(t){var i=u._normalizeItem(t),f=u.$element.find("option").filter(function(){return n(this).val()===i.id}),r;f.length||(r=u.option(i),r.attr("data-select2-tag",!0),u._removeOldTags(),u.addOptions([r]));o(i)}function o(n){u.trigger("select",{data:n})}var u=this,f;i.term=i.term||"";f=this.tokenizer(i,this.options,e);f.term!==i.term&&(this.$search.length&&(this.$search.val(f.term),this.$search.trigger("focus")),i.term=f.term);t.call(this,i,r)},t.prototype.tokenizer=function(t,i,r,u){for(var h=r.get("tokenSeparators")||[],e=i.term,f=0,c=this.createTag||function(n){return{id:n.term,text:n.term}},o;f<e.length;){if(o=e[f],n.inArray(o,h)===-1){f++;continue}var l=e.substr(0,f),a=n.extend({},i,{term:l}),s=c(a);if(s==null){f++;continue}u(s);e=e.substr(f+1)||"";f=0}return{term:e}},t});t.define("select2/data/minimumInputLength",[],function(){function n(n,t,i){this.minimumInputLength=i.get("minimumInputLength");n.call(this,t,i)}return n.prototype.query=function(n,t,i){if(t.term=t.term||"",t.term.length<this.minimumInputLength){this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}});return}n.call(this,t,i)},n});t.define("select2/data/maximumInputLength",[],function(){function n(n,t,i){this.maximumInputLength=i.get("maximumInputLength");n.call(this,t,i)}return n.prototype.query=function(n,t,i){if(t.term=t.term||"",this.maximumInputLength>0&&t.term.length>this.maximumInputLength){this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}});return}n.call(this,t,i)},n});t.define("select2/data/maximumSelectionLength",[],function(){function n(n,t,i){this.maximumSelectionLength=i.get("maximumSelectionLength");n.call(this,t,i)}return n.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);t.on("select",function(){r._checkIfMaximumSelected()})},n.prototype.query=function(n,t,i){var r=this;this._checkIfMaximumSelected(function(){n.call(r,t,i)})},n.prototype._checkIfMaximumSelected=function(n,t){var i=this;this.current(function(n){var r=n!=null?n.length:0;if(i.maximumSelectionLength>0&&r>=i.maximumSelectionLength){i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}});return}t&&t()})},n});t.define("select2/dropdown",["jquery","./utils"],function(n,t){function i(n,t){this.$element=n;this.options=t;i.__super__.constructor.call(this)}return t.Extend(i,t.Observable),i.prototype.render=function(){var t=n('<span class="select2-dropdown"><span class="select2-results"><\/span><\/span>');return t.attr("dir",this.options.get("dir")),this.$dropdown=t,t},i.prototype.bind=function(){},i.prototype.position=function(){},i.prototype.destroy=function(){this.$dropdown.remove()},i});t.define("select2/dropdown/search",["jquery","../utils"],function(n){function t(){}return t.prototype.render=function(t){var r=t.call(this),u=typeof CSS!="undefined"&&CSS.supports("(-ms-ime-align:auto)"),f=u?"text":"search",i=n(String.format('<li class="select2-search select2-search--dropdown"><input class="select2-search__field" type="{0}" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /><\/li>',f));return this.$searchContainer=i,this.$search=i.find("input"),r.prepend(i),r},t.prototype.bind=function(t,i,r){var u=this,f=i.id+"-results";t.call(this,i,r);this.$search.on("keydown",function(n){u.trigger("keypress",n);u._keyUpPrevented=n.isDefaultPrevented()});this.$search.on("input",function(){n(this).off("keyup")});this.$search.on("keyup input",function(n){u.handleSearch(n)});i.on("open",function(){u.$search.attr("tabindex",0);u.$search.attr("aria-controls",f);u.$search.trigger("focus");window.setTimeout(function(){u.$search.trigger("focus")},0)});i.on("close",function(){u.$search.attr("tabindex",-1);u.$search.removeAttr("aria-controls");u.$search.removeAttr("aria-activedescendant");u.$search.val("");u.$search.trigger("blur")});i.on("focus",function(){i.isOpen()||u.$search.trigger("focus")});i.on("results:all",function(n){if(n.query.term==null||n.query.term===""){var t=u.showSearch(n);t?u.$searchContainer.removeClass("select2-search--hide"):u.$searchContainer.addClass("select2-search--hide")}});i.on("results:focus",function(n){n.data._resultId?u.$search.attr("aria-activedescendant",n.data._resultId):u.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(){if(!this._keyUpPrevented){var n=this.$search.val();this.trigger("query",{term:n})}this._keyUpPrevented=!1},t.prototype.showSearch=function(){return!0},t});t.define("select2/dropdown/hidePlaceholder",[],function(){function n(n,t,i,r){this.placeholder=this.normalizePlaceholder(i.get("placeholder"));n.call(this,t,i,r)}return n.prototype.append=function(n,t){t.results=this.removePlaceholder(t.results);n.call(this,t)},n.prototype.normalizePlaceholder=function(n,t){return typeof t=="string"&&(t={id:"",text:t}),t},n.prototype.removePlaceholder=function(n,t){for(var u,r=t.slice(0),i=t.length-1;i>=0;i--)u=t[i],this.placeholder.id===u.id&&r.splice(i,1);return r},n});t.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function t(n,t,i,r){this.lastParams={};n.call(this,t,i,r);this.$loadingMore=this.createLoadingMore();this.loading=!1}return t.prototype.append=function(n,t){this.$loadingMore.remove();this.loading=!1;n.call(this,t);this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},t.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);t.on("query",function(n){r.lastParams=n;r.loading=!0});t.on("query:append",function(n){r.lastParams=n;r.loading=!0});this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},t.prototype.loadMoreIfNeeded=function(){var r=n.contains(document.documentElement,this.$loadingMore[0]),t,i;!this.loading&&r&&(t=this.$results.offset().top+this.$results.outerHeight(!1),i=this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1),t+50>=i&&this.loadMore())},t.prototype.loadMore=function(){this.loading=!0;var t=n.extend({},{page:1},this.lastParams);t.page++;this.trigger("query:append",t)},t.prototype.showLoadingMore=function(n,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=n('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"><\/li>'),i=this.options.get("translations").get("loadingMore");return t.html(i(this.lastParams)),t},t});t.define("select2/dropdown/attachBody",["jquery","../utils"],function(n,t){function i(t,i,r){this.$dropdownParent=n(r.get("dropdownParent")||document.body);t.call(this,i,r)}return i.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);t.on("open",function(){r._showDropdown();r._attachPositioningHandler(t);r._bindContainerResultHandlers(t)});t.on("close",function(){r._hideDropdown();r._detachPositioningHandler(t)});this.$dropdownContainer.on("mousedown",function(n){n.stopPropagation()})},i.prototype.destroy=function(n){n.call(this);this.$dropdownContainer.remove()},i.prototype.position=function(n,t,i){t.attr("class",i.attr("class"));t.removeClass("select2");t.addClass("select2-container--open");t.css({position:"absolute",top:-999999});this.$container=i},i.prototype.render=function(t){var i=n("<span><\/span>"),r=t.call(this);return i.append(r),this.$dropdownContainer=i,i},i.prototype._hideDropdown=function(){this.$dropdownContainer.detach()},i.prototype._bindContainerResultHandlers=function(n,t){if(!this._containerResultsHandlersBound){var i=this;t.on("results:all",function(){i._positionDropdown();i._resizeDropdown()});t.on("results:append",function(){i._positionDropdown();i._resizeDropdown()});t.on("results:message",function(){i._positionDropdown();i._resizeDropdown()});t.on("select",function(){i._positionDropdown();i._resizeDropdown()});t.on("unselect",function(){i._positionDropdown();i._resizeDropdown()});this._containerResultsHandlersBound=!0}},i.prototype._attachPositioningHandler=function(i,r){var u=this,f="scroll.select2."+r.id,o="resize.select2."+r.id,s="orientationchange.select2."+r.id,e=this.$container.parents().filter(t.hasScroll);e.each(function(){t.StoreData(this,"select2-scroll-position",{x:n(this).scrollLeft(),y:n(this).scrollTop()})});e.on(f,function(){var i=t.GetData(this,"select2-scroll-position");n(this).scrollTop(i.y)});n(window).on(f+" "+o+" "+s,function(){u._positionDropdown();u._resizeDropdown()})},i.prototype._detachPositioningHandler=function(i,r){var u="scroll.select2."+r.id,f="resize.select2."+r.id,e="orientationchange.select2."+r.id,o=this.$container.parents().filter(t.hasScroll);o.off(u);n(window).off(u+" "+f+" "+e)},i.prototype._positionDropdown=function(){var a=n(window),h=this.$dropdown.hasClass("select2-dropdown--above"),g=this.$dropdown.hasClass("select2-dropdown--below"),i=null,t=this.$container.offset(),r,b,d,c,f,o,u,l,s;t.bottom=t.top+this.$container.outerHeight(!1);r={height:this.$container.outerHeight(!1)};r.top=t.top;r.bottom=t.top+r.height;var v={height:this.$dropdown.outerHeight(!1)},y={top:a.scrollTop(),bottom:a.scrollTop()+a.height()},p=y.top<t.top-v.height,e=y.bottom>t.bottom+v.height,k=this.$container.outerWidth(),w=!1;if(this.$element.data("select2")&&this.$element.data("select2").$results&&(w=this.$element.data("select2").$results.children(".loading-results").length>0),b=!w&&this.$dropdown.outerWidth()>n("body").outerWidth(),d=!b&&!w&&t.left+this.$dropdown.outerWidth()>n("body").outerWidth()||t.left<0,d?(c=t.left-this.$dropdown.outerWidth()+k,c<0&&(c=0),u={top:r.bottom,left:c,right:"unset"}):u={left:t.left,top:r.bottom,right:"unset"},f=this.$dropdownParent,f.css("position")==="static"&&(f=f.offsetParent()),o={top:0,left:0},(n.contains(document.body,f[0])||f[0].isConnected)&&(o=f.offset()),u.top-=o.top,u.left-=o.left,h||g||(i="below"),e||!p||h?!p&&e&&h&&(i="below"):i="above",(i=="above"||h&&i!=="below")&&(u.top=r.top-o.top-v.height),i!=null&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),b&&(this.$dropdownContainer.addClass("rql-dropdown-width"),u={top:r.bottom,right:n("body").outerWidth()-(t.left+k),left:"unset",width:"60%"}),n("body").hasClass("modal-open")&&!p&&!e&&(l=this.$dropdown.find("ul.select2-results__options"),l.length>0)){for(s=l.height();s>200&&!e;)s-=10,e=y.bottom>t.bottom+s+20;l.css("height",s)}this.$dropdownContainer.css(u)},i.prototype._resizeDropdown=function(){var n={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(n.minWidth=n.width,n.position="relative",n.width="auto");this.$dropdown.css(n)},i.prototype._showDropdown=function(){this.$dropdownContainer.appendTo(this.$dropdownParent);this._positionDropdown();this._resizeDropdown()},i});t.define("select2/dropdown/minimumResultsForSearch",[],function(){function n(t){for(var u,i=0,r=0;r<t.length;r++)u=t[r],u.children?i+=n(u.children):i++;return i}function t(n,t,i,r){this.minimumResultsForSearch=i.get("minimumResultsForSearch");this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=Infinity);n.call(this,t,i,r)}return t.prototype.showSearch=function(t,i){return n(i.data.results)<this.minimumResultsForSearch?!1:t.call(this,i)},t});t.define("select2/dropdown/selectOnClose",["../utils"],function(n){function t(){}return t.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);t.on("close",function(n){r._handleSelectOnClose(n)})},t.prototype._handleSelectOnClose=function(t,i){var u,f,r;i&&i.originalSelect2Event!=null&&(u=i.originalSelect2Event,u._type==="select"||u._type==="unselect")||(f=this.getHighlightedResults(),f.length<1)||(r=n.GetData(f[0],"data"),r.element!=null&&r.element.selected||r.element==null&&r.selected)||this.trigger("select",{data:r})},t});t.define("select2/dropdown/closeOnSelect",[],function(){function n(){}return n.prototype.bind=function(n,t,i){var r=this;n.call(this,t,i);t.on("select",function(n){r._selectTriggered(n)});t.on("unselect",function(n){r._selectTriggered(n)})},n.prototype._selectTriggered=function(n,t){var i=t.originalEvent;i&&(i.ctrlKey||i.metaKey)||this.trigger("close",{originalEvent:i,originalSelect2Event:t})},n});t.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(n){var t=n.input.length-n.maximum,i="Please delete "+t+" character";return t!=1&&(i+="s"),i},inputTooShort:function(n){var t=n.minimum-n.input.length;return"Please enter "+t+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(n){var t="You can only select "+n.maximum+" item";return n.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}});t.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(n,t,i,r,u,f,e,o,s,h,c,l,a,v,y,p,w,b,k,d,g,nt,tt,it,rt,ut,ft,et){function ot(){this.reset()}ot.prototype.apply=function(c){var ht,ct,lt,at,vt,l,ot,st;for(c=n.extend(!0,{},this.defaults,c),c.dataAdapter==null&&(c.dataAdapter=c.ajax!=null?y:c.data!=null?v:a,c.minimumInputLength>0&&(c.dataAdapter=h.Decorate(c.dataAdapter,b)),c.maximumInputLength>0&&(c.dataAdapter=h.Decorate(c.dataAdapter,k)),c.maximumSelectionLength>0&&(c.dataAdapter=h.Decorate(c.dataAdapter,d)),c.tags&&(c.dataAdapter=h.Decorate(c.dataAdapter,p)),(c.tokenSeparators!=null||c.tokenizer!=null)&&(c.dataAdapter=h.Decorate(c.dataAdapter,w)),c.query!=null&&(ht=t(c.amdBase+"compat/query"),c.dataAdapter=h.Decorate(c.dataAdapter,ht)),c.initSelection!=null&&(ct=t(c.amdBase+"compat/initSelection"),c.dataAdapter=h.Decorate(c.dataAdapter,ct))),c.resultsAdapter==null&&(c.resultsAdapter=i,c.ajax!=null&&(c.resultsAdapter=h.Decorate(c.resultsAdapter,it)),c.placeholder!=null&&(c.resultsAdapter=h.Decorate(c.resultsAdapter,tt)),c.selectOnClose&&(c.resultsAdapter=h.Decorate(c.resultsAdapter,ft))),c.dropdownAdapter==null&&(c.multiple?c.dropdownAdapter=g:(lt=h.Decorate(g,nt),c.dropdownAdapter=lt),c.minimumResultsForSearch!==0&&(c.dropdownAdapter=h.Decorate(c.dropdownAdapter,ut)),c.closeOnSelect&&(c.dropdownAdapter=h.Decorate(c.dropdownAdapter,et)),(c.dropdownCssClass!=null||c.dropdownCss!=null||c.adaptDropdownCssClass!=null)&&(at=t(c.amdBase+"compat/dropdownCss"),c.dropdownAdapter=h.Decorate(c.dropdownAdapter,at)),c.dropdownAdapter=h.Decorate(c.dropdownAdapter,rt)),c.selectionAdapter==null&&(c.selectionAdapter=c.multiple?u:r,c.placeholder!=null&&(c.selectionAdapter=h.Decorate(c.selectionAdapter,f)),c.allowClear&&(c.selectionAdapter=h.Decorate(c.selectionAdapter,e)),c.multiple&&(c.selectionAdapter=h.Decorate(c.selectionAdapter,o)),(c.containerCssClass!=null||c.containerCss!=null||c.adaptContainerCssClass!=null)&&(vt=t(c.amdBase+"compat/containerCss"),c.selectionAdapter=h.Decorate(c.selectionAdapter,vt)),c.selectionAdapter=h.Decorate(c.selectionAdapter,s)),c.language=this._resolveLanguage(c.language),c.language.push("en"),l=[],ot=0;ot<c.language.length;ot++)st=c.language[ot],l.indexOf(st)===-1&&l.push(st);return c.language=l,c.translations=this._processTranslations(c.language,c.debug),c};ot.prototype.reset=function(){function i(n){function t(n){return l[n]||n}return n.replace(/[^\u0000-\u007E]/g,t)}function t(r,u){var f,e,o,s,h,c;if(n.trim(r.term)==="")return u;if(u.children&&u.children.length>0){for(f=n.extend(!0,{},u),e=u.children.length-1;e>=0;e--)o=u.children[e],s=t(r,o),s==null&&f.children.splice(e,1);return f.children.length>0?f:t(r,f)}return(h=i(u.text).toUpperCase(),c=i(r.term).toUpperCase(),h.indexOf(c)>-1)?u:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:h.escapeMarkup,language:{},matcher:t,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(n){return n},templateResult:function(n){return n.text},templateSelection:function(n){return n.text},theme:"default",width:"resolve"}};ot.prototype.applyFromElement=function(n,t){var i=n.language,r=this.defaults.language,u=t.prop("lang"),f=t.closest("[lang]").prop("lang"),e=Array.prototype.concat.call(this._resolveLanguage(u),this._resolveLanguage(i),this._resolveLanguage(r),this._resolveLanguage(f));return n.language=e,n};ot.prototype._resolveLanguage=function(t){var r,u,i,f,e;if(!t)return[];if(n.isEmptyObject(t))return[];if(n.isPlainObject(t))return[t];for(r=n.isArray(t)?t:[t],u=[],i=0;i<r.length;i++)u.push(r[i]),typeof r[i]=="string"&&r[i].indexOf("-")>0&&(f=r[i].split("-"),e=f[0],u.push(e));return u};ot.prototype._processTranslations=function(t,i){for(var u,r,e=new c,f=0;f<t.length;f++){if(u=new c,r=t[f],typeof r=="string")try{u=c.loadPath(r)}catch(o){try{r=this.defaults.amdLanguageBase+r;u=c.loadPath(r)}catch(s){i&&window.console&&console.warn&&console.warn('Select2: The language file for "'+r+'" could not be automatically loaded. A fallback will be used instead.')}}else u=n.isPlainObject(r)?new c(r):r;e.extend(u)}return e};ot.prototype.set=function(t,i){var f=n.camelCase(t),r={},u;r[f]=i;u=h._convertData(r);n.extend(!0,this.defaults,u)};return new ot});t.define("select2/options",["require","jquery","./defaults","./utils"],function(n,t,i,r){function u(t,u){if(this.options=t,u!=null&&this.fromElement(u),u!=null&&(this.options=i.applyFromElement(this.options,u)),this.options=i.apply(this.options),u&&u.is("input")){var f=n(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=r.Decorate(this.options.dataAdapter,f)}}return u.prototype.fromElement=function(n){function l(n,t){return t.toUpperCase()}var c=["select2"],f,e,s,o,u,i;for(this.options.multiple==null&&(this.options.multiple=n.prop("multiple")),this.options.disabled==null&&(this.options.disabled=n.prop("disabled")),this.options.dir==null&&(this.options.dir=n.prop("dir")?n.prop("dir"):n.closest("[dir]").prop("dir")?n.closest("[dir]").prop("dir"):"ltr"),n.prop("disabled",this.options.disabled),n.prop("multiple",this.options.multiple),r.GetData(n[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),r.StoreData(n[0],"data",r.GetData(n[0],"select2Tags")),r.StoreData(n[0],"tags",!0)),r.GetData(n[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),n.attr("ajax--url",r.GetData(n[0],"ajaxUrl")),r.StoreData(n[0],"ajax-Url",r.GetData(n[0],"ajaxUrl"))),f={},e=0;e<n[0].attributes.length;e++)if(s=n[0].attributes[e].name,o="data-",s.substr(0,o.length)==o){var h=s.substring(o.length),a=r.GetData(n[0],h),v=h.replace(/-([a-z])/g,l);f[v]=a}t.fn.jquery&&t.fn.jquery.substr(0,2)=="1."&&n[0].dataset&&(f=t.extend(!0,{},n[0].dataset,f));u=t.extend(!0,{},r.GetData(n[0]),f);u=r._convertData(u);for(i in u)t.inArray(i,c)>-1||(t.isPlainObject(this.options[i])?t.extend(this.options[i],u[i]):this.options[i]=u[i]);return this},u.prototype.get=function(n){return this.options[n]},u.prototype.set=function(n,t){this.options[n]=t},u});t.define("select2/core",["jquery","./options","./utils","./keys"],function(n,t,i,r){var u=function(n,r){var e,o,f,s,h,c,l;i.GetData(n[0],"select2")!=null&&i.GetData(n[0],"select2").destroy();this.$element=n;this.id=this._generateId(n);r=r||{};this.options=new t(r,n);u.__super__.constructor.call(this);e=n.attr("tabindex")||0;i.StoreData(n[0],"old-tabindex",e);n.attr("tabindex","-1");o=this.options.get("dataAdapter");this.dataAdapter=new o(n,this.options);f=this.render();this._placeContainer(f);s=this.options.get("selectionAdapter");this.selection=new s(n,this.options);this.$selection=this.selection.render();this.selection.position(this.$selection,f);h=this.options.get("dropdownAdapter");this.dropdown=new h(n,this.options);this.$dropdown=this.dropdown.render();this.dropdown.position(this.$dropdown,f);c=this.options.get("resultsAdapter");this.results=new c(n,this.options,this.dataAdapter);this.$results=this.results.render();this.results.position(this.$results,this.$dropdown);l=this;this._bindAdapters();this._registerDomEvents();this._registerDataEvents();this._registerSelectionEvents();this._registerDropdownEvents();this._registerResultsEvents();this._registerEvents();this.dataAdapter.current(function(n){l.trigger("selection:update",{data:n})});n.addClass("select2-hidden-accessible");n.attr("aria-hidden","true");this._syncAttributes();i.StoreData(n[0],"select2",this);n.data("select2",this)};return i.Extend(u,i.Observable),u.prototype._generateId=function(n){var t="";return t=n.attr("id")!=null?n.attr("id"):n.attr("name")!=null?n.attr("name")+"-"+i.generateChars(2):i.generateChars(4),t=t.replace(/(:|\.|\[|\]|,)/g,""),"select2-"+t},u.prototype._placeContainer=function(n){n.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));t!=null&&n.css("width",t)},u.prototype._resolveWidth=function(n,t){var u,f,e,o,i,s,h,r,c;if(t=="resolve")return(u=this._resolveWidth(n,"style"),u!=null)?u:this._resolveWidth(n,"element");if(t=="element")return(f=n.outerWidth(!1),f<=0)?"auto":f+"px";if(t=="style"){if(e=n.attr("style"),typeof e!="string")return null;for(o=e.split(";"),i=0,s=o.length;i<s;i=i+1)if(h=o[i].replace(/\s/g,""),r=h.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i),r!==null&&r.length>=1)return r[1];return null}return t=="computedstyle"?(c=window.getComputedStyle(n[0]),c.width):t},u.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container);this.selection.bind(this,this.$container);this.dropdown.bind(this,this.$container);this.results.bind(this,this.$container)},u.prototype._registerDomEvents=function(){var n=this,t;this.$element.on("change.select2",function(){n.dataAdapter.current(function(t){n.trigger("selection:update",{data:t})})});this.$element.on("focus.select2",function(t){n.trigger("focus",t)});this._syncA=i.bind(this._syncAttributes,this);this._syncS=i.bind(this._syncSubtree,this);this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;t!=null?(this._observer=new t(function(t){n._syncA();n._syncS(null,t)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",n._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",n._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",n._syncS,!1))},u.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on("*",function(t,i){n.trigger(t,i)})},u.prototype._registerSelectionEvents=function(){var t=this,i=["toggle","focus"];this.selection.on("toggle",function(){t.toggleDropdown()});this.selection.on("focus",function(n){t.focus(n)});this.selection.on("*",function(r,u){n.inArray(r,i)===-1&&t.trigger(r,u)})},u.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on("*",function(t,i){n.trigger(t,i)})},u.prototype._registerResultsEvents=function(){var n=this;this.results.on("*",function(t,i){n.trigger(t,i)})},u.prototype._registerEvents=function(){var n=this;this.on("open",function(){n.$container.addClass("select2-container--open")});this.on("close",function(){n.$container.removeClass("select2-container--open")});this.on("enable",function(){n.$container.removeClass("select2-container--disabled")});this.on("disable",function(){n.$container.addClass("select2-container--disabled")});this.on("blur",function(){n.$container.removeClass("select2-container--focus")});this.on("query",function(t){n.isOpen()||n.trigger("open",{});this.dataAdapter.query(t,function(i){n.trigger("results:all",{data:i,query:t})})});this.on("query:append",function(t){this.dataAdapter.query(t,function(i){n.trigger("results:append",{data:i,query:t})})});this.on("keypress",function(t){var i=t.which;n.isOpen()?i===r.ESC||i===r.TAB||i===r.UP&&t.altKey?(n.close(t),t.preventDefault()):i===r.ENTER?(n.trigger("results:select",{}),t.preventDefault()):i===r.SPACE&&t.ctrlKey?(n.trigger("results:toggle",{}),t.preventDefault()):i===r.UP?(n.trigger("results:previous",{}),t.preventDefault()):i===r.DOWN&&(n.trigger("results:next",{}),t.preventDefault()):(i===r.ENTER||i===r.SPACE||i===r.DOWN&&t.altKey)&&(n.open(),t.preventDefault())})},u.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled"));this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},u.prototype._isChangeMutation=function(t,i){var r=!1,e=this,u,f;if(!t||!t.target||t.target.nodeName==="OPTION"||t.target.nodeName==="OPTGROUP"){if(i)if(i.addedNodes&&i.addedNodes.length>0)for(u=0;u<i.addedNodes.length;u++)f=i.addedNodes[u],f.selected&&(r=!0);else i.removedNodes&&i.removedNodes.length>0?r=!0:n.isArray(i)&&n.each(i,function(n,t){if(e._isChangeMutation(n,t))return r=!0,!1});else r=!0;return r}},u.prototype._syncSubtree=function(n,t){var i=this._isChangeMutation(n,t),r=this;i&&this.dataAdapter.current(function(n){r.trigger("selection:update",{data:n})})},u.prototype.trigger=function(n,t){var r=u.__super__.trigger,f={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"},e,i;if(t===undefined&&(t={}),n in f&&(e=f[n],i={prevented:!1,name:n,args:t},r.call(this,e,i),i.prevented)){t.prevented=!0;return}r.call(this,n,t)},u.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},u.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},u.prototype.close=function(n){this.isOpen()&&this.trigger("close",{originalEvent:n})},u.prototype.isEnabled=function(){return!this.isDisabled()},u.prototype.isDisabled=function(){return this.options.get("disabled")},u.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},u.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},u.prototype.focus=function(){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},u.prototype.enable=function(n){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.');(n==null||n.length===0)&&(n=[!0]);var t=!n[0];this.$element.prop("disabled",t)},u.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var n=[];return this.dataAdapter.current(function(t){n=t}),n},u.prototype.val=function(t){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),t==null||t.length===0)return this.$element.val();var i=t[0];n.isArray(i)&&(i=n.map(i,function(n){return n.toString()}));this.$element.val(i).trigger("input").trigger("change")},u.prototype.destroy=function(){this.$container.remove();this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA);this._observer!=null?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1));this._syncA=null;this._syncS=null;this.$element.off(".select2");this.$element.attr("tabindex",i.GetData(this.$element[0],"old-tabindex"));this.$element.removeClass("select2-hidden-accessible");this.$element.attr("aria-hidden","false");i.RemoveData(this.$element[0]);this.$element.removeData("select2");this.dataAdapter.destroy();this.selection.destroy();this.dropdown.destroy();this.results.destroy();this.dataAdapter=null;this.selection=null;this.dropdown=null;this.results=null},u.prototype.render=function(){var t=n('<span class="select2 select2-container"><span class="selection"><\/span><span class="dropdown-wrapper" aria-hidden="true"><\/span><\/span>');return t.attr("dir",this.options.get("dir")),this.$container=t,this.$container.addClass("select2-container--"+this.options.get("theme")),i.StoreData(t[0],"element",this.$element),t},u});t.define("select2/compat/utils",["jquery"],function(n){function t(t,i,r){var u,f=[],e;u=n.trim(t.attr("class"));u&&(u=""+u,n(u.split(/\s+/)).each(function(){this.indexOf("select2-")===0&&f.push(this)}));u=n.trim(i.attr("class"));u&&(u=""+u,n(u.split(/\s+/)).each(function(){this.indexOf("select2-")!==0&&(e=r(this),e!=null&&f.push(e))}));t.attr("class",f.join(" "))}return{syncCssClasses:t}});t.define("select2/compat/containerCss",["jquery","./utils"],function(n,t){function r(){return null}function i(){}return i.prototype.render=function(i){var o=i.call(this),u=this.options.get("containerCssClass")||"",f,s,e;return n.isFunction(u)&&(u=u(this.$element)),f=this.options.get("adaptContainerCssClass"),f=f||r,u.indexOf(":all:")!==-1&&(u=u.replace(":all:",""),s=f,f=function(n){var t=s(n);return t!=null?t+" "+n:n}),e=this.options.get("containerCss")||{},n.isFunction(e)&&(e=e(this.$element)),t.syncCssClasses(o,this.$element,f),o.css(e),o.addClass(u),o},i});t.define("select2/compat/dropdownCss",["jquery","./utils"],function(n,t){function r(){return null}function i(){}return i.prototype.render=function(i){var o=i.call(this),u=this.options.get("dropdownCssClass")||"",f,s,e;return n.isFunction(u)&&(u=u(this.$element)),f=this.options.get("adaptDropdownCssClass"),f=f||r,u.indexOf(":all:")!==-1&&(u=u.replace(":all:",""),s=f,f=function(n){var t=s(n);return t!=null?t+" "+n:n}),e=this.options.get("dropdownCss")||{},n.isFunction(e)&&(e=e(this.$element)),t.syncCssClasses(o,this.$element,f),o.css(e),o.addClass(u),o},i});t.define("select2/compat/initSelection",["jquery"],function(n){function t(n,t,i){i.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2");this.initSelection=i.get("initSelection");this._isInitialized=!1;n.call(this,t,i)}return t.prototype.current=function(t,i){var r=this;if(this._isInitialized){t.call(this,i);return}this.initSelection.call(null,this.$element,function(t){r._isInitialized=!0;n.isArray(t)||(t=[t]);i(t)})},t});t.define("select2/compat/inputData",["jquery","../utils"],function(n,t){function i(n,t,i){this._currentData=[];this._valueSeparator=i.get("valueSeparator")||",";t.prop("type")==="hidden"&&i.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead.");n.call(this,t,i)}return i.prototype.current=function(t,i){function f(t,i){var r=[];return t.selected||n.inArray(t.id,i)!==-1?(t.selected=!0,r.push(t)):t.selected=!1,t.children&&r.push.apply(r,f(t.children,i)),r}for(var e,r=[],u=0;u<this._currentData.length;u++)e=this._currentData[u],r.push.apply(r,f(e,this.$element.val().split(this._valueSeparator)));i(r)},i.prototype.select=function(t,i){if(this.options.get("multiple")){var r=this.$element.val();r+=this._valueSeparator+i.id;this.$element.val(r);this.$element.trigger("input").trigger("change")}else this.current(function(t){n.map(t,function(n){n.selected=!1})}),this.$element.val(i.id),this.$element.trigger("input").trigger("change")},i.prototype.unselect=function(n,t){var i=this;t.selected=!1;this.current(function(n){for(var u,f=[],r=0;r<n.length;r++)(u=n[r],t.id!=u.id)&&f.push(u.id);i.$element.val(f.join(i._valueSeparator));i.$element.trigger("input").trigger("change")})},i.prototype.query=function(n,t,i){for(var e,u,f=[],r=0;r<this._currentData.length;r++)e=this._currentData[r],u=this.matches(t,e),u!==null&&f.push(u);i({results:f})},i.prototype.addOptions=function(i,r){var u=n.map(r,function(n){return t.GetData(n[0],"data")});this._currentData.push.apply(this._currentData,u)},i});t.define("select2/compat/matcher",["jquery"],function(n){function t(t){function i(i,r){var u=n.extend(!0,{},r),f,e,o;if(i.term==null||n.trim(i.term)==="")return u;if(r.children){for(f=r.children.length-1;f>=0;f--)e=r.children[f],o=t(i.term,e.text,e),o||u.children.splice(f,1);if(u.children.length>0)return u}return t(i.term,r.text,r)?u:null}return i}return t});t.define("select2/compat/query",[],function(){function n(n,t,i){i.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2.");n.call(this,t,i)}return n.prototype.query=function(n,t,i){t.callback=i;var r=this.options.get("query");r.call(null,t)},n});t.define("select2/dropdown/attachContainer",[],function(){function n(n,t,i){n.call(this,t,i)}return n.prototype.position=function(n,t,i){var r=i.find(".dropdown-wrapper");r.append(t);t.addClass("select2-dropdown--below");i.addClass("select2-container--below")},n});t.define("select2/dropdown/stopPropagation",[],function(){function n(){}return n.prototype.bind=function(n,t,i){n.call(this,t,i);this.$dropdown.on("blur change click dblclick focus focusin focusout input keydown keyup keypress mousedown mouseenter mouseleave mousemove mouseover mouseup search touchend touchstart",function(n){n.stopPropagation()})},n});t.define("select2/selection/stopPropagation",[],function(){function n(){}return n.prototype.bind=function(n,t,i){n.call(this,t,i);this.$selection.on("blur change click dblclick focus focusin focusout input keydown keyup keypress mousedown mouseenter mouseleave mousemove mouseover mouseup search touchend touchstart",function(n){n.stopPropagation()})},n});
/*!
 * jQuery Mousewheel 3.1.13
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * http://jquery.org/license
 */
return function(i){typeof t.define=="function"&&t.define.amd?t.define("jquery-mousewheel",["jquery"],i):typeof exports=="object"?module.exports=i:i(n)}(function(n){function e(r){var f=r||window.event,w=h.call(arguments,1),l=0,o=0,e=0,a=0,b=0,k=0,v,y,p;if(r=n.event.fix(f),r.type="mousewheel","detail"in f&&(e=f.detail*-1),"wheelDelta"in f&&(e=f.wheelDelta),"wheelDeltaY"in f&&(e=f.wheelDeltaY),"wheelDeltaX"in f&&(o=f.wheelDeltaX*-1),"axis"in f&&f.axis===f.HORIZONTAL_AXIS&&(o=e*-1,e=0),l=e===0?o:e,"deltaY"in f&&(e=f.deltaY*-1,l=e),"deltaX"in f&&(o=f.deltaX,e===0&&(l=o*-1)),e!==0||o!==0)return f.deltaMode===1?(v=n.data(this,"mousewheel-line-height"),l*=v,e*=v,o*=v):f.deltaMode===2&&(y=n.data(this,"mousewheel-page-height"),l*=y,e*=y,o*=y),a=Math.max(Math.abs(e),Math.abs(o)),(!t||a<t)&&(t=a,s(f,a)&&(t/=40)),s(f,a)&&(l/=40,o/=40,e/=40),l=Math[l>=1?"floor":"ceil"](l/t),o=Math[o>=1?"floor":"ceil"](o/t),e=Math[e>=1?"floor":"ceil"](e/t),i.settings.normalizeOffset&&this.getBoundingClientRect&&(p=this.getBoundingClientRect(),b=r.clientX-p.left,k=r.clientY-p.top),r.deltaX=o,r.deltaY=e,r.deltaFactor=t,r.offsetX=b,r.offsetY=k,r.deltaMode=0,w.unshift(r,l,o,e),u&&clearTimeout(u),u=setTimeout(c,200),(n.event.dispatch||n.event.handle).apply(this,w)}function c(){t=null}function s(n,t){return i.settings.adjustOldDeltas&&n.type==="mousewheel"&&t%120==0}var o=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],r="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],h=Array.prototype.slice,u,t,f,i;if(n.event.fixHooks)for(f=o.length;f;)n.event.fixHooks[o[--f]]=n.event.mouseHooks;i=n.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var t=r.length;t;)this.addEventListener(r[--t],e,!1);else this.onmousewheel=e;n.data(this,"mousewheel-line-height",i.getLineHeight(this));n.data(this,"mousewheel-page-height",i.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var t=r.length;t;)this.removeEventListener(r[--t],e,!1);else this.onmousewheel=null;n.removeData(this,"mousewheel-line-height");n.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var r=n(t),i=r["offsetParent"in n.fn?"offsetParent":"parent"]();return i.length||(i=n("body")),parseInt(i.css("fontSize"),10)||parseInt(r.css("fontSize"),10)||16},getPageHeight:function(t){return n(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};n.fn.extend({mousewheel:function(n){return n?this.bind("mousewheel",n):this.trigger("mousewheel")},unmousewheel:function(n){return this.unbind("mousewheel",n)}})}),t.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(n,t,i,r,u){if(n.fn.select2==null){var f=["open","close","destroy"];n.fn.select2=function(t){if(t=t||{},typeof t=="object")return this.each(function(){var r=n.extend(!0,{},t),u=new i(n(this),r)}),this;if(typeof t=="string"){var r,e=Array.prototype.slice.call(arguments,1);return(this.each(function(){var n=u.GetData(this,"select2");n==null&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2.");r=n[t].apply(n,e)}),n.inArray(t,f)>-1)?this:r}throw new Error("Invalid arguments for Select2: "+t);}}return n.fn.select2.defaults==null&&(n.fn.select2.defaults=r),i}),{define:t.define,require:t.require}}(),i=t.require("jquery.select2");return n.fn.select2.amd=t,i});
(function (window) {
    "use strict";
    var log = Math.log;
    var LN2 = Math.LN2;
    var clz32 = Math.clz32 || function (x) { return 31 - (log(x >>> 0) / LN2 | 0) | 0; };
    var fromCharCode = String.fromCharCode;
    var originalAtob = atob;
    var originalBtoa = btoa;
    function btoaReplacer(nonAsciiChars) {
        // make the UTF string into a binary UTF-8 encoded string
        var point = nonAsciiChars.charCodeAt(0);
        if (point >= 0xD800 && point <= 0xDBFF) {
            var nextcode = nonAsciiChars.charCodeAt(1);
            if (nextcode !== nextcode) // NaN because string is 1 code point long
                return fromCharCode(0xef/*11101111*/, 0xbf/*10111111*/, 0xbd/*10111101*/);
            // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
            if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) {
                point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000;
                if (point > 0xffff)
                    return fromCharCode(
						(0x1e/*0b11110*/ << 3) | (point >>> 18),
						(0x2/*0b10*/ << 6) | ((point >>> 12) & 0x3f/*0b00111111*/),
						(0x2/*0b10*/ << 6) | ((point >>> 6) & 0x3f/*0b00111111*/),
						(0x2/*0b10*/ << 6) | (point & 0x3f/*0b00111111*/)
					);
            } else return fromCharCode(0xef, 0xbf, 0xbd);
        }
        if (point <= 0x007f) return inputString;
        else if (point <= 0x07ff) {
            return fromCharCode((0x6 << 5) | (point >>> 6), (0x2 << 6) | (point & 0x3f));
        } else return fromCharCode(
			(0xe/*0b1110*/ << 4) | (point >>> 12),
			(0x2/*0b10*/ << 6) | ((point >>> 6) & 0x3f/*0b00111111*/),
			(0x2/*0b10*/ << 6) | (point & 0x3f/*0b00111111*/)
		);
    }
    window["btoaUTF8"] = function (inputString, BOMit) {
        return originalBtoa((BOMit ? "\xEF\xBB\xBF" : "") + inputString.replace(
			/[\x80-\uD7ff\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g, btoaReplacer
		));
    }
    //////////////////////////////////////////////////////////////////////////////////////
    function atobReplacer(encoded) {
        var codePoint = encoded.charCodeAt(0) << 24;
        var leadingOnes = clz32(~codePoint);
        var endPos = 0, stringLen = encoded.length;
        var result = "";
        if (leadingOnes < 5 && stringLen >= leadingOnes) {
            codePoint = (codePoint << leadingOnes) >>> (24 + leadingOnes);
            for (endPos = 1; endPos < leadingOnes; ++endPos)
                codePoint = (codePoint << 6) | (encoded.charCodeAt(endPos) & 0x3f/*0b00111111*/);
            if (codePoint <= 0xFFFF) { // BMP code point
                result += fromCharCode(codePoint);
            } else if (codePoint <= 0x10FFFF) {
                // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
                codePoint -= 0x10000;
                result += fromCharCode(
                    (codePoint >> 10) + 0xD800,  // highSurrogate
                    (codePoint & 0x3ff) + 0xDC00 // lowSurrogate
                );
            } else endPos = 0; // to fill it in with INVALIDs
        }
        for (; endPos < stringLen; ++endPos) result += "\ufffd"; // replacement character
        return result;
    }
    window["atobUTF8"] = function (inputString, keepBOM) {
        if (!keepBOM && inputString.substring(0, 3) === "\xEF\xBB\xBF")
            inputString = inputString.substring(3); // eradicate UTF-8 BOM
        // 0xc0 => 0b11000000; 0xff => 0b11111111; 0xc0-0xff => 0b11xxxxxx
        // 0x80 => 0b10000000; 0xbf => 0b10111111; 0x80-0xbf => 0b10xxxxxx
        return originalAtob(inputString).replace(/[\xc0-\xff][\x80-\xbf]*/g, atobReplacer);
    };
})(typeof global == "" + void 0 ? typeof self == "" + void 0 ? this : self : global);

(function(n,t){typeof exports=="object"&&typeof module!="undefined"?t(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],t):t(n.bootstrap={},n.jQuery)})(this,function(n,t){"use strict";function at(n,t){for(var i,r=0;r<t.length;r++)i=t[r],i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}function f(n,t,i){return t&&at(n.prototype,t),i&&at(n,i),n}function ai(n,t,i){return t in n?Object.defineProperty(n,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[t]=i,n}function r(n){for(var i,r,t=1;t<arguments.length;t++)i=arguments[t]!=null?arguments[t]:{},r=Object.keys(i),typeof Object.getOwnPropertySymbols=="function"&&(r=r.concat(Object.getOwnPropertySymbols(i).filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable}))),r.forEach(function(t){ai(n,t,i[t])});return n}function vi(n,t){n.prototype=Object.create(t.prototype);n.prototype.constructor=n;n.__proto__=t}function ki(n){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1;n()}))}}function di(n){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1;n()},yt))}}function bt(n){return n&&{}.toString.call(n)==="[object Function]"}function s(n,t){if(n.nodeType!==1)return[];var i=getComputedStyle(n,null);return t?i[t]:i}function tt(n){return n.nodeName==="HTML"?n:n.parentNode||n.host}function v(n){if(!n)return document.body;switch(n.nodeName){case"HTML":case"BODY":return n.ownerDocument.body;case"#document":return n.body}var t=s(n),i=t.overflow,r=t.overflowX,u=t.overflowY;return/(auto|scroll|overlay)/.test(i+u+r)?n:v(tt(n))}function h(n){return n===11?it:n===10?rt:it||rt}function c(n){var r,t,i;if(!n)return document.documentElement;for(r=h(10)?document.body:null,t=n.offsetParent;t===r&&n.nextElementSibling;)t=(n=n.nextElementSibling).offsetParent;return(i=t&&t.nodeName,!i||i==="BODY"||i==="HTML")?n?n.ownerDocument.documentElement:document.documentElement:["TD","TABLE"].indexOf(t.nodeName)!==-1&&s(t,"position")==="static"?c(t):t}function gi(n){var t=n.nodeName;return t==="BODY"?!1:t==="HTML"||c(n.firstElementChild)===n}function ut(n){return n.parentNode!==null?ut(n.parentNode):n}function b(n,t){var i,u;if(!n||!n.nodeType||!t||!t.nodeType)return document.documentElement;var f=n.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,e=f?n:t,o=f?t:n,r=document.createRange();return(r.setStart(e,0),r.setEnd(o,0),i=r.commonAncestorContainer,n!==i&&t!==i||e.contains(o))?gi(i)?i:c(i):(u=ut(n),u.host?b(u.host,t):b(n,ut(t).host))}function l(n){var f=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"top",t=f==="top"?"scrollTop":"scrollLeft",i=n.nodeName,r,u;return i==="BODY"||i==="HTML"?(r=n.ownerDocument.documentElement,u=n.ownerDocument.scrollingElement||r,u[t]):n[t]}function nr(n,t){var f=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!1,r=l(t,"top"),u=l(t,"left"),i=f?-1:1;return n.top+=r*i,n.bottom+=r*i,n.left+=u*i,n.right+=u*i,n}function kt(n,t){var i=t==="x"?"Left":"Top",r=i==="Left"?"Right":"Bottom";return parseFloat(n["border"+i+"Width"],10)+parseFloat(n["border"+r+"Width"],10)}function dt(n,t,i,r){return Math.max(t["offset"+n],t["scroll"+n],i["client"+n],i["offset"+n],i["scroll"+n],h(10)?i["offset"+n]+r["margin"+(n==="Height"?"Top":"Left")]+r["margin"+(n==="Height"?"Bottom":"Right")]:0)}function gt(){var t=document.body,n=document.documentElement,i=h(10)&&getComputedStyle(n);return{height:dt("Height",t,n,i),width:dt("Width",t,n,i)}}function o(n){return u({},n,{right:n.left+n.width,bottom:n.top+n.height})}function ft(n){var t={},r,u,c;try{h(10)?(t=n.getBoundingClientRect(),r=l(n,"top"),u=l(n,"left"),t.top+=r,t.left+=u,t.bottom+=r,t.right+=u):t=n.getBoundingClientRect()}catch(p){}var i={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a=n.nodeName==="HTML"?gt():{},v=a.width||n.clientWidth||i.right-i.left,y=a.height||n.clientHeight||i.bottom-i.top,f=n.offsetWidth-v,e=n.offsetHeight-y;return(f||e)&&(c=s(n),f-=kt(c,"x"),e-=kt(c,"y"),i.width-=f,i.height-=e),o(i)}function et(n,t){var p=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!1,w=h(10),b=t.nodeName==="HTML",u=ft(n),r=ft(t),l=v(n),f=s(t),a=parseFloat(f.borderTopWidth,10),y=parseFloat(f.borderLeftWidth,10),i,e,c;return p&&t.nodeName==="HTML"&&(r.top=Math.max(r.top,0),r.left=Math.max(r.left,0)),i=o({top:u.top-r.top-a,left:u.left-r.left-y,width:u.width,height:u.height}),i.marginTop=0,i.marginLeft=0,!w&&b&&(e=parseFloat(f.marginTop,10),c=parseFloat(f.marginLeft,10),i.top-=a-e,i.bottom-=a-e,i.left-=y-c,i.right-=y-c,i.marginTop=e,i.marginLeft=c),(w&&!p?t.contains(l):t===l&&l.nodeName!=="BODY")&&(i=nr(i,t)),i}function rr(n){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1,t=n.ownerDocument.documentElement,i=et(n,t),u=Math.max(t.clientWidth,window.innerWidth||0),f=Math.max(t.clientHeight,window.innerHeight||0),e=r?0:l(t),s=r?0:l(t,"left"),h={top:e-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:u,height:f};return o(h)}function ni(n){var t=n.nodeName;return t==="BODY"||t==="HTML"?!1:s(n,"position")==="fixed"?!0:ni(tt(n))}function ti(n){if(!n||!n.parentElement||h())return document.documentElement;for(var t=n.parentElement;t&&s(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function ot(n,t,i,r){var o=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!1,u={top:0,left:0},s=o?ti(n):b(n,t),e,f;if(r==="viewport")u=rr(s,o);else if(e=void 0,r==="scrollParent"?(e=v(tt(t)),e.nodeName==="BODY"&&(e=n.ownerDocument.documentElement)):e=r==="window"?n.ownerDocument.documentElement:r,f=et(e,s,o),e.nodeName!=="HTML"||ni(s))u=f;else{var h=gt(),c=h.height,l=h.width;u.top+=f.top-f.marginTop;u.bottom=c+f.top;u.left+=f.left-f.marginLeft;u.right=l+f.left}return u.left+=i,u.top+=i,u.right-=i,u.bottom-=i,u}function ur(n){var t=n.width,i=n.height;return t*i}function ii(n,t,i,r,f){var l=arguments.length>5&&arguments[5]!==undefined?arguments[5]:0;if(n.indexOf("auto")===-1)return n;var e=ot(i,r,l,f),o={top:{width:e.width,height:t.top-e.top},right:{width:e.right-t.right,height:e.height},bottom:{width:e.width,height:e.bottom-t.bottom},left:{width:t.left-e.left,height:e.height}},s=Object.keys(o).map(function(n){return u({key:n},o[n],{area:ur(o[n])})}).sort(function(n,t){return t.area-n.area}),h=s.filter(function(n){var t=n.width,r=n.height;return t>=i.clientWidth&&r>=i.clientHeight}),a=h.length>0?h[0].key:s[0].key,c=n.split("-")[1];return a+(c?"-"+c:"")}function ri(n,t,i){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null,u=r?ti(t):b(t,i);return et(i,u,r)}function ui(n){var t=getComputedStyle(n),i=parseFloat(t.marginTop)+parseFloat(t.marginBottom),r=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:n.offsetWidth+r,height:n.offsetHeight+i}}function k(n){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return n.replace(/left|right|bottom|top/g,function(n){return t[n]})}function fi(n,t,i){i=i.split("-")[0];var r=ui(n),e={width:r.width,height:r.height},u=["right","left"].indexOf(i)!==-1,o=u?"top":"left",f=u?"left":"top",s=u?"height":"width",h=u?"width":"height";return e[o]=t[o]+t[s]/2-r[s]/2,e[f]=i===f?t[f]-r[h]:t[k(f)],e}function y(n,t){return Array.prototype.find?n.find(t):n.filter(t)[0]}function fr(n,t,i){if(Array.prototype.findIndex)return n.findIndex(function(n){return n[t]===i});var r=y(n,function(n){return n[t]===i});return n.indexOf(r)}function ei(n,t,i){var r=i===undefined?n:n.slice(0,fr(n,"name",i));return r.forEach(function(n){n["function"]&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=n["function"]||n.fn;n.enabled&&bt(i)&&(t.offsets.popper=o(t.offsets.popper),t.offsets.reference=o(t.offsets.reference),t=i(t,n))}),t}function er(){if(!this.state.isDestroyed){var n={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};if(n.offsets.reference=ri(this.state,this.popper,this.reference,this.options.positionFixed),n.placement=ii(this.options.placement,n.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),n.originalPlacement=n.placement,n.positionFixed=this.options.positionFixed,n.offsets.popper=fi(this.popper,n.offsets.reference,n.placement),n.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",n=ei(this.modifiers,n),this.state.isCreated)this.options.onUpdate(n);else{this.state.isCreated=!0;this.options.onCreate(n)}}}function oi(n,t){return n.some(function(n){var i=n.name,r=n.enabled;return r&&i===t})}function st(n){for(var i,r,u=[!1,"ms","Webkit","Moz","O"],f=n.charAt(0).toUpperCase()+n.slice(1),t=0;t<u.length;t++)if(i=u[t],r=i?""+i+f:n,typeof document.body.style[r]!="undefined")return r;return null}function or(){return this.state.isDestroyed=!0,oi(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[st("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function si(n){var t=n.ownerDocument;return t?t.defaultView:window}function hi(n,t,i,r){var f=n.nodeName==="BODY",u=f?n.ownerDocument.defaultView:n;u.addEventListener(t,i,{passive:!0});f||hi(v(u.parentNode),t,i,r);r.push(u)}function sr(n,t,i,r){i.updateBound=r;si(n).addEventListener("resize",i.updateBound,{passive:!0});var u=v(n);return hi(u,"scroll",i.updateBound,i.scrollParents),i.scrollElement=u,i.eventsEnabled=!0,i}function hr(){this.state.eventsEnabled||(this.state=sr(this.reference,this.options,this.state,this.scheduleUpdate))}function cr(n,t){return si(n).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(n){n.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function lr(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=cr(this.reference,this.state))}function ht(n){return n!==""&&!isNaN(parseFloat(n))&&isFinite(n)}function ct(n,t){Object.keys(t).forEach(function(i){var r="";["width","height","top","right","bottom","left"].indexOf(i)!==-1&&ht(t[i])&&(r="px");n.style[i]=t[i]+r})}function ar(n,t){Object.keys(t).forEach(function(i){var r=t[i];r!==!1?n.setAttribute(i,t[i]):n.removeAttribute(i)})}function vr(n){return ct(n.instance.popper,n.styles),ar(n.instance.popper,n.attributes),n.arrowElement&&Object.keys(n.arrowStyles).length&&ct(n.arrowElement,n.arrowStyles),n}function yr(n,t,i,r,u){var f=ri(u,t,n,i.positionFixed),e=ii(i.placement,f,t,n,i.modifiers.flip.boundariesElement,i.modifiers.flip.padding);return t.setAttribute("x-placement",e),ct(t,{position:i.positionFixed?"fixed":"absolute"}),i}function pr(n,t){var k=t.x,d=t.y,r=n.offsets.popper,s=y(n.instance.modifiers,function(n){return n.name==="applyStyle"}).gpuAcceleration,p,w,b;s!==undefined&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var g=s!==undefined?s:t.gpuAcceleration,nt=c(n.instance.popper),a=ft(nt),i={position:r.position},o={left:Math.floor(r.left),top:Math.round(r.top),bottom:Math.round(r.bottom),right:Math.floor(r.right)},f=k==="bottom"?"top":"bottom",e=d==="right"?"left":"right",v=st("transform"),h=void 0,l=void 0;return l=f==="bottom"?-a.height+o.bottom:o.top,h=e==="right"?-a.width+o.right:o.left,g&&v?(i[v]="translate3d("+h+"px, "+l+"px, 0)",i[f]=0,i[e]=0,i.willChange="transform"):(p=f==="bottom"?-1:1,w=e==="right"?-1:1,i[f]=l*p,i[e]=h*w,i.willChange=f+", "+e),b={"x-placement":n.placement},n.attributes=u({},b,n.attributes),n.styles=u({},i,n.styles),n.arrowStyles=u({},n.offsets.arrow,n.arrowStyles),n}function ci(n,t,i){var u=y(n,function(n){var i=n.name;return i===t}),f=!!u&&n.some(function(n){return n.name===i&&n.enabled&&n.order<u.order}),r,e;return f||(r="`"+t+"`",e="`"+i+"`",console.warn(e+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")),f}function wr(n,t){var h,r;if(!ci(n.instance.modifiers,"arrow","keepTogether"))return n;if(r=t.element,typeof r=="string"){if(r=n.instance.popper.querySelector(r),!r)return n}else if(!n.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),n;var k=n.placement.split("-")[0],w=n.offsets,e=w.popper,u=w.reference,c=["left","right"].indexOf(k)!==-1,v=c?"height":"width",y=c?"Top":"Left",i=y.toLowerCase(),d=c?"left":"top",l=c?"bottom":"right",f=ui(r)[v];u[l]-f<e[i]&&(n.offsets.popper[i]-=e[i]-(u[l]-f));u[i]+f>e[l]&&(n.offsets.popper[i]+=u[i]+f-e[l]);n.offsets.popper=o(n.offsets.popper);var g=u[i]+u[v]/2-f/2,b=s(n.instance.popper),nt=parseFloat(b["margin"+y],10),tt=parseFloat(b["border"+y+"Width"],10),p=g-n.offsets.popper[i]-nt-tt;return p=Math.max(Math.min(e[v]-f,p),0),n.arrowElement=r,n.offsets.arrow=(h={},a(h,i,Math.round(p)),a(h,d,""),h),n}function br(n){return n==="end"?"start":n==="start"?"end":n}function li(n){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1,t=d.indexOf(n),i=d.slice(t+1).concat(d.slice(0,t));return r?i.reverse():i}function kr(n,t){if(oi(n.instance.modifiers,"inner")||n.flipped&&n.placement===n.originalPlacement)return n;var e=ot(n.instance.popper,n.instance.reference,t.padding,t.boundariesElement,n.positionFixed),i=n.placement.split("-")[0],o=k(i),r=n.placement.split("-")[1]||"",f=[];switch(t.behavior){case g.FLIP:f=[i,o];break;case g.CLOCKWISE:f=li(i);break;case g.COUNTERCLOCKWISE:f=li(i,!0);break;default:f=t.behavior}return f.forEach(function(s,h){if(i!==s||f.length===h+1)return n;i=n.placement.split("-")[0];o=k(i);var l=n.offsets.popper,a=n.offsets.reference,c=Math.floor,y=i==="left"&&c(l.right)>c(a.left)||i==="right"&&c(l.left)<c(a.right)||i==="top"&&c(l.bottom)>c(a.top)||i==="bottom"&&c(l.top)<c(a.bottom),p=c(l.left)<c(e.left),w=c(l.right)>c(e.right),b=c(l.top)<c(e.top),d=c(l.bottom)>c(e.bottom),g=i==="left"&&p||i==="right"&&w||i==="top"&&b||i==="bottom"&&d,v=["top","bottom"].indexOf(i)!==-1,nt=!!t.flipVariations&&(v&&r==="start"&&p||v&&r==="end"&&w||!v&&r==="start"&&b||!v&&r==="end"&&d);(y||g||nt)&&(n.flipped=!0,(y||g)&&(i=f[h+1]),nt&&(r=br(r)),n.placement=i+(r?"-"+r:""),n.offsets.popper=u({},n.offsets.popper,fi(n.instance.popper,n.offsets.reference,n.placement)),n=ei(n.instance.modifiers,n,"flip"))}),n}function dr(n){var o=n.offsets,u=o.popper,i=o.reference,s=n.placement.split("-")[0],r=Math.floor,f=["top","bottom"].indexOf(s)!==-1,e=f?"right":"bottom",t=f?"left":"top",h=f?"width":"height";return u[e]<r(i[t])&&(n.offsets.popper[t]=r(i[t])-u[h]),u[t]>r(i[e])&&(n.offsets.popper[t]=r(i[e])),n}function gr(n,t,i,r){var h=n.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),f=+h[1],u=h[2],e,c,s;if(!f)return n;if(u.indexOf("%")===0){e=void 0;switch(u){case"%p":e=i;break;case"%":case"%r":default:e=r}return c=o(e),c[t]/100*f}return u==="vh"||u==="vw"?(s=void 0,s=u==="vh"?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0),s/100*f):f}function nu(n,t,i,r){var s=[0,0],h=["right","left"].indexOf(r)!==-1,u=n.split(/(\+|\-)/).map(function(n){return n.trim()}),f=u.indexOf(y(u,function(n){return n.search(/,|\s/)!==-1})),o,e;return u[f]&&u[f].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."),o=/\s*,\s*|\s+/,e=f!==-1?[u.slice(0,f).concat([u[f].split(o)[0]]),[u[f].split(o)[1]].concat(u.slice(f+1))]:[u],e=e.map(function(n,r){var f=(r===1?!h:h)?"height":"width",u=!1;return n.reduce(function(n,t){return n[n.length-1]===""&&["+","-"].indexOf(t)!==-1?(n[n.length-1]=t,u=!0,n):u?(n[n.length-1]+=t,u=!1,n):n.concat(t)},[]).map(function(n){return gr(n,f,t,i)})}),e.forEach(function(n,t){n.forEach(function(i,r){ht(i)&&(s[t]+=i*(n[r-1]==="-"?-1:1))})}),s}function tu(n,t){var f=t.offset,o=n.placement,e=n.offsets,i=e.popper,s=e.reference,u=o.split("-")[0],r=void 0;return r=ht(+f)?[+f,0]:nu(f,i,s,u),u==="left"?(i.top+=r[0],i.left-=r[1]):u==="right"?(i.top+=r[0],i.left+=r[1]):u==="top"?(i.left+=r[0],i.top-=r[1]):u==="bottom"&&(i.left+=r[0],i.top+=r[1]),n.popper=i,n}function iu(n,t){var e=t.boundariesElement||c(n.instance.popper),f;n.instance.reference===e&&(e=c(e));var o=st("transform"),r=n.instance.popper.style,s=r.top,h=r.left,l=r[o];r.top="";r.left="";r[o]="";f=ot(n.instance.popper,n.instance.reference,t.padding,e,n.positionFixed);r.top=s;r.left=h;r[o]=l;t.boundaries=f;var v=t.priority,i=n.offsets.popper,y={primary:function(n){var r=i[n];return i[n]<f[n]&&!t.escapeWithReference&&(r=Math.max(i[n],f[n])),a({},n,r)},secondary:function(n){var r=n==="right"?"left":"top",u=i[r];return i[n]>f[n]&&!t.escapeWithReference&&(u=Math.min(i[r],f[n]-(n==="right"?i.width:i.height))),a({},r,u)}};return v.forEach(function(n){var t=["left","top"].indexOf(n)!==-1?"primary":"secondary";i=u({},i,y[t](n))}),n.offsets.popper=i,n}function ru(n){var r=n.placement,c=r.split("-")[0],f=r.split("-")[1];if(f){var e=n.offsets,i=e.reference,o=e.popper,s=["bottom","top"].indexOf(c)!==-1,t=s?"left":"top",h=s?"width":"height",l={start:a({},t,i[t]),end:a({},t,i[t]+i[h]-o[h])};n.offsets.popper=u({},o,l[f])}return n}function uu(n){if(!ci(n.instance.modifiers,"hide","preventOverflow"))return n;var t=n.offsets.reference,i=y(n.instance.modifiers,function(n){return n.name==="preventOverflow"}).boundaries;if(t.bottom<i.top||t.left>i.right||t.top>i.bottom||t.right<i.left){if(n.hide===!0)return n;n.hide=!0;n.attributes["x-out-of-boundaries"]=""}else{if(n.hide===!1)return n;n.hide=!1;n.attributes["x-out-of-boundaries"]=!1}return n}function fu(n){var r=n.placement,t=r.split("-")[0],u=n.offsets,i=u.popper,e=u.reference,f=["left","right"].indexOf(t)!==-1,s=["top","left"].indexOf(t)===-1;return i[f?"left":"top"]=e[t]-(s?i[f?"width":"height"]:0),n.placement=k(r),n.offsets.popper=o(i),n}var w,pt,wt,it,rt,lt,d,g;t=t&&t.hasOwnProperty("default")?t["default"]:t;var i=function(n){function f(n){return{}.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase()}function e(){return{bindType:i,delegateType:i,handle:function(t){return n(t.target).is(this)?t.handleObj.handler.apply(this,arguments):undefined}}}function o(i){var u=this,r=!1;n(this).one(t.TRANSITION_END,function(){r=!0});return setTimeout(function(){r||t.triggerTransitionEnd(u)},i),this}function s(){n.fn.emulateTransitionEnd=o;n.event.special[t.TRANSITION_END]=e()}var i="transitionend",r=1e6,u=1e3,t={TRANSITION_END:"bsTransitionEnd",getUID:function(n){do n+=~~(Math.random()*r);while(document.getElementById(n));return n},getSelectorFromElement:function(n){var t=n.getAttribute("data-target");t&&t!=="#"||(t=n.getAttribute("href")||"");try{return document.querySelector(t)?t:null}catch(i){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var i=n(t).css("transition-duration"),r=parseFloat(i);return r?(i=i.split(",")[0],parseFloat(i)*u):0},reflow:function(n){return n.offsetHeight},triggerTransitionEnd:function(t){n(t).trigger(i)},supportsTransitionEnd:function(){return Boolean(i)},isElement:function(n){return(n[0]||n).nodeType},typeCheckConfig:function(n,i,r){for(var u in r)if(Object.prototype.hasOwnProperty.call(r,u)){var o=r[u],e=i[u],s=e&&t.isElement(e)?"element":f(e);if(!new RegExp(o).test(s))throw new Error(n.toUpperCase()+": "+('Option "'+u+'" provided type "'+s+'" ')+('but expected type "'+o+'".'));}}};return s(),t}(t),yi=function(n){var r="alert",h="4.1.3",u="bs.alert",e="."+u,c=n.fn[r],o={CLOSE:"close"+e,CLOSED:"closed"+e,CLICK_DATA_API:"click"+e+".data-api"},s={ALERT:"alert",FADE:"fade",SHOW:"show"},t=function(){function t(n){this._element=n}var r=t.prototype;return r.close=function(n){var t=this._element,i;(n&&(t=this._getRootElement(n)),i=this._triggerCloseEvent(t),i.isDefaultPrevented())||this._removeElement(t)},r.dispose=function(){n.removeData(this._element,u);this._element=null},r._getRootElement=function(t){var u=i.getSelectorFromElement(t),r=!1;return u&&(r=document.querySelector(u)),r||(r=n(t).closest("."+s.ALERT)[0]),r},r._triggerCloseEvent=function(t){var i=n.Event(o.CLOSE);return n(t).trigger(i),i},r._removeElement=function(t){var u=this,r;if(n(t).removeClass(s.SHOW),!n(t).hasClass(s.FADE)){this._destroyElement(t);return}r=i.getTransitionDurationFromElement(t);n(t).one(i.TRANSITION_END,function(n){return u._destroyElement(t,n)}).emulateTransitionEnd(r)},r._destroyElement=function(t){n(t).detach().trigger(o.CLOSED).remove()},t._jQueryInterface=function(i){return this.each(function(){var f=n(this),r=f.data(u);r||(r=new t(this),f.data(u,r));i==="close"&&r[i](this)})},t._handleDismiss=function(n){return function(t){t&&t.preventDefault();n.close(this)}},f(t,null,[{key:"VERSION",get:function(){return h}}]),t}();n(document).on(o.CLICK_DATA_API,{DISMISS:'[data-dismiss="alert"]'}.DISMISS,t._handleDismiss(new t));return n.fn[r]=t._jQueryInterface,n.fn[r].Constructor=t,n.fn[r].noConflict=function(){return n.fn[r]=c,t._jQueryInterface},t}(t),pi=function(n){var r="button",c="4.1.3",e="bs.button",o="."+e,s=".data-api",l=n.fn[r],t={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},i={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},h={CLICK_DATA_API:"click"+o+s,FOCUS_BLUR_DATA_API:"focus"+o+s+" "+("blur"+o+s)},u=function(){function r(n){this._element=n}var u=r.prototype;return u.toggle=function(){var f=!0,o=!0,u=n(this._element).closest(i.DATA_TOGGLE)[0],r,e;if(u&&(r=this._element.querySelector(i.INPUT),r)){if(r.type==="radio"&&(r.checked&&this._element.classList.contains(t.ACTIVE)?f=!1:(e=u.querySelector(i.ACTIVE),e&&n(e).removeClass(t.ACTIVE))),f){if(r.hasAttribute("disabled")||u.hasAttribute("disabled")||r.classList.contains("disabled")||u.classList.contains("disabled"))return;r.checked=!this._element.classList.contains(t.ACTIVE);n(r).trigger("change")}r.focus();o=!1}o&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(t.ACTIVE));f&&n(this._element).toggleClass(t.ACTIVE)},u.dispose=function(){n.removeData(this._element,e);this._element=null},r._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(e);i||(i=new r(this),n(this).data(e,i));t==="toggle"&&i[t]()})},f(r,null,[{key:"VERSION",get:function(){return c}}]),r}();n(document).on(h.CLICK_DATA_API,i.DATA_TOGGLE_CARROT,function(r){r.preventDefault();var f=r.target;n(f).hasClass(t.BUTTON)||(f=n(f).closest(i.BUTTON));u._jQueryInterface.call(n(f),"toggle")}).on(h.FOCUS_BLUR_DATA_API,i.DATA_TOGGLE_CARROT,function(r){var u=n(r.target).closest(i.BUTTON)[0];n(u).toggleClass(t.FOCUS,/^focus(in)?$/.test(r.type))});return n.fn[r]=u._jQueryInterface,n.fn[r].Constructor=u,n.fn[r].noConflict=function(){return n.fn[r]=l,u._jQueryInterface},u}(t),wi=function(n){var h="carousel",y="4.1.3",l="bs.carousel",e="."+l,v=".data-api",p=n.fn[h],w=37,b=39,k=500,a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},d={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},u={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},o={SLIDE:"slide"+e,SLID:"slid"+e,KEYDOWN:"keydown"+e,MOUSEENTER:"mouseenter"+e,MOUSELEAVE:"mouseleave"+e,TOUCHEND:"touchend"+e,LOAD_DATA_API:"load"+e+v,CLICK_DATA_API:"click"+e+v},t={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},s={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},c=function(){function v(t,i){this._items=null;this._interval=null;this._activeElement=null;this._isPaused=!1;this._isSliding=!1;this.touchTimeout=null;this._config=this._getConfig(i);this._element=n(t)[0];this._indicatorsElement=this._element.querySelector(s.INDICATORS);this._addEventListeners()}var c=v.prototype;return c.next=function(){this._isSliding||this._slide(u.NEXT)},c.nextWhenVisible=function(){!document.hidden&&n(this._element).is(":visible")&&n(this._element).css("visibility")!=="hidden"&&this.next()},c.prev=function(){this._isSliding||this._slide(u.PREV)},c.pause=function(n){n||(this._isPaused=!0);this._element.querySelector(s.NEXT_PREV)&&(i.triggerTransitionEnd(this._element),this.cycle(!0));clearInterval(this._interval);this._interval=null},c.cycle=function(n){n||(this._isPaused=!1);this._interval&&(clearInterval(this._interval),this._interval=null);this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},c.to=function(t){var f=this,i,r;if(this._activeElement=this._element.querySelector(s.ACTIVE_ITEM),i=this._getItemIndex(this._activeElement),!(t>this._items.length-1)&&!(t<0)){if(this._isSliding){n(this._element).one(o.SLID,function(){return f.to(t)});return}if(i===t){this.pause();this.cycle();return}r=t>i?u.NEXT:u.PREV;this._slide(r,this._items[t])}},c.dispose=function(){n(this._element).off(e);n.removeData(this._element,l);this._items=null;this._config=null;this._element=null;this._interval=null;this._isPaused=null;this._isSliding=null;this._activeElement=null;this._indicatorsElement=null},c._getConfig=function(n){return n=r({},a,n),i.typeCheckConfig(h,n,d),n},c._addEventListeners=function(){var t=this;if(this._config.keyboard)n(this._element).on(o.KEYDOWN,function(n){return t._keydown(n)});if(this._config.pause==="hover"){n(this._element).on(o.MOUSEENTER,function(n){return t.pause(n)}).on(o.MOUSELEAVE,function(n){return t.cycle(n)});if("ontouchstart"in document.documentElement)n(this._element).on(o.TOUCHEND,function(){t.pause();t.touchTimeout&&clearTimeout(t.touchTimeout);t.touchTimeout=setTimeout(function(n){return t.cycle(n)},k+t._config.interval)})}},c._keydown=function(n){if(!/input|textarea/i.test(n.target.tagName))switch(n.which){case w:n.preventDefault();this.prev();break;case b:n.preventDefault();this.next()}},c._getItemIndex=function(n){return this._items=n&&n.parentNode?[].slice.call(n.parentNode.querySelectorAll(s.ITEM)):[],this._items.indexOf(n)},c._getItemByDirection=function(n,t){var e=n===u.NEXT,o=n===u.PREV,i=this._getItemIndex(t),s=this._items.length-1,h=o&&i===0||e&&i===s,f,r;return h&&!this._config.wrap?t:(f=n===u.PREV?-1:1,r=(i+f)%this._items.length,r===-1?this._items[this._items.length-1]:this._items[r])},c._triggerSlideEvent=function(t,i){var u=this._getItemIndex(t),f=this._getItemIndex(this._element.querySelector(s.ACTIVE_ITEM)),r=n.Event(o.SLIDE,{relatedTarget:t,direction:i,from:f,to:u});return n(this._element).trigger(r),r},c._setActiveIndicatorElement=function(i){var u,r;this._indicatorsElement&&(u=[].slice.call(this._indicatorsElement.querySelectorAll(s.ACTIVE)),n(u).removeClass(t.ACTIVE),r=this._indicatorsElement.children[this._getItemIndex(i)],r&&n(r).addClass(t.ACTIVE))},c._slide=function(r,f){var y=this,h=this._element.querySelector(s.ACTIVE_ITEM),k=this._getItemIndex(h),e=f||h&&this._getItemByDirection(r,h),d=this._getItemIndex(e),p=Boolean(this._interval),c,l,a,w,v,b;if(r===u.NEXT?(c=t.LEFT,l=t.NEXT,a=u.LEFT):(c=t.RIGHT,l=t.PREV,a=u.RIGHT),e&&n(e).hasClass(t.ACTIVE)){this._isSliding=!1;return}(w=this._triggerSlideEvent(e,a),w.isDefaultPrevented())||h&&e&&(this._isSliding=!0,p&&this.pause(),this._setActiveIndicatorElement(e),v=n.Event(o.SLID,{relatedTarget:e,direction:a,from:k,to:d}),n(this._element).hasClass(t.SLIDE)?(n(e).addClass(l),i.reflow(e),n(h).addClass(c),n(e).addClass(c),b=i.getTransitionDurationFromElement(h),n(h).one(i.TRANSITION_END,function(){n(e).removeClass(c+" "+l).addClass(t.ACTIVE);n(h).removeClass(t.ACTIVE+" "+l+" "+c);y._isSliding=!1;setTimeout(function(){return n(y._element).trigger(v)},0)}).emulateTransitionEnd(b)):(n(h).removeClass(t.ACTIVE),n(e).addClass(t.ACTIVE),this._isSliding=!1,n(this._element).trigger(v)),p&&this.cycle())},v._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(l),u=r({},a,n(this).data()),f;if(typeof t=="object"&&(u=r({},u,t)),f=typeof t=="string"?t:u.slide,i||(i=new v(this,u),n(this).data(l,i)),typeof t=="number")i.to(t);else if(typeof f=="string"){if(typeof i[f]=="undefined")throw new TypeError('No method named "'+f+'"');i[f]()}else u.interval&&(i.pause(),i.cycle())})},v._dataApiClickHandler=function(u){var s=i.getSelectorFromElement(this),f,o,e;s&&(f=n(s)[0],f&&n(f).hasClass(t.CAROUSEL))&&(o=r({},n(f).data(),n(this).data()),e=this.getAttribute("data-slide-to"),e&&(o.interval=!1),v._jQueryInterface.call(n(f),o),e&&n(f).data(l).to(e),u.preventDefault())},f(v,null,[{key:"VERSION",get:function(){return y}},{key:"Default",get:function(){return a}}]),v}();n(document).on(o.CLICK_DATA_API,s.DATA_SLIDE,c._dataApiClickHandler);n(window).on(o.LOAD_DATA_API,function(){for(var i,r=[].slice.call(document.querySelectorAll(s.DATA_RIDE)),t=0,u=r.length;t<u;t++)i=n(r[t]),c._jQueryInterface.call(i,i.data())});return n.fn[h]=c._jQueryInterface,n.fn[h].Constructor=c,n.fn[h].noConflict=function(){return n.fn[h]=p,c._jQueryInterface},c}(t),bi=function(n){var e="collapse",v="4.1.3",u="bs.collapse",o="."+u,y=n.fn[e],c={toggle:!0,parent:""},p={toggle:"boolean",parent:"(string|element)"},s={SHOW:"show"+o,SHOWN:"shown"+o,HIDE:"hide"+o,HIDDEN:"hidden"+o,CLICK_DATA_API:"click"+o+".data-api"},t={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},l={WIDTH:"width",HEIGHT:"height"},a={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},h=function(){function h(t,r){var f,u,o;for(this._isTransitioning=!1,this._element=t,this._config=this._getConfig(r),this._triggerArray=n.makeArray(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],'+('[data-toggle="collapse"][data-target="#'+t.id+'"]'))),f=[].slice.call(document.querySelectorAll(a.DATA_TOGGLE)),u=0,o=f.length;u<o;u++){var s=f[u],e=i.getSelectorFromElement(s),h=[].slice.call(document.querySelectorAll(e)).filter(function(n){return n===t});e!==null&&h.length>0&&(this._selector=e,this._triggerArray.push(s))}this._parent=this._config.parent?this._getParent():null;this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray);this._config.toggle&&this.toggle()}var o=h.prototype;return o.toggle=function(){n(this._element).hasClass(t.SHOW)?this.hide():this.show()},o.show=function(){var e=this,r,o,c,f;if(!this._isTransitioning&&!n(this._element).hasClass(t.SHOW)&&(this._parent&&(r=[].slice.call(this._parent.querySelectorAll(a.ACTIVES)).filter(function(n){return n.getAttribute("data-parent")===e._config.parent}),r.length===0&&(r=null)),!r||(o=n(r).not(this._selector).data(u),!o||!o._isTransitioning))&&(c=n.Event(s.SHOW),n(this._element).trigger(c),!c.isDefaultPrevented())){r&&(h._jQueryInterface.call(n(r).not(this._selector),"hide"),o||n(r).data(u,null));f=this._getDimension();n(this._element).removeClass(t.COLLAPSE).addClass(t.COLLAPSING);this._element.style[f]=0;this._triggerArray.length&&n(this._triggerArray).removeClass(t.COLLAPSED).attr("aria-expanded",!0);this.setTransitioning(!0);var l=function(){n(e._element).removeClass(t.COLLAPSING).addClass(t.COLLAPSE).addClass(t.SHOW);e._element.style[f]="";e.setTransitioning(!1);n(e._element).trigger(s.SHOWN)},v=f[0].toUpperCase()+f.slice(1),y="scroll"+v,p=i.getTransitionDurationFromElement(this._element);n(this._element).one(i.TRANSITION_END,l).emulateTransitionEnd(p);this._element.style[f]=this._element[y]+"px"}},o.hide=function(){var c=this,f,r,e,u,o,h,l,a,v;if(!this._isTransitioning&&n(this._element).hasClass(t.SHOW)&&(f=n.Event(s.HIDE),n(this._element).trigger(f),!f.isDefaultPrevented())){if(r=this._getDimension(),this._element.style[r]=this._element.getBoundingClientRect()[r]+"px",i.reflow(this._element),n(this._element).addClass(t.COLLAPSING).removeClass(t.COLLAPSE).removeClass(t.SHOW),e=this._triggerArray.length,e>0)for(u=0;u<e;u++)o=this._triggerArray[u],h=i.getSelectorFromElement(o),h!==null&&(l=n([].slice.call(document.querySelectorAll(h))),l.hasClass(t.SHOW)||n(o).addClass(t.COLLAPSED).attr("aria-expanded",!1));this.setTransitioning(!0);a=function(){c.setTransitioning(!1);n(c._element).removeClass(t.COLLAPSING).addClass(t.COLLAPSE).trigger(s.HIDDEN)};this._element.style[r]="";v=i.getTransitionDurationFromElement(this._element);n(this._element).one(i.TRANSITION_END,a).emulateTransitionEnd(v)}},o.setTransitioning=function(n){this._isTransitioning=n},o.dispose=function(){n.removeData(this._element,u);this._config=null;this._parent=null;this._element=null;this._triggerArray=null;this._isTransitioning=null},o._getConfig=function(n){return n=r({},c,n),n.toggle=Boolean(n.toggle),i.typeCheckConfig(e,n,p),n},o._getDimension=function(){var t=n(this._element).hasClass(l.WIDTH);return t?l.WIDTH:l.HEIGHT},o._getParent=function(){var f=this,t=null,r,u;return i.isElement(this._config.parent)?(t=this._config.parent,typeof this._config.parent.jquery!="undefined"&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent),r='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',u=[].slice.call(t.querySelectorAll(r)),n(u).each(function(n,t){f._addAriaAndCollapsedClass(h._getTargetFromElement(t),[t])}),t},o._addAriaAndCollapsedClass=function(i,r){if(i){var u=n(i).hasClass(t.SHOW);r.length&&n(r).toggleClass(t.COLLAPSED,!u).attr("aria-expanded",u)}},h._getTargetFromElement=function(n){var t=i.getSelectorFromElement(n);return t?document.querySelector(t):null},h._jQueryInterface=function(t){return this.each(function(){var f=n(this),i=f.data(u),e=r({},c,f.data(),typeof t=="object"&&t?t:{});if(!i&&e.toggle&&/show|hide/.test(t)&&(e.toggle=!1),i||(i=new h(this,e),f.data(u,i)),typeof t=="string"){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},f(h,null,[{key:"VERSION",get:function(){return v}},{key:"Default",get:function(){return c}}]),h}();n(document).on(s.CLICK_DATA_API,a.DATA_TOGGLE,function(t){t.currentTarget.tagName==="A"&&t.preventDefault();var r=n(this),f=i.getSelectorFromElement(this),e=[].slice.call(document.querySelectorAll(f));n(e).each(function(){var t=n(this),i=t.data(u),f=i?"toggle":r.data();h._jQueryInterface.call(t,f)})});return n.fn[e]=h._jQueryInterface,n.fn[e].Constructor=h,n.fn[e].noConflict=function(){return n.fn[e]=y,h._jQueryInterface},h}(t),p=typeof window!="undefined"&&typeof document!="undefined",vt=["Edge","Trident","Firefox"],yt=0;for(w=0;w<vt.length;w+=1)if(p&&navigator.userAgent.indexOf(vt[w])>=0){yt=1;break}pt=p&&window.Promise;wt=pt?ki:di;it=p&&!!(window.MSInputMethodContext&&document.documentMode);rt=p&&/MSIE 10/.test(navigator.userAgent);var tr=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");},ir=function(){function n(n,t){for(var i,r=0;r<t.length;r++)i=t[r],i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}return function(t,i,r){return i&&n(t.prototype,i),r&&n(t,r),t}}(),a=function(n,t,i){return t in n?Object.defineProperty(n,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[t]=i,n},u=Object.assign||function(n){for(var i,r,t=1;t<arguments.length;t++){i=arguments[t];for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(n[r]=i[r])}return n};lt=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"];d=lt.slice(3);g={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};var eu={shift:{order:100,enabled:!0,fn:ru},offset:{order:200,enabled:!0,fn:tu,offset:0},preventOverflow:{order:300,enabled:!0,fn:iu,priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:dr},arrow:{order:500,enabled:!0,fn:wr,element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:kr,behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:fu},hide:{order:800,enabled:!0,fn:uu},computeStyle:{order:850,enabled:!0,fn:pr,gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:vr,onLoad:yr,gpuAcceleration:undefined}},ou={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:eu},e=function(){function n(t,i){var r=this,f=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},e;tr(this,n);this.scheduleUpdate=function(){return requestAnimationFrame(r.update)};this.update=wt(this.update.bind(this));this.options=u({},n.Defaults,f);this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]};this.reference=t&&t.jquery?t[0]:t;this.popper=i&&i.jquery?i[0]:i;this.options.modifiers={};Object.keys(u({},n.Defaults.modifiers,f.modifiers)).forEach(function(t){r.options.modifiers[t]=u({},n.Defaults.modifiers[t]||{},f.modifiers?f.modifiers[t]:{})});this.modifiers=Object.keys(this.options.modifiers).map(function(n){return u({name:n},r.options.modifiers[n])}).sort(function(n,t){return n.order-t.order});this.modifiers.forEach(function(n){if(n.enabled&&bt(n.onLoad))n.onLoad(r.reference,r.popper,r.options,n,r.state)});this.update();e=this.options.eventsEnabled;e&&this.enableEventListeners();this.state.eventsEnabled=e}return ir(n,[{key:"update",value:function(){return er.call(this)}},{key:"destroy",value:function(){return or.call(this)}},{key:"enableEventListeners",value:function(){return hr.call(this)}},{key:"disableEventListeners",value:function(){return lr.call(this)}}]),n}();e.Utils=(typeof window!="undefined"?window:global).PopperUtils;e.placements=lt;e.Defaults=ou;var su=function(n){var c="dropdown",d="4.1.3",a="bs.dropdown",s="."+a,y=".data-api",g=n.fn[c],v=27,p=32,k=9,w=38,b=40,nt=3,tt=new RegExp(w+"|"+b+"|"+v),u={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,CLICK:"click"+s,CLICK_DATA_API:"click"+s+y,KEYDOWN_DATA_API:"keydown"+s+y,KEYUP_DATA_API:"keyup"+s+y},t={DISABLED:"disabled",SHOW:"show",DROPUP:"dropup",DROPRIGHT:"dropright",DROPLEFT:"dropleft",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",POSITION_STATIC:"position-static"},o={DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",MENU:".dropdown-menu",NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)"},l={TOP:"top-start",TOPEND:"top-end",BOTTOM:"bottom-start",BOTTOMEND:"bottom-end",RIGHT:"right-start",RIGHTEND:"right-end",LEFT:"left-start",LEFTEND:"left-end"},it={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},rt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},h=function(){function h(n,t){this._element=n;this._popper=null;this._config=this._getConfig(t);this._menu=this._getMenuElement();this._inNavbar=this._detectNavbar();this._addEventListeners()}var y=h.prototype;return y.toggle=function(){var r,l,s,c,f;if(!this._element.disabled&&!n(this._element).hasClass(t.DISABLED)&&(r=h._getParentFromElement(this._element),l=n(this._menu).hasClass(t.SHOW),h._clearMenus(),!l)&&(s={relatedTarget:this._element},c=n.Event(u.SHOW,s),n(r).trigger(c),!c.isDefaultPrevented())){if(!this._inNavbar){if(typeof e=="undefined")throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");f=this._element;this._config.reference==="parent"?f=r:i.isElement(this._config.reference)&&(f=this._config.reference,typeof this._config.reference.jquery!="undefined"&&(f=this._config.reference[0]));this._config.boundary!=="scrollParent"&&n(r).addClass(t.POSITION_STATIC);this._popper=new e(f,this._menu,this._getPopperConfig())}if("ontouchstart"in document.documentElement&&n(r).closest(o.NAVBAR_NAV).length===0)n(document.body).children().on("mouseover",null,n.noop);this._element.focus();this._element.setAttribute("aria-expanded",!0);n(this._menu).toggleClass(t.SHOW);n(r).toggleClass(t.SHOW).trigger(n.Event(u.SHOWN,s))}},y.dispose=function(){n.removeData(this._element,a);n(this._element).off(s);this._element=null;this._menu=null;this._popper!==null&&(this._popper.destroy(),this._popper=null)},y.update=function(){this._inNavbar=this._detectNavbar();this._popper!==null&&this._popper.scheduleUpdate()},y._addEventListeners=function(){var t=this;n(this._element).on(u.CLICK,function(n){n.preventDefault();n.stopPropagation();t.toggle()})},y._getConfig=function(t){return t=r({},this.constructor.Default,n(this._element).data(),t),i.typeCheckConfig(c,t,this.constructor.DefaultType),t},y._getMenuElement=function(){if(!this._menu){var n=h._getParentFromElement(this._element);n&&(this._menu=n.querySelector(o.MENU))}return this._menu},y._getPlacement=function(){var r=n(this._element.parentNode),i=l.BOTTOM;return r.hasClass(t.DROPUP)?(i=l.TOP,n(this._menu).hasClass(t.MENURIGHT)&&(i=l.TOPEND)):r.hasClass(t.DROPRIGHT)?i=l.RIGHT:r.hasClass(t.DROPLEFT)?i=l.LEFT:n(this._menu).hasClass(t.MENURIGHT)&&(i=l.BOTTOMEND),i},y._detectNavbar=function(){return n(this._element).closest(".navbar").length>0},y._getPopperConfig=function(){var i=this,n={},t;return typeof this._config.offset=="function"?n.fn=function(n){return n.offsets=r({},n.offsets,i._config.offset(n.offsets)||{}),n}:n.offset=this._config.offset,t={placement:this._getPlacement(),modifiers:{offset:n,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}},this._config.display==="static"&&(t.modifiers.applyStyle={enabled:!1}),t},h._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(a),r=typeof t=="object"?t:null;if(i||(i=new h(this,r),n(this).data(a,i)),typeof t=="string"){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},h._clearMenus=function(i){var f,r,l,y,c;if(!i||i.which!==nt&&(i.type!=="keyup"||i.which===k))for(f=[].slice.call(document.querySelectorAll(o.DATA_TOGGLE)),r=0,l=f.length;r<l;r++){var e=h._getParentFromElement(f[r]),v=n(f[r]).data(a),s={relatedTarget:f[r]};(i&&i.type==="click"&&(s.clickEvent=i),v)&&(y=v._menu,n(e).hasClass(t.SHOW))&&(i&&(i.type==="click"&&/input|textarea/i.test(i.target.tagName)||i.type==="keyup"&&i.which===k)&&n.contains(e,i.target)||(c=n.Event(u.HIDE,s),n(e).trigger(c),c.isDefaultPrevented())||("ontouchstart"in document.documentElement&&n(document.body).children().off("mouseover",null,n.noop),f[r].setAttribute("aria-expanded","false"),n(y).removeClass(t.SHOW),n(e).removeClass(t.SHOW).trigger(n.Event(u.HIDDEN,s))))}},h._getParentFromElement=function(n){var t,r=i.getSelectorFromElement(n);return r&&(t=document.querySelector(r)),t||n.parentNode},h._dataApiKeydownHandler=function(i){var f,e,s,u,r;if((/input|textarea/i.test(i.target.tagName)?i.which!==p&&(i.which===v||(i.which===b||i.which===w)&&!n(i.target).closest(o.MENU).length):tt.test(i.which))&&(i.preventDefault(),i.stopPropagation(),!this.disabled&&!n(this).hasClass(t.DISABLED))){if(f=h._getParentFromElement(this),e=n(f).hasClass(t.SHOW),!e&&(i.which!==v||i.which!==p)||e&&(i.which===v||i.which===p)){i.which===v&&(s=f.querySelector(o.DATA_TOGGLE),n(s).trigger("focus"));n(this).trigger("click");return}(u=[].slice.call(f.querySelectorAll(o.VISIBLE_ITEMS)),u.length!==0)&&(r=u.indexOf(i.target),i.which===w&&r>0&&r--,i.which===b&&r<u.length-1&&r++,r<0&&(r=0),u[r].focus())}},f(h,null,[{key:"VERSION",get:function(){return d}},{key:"Default",get:function(){return it}},{key:"DefaultType",get:function(){return rt}}]),h}();n(document).on(u.KEYDOWN_DATA_API,o.DATA_TOGGLE,h._dataApiKeydownHandler).on(u.KEYDOWN_DATA_API,o.MENU,h._dataApiKeydownHandler).on(u.CLICK_DATA_API+" "+u.KEYUP_DATA_API,h._clearMenus).on(u.CLICK_DATA_API,o.DATA_TOGGLE,function(t){t.preventDefault();t.stopPropagation();h._jQueryInterface.call(n(this),"toggle")}).on(u.CLICK_DATA_API,o.FORM_CHILD,function(n){n.stopPropagation()});return n.fn[c]=h._jQueryInterface,n.fn[c].Constructor=h,n.fn[c].noConflict=function(){return n.fn[c]=g,h._jQueryInterface},h}(t,e),hu=function(n){var s="modal",a="4.1.3",h="bs.modal",e="."+h,v=n.fn[s],y=27,l={backdrop:!0,keyboard:!0,focus:!0,show:!0},p={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},t={HIDE:"hide"+e,HIDDEN:"hidden"+e,SHOW:"show"+e,SHOWN:"shown"+e,FOCUSIN:"focusin"+e,RESIZE:"resize"+e,CLICK_DISMISS:"click.dismiss"+e,KEYDOWN_DISMISS:"keydown.dismiss"+e,MOUSEUP_DISMISS:"mouseup.dismiss"+e,MOUSEDOWN_DISMISS:"mousedown.dismiss"+e,CLICK_DATA_API:"click"+e+".data-api"},u={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",SHOW:"show"},o={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top"},c=function(){function v(n,t){this._config=this._getConfig(t);this._element=n;this._dialog=n.querySelector(o.DIALOG);this._backdrop=null;this._isShown=!1;this._isBodyOverflowing=!1;this._ignoreBackdropClick=!1;this._scrollbarWidth=0}var c=v.prototype;return c.toggle=function(n){return this._isShown?this.hide():this.show(n)},c.show=function(i){var r=this,f;if(!this._isTransitioning&&!this._isShown&&(n(this._element).hasClass(u.FADE)&&(this._isTransitioning=!0),f=n.Event(t.SHOW,{relatedTarget:i}),n(this._element).trigger(f),!this._isShown&&!f.isDefaultPrevented())){this._isShown=!0;this._checkScrollbar();this._setScrollbar();this._adjustDialog();n(document.body).addClass(u.OPEN);this._setEscapeEvent();this._setResizeEvent();n(this._element).on(t.CLICK_DISMISS,o.DATA_DISMISS,function(n){return r.hide(n)});n(this._dialog).on(t.MOUSEDOWN_DISMISS,function(){n(r._element).one(t.MOUSEUP_DISMISS,function(t){n(t.target).is(r._element)&&(r._ignoreBackdropClick=!0)})});this._showBackdrop(function(){return r._showElement(i)})}},c.hide=function(r){var s=this,f,e,o;(r&&r.preventDefault(),!this._isTransitioning&&this._isShown)&&(f=n.Event(t.HIDE),n(this._element).trigger(f),this._isShown&&!f.isDefaultPrevented())&&(this._isShown=!1,e=n(this._element).hasClass(u.FADE),e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),n(document).off(t.FOCUSIN),n(this._element).removeClass(u.SHOW),n(this._element).off(t.CLICK_DISMISS),n(this._dialog).off(t.MOUSEDOWN_DISMISS),e?(o=i.getTransitionDurationFromElement(this._element),n(this._element).one(i.TRANSITION_END,function(n){return s._hideModal(n)}).emulateTransitionEnd(o)):this._hideModal())},c.dispose=function(){n.removeData(this._element,h);n(window,document,this._element,this._backdrop).off(e);this._config=null;this._element=null;this._dialog=null;this._backdrop=null;this._isShown=null;this._isBodyOverflowing=null;this._ignoreBackdropClick=null;this._scrollbarWidth=null},c.handleUpdate=function(){this._adjustDialog()},c._getConfig=function(n){return n=r({},l,n),i.typeCheckConfig(s,n,p),n},c._showElement=function(r){var f=this,o=n(this._element).hasClass(u.FADE),s,e,h;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element);this._element.style.display="block";this._element.removeAttribute("aria-hidden");this._element.scrollTop=0;o&&i.reflow(this._element);n(this._element).addClass(u.SHOW);this._config.focus&&this._enforceFocus();s=n.Event(t.SHOWN,{relatedTarget:r});e=function(){f._config.focus&&f._element.focus();f._isTransitioning=!1;n(f._element).trigger(s)};o?(h=i.getTransitionDurationFromElement(this._element),n(this._dialog).one(i.TRANSITION_END,e).emulateTransitionEnd(h)):e()},c._enforceFocus=function(){var i=this;n(document).off(t.FOCUSIN).on(t.FOCUSIN,function(t){document!==t.target&&i._element!==t.target&&n(i._element).has(t.target).length===0&&i._element.focus()})},c._setEscapeEvent=function(){var i=this;if(this._isShown&&this._config.keyboard)n(this._element).on(t.KEYDOWN_DISMISS,function(n){n.which===y&&(n.preventDefault(),i.hide())});else this._isShown||n(this._element).off(t.KEYDOWN_DISMISS)},c._setResizeEvent=function(){var i=this;if(this._isShown)n(window).on(t.RESIZE,function(n){return i.handleUpdate(n)});else n(window).off(t.RESIZE)},c._hideModal=function(){var i=this;this._element.style.display="none";this._element.setAttribute("aria-hidden",!0);this._isTransitioning=!1;this._showBackdrop(function(){n(document.body).removeClass(u.OPEN);i._resetAdjustments();i._resetScrollbar();n(i._element).trigger(t.HIDDEN)})},c._removeBackdrop=function(){this._backdrop&&(n(this._backdrop).remove(),this._backdrop=null)},c._showBackdrop=function(r){var f=this,e=n(this._element).hasClass(u.FADE)?u.FADE:"",s,o,h;if(this._isShown&&this._config.backdrop){this._backdrop=document.createElement("div");this._backdrop.className=u.BACKDROP;e&&this._backdrop.classList.add(e);n(this._backdrop).appendTo(document.body);n(this._element).on(t.CLICK_DISMISS,function(n){if(f._ignoreBackdropClick){f._ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(f._config.backdrop==="static"?f._element.focus():f.hide())});if(e&&i.reflow(this._backdrop),n(this._backdrop).addClass(u.SHOW),!r)return;if(!e){r();return}s=i.getTransitionDurationFromElement(this._backdrop);n(this._backdrop).one(i.TRANSITION_END,r).emulateTransitionEnd(s)}else!this._isShown&&this._backdrop?(n(this._backdrop).removeClass(u.SHOW),o=function(){f._removeBackdrop();r&&r()},n(this._element).hasClass(u.FADE)?(h=i.getTransitionDurationFromElement(this._backdrop),n(this._backdrop).one(i.TRANSITION_END,o).emulateTransitionEnd(h)):o()):r&&r()},c._adjustDialog=function(){var n=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&n&&(this._element.style.paddingLeft=this._scrollbarWidth+"px");this._isBodyOverflowing&&!n&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},c._resetAdjustments=function(){this._element.style.paddingLeft="";this._element.style.paddingRight=""},c._checkScrollbar=function(){var n=document.body.getBoundingClientRect();this._isBodyOverflowing=n.left+n.right<window.innerWidth;this._scrollbarWidth=this._getScrollbarWidth()},c._setScrollbar=function(){var t=this,i,r,u,f;this._isBodyOverflowing&&(i=[].slice.call(document.querySelectorAll(o.FIXED_CONTENT)),r=[].slice.call(document.querySelectorAll(o.STICKY_CONTENT)),n(i).each(function(i,r){var u=r.style.paddingRight,f=n(r).css("padding-right");n(r).data("padding-right",u).css("padding-right",parseFloat(f)+t._scrollbarWidth+"px")}),n(r).each(function(i,r){var u=r.style.marginRight,f=n(r).css("margin-right");n(r).data("margin-right",u).css("margin-right",parseFloat(f)-t._scrollbarWidth+"px")}),u=document.body.style.paddingRight,f=n(document.body).css("padding-right"),n(document.body).data("padding-right",u).css("padding-right",parseFloat(f)+this._scrollbarWidth+"px"))},c._resetScrollbar=function(){var r=[].slice.call(document.querySelectorAll(o.FIXED_CONTENT)),i,t;n(r).each(function(t,i){var r=n(i).data("padding-right");n(i).removeData("padding-right");i.style.paddingRight=r?r:""});i=[].slice.call(document.querySelectorAll(""+o.STICKY_CONTENT));n(i).each(function(t,i){var r=n(i).data("margin-right");typeof r!="undefined"&&n(i).css("margin-right",r).removeData("margin-right")});t=n(document.body).data("padding-right");n(document.body).removeData("padding-right");document.body.style.paddingRight=t?t:""},c._getScrollbarWidth=function(){var n=document.createElement("div"),t;return n.className=u.SCROLLBAR_MEASURER,document.body.appendChild(n),t=n.getBoundingClientRect().width-n.clientWidth,document.body.removeChild(n),t},v._jQueryInterface=function(t,i){return this.each(function(){var u=n(this).data(h),f=r({},l,n(this).data(),typeof t=="object"&&t?t:{});if(u||(u=new v(this,f),n(this).data(h,u)),typeof t=="string"){if(typeof u[t]=="undefined")throw new TypeError('No method named "'+t+'"');u[t](i)}else f.show&&u.show(i)})},f(v,null,[{key:"VERSION",get:function(){return a}},{key:"Default",get:function(){return l}}]),v}();n(document).on(t.CLICK_DATA_API,o.DATA_TOGGLE,function(u){var e=this,f,o=i.getSelectorFromElement(this),s,l;o&&(f=document.querySelector(o));s=n(f).data(h)?"toggle":r({},n(f).data(),n(this).data());(this.tagName==="A"||this.tagName==="AREA")&&u.preventDefault();l=n(f).one(t.SHOW,function(i){if(!i.isDefaultPrevented())l.one(t.HIDDEN,function(){n(e).is(":visible")&&e.focus()})});c._jQueryInterface.call(n(f),s,this)});return n.fn[s]=c._jQueryInterface,n.fn[s].Constructor=c,n.fn[s].noConflict=function(){return n.fn[s]=v,c._jQueryInterface},c}(t),nt=function(n){var h="tooltip",y="4.1.3",c="bs.tooltip",t="."+c,p=n.fn[h],a="bs-tooltip",w=new RegExp("(^|\\s)"+a+"\\S+","g"),b={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},k={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},d={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"><\/div><div class="tooltip-inner"><\/div><\/div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},s={SHOW:"show",OUT:"out"},g={HIDE:"hide"+t,HIDDEN:"hidden"+t,SHOW:"show"+t,SHOWN:"shown"+t,INSERTED:"inserted"+t,CLICK:"click"+t,FOCUSIN:"focusin"+t,FOCUSOUT:"focusout"+t,MOUSEENTER:"mouseenter"+t,MOUSELEAVE:"mouseleave"+t},u={FADE:"fade",SHOW:"show"},v={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},o={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},l=function(){function p(n,t){if(typeof e=="undefined")throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0;this._timeout=0;this._hoverState="";this._activeTrigger={};this._popper=null;this.element=n;this.config=this._getConfig(t);this.tip=null;this._setListeners()}var l=p.prototype;return l.enable=function(){this._isEnabled=!0},l.disable=function(){this._isEnabled=!1},l.toggleEnabled=function(){this._isEnabled=!this._isEnabled},l.toggle=function(t){if(this._isEnabled)if(t){var r=this.constructor.DATA_KEY,i=n(t.currentTarget).data(r);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),n(t.currentTarget).data(r,i));i._activeTrigger.click=!i._activeTrigger.click;i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(n(this.getTipElement()).hasClass(u.SHOW)){this._leave(null,this);return}this._enter(null,this)}},l.dispose=function(){clearTimeout(this._timeout);n.removeData(this.element,this.constructor.DATA_KEY);n(this.element).off(this.constructor.EVENT_KEY);n(this.element).closest(".modal").off("hide.bs.modal");this.tip&&n(this.tip).remove();this._isEnabled=null;this._timeout=null;this._hoverState=null;this._activeTrigger=null;this._popper!==null&&this._popper.destroy();this._popper=null;this.element=null;this.config=null;this.tip=null},l.show=function(){var t=this,f,l,r,o,a,h,y,c,p;if(n(this.element).css("display")==="none")throw new Error("Please use show on visible elements");if(f=n.Event(this.constructor.Event.SHOW),this.isWithContent()&&this._isEnabled){if(n(this.element).trigger(f),l=n.contains(this.element.ownerDocument.documentElement,this.element),f.isDefaultPrevented()||!l)return;if(r=this.getTipElement(),o=i.getUID(this.constructor.NAME),r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&n(r).addClass(u.FADE),a=typeof this.config.placement=="function"?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(a),this.addAttachmentClass(h),y=this.config.container===!1?document.body:n(document).find(this.config.container),n(r).data(this.constructor.DATA_KEY,this),n.contains(this.element.ownerDocument.documentElement,this.tip)||n(r).appendTo(y),n(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new e(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v.ARROW},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(n){n.originalPlacement!==n.placement&&t._handlePopperPlacementChange(n)},onUpdate:function(n){t._handlePopperPlacementChange(n)}}),n(r).addClass(u.SHOW),"ontouchstart"in document.documentElement)n(document.body).children().on("mouseover",null,n.noop);c=function(){t.config.animation&&t._fixTransition();var i=t._hoverState;t._hoverState=null;n(t.element).trigger(t.constructor.Event.SHOWN);i===s.OUT&&t._leave(null,t)};n(this.tip).hasClass(u.FADE)?(p=i.getTransitionDurationFromElement(this.tip),n(this.tip).one(i.TRANSITION_END,c).emulateTransitionEnd(p)):c()}},l.hide=function(t){var r=this,f=this.getTipElement(),e=n.Event(this.constructor.Event.HIDE),h=function(){r._hoverState!==s.SHOW&&f.parentNode&&f.parentNode.removeChild(f);r._cleanTipClass();r.element.removeAttribute("aria-describedby");n(r.element).trigger(r.constructor.Event.HIDDEN);r._popper!==null&&r._popper.destroy();t&&t()},c;(n(this.element).trigger(e),e.isDefaultPrevented())||(n(f).removeClass(u.SHOW),"ontouchstart"in document.documentElement&&n(document.body).children().off("mouseover",null,n.noop),this._activeTrigger[o.CLICK]=!1,this._activeTrigger[o.FOCUS]=!1,this._activeTrigger[o.HOVER]=!1,n(this.tip).hasClass(u.FADE)?(c=i.getTransitionDurationFromElement(f),n(f).one(i.TRANSITION_END,h).emulateTransitionEnd(c)):h(),this._hoverState="")},l.update=function(){this._popper!==null&&this._popper.scheduleUpdate()},l.isWithContent=function(){return Boolean(this.getTitle())},l.addAttachmentClass=function(t){n(this.getTipElement()).addClass(a+"-"+t)},l.getTipElement=function(){return this.tip=this.tip||n(this.config.template)[0],this.tip},l.setContent=function(){var t=this.getTipElement();this.setElementContent(n(t.querySelectorAll(v.TOOLTIP_INNER)),this.getTitle());n(t).removeClass(u.FADE+" "+u.SHOW)},l.setElementContent=function(t,i){var r=this.config.html;typeof i=="object"&&(i.nodeType||i.jquery)?r?n(i).parent().is(t)||t.empty().append(i):t.text(n(i).text()):t[r?"html":"text"](i)},l.getTitle=function(){var n=this.element.getAttribute("data-original-title");return n||(n=typeof this.config.title=="function"?this.config.title.call(this.element):this.config.title),n},l._getAttachment=function(n){return k[n.toUpperCase()]},l._setListeners=function(){var t=this,i=this.config.trigger.split(" ");i.forEach(function(i){if(i==="click")n(t.element).on(t.constructor.Event.CLICK,t.config.selector,function(n){return t.toggle(n)});else if(i!==o.MANUAL){var r=i===o.HOVER?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,u=i===o.HOVER?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;n(t.element).on(r,t.config.selector,function(n){return t._enter(n)}).on(u,t.config.selector,function(n){return t._leave(n)})}n(t.element).closest(".modal").on("hide.bs.modal",function(){return t.hide()})});this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},l._fixTitle=function(){var n=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||n!=="string")&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},l._enter=function(t,i){var r=this.constructor.DATA_KEY;if(i=i||n(t.currentTarget).data(r),i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),n(t.currentTarget).data(r,i)),t&&(i._activeTrigger[t.type==="focusin"?o.FOCUS:o.HOVER]=!0),n(i.getTipElement()).hasClass(u.SHOW)||i._hoverState===s.SHOW){i._hoverState=s.SHOW;return}if(clearTimeout(i._timeout),i._hoverState=s.SHOW,!i.config.delay||!i.config.delay.show){i.show();return}i._timeout=setTimeout(function(){i._hoverState===s.SHOW&&i.show()},i.config.delay.show)},l._leave=function(t,i){var r=this.constructor.DATA_KEY;if(i=i||n(t.currentTarget).data(r),i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),n(t.currentTarget).data(r,i)),t&&(i._activeTrigger[t.type==="focusout"?o.FOCUS:o.HOVER]=!1),!i._isWithActiveTrigger()){if(clearTimeout(i._timeout),i._hoverState=s.OUT,!i.config.delay||!i.config.delay.hide){i.hide();return}i._timeout=setTimeout(function(){i._hoverState===s.OUT&&i.hide()},i.config.delay.hide)}},l._isWithActiveTrigger=function(){for(var n in this._activeTrigger)if(this._activeTrigger[n])return!0;return!1},l._getConfig=function(t){return t=r({},this.constructor.Default,n(this.element).data(),typeof t=="object"&&t?t:{}),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),i.typeCheckConfig(h,t,this.constructor.DefaultType),t},l._getDelegateConfig=function(){var t={},n;if(this.config)for(n in this.config)this.constructor.Default[n]!==this.config[n]&&(t[n]=this.config[n]);return t},l._cleanTipClass=function(){var i=n(this.getTipElement()),t=i.attr("class").match(w);t!==null&&t.length&&i.removeClass(t.join(""))},l._handlePopperPlacementChange=function(n){var t=n.instance;this.tip=t.popper;this._cleanTipClass();this.addAttachmentClass(this._getAttachment(n.placement))},l._fixTransition=function(){var t=this.getTipElement(),i=this.config.animation;t.getAttribute("x-placement")===null&&(n(t).removeClass(u.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=i)},p._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(c),r=typeof t=="object"&&t;if((i||!/dispose|hide/.test(t))&&(i||(i=new p(this,r),n(this).data(c,i)),typeof t=="string")){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},f(p,null,[{key:"VERSION",get:function(){return y}},{key:"Default",get:function(){return d}},{key:"NAME",get:function(){return h}},{key:"DATA_KEY",get:function(){return c}},{key:"Event",get:function(){return g}},{key:"EVENT_KEY",get:function(){return t}},{key:"DefaultType",get:function(){return b}}]),p}();return n.fn[h]=l._jQueryInterface,n.fn[h].Constructor=l,n.fn[h].noConflict=function(){return n.fn[h]=p,l._jQueryInterface},l}(t,e),cu=function(n){var i="popover",c="4.1.3",u="bs.popover",t="."+u,l=n.fn[i],o="bs-popover",a=new RegExp("(^|\\s)"+o+"\\S+","g"),v=r({},nt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"><\/div><h3 class="popover-header"><\/h3><div class="popover-body"><\/div><\/div>'}),y=r({},nt.DefaultType,{content:"(string|element|function)"}),s={FADE:"fade",SHOW:"show"},h={TITLE:".popover-header",CONTENT:".popover-body"},p={HIDE:"hide"+t,HIDDEN:"hidden"+t,SHOW:"show"+t,SHOWN:"shown"+t,INSERTED:"inserted"+t,CLICK:"click"+t,FOCUSIN:"focusin"+t,FOCUSOUT:"focusout"+t,MOUSEENTER:"mouseenter"+t,MOUSELEAVE:"mouseleave"+t},e=function(r){function e(){return r.apply(this,arguments)||this}vi(e,r);var l=e.prototype;return l.isWithContent=function(){return this.getTitle()||this._getContent()},l.addAttachmentClass=function(t){n(this.getTipElement()).addClass(o+"-"+t)},l.getTipElement=function(){return this.tip=this.tip||n(this.config.template)[0],this.tip},l.setContent=function(){var i=n(this.getTipElement()),t;this.setElementContent(i.find(h.TITLE),this.getTitle());t=this._getContent();typeof t=="function"&&(t=t.call(this.element));this.setElementContent(i.find(h.CONTENT),t);i.removeClass(s.FADE+" "+s.SHOW)},l._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},l._cleanTipClass=function(){var i=n(this.getTipElement()),t=i.attr("class").match(a);t!==null&&t.length>0&&i.removeClass(t.join(""))},e._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(u),r=typeof t=="object"?t:null;if((i||!/destroy|hide/.test(t))&&(i||(i=new e(this,r),n(this).data(u,i)),typeof t=="string")){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},f(e,null,[{key:"VERSION",get:function(){return c}},{key:"Default",get:function(){return v}},{key:"NAME",get:function(){return i}},{key:"DATA_KEY",get:function(){return u}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return t}},{key:"DefaultType",get:function(){return y}}]),e}(nt);return n.fn[i]=e._jQueryInterface,n.fn[i].Constructor=e,n.fn[i].noConflict=function(){return n.fn[i]=l,e._jQueryInterface},e}(t),lu=function(n){var u="scrollspy",v="4.1.3",s="bs.scrollspy",h="."+s,y=n.fn[u],a={offset:10,method:"auto",target:""},p={offset:"number",method:"string",target:"(string|element)"},c={ACTIVATE:"activate"+h,SCROLL:"scroll"+h,LOAD_DATA_API:"load"+h+".data-api"},e={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},t={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},l={OFFSET:"offset",POSITION:"position"},o=function(){function y(i,r){var u=this;this._element=i;this._scrollElement=i.tagName==="BODY"?window:i;this._config=this._getConfig(r);this._selector=this._config.target+" "+t.NAV_LINKS+","+(this._config.target+" "+t.LIST_ITEMS+",")+(this._config.target+" "+t.DROPDOWN_ITEMS);this._offsets=[];this._targets=[];this._activeTarget=null;this._scrollHeight=0;n(this._scrollElement).on(c.SCROLL,function(n){return u._process(n)});this.refresh();this._process()}var o=y.prototype;return o.refresh=function(){var t=this,f=this._scrollElement===this._scrollElement.window?l.OFFSET:l.POSITION,r=this._config.method==="auto"?f:this._config.method,e=r===l.POSITION?this._getScrollTop():0,u;this._offsets=[];this._targets=[];this._scrollHeight=this._getScrollHeight();u=[].slice.call(document.querySelectorAll(this._selector));u.map(function(t){var u,f=i.getSelectorFromElement(t),o;return(f&&(u=document.querySelector(f)),u&&(o=u.getBoundingClientRect(),o.width||o.height))?[n(u)[r]().top+e,f]:null}).filter(function(n){return n}).sort(function(n,t){return n[0]-t[0]}).forEach(function(n){t._offsets.push(n[0]);t._targets.push(n[1])})},o.dispose=function(){n.removeData(this._element,s);n(this._scrollElement).off(h);this._element=null;this._scrollElement=null;this._config=null;this._selector=null;this._offsets=null;this._targets=null;this._activeTarget=null;this._scrollHeight=null},o._getConfig=function(t){if(t=r({},a,typeof t=="object"&&t?t:{}),typeof t.target!="string"){var f=n(t.target).attr("id");f||(f=i.getUID(u),n(t.target).attr("id",f));t.target="#"+f}return i.typeCheckConfig(u,t,p),t},o._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},o._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},o._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},o._process=function(){var t=this._getScrollTop()+this._config.offset,r=this._getScrollHeight(),e=this._config.offset+r-this._getOffsetHeight(),i,u,n,f;if(this._scrollHeight!==r&&this.refresh(),t>=e){i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i);return}if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0){this._activeTarget=null;this._clear();return}for(u=this._offsets.length,n=u;n--;)f=this._activeTarget!==this._targets[n]&&t>=this._offsets[n]&&(typeof this._offsets[n+1]=="undefined"||t<this._offsets[n+1]),f&&this._activate(this._targets[n])},o._activate=function(i){var u,r;this._activeTarget=i;this._clear();u=this._selector.split(",");u=u.map(function(n){return n+'[data-target="'+i+'"],'+(n+'[href="'+i+'"]')});r=n([].slice.call(document.querySelectorAll(u.join(","))));r.hasClass(e.DROPDOWN_ITEM)?(r.closest(t.DROPDOWN).find(t.DROPDOWN_TOGGLE).addClass(e.ACTIVE),r.addClass(e.ACTIVE)):(r.addClass(e.ACTIVE),r.parents(t.NAV_LIST_GROUP).prev(t.NAV_LINKS+", "+t.LIST_ITEMS).addClass(e.ACTIVE),r.parents(t.NAV_LIST_GROUP).prev(t.NAV_ITEMS).children(t.NAV_LINKS).addClass(e.ACTIVE));n(this._scrollElement).trigger(c.ACTIVATE,{relatedTarget:i})},o._clear=function(){var i=[].slice.call(document.querySelectorAll(this._selector));n(i).filter(t.ACTIVE).removeClass(e.ACTIVE)},y._jQueryInterface=function(t){return this.each(function(){var i=n(this).data(s),r=typeof t=="object"&&t;if(i||(i=new y(this,r),n(this).data(s,i)),typeof t=="string"){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},f(y,null,[{key:"VERSION",get:function(){return v}},{key:"Default",get:function(){return a}}]),y}();n(window).on(c.LOAD_DATA_API,function(){for(var i,r=[].slice.call(document.querySelectorAll(t.DATA_SPY)),f=r.length,u=f;u--;)i=n(r[u]),o._jQueryInterface.call(i,i.data())});return n.fn[u]=o._jQueryInterface,n.fn[u].Constructor=o,n.fn[u].noConflict=function(){return n.fn[u]=y,o._jQueryInterface},o}(t),au=function(n){var u="tab",c="4.1.3",h="bs.tab",e="."+h,l=n.fn[u],o={HIDE:"hide"+e,HIDDEN:"hidden"+e,SHOW:"show"+e,SHOWN:"shown"+e,CLICK_DATA_API:"click"+e+".data-api"},t={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},r={DROPDOWN:".dropdown",NAV_LIST_GROUP:".nav, .list-group",ACTIVE:".active",ACTIVE_UL:"> li > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},s=function(){function u(n){this._element=n}var e=u.prototype;return e.show=function(){var a=this,e,u,f,s,v,h,c,l;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&n(this._element).hasClass(t.ACTIVE)||n(this._element).hasClass(t.DISABLED)||(f=n(this._element).closest(r.NAV_LIST_GROUP)[0],s=i.getSelectorFromElement(this._element),f&&(v=f.nodeName==="UL"?r.ACTIVE_UL:r.ACTIVE,u=n.makeArray(n(f).find(v)),u=u[u.length-1]),h=n.Event(o.HIDE,{relatedTarget:this._element}),c=n.Event(o.SHOW,{relatedTarget:u}),u&&n(u).trigger(h),n(this._element).trigger(c),c.isDefaultPrevented()||h.isDefaultPrevented())||(s&&(e=document.querySelector(s)),this._activate(this._element,f),l=function(){var t=n.Event(o.HIDDEN,{relatedTarget:a._element}),i=n.Event(o.SHOWN,{relatedTarget:u});n(u).trigger(t);n(a._element).trigger(i)},e?this._activate(e,e.parentNode,l):l())},e.dispose=function(){n.removeData(this._element,h);this._element=null},e._activate=function(u,f,e){var l=this,s,c;s=f.nodeName==="UL"?n(f).find(r.ACTIVE_UL):n(f).children(r.ACTIVE);var o=s[0],a=e&&o&&n(o).hasClass(t.FADE),h=function(){return l._transitionComplete(u,o,e)};o&&a?(c=i.getTransitionDurationFromElement(o),n(o).one(i.TRANSITION_END,h).emulateTransitionEnd(c)):h()},e._transitionComplete=function(u,f,e){var o,s,h;f&&(n(f).removeClass(t.SHOW+" "+t.ACTIVE),o=n(f.parentNode).find(r.DROPDOWN_ACTIVE_CHILD)[0],o&&n(o).removeClass(t.ACTIVE),f.getAttribute("role")==="tab"&&f.setAttribute("aria-selected",!1));n(u).addClass(t.ACTIVE);u.getAttribute("role")==="tab"&&u.setAttribute("aria-selected",!0);i.reflow(u);n(u).addClass(t.SHOW);u.parentNode&&n(u.parentNode).hasClass(t.DROPDOWN_MENU)&&(s=n(u).closest(r.DROPDOWN)[0],s&&(h=[].slice.call(s.querySelectorAll(r.DROPDOWN_TOGGLE)),n(h).addClass(t.ACTIVE)),u.setAttribute("aria-expanded",!0));e&&e()},u._jQueryInterface=function(t){return this.each(function(){var r=n(this),i=r.data(h);if(i||(i=new u(this),r.data(h,i)),typeof t=="string"){if(typeof i[t]=="undefined")throw new TypeError('No method named "'+t+'"');i[t]()}})},f(u,null,[{key:"VERSION",get:function(){return c}}]),u}();n(document).on(o.CLICK_DATA_API,r.DATA_TOGGLE,function(t){t.preventDefault();s._jQueryInterface.call(n(this),"show")});return n.fn[u]=s._jQueryInterface,n.fn[u].Constructor=s,n.fn[u].noConflict=function(){return n.fn[u]=l,s._jQueryInterface},s}(t);(function(n){if(typeof n=="undefined")throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=n.fn.jquery.split(" ")[0].split("."),i=9;if(t[0]<2&&t[1]<i||t[0]===1&&t[1]===i&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0");})(t);n.Util=i;n.Alert=yi;n.Button=pi;n.Carousel=wi;n.Collapse=bi;n.Dropdown=su;n.Modal=hu;n.Popover=cu;n.Scrollspy=lu;n.Tab=au;n.Tooltip=nt;Object.defineProperty(n,"__esModule",{value:!0})}),function(n,t){typeof define=="function"&&define.amd?define(["jquery"],t):typeof exports=="object"?module.exports=t(require("jquery")):n.jquery_mmenu_all_js=t(n.jQuery)}(this,function(n){return!function(n){function o(){n[i].glbl||(f={$wndw:n(window),$docu:n(document),$html:n("html"),$body:n("body")},t={},r={},u={},n.each([t,r,u],function(n,t){t.add=function(n){n=n.split(" ");for(var i=0,r=n.length;i<r;i++)t[n[i]]=t.mm(n[i])}}),t.mm=function(n){return"mm-"+n},t.add("wrapper menu panels panel nopanel navbar listview nolistview listitem btn hidden"),t.umm=function(n){return"mm-"==n.slice(0,3)&&(n=n.slice(3)),n},r.mm=function(n){return"mm-"+n},r.add("parent child title"),u.mm=function(n){return n+".mm"},u.add("transitionend webkitTransitionEnd click scroll resize keydown mousedown mouseup touchstart touchmove touchend orientationchange"),n[i]._c=t,n[i]._d=r,n[i]._e=u,n[i].glbl=f)}var i="mmenu",e="7.0.0",t,r,u,f;n[i]&&n[i].version>e||(n[i]=function(n,t,i){return this.$menu=n,this._api=["bind","getInstance","initPanels","openPanel","closePanel","closeAllPanels","setSelected"],this.opts=t,this.conf=i,this.vars={},this.cbck={},this.mtch={},"function"==typeof this.___deprecated&&this.___deprecated(),this._initHooks(),this._initWrappers(),this._initAddons(),this._initExtensions(),this._initMenu(),this._initPanels(),this._initOpened(),this._initAnchors(),this._initMatchMedia(),"function"==typeof this.___debug&&this.___debug(),this},n[i].version=e,n[i].uniqueId=0,n[i].wrappers={},n[i].addons={},n[i].defaults={hooks:{},extensions:[],wrappers:[],navbar:{add:!0,title:"Menu",titleLink:"parent"},onClick:{setSelected:!0},slidingSubmenus:!0},n[i].configuration={classNames:{divider:"Divider",inset:"Inset",nolistview:"NoListview",nopanel:"NoPanel",panel:"Panel",selected:"Selected",spacer:"Spacer",vertical:"Vertical"},clone:!1,openingInterval:25,panelNodetype:"ul, ol, div",transitionDuration:400},n[i].prototype={getInstance:function(){return this},initPanels:function(n){this._initPanels(n)},openPanel:function(u,f){var s,h,o,e,c,l;if(this.trigger("openPanel:before",u),u&&u.length&&(u.is("."+t.panel)||(u=u.closest("."+t.panel)),u.is("."+t.panel))){if(s=this,"boolean"!=typeof f&&(f=!0),u.parent("."+t.listitem+"_vertical").length)u.parents("."+t.listitem+"_vertical").addClass(t.listitem+"_opened").children("."+t.panel).removeClass(t.hidden),this.openPanel(u.parents("."+t.panel).not(function(){return n(this).parent("."+t.listitem+"_vertical").length}).first()),this.trigger("openPanel:start",u),this.trigger("openPanel:finish",u);else{if(u.hasClass(t.panel+"_opened"))return;if(h=this.$pnls.children("."+t.panel),o=this.$pnls.children("."+t.panel+"_opened"),!n[i].support.csstransitions)return o.addClass(t.hidden).removeClass(t.panel+"_opened"),u.removeClass(t.hidden).addClass(t.panel+"_opened"),this.trigger("openPanel:start",u),void this.trigger("openPanel:finish",u);for(h.not(u).removeClass(t.panel+"_opened-parent"),e=u.data(r.parent);e;)e=e.closest("."+t.panel),e.parent("."+t.listitem+"_vertical").length||e.addClass(t.panel+"_opened-parent"),e=e.data(r.parent);h.removeClass(t.panel+"_highest").not(o).not(u).addClass(t.hidden);u.removeClass(t.hidden);c=function(){o.removeClass(t.panel+"_opened");u.addClass(t.panel+"_opened");u.hasClass(t.panel+"_opened-parent")?(o.addClass(t.panel+"_highest"),u.removeClass(t.panel+"_opened-parent")):(o.addClass(t.panel+"_opened-parent"),u.addClass(t.panel+"_highest"));s.trigger("openPanel:start",u)};l=function(){o.removeClass(t.panel+"_highest").addClass(t.hidden);u.removeClass(t.panel+"_highest");s.trigger("openPanel:finish",u)};f&&!u.hasClass(t.panel+"_noanimation")?setTimeout(function(){s.__transitionend(u,function(){l()},s.conf.transitionDuration);c()},s.conf.openingInterval):(c(),l())}this.trigger("openPanel:after",u)}},closePanel:function(n){this.trigger("closePanel:before",n);var i=n.parent();i.hasClass(t.listitem+"_vertical")&&(i.removeClass(t.listitem+"_opened"),n.addClass(t.hidden),this.trigger("closePanel",n));this.trigger("closePanel:after",n)},closeAllPanels:function(n){this.trigger("closeAllPanels:before");this.$pnls.find("."+t.listview).children().removeClass(t.listitem+"_selected").filter("."+t.listitem+"_vertical").removeClass(t.listitem+"_opened");var r=this.$pnls.children("."+t.panel),i=n&&n.length?n:r.first();this.$pnls.children("."+t.panel).not(i).removeClass(t.panel+"_opened").removeClass(t.panel+"_opened-parent").removeClass(t.panel+"_highest").addClass(t.hidden);this.openPanel(i,!1);this.trigger("closeAllPanels:after")},togglePanel:function(n){var i=n.parent();i.hasClass(t.listitem+"_vertical")&&this[i.hasClass(t.listitem+"_opened")?"closePanel":"openPanel"](n)},setSelected:function(n){this.trigger("setSelected:before",n);this.$menu.find("."+t.listitem+"_selected").removeClass(t.listitem+"_selected");n.addClass(t.listitem+"_selected");this.trigger("setSelected:after",n)},bind:function(n,t){this.cbck[n]=this.cbck[n]||[];this.cbck[n].push(t)},trigger:function(){var u=this,i=Array.prototype.slice.call(arguments),t=i.shift(),n,r;if(this.cbck[t])for(n=0,r=this.cbck[t].length;n<r;n++)this.cbck[t][n].apply(u,i)},matchMedia:function(n,t,i){var r={yes:t,no:i};this.mtch[n]=this.mtch[n]||[];this.mtch[n].push(r)},_initHooks:function(){for(var n in this.opts.hooks)this.bind(n,this.opts.hooks[n])},_initWrappers:function(){var t,r;for(this.trigger("initWrappers:before"),t=0;t<this.opts.wrappers.length;t++)r=n[i].wrappers[this.opts.wrappers[t]],"function"==typeof r&&r.call(this);this.trigger("initWrappers:after")},_initAddons:function(){this.trigger("initAddons:before");for(var t in n[i].addons)n[i].addons[t].add.call(this),n[i].addons[t].add=function(){};for(t in n[i].addons)n[i].addons[t].setup.call(this);this.trigger("initAddons:after")},_initExtensions:function(){var i,n;this.trigger("initExtensions:before");i=this;this.opts.extensions.constructor===Array&&(this.opts.extensions={all:this.opts.extensions});for(n in this.opts.extensions)this.opts.extensions[n]=this.opts.extensions[n].length?t.menu+"_"+this.opts.extensions[n].join(" "+t.menu+"_"):"",this.opts.extensions[n]&&!function(n){i.matchMedia(n,function(){this.$menu.addClass(this.opts.extensions[n])},function(){this.$menu.removeClass(this.opts.extensions[n])})}(n);this.trigger("initExtensions:after")},_initMenu:function(){this.trigger("initMenu:before");this.conf.clone&&(this.$orig=this.$menu,this.$menu=this.$orig.clone(),this.$menu.add(this.$menu.find("[id]")).filter("[id]").each(function(){n(this).attr("id",t.mm(n(this).attr("id")))}));this.$menu.attr("id",this.$menu.attr("id")||this.__getUniqueId());this.$pnls=n('<div class="'+t.panels+'" />').append(this.$menu.children(this.conf.panelNodetype)).prependTo(this.$menu);this.$menu.addClass(t.menu).parent().addClass(t.wrapper);this.trigger("initMenu:after")},_initPanels:function(i){this.trigger("initPanels:before",i);i=i||this.$pnls.children(this.conf.panelNodetype);var u=n(),r=this,f=function(i){i.filter(r.conf.panelNodetype).each(function(){var i=r._initPanel(n(this)),e;i&&(r._initNavbar(i),r._initListview(i),u=u.add(i),e=i.children("."+t.listview).children("li").children(r.conf.panelNodeType).add(i.children("."+r.conf.classNames.panel)),e.length&&f(e))})};f(i);this.trigger("initPanels:after",u)},_initPanel:function(n){var u,f,i;return(this.trigger("initPanel:before",n),n.hasClass(t.panel))?n:(this.__refactorClass(n,this.conf.classNames.panel,t.panel),this.__refactorClass(n,this.conf.classNames.nopanel,t.nopanel),this.__refactorClass(n,this.conf.classNames.inset,t.listview+"_inset"),n.filter("."+t.listview+"_inset").addClass(t.nopanel),n.hasClass(t.nopanel))?!1:(u=n.hasClass(this.conf.classNames.vertical)||!this.opts.slidingSubmenus,n.removeClass(this.conf.classNames.vertical),f=n.attr("id")||this.__getUniqueId(),n.is("ul, ol")&&(n.removeAttr("id"),n.wrap("<div />"),n=n.parent()),n.attr("id",f),n.addClass(t.panel+" "+t.hidden),i=n.parent("li"),u?i.addClass(t.listitem+"_vertical"):n.appendTo(this.$pnls),i.length&&(i.data(r.child,n),n.data(r.parent,i)),this.trigger("initPanel:after",n),n)},_initNavbar:function(i){var f,o;if(this.trigger("initNavbar:before",i),!i.children("."+t.navbar).length){var u=i.data(r.parent),s=n('<div class="'+t.navbar+'" />'),h=this.__getPanelTitle(i,this.opts.navbar.title),e="";if(u&&u.length){if(u.hasClass(t.listitem+"_vertical"))return;f=u.parent().is("."+t.listview)?u.children("a, span").not("."+t.btn+"_next"):u.closest("."+t.panel).find('a[href="#'+i.attr("id")+'"]');f=f.first();u=f.closest("."+t.panel);o=u.attr("id");switch(h=this.__getPanelTitle(i,n("<span>"+f.text()+"<\/span>").text()),this.opts.navbar.titleLink){case"anchor":e=f.attr("href");break;case"parent":e="#"+o}s.append('<a class="'+t.btn+" "+t.btn+"_prev "+t.navbar+'__btn" href="#'+o+'" />')}else if(!this.opts.navbar.title)return;this.opts.navbar.add&&i.addClass(t.panel+"_has-navbar");s.append('<a class="'+t.navbar+'__title"'+(e.length?' href="'+e+'"':"")+">"+h+"<\/a>").prependTo(i);this.trigger("initNavbar:after",i)}},_initListview:function(i){var e,f,u,o,s;this.trigger("initListview:before",i);e=this.__childAddBack(i,"ul, ol");this.__refactorClass(e,this.conf.classNames.nolistview,t.nolistview);f=e.not("."+t.nolistview).addClass(t.listview).children().addClass(t.listitem);this.__refactorClass(f,this.conf.classNames.selected,t.listitem+"_selected");this.__refactorClass(f,this.conf.classNames.divider,t.listitem+"_divider");this.__refactorClass(f,this.conf.classNames.spacer,t.listitem+"_spacer");u=i.data(r.parent);u&&u.is("."+t.listitem)&&!u.children("."+t.btn+"_next").length&&(o=u.children("a, span").first(),s=n('<a class="'+t.btn+'_next" href="#'+i.attr("id")+'" />').insertBefore(o),o.is("span")&&s.addClass(t.btn+"_fullwidth"));this.trigger("initListview:after",i)},_initOpened:function(){this.trigger("initOpened:before");var n=this.$pnls.find("."+t.listitem+"_selected").removeClass(t.listitem+"_selected").last().addClass(t.listitem+"_selected"),i=n.length?n.closest("."+t.panel):this.$pnls.children("."+t.panel).first();this.openPanel(i,!1);this.trigger("initOpened:after")},_initAnchors:function(){this.trigger("initAnchors:before");var r=this;f.$body.on(u.click+"-oncanvas","a[href]",function(u){var f=n(this),s=f.attr("href"),h=r.$menu.find(f).length,l=f.is("."+t.listitem+" > a"),a=f.is('[rel="external"]')||f.is('[target="_blank"]'),c,e,v,o;if(h&&s.length>1&&"#"==s.slice(0,1))try{if(c=r.$menu.find(s),c.is("."+t.panel))return r[f.parent().hasClass(t.listitem+"_vertical")?"togglePanel":"openPanel"](c),void u.preventDefault()}catch(y){}e={close:null,setSelected:null,preventDefault:"#"==s.slice(0,1)};for(v in n[i].addons)if(o=n[i].addons[v].clickAnchor.call(r,f,h,l,a),o){if("boolean"==typeof o)return void u.preventDefault();"object"==typeof o&&(e=n.extend({},e,o))}h&&l&&!a&&(r.__valueOrFn(f,r.opts.onClick.setSelected,e.setSelected)&&r.setSelected(n(u.target).parent()),r.__valueOrFn(f,r.opts.onClick.preventDefault,e.preventDefault)&&u.preventDefault(),r.__valueOrFn(f,r.opts.onClick.close,e.close)&&r.opts.offCanvas&&"function"==typeof r.close&&r.close())});this.trigger("initAnchors:after")},_initMatchMedia:function(){var n=this;for(var t in this.mtch)!function(){var i=t,r=window.matchMedia(i);n._fireMatchMedia(i,r);r.addListener(function(t){n._fireMatchMedia(i,t)})}()},_fireMatchMedia:function(n,t){for(var r=t.matches?"yes":"no",i=0;i<this.mtch[n].length;i++)this.mtch[n][i][r].call(this)},_getOriginalMenuId:function(){var n=this.$menu.attr("id");return this.conf.clone&&n&&n.length&&(n=t.umm(n)),n},__api:function(){var i=this,t={};return n.each(this._api,function(){var n=this;t[n]=function(){var r=i[n].apply(i,arguments);return"undefined"==typeof r?t:r}}),t},__valueOrFn:function(n,t,i){if("function"==typeof t){var r=t.call(n[0]);if("undefined"!=typeof r)return r}return"function"!=typeof t&&"undefined"!=typeof t||"undefined"==typeof i?t:i},__getPanelTitle:function(t,u){var f;return"function"==typeof this.opts.navbar.title&&(f=this.opts.navbar.title.call(t[0])),"undefined"==typeof f&&(f=t.data(r.title)),"undefined"!=typeof f?f:"string"==typeof u?n[i].i18n(u):n[i].i18n(n[i].defaults.navbar.title)},__refactorClass:function(n,t,i){return n.filter("."+t).removeClass(t).addClass(i)},__findAddBack:function(n,t){return n.find(t).add(n.filter(t))},__childAddBack:function(n,t){return n.children(t).add(n.filter(t))},__filterListItems:function(n){return n.not("."+t.listitem+"_divider").not("."+t.hidden)},__filterListItemAnchors:function(n){return this.__filterListItems(n).children("a").not("."+t.btn+"_next")},__openPanelWoAnimation:function(n){n.hasClass(t.panel+"_noanimation")||(n.addClass(t.panel+"_noanimation"),this.__transitionend(n,function(){n.removeClass(t.panel+"_noanimation")},this.conf.openingInterval),this.openPanel(n))},__transitionend:function(n,t,i){var f=!1,r=function(i){"undefined"!=typeof i&&i.target!=n[0]||(f||(n.off(u.transitionend),n.off(u.webkitTransitionEnd),t.call(n[0])),f=!0)};n.on(u.transitionend,r);n.on(u.webkitTransitionEnd,r);setTimeout(r,1.1*i)},__getUniqueId:function(){return t.mm(n[i].uniqueId++)}},n.fn[i]=function(t,r){o();t=n.extend(!0,{},n[i].defaults,t);r=n.extend(!0,{},n[i].configuration,r);var u=n();return this.each(function(){var e=n(this),f;e.data(i)||(f=new n[i](e,t,r),f.$menu.data(i,f.__api()),u=u.add(f.$menu))}),u},n[i].i18n=function(){var t={};return function(i){switch(typeof i){case"object":return n.extend(t,i),t;case"string":return t[i]||i;case"undefined":default:return t}}}(),n[i].support={touch:"ontouchstart"in window||navigator.msMaxTouchPoints||!1,csstransitions:function(){return"undefined"==typeof Modernizr||"undefined"==typeof Modernizr.csstransitions||Modernizr.csstransitions}(),csstransforms:function(){return"undefined"==typeof Modernizr||"undefined"==typeof Modernizr.csstransforms||Modernizr.csstransforms}(),csstransforms3d:function(){return"undefined"==typeof Modernizr||"undefined"==typeof Modernizr.csstransforms3d||Modernizr.csstransforms3d}()})}(n),!function(n){var u="mmenu",r="offCanvas",i,e,f,t;n[u].addons[r]={setup:function(){var e,f,o;this.opts[r]&&(e=this.opts[r],f=this.conf[r],t=n[u].glbl,this._api=n.merge(this._api,["open","close","setPage"]),"object"!=typeof e&&(e={}),e=this.opts[r]=n.extend(!0,{},n[u].defaults[r],e),"string"!=typeof f.pageSelector&&(f.pageSelector="> "+f.pageNodetype),this.vars.opened=!1,o=[i.menu+"_offcanvas"],n[u].support.csstransforms||o.push(i["no-csstransforms"]),n[u].support.csstransforms3d||o.push(i["no-csstransforms3d"]),this.bind("initMenu:after",function(){var e=this,n,u;this.setPage(t.$page);this._initBlocker();this["_initWindow_"+r]();this.$menu.addClass(o.join(" ")).parent("."+i.wrapper).removeClass(i.wrapper);this.$menu[f.menuInsertMethod](f.menuInsertSelector);n=window.location.hash;n&&(u=this._getOriginalMenuId(),u&&u==n.slice(1)&&setTimeout(function(){e.open()},1e3))}),this.bind("open:start:sr-aria",function(){this.__sr_aria(this.$menu,"hidden",!1)}),this.bind("close:finish:sr-aria",function(){this.__sr_aria(this.$menu,"hidden",!0)}),this.bind("initMenu:after:sr-aria",function(){this.__sr_aria(this.$menu,"hidden",!0)}))},add:function(){i=n[u]._c;e=n[u]._d;f=n[u]._e;i.add("slideout page no-csstransforms3d");e.add("style")},clickAnchor:function(n,u){var s=this,f,e,o;if(this.opts[r]){if(f=this._getOriginalMenuId(),f&&n.is('[href="#'+f+'"]'))return u?(this.open(),!0):(e=n.closest("."+i.menu),e.length&&(o=e.data("mmenu"),o&&o.close))?(o.close(),s.__transitionend(e,function(){s.open()},s.conf.transitionDuration),!0):(this.open(),!0);if(t.$page)return f=t.$page.first().attr("id"),f&&n.is('[href="#'+f+'"]')?(this.close(),!0):void 0}}};n[u].defaults[r]={blockUI:!0,moveBackground:!0};n[u].configuration[r]={pageNodetype:"div",pageSelector:null,noPageSelector:[],wrapPageIfNeeded:!0,menuInsertMethod:"prependTo",menuInsertSelector:"body"};n[u].prototype.open=function(){if(this.trigger("open:before"),!this.vars.opened){var n=this;this._openSetup();setTimeout(function(){n._openFinish()},this.conf.openingInterval);this.trigger("open:after")}};n[u].prototype._openSetup=function(){var s=this,o=this.opts[r],u;this.closeAllOthers();t.$page.each(function(){n(this).data(e.style,n(this).attr("style")||"")});t.$wndw.trigger(f.resize+"-"+r,[!0]);u=[i.wrapper+"_opened"];o.blockUI&&u.push(i.wrapper+"_blocking");"modal"==o.blockUI&&u.push(i.wrapper+"_modal");o.moveBackground&&u.push(i.wrapper+"_background");t.$html.addClass(u.join(" "));setTimeout(function(){s.vars.opened=!0},this.conf.openingInterval);this.$menu.addClass(i.menu+"_opened")};n[u].prototype._openFinish=function(){var n=this;this.__transitionend(t.$page.first(),function(){n.trigger("open:finish")},this.conf.transitionDuration);this.trigger("open:start");t.$html.addClass(i.wrapper+"_opening")};n[u].prototype.close=function(){if(this.trigger("close:before"),this.vars.opened){var r=this;this.__transitionend(t.$page.first(),function(){r.$menu.removeClass(i.menu+"_opened");var u=[i.wrapper+"_opened",i.wrapper+"_blocking",i.wrapper+"_modal",i.wrapper+"_background"];t.$html.removeClass(u.join(" "));t.$page.each(function(){n(this).attr("style",n(this).data(e.style))});r.vars.opened=!1;r.trigger("close:finish")},this.conf.transitionDuration);this.trigger("close:start");t.$html.removeClass(i.wrapper+"_opening");this.trigger("close:after")}};n[u].prototype.closeAllOthers=function(){t.$body.find("."+i.menu+"_offcanvas").not(this.$menu).each(function(){var t=n(this).data(u);t&&t.close&&t.close()})};n[u].prototype.setPage=function(u){this.trigger("setPage:before",u);var e=this,f=this.conf[r];u&&u.length||(u=t.$body.find(f.pageSelector),f.noPageSelector.length&&(u=u.not(f.noPageSelector.join(", "))),u.length>1&&f.wrapPageIfNeeded&&(u=u.wrapAll("<"+this.conf[r].pageNodetype+" />").parent()));u.each(function(){n(this).attr("id",n(this).attr("id")||e.__getUniqueId())});u.addClass(i.page+" "+i.slideout);t.$page=u;this.trigger("setPage:after",u)};n[u].prototype["_initWindow_"+r]=function(){t.$wndw.off(f.keydown+"-"+r).on(f.keydown+"-"+r,function(n){if(t.$html.hasClass(i.wrapper+"_opened")&&9==n.keyCode)return n.preventDefault(),!1});var n=0;t.$wndw.off(f.resize+"-"+r).on(f.resize+"-"+r,function(r,u){if(1==t.$page.length&&(u||t.$html.hasClass(i.wrapper+"_opened"))){var f=t.$wndw.height();(u||f!=n)&&(n=f,t.$page.css("minHeight",f))}})};n[u].prototype._initBlocker=function(){var u=this;this.opts[r].blockUI&&(t.$blck||(t.$blck=n('<div class="'+i.page+"__blocker "+i.slideout+'" />')),t.$blck.appendTo(t.$body).off(f.touchstart+"-"+r+" "+f.touchmove+"-"+r).on(f.touchstart+"-"+r+" "+f.touchmove+"-"+r,function(n){n.preventDefault();n.stopPropagation();t.$blck.trigger(f.mousedown+"-"+r)}).off(f.mousedown+"-"+r).on(f.mousedown+"-"+r,function(n){n.preventDefault();t.$html.hasClass(i.wrapper+"_modal")||(u.closeAllOthers(),u.close())}))}}(n),!function(n){var i="mmenu",r="screenReader",t,u,f,e;n[i].addons[r]={setup:function(){var o=this,f=this.opts[r],s=this.conf[r];e=n[i].glbl;"boolean"==typeof f&&(f={aria:f,text:f});"object"!=typeof f&&(f={});f=this.opts[r]=n.extend(!0,{},n[i].defaults[r],f);f.aria&&(this.bind("initAddons:after",function(){this.bind("initMenu:after",function(){this.trigger("initMenu:after:sr-aria")});this.bind("initNavbar:after",function(){this.trigger("initNavbar:after:sr-aria",arguments[0])});this.bind("openPanel:start",function(){this.trigger("openPanel:start:sr-aria",arguments[0])});this.bind("close:start",function(){this.trigger("close:start:sr-aria")});this.bind("close:finish",function(){this.trigger("close:finish:sr-aria")});this.bind("open:start",function(){this.trigger("open:start:sr-aria")});this.bind("initOpened:after",function(){this.trigger("initOpened:after:sr-aria")})}),this.bind("updateListview",function(){this.$pnls.find("."+t.listview).children().each(function(){o.__sr_aria(n(this),"hidden",n(this).is("."+t.hidden))})}),this.bind("openPanel:start",function(n){var i=this.$menu.find("."+t.panel).not(n).not(n.parents("."+t.panel)),r=n.add(n.find("."+t.listitem+"_vertical ."+t.listitem+"_opened").children("."+t.panel));this.__sr_aria(i,"hidden",!0);this.__sr_aria(r,"hidden",!1)}),this.bind("closePanel",function(n){this.__sr_aria(n,"hidden",!0)}),this.bind("initPanels:after",function(i){var r=i.find("."+t.btn).each(function(){o.__sr_aria(n(this),"owns",n(this).attr("href").replace("#",""))});this.__sr_aria(r,"haspopup",!0)}),this.bind("initNavbar:after",function(n){var i=n.children("."+t.navbar);this.__sr_aria(i,"hidden",!n.hasClass(t.panel+"_has-navbar"))}),f.text&&(this.bind("initlistview:after",function(n){var i=n.find("."+t.listview).find("."+t.btn+"_fullwidth").parent().children("span");this.__sr_aria(i,"hidden",!0)}),"parent"==this.opts.navbar.titleLink&&this.bind("initNavbar:after",function(n){var i=n.children("."+t.navbar),r=!!i.children("."+t.btn+"_prev").length;this.__sr_aria(i.children("."+t.title),"hidden",r)})));f.text&&(this.bind("initAddons:after",function(){this.bind("setPage:after",function(){this.trigger("setPage:after:sr-text",arguments[0])})}),this.bind("initNavbar:after",function(r){var u=r.children("."+t.navbar),f=u.children("."+t.title).text(),e=n[i].i18n(s.text.closeSubmenu);f&&(e+=" ("+f+")");u.children("."+t.btn+"_prev").html(this.__sr_text(e))}),this.bind("initListview:after",function(r){var f=r.data(u.parent);if(f&&f.length){var e=f.children("."+t.btn+"_next"),h=e.nextAll("span, a").first().text(),c=n[i].i18n(s.text[e.parent().is("."+t.listitem+"_vertical")?"toggleSubmenu":"openSubmenu"]);h&&(c+=" ("+h+")");e.html(o.__sr_text(c))}}))},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e;t.add("sronly")},clickAnchor:function(){}};n[i].defaults[r]={aria:!0,text:!0};n[i].configuration[r]={text:{closeMenu:"Close menu",closeSubmenu:"Close submenu",openSubmenu:"Open submenu",toggleSubmenu:"Toggle submenu"}};n[i].prototype.__sr_aria=function(n,t,i){n.prop("aria-"+t,i)[i?"attr":"removeAttr"]("aria-"+t,i)};n[i].prototype.__sr_role=function(n,t){n.prop("role",t)[t?"attr":"removeAttr"]("role",t)};n[i].prototype.__sr_text=function(n){return'<span class="'+t.sronly+'">'+n+"<\/span>"}}(n),!function(n){var r="mmenu",t="scrollBugFix",i,e,u,f;n[r].addons[t]={setup:function(){var u=this.opts[t];this.conf[t];f=n[r].glbl;n[r].support.touch&&this.opts.offCanvas&&this.opts.offCanvas.blockUI&&("boolean"==typeof u&&(u={fix:u}),"object"!=typeof u&&(u={}),u=this.opts[t]=n.extend(!0,{},n[r].defaults[t],u),u.fix&&(this.bind("open:start",function(){this.$pnls.children("."+i.panel+"_opened").scrollTop(0)}),this.bind("initMenu:after",function(){this["_initWindow_"+t]()})))},add:function(){i=n[r]._c;e=n[r]._d;u=n[r]._e},clickAnchor:function(){}};n[r].defaults[t]={fix:!0};n[r].prototype["_initWindow_"+t]=function(){var e=this,r;f.$docu.off(u.touchmove+"-"+t).on(u.touchmove+"-"+t,function(n){f.$html.hasClass(i.wrapper+"_opened")&&n.preventDefault()});r=!1;f.$body.off(u.touchstart+"-"+t).on(u.touchstart+"-"+t,"."+i.panels+"> ."+i.panel,function(n){f.$html.hasClass(i.wrapper+"_opened")&&(r||(r=!0,0===n.currentTarget.scrollTop?n.currentTarget.scrollTop=1:n.currentTarget.scrollHeight===n.currentTarget.scrollTop+n.currentTarget.offsetHeight&&(n.currentTarget.scrollTop-=1),r=!1))}).off(u.touchmove+"-"+t).on(u.touchmove+"-"+t,"."+i.panels+"> ."+i.panel,function(t){f.$html.hasClass(i.wrapper+"_opened")&&n(this)[0].scrollHeight>n(this).innerHeight()&&t.stopPropagation()});f.$wndw.off(u.orientationchange+"-"+t).on(u.orientationchange+"-"+t,function(){e.$pnls.children("."+i.panel+"_opened").scrollTop(0).css({"-webkit-overflow-scrolling":"auto"}).css({"-webkit-overflow-scrolling":"touch"})})}}(n),!function(n){var i="mmenu",r="autoHeight",t,f,u,e;n[i].addons[r]={setup:function(){var u=this.opts[r],f;this.conf[r];(e=n[i].glbl,"boolean"==typeof u&&u&&(u={height:"auto"}),"string"==typeof u&&(u={height:u}),"object"!=typeof u&&(u={}),u=this.opts[r]=n.extend(!0,{},n[i].defaults[r],u),"auto"==u.height||"highest"==u.height)&&(this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_autoheight")}),f=function(i){if(!this.opts.offCanvas||this.vars.opened){var f=Math.max(parseInt(this.$pnls.css("top"),10),0)||0,e=Math.max(parseInt(this.$pnls.css("bottom"),10),0)||0,r=0;this.$menu.addClass(t.menu+"_autoheight-measuring");"auto"==u.height?(i=i||this.$pnls.children("."+t.panel+"_opened"),i.parent("."+t.listitem+"_vertical").length&&(i=i.parents("."+t.panel).not(function(){return n(this).parent("."+t.listitem+"_vertical").length})),i.length||(i=this.$pnls.children("."+t.panel)),r=i.first().outerHeight()):"highest"==u.height&&this.$pnls.children("."+t.panel).each(function(){var i=n(this);i.parent("."+t.listitem+"_vertical").length&&(i=i.parents("."+t.panel).not(function(){return n(this).parent("."+t.listitem+"_vertical").length}));r=Math.max(r,i.first().outerHeight())});this.$menu.height(r+f+e).removeClass(t.menu+"_autoheight-measuring")}},this.opts.offCanvas&&this.bind("open:start",f),"highest"==u.height&&this.bind("initPanels:after",f),"auto"==u.height&&(this.bind("updateListview",f),this.bind("openPanel:start",f),this.bind("closePanel",f)))},add:function(){t=n[i]._c;f=n[i]._d;u=n[i]._e;u.add("resize")},clickAnchor:function(){}};n[i].defaults[r]={height:"default"}}(n),!function(n){var t="mmenu",i="backButton",r,u,f,e;n[t].addons[i]={setup:function(){function h(){f=[s];this.$pnls.children("."+r.panel+"_opened-parent").add(o.$pnls.children("."+r.panel+"_opened")).each(function(){f.push("#"+n(this).attr("id"))})}var o,u,s,f;this.opts.offCanvas&&(o=this,u=this.opts[i],this.conf[i],e=n[t].glbl,"boolean"==typeof u&&(u={close:u}),"object"!=typeof u&&(u={}),u=n.extend(!0,{},n[t].defaults[i],u),s="#"+this.$menu.attr("id"),u.close&&(f=[],this.bind("open:finish",function(){history.pushState(null,document.title,s)}),this.bind("open:finish",h),this.bind("openPanel:finish",h),this.bind("close:finish",function(){f=[];history.back();history.pushState(null,document.title,location.pathname+location.search)}),n(window).on("popstate",function(){if(o.vars.opened&&f.length){f=f.slice(0,-1);var t=f[f.length-1];t==s?o.close():(o.openPanel(n(t)),history.pushState(null,document.title,s))}})),u.open&&n(window).on("popstate",function(){o.vars.opened||location.hash!=s||o.open()}))},add:function(){return window.history&&window.history.pushState?(r=n[t]._c,u=n[t]._d,void(f=n[t]._e)):void(n[t].addons[i].setup=function(){})},clickAnchor:function(){}};n[t].defaults[i]={close:!1,open:!1}}(n),!function(n){var i="mmenu",r="columns",t,u,f,e;n[i].addons[r]={setup:function(){function a(n){var r=n.data(u.parent),i,f;if(r&&(r=r.closest("."+t.panel),r.length)&&(i=r.attr("class"),i&&(i=i.split(t.panel+"_columns-")[1])))for(i=parseInt(i.split(" ")[0],10)+1;i>0;){if(f=this.$pnls.children("."+t.panel+"_columns-"+i),!f.length){i=-1;break}i++;f.removeClass(c).addClass(t.hidden)}}var f=this.opts[r],c,l;if(this.conf[r],e=n[i].glbl,"boolean"==typeof f&&(f={add:f}),"number"==typeof f&&(f={add:!0,visible:f}),"object"!=typeof f&&(f={}),"number"==typeof f.visible&&(f.visible={min:f.visible,max:f.visible}),f=this.opts[r]=n.extend(!0,{},n[i].defaults[r],f),f.add){f.visible.min=Math.max(1,Math.min(6,f.visible.min));f.visible.max=Math.max(f.visible.min,Math.min(6,f.visible.max));for(var o="",s="",h=0;h<=f.visible.max;h++)o+=" "+t.menu+"_columns-"+h,s+=" "+t.panel+"_columns-"+h;o.length&&(o=o.slice(1),s=s.slice(1));c=s+" "+t.panel+"_opened "+t.panel+"_opened-parent "+t.panel+"_highest";l=function(i){var r=this.$pnls.children("."+t.panel+"_opened-parent").length;i.hasClass(t.panel+"_opened-parent")||r++;r=Math.min(f.visible.max,Math.max(f.visible.min,r));this.$menu.removeClass(o).addClass(t.menu+"_columns-"+r);this.$pnls.children("."+t.panel).removeClass(s).filter("."+t.panel+"_opened-parent").add(i).slice(-f.visible.max).each(function(i){n(this).addClass(t.panel+"_columns-"+i)})};this.bind("openPanel:before",a);this.bind("openPanel:start",l)}},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e},clickAnchor:function(){}};n[i].defaults[r]={add:!1,visible:{min:1,max:3}}}(n),!function(n){var t="mmenu",i="counters",r,u,f,e;n[t].addons[i]={setup:function(){var s=this,f=this.opts[i],o;this.conf[i];(e=n[t].glbl,"boolean"==typeof f&&(f={add:f,update:f}),"object"!=typeof f&&(f={}),f=this.opts[i]=n.extend(!0,{},n[t].defaults[i],f),this.bind("initListview:after",function(n){var t=this.conf.classNames[i].counter;this.__refactorClass(n.find("."+t),t,r.counter)}),f.add&&this.bind("initListview:after",function(t){var i;switch(f.addTo){case"panels":i=t;break;default:i=t.filter(f.addTo)}i.each(function(){var t=n(this).data(u.parent);t&&(t.children("."+r.counter).length||t.prepend(n('<em class="'+r.counter+'" />')))})}),f.update)&&(o=function(t){t=t||this.$pnls.children("."+r.panel);t.each(function(){var t=n(this),f=t.data(u.parent),i;f&&(i=f.children("em."+r.counter),i.length&&(t=t.children("."+r.listview),t.length&&i.html(s.__filterListItems(t.children()).length)))})},this.bind("initListview:after",o),this.bind("updateListview",o))},add:function(){r=n[t]._c;u=n[t]._d;f=n[t]._e;r.add("counter")},clickAnchor:function(){}};n[t].defaults[i]={add:!1,addTo:"panels",count:!1};n[t].configuration.classNames[i]={counter:"Counter"}}(n),!function(n){var r="mmenu",i="dividers",t,f,u,e;n[r].addons[i]={setup:function(){var s=this,f=this.opts[i],o;this.conf[i];(e=n[r].glbl,"boolean"==typeof f&&(f={add:f,fixed:f}),"object"!=typeof f&&(f={}),f=this.opts[i]=n.extend(!0,{},n[r].defaults[i],f),f.type&&this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_"+i+"-"+f.type)}),f.add&&this.bind("initListview:after",function(i){var r;switch(f.addTo){case"panels":r=i;break;default:r=i.filter(f.addTo)}r.length&&(r.children("."+t.listitem+"_divider").remove(),r.find("."+t.listview).each(function(){var i="";s.__filterListItems(n(this).children()).each(function(){var r=n.trim(n(this).children("a, span").text()).slice(0,1).toLowerCase();r!=i&&r.length&&(i=r,n('<li class="'+t.listitem+" "+t.listitem+'_divider">'+r+"<\/li>").insertBefore(this))})}))}),f.fixed)&&(this.bind("initPanels:after",function(){"undefined"==typeof this.$fixeddivider&&(this.$fixeddivider=n('<ul class="'+t.listview+" "+t.listview+'_fixeddivider"><li class="'+t.listitem+" "+t.listitem+'_divider"><\/li><\/ul>').appendTo(this.$pnls).children())}),o=function(i){if(i=i||this.$pnls.children("."+t.panel+"_opened"),!i.is(":hidden")){var f=i.find("."+t.listitem+"_divider").not("."+t.hidden),u=i.scrollTop()||0,r="";f.each(function(){n(this).position().top+u<u+1&&(r=n(this).text())});this.$fixeddivider.text(r);this.$pnls[r.length?"addClass":"removeClass"](t.panel+"_dividers")}},this.bind("open:start",o),this.bind("openPanel:start",o),this.bind("updateListview",o),this.bind("initPanel:after",function(n){n.off(u.scroll+"-"+i+" "+u.touchmove+"-"+i).on(u.scroll+"-"+i+" "+u.touchmove+"-"+i,function(){n.hasClass(t.panel+"_opened")&&o.call(s,n)})}))},add:function(){t=n[r]._c;f=n[r]._d;u=n[r]._e;u.add("scroll")},clickAnchor:function(){}};n[r].defaults[i]={add:!1,addTo:"panels",fixed:!1,type:null}}(n),!function(n){function f(n,t,i){return n<t&&(n=t),n>i&&(n=i),n}function o(r,u,e){var c,p,b,w=this,o={events:"panleft panright",typeLower:"x",typeUpper:"X",open_dir:"right",close_dir:"left",negative:!1},l="width",k=o.open_dir,tt=function(n){n<=r.maxStartPos&&(s=1)},it=function(){return n("."+t.slideout)},s=0,a=0,d=0,h=this.opts.extensions.all,g="undefined"==typeof h?"left":h.indexOf(t.mm("position-right"))>-1?"right":h.indexOf(t.mm("position-top"))>-1?"top":h.indexOf(t.mm("position-bottom"))>-1?"bottom":"left",rt="undefined"==typeof h?"back":h.indexOf(t.mm("position-top"))>-1||h.indexOf(t.mm("position-bottom"))>-1||h.indexOf(t.mm("position-front"))>-1?"front":"back",nt,v,y;switch(g){case"top":case"bottom":o.events="panup pandown";o.typeLower="y";o.typeUpper="Y";l="height"}switch(g){case"right":case"bottom":o.negative=!0;tt=function(n){n>=e.$wndw[l]()-r.maxStartPos&&(s=1)}}switch(g){case"right":o.open_dir="left";o.close_dir="right";break;case"top":o.open_dir="down";o.close_dir="up";break;case"bottom":o.open_dir="up";o.close_dir="down"}switch(rt){case"front":it=function(){return w.$menu}}v=this.__valueOrFn(this.$menu,r.node,e.$page);"string"==typeof v&&(v=n(v));y=new Hammer(v[0],this.opts[i].vendors.hammer);y.on("panstart",function(n){tt(n.center[o.typeLower]);nt=it();k=o.open_dir});y.on(o.events+" panend",function(n){s>0&&n.preventDefault()});y.on(o.events,function(n){if(c=n["delta"+o.typeUpper],o.negative&&(c=-c),c!=a&&(k=c>=a?o.open_dir:o.close_dir),a=c,a>r.threshold&&1==s){if(e.$html.hasClass(t.wrapper+"_opened"))return;s=2;w._openSetup();w.trigger("open:start");e.$html.addClass(t.dragging);d=f(e.$wndw[l]()*u[l].perc,u[l].min,u[l].max)}2==s&&(p=f(a,10,d)-("front"==rt?d:0),o.negative&&(p=-p),b="translate"+o.typeUpper+"("+p+"px )",nt.css({"-webkit-transform":"-webkit-"+b,transform:b}))});y.on("panend",function(){2==s&&(e.$html.removeClass(t.dragging),nt.css("transform",""),w[k==o.open_dir?"_openFinish":"close"]());s=0})}function s(n){var u=this,f=n.data(e.parent),o,r;if(f){f=f.closest("."+t.panel);o=new Hammer(n[0],u.opts[i].vendors.hammer);r=null;o.on("panright",function(){r||(u.openPanel(f),r=setTimeout(function(){clearTimeout(r);r=null},u.conf.openingInterval+u.conf.transitionDuration))})}}var r="mmenu",i="drag",t,e,h,u;n[r].addons[i]={setup:function(){if(this.opts.offCanvas){var t=this.opts[i],f=this.conf[i];u=n[r].glbl;"boolean"==typeof t&&(t={menu:t,panels:t});"object"!=typeof t&&(t={});"boolean"==typeof t.menu&&(t.menu={open:t.menu});"object"!=typeof t.menu&&(t.menu={});"boolean"==typeof t.panels&&(t.panels={close:t.panels});"object"!=typeof t.panels&&(t.panels={});t=this.opts[i]=n.extend(!0,{},n[r].defaults[i],t);t.menu.open&&this.bind("setPage:after",function(){o.call(this,t.menu,f.menu,u)});t.panels.close&&this.bind("initPanel:after",function(n){s.call(this,n,t.panels,f.panels,u)})}},add:function(){return"function"!=typeof Hammer||Hammer.VERSION<2?(n[r].addons[i].add=function(){},void(n[r].addons[i].setup=function(){})):(t=n[r]._c,e=n[r]._d,h=n[r]._e,void t.add("dragging"))},clickAnchor:function(){}};n[r].defaults[i]={menu:{open:!1,maxStartPos:100,threshold:50},panels:{close:!1},vendors:{hammer:{}}};n[r].configuration[i]={menu:{width:{perc:.8,min:140,max:440},height:{perc:.8,min:140,max:880}},panels:{}}}(n),!function(n){var r="mmenu",t="dropdown",i,e,f,u;n[r].addons[t]={setup:function(){var c,a,l;if(this.opts.offCanvas){var h=this,o=this.opts[t],s=this.conf[t];(u=n[r].glbl,"boolean"==typeof o&&o&&(o={drop:o}),"object"!=typeof o&&(o={}),"string"==typeof o.position&&(o.position={of:o.position}),o=this.opts[t]=n.extend(!0,{},n[r].defaults[t],o),o.drop)&&(this.bind("initMenu:after",function(){if(this.$menu.addClass(i.menu+"_"+t),"string"!=typeof o.position.of){var r=this._getOriginalMenuId();r&&r.length&&(o.position.of='[href="#'+r+'"]')}"string"==typeof o.position.of&&(c=n(o.position.of),o.event=o.event.split(" "),1==o.event.length&&(o.event[1]=o.event[0]),"hover"==o.event[0]&&c.on(f.mouseenter+"-"+t,function(){h.open()}),"hover"==o.event[1]&&this.$menu.on(f.mouseleave+"-"+t,function(){h.close()}))}),this.bind("open:start",function(){this.$menu.data(e.style,this.$menu.attr("style")||"");u.$html.addClass(i.wrapper+"_dropdown")}),this.bind("close:finish",function(){this.$menu.attr("style",this.$menu.data(e.style));u.$html.removeClass(i.wrapper+"_dropdown")}),a=function(n,t){var r=t[0],l=t[1],d="x"==n?"scrollLeft":"scrollTop",g="x"==n?"outerWidth":"outerHeight",a="x"==n?"left":"top",p="x"==n?"right":"bottom",w="x"==n?"width":"height",nt="x"==n?"maxWidth":"maxHeight",e=null,tt=u.$wndw[d](),h=c.offset()[a]-=tt,v=h+c[g](),b=u.$wndw[w](),k=s.offset.button[n]+s.offset.viewport[n],f,y;if(o.position[n])switch(o.position[n]){case"left":case"bottom":e="after";break;case"right":case"top":e="before"}return null===e&&(e=h+(v-h)/2<b/2?"after":"before"),"after"==e?(f="x"==n?h:v,y=b-(f+k),r[a]=f+s.offset.button[n],r[p]="auto",o.tip&&l.push(i.menu+"_tip-"+("x"==n?"left":"top"))):(f="x"==n?v:h,y=f-k,r[p]="calc( 100% - "+(f-s.offset.button[n])+"px )",r[a]="auto",o.tip&&l.push(i.menu+"_tip-"+("x"==n?"right":"bottom"))),r[nt]=Math.min(s[w].max,y),[r,l]},l=function(){if(this.vars.opened){this.$menu.attr("style",this.$menu.data(e.style));var n=[{},[]];n=a.call(this,"y",n);n=a.call(this,"x",n);this.$menu.css(n[0]);o.tip&&this.$menu.removeClass(i.tipleft+" "+i.tipright+" "+i.tiptop+" "+i.tipbottom).addClass(n[1].join(" "))}},this.bind("open:start",l),u.$wndw.on(f.resize+"-"+t,function(){l.call(h)}),this.opts.offCanvas.blockUI||u.$wndw.on(f.scroll+"-"+t,function(){l.call(h)}))}},add:function(){i=n[r]._c;e=n[r]._d;f=n[r]._e;i.add("dropdown");f.add("mouseenter mouseleave resize scroll")},clickAnchor:function(){}};n[r].defaults[t]={drop:!1,event:"click",position:{},tip:!0};n[r].configuration[t]={offset:{button:{x:-5,y:5},viewport:{x:20,y:20}},height:{max:880},width:{max:440}}}(n),!function(n){var t="mmenu",i="fixedElements",r,f,e,u;n[t].addons[i]={setup:function(){var f,e;this.opts.offCanvas&&(f=(this.opts[i],this.conf[i]),u=n[t].glbl,e=function(t){var s=this.conf.classNames[i].fixed,h=t.find("."+s),o,e;this.__refactorClass(h,s,r.slideout);h[f.elemInsertMethod](f.elemInsertSelector);o=this.conf.classNames[i].sticky;e=t.find("."+o);this.__refactorClass(e,o,r.sticky);e=t.find("."+r.sticky);e.length&&(this.bind("open:start",function(){if("hidden"==u.$html.css("overflow")){var t=u.$wndw.scrollTop()+f.sticky.offset;e.each(function(){n(this).css("top",parseInt(n(this).css("top"),10)+t)})}}),this.bind("close:finish",function(){e.css("top","")}))},this.bind("setPage:after",e))},add:function(){r=n[t]._c;f=n[t]._d;e=n[t]._e;r.add("sticky")},clickAnchor:function(){}};n[t].configuration[i]={sticky:{offset:0},elemInsertMethod:"appendTo",elemInsertSelector:"body"};n[t].configuration.classNames[i]={fixed:"Fixed",sticky:"Sticky"}}(n),!function(n){var i="mmenu",r="iconbar",t,u,f,e;n[i].addons[r]={setup:function(){function c(n){var r,i;h.removeClass(t.iconbar+"__tab_selected");r=h.filter('[href="#'+n.attr("id")+'"]');r.length?r.addClass(t.iconbar+"__tab_selected"):(i=n.data(u.parent),i&&i.length&&c(i.closest("."+t.panel)))}var l=this,s=this.opts[r],o,h;this.conf[r];(e=n[i].glbl,s instanceof Array&&(s={add:!0,top:s}),s.add)&&(o=null,(n.each(["top","bottom"],function(i,r){var u=s[r];u instanceof Array||(u=[u]);for(var f=n('<div class="'+t.iconbar+"__"+r+'" />'),e=0,h=u.length;e<h;e++)f.append(u[e]);f.children().length&&(o||(o=n('<div class="'+t.iconbar+'" />')),o.append(f))}),o&&(this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_iconbar-"+s.size).prepend(o)}),"tabs"==s.type))&&(o.addClass(t.iconbar+"_tabs"),h=o.find("a"),h.on(f.click+"-"+r,function(i){var u=n(this),r;if(u.hasClass(t.iconbar+"__tab_selected"))return void i.stopImmediatePropagation();try{r=n(u.attr("href"));r.hasClass(t.panel)&&(i.preventDefault(),i.stopImmediatePropagation(),l.__openPanelWoAnimation(r))}catch(f){}}),this.bind("openPanel:start",c)))},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e;t.add(r)},clickAnchor:function(){}};n[i].defaults[r]={add:!1,size:40,top:[],bottom:[]};n[i].configuration[r]={}}(n),!function(n){var i="mmenu",r="iconPanels",t,u,f,e;n[i].addons[r]={setup:function(){var s=this,u=this.opts[r],c=(this.conf[r],!1),f,o,h;if(e=n[i].glbl,"boolean"==typeof u&&(u={add:u}),"number"!=typeof u&&"string"!=typeof u||(u={add:!0,visible:u}),"object"!=typeof u&&(u={}),"first"==u.visible&&(c=!0,u.visible=1),u=this.opts[r]=n.extend(!0,{},n[i].defaults[r],u),u.visible=Math.min(3,Math.max(1,u.visible)),u.visible++,u.add){for(f="",o=0;o<=u.visible;o++)f+=" "+t.panel+"_iconpanel-"+o;f.length&&(f=f.slice(1));h=function(i){if(!i.parent("."+t.listitem+"_vertical").length){var r=s.$pnls.children("."+t.panel).removeClass(f);c&&r.removeClass(t.panel+"_iconpanel-first").first().addClass(t.panel+"_iconpanel-first");r.filter("."+t.panel+"_opened-parent").removeClass(t.hidden).not(function(){return n(this).parent("."+t.listitem+"_vertical").length}).add(i).slice(-u.visible).each(function(i){n(this).addClass(t.panel+"_iconpanel-"+i)})}};this.bind("initMenu:after",function(){var n=[t.menu+"_iconpanel-"+u.size];u.hideNavbar&&n.push(t.menu+"_hidenavbar");u.hideDivider&&n.push(t.menu+"_hidedivider");this.$menu.addClass(n.join(" "))});this.bind("openPanel:start",h);this.bind("initPanels:after",function(){h.call(s,s.$pnls.children("."+t.panel+"_opened"))});this.bind("initListview:after",function(n){!u.blockPanel||n.parent("."+t.listitem+"_vertical").length||n.children("."+t.panel+"__blocker").length||n.prepend('<a href="#'+n.closest("."+t.panel).attr("id")+'" class="'+t.panel+'__blocker" />')})}},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e},clickAnchor:function(){}};n[i].defaults[r]={add:!1,blockPanel:!0,hideDivider:!1,hideNavbar:!0,size:40,visible:3}}(n),!function(n){function o(i,r){i=i||this.$pnls.children("."+t.panel+"_opened");var u=n(),f=this.$menu.children("."+t.mm("navbars_top")+", ."+t.mm("navbars_bottom")).children("."+t.navbar);f.find(e).filter(":focus").length||("default"==r&&(u=i.children("."+t.listview).find("a[href]").not("."+t.hidden),u.length||(u=i.find(e).not("."+t.hidden)),u.length||(u=f.find(e).not("."+t.hidden))),u.length||(u=this.$menu.children("."+t.tabstart)),u.first().focus())}var r="mmenu",i="keyboardNavigation",t,s,u,f,e;n[r].addons[i]={setup:function(){var u,e,s;n[r].support.touch||(u=this.opts[i],this.conf[i],(f=n[r].glbl,"boolean"!=typeof u&&"string"!=typeof u||(u={enable:u}),"object"!=typeof u&&(u={}),u=this.opts[i]=n.extend(!0,{},n[r].defaults[i],u),u.enable)&&(e=n('<button class="'+t.tabstart+'" tabindex="0" type="button" />'),s=n('<button class="'+t.tabend+'" tabindex="0" type="button" />'),this.bind("initMenu:after",function(){u.enhance&&this.$menu.addClass(t.menu+"_keyboardfocus");this["_initWindow_"+i](u.enhance)}),this.bind("initOpened:before",function(){this.$menu.prepend(e).append(s).children("."+t.mm("navbars-top")+", ."+t.mm("navbars-bottom")).children("."+t.navbar).children("a."+t.title).attr("tabindex",-1)}),this.bind("open:finish",function(){o.call(this,null,u.enable)}),this.bind("openPanel:finish",function(n){o.call(this,n,u.enable)}),this.bind("initOpened:after:sr-aria",function(){var n=this.$menu.children("."+t.tabstart+", ."+t.tabend);this.__sr_aria(n,"hidden",!0);this.__sr_role(n,"presentation")})))},add:function(){t=n[r]._c;s=n[r]._d;u=n[r]._e;t.add("tabstart tabend");u.add("focusin keydown")},clickAnchor:function(){}};n[r].defaults[i]={enable:!1,enhance:!1};n[r].configuration[i]={};n[r].prototype["_initWindow_"+i]=function(r){f.$wndw.off(u.keydown+"-offCanvas");f.$wndw.off(u.focusin+"-"+i).on(u.focusin+"-"+i,function(i){if(f.$html.hasClass(t.wrapper+"_opened")){var r=n(i.target);r.is("."+t.tabend)&&r.parent().find("."+t.tabstart).focus()}});f.$wndw.off(u.keydown+"-"+i).on(u.keydown+"-"+i,function(i){var r=n(i.target),f=r.closest("."+t.menu);if(f.length&&(f.data("mmenu"),!r.is("input, textarea")))switch(i.keyCode){case 13:(r.is(".mm-toggle")||r.is(".mm-check"))&&r.trigger(u.click);break;case 32:case 37:case 38:case 39:case 40:i.preventDefault()}});r&&f.$wndw.off(u.keydown+"-"+i).on(u.keydown+"-"+i,function(i){var f=n(i.target),r=f.closest("."+t.menu),e,u;if(r.length)if(e=r.data("mmenu"),f.is("input"))switch(i.keyCode){case 27:f.val("")}else switch(i.keyCode){case 8:u=r.find("."+t.panel+"_opened").data(s.parent);u&&u.length&&e.openPanel(u.closest("."+t.panel));break;case 27:r.hasClass(t.menu+"_offcanvas")&&e.close()}})};e="input, select, textarea, button, label, a[href]"}(n),!function(n){var i="mmenu",r="lazySubmenus",t,u,f,e;n[i].addons[r]={setup:function(){var u=this.opts[r];this.conf[r];e=n[i].glbl;"boolean"==typeof u&&(u={load:u});"object"!=typeof u&&(u={});u=this.opts[r]=n.extend(!0,{},n[i].defaults[r],u);u.load&&(this.bind("initMenu:after",function(){this.$pnls.find("li").children(this.conf.panelNodetype).not("."+t.inset).not("."+t.nolistview).not("."+t.nopanel).addClass(t.panel+"_lazysubmenu "+t.nolistview+" "+t.nopanel)}),this.bind("initPanels:before",function(n){n=n||this.$pnls.children(this.conf.panelNodetype);this.__findAddBack(n,"."+t.panel+"_lazysubmenu").not("."+t.panel+"_lazysubmenu ."+t.panel+"_lazysubmenu").removeClass(t.panel+"_lazysubmenu "+t.nolistview+" "+t.nopanel)}),this.bind("initOpened:before",function(){var n=this.$pnls.find("."+this.conf.classNames.selected).parents("."+t.panel+"_lazysubmenu");n.length&&(n.removeClass(t.panel+"_lazysubmenu "+t.nolistview+" "+t.nopanel),this.initPanels(n.last()))}),this.bind("openPanel:before",function(n){var i=this.__findAddBack(n,"."+t.panel+"_lazysubmenu").not("."+t.panel+"_lazysubmenu ."+t.panel+"_lazysubmenu");i.length&&this.initPanels(i)}))},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e},clickAnchor:function(){}};n[i].defaults[r]={load:!1};n[i].configuration[r]={}}(n),!function(n){var t="mmenu",i="navbars",r,u,f,e;n[t].addons[i]={setup:function(){var s=this,u=this.opts[i],h=this.conf[i],f,o;(e=n[t].glbl,"undefined"!=typeof u)&&(u instanceof Array||(u=[u]),f={},o={},u.length&&(n.each(u,function(e){var c=u[e],a,v,l,p,b,y,w;"boolean"==typeof c&&c&&(c={});"object"!=typeof c&&(c={});"undefined"==typeof c.content&&(c.content=["prev","title"]);c.content instanceof Array||(c.content=[c.content]);c=n.extend(!0,{},s.opts.navbar,c);a=n('<div class="'+r.navbar+'" />');v=c.height;"number"!=typeof v?v=1:(v=Math.min(4,Math.max(1,v)),v>1&&a.addClass(r.navbar+"_size-"+v));l=c.position;switch(l){case"bottom":break;default:l="top"}for(f[l]||(f[l]=0),f[l]+=v,o[l]||(o[l]=n('<div class="'+r.navbars+"_"+l+'" />')),o[l].append(a),p=0,b=c.content.length;p<b;p++)y=n[t].addons[i][c.content[p]]||null,y?y.call(s,a,c,h):(y=c.content[p],y instanceof n||(y=n(c.content[p])),a.append(y));w=n[t].addons[i][c.type]||null;w&&w.call(s,a,c,h);a.children("."+r.btn).length&&a.addClass(r.navbar+"_has-btns")}),this.bind("initMenu:after",function(){for(var n in f)this.$menu.addClass(r.menu+"_navbar_"+n+"-"+f[n]),this.$menu["bottom"==n?"append":"prepend"](o[n])})))},add:function(){r=n[t]._c;u=n[t]._d;f=n[t]._e;r.add(i)},clickAnchor:function(){}};n[t].configuration[i]={breadcrumbs:{separator:"/",removeFirst:!1}};n[t].configuration.classNames[i]={}}(n),!function(n){function e(n){u&&u.length&&u.is(":visible")&&i.$html.add(i.$body).animate({scrollTop:u.offset().top+n});u=!1}function o(n){try{return!("#"==n||"#"!=n.slice(0,1)||!i.$page.find(n).length)}catch(t){return!1}}var r="mmenu",t="pageScroll",f,h,s,i,u;n[r].addons[t]={setup:function(){var h=this,u=this.opts[t],a=this.conf[t],l;if(i=n[r].glbl,"boolean"==typeof u&&(u={scroll:u}),u=this.opts[t]=n.extend(!0,{},n[r].defaults[t],u),u.scroll&&this.bind("close:finish",function(){e(a.scrollOffset)}),u.update){var h=this,v=[],c=[];h.bind("initListview:after",function(t){h.__filterListItemAnchors(t.find("."+f.listview).children("li")).each(function(){var t=n(this).attr("href");o(t)&&v.push(t)});c=v.reverse()});l=-1;i.$wndw.on(s.scroll+"-"+t,function(){for(var r=i.$wndw.scrollTop(),t=0;t<c.length;t++)if(n(c[t]).offset().top<r+a.updateOffset){l!==t&&(l=t,h.setSelected(h.__filterListItemAnchors(h.$pnls.children("."+f.panel+"_opened").find("."+f.listview).children("li")).filter('[href="'+c[t]+'"]').parent()));break}})}},add:function(){f=n[r]._c;h=n[r]._d;s=n[r]._e},clickAnchor:function(r,s,h){if(u=!1,s&&h&&this.opts.offCanvas&&this.opts[t].scroll&&i.$page&&i.$page.length){var c=r.attr("href");if(o(c)){if(u=n(c),!this.$menu.hasClass(f.mm("sidebar-expanded"))||!i.$html.is('[class*="'+f.mm("sidebar-expanded")+'"]'))return{close:!0};e(this.conf[t].scrollOffset)}}}};n[r].defaults[t]={scroll:!1,update:!1};n[r].configuration[t]={scrollOffset:0,updateOffset:50};u=!1}(n),!function(n){function e(n,t){if(t)for(var i in t)n.attr(i,t[i])}function o(n){switch(n){case 9:case 16:case 17:case 18:case 37:case 38:case 39:case 40:return!0}return!1}var r="mmenu",i="searchfield",t,f,u,s;n[r].addons[i]={setup:function(){var f=this,u=this.opts[i],e=this.conf[i];s=n[r].glbl;"boolean"==typeof u&&(u={add:u});"object"!=typeof u&&(u={});"boolean"==typeof u.panel&&(u.panel={add:u.panel});"object"!=typeof u.panel&&(u.panel={});u.add&&("panel"==u.addTo&&(u.panel.add=!0),u.panel.add&&(u.showSubPanels=!1,u.panel.splash&&(u.cancel=!0)),u=this.opts[i]=n.extend(!0,{},n[r].defaults[i],u),e=this.conf[i]=n.extend(!0,{},n[r].configuration[i],e),this.bind("close:start",function(){this.$menu.find("."+t.searchfield).children("input").blur()}),this.bind("initPanels:after",function(t){var r=n(),i,e;u.panel.add&&(r=this._initSearchPanel(t));switch(u.addTo){case"panels":i=t;break;case"panel":i=r;break;default:i=this.$menu.find(u.addTo)}(i.each(function(){var t=f._initSearchfield(n(this));u.search&&f._initSearching(t)}),u.noResults)&&(e=u.panel.add?r:t,e.each(function(){f._initNoResultsMsg(n(this))}))}))},add:function(){t=n[r]._c;f=n[r]._d;u=n[r]._e;t.add("searchfield");f.add("searchfield");u.add("input focus blur")},clickAnchor:function(n){if(n.hasClass(t.searchfield+"__btn")){if(n.hasClass(t.btn+"_clear")){var i=n.closest("."+t.searchfield).find("input");return i.val(""),this.search(i),!0}if(n.hasClass(t.btn+"_next"))return n.closest("."+t.searchfield).submit(),!0}}};n[r].defaults[i]={add:!1,addTo:"panels",noResults:"No results found.",placeholder:"Search",panel:{add:!1,dividers:!0,fx:"none",id:null,splash:null,title:"Search"},search:!0,showTextItems:!1,showSubPanels:!0};n[r].configuration[i]={clear:!1,form:!1,input:!1,submit:!1};n[r].prototype._initSearchPanel=function(){var r=this.opts[i],u;if(this.conf[i],this.$pnls.children("."+t.panel+"_search").length)return n();u=n('<div class="'+t.panel+'_search " />').append("<ul />").appendTo(this.$pnls);switch(r.panel.id&&u.attr("id",r.panel.id),r.panel.title&&u.attr("data-mm-title",r.panel.title),r.panel.fx){case!1:break;case"none":u.addClass(t.panel+"_noanimation");break;default:u.addClass(t.panel+"_fx-"+r.panel.fx)}return r.panel.splash&&u.append('<div class="'+t.panel+'__searchsplash">'+r.panel.splash+"<\/div>"),this._initPanels(u),u};n[r].prototype._initSearchfield=function(u){var h=this.opts[i],f=this.conf[i];if(!u.parent("."+t.listitem+"_vertical").length&&!u.find("."+t.searchfield).length){var o=n("<"+(f.form?"form":"div")+' class="'+t.searchfield+'" />'),s=n('<div class="'+t.searchfield+'__input" />'),c=n('<input placeholder="'+n[r].i18n(h.placeholder)+'" type="text" autocomplete="off" />');return s.append(c).appendTo(o),u.hasClass(t.searchfield)?u.replaceWith(o):(u.prepend(o),u.hasClass(t.panel)&&u.addClass(t.panel+"_has-searchfield")),e(c,f.input),f.clear&&n('<a class="'+t.btn+" "+t.btn+"_clear "+t.searchfield+'__btn" href="#" />').appendTo(s),e(o,f.form),f.form&&f.submit&&!f.clear&&n('<a class="'+t.btn+" "+t.btn+"_next "+t.searchfield+'__btn" href="#" />').appendTo(s),h.cancel&&n('<a href="#" class="'+t.searchfield+'__cancel">'+n[r].i18n("cancel")+"<\/a>").appendTo(o),o}};n[r].prototype._initSearching=function(r){var c=this,s=this.opts[i],e=(this.conf[i],{});r.closest("."+t.panel+"_search").length?(e.$pnls=this.$pnls.find("."+t.panel),e.$nrsp=r.closest("."+t.panel)):r.closest("."+t.panel).length?(e.$pnls=r.closest("."+t.panel),e.$nrsp=e.$pnls):(e.$pnls=this.$pnls.find("."+t.panel),e.$nrsp=this.$menu);s.panel.add&&(e.$pnls=e.$pnls.not("."+t.panel+"_search"));var h=r.find("input"),a=r.find("."+t.searchfield+"__cancel"),l=this.$pnls.children("."+t.panel+"_search"),v=e.$pnls.find("."+t.listitem);e.$itms=v.not("."+t.listitem+"_divider");e.$dvdr=v.filter("."+t.listitem+"_divider");s.panel.add&&s.panel.splash&&h.off(u.focus+"-"+i+"-splash").on(u.focus+"-"+i+"-splash",function(){c.openPanel(l)});s.cancel&&(h.off(u.focus+"-"+i+"-cancel").on(u.focus+"-"+i+"-cancel",function(){a.addClass(t.searchfield+"__cancel-active")}),a.off(u.click+"-"+i+"-splash").on(u.click+"-"+i+"-splash",function(i){i.preventDefault();n(this).removeClass(t.searchfield+"__cancel-active");l.hasClass(t.panel+"_opened")&&c.openPanel(c.$pnls.children("."+t.panel+"_opened-parent").last())}));s.panel.add&&"panel"==s.addTo&&this.bind("openPanel:finish",function(n){n[0]===l[0]&&h.focus()});h.data(f.searchfield,e).off(u.input+"-"+i).on(u.input+"-"+i,function(n){o(n.keyCode)||c.search(h)});this.search(h)};n[r].prototype._initNoResultsMsg=function(u){var o=this.opts[i],f,e;this.conf[i];(u.closest("."+t.panel).length||(u=this.$pnls.children("."+t.panel).first()),u.children("."+t.panel+"__noresultsmsg").length)||(f=u.children("."+t.listview).first(),e=n('<div class="'+t.panel+"__noresultsmsg "+t.hidden+'" />').append(n[r].i18n(o.noResults)),f.length?e.insertAfter(f):e.prependTo(u))};n[r].prototype.search=function(r,u){var h=this,e=this.opts[i],o;this.conf[i];r=r||this.$menu.find("."+t.searchfield).chidren("input").first();u=u||r.val();u=u.toLowerCase().trim();var w="a",b="a, span",a=r.data(f.searchfield),k=r.closest("."+t.searchfield),y=k.find("."+t.btn),c=this.$pnls.children("."+t.panel+"_search"),l=a.$pnls,s=a.$itms,v=a.$dvdr,p=a.$nrsp;(s.removeClass(t.listitem+"_nosubitems").find("."+t.btn+"_fullwidth-search").removeClass(t.btn+"_fullwidth-search "+t.btn+"_fullwidth"),c.children("."+t.listview).empty(),l.scrollTop(0),u.length)?((s.add(v).addClass(t.hidden),s.each(function(){var i=n(this),r=w;(e.showTextItems||e.showSubPanels&&i.find("."+t.btn+"_next"))&&(r=b);i.children(r).not("."+t.btn+"_next").text().toLowerCase().indexOf(u)>-1&&i.removeClass(t.hidden)}),e.panel.add)?(o=n(),l.each(function(){var i=h.__filterListItems(n(this).find("."+t.listitem)).clone(!0);i.length&&(e.panel.dividers&&(o=o.add('<li class="'+t.listitem+" "+t.listitem+'_divider">'+n(this).find("."+t.navbar+"__title").text()+"<\/li>")),o=o.add(i))}),o.find("."+t.mm("toggle")).remove().end().find("."+t.mm("check")).remove().end().find("."+t.btn).remove(),c.children("."+t.listview).append(o),this.openPanel(c)):(e.showSubPanels&&l.each(function(){var i=n(this);h.__filterListItems(i.find("."+t.listitem)).each(function(){var r=n(this),i=r.data(f.child);i&&i.find("."+t.listview).children().removeClass(t.hidden)})}),n(l.get().reverse()).each(function(i){var e=n(this),u=e.data(f.parent);u&&(h.__filterListItems(e.find("."+t.listitem)).length?u.hasClass(t.hidden)&&u.removeClass(t.hidden).children("."+t.btn+"_next").not("."+t.btn+"_fullwidth").addClass(t.btn+"_fullwidth").addClass(t.btn+"_fullwidth-search"):r.closest("."+t.panel).length||((e.hasClass(t.panel+"_opened")||e.hasClass(t.panel+"_opened-parent"))&&setTimeout(function(){h.openPanel(u.closest("."+t.panel))},(i+1)*1.5*h.conf.openingInterval),u.addClass(t.listitem+"_nosubitems")))}),this.__filterListItems(l.find("."+t.listitem)).each(function(){n(this).prevAll("."+t.listitem+"_divider").first().removeClass(t.hidden)})),y.removeClass(t.hidden),p.find("."+t.panel+"__noresultsmsg")[s.not("."+t.hidden).length?"addClass":"removeClass"](t.hidden),e.panel.add&&(e.panel.splash&&c.find("."+t.panel+"__searchsplash").addClass(t.hidden),s.add(v).removeClass(t.hidden))):(s.add(v).removeClass(t.hidden),y.addClass(t.hidden),p.find("."+t.panel+"__noresultsmsg").addClass(t.hidden),e.panel.add&&(e.panel.splash?c.find("."+t.panel+"__searchsplash").removeClass(t.hidden):r.closest("."+t.panel+"_search").length||this.openPanel(this.$pnls.children("."+t.panel+"_opened-parent").last())));this.trigger("updateListview")}}(n),!function(n){var t="mmenu",i="rtl",r,f,e,u;n[t].addons[i]={setup:function(){var f=this.opts[i];this.conf[i];u=n[t].glbl;"object"!=typeof f&&(f={use:f});f=this.opts[i]=n.extend(!0,{},n[t].defaults[i],f);"boolean"!=typeof f.use&&(f.use="rtl"==(u.$html.attr("dir")||"").toLowerCase());f.use&&this.bind("initMenu:after",function(){this.$menu.addClass(r.menu+"_rtl")})},add:function(){r=n[t]._c;f=n[t]._d;e=n[t]._e},clickAnchor:function(){}};n[t].defaults[i]={use:"detect"}}(n),!function(n){var r="mmenu",i="sectionIndexer",t,f,u,e;n[r].addons[i]={setup:function(){var s=this,f=this.opts[i],o;this.conf[i];e=n[r].glbl;"boolean"==typeof f&&(f={add:f});"object"!=typeof f&&(f={});f=this.opts[i]=n.extend(!0,{},n[r].defaults[i],f);o=null;this.bind("initPanels:after",function(r){var e,h;if(f.add){switch(f.addTo){case"panels":e=r;break;default:e=n(f.addTo,this.$menu).filter("."+t.panel)}e.find("."+t.listitem+"_divider").closest("."+t.panel).addClass(t.panel+"_has-sectionindexer");o||(o=n('<div class="'+t.sectionindexer+'" />').prependTo(this.$menu).append('<a href="#a">a<\/a><a href="#b">b<\/a><a href="#c">c<\/a><a href="#d">d<\/a><a href="#e">e<\/a><a href="#f">f<\/a><a href="#g">g<\/a><a href="#h">h<\/a><a href="#i">i<\/a><a href="#j">j<\/a><a href="#k">k<\/a><a href="#l">l<\/a><a href="#m">m<\/a><a href="#n">n<\/a><a href="#o">o<\/a><a href="#p">p<\/a><a href="#q">q<\/a><a href="#r">r<\/a><a href="#s">s<\/a><a href="#t">t<\/a><a href="#u">u<\/a><a href="#v">v<\/a><a href="#w">w<\/a><a href="#x">x<\/a><a href="#y">y<\/a><a href="#z">z<\/a>'),o.on(u.mouseover+"-"+i+" "+u.touchstart+"-"+i,"a",function(i){var f=n(i.target).attr("href").slice(1),r=s.$pnls.children("."+t.panel+"_opened"),e=r.find("."+t.listview),u=-1,o=r.scrollTop();r.scrollTop(0);e.children("."+t.listitem+"_divider").not("."+t.hidden).each(function(){u<0&&f==n(this).text().slice(0,1).toLowerCase()&&(u=n(this).position().top)});r.scrollTop(u>-1?u:o)}));h=function(n){n=n||this.$pnls.children("."+t.panel+"_opened");this.$menu[(n.hasClass(t.panel+"_has-sectionindexer")?"add":"remove")+"Class"](t.menu+"_has-sectionindexer")};this.bind("openPanel:start",h);this.bind("initPanels:after",h)}})},add:function(){t=n[r]._c;f=n[r]._d;u=n[r]._e;t.add("sectionindexer");u.add("mouseover")},clickAnchor:function(n){if(n.parent().is("."+t.indexer))return!0}};n[r].defaults[i]={add:!1,addTo:"panels"}}(n),!function(n){var i="mmenu",r="setSelected",t,u,f,e;n[i].addons[r]={setup:function(){var s=this,f=this.opts[r],o;this.conf[r];(e=n[i].glbl,"boolean"==typeof f&&(f={hover:f,parent:f}),"object"!=typeof f&&(f={}),f=this.opts[r]=n.extend(!0,{},n[i].defaults[r],f),"detect"==f.current)?(o=function(n){n=n.split("?")[0].split("#")[0];var t=s.$menu.find('a[href="'+n+'"], a[href="'+n+'/"]');t.length?s.setSelected(t.parent(),!0):(n=n.split("/").slice(0,-1),n.length&&o(n.join("/")))},this.bind("initMenu:after",function(){o(window.location.href)})):f.current||this.bind("initListview:after",function(n){n.find("."+t.listview).children("."+t.listitem+"_selected").removeClass(t.listitem+"_selected")});f.hover&&this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_selected-hover")});f.parent&&(this.bind("openPanel:finish",function(n){this.$pnls.find("."+t.listview).find("."+t.listitem+"_selected-parent").removeClass(t.listitem+"_selected-parent");for(var i=n.data(u.parent);i;)i.not("."+t.listitem+"_vertical").addClass(t.listitem+"_selected-parent"),i=i.closest("."+t.panel).data(u.parent)}),this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_selected-parent")}))},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e},clickAnchor:function(){}};n[i].defaults[r]={current:!0,hover:!1,parent:!1}}(n),!function(n){var r="mmenu",u="sidebar",t,f,e,i;n[r].addons[u]={setup:function(){var f,o,e;this.opts.offCanvas&&(f=this.opts[u],this.conf[u],i=n[r].glbl,("string"==typeof f||"boolean"==typeof f&&f||"number"==typeof f)&&(f={expanded:f}),"object"!=typeof f&&(f={}),"boolean"==typeof f.collapsed&&f.collapsed&&(f.collapsed="all"),"string"!=typeof f.collapsed&&"number"!=typeof f.collapsed||(f.collapsed={use:f.collapsed}),"object"!=typeof f.collapsed&&(f.collapsed={}),"number"==typeof f.collapsed.use&&(f.collapsed.use="(min-width: "+f.collapsed.use+"px)"),"boolean"==typeof f.expanded&&f.expanded&&(f.expanded="all"),"string"!=typeof f.expanded&&"number"!=typeof f.expanded||(f.expanded={use:f.expanded}),"object"!=typeof f.expanded&&(f.expanded={}),"number"==typeof f.expanded.use&&(f.expanded.use="(min-width: "+f.expanded.use+"px)"),f=this.opts[u]=n.extend(!0,{},n[r].defaults[u],f),o=t.wrapper+"_sidebar-collapsed-"+f.collapsed.size,e=t.wrapper+"_sidebar-expanded-"+f.expanded.size,f.collapsed.use&&(this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_sidebar-collapsed");f.collapsed.blockMenu&&this.opts.offCanvas&&!this.$menu.children("."+t.menu+"__blocker").length&&this.$menu.prepend('<a class="'+t.menu+'__blocker" href="#'+this.$menu.attr("id")+'" />');f.collapsed.hideNavbar&&this.$menu.addClass(t.menu+"_hidenavbar");f.collapsed.hideDivider&&this.$menu.addClass(t.menu+"_hidedivider")}),"boolean"==typeof f.collapsed.use?this.bind("initMenu:after",function(){i.$html.addClass(o)}):this.matchMedia(f.collapsed.use,function(){i.$html.addClass(o)},function(){i.$html.removeClass(o)})),f.expanded.use&&(this.bind("initMenu:after",function(){this.$menu.addClass(t.menu+"_sidebar-expanded")}),"boolean"==typeof f.expanded.use?this.bind("initMenu:after",function(){i.$html.addClass(e);this.open()}):this.matchMedia(f.expanded.use,function(){i.$html.addClass(e);i.$html.hasClass(t.wrapper+"_sidebar-closed")||this.open()},function(){i.$html.removeClass(e);this.close()}),this.bind("close:start",function(){i.$html.hasClass(e)&&i.$html.addClass(t.wrapper+"_sidebar-closed")}),this.bind("open:start",function(){i.$html.removeClass(t.wrapper+"_sidebar-closed")})))},add:function(){t=n[r]._c;f=n[r]._d;e=n[r]._e},clickAnchor:function(n,r,f){if(this.opts[u].expanded.use&&i.$html.is('[class*="'+t.wrapper+'_sidebar-expanded-"]')&&r&&f)return{close:!1}}};n[r].defaults[u]={collapsed:{use:!1,size:40,blockMenu:!0,hideDivider:!1,hideNavbar:!0},expanded:{use:!1,size:30}};n[r].configuration[u]={}}(n),!function(n){var i="mmenu",r="toggles",t,u,f,e;n[i].addons[r]={setup:function(){var u=this;this.opts[r];this.conf[r];e=n[i].glbl;this.bind("initPanels:after",function(i){this.__refactorClass(i.find("input"),this.conf.classNames[r].toggle,t.toggle);this.__refactorClass(i.find("input"),this.conf.classNames[r].check,t.check);i.find("input."+t.toggle+", input."+t.check).each(function(){var i=n(this),r=i.closest("li"),e=i.hasClass(t.toggle)?"toggle":"check",f=i.attr("id")||u.__getUniqueId();r.children('label[for="'+f+'"]').length||(i.attr("id",f),r.prepend(i),n('<label for="'+f+'" class="'+t[e]+'"><\/label>').insertBefore(r.children("a, span").last()))})})},add:function(){t=n[i]._c;u=n[i]._d;f=n[i]._e;t.add("toggle check")},clickAnchor:function(){}};n[i].configuration.classNames[r]={toggle:"Toggle",check:"Check"}}(n),!function(n){var t="mmenu";n[t].addons["navbars"]["breadcrumbs"]=function(i,r,u){var o=this,f=n[t]._c,s=n[t]._d,e;f.add("separator");e=n('<span class="'+f.navbar+'__breadcrumbs" />').appendTo(i);this.bind("initNavbar:after",function(t){var r;if(!t.children("."+f.navbar).children("."+f.navbar+"__breadcrumbs").length){t.removeClass(f.panel+"_has-navbar");for(var e=[],h=n('<span class="'+f.navbar+'__breadcrumbs"><\/span>'),i=t,o=!0;i&&i.length;)(i.is("."+f.panel)||(i=i.closest("."+f.panel)),i.parent("."+f.listitem+"_vertical").length)||(r=i.children("."+f.navbar).children("."+f.navbar+"__title").text(),r.length&&e.unshift(o?"<span>"+r+"<\/span>":'<a href="#'+i.attr("id")+'">'+r+"<\/a>"),o=!1),i=i.data(s.parent);u.breadcrumbs.removeFirst&&e.shift();h.append(e.join('<span class="'+f.separator+'">'+u.breadcrumbs.separator+"<\/span>")).appendTo(t.children("."+f.navbar))}});this.bind("openPanel:start",function(n){var t=n.find("."+f.navbar+"__breadcrumbs");t.length&&e.html(t.html()||"")});this.bind("initNavbar:after:sr-aria",function(t){t.children("."+f.navbar).children("."+f.breadcrumbs).children("a").each(function(){o.__sr_aria(n(this),"owns",n(this).attr("href").slice(1))})})}}(n),!function(n){var t="mmenu";n[t].addons["navbars"]["close"]=function(i){var u=n[t]._c,r;n[t].glbl;u.add("close");r=n('<a class="'+u.btn+" "+u.btn+"_close "+u.navbar+'__btn" href="#" />').appendTo(i);this.bind("setPage:after",function(n){r.attr("href","#"+n.attr("id"))});this.bind("setPage:after:sr-text",function(){r.html(this.__sr_text(n[t].i18n(this.conf.screenReader.text.closeMenu)));this.__sr_aria(r,"owns",r.attr("href").slice(1))})}}(n),!function(n){var t="mmenu",i="navbars";n[t].addons[i]["next"]=function(r){var o,e,s,f=n[t]._c,u=n('<a class="'+f.btn+" "+f.btn+"_next "+f.navbar+'__btn" href="#" />').appendTo(r);this.bind("openPanel:start",function(n){o=n.find("."+this.conf.classNames[i].panelNext);e=o.attr("href");s=o.html();e?u.attr("href",e):u.removeAttr("href");u[e||s?"removeClass":"addClass"](f.hidden);u.html(s)});this.bind("openPanel:start:sr-aria",function(){this.__sr_aria(u,"hidden",u.hasClass(f.hidden));this.__sr_aria(u,"owns",(u.attr("href")||"").slice(1))})};n[t].configuration.classNames[i].panelNext="Next"}(n),!function(n){var t="mmenu",i="navbars";n[t].addons[i]["prev"]=function(r){var u=n[t]._c,f=n('<a class="'+u.btn+" "+u.btn+"_prev "+u.navbar+'__btn" href="#" />').appendTo(r),e,o,s;this.bind("initNavbar:after",function(n){n.removeClass(u.panel+"_has-navbar")});this.bind("openPanel:start",function(n){n.parent("."+u.listitem+"_vertical").length||(e=n.find("."+this.conf.classNames[i].panelPrev),e.length||(e=n.children("."+u.navbar).children("."+u.btn+"_prev")),o=e.attr("href"),s=e.html(),o?f.attr("href",o):f.removeAttr("href"),f[o||s?"removeClass":"addClass"](u.hidden),f.html(s))});this.bind("initNavbar:after:sr-aria",function(n){var t=n.children("."+u.navbar);this.__sr_aria(t,"hidden",!0)});this.bind("openPanel:start:sr-aria",function(){this.__sr_aria(f,"hidden",f.hasClass(u.hidden));this.__sr_aria(f,"owns",(f.attr("href")||"").slice(1))})};n[t].configuration.classNames[i].panelPrev="Prev"}(n),!function(n){var t="mmenu";n[t].addons["navbars"]["searchfield"]=function(i){var r=n[t]._c,u=n('<div class="'+r.searchfield+'" />').appendTo(i);"object"!=typeof this.opts.searchfield&&(this.opts.searchfield={});this.opts.searchfield.add=!0;this.opts.searchfield.addTo=u}}(n),!function(n){var t="mmenu",i="navbars";n[t].addons[i]["tabs"]=function(r){function e(n){var i,t;f.removeClass(u.navbar+"__tab_selected");i=f.filter('[href="#'+n.attr("id")+'"]');i.length?i.addClass(u.navbar+"__tab_selected"):(t=n.data(o.parent),t&&t.length&&e(t.closest("."+u.panel)))}var u=n[t]._c,o=n[t]._d,s=n[t]._e,h=this,f=r.children("a");r.addClass(u.navbar+"_tabs").parent().addClass(u.navbars+"_has-tabs");f.on(s.click+"-"+i,function(t){t.preventDefault();var i=n(this);if(i.hasClass(u.navbar+"__tab_selected"))return void t.stopImmediatePropagation();try{h.__openPanelWoAnimation(n(i.attr("href")));t.stopImmediatePropagation()}catch(r){}});this.bind("openPanel:start",e)}}(n),!function(n){var t="mmenu",i="navbars";n[t].addons[i]["title"]=function(r,u){var s,c,e,f=n[t]._c,o=n('<a class="'+f.navbar+'__title" />').appendTo(r),h;this.bind("openPanel:start",function(n){n.parent("."+f.listitem+"_vertical").length||(e=n.find("."+this.conf.classNames[i].panelTitle),e.length||(e=n.children("."+f.navbar).children("."+f.navbar+"__title")),s=e.attr("href"),c=e.html()||u.title,s?o.attr("href",s):o.removeAttr("href"),o[s||c?"removeClass":"addClass"](f.hidden),o.html(c))});this.bind("openPanel:start:sr-aria",function(){if(this.opts.screenReader.text&&(h||(h=this.$menu.children("."+f.navbars+"_top, ."+f.navbars+"_bottom").children("."+f.navbar).children("."+f.btn+"_prev")),h.length)){var n=!0;"parent"==this.opts.navbar.titleLink&&(n=!h.hasClass(f.hidden));this.__sr_aria(o,"hidden",n)}})};n[t].configuration.classNames[i].panelTitle="Title"}(n),!function(n){n["mmenu"].wrappers["angular"]=function(){this.opts.onClick={close:!0,preventDefault:!1,setSelected:!0}}}(n),!function(n){var t;n["mmenu"].wrappers["bootstrap3"]=function(){this.$menu.hasClass("navbar-collapse")&&(this.conf.classNames.selected="active",this.conf.classNames.divider="divider",this.conf.clone=!0,this.opts.initMenu=function(n){for(var r="",u=["nav-tabs","nav-pills","navbar-nav"],i=0;i<u.length;i++)if(n.find("."+u[i]).length){r=u[i];break}r.length&&(t.menu.call(this),t.dropdown.call(this),t[r.split("nav-").join("").split("-nav").join("")].call(this))})};t={menu:function(){this.$menu.children().removeClass("nav").find(".sr-only").remove().end().find(".divider:empty").remove();for(var t=["role","aria-haspopup","aria-expanded"],n=0;n<t.length;n++)this.$menu.find("["+t[n]+"]").removeAttr(t[n])},dropdown:function(){var t=this.$menu.find(".dropdown");t.removeClass("dropdown");t.children(".dropdown-toggle").find(".caret").remove().end().each(function(){n(this).replaceWith("<span>"+n(this).html()+"<\/span>")});t.children(".dropdown-menu").removeClass("dropdown-menu")},tabs:function(){this.$menu.children().removeClass("nav-tabs")},pills:function(){this.$menu.children().removeClass("nav-pills")},navbar:function(){var t=this,n;this.$menu.removeClass("collapse navbar-collapse").wrapInner("<div />").children().children().removeClass("navbar-left navbar-right navbar-nav navbar-text navbar-btn");n=this.$menu.find(".navbar-form");this.conf.searchform={form:{action:n.attr("action"),method:n.attr("method")},input:{name:n.find("input").attr("name")},submit:!0};n.remove();(this.$orig||this.$menu).closest(".navbar").find(".navbar-header").find(".navbar-toggle").off("click").on("click",function(n){t.open();n.stopImmediatePropagation();n.preventDefault()})}}}(n),!function(n){function t(t){for(var r=n("<a />"),u=["href","title","target"],i=0;i<u.length;i++)"undefined"!=typeof t.attr(u[i])&&r.attr(u[i],t.attr(u[i]));return r.html(t.html()),r.find(".sr-only").remove(),r}function i(i){var r=n("<ul />");return i.find(".dropdown-item, .dropdown-divider").each(function(){var u=n(this),i=n("<li />");u.hasClass("dropdown-divider")?i.addClass("Divider"):i.append(t(u));r.append(i)}),r}function r(r){var u=n("<ul />");return r.find(".nav-item").each(function(){var r=n(this),f=n("<li />"),e;(r.hasClass("active")&&f.addClass("Selected"),r.hasClass("nav-link"))||(e=r.children(".dropdown-menu"),e.length&&f.append(i(e)),r=r.children(".nav-link"));f.prepend(t(r));u.append(f)}),u}n["mmenu"].wrappers["bootstrap4"]=function(){var t=this,f,u;this.$menu.hasClass("navbar-collapse")&&(this.conf.clone=!1,f=n("<nav />"),u=n("<div />"),f.append(u),this.$menu.children().each(function(){var f=n(this);switch(!0){case f.hasClass("navbar-nav"):u.append(r(f));break;case f.hasClass("dropdown-menu"):u.append(i(f));break;case f.hasClass("form-inline"):t.conf.searchfield.form={action:f.attr("action")||null,method:f.attr("method")||null};t.conf.searchfield.input={name:f.find("input").attr("name")||null};t.conf.searchfield.clear=!1;t.conf.searchfield.submit=!0;break;default:u.append(f.clone(!0))}}),this.bind("initMenu:before",function(){f.prependTo("body");this.$menu=f}),this.$menu.parent().find(".navbar-toggler").removeAttr("data-target").removeAttr("aria-controls").off("click").on("click",function(n){n.preventDefault();n.stopImmediatePropagation();t.open()}))}}(n),!function(n){n["mmenu"].wrappers["jqueryMobile"]=function(){var t=this;this.opts.onClick.close=!1;this.conf.offCanvas.pageSelector="div.ui-page-active";n("body").on("pagecontainerchange",function(n,i){"function"==typeof t.close&&(t.close(),t.setPage(i.toPage))});this.bind("initAnchors:after",function(){n("body").on("click",".mm-listview a",function(t){t.isDefaultPrevented()||(t.preventDefault(),n("body").pagecontainer("change",this.href))})})}}(n),!function(n){n["mmenu"].wrappers["magento"]=function(){this.conf.classNames.selected="active"}}(n),!function(n){n["mmenu"].wrappers["olark"]=function(){this.conf.offCanvas.noPageSelector.push("#olark")}}(n),!function(n){var t="mmenu";n[t].wrappers["turbolinks"]=function(){var i,r;n(document).on("turbolinks:before-visit",function(){r=n("html");i=r.attr("class");i=n.grep(i.split(/\s+/),function(n){return!/mm-/.test(n)}).join(" ")}).on("turbolinks:load",function(){"undefined"!=typeof r&&(r.attr("class",i),n[t].glbl=!1)})}}(n),!function(n){n["mmenu"].wrappers["wordpress"]=function(){this.conf.classNames.selected="current-menu-item";n("#wpadminbar").css("position","fixed").addClass("mm-slideout")}}(n),!0}),function(n){typeof define=="function"&&define.amd?define(["jquery"],n):typeof module=="object"&&typeof module.exports=="object"?module.exports=n(require("jquery")):n(jQuery)}(function(n){function o(t){var h=".smartmenus_mouse";if(f||t)f&&t&&(n(document).off(h),f=!1);else{var c=!0,o=null,l={mousemove:function(t){var u={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()},e,s,f;o&&(e=Math.abs(o.x-u.x),s=Math.abs(o.y-u.y),(e>0||s>0)&&e<=2&&s<=2&&u.timeStamp-o.timeStamp<=300&&(r=!0,c&&(f=n(t.target).closest("a"),f.is("a")&&n.each(i,function(){if(n.contains(this.$root[0],f[0]))return this.itemEnter({currentTarget:f[0]}),!1}),c=!1)));o=u}};l[e?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(n){s(n.originalEvent)&&(r=!1)};n(document).on(u(l,h));f=!0}}function s(n){return!/^(4|mouse)$/.test(n.pointerType)}function u(n,t){var i,r;t||(t="");i={};for(r in n)i[r.split(" ").join(t+" ")+t]=n[r];return i}var i=[],r=!1,e="ontouchstart"in window,f=!1,h=window.requestAnimationFrame||function(n){return setTimeout(n,1e3/60)},c=window.cancelAnimationFrame||function(n){clearTimeout(n)},t=!!n.fn.animate;return n.SmartMenus=function(t,i){this.$root=n(t);this.opts=i;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=!1;this.focusActivated=!1;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=!1;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style;this.wasCollapsible=!1;this.init()},n.extend(n.SmartMenus,{hideAll:function(){n.each(i,function(){this.menuHideAll()})},destroy:function(){while(i.length)i[0].destroy();o(!0)},prototype:{init:function(t){var f=this,r;if(!t){i.push(this);this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(u({"mouseover focusin":n.proxy(this.rootOver,this),"mouseout focusout":n.proxy(this.rootOut,this),keydown:n.proxy(this.rootKeyDown,this)},r)).on(u({mouseenter:n.proxy(this.itemEnter,this),mouseleave:n.proxy(this.itemLeave,this),mousedown:n.proxy(this.itemDown,this),focus:n.proxy(this.itemFocus,this),blur:n.proxy(this.itemBlur,this),click:n.proxy(this.itemClick,this)},r),"a");if(r+=this.rootId,this.opts.hideOnClick)n(document).on(u({touchstart:n.proxy(this.docTouchStart,this),touchmove:n.proxy(this.docTouchMove,this),touchend:n.proxy(this.docTouchEnd,this),click:n.proxy(this.docClick,this)},r));n(window).on(u({"resize orientationchange":n.proxy(this.winResize,this)},r));this.opts.subIndicators&&(this.$subArrow=n("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText));o()}if(this.$firstSub=this.$root.find("ul").each(function(){f.menuInit(n(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var e=/(index|default)\.[^#\?\/]*/i,s=window.location.href.replace(e,""),h=s.replace(/#.*/,"");this.$root.find("a").each(function(){var t=this.href.replace(e,""),i=n(this);(t==s||t==h)&&(i.addClass("current"),f.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){n(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){var r,u;t||(r=".smartmenus",this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(r),r+=this.rootId,n(document).off(r),n(window).off(r),this.opts.subIndicators&&(this.$subArrow=null));this.menuHideAll();u=this;this.$root.find("ul").each(function(){var t=n(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove();t.dataSM("shown-before")&&((u.opts.subMenusMinWidth||u.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""}));(t.attr("id")||"").indexOf(u.accessIdPrefix)==0&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var t=n(this);t.attr("id").indexOf(u.accessIdPrefix)==0&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove();this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current");t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),i.splice(n.inArray(this,i),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var i=this.$root.offset();this.$disableOverlay=n('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}(this.visibleSubMenus.length&&!n.contains(this.$root[0],t.target)||n(t.target).closest("a").length)&&this.menuHideAll()},docTouchEnd:function(){if(this.lastTouch){if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!n.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(n){if(this.lastTouch){var t=n.originalEvent.touches[0];this.lastTouch.x2=t.pageX;this.lastTouch.y2=t.pageY}},docTouchStart:function(n){var t=n.originalEvent.touches[0];this.lastTouch={x1:t.pageX,y1:t.pageY,target:t.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var i=n(t).closest("ul");i.dataSM("in-mega");)i=i.parent().closest("ul");return i[0]||null},getHeight:function(n){return this.getOffset(n,!0)},getOffset:function(n,t){var u,i,r;return n.css("display")=="none"&&(u={position:n[0].style.position,visibility:n[0].style.visibility},n.css({position:"absolute",visibility:"hidden"}).show()),i=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),r=i&&(t?i.height||i.bottom-i.top:i.width||i.right-i.left),r||r===0||(r=t?n[0].offsetHeight:n[0].offsetWidth),u&&n.hide().css(u),r},getStartZIndex:function(n){var t=parseInt(this[n?"$root":"$firstSub"].css("z-index"));return!n&&isNaN(t)&&(t=parseInt(this.$root.css("z-index"))),isNaN(t)?1:t},getTouchPoint:function(n){return n.touches&&n.touches[0]||n.changedTouches&&n.changedTouches[0]||n},getViewport:function(n){var i=n?"Height":"Width",t=document.documentElement["client"+i],r=window["inner"+i];return r&&(t=Math.min(t,r)),t},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(n){return this.getOffset(n)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(n){return this.handleEvents()&&!this.isLinkInMegaMenu(n)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")!="inline"},isFixed:function(){var t=this.$root.css("position")=="fixed";return t||this.$root.parentsUntil("body").each(function(){if(n(this).css("position")=="fixed")return t=!0,!1}),t},isLinkInMegaMenu:function(t){return n(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!r||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,i){var u=t.closest("ul"),r=u.dataSM("level"),e,f;(r>1&&(!this.activatedItems[r-2]||this.activatedItems[r-2][0]!=u.dataSM("parent-a")[0])&&(e=this,n(u.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(u).each(function(){e.itemActivate(n(this).dataSM("parent-a"))})),(!this.isCollapsible()||i)&&this.menuHideSubMenus(!this.activatedItems[r-1]||this.activatedItems[r-1][0]!=t[0]?r-1:r),this.activatedItems[r-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1)&&(f=t.dataSM("sub"),f&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(f))},itemBlur:function(t){var i=n(t.currentTarget);this.handleItemEvents(i)&&this.$root.triggerHandler("blur.smapi",i[0])},itemClick:function(t){var i=n(t.currentTarget);if(this.handleItemEvents(i)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==i.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",i[0])===!1)return!1;var u=n(t.target).is(".sub-arrow"),r=i.dataSM("sub"),f=r?r.dataSM("level")==2:!1,e=this.isCollapsible(),o=/toggle$/.test(this.opts.collapsibleBehavior),h=/link$/.test(this.opts.collapsibleBehavior),s=/^accordion/.test(this.opts.collapsibleBehavior);if(r&&!r.is(":visible")){if((!h||!e||u)&&(this.opts.showOnClick&&f&&(this.clickActivated=!0),this.itemActivate(i,s),r.is(":visible")))return this.focusActivated=!0,!1}else if(e&&(o||u))return this.itemActivate(i,s),this.menuHide(r),o&&(this.focusActivated=!1),!1;if(this.opts.showOnClick&&f||i.hasClass("disabled")||this.$root.triggerHandler("select.smapi",i[0])===!1)return!1}},itemDown:function(t){var i=n(t.currentTarget);this.handleItemEvents(i)&&i.dataSM("mousedown",!0)},itemEnter:function(t){var i=n(t.currentTarget),r;this.handleItemEvents(i)&&(this.isTouchMode()||(this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0),r=this,this.showTimeout=setTimeout(function(){r.itemActivate(i)},this.opts.showOnClick&&i.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)),this.$root.triggerHandler("mouseenter.smapi",i[0]))},itemFocus:function(t){var i=n(t.currentTarget);this.handleItemEvents(i)&&(!this.focusActivated||this.isTouchMode()&&i.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==i[0]||this.itemActivate(i,!0),this.$root.triggerHandler("focus.smapi",i[0]))},itemLeave:function(t){var i=n(t.currentTarget);this.handleItemEvents(i)&&(this.isTouchMode()||(i[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),i.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",i[0]))},menuHide:function(i){var r,u;this.$root.triggerHandler("beforehide.smapi",i[0])!==!1&&(t&&i.stop(!0,!0),i.css("display")!="none"&&(r=function(){i.css("z-index","")},this.isCollapsible()?t&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,i,r):i.hide(this.opts.collapsibleHideDuration,r):t&&this.opts.hideFunction?this.opts.hideFunction.call(this,i,r):i.hide(this.opts.hideDuration,r),i.dataSM("scroll")&&(this.menuScrollStop(i),i.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),i.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),i.attr({"aria-expanded":"false","aria-hidden":"true"}),u=i.dataSM("level"),this.activatedItems.splice(u-1,1),this.visibleSubMenus.splice(n.inArray(i,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",i[0])))},menuHideAll:function(){var i,n;for(this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0),i=this.opts.isPopup?1:0,n=this.visibleSubMenus.length-1;n>=i;n--)this.menuHide(this.visibleSubMenus[n]);this.opts.isPopup&&(t&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(t&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration)));this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=!1;this.focusActivated=!1;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var i,t=this.activatedItems.length-1;t>=n;t--)i=this.activatedItems[t].dataSM("sub"),i&&this.menuHide(i)},menuInit:function(n){var i,r,t,u,f;if(!n.dataSM("in-mega")){for(n.hasClass("mega-menu")&&n.find("ul").dataSM("in-mega",!0),i=2,r=n[0];(r=r.parentNode.parentNode)!=this.$root[0];)i++;t=n.prevAll("a").eq(-1);t.length||(t=n.prevAll().find("a").eq(-1));t.addClass("has-submenu").dataSM("sub",n);n.dataSM("parent-a",t).dataSM("level",i).parent().dataSM("sub",n);u=t.attr("id")||this.accessIdPrefix+ ++this.idInc;f=n.attr("id")||this.accessIdPrefix+ ++this.idInc;t.attr({id:u,"aria-haspopup":"true","aria-controls":f,"aria-expanded":"false"});n.attr({id:f,role:"group","aria-hidden":"true","aria-labelledby":u,"aria-expanded":"false"});this.opts.subIndicators&&t[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var w=t.dataSM("parent-a"),g=w.closest("li"),ut=g.parent(),nt=t.dataSM("level"),c=this.getWidth(t),i=this.getHeight(t),ft=w.offset(),st=ft.left,ht=ft.top,tt=this.getWidth(w),y=this.getHeight(w),et=n(window),b=et.scrollLeft(),l=et.scrollTop(),ot=this.getViewportWidth(),a=this.getViewportHeight(),o=ut.parent().is("[data-sm-horizontal-sub]")||nt==2&&!ut.hasClass("sm-vertical"),k=this.opts.rightToLeftSubMenus&&!g.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&g.is("[data-sm-reverse]"),v=nt==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,d=nt==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,r,s,p,h,f,it,rt;if(o?(r=k?tt-c-v:v,s=this.opts.bottomToTopSubMenus?-i-d:y+d):(r=k?v-c:tt-v,s=this.opts.bottomToTopSubMenus?y-d-i:d),this.opts.keepInViewport&&(p=st+r,h=ht+s,k&&p<b?r=o?b-p+r:tt-v:!k&&p+c>b+ot&&(r=o?b+ot-c-p+r:v-c),o||(i<a&&h+i>l+a?s+=l+a-i-h:(i>=a||h<l)&&(s+=l-h)),(o&&(h+i>l+a+.49||h<l)||!o&&i>a+.49)&&(f=this,t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",n([n('<span class="scroll-up"><span class="scroll-up-arrow"><\/span><\/span>')[0],n('<span class="scroll-down"><span class="scroll-down-arrow"><\/span><\/span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=n(this).hasClass("scroll-up");f.menuScroll(t)},mouseleave:function(n){f.menuScrollStop(t);f.menuScrollOut(t,n)},"mousewheel DOMMouseScroll":function(n){n.preventDefault()}}).insertAfter(t)),it=".smartmenus_scroll",t.dataSM("scroll",{y:this.cssTransforms3d?0:s-y,step:1,itemH:y,subH:i,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(u({mouseover:function(n){f.menuScrollOver(t,n)},mouseout:function(n){f.menuScrollOut(t,n)},"mousewheel DOMMouseScroll":function(n){f.menuScrollMousewheel(t,n)}},it)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:r+(parseInt(t.css("border-left-width"))||0),width:c-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(o&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()))){rt={};rt[e?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(n){f.menuScrollTouch(t,n)};t.css({"touch-action":"none","-ms-touch-action":"none"}).on(u(rt,it))}t.css({top:"auto",left:"0",marginLeft:r,marginTop:s-y})},menuScroll:function(n,t,i){var u=n.dataSM("scroll"),s=n.dataSM("scroll-arrows"),e=u.up?u.upEnd:u.downEnd,f,o,c;if(!t&&u.momentum){if(u.momentum*=.92,f=u.momentum,f<.5){this.menuScrollStop(n);return}}else f=i||(t||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(u.step));o=n.dataSM("level");this.activatedItems[o-1]&&this.activatedItems[o-1].dataSM("sub")&&this.activatedItems[o-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(o-1);u.y=u.up&&e<=u.y||!u.up&&e>=u.y?u.y:Math.abs(e-u.y)>f?u.y+(u.up?f:-f):e;n.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+u.y+"px, 0)",transform:"translate3d(0, "+u.y+"px, 0)"}:{marginTop:u.y});r&&(u.up&&u.y>u.downEnd||!u.up&&u.y<u.upEnd)&&s.eq(u.up?1:0).show();u.y==e?(r&&s.eq(u.up?0:1).hide(),this.menuScrollStop(n)):t||(this.opts.scrollAccelerate&&u.step<this.opts.scrollStep&&(u.step+=.2),c=this,this.scrollTimeout=h(function(){c.menuScroll(n)}))},menuScrollMousewheel:function(n,t){if(this.getClosestMenu(t.target)==n[0]){t=t.originalEvent;var i=(t.wheelDelta||-t.detail)>0;n.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(n.dataSM("scroll").up=i,this.menuScroll(n,!0))}t.preventDefault()},menuScrollOut:function(t,i){r&&(/^scroll-(up|down)/.test((i.relatedTarget||"").className)||(t[0]==i.relatedTarget||n.contains(t[0],i.relatedTarget))&&this.getClosestMenu(i.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,i){if(r&&!/^scroll-(up|down)/.test(i.target.className)&&this.getClosestMenu(i.target)==t[0]){this.menuScrollRefreshData(t);var u=t.dataSM("scroll"),f=n(window).scrollTop()-t.dataSM("parent-a").offset().top-u.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",f).end().eq(1).css("margin-top",f+this.getViewportHeight()-u.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var r=t.dataSM("scroll"),i=n(window).scrollTop()-t.dataSM("parent-a").offset().top-r.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i));n.extend(r,{upEnd:i,downEnd:i+this.getViewportHeight()-r.subH})},menuScrollStop:function(n){if(this.scrollTimeout)return c(this.scrollTimeout),this.scrollTimeout=0,n.dataSM("scroll").step=1,!0},menuScrollTouch:function(t,i){var u,r,f,e;i=i.originalEvent;s(i)&&(u=this.getTouchPoint(i),this.getClosestMenu(u.target)==t[0]&&(r=t.dataSM("scroll"),/(start|down)$/i.test(i.type)?(this.menuScrollStop(t)?(i.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),n.extend(r,{touchStartY:u.pageY,touchStartTime:i.timeStamp})):/move$/i.test(i.type)?(f=r.touchY!==undefined?r.touchY:r.touchStartY,f!==undefined&&f!=u.pageY&&(this.$touchScrollingSub=t,e=f<u.pageY,r.up!==undefined&&r.up!=e&&n.extend(r,{touchStartY:u.pageY,touchStartTime:i.timeStamp}),n.extend(r,{up:e,touchY:u.pageY}),this.menuScroll(t,!0,Math.abs(u.pageY-f))),i.preventDefault()):r.touchY!==undefined&&((r.momentum=Math.pow(Math.abs(u.pageY-r.touchStartY)/(i.timeStamp-r.touchStartTime),2)*15)&&(this.menuScrollStop(t),this.menuScroll(t),i.preventDefault()),delete r.touchY)))},menuShow:function(n){var u,r,f,i;(n.dataSM("beforefirstshowfired")||(n.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",n[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",n[0])!==!1&&(n.dataSM("shown-before",!0),t&&n.stop(!0,!0),n.is(":visible")||(u=n.dataSM("parent-a"),r=this.isCollapsible(),(this.opts.keepHighlighted||r)&&u.addClass("highlighted"),r?n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""}):(n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&n.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth&&(f=this.getWidth(n),n.css("max-width",this.opts.subMenusMaxWidth),f>this.getWidth(n)&&n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth))),this.menuPosition(n)),i=function(){n.css("overflow","")},r?t&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,n,i):n.show(this.opts.collapsibleShowDuration,i):t&&this.opts.showFunction?this.opts.showFunction.call(this,n,i):n.show(this.opts.showDuration,i),u.attr("aria-expanded","true"),n.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(n),this.$root.triggerHandler("show.smapi",n[0])))},popupHide:function(n){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},n?1:this.opts.hideTimeout)},popupShow:function(n,i){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),t&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:n,top:i});var u=this,r=function(){u.$root.css("overflow","")};t&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,r):this.$root.show(this.opts.showDuration,r);this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0);this.init(!0)},rootKeyDown:function(t){var r,u,i;if(this.handleEvents())switch(t.keyCode){case 27:r=this.activatedItems[0];r&&(this.menuHideAll(),r[0].focus(),i=r.dataSM("sub"),i&&this.menuHide(i));break;case 32:u=n(t.target);u.is("a")&&this.handleItemEvents(u)&&(i=u.dataSM("sub"),i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault()))}},rootOut:function(n){if(this.handleEvents()&&!this.isTouchMode()&&n.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(n){this.handleEvents()&&!this.isTouchMode()&&n.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(n){var t,i;if(!this.handleEvents()){this.$disableOverlay&&(t=this.$root.offset(),this.$disableOverlay.css({top:t.top,left:t.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()}));return}"onorientationchange"in window&&n.type!="orientationchange"||(i=this.isCollapsible(),this.wasCollapsible&&i||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=i)}}}),n.fn.dataSM=function(n,t){return t?this.data(n+"_smartmenus",t):this.data(n+"_smartmenus")},n.fn.removeDataSM=function(n){return this.removeData(n+"_smartmenus")},n.fn.smartmenus=function(t){if(typeof t=="string"){var i=arguments,r=t;return Array.prototype.shift.call(i),this.each(function(){var t=n(this).data("smartmenus");t&&t[r]&&t[r].apply(t,i)})}return this.each(function(){var i=n(this).data("sm-options")||null;if(i)try{i=eval("("+i+")")}catch(r){i=null;alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new n.SmartMenus(this,n.extend({},n.fn.smartmenus.defaults,t,i))})},n.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(n,t){n.fadeOut(200,t)},collapsibleShowDuration:0,collapsibleShowFunction:function(n,t){n.slideDown(200,t)},collapsibleHideDuration:0,collapsibleHideFunction:function(n,t){n.slideUp(200,t)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},n});
(function(n){n(["jquery"],function(n){return function(){function v(n,t,r){return f({type:u.error,iconClass:i().iconClasses.error,message:n,optionsOverride:r,title:t})}function r(r,u){return(r||(r=i()),t=n("#"+r.containerId),t.length)?t:(u&&(t=nt(r)),t)}function y(n,t,r){return f({type:u.info,iconClass:i().iconClasses.info,message:n,optionsOverride:r,title:t})}function p(n){e=n}function w(n,t,r){return f({type:u.success,iconClass:i().iconClasses.success,message:n,optionsOverride:r,title:t})}function b(n,t,r){return f({type:u.warning,iconClass:i().iconClasses.warning,message:n,optionsOverride:r,title:t})}function k(n,u){var f=i();t||r(f);l(n,f,u)||g(f)}function d(u){var f=i();if(t||r(f),u&&n(":focus",u).length===0){s(u);return}t.children().length&&t.remove()}function g(i){for(var u=t.children(),r=u.length-1;r>=0;r--)l(n(u[r]),i)}function l(t,i,r){var u=r&&r.force?r.force:!1;return t&&(u||n(":focus",t).length===0)?(t[i.hideMethod]({duration:i.hideDuration,easing:i.hideEasing,complete:function(){s(t)}}),!0):!1}function nt(i){return t=n("<div/>").attr("id",i.containerId).addClass(i.positionClass).attr("aria-live","polite").attr("role","alert"),t.appendTo(n(i.target)),t}function tt(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:undefined,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:undefined,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:'<button type="button">&times;<\/button>',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function a(n){e&&e(n)}function f(u){function g(){it();ut();ft();et();ot();rt()}function nt(){e.hover(ct,ht);!f.onclick&&f.tapToDismiss&&e.click(v);f.closeButton&&y&&y.click(function(n){n.stopPropagation?n.stopPropagation():n.cancelBubble!==undefined&&n.cancelBubble!==!0&&(n.cancelBubble=!0);v(!0)});f.onclick&&e.click(function(){f.onclick();v()})}function tt(){e.hide();e[f.showMethod]({duration:f.showDuration,easing:f.showEasing,complete:f.onShown});f.timeOut>0&&(w=setTimeout(v,f.timeOut),c.maxHideTime=parseFloat(f.timeOut),c.hideEta=(new Date).getTime()+c.maxHideTime,f.progressBar&&(c.intervalId=setInterval(lt,10)))}function it(){u.iconClass&&e.addClass(f.toastClass).addClass(p)}function rt(){f.newestOnTop?t.prepend(e):t.append(e)}function ut(){u.title&&(k.append(u.title).addClass(f.titleClass),e.append(k))}function ft(){u.message&&(d.append(u.message).addClass(f.messageClass),e.append(d))}function et(){f.closeButton&&(y.addClass("toast-close-button").attr("role","button"),e.prepend(y))}function ot(){f.progressBar&&(b.addClass("toast-progress"),e.prepend(b))}function st(n,t){if(n.preventDuplicates){if(t.message===o)return!0;o=t.message}return!1}function v(t){if(!n(":focus",e).length||t)return clearTimeout(c.intervalId),e[f.hideMethod]({duration:f.hideDuration,easing:f.hideEasing,complete:function(){s(e);f.onHidden&&l.state!=="hidden"&&f.onHidden();l.state="hidden";l.endTime=new Date;a(l)}})}function ht(){(f.timeOut>0||f.extendedTimeOut>0)&&(w=setTimeout(v,f.extendedTimeOut),c.maxHideTime=parseFloat(f.extendedTimeOut),c.hideEta=(new Date).getTime()+c.maxHideTime)}function ct(){clearTimeout(w);c.hideEta=0;e.stop(!0,!0)[f.showMethod]({duration:f.showDuration,easing:f.showEasing})}function lt(){var n=(c.hideEta-(new Date).getTime())/c.maxHideTime*100;b.width(n+"%")}var f=i(),p=u.iconClass||f.iconClass;if(typeof u.optionsOverride!="undefined"&&(f=n.extend(f,u.optionsOverride),p=u.optionsOverride.iconClass||p),!st(f,u)){h++;t=r(f,!0);var w=null,e=n("<div/>"),k=n("<div/>"),d=n("<div/>"),b=n("<div/>"),y=n(f.closeHtml),c={intervalId:null,hideEta:null,maxHideTime:null},l={toastId:h,state:"visible",startTime:new Date,options:f,map:u};return g(),tt(),nt(),a(l),f.debug&&console&&console.log(l),e}}function i(){return n.extend({},tt(),c.options)}function s(n){(t||(t=r()),n.is(":visible"))||(n.remove(),n=null,t.children().length===0&&(t.remove(),o=undefined))}var t,e,h=0,u={error:"error",info:"info",success:"success",warning:"warning"},c={clear:k,remove:d,error:v,getContainer:r,info:y,options:{},subscribe:p,success:w,version:"2.1.1",warning:b},o;return c}()})})(typeof define=="function"&&define.amd?define:function(n,t){typeof module!="undefined"&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}),function(n){typeof define=="function"&&define.amd?define("picker",["jquery"],n):typeof exports=="object"?module.exports=n(require("jquery")):this.Picker=n(jQuery)}(function(n){function t(e,s,l,a){function g(){return t._.node("div",t._.node("div",t._.node("div",t._.node("div",v.component.nodes(y.open),w.box),w.wrap),w.frame),w.holder,'tabindex="-1"')}function rt(){if(b.data(s,v).addClass(w.input).val(b.data("value")?v.get("select",p.format):e.value),!p.editable)b.on("focus."+y.id+" click."+y.id,function(n){n.preventDefault();v.open()}).on("keydown."+y.id,it);i(e,{haspopup:!0,expanded:!1,readonly:!1,owns:e.id+"_root"})}function ut(){i(v.$root[0],"hidden",!0)}function nt(){v.$holder.on({keydown:it,"focus.toOpen":tt,blur:function(){b.removeClass(w.target)},focusin:function(n){v.$root.removeClass(w.focused);n.stopPropagation()},"mousedown click":function(t){var i=t.target;i!=v.$holder[0]&&(t.stopPropagation(),t.type!="mousedown"||n(i).is("input, select, textarea, button, option")||(t.preventDefault(),v.$holder[0].focus()))}}).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var r=n(this),t=r.data(),u=r.hasClass(w.navDisabled)||r.hasClass(w.disabled),i=o();i=i&&(i.type||i.href);(u||i&&!n.contains(v.$root[0],i))&&v.$holder[0].focus();!u&&t.nav?v.set("highlight",v.component.item.highlight,{nav:t.nav}):!u&&"pick"in t?(v.set("select",t.pick,{source:r[0]}),p.closeOnSelect&&v.close(!0)):t.clear?(v.clear(),p.closeOnClear&&v.close(!0)):t.close&&v.close(!0)})}function ft(){var t;p.hiddenName===!0?(t=e.name,e.name=""):(t=[typeof p.hiddenPrefix=="string"?p.hiddenPrefix:"",typeof p.hiddenSuffix=="string"?p.hiddenSuffix:"_submit"],t=t[0]+e.name+t[1]);v._hidden=n('<input type=hidden name="'+t+'"'+(b.data("value")||e.value?' value="'+v.get("select",p.formatSubmit)+'"':"")+">")[0];b.on("change."+y.id,function(){v._hidden.value=e.value?v.get("select",p.formatSubmit):""})}function et(){if(k&&h)v.$holder.find("."+w.frame).one("transitionend",function(){v.$holder[0].focus()});else v.$holder[0].focus()}function tt(n){n.stopPropagation();b.addClass(w.target);v.$root.addClass(w.focused);v.open()}function it(n){var t=n.keyCode,i=/^(8|46)$/.test(t);if(t==27)return v.close(!0),!1;(t==32||i||!y.open&&v.component.key[t])&&(n.preventDefault(),n.stopPropagation(),i?v.clear().close():v.open())}if(!e)return t;var k=!1,y={id:e.id||"P"+Math.abs(~~(Math.random()*new Date))},p=l?n.extend(!0,{},l.defaults,a):a||{},w=n.extend({},t.klasses(),p.klass),b=n(e),d=function(){return this.start()},v=d.prototype={constructor:d,$node:b,start:function(){if(y&&y.start)return v;y.methods={};y.start=!0;y.open=!1;y.type=e.type;e.autofocus=e==o();e.readOnly=!p.editable;e.id=e.id||y.id;e.type!="text"&&(e.type="text");v.component=new l(v,p);v.$root=n('<div class="'+w.picker+'" id="'+e.id+'_root" />');ut();v.$holder=n(g()).appendTo(v.$root);nt();p.formatSubmit&&ft();rt();p.containerHidden?n(p.containerHidden).append(v._hidden):b.after(v._hidden);p.container?n(p.container).append(v.$root):b.after(v.$root);v.on({start:v.component.onStart,render:v.component.onRender,stop:v.component.onStop,open:v.component.onOpen,close:v.component.onClose,set:v.component.onSet}).on({start:p.onStart,render:p.onRender,stop:p.onStop,open:p.onOpen,close:p.onClose,set:p.onSet});return k=c(v.$holder[0]),e.autofocus&&v.open(),v.trigger("start").trigger("render")},render:function(t){return t?(v.$holder=n(g()),nt(),v.$root.html(v.$holder)):v.$root.find("."+w.box).html(v.component.nodes(y.open)),v.trigger("render")},stop:function(){return y.start?(v.close(),v._hidden&&v._hidden.parentNode.removeChild(v._hidden),v.$root.remove(),b.removeClass(w.input).removeData(s),setTimeout(function(){b.off("."+y.id)},0),e.type=y.type,e.readOnly=!1,v.trigger("stop"),y.methods={},y.start=!1,v):v},open:function(o){if(y.open)return v;if(b.addClass(w.active),i(e,"expanded",!0),setTimeout(function(){v.$root.addClass(w.opened);i(v.$root[0],"hidden",!1)},0),o!==!1){y.open=!0;k&&r.css("overflow","hidden").css("padding-right","+="+f());et();u.on("click."+y.id+" focusin."+y.id,function(n){var t=n.target;t!=e&&t!=document&&n.which!=3&&v.close(t===v.$holder[0])}).on("keydown."+y.id,function(i){var r=i.keyCode,u=v.component.key[r],f=i.target;r==27?v.close(!0):f==v.$holder[0]&&(u||r==13)?(i.preventDefault(),u?t._.trigger(v.component.key.go,v,[t._.trigger(u)]):v.$root.find("."+w.highlighted).hasClass(w.disabled)||(v.set("select",v.component.item.highlight),p.closeOnSelect&&v.close(!0))):n.contains(v.$root[0],f)&&r==13&&(i.preventDefault(),f.click())})}return v.trigger("open")},close:function(n){return(n&&(p.editable?e.focus():(v.$holder.off("focus.toOpen").focus(),setTimeout(function(){v.$holder.on("focus.toOpen",tt)},0))),b.removeClass(w.active),i(e,"expanded",!1),setTimeout(function(){v.$root.removeClass(w.opened+" "+w.focused);i(v.$root[0],"hidden",!0)},0),!y.open)?v:(y.open=!1,k&&r.css("overflow","").css("padding-right","-="+f()),u.off("."+y.id),v.trigger("close"))},clear:function(n){return v.set("clear",null,n)},set:function(t,i,r){var u,e,o=n.isPlainObject(t),f=o?t:{};if(r&&r.source&&(f.source=r.source,delete r.source),r=o&&n.isPlainObject(i)?i:r||{},t){o||(f[t]=i);for(u in f)e=f[u],u in v.component.item&&(e===undefined&&(e=null),v.component.set(u,e,r)),(u=="select"||u=="clear")&&b.val(u=="clear"?"":v.get(u,p.format)).trigger("change");v.render()}return r.muted?v:v.trigger("set",f)},get:function(n,i){if(n=n||"value",y[n]!=null)return y[n];if(n=="valueSubmit"){if(v._hidden)return v._hidden.value;n="value"}if(n=="value")return e.value;if(n in v.component.item){if(typeof i=="string"){var r=v.component.get(n);return r?t._.trigger(v.component.formats.toString,v.component,[i,r]):""}return v.component.get(n)}},on:function(t,i,r){var u,e,o=n.isPlainObject(t),f=o?t:{};if(t){o||(f[t]=i);for(u in f)e=f[u],r&&(u="_"+u),y.methods[u]=y.methods[u]||[],y.methods[u].push(e)}return v},off:function(){var n,t,i=arguments;for(n=0,namesCount=i.length;n<namesCount;n+=1)t=i[n],t in y.methods&&delete y.methods[t];return v},trigger:function(n,i){var r=function(n){var r=y.methods[n];r&&r.map(function(n){t._.trigger(n,v,[i])})};return r("_"+n),r(n),v}};return new d}function c(n){var t,i="position";return n.currentStyle?t=n.currentStyle[i]:window.getComputedStyle&&(t=getComputedStyle(n)[i]),t=="fixed"}function f(){var t,i,u,f;return r.height()<=s.height()?0:(t=n('<div style="visibility:hidden;width:100px" />').appendTo("body"),i=t[0].offsetWidth,t.css("overflow","scroll"),u=n('<div style="width:100%" />').appendTo(t),f=u[0].offsetWidth,t.remove(),i-f)}function i(t,i,r){if(n.isPlainObject(i))for(var u in i)e(t,u,i[u]);else e(t,i,r)}function e(n,t,i){n.setAttribute((t=="role"?"":"aria-")+t,i)}function l(t,i){var r,u,f;n.isPlainObject(t)||(t={attribute:i});i="";for(r in t)u=(r=="role"?"":"aria-")+r,f=t[r],i+=f==null?"":u+'="'+t[r]+'"';return i}function o(){try{return document.activeElement}catch(n){}}var s=n(window),u=n(document),r=n(document.documentElement),h=document.documentElement.style.transition!=null;return t.klasses=function(n){return n=n||"picker",{picker:n,opened:n+"--opened",focused:n+"--focused",input:n+"__input",active:n+"__input--active",target:n+"__input--target",holder:n+"__holder",frame:n+"__frame",wrap:n+"__wrap",box:n+"__box"}},t._={group:function(n){for(var i,u="",r=t._.trigger(n.min,n);r<=t._.trigger(n.max,n,[r]);r+=n.i)i=t._.trigger(n.item,n,[r]),u+=t._.node(n.node,i[0],i[1],i[2]);return u},node:function(t,i,r,u){return i?(i=n.isArray(i)?i.join(""):i,r=r?' class="'+r+'"':"",u=u?" "+u:"","<"+t+r+u+">"+i+"<\/"+t+">"):""},lead:function(n){return(n<10?"0":"")+n},trigger:function(n,t,i){return typeof n=="function"?n.apply(t,i||[]):n},digits:function(n){return/\d/.test(n[1])?2:1},isDate:function(n){return{}.toString.call(n).indexOf("Date")>-1&&this.isInteger(n.getDate())},isInteger:function(n){return{}.toString.call(n).indexOf("Number")>-1&&n%1==0},ariaAttr:l},t.extend=function(i,r){n.fn[i]=function(u,f){var e=this.data(i);return u=="picker"?e:e&&typeof u=="string"?t._.trigger(e[u],e,[f]):this.each(function(){var f=n(this);f.data(i)||new t(this,i,r,u)})};n.fn[i].defaults=r.defaults},t}),function(n){typeof define=="function"&&define.amd?define(["picker","jquery"],n):typeof exports=="object"?module.exports=n(require("./picker.js"),require("jquery")):n(Picker,jQuery)}(function(n,t){function r(n,t){var i=this,r=n.$node[0],o=r.value,u=n.$node.data("value"),f=u||o,s=u?t.formatSubmit:t.format,e=function(){return r.currentStyle?r.currentStyle.direction=="rtl":getComputedStyle(n.$root[0]).direction=="rtl"};i.settings=t;i.$node=n.$node;i.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"};i.item={};i.item.clear=null;i.item.disable=(t.disable||[]).slice(0);i.item.enable=-function(n){return n[0]===!0?n.shift():-1}(i.item.disable);i.set("min",t.min).set("max",t.max).set("now");f?i.set("select",f,{format:s,defaultValue:!0}):i.set("select",null).set("highlight",i.item.now);i.key={40:7,38:-7,39:function(){return e()?-1:1},37:function(){return e()?1:-1},go:function(n){var t=i.item.highlight,r=new Date(t.year,t.month,t.date+n);i.set("highlight",r,{interval:n});this.render()}};n.on("render",function(){n.$root.find("."+t.klass.selectMonth).on("change",function(){var i=this.value;i&&(n.set("highlight",[n.get("view").year,i,n.get("highlight").date]),n.$root.find("."+t.klass.selectMonth).trigger("focus"))});n.$root.find("."+t.klass.selectYear).on("change",function(){var i=this.value;i&&(n.set("highlight",[i,n.get("view").month,n.get("highlight").date]),n.$root.find("."+t.klass.selectYear).trigger("focus"))})},1).on("open",function(){var r="";i.disabled(i.get("now"))&&(r=":not(."+t.klass.buttonToday+")");n.$root.find("button"+r+", select").attr("disabled",!1)},1).on("close",function(){n.$root.find("button, select").attr("disabled",!0)},1)}var u=7,f=6,i=n._;r.prototype.set=function(n,t,i){var r=this,u=r.item;return t===null?(n=="clear"&&(n="select"),u[n]=t,r):(u[n=="enable"?"disable":n=="flip"?"enable":n]=r.queue[n].split(" ").map(function(u){return t=r[u](n,t,i)}).pop(),n=="select"?r.set("highlight",u.select,i):n=="highlight"?r.set("view",u.highlight,i):n.match(/^(flip|min|max|disable|enable)$/)&&(u.select&&r.disabled(u.select)&&r.set("select",u.select,i),u.highlight&&r.disabled(u.highlight)&&r.set("highlight",u.highlight,i)),r)};r.prototype.get=function(n){return this.item[n]};r.prototype.create=function(n,r,u){var f,e=this;return r=r===undefined?n:r,r==-Infinity||r==Infinity?f=r:t.isPlainObject(r)&&i.isInteger(r.pick)?r=r.obj:t.isArray(r)?(r=new Date(r[0],r[1],r[2]),r=i.isDate(r)?r:e.create().obj):r=i.isInteger(r)||i.isDate(r)?e.normalize(new Date(r),u):e.now(n,r,u),{year:f||r.getFullYear(),month:f||r.getMonth(),date:f||r.getDate(),day:f||r.getDay(),obj:f||r,pick:f||r.getTime()}};r.prototype.createRange=function(n,r){var f=this,u=function(n){return n===!0||t.isArray(n)||i.isDate(n)?f.create(n):n};return i.isInteger(n)||(n=u(n)),i.isInteger(r)||(r=u(r)),i.isInteger(n)&&t.isPlainObject(r)?n=[r.year,r.month,r.date+n]:i.isInteger(r)&&t.isPlainObject(n)&&(r=[n.year,n.month,n.date+r]),{from:u(n),to:u(r)}};r.prototype.withinRange=function(n,t){return n=this.createRange(n.from,n.to),t.pick>=n.from.pick&&t.pick<=n.to.pick};r.prototype.overlapRanges=function(n,t){var i=this;return n=i.createRange(n.from,n.to),t=i.createRange(t.from,t.to),i.withinRange(n,t.from)||i.withinRange(n,t.to)||i.withinRange(t,n.from)||i.withinRange(t,n.to)};r.prototype.now=function(n,t,i){return t=new Date,i&&i.rel&&t.setDate(t.getDate()+i.rel),this.normalize(t,i)};r.prototype.navigate=function(n,i,r){var s,f,u,e,c=t.isArray(i),h=t.isPlainObject(i),o=this.item.view;if(c||h){for(h?(f=i.year,u=i.month,e=i.date):(f=+i[0],u=+i[1],e=+i[2]),r&&r.nav&&o&&o.month!==u&&(f=o.year,u=o.month),s=new Date(f,u+(r&&r.nav?r.nav:0),1),f=s.getFullYear(),u=s.getMonth();new Date(f,u,e).getMonth()!==u;)e-=1;i=[f,u,e]}return i};r.prototype.normalize=function(n){return n.setHours(0,0,0,0),n};r.prototype.measure=function(n,t){var r=this;return t?typeof t=="string"?t=r.parse(n,t):i.isInteger(t)&&(t=r.now(n,t,{rel:t})):t=n=="min"?-Infinity:Infinity,t};r.prototype.viewset=function(n,t){return this.create([t.year,t.month,1])};r.prototype.validate=function(n,r,u){var f=this,c=r,e=u&&u.interval?u.interval:1,h=f.item.enable===-1,l,a,o=f.item.min,s=f.item.max,v,y,p=h&&f.item.disable.filter(function(n){if(t.isArray(n)){var u=f.create(n).pick;u<r.pick?l=!0:u>r.pick&&(a=!0)}return i.isInteger(n)}).length;if((!u||!u.nav&&!u.defaultValue)&&(!h&&f.disabled(r)||h&&f.disabled(r)&&(p||l||a)||!h&&(r.pick<=o.pick||r.pick>=s.pick)))for(h&&!p&&(!a&&e>0||!l&&e<0)&&(e*=-1);f.disabled(r);){if(Math.abs(e)>1&&(r.month<c.month||r.month>c.month)&&(r=c,e=e>0?1:-1),r.pick<=o.pick?(v=!0,e=1,r=f.create([o.year,o.month,o.date+(r.pick===o.pick?0:-1)])):r.pick>=s.pick&&(y=!0,e=-1,r=f.create([s.year,s.month,s.date+(r.pick===s.pick?0:1)])),v&&y)break;r=f.create([r.year,r.month,r.date+e])}return r};r.prototype.disabled=function(n){var r=this,u=r.item.disable.filter(function(u){return i.isInteger(u)?n.day===(r.settings.firstDay?u:u-1)%7:t.isArray(u)||i.isDate(u)?n.pick===r.create(u).pick:t.isPlainObject(u)?r.withinRange(u,n):void 0});return u=u.length&&!u.filter(function(n){return t.isArray(n)&&n[3]=="inverted"||t.isPlainObject(n)&&n.inverted}).length,r.item.enable===-1?!u:u||n.pick<r.item.min.pick||n.pick>r.item.max.pick};r.prototype.parse=function(n,t,r){var f=this,u={};return!t||typeof t!="string"?t:(r&&r.format||(r=r||{},r.format=f.settings.format),f.formats.toArray(r.format).map(function(n){var r=f.formats[n],e=r?i.trigger(r,f,[t,u]):n.replace(/^!/,"").length;r&&(u[n]=t.substr(0,e));t=t.substr(e)}),[u.yyyy||u.yy,+(u.mm||u.m)-1,u.dd||u.d])};r.prototype.formats=function(){function n(n,t,i){var r=n.match(/[^\x00-\x7F]+|\w+/)[0];return i.mm||i.m||(i.m=t.indexOf(r)+1),r.length}function t(n){return n.match(/\w+/)[0].length}return{d:function(n,t){return n?i.digits(n):t.date},dd:function(n,t){return n?2:i.lead(t.date)},ddd:function(n,i){return n?t(n):this.settings.weekdaysShort[i.day]},dddd:function(n,i){return n?t(n):this.settings.weekdaysFull[i.day]},m:function(n,t){return n?i.digits(n):t.month+1},mm:function(n,t){return n?2:i.lead(t.month+1)},mmm:function(t,i){var r=this.settings.monthsShort;return t?n(t,r,i):r[i.month]},mmmm:function(t,i){var r=this.settings.monthsFull;return t?n(t,r,i):r[i.month]},yy:function(n,t){return n?2:(""+t.year).slice(2)},yyyy:function(n,t){return n?4:t.year},toArray:function(n){return n.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(n,t){var r=this;return r.formats.toArray(n).map(function(n){return i.trigger(r.formats[n],r,[0,t])||n.replace(/^!/,"")}).join("")}}}();r.prototype.isDateExact=function(n,r){var u=this;return i.isInteger(n)&&i.isInteger(r)||typeof n=="boolean"&&typeof r=="boolean"?n===r:(i.isDate(n)||t.isArray(n))&&(i.isDate(r)||t.isArray(r))?u.create(n).pick===u.create(r).pick:t.isPlainObject(n)&&t.isPlainObject(r)?u.isDateExact(n.from,r.from)&&u.isDateExact(n.to,r.to):!1};r.prototype.isDateOverlap=function(n,r){var u=this,f=u.settings.firstDay?1:0;return i.isInteger(n)&&(i.isDate(r)||t.isArray(r))?(n=n%7+f,n===u.create(r).day+1):i.isInteger(r)&&(i.isDate(n)||t.isArray(n))?(r=r%7+f,r===u.create(n).day+1):t.isPlainObject(n)&&t.isPlainObject(r)?u.overlapRanges(n,r):!1};r.prototype.flipEnable=function(n){var t=this.item;t.enable=n||(t.enable==-1?1:-1)};r.prototype.deactivate=function(n,r){var f=this,u=f.item.disable.slice(0);return r=="flip"?f.flipEnable():r===!1?(f.flipEnable(1),u=[]):r===!0?(f.flipEnable(-1),u=[]):r.map(function(n){for(var e,r=0;r<u.length;r+=1)if(f.isDateExact(n,u[r])){e=!0;break}e||(i.isInteger(n)||i.isDate(n)||t.isArray(n)||t.isPlainObject(n)&&n.from&&n.to)&&u.push(n)}),u};r.prototype.activate=function(n,r){var f=this,u=f.item.disable,e=u.length;return r=="flip"?f.flipEnable():r===!0?(f.flipEnable(1),u=[]):r===!1?(f.flipEnable(-1),u=[]):r.map(function(n){for(var o,s,h,r=0;r<e;r+=1)if(s=u[r],f.isDateExact(s,n)){o=u[r]=null;h=!0;break}else if(f.isDateOverlap(s,n)){t.isPlainObject(n)?(n.inverted=!0,o=n):t.isArray(n)?(o=n,o[3]||o.push("inverted")):i.isDate(n)&&(o=[n.getFullYear(),n.getMonth(),n.getDate(),"inverted"]);break}if(o)for(r=0;r<e;r+=1)if(f.isDateExact(u[r],n)){u[r]=null;break}if(h)for(r=0;r<e;r+=1)if(f.isDateOverlap(u[r],n)){u[r]=null;break}o&&u.push(o)}),u.filter(function(n){return n!=null})};r.prototype.nodes=function(n){var r=this,t=r.settings,o=r.item,c=o.now,l=o.select,a=o.highlight,e=o.view,w=o.disable,s=o.min,h=o.max,b=function(n,r){return t.firstDay&&(n.push(n.shift()),r.push(r.shift())),i.node("thead",i.node("tr",i.group({min:0,max:u-1,i:1,node:"th",item:function(i){return[n[i],t.klass.weekdays,'scope=col title="'+r[i]+'"']}})))}((t.showWeekdaysFull?t.weekdaysFull:t.weekdaysShort).slice(0),t.weekdaysFull.slice(0)),v=function(n){return i.node("div"," ",t.klass["nav"+(n?"Next":"Prev")]+(n&&e.year>=h.year&&e.month>=h.month||!n&&e.year<=s.year&&e.month<=s.month?" "+t.klass.navDisabled:""),"data-nav="+(n||-1)+" "+i.ariaAttr({role:"button",controls:r.$node[0].id+"_table"})+' title="'+(n?t.labelMonthNext:t.labelMonthPrev)+'"')},y=function(){var u=t.showMonthsShort?t.monthsShort:t.monthsFull;return t.selectMonths?i.node("select",i.group({min:0,max:11,i:1,node:"option",item:function(n){return[u[n],0,"value="+n+(e.month==n?" selected":"")+(e.year==s.year&&n<s.month||e.year==h.year&&n>h.month?" disabled":"")]}}),t.klass.selectMonth,(n?"":"disabled")+" "+i.ariaAttr({controls:r.$node[0].id+"_table"})+' title="'+t.labelMonthSelect+'"'):i.node("div",u[e.month],t.klass.month)},p=function(){var o=e.year,l=t.selectYears===!0?5:~~(t.selectYears/2),v,y;if(l){var c=s.year,a=h.year,u=o-l,f=o+l;return c>u&&(f+=c-u,u=c),a<f&&(v=u-c,y=f-a,u-=v>y?y:v,f=a),i.node("select",i.group({min:u,max:f,i:1,node:"option",item:function(n){return[n,0,"value="+n+(o==n?" selected":"")]}}),t.klass.selectYear,(n?"":"disabled")+" "+i.ariaAttr({controls:r.$node[0].id+"_table"})+' title="'+t.labelYearSelect+'"')}return i.node("div",o,t.klass.year)};return i.node("div",(t.selectYears?p()+y():y()+p())+v()+v(1),t.klass.header)+i.node("table",b+i.node("tbody",i.group({min:0,max:f-1,i:1,node:"tr",item:function(n){var f=t.firstDay&&r.create([e.year,e.month,1]).day===0?-7:0;return[i.group({min:u*n-e.day+f+1,max:function(){return this.min+u-1},i:1,node:"td",item:function(n){n=r.create([e.year,e.month,n+(t.firstDay?1:0)]);var u=l&&l.pick==n.pick,f=a&&a.pick==n.pick,o=w&&r.disabled(n)||n.pick<s.pick||n.pick>h.pick,v=i.trigger(r.formats.toString,r,[t.format,n]);return[i.node("div",n.date,function(i){return i.push(e.month==n.month?t.klass.infocus:t.klass.outfocus),c.pick==n.pick&&i.push(t.klass.now),u&&i.push(t.klass.selected),f&&i.push(t.klass.highlighted),o&&i.push(t.klass.disabled),i.join(" ")}([t.klass.day]),"data-pick="+n.pick+" "+i.ariaAttr({role:"gridcell",label:v,selected:u&&r.$node.val()===v?!0:null,activedescendant:f?!0:null,disabled:o?!0:null})),"",i.ariaAttr({role:"presentation"})]}})]}})),t.klass.table,'id="'+r.$node[0].id+'_table" '+i.ariaAttr({role:"grid",controls:r.$node[0].id,readonly:!0}))+i.node("div",i.node("button",t.today,t.klass.buttonToday,"type=button data-pick="+c.pick+(n&&!r.disabled(c)?"":" disabled")+" "+i.ariaAttr({controls:r.$node[0].id}))+i.node("button",t.clear,t.klass.buttonClear,"type=button data-clear=1"+(n?"":" disabled")+" "+i.ariaAttr({controls:r.$node[0].id}))+i.node("button",t.close,t.klass.buttonClose,"type=button data-close=true "+(n?"":" disabled")+" "+i.ariaAttr({controls:r.$node[0].id})),t.klass.footer)};r.defaults=function(n){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],today:"Today",clear:"Clear",close:"Close",closeOnSelect:!0,closeOnClear:!0,format:"d mmmm, yyyy",klass:{table:n+"table",header:n+"header",navPrev:n+"nav--prev",navNext:n+"nav--next",navDisabled:n+"nav--disabled",month:n+"month",year:n+"year",selectMonth:n+"select--month",selectYear:n+"select--year",weekdays:n+"weekday",day:n+"day",disabled:n+"day--disabled",selected:n+"day--selected",highlighted:n+"day--highlighted",now:n+"day--today",infocus:n+"day--infocus",outfocus:n+"day--outfocus",footer:n+"footer",buttonClear:n+"button--clear",buttonToday:n+"button--today",buttonClose:n+"button--close"}}}(n.klasses().picker+"__");n.extend("pickadate",r)});$.extend($.fn.pickadate.defaults,{selectMonths:!0,selectYears:15,onRender:function(){var n=this.$root,t=this.get("highlight","yyyy"),i=this.get("highlight","dd"),r=this.get("highlight","mmm"),u=this.get("highlight","dddd");n.find(".picker__header").prepend('<div class="picker__date-display"><div class="picker__weekday-display">'+u+'<\/div><div class="picker__month-display"><div>'+r+'<\/div><\/div><div class="picker__day-display"><div>'+i+'<\/div><\/div><div    class="picker__year-display"><div>'+t+"<\/div><\/div><\/div>")}}),function(){function o(n){return document.createElementNS(b,n)}function s(n){return(n<10?"0":"")+n}function tt(n){var t=++nt+"";return n?n+t:t}function t(t,a){function vt(n,t){var b=ot.offset(),k=/^touch/.test(n.type),s=b.left+i,c=b.top+i,f=(k?n.originalEvent.touches[0]:n).pageX-s,o=(k?n.originalEvent.touches[0]:n).pageY-c,d=Math.sqrt(f*f+o*o),l=!1,g;if(!t||!(d<r-u||d>r+u)){n.preventDefault();g=setTimeout(function(){w.popover.addClass("clockpicker-moving")},200);h&&ot.append(w.canvas);w.setHand(f,o,!t,!0);e.off(v).on(v,function(n){n.preventDefault();var t=/^touch/.test(n.type),i=(t?n.originalEvent.touches[0]:n).pageX-s,r=(t?n.originalEvent.touches[0]:n).pageY-c;(l||i!==f||r!==o)&&(l=!0,w.setHand(i,r,!1,!0))});e.off(y).on(y,function(n){e.off(y);n.preventDefault();var i=/^touch/.test(n.type),r=(i?n.originalEvent.changedTouches[0]:n).pageX-s,u=(i?n.originalEvent.changedTouches[0]:n).pageY-c;(t||l)&&r===f&&u===o&&w.setHand(r,u);w.currentView==="hours"?w.toggleView("minutes",p/2):a.autoclose&&(w.minutesView.addClass("clockpicker-dial-out"),setTimeout(function(){w.done()},p/2));ot.prepend(yt);clearTimeout(g);w.popover.removeClass("clockpicker-moving");e.off(v)})}}var g=n(it),ot=g.find(".clockpicker-plate"),ti=g.find(".picker__holder"),pt=g.find(".clockpicker-hours"),bt=g.find(".clockpicker-minutes"),ii=g.find(".clockpicker-am-pm-block"),kt=t.prop("tagName")==="INPUT",lt=kt?t:t.find("input"),ei=lt.prop("type")==="time",ri=n("label[for="+lt.attr("id")+"]"),ui=g.find(".clockpicker-timezone-block"),w=this,dt,fi,gt,at,b,k,nt,ft,wt,ni,yt,et,rt,ut,st,ht,ct;if(this.id=tt("cp"),this.element=t,this.holder=ti,this.options=a,this.isAppended=!1,this.isShown=!1,this.currentView="hours",this.isInput=kt,this.input=lt,this.label=ri,this.popover=g,this.plate=ot,this.hoursView=pt,this.minutesView=bt,this.amPmBlock=ii,this.spanHours=g.find(".clockpicker-span-hours"),this.spanMinutes=g.find(".clockpicker-span-minutes"),this.spanAmPm=g.find(".clockpicker-span-am-pm"),this.footer=g.find(".picker__footer"),this.amOrPm="",this.timezoneHolder=ui,a.twelvehour&&(dt='<div class="clockpicker-am-pm-block"><button type="button" class="btn-floating btn-flat clockpicker-button clockpicker-am-button">AM<\/button><button type="button" class="btn-floating btn-flat clockpicker-button clockpicker-pm-button">PM<\/button><\/div>',fi=n(dt),a.ampmclickable?(this.spanAmPm.empty(),n('<div id="click-am">AM<\/div>').on("click",function(){w.spanAmPm.children("#click-am").addClass("text-primary");w.spanAmPm.children("#click-pm").removeClass("text-primary");w.amOrPm="AM"}).appendTo(this.spanAmPm),n('<div id="click-pm">PM<\/div>').on("click",function(){w.spanAmPm.children("#click-pm").addClass("text-primary");w.spanAmPm.children("#click-am").removeClass("text-primary");w.amOrPm="PM"}).appendTo(this.spanAmPm)):(n('<button type="button" class="btn-floating btn-flat clockpicker-button am-button" tabindex="1">AM<\/button>').on("click",function(){w.amOrPm="AM";w.amPmBlock.children(".pm-button").removeClass("active");w.amPmBlock.children(".am-button").addClass("active");w.spanAmPm.empty().append("AM")}).appendTo(this.amPmBlock),n('<button type="button" class="btn-floating btn-flat clockpicker-button pm-button" tabindex="2">PM<\/button>').on("click",function(){w.amOrPm="PM";w.amPmBlock.children(".am-button").removeClass("active");w.amPmBlock.children(".pm-button").addClass("active");w.spanAmPm.empty().append("PM")}).appendTo(this.amPmBlock))),a.darktheme&&g.addClass("darktheme"),gt=n('<button type="button" class="btn btn-flat clockpicker-button" tabindex="'+(a.twelvehour?"3":"1")+'">'+a.donetext+"<\/button>").click(n.proxy(this.done,this)).appendTo(this.footer),this.closeTimePickerButton=gt,this.spanHours.click(n.proxy(this.toggleView,this,"hours")),this.spanMinutes.click(n.proxy(this.toggleView,this,"minutes")),!a.editable)lt.on("focus.clockpicker click.clockpicker",n.proxy(this.show,this));if(at=n('<div class="clockpicker-tick"><\/div>'),a.timezone||this.timezoneHolder.hide(),a.twelvehour)for(b=0;b<12;b+=a.hourstep){k=at.clone();nt=b/6*Math.PI;ft=r;k.css("font-size","140%");k.css({left:i+Math.sin(nt)*ft-u,top:i-Math.cos(nt)*ft-u});k.html(b===0?12:b);pt.append(k);k.on(c,vt)}else for(b=0;b<24;b+=a.hourstep){k=at.clone();nt=b/6*Math.PI;wt=b>0&&b<13;ft=wt?l:r;k.css({left:i+Math.sin(nt)*ft-u,top:i-Math.cos(nt)*ft-u});wt&&k.css("font-size","120%");k.html(b===0?"00":b);pt.append(k);k.on(c,vt)}for(ni=Math.max(a.minutestep,5),b=0;b<60;b+=ni)for(b=0;b<60;b+=5){k=at.clone();nt=b/30*Math.PI;k.css({left:i+Math.sin(nt)*r-u,top:i-Math.cos(nt)*r-u});k.css("font-size","140%");k.html(s(b));bt.append(k);k.on(c,vt)}ot.on(c,function(t){n(t.target).closest(".clockpicker-tick").length===0&&vt(t,!0)});h&&(yt=g.find(".clockpicker-canvas"),et=o("svg"),et.setAttribute("class","clockpicker-svg"),et.setAttribute("width",d),et.setAttribute("height",d),rt=o("g"),rt.setAttribute("transform","translate("+i+","+i+")"),ut=o("circle"),ut.setAttribute("class","clockpicker-canvas-bearing"),ut.setAttribute("cx",0),ut.setAttribute("cy",0),ut.setAttribute("r",2),st=o("line"),st.setAttribute("x1",0),st.setAttribute("y1",0),ht=o("circle"),ht.setAttribute("class","clockpicker-canvas-bg"),ht.setAttribute("r",u),ct=o("circle"),ct.setAttribute("class","clockpicker-canvas-fg"),ct.setAttribute("r",5),rt.appendChild(st),rt.appendChild(ht),rt.appendChild(ct),rt.appendChild(ut),et.appendChild(rt),yt.append(et),this.hand=st,this.bg=ht,this.fg=ct,this.bearing=ut,this.g=rt,this.canvas=yt);f(this.options.init)}function f(n){n&&typeof n=="function"&&n()}var n=window.jQuery,w=n(window),e=n(document),b="http://www.w3.org/2000/svg",h="SVGAngle"in window&&function(){var t,n=document.createElement("div");return n.innerHTML="<svg/>",t=(n.firstChild&&n.firstChild.namespaceURI)==b,n.innerHTML="",t}(),g=function(){var n=document.createElement("div").style;return"transition"in n||"WebkitTransition"in n||"MozTransition"in n||"msTransition"in n||"OTransition"in n}(),a="ontouchstart"in window,c="mousedown"+(a?" touchstart":""),v="mousemove.clockpicker"+(a?" touchmove.clockpicker":""),y="mouseup.clockpicker"+(a?" touchend.clockpicker":""),k=navigator.vibrate?"vibrate":navigator.webkitVibrate?"webkitVibrate":null,nt=0,i=135,r=110,l=80,u=20,d=i*2,p=g?350:1,it='<div class="clockpicker picker"><div class="picker__holder"><div class="picker__frame"><div class="picker__wrap"><div class="picker__box"><div class="picker__date-display"><div class="clockpicker-display"><div class="clockpicker-display-column"><span class="clockpicker-span-hours text-primary"><\/span>:<span class="clockpicker-span-minutes"><\/span><\/div><div class="clockpicker-display-column clockpicker-display-am-pm"><div class="clockpicker-span-am-pm"><\/div><\/div><\/div><\/div><div class="picker__calendar-container"><div class="clockpicker-plate"><div class="clockpicker-canvas"><\/div><div class="clockpicker-dial clockpicker-hours"><\/div><div class="clockpicker-dial clockpicker-minutes clockpicker-dial-out"><\/div><\/div><div class="clockpicker-am-pm-block"><\/div><div class="clockpicker-timezone-block mt-1"><select class="timezone-select browser-default w-100"><\/select><\/div><\/div><div class="picker__footer"><\/div><\/div><\/div><\/div><\/div><\/div>';t.DEFAULTS={"default":"",fromnow:0,donetext:"Done",autoclose:!1,ampmclickable:!1,darktheme:!1,twelvehour:!1,vibrate:!0,hourstep:1,minutestep:1,ampmSubmit:!1,editable:!1,timezone:!1};t.prototype.toggle=function(){this[this.isShown?"hide":"show"]()};t.prototype.locate=function(){var n=this.element,t=this.popover,i=n.offset(),r=n.outerWidth(),u=n.outerHeight(),f=this.options.align,e=this;t.show()};t.prototype.parseInputValue=function(){var n=this.input.prop("value")||this.options["default"]||"",t=!1,i;n==="now"&&(n=new Date(+new Date+this.options.fromnow),t=n.toLocaleString("en-US").slice(-2)==="PM");n instanceof Date&&(n=n.getHours()+":"+n.getMinutes());n=n.split(":");this.hours=+n[0]||0;this.minutes=+(n[1]+"").replace(/\D/g,"")||0;this.hours=Math.round(this.hours/this.options.hourstep)*this.options.hourstep;this.minutes=Math.round(this.minutes/this.options.minutestep)*this.options.minutestep;this.options.twelvehour&&(i=(n[1]+"").replace(/[\d+|\s+]/g,"").toLowerCase(),this.amOrPm=this.hours>12||t||i==="pm"?"PM":"AM")};t.prototype.show=function(){if(!this.isShown){f(this.options.beforeShow);n(":input").each(function(){n(this).attr("tabindex",-1)});var t=this;if(this.input.blur(),this.popover.addClass("picker--opened"),this.input.addClass("picker__input picker__input--active"),n(document.body).css("overflow","hidden"),!this.isAppended){this.popover.insertAfter(this.input);this.options.twelvehour&&(this.amOrPm="PM",this.options.ampmclickable?(this.spanAmPm.children("#click-pm").addClass("text-primary"),this.spanAmPm.children("#click-am").removeClass("text-primary")):(this.amPmBlock.children(".am-button").removeClass("active"),this.amPmBlock.children(".pm-button").addClass("active"),this.spanAmPm.empty().append("PM")));w.on("resize.clockpicker"+this.id,function(){t.isShown&&t.locate()});this.isAppended=!0}this.parseInputValue();this.spanHours.html(s(this.hours));this.spanMinutes.html(s(this.minutes));this.options.twelvehour&&this.spanAmPm.empty().append(this.amOrPm);this.toggleView("hours");this.locate();this.isShown=!0;e.on("click.clockpicker."+this.id+" focusin.clockpicker."+this.id,function(i){if(!i||i.type==="click"){var r=n(i.target);r.closest(t.popover.find(".picker__wrap")).length===0&&r.closest(t.input).length===0&&t.hide()}});e.on("keyup.clockpicker."+this.id,function(n){n.keyCode===27&&t.hide()});f(this.options.afterShow)}};t.prototype.hide=function(){f(this.options.beforeHide);this.input.removeClass("picker__input picker__input--active");this.popover.removeClass("picker--opened");n(document.body).css("overflow","visible");this.isShown=!1;n(":input").each(function(t){n(this).attr("tabindex",t+1)});e.off("click.clockpicker."+this.id+" focusin.clockpicker."+this.id);e.off("keyup.clockpicker."+this.id);this.popover.hide();f(this.options.afterHide)};t.prototype.toggleView=function(t,i){var u=!1;t==="minutes"&&n(this.hoursView).css("visibility")==="visible"&&(f(this.options.beforeHourSelect),u=!0);var r=t==="hours",o=r?this.hoursView:this.minutesView,e=r?this.minutesView:this.hoursView;this.currentView=t;this.spanHours.toggleClass("text-primary",r);this.spanMinutes.toggleClass("text-primary",!r);e.addClass("clockpicker-dial-out");o.css("visibility","visible").removeClass("clockpicker-dial-out");this.resetClock(i);clearTimeout(this.toggleViewTimer);this.toggleViewTimer=setTimeout(function(){e.css("visibility","hidden")},p);u&&f(this.options.afterHourSelect)};t.prototype.resetClock=function(n){var u=this.currentView,t=this[u],f=u==="hours",a=Math.PI/(f?6:30),e=t*a,o=f&&t>0&&t<13?l:r,s=Math.sin(e)*o,c=-Math.cos(e)*o,i=this;h&&n?(i.canvas.addClass("clockpicker-canvas-out"),setTimeout(function(){i.canvas.removeClass("clockpicker-canvas-out");i.setHand(s,c)},n)):this.setHand(s,c)};t.prototype.setHand=function(t,i,u,f){var o=Math.atan2(t,-i),c=this.currentView==="hours",d=Math.sqrt(t*t+i*i),a=this.options,b=c&&d<(r+l)/2,p=b?l:r,w,e,v,y;if(w=c?a.hourstep/6*Math.PI:a.minutestep/30*Math.PI,a.twelvehour&&(p=r),o<0&&(o=Math.PI*2+o),e=Math.round(o/w),o=e*w,c?(e*=a.hourstep,a.twelvehour||!b!=e>0||(e+=12),a.twelvehour&&e===0&&(e=12),e===24&&(e=0)):(e*=a.minutestep,e===60&&(e=0)),c?this.fg.setAttribute("class","clockpicker-canvas-fg"):e%5==0?this.fg.setAttribute("class","clockpicker-canvas-fg"):this.fg.setAttribute("class","clockpicker-canvas-fg active"),this[this.currentView]!==e&&k&&this.options.vibrate&&(this.vibrateTimer||(navigator[k](10),this.vibrateTimer=setTimeout(n.proxy(function(){this.vibrateTimer=null},this),100))),this[this.currentView]=e,this[c?"spanHours":"spanMinutes"].html(s(e)),!h){this[c?"hoursView":"minutesView"].find(".clockpicker-tick").each(function(){var t=n(this);t.toggleClass("active",e===+t.html())});return}f||!c&&e%5?(this.g.insertBefore(this.hand,this.bearing),this.g.insertBefore(this.bg,this.fg),this.bg.setAttribute("class","clockpicker-canvas-bg clockpicker-canvas-bg-trans")):(this.g.insertBefore(this.hand,this.bg),this.g.insertBefore(this.fg,this.bg),this.bg.setAttribute("class","clockpicker-canvas-bg"));v=Math.sin(o)*p;y=-Math.cos(o)*p;this.hand.setAttribute("x2",v);this.hand.setAttribute("y2",y);this.bg.setAttribute("cx",v);this.bg.setAttribute("cy",y);this.fg.setAttribute("cx",v);this.fg.setAttribute("cy",y)};t.prototype.getTime=function(n){var i,t;return this.parseInputValue(),i=this.hours,this.options.twelvehour&&i<12&&this.amOrPm==="PM"&&(i+=12),t=new Date,t.setMinutes(this.minutes),t.setHours(i),t.setSeconds(0),n&&n.apply(this.element,t)||t};t.prototype.done=function(){f(this.options.beforeDone);this.hide();this.label.addClass("active");var i=this.input.prop("value"),t=this.hours,n=":"+s(this.minutes);this.isHTML5&&this.options.twelvehour&&(this.hours<12&&this.amOrPm==="PM"&&(t+=12),this.hours===12&&this.amOrPm==="AM"&&(t=0));n=s(t)+n;!this.isHTML5&&this.options.twelvehour&&(n=n+" "+this.amOrPm);this.input.prop("value",n);n!==i&&(this.input.trigger("change"),this.isInput||this.element.trigger("change"));this.options.autoclose&&this.input.trigger("blur");f(this.options.afterDone)};t.prototype.remove=function(){this.element.removeData("clockpicker");this.input.off("focus.clockpicker click.clockpicker");this.isShown&&this.hide();this.isAppended&&(w.off("resize.clockpicker"+this.id),this.popover.remove())};n.fn.pickatime=function(i){function u(){var r=n(this),u=r.data("clockpicker"),e;u?typeof u[i]=="function"&&u[i].apply(u,f):(e=n.extend({},t.DEFAULTS,r.data(),typeof i=="object"&&i),r.data("clockpicker",new t(r,e)))}var f=Array.prototype.slice.call(arguments,1),r;return this.length==1?(r=u.apply(this[0]),r!==undefined?r:this):this.each(u)}}();!function(n,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():n.PhotoSwipe=t()}(this,function(){"use strict";return function(n,t,i,r){var f={features:null,bind:function(n,t,i,r){var f=(r?"remove":"add")+"EventListener",u;for(t=t.split(" "),u=0;u<t.length;u++)t[u]&&n[f](t[u],i,!1)},isArray:function(n){return n instanceof Array},createEl:function(n,t){var i=document.createElement(t||"div");return n&&(i.className=n),i},getScrollY:function(){var n=window.pageYOffset;return void 0!==n?n:document.documentElement.scrollTop},unbind:function(n,t,i){f.bind(n,t,i,!0)},removeClass:function(n,t){var i=new RegExp("(\\s|^)"+t+"(\\s|$)");n.className=n.className.replace(i," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")},addClass:function(n,t){f.hasClass(n,t)||(n.className+=(n.className?" ":"")+t)},hasClass:function(n,t){return n.className&&new RegExp("(^|\\s)"+t+"(\\s|$)").test(n.className)},getChildByClass:function(n,t){for(var i=n.firstChild;i;){if(f.hasClass(i,t))return i;i=i.nextSibling}},arraySearch:function(n,t,i){for(var r=n.length;r--;)if(n[r][i]===t)return r;return-1},extend:function(n,t,i){for(var r in t)if(t.hasOwnProperty(r)){if(i&&n.hasOwnProperty(r))continue;n[r]=t[r]}},easing:{sine:{out:function(n){return Math.sin(n*(Math.PI/2))},inOut:function(n){return-(Math.cos(Math.PI*n)-1)/2}},cubic:{out:function(n){return--n*n*n+1}}},detectFeatures:function(){var o,i,s,r,e,l;if(f.features)return f.features;var a=f.createEl(),v=a.style,t="",n={};(n.oldIE=document.all&&!document.addEventListener,n.touch="ontouchstart"in window,window.requestAnimationFrame&&(n.raf=window.requestAnimationFrame,n.caf=window.cancelAnimationFrame),n.pointerEvent=navigator.pointerEnabled||navigator.msPointerEnabled,n.pointerEvent)||(o=navigator.userAgent,/iP(hone|od)/.test(navigator.platform)&&(i=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),i&&i.length>0&&(i=parseInt(i[1],10),i>=1&&8>i&&(n.isOldIOSPhone=!0))),s=o.match(/Android\s([0-9\.]*)/),r=s?s[1]:0,r=parseFloat(r),r>=1&&(4.4>r&&(n.isOldAndroid=!0),n.androidVersion=r),n.isMobileOpera=/opera mini|opera mobi/i.test(o));for(var u,h,y=["transform","perspective","animationName"],p=["","webkit","Moz","ms","O"],c=0;4>c;c++){for(t=p[c],e=0;3>e;e++)u=y[e],h=t+(t?u.charAt(0).toUpperCase()+u.slice(1):u),!n[u]&&h in v&&(n[u]=h);t&&!n.raf&&(t=t.toLowerCase(),n.raf=window[t+"RequestAnimationFrame"],n.raf&&(n.caf=window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]))}return n.raf||(l=0,n.raf=function(n){var t=(new Date).getTime(),i=Math.max(0,16-(t-l)),r=window.setTimeout(function(){n(t+i)},i);return l=t+i,r},n.caf=function(n){clearTimeout(n)}),n.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,f.features=n,n}},si,uf,ff,et;f.detectFeatures();f.features.oldIE&&(f.bind=function(n,t,i,r){t=t.split(" ");for(var u,e=(r?"detach":"attach")+"Event",o=function(){i.handleEvent.call(i)},f=0;f<t.length;f++)if(u=t[f])if("object"==typeof i&&i.handleEvent){if(r){if(!i["oldIE"+u])return!1}else i["oldIE"+u]=o;n[e]("on"+u,i["oldIE"+u])}else n[e]("on"+u,i)});var u=this,ye=25,dt=3,e={allowPanToNext:!0,spacing:.12,bgOpacity:1,mouseUsed:!1,loop:!0,pinchToClose:!0,closeOnScroll:!0,closeOnVerticalDrag:!0,verticalDragRange:.75,hideAnimationDuration:333,showAnimationDuration:333,showHideOpacity:!1,focus:!0,escKey:!0,arrowKeys:!0,mainScrollEndFriction:.35,panEndFriction:.35,isClickableElement:function(n){return"A"===n.tagName},getDoubleTapZoom:function(n,t){return n?1:t.initialZoomLevel<.7?1:1.33},maxSpreadZoom:1.33,modal:!0,scaleMode:"fit"};f.extend(e,r);var gi,pe,of,h,we,vt,lr,eu,b,l,hi,sf,hf,cf,ou,y,be,su,hu,ar,cu,nr,gt,yt,lu,lf,ke,de,af,ci,a,ge,au,vr,vf,yr,pr,ct,yf,li,tr,vu,ai,ot,pt,no,to,s,wt,k,ni,pf,yu,pu,wu,bu,ti=function(){return{x:0,y:0}},ii=ti(),ir=ti(),o=ti(),d={},ri=0,rr={},rt=ti(),ht=0,ku=!0,wf=[],wr={},vi=!1,br=function(n,t){f.extend(u,t.publicMethods);wf.push(n)},du=function(n){var t=ft();return n>t-1?n-t:0>n?t+n:n},kr={},v=function(n,t){return kr[n]||(kr[n]=[]),kr[n].push(t)},c=function(n){var i=kr[n],r,t;if(i)for(r=Array.prototype.slice.call(arguments),r.shift(),t=0;t<i.length;t++)i[t].apply(u,r)},lt=function(){return(new Date).getTime()},bt=function(n){pu=n;u.bg.style.opacity=n*e.bgOpacity},io=function(n,t,i,r,f){(!vi||f&&f!==u.currItem)&&(r/=f?f.fitRatio:u.currItem.fitRatio);n[nr]=sf+t+"px, "+i+"px"+hf+" scale("+r+")"},p=function(n){wt&&(n&&(l>u.currItem.fitRatio?vi||(di(u.currItem,!1,!0),vi=!0):vi&&(di(u.currItem),vi=!1)),io(wt,o.x,o.y,l))},dr=function(n){n.container&&io(n.container.style,n.initialPosition.x,n.initialPosition.y,n.initialZoomLevel,n)},ur=function(n,t){t[nr]=sf+n+"px, 0px"+hf},gu=function(n,t){if(!e.loop&&t){var r=h+(rt.x*ri-n)/rt.x,i=Math.round(n-kt.x);(0>r&&i>0||r>=ft()-1&&0>i)&&(n=kt.x+i*e.mainScrollEndFriction)}kt.x=n;ur(n,we)},bf=function(n,t){var i=iu[n]-rr[n];return ir[n]+ii[n]+i-i*(t/hi)},g=function(n,t){n.x=t.x;n.y=t.y;t.id&&(n.id=t.id)},ro=function(n){n.x=Math.round(n.x);n.y=Math.round(n.y)},kf=null,df=function(){kf&&(f.unbind(document,"mousemove",df),f.addClass(n,"pswp--has_mouse"),e.mouseUsed=!0,c("mouseUsed"));kf=setTimeout(function(){kf=null},100)},es=function(){f.bind(document,"keydown",u);a.transform&&f.bind(u.scrollWrap,"click",u);e.mouseUsed||f.bind(document,"mousemove",df);f.bind(window,"resize scroll",u);c("bindEvents")},os=function(){f.unbind(window,"resize",u);f.unbind(window,"scroll",b.scroll);f.unbind(document,"keydown",u);f.unbind(document,"mousemove",df);a.transform&&f.unbind(u.scrollWrap,"click",u);ct&&f.unbind(window,lr,u);c("unbindEvents")},gf=function(n,t){var i=uu(u.currItem,d,n);return t&&(s=i),i},uo=function(n){return n||(n=u.currItem),n.initialZoomLevel},fo=function(n){return n||(n=u.currItem),n.w>0?e.maxSpreadZoom:1},eo=function(n,t,i,r){return r===u.currItem.initialZoomLevel?(i[n]=u.currItem.initialPosition[n],!0):(i[n]=bf(n,r),i[n]>t.min[n]?(i[n]=t.min[n],!0):i[n]<t.max[n]?(i[n]=t.max[n],!0):!1)},ss=function(){if(nr){var t=a.perspective&&!yt;return sf="translate"+(t?"3d(":"("),void(hf=a.perspective?", 0px)":")")}nr="left";f.addClass(n,"pswp--ie");ur=function(n,t){t.left=n+"px"};dr=function(n){var i=n.fitRatio>1?1:n.fitRatio,t=n.container.style,r=i*n.w,u=i*n.h;t.width=r+"px";t.height=u+"px";t.left=n.initialPosition.x+"px";t.top=n.initialPosition.y+"px"};p=function(){if(wt){var n=wt,t=u.currItem,i=t.fitRatio>1?1:t.fitRatio,r=i*t.w,f=i*t.h;n.width=r+"px";n.height=f+"px";n.left=o.x+"px";n.top=o.y+"px"}}},hs=function(n){var t="";e.escKey&&27===n.keyCode?t="close":e.arrowKeys&&(37===n.keyCode?t="prev":39===n.keyCode&&(t="next"));t&&(n.ctrlKey||n.altKey||n.shiftKey||n.metaKey||(n.preventDefault?n.preventDefault():n.returnValue=!1,u[t]()))},cs=function(n){n&&(tr||li||k||yr)&&(n.preventDefault(),n.stopPropagation())},oo=function(){u.setScrollOffset(0,f.getScrollY())},ut={},fr=0,gr=function(n){ut[n]&&(ut[n].raf&&lf(ut[n].raf),fr--,delete ut[n])},ne=function(n){ut[n]&&gr(n);ut[n]||(fr++,ut[n]={})},nu=function(){for(var n in ut)ut.hasOwnProperty(n)&&gr(n)},tu=function(n,t,i,r,u,f,e){var o,h=lt(),s;ne(n);s=function(){if(ut[n]){if(o=lt()-h,o>=r)return gr(n),f(i),void(e&&e());f((i-t)*u(o/r)+t);ut[n].raf=lu(s)}};s()},ls={shout:c,listen:v,viewportSize:d,options:e,isMainScrollAnimating:function(){return k},getZoomLevel:function(){return l},getCurrentIndex:function(){return h},isDragging:function(){return ct},isZooming:function(){return pt},setScrollOffset:function(n,t){rr.x=n;ci=rr.y=t;c("updateScrollOffset",rr)},applyZoomPan:function(n,t,i,r){o.x=t;o.y=i;l=n;p(r)},init:function(){var i,o,s,r;if(!gi&&!pe){for(u.framework=f,u.template=n,u.bg=f.getChildByClass(n,"pswp__bg"),ke=n.className,gi=!0,a=f.detectFeatures(),lu=a.raf,lf=a.caf,nr=a.transform,af=a.oldIE,u.scrollWrap=f.getChildByClass(n,"pswp__scroll-wrap"),u.container=f.getChildByClass(u.scrollWrap,"pswp__container"),we=u.container.style,u.itemHolders=y=[{el:u.container.children[0],wrap:0,index:-1},{el:u.container.children[1],wrap:0,index:-1},{el:u.container.children[2],wrap:0,index:-1}],y[0].el.style.display=y[2].el.style.display="none",ss(),b={resize:u.updateSize,scroll:oo,keydown:hs,click:cs},o=a.isOldIOSPhone||a.isOldAndroid||a.isMobileOpera,a.animationName&&a.transform&&!o||(e.showAnimationDuration=e.hideAnimationDuration=0),i=0;i<wf.length;i++)u["init"+wf[i]]();for(t&&(s=u.ui=new t(u,f),s.init()),c("firstUpdate"),h=h||e.index||0,(isNaN(h)||0>h||h>=ft())&&(h=0),u.currItem=oi(h),(a.isOldIOSPhone||a.isOldAndroid)&&(ku=!1),n.setAttribute("aria-hidden","false"),e.modal&&(ku?n.style.position="fixed":(n.style.position="absolute",n.style.top=f.getScrollY()+"px")),void 0===ci&&(c("initialLayout"),ci=de=f.getScrollY()),r="pswp--open ",e.mainClass&&(r+=e.mainClass+" "),e.showHideOpacity&&(r+="pswp--animate_opacity "),r+=yt?"pswp--touch":"pswp--notouch",r+=a.animationName?" pswp--css_animation":"",r+=a.svg?" pswp--svg":"",f.addClass(n,r),u.updateSize(),vt=-1,ht=null,i=0;dt>i;i++)ur((i+vt)*rt.x,y[i].el.style);af||f.bind(u.scrollWrap,eu,u);v("initialZoomInEnd",function(){u.setContent(y[0],h-1);u.setContent(y[2],h+1);y[0].el.style.display=y[2].el.style.display="block";e.focus&&n.focus();es()});u.setContent(y[1],h);u.updateCurrItem();c("afterInit");ku||(cf=setInterval(function(){fr||ct||pt||l!==u.currItem.initialZoomLevel||u.updateSize()},1e3));f.addClass(n,"pswp--visible")}},close:function(){gi&&(gi=!1,pe=!0,c("close"),os(),bo(u.currItem,null,!0,u.destroy))},destroy:function(){c("destroy");bi&&clearTimeout(bi);n.setAttribute("aria-hidden","true");n.className=ke;cf&&clearInterval(cf);f.unbind(u.scrollWrap,eu,u);f.unbind(window,"scroll",u);re();nu();kr=null},panTo:function(n,t,i){i||(n>s.min.x?n=s.min.x:n<s.max.x&&(n=s.max.x),t>s.min.y?t=s.min.y:t<s.max.y&&(t=s.max.y));o.x=n;o.y=t;p()},handleEvent:function(n){n=n||window.event;b[n.type]&&b[n.type](n)},goTo:function(n){n=du(n);var t=n-h;ht=t;h=n;u.currItem=oi(h);ri-=t;gu(rt.x*ri);nu();k=!1;u.updateCurrItem()},next:function(){u.goTo(h+1)},prev:function(){u.goTo(h-1)},updateCurrZoomItem:function(n){if(n&&c("beforeChange",0),y[1].el.children.length){var t=y[1].el.children[0];wt=f.hasClass(t,"pswp__zoom-wrap")?t.style:null}else wt=null;s=u.currItem.bounds;hi=l=u.currItem.initialZoomLevel;o.x=s.center.x;o.y=s.center.y;n&&c("afterChange")},invalidateCurrItems:function(){ou=!0;for(var n=0;dt>n;n++)y[n].item&&(y[n].item.needsUpdate=!0)},updateCurrItem:function(n){var t,i,r,f;if(0!==ht&&(i=Math.abs(ht),!(n&&2>i))){for(u.currItem=oi(h),vi=!1,c("beforeChange",ht),i>=dt&&(vt+=ht+(ht>0?-dt:dt),i=dt),r=0;i>r;r++)ht>0?(t=y.shift(),y[dt-1]=t,vt++,ur((vt+2)*rt.x,t.el.style),u.setContent(t,h-i+r+1+1)):(t=y.pop(),y.unshift(t),vt--,ur(vt*rt.x,t.el.style),u.setContent(t,h+i-r-2));wt&&1===Math.abs(ht)&&(f=oi(be),f.initialZoomLevel!==l&&(uu(f,d),di(f),dr(f)));ht=0;u.updateCurrZoomItem();be=h;c("afterChange")}},updateSize:function(t){var w,v,i,r,a;if(!ku&&e.modal){if(w=f.getScrollY(),ci!==w&&(n.style.top=w+"px",ci=w),!t&&wr.x===window.innerWidth&&wr.y===window.innerHeight)return;wr.x=window.innerWidth;wr.y=window.innerHeight;n.style.height=wr.y+"px"}if(d.x=u.scrollWrap.clientWidth,d.y=u.scrollWrap.clientHeight,oo(),rt.x=d.x+Math.round(d.x*e.spacing),rt.y=d.y,gu(rt.x*ri),c("beforeResize"),void 0!==vt){for(a=0;dt>a;a++)v=y[a],ur((a+vt)*rt.x,v.el.style),r=h+a-1,e.loop&&ft()>2&&(r=du(r)),i=oi(r),i&&(ou||i.needsUpdate||!i.bounds)?(u.cleanSlide(i),u.setContent(v,r),1===a&&(u.currItem=i,u.updateCurrZoomItem(!0)),i.needsUpdate=!1):-1===v.index&&r>=0&&u.setContent(v,r),i&&i.container&&(uu(i,d),di(i),dr(i));ou=!1}hi=l=u.currItem.initialZoomLevel;s=u.currItem.bounds;s&&(o.x=s.center.x,o.y=s.center.y,p(!0));c("resize")},zoomTo:function(n,t,i,r,u){var h,e,c,s,a;t&&(hi=l,iu.x=Math.abs(t.x)-o.x,iu.y=Math.abs(t.y)-o.y,g(ir,o));h=gf(n,!1);e={};eo("x",h,e,n);eo("y",h,e,n);c=l;s={x:o.x,y:o.y};ro(e);a=function(t){1===t?(l=n,o.x=e.x,o.y=e.y):(l=(n-c)*t+c,o.x=(e.x-s.x)*t+s.x,o.y=(e.y-s.y)*t+s.y);u&&u(t);p(1===t)};i?tu("customZoomTo",0,1,i,r||f.easing.sine.inOut,a):a(1)}},so=30,te=10,nt={},yi={},tt={},it={},er={},ui=[],pi={},wi=[],or={},nf=0,tf=ti(),ie=0,kt=ti(),iu=ti(),sr=ti(),as=function(n,t){return n.x===t.x&&n.y===t.y},vs=function(n,t){return Math.abs(n.x-t.x)<ye&&Math.abs(n.y-t.y)<ye},ho=function(n,t){return or.x=Math.abs(n.x-t.x),or.y=Math.abs(n.y-t.y),Math.sqrt(or.x*or.x+or.y*or.y)},re=function(){vu&&(lf(vu),vu=null)},co=function(){ct&&(vu=lu(co),ds())},ys=function(){return!("fit"===e.scaleMode&&l===u.currItem.initialZoomLevel)},lo=function(n,t){return n&&n!==document?n.getAttribute("class")&&n.getAttribute("class").indexOf("pswp__scroll-wrap")>-1?!1:t(n)?n:lo(n.parentNode,t):!1},ue={},ao=function(n,t){return ue.prevent=!lo(n.target,e.isClickableElement),c("preventDragEvent",n,t,ue),ue.prevent},vo=function(n,t){return t.x=n.pageX,t.y=n.pageY,t.id=n.identifier,t},yo=function(n,t,i){i.x=.5*(n.x+t.x);i.y=.5*(n.y+t.y)},ps=function(n,t,i){if(n-au>50){var r=wi.length>2?wi.shift():{};r.x=t;r.y=i;wi.push(r);au=n}},po=function(){var n=o.y-u.currItem.initialPosition.y;return 1-Math.abs(n/(d.y/2))},ru={},ws={},fi=[],fe=function(n){for(;fi.length>0;)fi.pop();return gt?(bu=0,ui.forEach(function(n){0===bu?fi[0]=n:1===bu&&(fi[1]=n);bu++})):n.type.indexOf("touch")>-1?n.touches&&n.touches.length>0&&(fi[0]=vo(n.touches[0],ru),n.touches.length>1&&(fi[1]=vo(n.touches[1],ws))):(ru.x=n.pageX,ru.y=n.pageY,ru.id="",fi[0]=ru),fi},wo=function(n,t){var f,c,a,i,y=0,r=o[n]+t[n],p=t[n]>0,h=kt.x+t.x,v=kt.x-pi.x;return f=r>s.min[n]||r<s.max[n]?e.panEndFriction:1,r=o[n]+t[n]*f,!e.allowPanToNext&&l!==u.currItem.initialZoomLevel||(wt?"h"!==ni||"x"!==n||li||(p?(r>s.min[n]&&(f=e.panEndFriction,y=s.min[n]-r,c=s.min[n]-ir[n]),(0>=c||0>v)&&ft()>1?(i=h,0>v&&h>pi.x&&(i=pi.x)):s.min.x!==s.max.x&&(a=r)):(r<s.max[n]&&(f=e.panEndFriction,y=r-s.max[n],c=ir[n]-s.max[n]),(0>=c||v>0)&&ft()>1?(i=h,v>0&&h<pi.x&&(i=pi.x)):s.min.x!==s.max.x&&(a=r))):i=h,"x"!==n)?void(k||ai||l>u.currItem.fitRatio&&(o[n]+=t[n]*f)):(void 0!==i&&(gu(i,!0),ai=i===pi.x?!1:!0),s.min.x!==s.max.x&&(void 0!==a?o.x=a:ai||(o.x+=t.x*f)),void 0!==i)},bs=function(n){var i,t,r;if(!("mousedown"===n.type&&n.button>0)){if(hr)return void n.preventDefault();pr&&"mousedown"===n.type||((ao(n,!0)&&n.preventDefault(),c("pointerDown"),gt)&&(i=f.arraySearch(ui,n.pointerId,"id"),0>i&&(i=ui.length),ui[i]={x:n.pageX,y:n.pageY,id:n.pointerId}),t=fe(n),r=t.length,ot=null,nu(),ct&&1!==r||(ct=pf=!0,f.bind(window,lr,u),vf=wu=yu=yr=ai=tr=yf=li=!1,ni=null,c("firstTouchStart",t),g(ir,o),ii.x=ii.y=0,g(it,t[0]),g(er,it),pi.x=rt.x*ri,wi=[{x:it.x,y:it.y}],au=ge=lt(),gf(l,!0),re(),co()),!pt&&r>1&&!k&&!ai&&(hi=l,li=!1,pt=yf=!0,ii.y=ii.x=0,g(ir,o),g(nt,t[0]),g(yi,t[1]),yo(nt,yi,sr),iu.x=Math.abs(sr.x)-o.x,iu.y=Math.abs(sr.y)-o.y,no=to=ho(nt,yi)))}},ks=function(n){var i,r,t,u;(n.preventDefault(),gt)&&(i=f.arraySearch(ui,n.pointerId,"id"),i>-1&&(r=ui[i],r.x=n.pageX,r.y=n.pageY));ct&&(t=fe(n),ni||tr||pt?ot=t:kt.x!==rt.x*ri?ni="h":(u=Math.abs(t[0].x-it.x)-Math.abs(t[0].y-it.y),Math.abs(u)>=te&&(ni=u>0?"h":"v",ot=t)))},ds=function(){var r,f,n,y,a,v,w;if(ot&&(r=ot.length,0!==r))if(g(nt,ot[0]),tt.x=nt.x-it.x,tt.y=nt.y-it.y,pt&&r>1){if(it.x=nt.x,it.y=nt.y,!tt.x&&!tt.y&&as(ot[1],yi))return;g(yi,ot[1]);li||(li=!0,c("zoomGestureStarted"));f=ho(nt,yi);n=rh(f);n>u.currItem.initialZoomLevel+u.currItem.initialZoomLevel/15&&(wu=!0);var t=1,i=uo(),h=fo();i>n?e.pinchToClose&&!wu&&hi<=u.currItem.initialZoomLevel?(y=i-n,a=1-y/(i/1.2),bt(a),c("onPinchClose",a),yu=!0):(t=(i-n)/i,t>1&&(t=1),n=i-t*(i/3)):n>h&&(t=(n-h)/(6*i),t>1&&(t=1),n=h+t*i);0>t&&(t=0);no=f;yo(nt,yi,tf);ii.x+=tf.x-sr.x;ii.y+=tf.y-sr.y;g(sr,tf);o.x=bf("x",n);o.y=bf("y",n);vf=n>l;l=n;p()}else{if(!ni)return;if(pf&&(pf=!1,Math.abs(tt.x)>=te&&(tt.x-=ot[0].x-er.x),Math.abs(tt.y)>=te&&(tt.y-=ot[0].y-er.y)),it.x=nt.x,it.y=nt.y,0===tt.x&&0===tt.y)return;if("v"===ni&&e.closeOnVerticalDrag&&!ys())return ii.y+=tt.y,o.y+=tt.y,v=po(),yr=!0,c("onVerticalDrag",v),bt(v),void p();ps(lt(),nt.x,nt.y);tr=!0;s=u.currItem.bounds;w=wo("x",tt);w||(wo("y",tt),ro(o),p())}},gs=function(n){var i,h,b,r,v,t,s,d,y,w,nt;if(a.isOldAndroid){if(pr&&"mouseup"===n.type)return;n.type.indexOf("touch")>-1&&(clearTimeout(pr),pr=setTimeout(function(){pr=0},600))}if(c("pointerUp"),ao(n,!1)&&n.preventDefault(),gt&&(h=f.arraySearch(ui,n.pointerId,"id"),h>-1&&((i=ui.splice(h,1)[0],navigator.pointerEnabled)?i.type=n.pointerType||"mouse":(b={4:"mouse",2:"touch",3:"pen"},i.type=b[n.pointerType],i.type||(i.type=n.pointerType||"mouse")))),v=fe(n),t=v.length,"mouseup"===n.type&&(t=0),2===t)return ot=null,!0;if(1===t&&g(er,v[0]),0!==t||ni||k||(i||("mouseup"===n.type?i={x:n.pageX,y:n.pageY,type:"mouse"}:n.changedTouches&&n.changedTouches[0]&&(i={x:n.changedTouches[0].pageX,y:n.changedTouches[0].pageY,type:"touch"})),c("touchRelease",n,i)),s=-1,0===t&&(ct=!1,f.unbind(window,lr,u),re(),pt?s=0:-1!==ie&&(s=lt()-ie)),ie=1===t?lt():-1,r=-1!==s&&150>s?"zoom":"swipe",pt&&2>t&&(pt=!1,1===t&&(r="zoomPointerUp"),c("zoomGestureEnded")),ot=null,tr||li||k||yr)if(nu(),vr||(vr=nh()),vr.calculateSwipeSpeed("x"),yr)d=po(),d<e.verticalDragRange?u.close():(y=o.y,w=pu,tu("verticalDrag",0,1,300,f.easing.cubic.out,function(n){o.y=(u.currItem.initialPosition.y-y)*n+y;bt((1-w)*n+w);p()}),c("onVerticalDrag",1));else{if((ai||k)&&0===t){if(nt=ih(r,vr),nt)return;r="zoomPointerUp"}if(!k)return"swipe"!==r?void uh():void(!ai&&l>u.currItem.fitRatio&&th(vr))}},nh=function(){var t,i,n={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(r){wi.length>1?(t=lt()-au+50,i=wi[wi.length-2][r]):(t=lt()-ge,i=er[r]);n.lastFlickOffset[r]=it[r]-i;n.lastFlickDist[r]=Math.abs(n.lastFlickOffset[r]);n.lastFlickSpeed[r]=n.lastFlickDist[r]>20?n.lastFlickOffset[r]/t:0;Math.abs(n.lastFlickSpeed[r])<.1&&(n.lastFlickSpeed[r]=0);n.slowDownRatio[r]=.95;n.slowDownRatioReverse[r]=1-n.slowDownRatio[r];n.speedDecelerationRatio[r]=1},calculateOverBoundsAnimOffset:function(t,i){n.backAnimStarted[t]||(o[t]>s.min[t]?n.backAnimDestination[t]=s.min[t]:o[t]<s.max[t]&&(n.backAnimDestination[t]=s.max[t]),void 0!==n.backAnimDestination[t]&&(n.slowDownRatio[t]=.7,n.slowDownRatioReverse[t]=1-n.slowDownRatio[t],n.speedDecelerationRatioAbs[t]<.05&&(n.lastFlickSpeed[t]=0,n.backAnimStarted[t]=!0,tu("bounceZoomPan"+t,o[t],n.backAnimDestination[t],i||300,f.easing.sine.out,function(n){o[t]=n;p()}))))},calculateAnimOffset:function(t){n.backAnimStarted[t]||(n.speedDecelerationRatio[t]=n.speedDecelerationRatio[t]*(n.slowDownRatio[t]+n.slowDownRatioReverse[t]-n.slowDownRatioReverse[t]*n.timeDiff/10),n.speedDecelerationRatioAbs[t]=Math.abs(n.lastFlickSpeed[t]*n.speedDecelerationRatio[t]),n.distanceOffset[t]=n.lastFlickSpeed[t]*n.speedDecelerationRatio[t]*n.timeDiff,o[t]+=n.distanceOffset[t])},panAnimLoop:function(){if(ut.zoomPan&&(ut.zoomPan.raf=lu(n.panAnimLoop),n.now=lt(),n.timeDiff=n.now-n.lastNow,n.lastNow=n.now,n.calculateAnimOffset("x"),n.calculateAnimOffset("y"),p(),n.calculateOverBoundsAnimOffset("x"),n.calculateOverBoundsAnimOffset("y"),n.speedDecelerationRatioAbs.x<.05&&n.speedDecelerationRatioAbs.y<.05))return(o.x=Math.round(o.x),o.y=Math.round(o.y),p(),void gr("zoomPan"))}};return n},th=function(n){return n.calculateSwipeSpeed("y"),s=u.currItem.bounds,n.backAnimDestination={},n.backAnimStarted={},Math.abs(n.lastFlickSpeed.x)<=.05&&Math.abs(n.lastFlickSpeed.y)<=.05?(n.speedDecelerationRatioAbs.x=n.speedDecelerationRatioAbs.y=0,n.calculateOverBoundsAnimOffset("x"),n.calculateOverBoundsAnimOffset("y"),!0):(ne("zoomPan"),n.lastNow=lt(),void n.panAnimLoop())},ih=function(n,t){var r,o,l,a,v,i,s,y;return k||(nf=h),"swipe"===n&&(l=it.x-er.x,a=t.lastFlickDist.x<10,l>so&&(a||t.lastFlickOffset.x>20)?o=-1:-so>l&&(a||t.lastFlickOffset.x<-20)&&(o=1)),o&&(h+=o,0>h?(h=e.loop?ft()-1:0,v=!0):h>=ft()&&(h=e.loop?0:ft()-1,v=!0),(!v||e.loop)&&(ht+=o,ri-=o,r=!0)),s=rt.x*ri,y=Math.abs(s-kt.x),r||s>kt.x==t.lastFlickSpeed.x>0?(i=Math.abs(t.lastFlickSpeed.x)>0?y/Math.abs(t.lastFlickSpeed.x):333,i=Math.min(i,400),i=Math.max(i,250)):i=333,nf===h&&(r=!1),k=!0,c("mainScrollAnimStart"),tu("mainScroll",kt.x,s,i,f.easing.cubic.out,gu,function(){nu();k=!1;nf=-1;(r||nf!==h)&&u.updateCurrItem();c("mainScrollAnimComplete")}),r&&u.updateCurrItem(!0),r},rh=function(n){return 1/to*n*hi},uh=function(){var n=l,t=uo(),r=fo(),e,o,i;return t>l?n=t:l>r&&(n=r),o=1,i=pu,yu&&!vf&&!wu&&t>l?(u.close(),!0):(yu&&(e=function(n){bt((o-i)*n+i)}),u.zoomTo(n,0,200,f.easing.cubic.out,e),!0)};br("Gestures",{publicMethods:{initGestures:function(){var n=function(n,t,i,r,u){su=n+t;hu=n+i;ar=n+r;cu=u?n+u:""};gt=a.pointerEvent;gt&&a.touch&&(a.touch=!1);gt?navigator.pointerEnabled?n("pointer","down","move","up","cancel"):n("MSPointer","Down","Move","Up","Cancel"):a.touch?(n("touch","start","move","end","cancel"),yt=!0):n("mouse","down","move","up");lr=hu+" "+ar+" "+cu;eu=su;gt&&!yt&&(yt=navigator.maxTouchPoints>1||navigator.msMaxTouchPoints>1);u.likelyTouchDevice=yt;b[su]=bs;b[hu]=ks;b[ar]=gs;cu&&(b[cu]=b[ar]);a.touch&&(eu+=" mousedown",lr+=" mousemove mouseup",b.mousedown=b[su],b.mousemove=b[hu],b.mouseup=b[ar]);yt||(e.allowPanToNext=!1)}}});var bi,ei,ee,hr,oi,ft,fh,bo=function(t,i,r,s){var a,v,y,w;if(bi&&clearTimeout(bi),hr=!0,ee=!0,t.initialLayout?(a=t.initialLayout,t.initialLayout=null):a=e.getThumbBoundsFn&&e.getThumbBoundsFn(h),v=r?e.hideAnimationDuration:e.showAnimationDuration,y=function(){gr("initialZoom");r?(u.template.removeAttribute("style"),u.bg.removeAttribute("style")):(bt(1),i&&(i.style.display="block"),f.addClass(n,"pswp--animated-in"),c("initialZoom"+(r?"OutEnd":"InEnd")));s&&s();hr=!1},!v||!a||void 0===a.x)return c("initialZoom"+(r?"Out":"In")),l=t.initialZoomLevel,g(o,t.initialPosition),p(),n.style.opacity=r?0:1,bt(1),void(v?setTimeout(function(){y()},v):y());w=function(){var s=of,i=!u.currItem.src||u.currItem.loadError||e.showHideOpacity;t.miniImg&&(t.miniImg.style.webkitBackfaceVisibility="hidden");r||(l=a.w/t.w,o.x=a.x,o.y=a.y-de,u[i?"template":"bg"].style.opacity=.001,p());ne("initialZoom");r&&!s&&f.removeClass(n,"pswp--animated-in");i&&(r?f[(s?"remove":"add")+"Class"](n,"pswp--animate_opacity"):setTimeout(function(){f.addClass(n,"pswp--animate_opacity")},30));bi=setTimeout(function(){if(c("initialZoom"+(r?"Out":"In")),r){var e=a.w/t.w,u={x:o.x,y:o.y},h=l,w=pu,b=function(t){1===t?(l=e,o.x=a.x,o.y=a.y-ci):(l=(e-h)*t+h,o.x=(a.x-u.x)*t+u.x,o.y=(a.y-ci-u.y)*t+u.y);p();i?n.style.opacity=1-t:bt(w-t*w)};s?tu("initialZoom",0,1,v,f.easing.cubic.out,b,y):(b(1),bi=setTimeout(y,v+20))}else l=t.initialZoomLevel,g(o,t.initialPosition),p(),bt(1),i?n.style.opacity=1:bt(1),bi=setTimeout(y,v+20)},r?25:90)};w()},st={},ki=[],eh={index:0,errorMsg:'<div class="pswp__error-msg"><a href="%url%" target="_blank">The image<\/a> could not be loaded.<\/div>',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return ei.length}},ko=function(){return{center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}}},oh=function(n,t,i){var r=n.bounds;r.center.x=Math.round((st.x-t)/2);r.center.y=Math.round((st.y-i)/2)+n.vGap.top;r.max.x=t>st.x?Math.round(st.x-t):r.center.x;r.max.y=i>st.y?Math.round(st.y-i)+n.vGap.top:r.center.y;r.min.x=t>st.x?0:r.center.x;r.min.y=i>st.y?n.vGap.top:r.center.y},uu=function(n,t,i){var r,u,f,o;return n.src&&!n.loadError?(r=!i,(r&&(n.vGap||(n.vGap={top:0,bottom:0}),c("parseVerticalMargin",n)),st.x=t.x,st.y=t.y-n.vGap.top-n.vGap.bottom,r)&&(u=st.x/n.w,f=st.y/n.h,n.fitRatio=f>u?u:f,o=e.scaleMode,"orig"===o?i=1:"fit"===o&&(i=n.fitRatio),i>1&&(i=1),n.initialZoomLevel=i,n.bounds||(n.bounds=ko())),!i)?void 0:(oh(n,n.w*i,n.h*i),r&&i===n.initialZoomLevel&&(n.initialPosition=n.bounds.center),n.bounds):(n.w=n.h=0,n.initialZoomLevel=n.fitRatio=1,n.bounds=ko(),n.initialPosition=n.bounds.center,n.bounds)},rf=function(n,t,i,r,f,e){t.loadError||r&&(t.imageAppended=!0,di(t,r,t===u.currItem&&vi),i.appendChild(r),e&&setTimeout(function(){t&&t.loaded&&t.placeholder&&(t.placeholder.style.display="none",t.placeholder=null)},500))},go=function(n){n.loading=!0;n.loaded=!1;var t=n.img=f.createEl("pswp__img","img"),i=function(){n.loading=!1;n.loaded=!0;n.loadComplete?n.loadComplete(n):n.img=null;t.onload=t.onerror=null;t=null};return t.onload=i,t.onerror=function(){n.loadError=!0;i()},t.src=n.src,t},ns=function(n,t){if(n.src&&n.loadError&&n.container)return(t&&(n.container.innerHTML=""),n.container.innerHTML=e.errorMsg.replace("%url%",n.src),!0)},di=function(n,t,i){if(n.src){t||(t=n.container.lastChild);var r=i?n.w:Math.round(n.w*n.fitRatio),u=i?n.h:Math.round(n.h*n.fitRatio);n.placeholder&&!n.loaded&&(n.placeholder.style.width=r+"px",n.placeholder.style.height=u+"px");t.style.width=r+"px";t.style.height=u+"px"}},ts=function(){if(ki.length){for(var n,t=0;t<ki.length;t++)n=ki[t],n.holder.index===n.index&&rf(n.index,n.item,n.baseDiv,n.img,!1,n.clearPlaceholder);ki=[]}};br("Controller",{publicMethods:{lazyLoadItem:function(n){n=du(n);var t=oi(n);t&&(!t.loaded&&!t.loading||ou)&&(c("gettingData",n,t),t.src&&go(t))},initController:function(){f.extend(e,eh,!0);u.items=ei=i;oi=u.getItemAt;ft=e.getNumItemsFn;fh=e.loop;ft()<3&&(e.loop=!1);v("beforeChange",function(n){for(var i=e.preload,r=null===n?!0:n>=0,f=Math.min(i[0],ft()),o=Math.min(i[1],ft()),t=1;(r?o:f)>=t;t++)u.lazyLoadItem(h+t);for(t=1;(r?f:o)>=t;t++)u.lazyLoadItem(h-t)});v("initialLayout",function(){u.currItem.initialLayout=e.getThumbBoundsFn&&e.getThumbBoundsFn(h)});v("mainScrollAnimComplete",ts);v("initialZoomInEnd",ts);v("destroy",function(){for(var n,t=0;t<ei.length;t++)n=ei[t],n.container&&(n.container=null),n.placeholder&&(n.placeholder=null),n.img&&(n.img=null),n.preloader&&(n.preloader=null),n.loadError&&(n.loaded=n.loadError=!1);ki=null})},getItemAt:function(n){return n>=0&&void 0!==ei[n]?ei[n]:!1},allowProgressiveImg:function(){return e.forceProgressiveLoading||!yt||e.mouseUsed||screen.width>1200},setContent:function(n,t){var l,o,i,r,v,s;if(e.loop&&(t=du(t)),l=u.getItemAt(n.index),l&&(l.container=null),i=u.getItemAt(t),!i)return void(n.el.innerHTML="");c("gettingData",t,i);n.index=t;n.item=i;r=i.container=f.createEl("pswp__zoom-wrap");(!i.src&&i.html&&(i.html.tagName?r.appendChild(i.html):r.innerHTML=i.html),ns(i),uu(i,d),!i.src||i.loadError||i.loaded)?i.src&&!i.loadError&&(o=f.createEl("pswp__img","img"),o.style.opacity=1,o.src=i.src,di(i,o),rf(t,i,r,o,!0)):((i.loadComplete=function(i){if(gi){if(n&&n.index===t){if(ns(i,!0))return i.loadComplete=i.img=null,uu(i,d),dr(i),void(n.index===h&&u.updateCurrZoomItem());i.imageAppended?!hr&&i.placeholder&&(i.placeholder.style.display="none",i.placeholder=null):a.transform&&(k||hr)?ki.push({item:i,baseDiv:r,img:i.img,index:t,holder:n,clearPlaceholder:!0}):rf(t,i,r,i.img,k||hr,!0)}i.loadComplete=null;i.img=null;c("imageLoadComplete",t,i)}},f.features.transform)&&(v="pswp__img pswp__img--placeholder",v+=i.msrc?"":" pswp__img--placeholder--blank",s=f.createEl(v,i.msrc?"img":""),i.msrc&&(s.src=i.msrc),di(i,s),r.appendChild(s),i.placeholder=s),i.loading||go(i),u.allowProgressiveImg()&&(!ee&&a.transform?ki.push({item:i,baseDiv:r,img:i.img,index:t,holder:n}):rf(t,i,r,i.img,!0,!0)));ee||t!==h?dr(i):(wt=r.style,bo(i,o||i.img));n.el.innerHTML="";n.el.appendChild(r)},cleanSlide:function(n){n.img&&(n.img.onload=n.img.onerror=null);n.loaded=n.loading=n.img=n.imageAppended=!1}}});uf={};ff=function(n,t,i){var r=document.createEvent("CustomEvent"),u={origEvent:n,target:n.target,releasePoint:t,pointerType:i||"touch"};r.initCustomEvent("pswpTap",!0,!0,u);n.target.dispatchEvent(r)};br("Tap",{publicMethods:{initTap:function(){v("firstTouchStart",u.onTapStart);v("touchRelease",u.onTapRelease);v("destroy",function(){uf={};si=null})},onTapStart:function(n){n.length>1&&(clearTimeout(si),si=null)},onTapRelease:function(n,t){var i,r;if(t&&!tr&&!yf&&!fr){if(i=t,si&&(clearTimeout(si),si=null,vs(i,uf)))return void c("doubleTap",i);if("mouse"===t.type)return void ff(n,t,"mouse");if(r=n.target.tagName.toUpperCase(),"BUTTON"===r||f.hasClass(n.target,"pswp__single-tap"))return void ff(n,t);g(uf,i);si=setTimeout(function(){ff(n,t);si=null},300)}}}});br("DesktopZoom",{publicMethods:{initDesktopZoom:function(){af||(yt?v("mouseUsed",function(){u.setupDesktopZoom()}):u.setupDesktopZoom(!0))},setupDesktopZoom:function(t){var r,e,i,o;et={};r="wheel mousewheel DOMMouseScroll";v("bindEvents",function(){f.bind(n,r,u.handleMouseWheel)});v("unbindEvents",function(){et&&f.unbind(n,r,u.handleMouseWheel)});u.mouseZoomedIn=!1;i=function(){u.mouseZoomedIn&&(f.removeClass(n,"pswp--zoomed-in"),u.mouseZoomedIn=!1);1>l?f.addClass(n,"pswp--zoom-allowed"):f.removeClass(n,"pswp--zoom-allowed");o()};o=function(){e&&(f.removeClass(n,"pswp--dragging"),e=!1)};v("resize",i);v("afterChange",i);v("pointerDown",function(){u.mouseZoomedIn&&(e=!0,f.addClass(n,"pswp--dragging"))});v("pointerUp",o);t||i()},handleMouseWheel:function(n){if(l<=u.currItem.fitRatio)return e.modal&&(!e.closeOnScroll||fr||ct?n.preventDefault():nr&&Math.abs(n.deltaY)>2&&(of=!0,u.close())),!0;if(n.stopPropagation(),et.x=0,"deltaX"in n)1===n.deltaMode?(et.x=18*n.deltaX,et.y=18*n.deltaY):(et.x=n.deltaX,et.y=n.deltaY);else if("wheelDelta"in n)n.wheelDeltaX&&(et.x=-.16*n.wheelDeltaX),et.y=n.wheelDeltaY?-.16*n.wheelDeltaY:-.16*n.wheelDelta;else{if(!("detail"in n))return;et.y=n.detail}gf(l,!0);var t=o.x-et.x,i=o.y-et.y;(e.modal||t<=s.min.x&&t>=s.max.x&&i<=s.min.y&&i>=s.max.y)&&n.preventDefault();u.panTo(t,i)},toggleDesktopZoom:function(t){t=t||{x:d.x/2+rr.x,y:d.y/2+rr.y};var r=e.getDoubleTapZoom(!0,u.currItem),i=l===r;u.mouseZoomedIn=!i;u.zoomTo(i?u.currItem.initialZoomLevel:r,t,333);f[(i?"remove":"add")+"Class"](n,"pswp--zoomed-in")}}});var oe,is,fu,ef,se,rs,w,cr,he,ce,at,le,sh={history:!0,galleryUID:1},ae=function(){return at.hash.substring(1)},us=function(){oe&&clearTimeout(oe);fu&&clearTimeout(fu)},fs=function(){var u=ae(),n={},t,i,r,f;if(u.length<5)return n;for(i=u.split("&"),t=0;t<i.length;t++)i[t]&&(r=i[t].split("="),r.length<2||(n[r[0]]=r[1]));if(e.galleryPIDs){for(f=n.pid,n.pid=0,t=0;t<ei.length;t++)if(ei[t].pid===f){n.pid=t;break}}else n.pid=parseInt(n.pid,10)-1;return n.pid<0&&(n.pid=0),n},ve=function(){var t,i,n,r;if(fu&&clearTimeout(fu),fr||ct)return void(fu=setTimeout(ve,500));ef?clearTimeout(is):ef=!0;t=h+1;i=oi(h);i.hasOwnProperty("pid")&&(t=i.pid);n=w+"&gid="+e.galleryUID+"&pid="+t;cr||-1===at.hash.indexOf(n)&&(ce=!0);r=at.href.split("#")[0]+"#"+n;le?"#"+n!==window.location.hash&&history[cr?"replaceState":"pushState"]("",document.title,r):cr?at.replace(r):at.hash=n;cr=!0;is=setTimeout(function(){ef=!1},60)};br("History",{publicMethods:{initHistory:function(){var n,t;(f.extend(e,sh,!0),e.history)&&(at=window.location,ce=!1,he=!1,cr=!1,w=ae(),le="pushState"in history,w.indexOf("gid=")>-1&&(w=w.split("&gid=")[0],w=w.split("?gid=")[0]),v("afterChange",u.updateURL),v("unbindEvents",function(){f.unbind(window,"hashchange",u.onHashChange)}),n=function(){rs=!0;he||(ce?history.back():w?at.hash=w:le?history.pushState("",document.title,at.pathname+at.search):at.hash="");us()},v("unbindEvents",function(){of&&n()}),v("destroy",function(){rs||n()}),v("firstUpdate",function(){h=fs().pid}),t=w.indexOf("pid="),t>-1&&(w=w.substring(0,t),"&"===w.slice(-1)&&(w=w.slice(0,-1))),setTimeout(function(){gi&&f.bind(window,"hashchange",u.onHashChange)},40))},onHashChange:function(){return ae()===w?(he=!0,void u.close()):void(ef||(se=!0,u.goTo(fs().pid),se=!1))},updateURL:function(){us();se||(cr?oe=setTimeout(ve,800):ve())}}});f.extend(u,ls)}});!function(n,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():n.PhotoSwipeUI_Default=t()}(this,function(){"use strict";return function(n,t){var e,u,a,c,rt,ut,s,ft,b,f,et,ot,st,ht,i,y,yt,k,d,r=this,g=!1,h=!0,o=!0,pt={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(n,t){return n.title?(t.children[0].innerHTML=n.title,!0):(t.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,clickToCloseNonZoomable:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],getImageURLForShare:function(){return n.currItem.src||""},getPageURLForShare:function(){return window.location.href},getTextForShare:function(){return n.currItem.title||""},indexIndicatorSep:" / ",fitControlsWidth:1200},ct=function(n){var e;if(y)return!0;n=n||window.event;i.timeToIdle&&i.mouseUsed&&!b&&it();for(var r,f,o=n.target||n.srcElement,s=o.getAttribute("class")||"",u=0;u<w.length;u++)r=w[u],r.onTap&&s.indexOf("pswp__"+r.name)>-1&&(r.onTap(),f=!0);f&&(n.stopPropagation&&n.stopPropagation(),y=!0,e=t.features.isOldAndroid?600:30,yt=setTimeout(function(){y=!1},e))},wt=function(){return!n.likelyTouchDevice||i.mouseUsed||screen.width>i.fitControlsWidth},l=function(n,i,r){t[(r?"add":"remove")+"Class"](n,"pswp__"+i)},lt=function(){var n=1===i.getNumItemsFn();n!==ht&&(l(u,"ui--one-slide",n),ht=n)},at=function(){l(s,"share-modal--hidden",o)},v=function(){return o=!o,o?(t.removeClass(s,"pswp__share-modal--fade-in"),setTimeout(function(){o&&at()},300)):(at(),setTimeout(function(){o||t.addClass(s,"pswp__share-modal--fade-in")},30)),o||kt(),!1},bt=function(t){t=t||window.event;var i=t.target||t.srcElement;return n.shout("shareLinkClick",t,i),i.href?i.hasAttribute("download")?!0:(window.open(i.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),o||v(),!1):!1},kt=function(){for(var n,f,r,e,o,t="",u=0;u<i.shareButtons.length;u++)n=i.shareButtons[u],r=i.getImageURLForShare(n),e=i.getPageURLForShare(n),o=i.getTextForShare(n),f=n.url.replace("{{url}}",encodeURIComponent(e)).replace("{{image_url}}",encodeURIComponent(r)).replace("{{raw_image_url}}",r).replace("{{text}}",encodeURIComponent(o)),t+='<a href="'+f+'" target="_blank" class="pswp__share--'+n.id+'"'+(n.download?"download":"")+">"+n.label+"<\/a>",i.parseShareButtonOut&&(t=i.parseShareButtonOut(n,t));s.children[0].innerHTML=t;s.children[0].onclick=bt},nt=function(n){for(var r=0;r<i.closeElClasses.length;r++)if(t.hasClass(n,"pswp__"+i.closeElClasses[r]))return!0},tt=0,it=function(){clearTimeout(d);tt=0;b&&r.setIdle(!1)},vt=function(n){n=n?n:window.event;var t=n.relatedTarget||n.toElement;t&&"HTML"!==t.nodeName||(clearTimeout(d),d=setTimeout(function(){r.setIdle(!0)},i.timeToIdleOutside))},dt=function(){i.fullscreenEl&&!t.features.isOldAndroid&&(e||(e=r.getFullscreenAPI()),e?(t.bind(document,e.eventK,r.updateFullscreen),r.updateFullscreen(),t.addClass(n.template,"pswp--supports-fs")):t.removeClass(n.template,"pswp--supports-fs"))},gt=function(){i.preloaderEl&&(p(!0),f("beforeChange",function(){clearTimeout(st);st=setTimeout(function(){n.currItem&&n.currItem.loading?(!n.allowProgressiveImg()||n.currItem.img&&!n.currItem.img.naturalWidth)&&p(!1):p(!0)},i.loadingIndicatorDelay)}),f("imageLoadComplete",function(t,i){n.currItem===i&&p(!0)}))},p=function(n){ot!==n&&(l(et,"preloader--active",!n),ot=n)},ni=function(n){var r=n.vGap,f,e;wt()?(f=i.barsSize,i.captionEl&&"auto"===f.bottom?(c||(c=t.createEl("pswp__caption pswp__caption--fake"),c.appendChild(t.createEl("pswp__caption__center")),u.insertBefore(c,a),t.addClass(u,"pswp__ui--fit")),i.addCaptionHTMLFn(n,c,!0))?(e=c.clientHeight,r.bottom=parseInt(e,10)||44):r.bottom=f.top:r.bottom="auto"===f.bottom?0:f.bottom,r.top=f.top):r.top=r.bottom=0},ti=function(){i.timeToIdle&&f("mouseUsed",function(){t.bind(document,"mousemove",it);t.bind(document,"mouseout",vt);k=setInterval(function(){tt++;2===tt&&r.setIdle(!0)},i.timeToIdle/2)})},ii=function(){f("onVerticalDrag",function(n){h&&.95>n?r.hideControls():!h&&n>=.95&&r.showControls()});var n;f("onPinchClose",function(t){h&&.9>t?(r.hideControls(),n=!0):n&&!h&&t>.9&&r.showControls()});f("zoomGestureEnded",function(){n=!1;n&&!h&&r.showControls()})},w=[{name:"caption",option:"captionEl",onInit:function(n){a=n}},{name:"share-modal",option:"shareEl",onInit:function(n){s=n},onTap:function(){v()}},{name:"button--share",option:"shareEl",onInit:function(n){ut=n},onTap:function(){v()}},{name:"button--zoom",option:"zoomEl",onTap:n.toggleDesktopZoom},{name:"counter",option:"counterEl",onInit:function(n){rt=n}},{name:"button--close",option:"closeEl",onTap:n.close},{name:"button--arrow--left",option:"arrowEl",onTap:n.prev},{name:"button--arrow--right",option:"arrowEl",onTap:n.next},{name:"button--fs",option:"fullscreenEl",onTap:function(){e.isFullscreen()?e.exit():e.enter()}},{name:"preloader",option:"preloaderEl",onInit:function(n){et=n}}],ri=function(){var n,e,r,o=function(u){var s,f,o;if(u)for(s=u.length,f=0;s>f;f++)for(n=u[f],e=n.className,o=0;o<w.length;o++)r=w[o],e.indexOf("pswp__"+r.name)>-1&&(i[r.option]?(t.removeClass(n,"pswp__element--disabled"),r.onInit&&r.onInit(n)):t.addClass(n,"pswp__element--disabled"))},f;o(u.children);f=t.getChildByClass(u,"pswp__top-bar");f&&o(f.children)};r.init=function(){t.extend(n.options,pt,!0);i=n.options;u=t.getChildByClass(n.scrollWrap,"pswp__ui");f=n.listen;ii();f("beforeChange",r.update);f("doubleTap",function(t){var r=n.currItem.initialZoomLevel;n.getZoomLevel()!==r?n.zoomTo(r,t,333):n.zoomTo(i.getDoubleTapZoom(!1,n.currItem),t,333)});f("preventDragEvent",function(n,t,i){var r=n.target||n.srcElement;r&&r.getAttribute("class")&&n.type.indexOf("mouse")>-1&&(r.getAttribute("class").indexOf("__caption")>0||/(SMALL|STRONG|EM)/i.test(r.tagName))&&(i.prevent=!1)});f("bindEvents",function(){t.bind(u,"pswpTap click",ct);t.bind(n.scrollWrap,"pswpTap",r.onGlobalTap);n.likelyTouchDevice||t.bind(n.scrollWrap,"mouseover",r.onMouseOver)});f("unbindEvents",function(){o||v();k&&clearInterval(k);t.unbind(document,"mouseout",vt);t.unbind(document,"mousemove",it);t.unbind(u,"pswpTap click",ct);t.unbind(n.scrollWrap,"pswpTap",r.onGlobalTap);t.unbind(n.scrollWrap,"mouseover",r.onMouseOver);e&&(t.unbind(document,e.eventK,r.updateFullscreen),e.isFullscreen()&&(i.hideAnimationDuration=0,e.exit()),e=null)});f("destroy",function(){i.captionEl&&(c&&u.removeChild(c),t.removeClass(a,"pswp__caption--empty"));s&&(s.children[0].onclick=null);t.removeClass(u,"pswp__ui--over-close");t.addClass(u,"pswp__ui--hidden");r.setIdle(!1)});i.showAnimationDuration||t.removeClass(u,"pswp__ui--hidden");f("initialZoomIn",function(){i.showAnimationDuration&&t.removeClass(u,"pswp__ui--hidden")});f("initialZoomOut",function(){t.addClass(u,"pswp__ui--hidden")});f("parseVerticalMargin",ni);ri();i.shareEl&&ut&&s&&(o=!0);lt();ti();dt();gt()};r.setIdle=function(n){b=n;l(u,"ui--idle",n)};r.update=function(){h&&n.currItem?(r.updateIndexIndicator(),i.captionEl&&(i.addCaptionHTMLFn(n.currItem,a),l(a,"caption--empty",!n.currItem.title)),g=!0):g=!1;o||v();lt()};r.updateFullscreen=function(i){i&&setTimeout(function(){n.setScrollOffset(0,t.getScrollY())},50);t[(e.isFullscreen()?"add":"remove")+"Class"](n.template,"pswp--fs")};r.updateIndexIndicator=function(){i.counterEl&&(rt.innerHTML=n.getCurrentIndex()+1+i.indexIndicatorSep+i.getNumItemsFn())};r.onGlobalTap=function(u){u=u||window.event;var f=u.target||u.srcElement;if(!y)if(u.detail&&"mouse"===u.detail.pointerType){if(nt(f))return void n.close();t.hasClass(f,"pswp__img")&&(1===n.getZoomLevel()&&n.getZoomLevel()<=n.currItem.fitRatio?i.clickToCloseNonZoomable&&n.close():n.toggleDesktopZoom(u.detail.releasePoint))}else if(i.tapToToggleControls&&(h?r.hideControls():r.showControls()),i.tapToClose&&(t.hasClass(f,"pswp__img")||nt(f)))return void n.close()};r.onMouseOver=function(n){n=n||window.event;var t=n.target||n.srcElement;l(u,"ui--over-close",nt(t))};r.hideControls=function(){t.addClass(u,"pswp__ui--hidden");h=!1};r.showControls=function(){h=!0;g||r.update();t.removeClass(u,"pswp__ui--hidden")};r.supportsFullscreen=function(){var n=document;return!!(n.exitFullscreen||n.mozCancelFullScreen||n.webkitExitFullscreen||n.msExitFullscreen)};r.getFullscreenAPI=function(){var t,r=document.documentElement,u="fullscreenchange";return r.requestFullscreen?t={enterK:"requestFullscreen",exitK:"exitFullscreen",elementK:"fullscreenElement",eventK:u}:r.mozRequestFullScreen?t={enterK:"mozRequestFullScreen",exitK:"mozCancelFullScreen",elementK:"mozFullScreenElement",eventK:"moz"+u}:r.webkitRequestFullscreen?t={enterK:"webkitRequestFullscreen",exitK:"webkitExitFullscreen",elementK:"webkitFullscreenElement",eventK:"webkit"+u}:r.msRequestFullscreen&&(t={enterK:"msRequestFullscreen",exitK:"msExitFullscreen",elementK:"msFullscreenElement",eventK:"MSFullscreenChange"}),t&&(t.enter=function(){return ft=i.closeOnScroll,i.closeOnScroll=!1,"webkitRequestFullscreen"!==this.enterK?n.template[this.enterK]():void n.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)},t.exit=function(){return i.closeOnScroll=ft,document[this.exitK]()},t.isFullscreen=function(){return document[this.elementK]}),t}}});var initPhotoSwipeFromDOM=function(n){for(var i,e=function(n){for(var e=n.childNodes,s=e.length,o=[],t,i,u,r,f=0;f<s;f++)(t=e[f],t.nodeType===1)&&(i=t.children[0],u=i.getAttribute("data-size").split("x"),r={src:i.getAttribute("href"),w:parseInt(u[0],10),h:parseInt(u[1],10)},t.children.length>1&&(r.title=t.children[1].innerHTML),i.children.length>0&&(r.msrc=i.children[0].getAttribute("src")),r.el=t,o.push(r));return o},u=function u(n,t){return n&&(t(n)?n:u(n.parentNode,t))},o=function(n){var o,t,i;if(n=n||window.event,n.preventDefault?n.preventDefault():n.returnValue=!1,o=n.target||n.srcElement,t=u(o,function(n){return n.tagName&&n.tagName.toUpperCase()==="FIGURE"}),t){var h=t.parentNode,r=t.parentNode.childNodes,c=r.length,s=0,e;for(i=0;i<c;i++)if(r[i].nodeType===1){if(r[i]===t){e=s;break}s++}return e>=0&&f(e,h),!1}},s=function(){var u=window.location.hash.substring(1),n={},i,t,r;if(u.length<5)return n;for(i=u.split("&"),t=0;t<i.length;t++)i[t]&&((r=i[t].split("="),r.length<2)||(n[r[0]]=r[1]));return n.gid&&(n.gid=parseInt(n.gid,10)),n},f=function(n,t,i,r){var h=document.querySelectorAll(".pswp")[0],s,u,f,o;if(f=e(t),u={galleryUID:t.getAttribute("data-pswp-uid"),getThumbBoundsFn:function(n){var i=f[n].el.getElementsByTagName("img")[0],r=window.pageYOffset||document.documentElement.scrollTop,t=i.getBoundingClientRect();return{x:t.left,y:t.top+r,w:t.width}}},r)if(u.galleryPIDs){for(o=0;o<f.length;o++)if(f[o].pid==n){u.index=o;break}}else u.index=parseInt(n,10)-1;else u.index=parseInt(n,10);isNaN(u.index)||(i&&(u.showAnimationDuration=0),s=new PhotoSwipe(h,PhotoSwipeUI_Default,f,u),s.init())},r=document.querySelectorAll(n),t=0,h=r.length;t<h;t++)r[t].setAttribute("data-pswp-uid",t+1),r[t].onclick=o;i=s();i.pid&&i.gid&&f(i.pid,r[i.gid-1],!0,!0)};initPhotoSwipeFromDOM(".mdb-lightbox");
/* =============================================================
 * bootstrap3-typeahead.js v4.0.2
 * https://github.com/bassjobsen/Bootstrap-3-Typeahead
 * =============================================================
 * Original written by @mdo and @fat
 * =============================================================
 * Copyright 2014 Bass Jobsen @bassjobsen
 *
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an 'AS IS' BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============================================================ */


(function (root, factory) {

    'use strict';

    // CommonJS module is defined
    if (typeof module !== 'undefined' && module.exports) {
        module.exports = factory(require('jquery'));
    }
    // AMD module is defined
    else if (typeof define === 'function' && define.amd) {
        define(['jquery'], function ($) {
            return factory($);
        });
    } else {
        factory(root.jQuery);
    }

}(this, function ($) {

    'use strict';
    // jshint laxcomma: true


    /* TYPEAHEAD PUBLIC CLASS DEFINITION
     * ================================= */

    var Typeahead = function (element, options) {
        this.$element = $(element);
        this.options = $.extend({}, Typeahead.defaults, options);
        this.matcher = this.options.matcher || this.matcher;
        this.sorter = this.options.sorter || this.sorter;
        this.select = this.options.select || this.select;
        this.autoSelect = typeof this.options.autoSelect == 'boolean' ? this.options.autoSelect : true;
        this.highlighter = this.options.highlighter || this.highlighter;
        this.render = this.options.render || this.render;
        this.updater = this.options.updater || this.updater;
        this.displayText = this.options.displayText || this.displayText;
        this.itemLink = this.options.itemLink || this.itemLink;
        this.itemTitle = this.options.itemTitle || this.itemTitle;
        this.followLinkOnSelect = this.options.followLinkOnSelect || this.followLinkOnSelect;
        this.source = this.options.source;
        this.delay = this.options.delay;
        this.theme = this.options.theme && this.options.themes && this.options.themes[this.options.theme] || Typeahead.defaults.themes[Typeahead.defaults.theme];
        this.$menu = $(this.options.menu || this.theme.menu);
        this.$appendTo = this.options.appendTo ? $(this.options.appendTo) : null;
        this.fitToElement = typeof this.options.fitToElement == 'boolean' ? this.options.fitToElement : false;
        this.shown = false;
        this.listen();
        this.showHintOnFocus = typeof this.options.showHintOnFocus == 'boolean' || this.options.showHintOnFocus === 'all' ? this.options.showHintOnFocus : false;
        this.afterSelect = this.options.afterSelect;
        this.afterEmptySelect = this.options.afterEmptySelect;
        this.addItem = false;
        this.value = this.$element.val() || this.$element.text();
        this.keyPressed = false;
        this.focused = this.$element.is(':focus');
        this.changeInputOnSelect = this.options.changeInputOnSelect || this.changeInputOnSelect;
        this.changeInputOnMove = this.options.changeInputOnMove || this.changeInputOnMove;
        this.openLinkInNewTab = this.options.openLinkInNewTab || this.openLinkInNewTab;
        this.selectOnBlur = this.options.selectOnBlur || this.selectOnBlur;
        this.showCategoryHeader = this.options.showCategoryHeader || this.showCategoryHeader;
    };

    Typeahead.prototype = {

        constructor: Typeahead,


        setDefault: function (val) {
            // var val = this.$menu.find('.active').data('value');
            this.$element.data('active', val);
            if (this.autoSelect || val) {
                var newVal = this.updater(val);
                // Updater can be set to any random functions via "options" parameter in constructor above.
                // Add null check for cases when updater returns void or undefined.
                if (!newVal) {
                    newVal = '';
                }
                this.$element
                    .val(this.displayText(newVal) || newVal)
                    .text(this.displayText(newVal) || newVal)
                    .change();
                this.afterSelect(newVal);
            }
            return this.hide();
        },

        select: function () {
            var val = this.$menu.find('.active').data('value');

            this.$element.data('active', val);
            if (this.autoSelect || val) {
                var newVal = this.updater(val);
                // Updater can be set to any random functions via "options" parameter in constructor above.
                // Add null check for cases when updater returns void or undefined.
                if (!newVal) {
                    newVal = '';
                }

                if (this.changeInputOnSelect) {
                    this.$element
                        .val(this.displayText(newVal) || newVal)
                        .text(this.displayText(newVal) || newVal)
                        .change();
                }

                if (this.followLinkOnSelect && this.itemLink(val)) {
                    if (this.openLinkInNewTab) {
                        window.open(this.itemLink(val), '_blank');
                    } else {
                        document.location = this.itemLink(val);
                    }
                    this.afterSelect(newVal);
                } else if (this.followLinkOnSelect && !this.itemLink(val)) {
                    this.afterEmptySelect(newVal);
                } else {
                    this.afterSelect(newVal);
                }
            } else {
                this.afterEmptySelect();
            }

            return this.hide();
        },

        updater: function (item) {
            return item;
        },

        setSource: function (source) {
            this.source = source;
        },

        show: function () {
            var pos = $.extend({}, this.$element.position(), {
                height: this.$element[0].offsetHeight
            });

            var scrollHeight = typeof this.options.scrollHeight == 'function' ?
                this.options.scrollHeight.call() :
                this.options.scrollHeight;

            var element;
            if (this.shown) {
                element = this.$menu;
            } else if (this.$appendTo) {
                element = this.$menu.appendTo(this.$appendTo);
                this.hasSameParent = this.$appendTo.is(this.$element.parent());
            } else {
                element = this.$menu.insertAfter(this.$element);
                this.hasSameParent = true;
            }

            if (!this.hasSameParent) {
                // We cannot rely on the element position, need to position relative to the window
                element.css('position', 'fixed');
                var offset = this.$element.offset();
                pos.top = offset.top;
                pos.left = offset.left;
            }
            // The rules for bootstrap are: 'dropup' in the parent and 'dropdown-menu-right' in the element.
            // Note that to get right alignment, you'll need to specify `menu` in the options to be:
            // '<ul class="typeahead dropdown-menu" role="listbox"></ul>'
            var dropup = $(element).parent().hasClass('dropup');
            var newTop = dropup ? 'auto' : (pos.top + pos.height + scrollHeight);
            var right = $(element).hasClass('dropdown-menu-right');
            var newLeft = right ? 'auto' : pos.left;
            // it seems like setting the css is a bad idea (just let Bootstrap do it), but I'll keep the old
            // logic in place except for the dropup/right-align cases.
            element.css({ top: newTop, left: newLeft }).show();

            if (this.options.fitToElement === true) {
                element.css('width', this.$element.outerWidth() + 'px');
            }

            this.shown = true;
            return this;
        },

        hide: function () {
            this.$menu.hide();
            this.shown = false;
            return this;
        },

        lookup: function (query) {
            if (typeof (query) != 'undefined' && query !== null) {
                this.query = query;
            } else {
                this.query = this.$element.val();
            }

            if (this.query.length < this.options.minLength && !this.options.showHintOnFocus) {
                return this.shown ? this.hide() : this;
            }

            var worker = $.proxy(function () {

                // Bloodhound (since 0.11) needs three arguments.
                // Two of them are callback functions (sync and async) for local and remote data processing
                // see https://github.com/twitter/typeahead.js/blob/master/src/bloodhound/bloodhound.js#L132
                if ($.isFunction(this.source) && this.source.length === 3) {
                    this.source(this.query, $.proxy(this.process, this), $.proxy(this.process, this));
                } else if ($.isFunction(this.source)) {
                    this.source(this.query, $.proxy(this.process, this));
                } else if (this.source) {
                    this.process(this.source);
                }
            }, this);

            clearTimeout(this.lookupWorker);
            this.lookupWorker = setTimeout(worker, this.delay);
        },

        process: function (items) {
            var that = this;

            items = $.grep(items, function (item) {
                return that.matcher(item);
            });

            items = this.sorter(items);

            if (!items.length && !this.options.addItem) {
                return this.shown ? this.hide() : this;
            }

            if (items.length > 0) {
                this.$element.data('active', items[0]);
            } else {
                this.$element.data('active', null);
            }

            if (this.options.items != 'all') {
                items = items.slice(0, this.options.items);
            }

            // Add item
            if (this.options.addItem) {
                items.push(this.options.addItem);
            }

            return this.render(items).show();
        },

        matcher: function (item) {
            var it = this.displayText(item);
            return ~it.toLowerCase().indexOf(this.query.toLowerCase());
        },

        sorter: function (items) {
            var beginswith = [];
            var caseSensitive = [];
            var caseInsensitive = [];
            var item;

            while ((item = items.shift())) {
                var it = this.displayText(item);
                if (!it.toLowerCase().indexOf(this.query.toLowerCase())) {
                    beginswith.push(item);
                } else if (~it.indexOf(this.query)) {
                    caseSensitive.push(item);
                } else {
                    caseInsensitive.push(item);
                }
            }

            return beginswith.concat(caseSensitive, caseInsensitive);
        },

        highlighter: function (item) {
            var text = this.query;
            if (text === '') {
                return item;
            }
            var matches = item.match(/(>)([^<]*)(<)/g);
            var first = [];
            var second = [];
            var i;
            if (matches && matches.length) {
                // html
                for (i = 0; i < matches.length; ++i) {
                    if (matches[i].length > 2) {// escape '><'
                        first.push(matches[i]);
                    }
                }
            } else {
                // text
                first = [];
                first.push(item);
            }
            text = text.replace((/[\(\)\/\.\*\+\?\[\]]/g), function (mat) {
                return '\\' + mat;
            });
            var reg = new RegExp(text, 'g');
            var m;
            for (i = 0; i < first.length; ++i) {
                m = first[i].match(reg);
                if (m && m.length > 0) {// find all text nodes matches
                    second.push(first[i]);
                }
            }
            for (i = 0; i < second.length; ++i) {
                item = item.replace(second[i], second[i].replace(reg, '<strong>$&</strong>'));
            }
            return item;
        },

        render: function (items) {
            var that = this;
            var self = this;
            var activeFound = false;
            var data = [];
            var _category = that.options.separator;

            $.each(items, function (key, value) {
                // inject separator
                if (key > 0 && value[_category] !== items[key - 1][_category]) {
                    data.push({
                        __type: 'divider'
                    });
                }

                if (this.showCategoryHeader) {
                    // inject category header
                    if (value[_category] && (key === 0 || value[_category] !== items[key - 1][_category])) {
                        data.push({
                            __type: 'category',
                            name: value[_category]
                        });
                    }
                }

                data.push(value);
            });

            items = $(data).map(function (i, item) {
                if ((item.__type || false) == 'category') {
                    return $(that.options.headerHtml || that.theme.headerHtml).text(item.name)[0];
                }

                if ((item.__type || false) == 'divider') {
                    return $(that.options.headerDivider || that.theme.headerDivider)[0];
                }

                var text = self.displayText(item);
                i = $(that.options.item || that.theme.item).data('value', item);
                i.find(that.options.itemContentSelector || that.theme.itemContentSelector)
                    .addBack(that.options.itemContentSelector || that.theme.itemContentSelector)
                    .html(that.highlighter(text, item));
                if (that.options.followLinkOnSelect) {
                    i.find('a').attr('href', self.itemLink(item));
                }
                i.find('a').attr('title', self.itemTitle(item));
                if (text == self.$element.val()) {
                    i.addClass('active');
                    self.$element.data('active', item);
                    activeFound = true;
                }
                return i[0];
            });

            if (this.autoSelect && !activeFound) {
                items.filter(':not(.dropdown-header)').first().addClass('active');
                this.$element.data('active', items.first().data('value'));
            }
            this.$menu.html(items);
            return this;
        },

        displayText: function (item) {
            return typeof item !== 'undefined' && typeof item.name != 'undefined' ? item.name : item;
        },

        itemLink: function (item) {
            return null;
        },

        itemTitle: function (item) {
            return null;
        },

        next: function (event) {
            var active = this.$menu.find('.active').removeClass('active');
            var next = active.next();

            if (!next.length) {
                next = $(this.$menu.find($(this.options.item || this.theme.item).prop('tagName'))[0]);
            }

            while (next.hasClass('divider') || next.hasClass('dropdown-header')) {
                next = next.next();
            }

            next.addClass('active');
            // RQL Fix:
            next.find('a.dropdown-item').addClass('active')
            // added for screen reader
            var newVal = this.updater(next.data('value'));
            if (this.changeInputOnMove) {
                this.$element.val(this.displayText(newVal) || newVal);
            }
        },

        prev: function (event) {
            var active = this.$menu.find('.active').removeClass('active');
            var prev = active.prev();

            if (!prev.length) {
                prev = this.$menu.find($(this.options.item || this.theme.item).prop('tagName')).last();
            }

            while (prev.hasClass('divider') || prev.hasClass('dropdown-header')) {
                prev = prev.prev();
            }

            prev.addClass('active');
            // RQL Fix:
            prev.find('a.dropdown-item').addClass('active')

            // added for screen reader
            var newVal = this.updater(prev.data('value'));
            if (this.changeInputOnMove) {
                this.$element.val(this.displayText(newVal) || newVal);
            }
        },

        listen: function () {
            this.$element
                .on('focus.bootstrap3Typeahead', $.proxy(this.focus, this))
                .on('blur.bootstrap3Typeahead', $.proxy(this.blur, this))
                .on('keypress.bootstrap3Typeahead', $.proxy(this.keypress, this))
                .on('propertychange.bootstrap3Typeahead input.bootstrap3Typeahead', $.proxy(this.input, this))
                .on('keyup.bootstrap3Typeahead', $.proxy(this.keyup, this));

            if (this.eventSupported('keydown')) {
                this.$element.on('keydown.bootstrap3Typeahead', $.proxy(this.keydown, this));
            }

            var itemTagName = $(this.options.item || this.theme.item).prop('tagName');
            if ('ontouchstart' in document.documentElement && 'onmousemove' in document.documentElement) {
                this.$menu
                    .on('touchstart', itemTagName, $.proxy(this.touchstart, this))
                    .on('touchend', itemTagName, $.proxy(this.click, this))
                    .on('click', $.proxy(this.click, this))
                    .on('mouseenter', itemTagName, $.proxy(this.mouseenter, this))
                    .on('mouseleave', itemTagName, $.proxy(this.mouseleave, this))
                    .on('mousedown', $.proxy(this.mousedown, this));
            } else if ('ontouchstart' in document.documentElement) {
                this.$menu
                    .on('touchstart', itemTagName, $.proxy(this.touchstart, this))
                    .on('touchend', itemTagName, $.proxy(this.click, this));
            } else {
                this.$menu
                    .on('click', $.proxy(this.click, this))
                    .on('mouseenter', itemTagName, $.proxy(this.mouseenter, this))
                    .on('mouseleave', itemTagName, $.proxy(this.mouseleave, this))
                    .on('mousedown', $.proxy(this.mousedown, this));
            }
        },

        destroy: function () {
            this.$element.data('typeahead', null);
            this.$element.data('active', null);
            this.$element
                .unbind('focus.bootstrap3Typeahead')
                .unbind('blur.bootstrap3Typeahead')
                .unbind('keypress.bootstrap3Typeahead')
                .unbind('propertychange.bootstrap3Typeahead input.bootstrap3Typeahead')
                .unbind('keyup.bootstrap3Typeahead');

            if (this.eventSupported('keydown')) {
                this.$element.unbind('keydown.bootstrap3-typeahead');
            }

            this.$menu.remove();
            this.destroyed = true;
        },

        eventSupported: function (eventName) {
            var isSupported = eventName in this.$element;
            if (!isSupported) {
                this.$element.setAttribute(eventName, 'return;');
                isSupported = typeof this.$element[eventName] === 'function';
            }
            return isSupported;
        },

        move: function (e) {
            if (!this.shown) {
                return;
            }

            switch (e.keyCode) {
            case 9: // tab
            case 13: // enter
            case 27: // escape
                e.preventDefault();
                break;

            case 38: // up arrow
                // with the shiftKey (this is actually the left parenthesis)
                if (e.shiftKey) {
                    return;
                }
                e.preventDefault();
                this.prev();
                break;

            case 40: // down arrow
                // with the shiftKey (this is actually the right parenthesis)
                if (e.shiftKey) {
                    return;
                }
                e.preventDefault();
                this.next();
                break;
            }
        },

        keydown: function (e) {
            /**
             * Prevent to make an ajax call while copying and pasting.
             *
             * @author Simone Sacchi
             * @version 2018/01/18
             */
            if (e.keyCode === 17) { // ctrl
                return;
            }
            this.keyPressed = true;
            this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27]);
            if (!this.shown && e.keyCode == 40) {
                this.lookup();
            } else {
                this.move(e);
            }
        },

        keypress: function (e) {
            if (this.suppressKeyPressRepeat) {
                return;
            }
            this.move(e);
        },

        input: function (e) {
            // This is a fixed for IE10/11 that fires the input event when a placehoder is changed
            // (https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus)
            var currentValue = this.$element.val() || this.$element.text();
            if (this.value !== currentValue) {
                this.value = currentValue;
                this.lookup();
            }
        },

        keyup: function (e) {
            if (this.destroyed) {
                return;
            }
            switch (e.keyCode) {
            case 40: // down arrow
            case 38: // up arrow
            case 16: // shift
            case 17: // ctrl
            case 18: // alt
                break;

            case 9: // tab
                if (!this.shown || (this.showHintOnFocus && !this.keyPressed)) {
                    return;
                }
                this.select();
                break;
            case 13: // enter
                if (!this.shown) {
                    return;
                }
                this.select();
                break;

            case 27: // escape
                if (!this.shown) {
                    return;
                }
                this.hide();
                break;
            }

        },

        focus: function (e) {
            if (!this.focused) {
                this.focused = true;
                this.keyPressed = false;
                if (this.options.showHintOnFocus && this.skipShowHintOnFocus !== true) {
                    if (this.options.showHintOnFocus === 'all') {
                        this.lookup('');
                    } else {
                        this.lookup();
                    }
                }
            }
            if (this.skipShowHintOnFocus) {
                this.skipShowHintOnFocus = false;
            }
        },

        blur: function (e) {
            if (!this.mousedover && !this.mouseddown && this.shown) {
                if (this.selectOnBlur) {
                    this.select();
                }
                this.hide();
                this.focused = false;
                this.keyPressed = false;
            } else if (this.mouseddown) {
                // This is for IE that blurs the input when user clicks on scroll.
                // We set the focus back on the input and prevent the lookup to occur again
                this.skipShowHintOnFocus = true;
                this.$element.focus();
                this.mouseddown = false;
            }
        },

        click: function (e) {
            e.preventDefault();
            this.skipShowHintOnFocus = true;
            this.select();
            this.$element.focus();
            this.hide();
        },

        mouseenter: function (e) {
            this.mousedover = true;
            this.$menu.find('.active').removeClass('active');
            $(e.currentTarget).addClass('active');

            // RQL Fix:
            $(e.currentTarget).find('a.dropdown-item').addClass('active')
            
        },

        mouseleave: function (e) {
            this.mousedover = false;
            if (!this.focused && this.shown) {
                this.hide();
            }
        },

        /**
         * We track the mousedown for IE. When clicking on the menu scrollbar, IE makes the input blur thus hiding the menu.
         */
        mousedown: function (e) {
            this.mouseddown = true;
            this.$menu.one('mouseup', function (e) {
                // IE won't fire this, but FF and Chrome will so we reset our flag for them here
                this.mouseddown = false;
            }.bind(this));
        },

        touchstart: function (e) {
            e.preventDefault();
            this.$menu.find('.active').removeClass('active');
            $(e.currentTarget).addClass('active');
        },

        touchend: function (e) {
            e.preventDefault();
            this.select();
            this.$element.focus();
        }

    };


    /* TYPEAHEAD PLUGIN DEFINITION
     * =========================== */

    var old = $.fn.typeahead;

    $.fn.typeahead = function (option) {
        var arg = arguments;
        if (typeof option == 'string' && option == 'getActive') {
            return this.data('active');
        }
        return this.each(function () {
            var $this = $(this);
            var data = $this.data('typeahead');
            var options = typeof option == 'object' && option;
            if (!data) {
                $this.data('typeahead', (data = new Typeahead(this, options)));
            }
            if (typeof option == 'string' && data[option]) {
                if (arg.length > 1) {
                    data[option].apply(data, Array.prototype.slice.call(arg, 1));
                } else {
                    data[option]();
                }
            }
        });
    };

    Typeahead.defaults = {
        source: [],
        items: 8,
        minLength: 1,
        scrollHeight: 0,
        autoSelect: true,
        afterSelect: $.noop,
        afterEmptySelect: $.noop,
        addItem: false,
        followLinkOnSelect: false,
        delay: 0,
        separator: 'category',
        changeInputOnSelect: true,
        changeInputOnMove: true,
        openLinkInNewTab: false,
        selectOnBlur: true,
        showCategoryHeader: true,
        theme: "bootstrap3",
        themes: {
            bootstrap3: {
                menu: '<ul class="typeahead dropdown-menu" role="listbox"></ul>',
                item: '<li><a class="dropdown-item" href="#" role="option"></a></li>',
                itemContentSelector: "a",
                headerHtml: '<li class="dropdown-header"></li>',
                headerDivider: '<li class="divider" role="separator"></li>'
            },
            bootstrap4: {
                menu: '<div class="typeahead dropdown-menu" role="listbox"></div>',
                item: '<button class="dropdown-item" role="option"></button>',
                itemContentSelector: '.dropdown-item',
                headerHtml: '<h6 class="dropdown-header"></h6>',
                headerDivider: '<div class="dropdown-divider"></div>'
            }
        }
    };

    $.fn.typeahead.Constructor = Typeahead;

    /* TYPEAHEAD NO CONFLICT
     * =================== */

    $.fn.typeahead.noConflict = function () {
        $.fn.typeahead = old;
        return this;
    };


    /* TYPEAHEAD DATA-API
     * ================== */

    $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
        var $this = $(this);
        if ($this.data('typeahead')) {
            return;
        }
        $this.typeahead($this.data());
    });

}));
/* JPEGCam v1.0.9 */
/* Webcam library for capturing JPEG images and submitting to a server */
/* Copyright (c) 2008 - 2009 Joseph Huckaby <jhuckaby@goldcartridge.com> */
/* Licensed under the GNU Lesser Public License */
/* http://www.gnu.org/licenses/lgpl.html */

/* Usage:
	<script language="JavaScript">
		document.write( webcam.get_html(320, 240) );
		webcam.set_api_url( 'test.php' );
		webcam.set_hook( 'onComplete', 'my_callback_function' );
		function my_callback_function(response) {
			alert("Success! PHP returned: " + response);
		}
	</script>
	<a href="javascript:void(webcam.snap())">Take Snapshot</a>
*/

// Everything is under a 'webcam' Namespace
window.webcam = {
	version: '1.0.9',
	
	// globals
	ie: !!navigator.userAgent.match(/MSIE/),
	protocol: location.protocol.match(/https/i) ? 'https' : 'http',
	callback: null, // user callback for completed uploads
	swf_url: 'webcam.swf', // URI to webcam.swf movie (defaults to cwd)
	shutter_url: 'shutter.mp3', // URI to shutter.mp3 sound
	api_url: '', // URL to upload script
	loaded: false, // true when webcam movie finishes loading
	quality: 90, // JPEG quality (1 - 100)
	shutter_sound: true, // shutter sound effect on/off
	stealth: false, // stealth mode (do not freeze image upon capture)
	hooks: {
		onLoad: null,
		onComplete: null,
		onError: null
	}, // callback hook functions
	
	set_hook: function(name, callback) {
		// set callback hook
		// supported hooks: onLoad, onComplete, onError
		if (typeof(this.hooks[name]) == 'undefined')
			return alert("Hook type not supported: " + name);
		
		this.hooks[name] = callback;
	},
	
	fire_hook: function(name, value) {
		// fire hook callback, passing optional value to it
		if (this.hooks[name]) {
			if (typeof(this.hooks[name]) == 'function') {
				// callback is function reference, call directly
				this.hooks[name](value);
			}
			else if (typeof(this.hooks[name]) == 'array') {
				// callback is PHP-style object instance method
				this.hooks[name][0][this.hooks[name][1]](value);
			}
			else if (window[this.hooks[name]]) {
				// callback is global function name
				window[ this.hooks[name] ](value);
			}
			return true;
		}
		return false; // no hook defined
	},
	
	set_api_url: function(url) {
		// set location of upload API script
		this.api_url = url;
	},
	
	set_swf_url: function(url) {
		// set location of SWF movie (defaults to webcam.swf in cwd)
		this.swf_url = url;
	},
	
	get_html: function(width, height, server_width, server_height) {
		// Return HTML for embedding webcam capture movie
		// Specify pixel width and height (640x480, 320x240, etc.)
		// Server width and height are optional, and default to movie width/height
		if (!server_width) server_width = width;
		if (!server_height) server_height = height;
		
		var html = '';
		var flashvars = 'shutter_enabled=' + (this.shutter_sound ? 1 : 0) + 
			'&shutter_url=' + escape(this.shutter_url) + 
			'&width=' + width + 
			'&height=' + height + 
			'&server_width=' + server_width + 
			'&server_height=' + server_height;
		
		if (this.ie) {
			html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+this.protocol+'://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="webcam_movie" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+this.swf_url+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/></object>';
		}
		else {
			html += '<embed id="webcam_movie" src="'+this.swf_url+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="webcam_movie" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" />';
		}
		
		this.loaded = false;
		return html;
	},
	
	get_movie: function() {
		// get reference to movie object/embed in DOM
		if (!this.loaded) return alert("ERROR: Movie is not loaded yet");
		var movie = document.getElementById('webcam_movie');
		if (!movie) alert("ERROR: Cannot locate movie 'webcam_movie' in DOM");
		return movie;
	},
	
	set_stealth: function(stealth) {
		// set or disable stealth mode
		this.stealth = stealth;
	},
	
	snap: function(url, callback, stealth) {
		// take snapshot and send to server
		// specify fully-qualified URL to server API script
		// and callback function (string or function object)
		if (callback) this.set_hook('onComplete', callback);
		if (url) this.set_api_url(url);
		if (typeof(stealth) != 'undefined') this.set_stealth( stealth );
		
		this.get_movie()._snap( this.api_url, this.quality, this.shutter_sound ? 1 : 0, this.stealth ? 1 : 0 );
	},
	
	freeze: function() {
		// freeze webcam image (capture but do not upload)
		this.get_movie()._snap('', this.quality, this.shutter_sound ? 1 : 0, 0 );
	},
	
	upload: function(url, callback) {
		// upload image to server after taking snapshot
		// specify fully-qualified URL to server API script
		// and callback function (string or function object)
		if (callback) this.set_hook('onComplete', callback);
		if (url) this.set_api_url(url);
		
		this.get_movie()._upload( this.api_url );
	},
	
	reset: function() {
		// reset movie after taking snapshot
		this.get_movie()._reset();
	},
	
	configure: function(panel) {
		// open flash configuration panel -- specify tab name:
		// "camera", "privacy", "default", "localStorage", "microphone", "settingsManager"
		if (!panel) panel = "camera";
		this.get_movie()._configure(panel);
	},
	
	set_quality: function(new_quality) {
		// set the JPEG quality (1 - 100)
		// default is 90
		this.quality = new_quality;
	},
	
	set_shutter_sound: function(enabled, url) {
		// enable or disable the shutter sound effect
		// defaults to enabled
		this.shutter_sound = enabled;
		this.shutter_url = url ? url : 'shutter.mp3';
	},
	
	flash_notify: function(type, msg) {
		// receive notification from flash about event
		switch (type) {
			case 'flashLoadComplete':
				// movie loaded successfully
				this.loaded = true;
				this.fire_hook('onLoad');
				break;

			case 'error':
				// HTTP POST error most likely
				if (!this.fire_hook('onError', msg)) {
					alert("JPEGCam Flash Error: " + msg);
				}
				break;

			case 'success':
				// upload complete, execute user callback function
				// and pass raw API script results to function
				this.fire_hook('onComplete', msg.toString());
				break;

			default:
				// catch-all, just in case
				alert("jpegcam flash_notify: " + type + ": " + msg);
				break;
		}
	}
};

/*
* jQuery File Download Plugin v1.4.4
*
* http://www.johnculviner.com
*
* Copyright (c) 2013 - John Culviner
*
* Licensed under the MIT license:
*   http://www.opensource.org/licenses/mit-license.php
*
* !!!!NOTE!!!!
* You must also write a cookie in conjunction with using this plugin as mentioned in the orignal post:
* http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
* !!!!NOTE!!!!
*/

(function ($, window) {
    // i'll just put them here to get evaluated on script load
    var htmlSpecialCharsRegEx = /[<>&\r\n"']/gm;
    var htmlSpecialCharsPlaceHolders = {
        '<': 'lt;',
        '>': 'gt;',
        '&': 'amp;',
        '\r': "#13;",
        '\n': "#10;",
        '"': 'quot;',
        "'": '#39;' /*single quotes just to be safe, IE8 doesn't support &apos;, so use &#39; instead */
    };

    $.extend({
        //
        //$.fileDownload('/path/to/url/', options)
        //  see directly below for possible 'options'
        fileDownload: function (fileUrl, options) {

            //provide some reasonable defaults to any unspecified options below
            var settings = $.extend({

                //
                //Requires jQuery UI: provide a message to display to the user when the file download is being prepared before the browser's dialog appears
                //
                preparingMessageHtml: null,

                //
                //Requires jQuery UI: provide a message to display to the user when a file download fails
                //
                failMessageHtml: null,

                //
                //the stock android browser straight up doesn't support file downloads initiated by a non GET: http://code.google.com/p/android/issues/detail?id=1780
                //specify a message here to display if a user tries with an android browser
                //if jQuery UI is installed this will be a dialog, otherwise it will be an alert
                //Set to null to disable the message and attempt to download anyway
                //
                androidPostUnsupportedMessageHtml: "Unfortunately your Android browser doesn't support this type of file download. Please try again with a different browser.",

                //
                //Requires jQuery UI: options to pass into jQuery UI Dialog
                //
                dialogOptions: { modal: true },

                //
                //a function to call while the dowload is being prepared before the browser's dialog appears
                //Args:
                //  url - the original url attempted
                //
                prepareCallback: function (url) { },

                //
                //a function to call after a file download dialog/ribbon has appeared
                //Args:
                //  url - the original url attempted
                //
                successCallback: function (url) { },

                //
                //a function to call after a file download dialog/ribbon has appeared
                //Args:
                //  responseHtml    - the html that came back in response to the file download. this won't necessarily come back depending on the browser.
                //                      in less than IE9 a cross domain error occurs because 500+ errors cause a cross domain issue due to IE subbing out the
                //                      server's error message with a "helpful" IE built in message
                //  url             - the original url attempted
                //  error           - original error cautch from exception
                //
                failCallback: function (responseHtml, url, error) { },

                //
                // the HTTP method to use. Defaults to "GET".
                //
                httpMethod: "GET",

                //
                // if specified will perform a "httpMethod" request to the specified 'fileUrl' using the specified data.
                // data must be an object (which will be $.param serialized) or already a key=value param string
                //
                data: null,

                //
                //a period in milliseconds to poll to determine if a successful file download has occured or not
                //
                checkInterval: 100,

                //
                //the cookie name to indicate if a file download has occured
                //
                cookieName: "fileDownload",

                //
                //the cookie value for the above name to indicate that a file download has occured
                //
                cookieValue: "true",

                //
                //the cookie path for above name value pair
                //
                cookiePath: "/",

                //
                //if specified it will be used when attempting to clear the above name value pair
                //useful for when downloads are being served on a subdomain (e.g. downloads.example.com)
                //
                cookieDomain: null,

                //
                //the title for the popup second window as a download is processing in the case of a mobile browser
                //
                popupWindowTitle: "Initiating file download...",

                //
                //Functionality to encode HTML entities for a POST, need this if data is an object with properties whose values contains strings with quotation marks.
                //HTML entity encoding is done by replacing all &,<,>,',",\r,\n characters.
                //Note that some browsers will POST the string htmlentity-encoded whilst others will decode it before POSTing.
                //It is recommended that on the server, htmlentity decoding is done irrespective.
                //
                encodeHTMLEntities: true

            }, options);

            var deferred = new $.Deferred();

            //Setup mobile browser detection: Partial credit: http://detectmobilebrowser.com/
            var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();

            var isIos;                  //has full support of features in iOS 4.0+, uses a new window to accomplish this.
            var isAndroid;              //has full support of GET features in 4.0+ by using a new window. Non-GET is completely unsupported by the browser. See above for specifying a message.
            var isOtherMobileBrowser;   //there is no way to reliably guess here so all other mobile devices will GET and POST to the current window.

            if (/ip(ad|hone|od)/.test(userAgent)) {

                isIos = true;

            } else if (userAgent.indexOf('android') !== -1) {

                isAndroid = true;

            } else {

                isOtherMobileBrowser = /avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|playbook|silk|iemobile|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(userAgent.substr(0, 4));

            }

            var httpMethodUpper = settings.httpMethod.toUpperCase();

            if (isAndroid && httpMethodUpper !== "GET" && settings.androidPostUnsupportedMessageHtml) {
                //the stock android browser straight up doesn't support file downloads initiated by non GET requests: http://code.google.com/p/android/issues/detail?id=1780

                if ($().dialog) {
                    $("<div>").html(settings.androidPostUnsupportedMessageHtml).dialog(settings.dialogOptions);
                } else {
                    alert(settings.androidPostUnsupportedMessageHtml);
                }

                return deferred.reject();
            }

            var $preparingDialog = null;

            var internalCallbacks = {

                onPrepare: function (url) {

                    //wire up a jquery dialog to display the preparing message if specified
                    if (settings.preparingMessageHtml) {

                        $preparingDialog = $("<div>").html(settings.preparingMessageHtml).dialog(settings.dialogOptions);

                    } else if (settings.prepareCallback) {

                        settings.prepareCallback(url);

                    }

                },

                onSuccess: function (url) {

                    //remove the perparing message if it was specified
                    if ($preparingDialog) {
                        $preparingDialog.dialog('close');
                    }

                    settings.successCallback(url);

                    deferred.resolve(url);
                },

                onFail: function (responseHtml, url, error) {

                    //remove the perparing message if it was specified
                    if ($preparingDialog) {
                        $preparingDialog.dialog('close');
                    }

                    //wire up a jquery dialog to display the fail message if specified
                    if (settings.failMessageHtml) {
                        $("<div>").html(settings.failMessageHtml).dialog(settings.dialogOptions);
                    }

                    settings.failCallback(responseHtml, url, error);

                    deferred.reject(responseHtml, url);
                }
            };

            internalCallbacks.onPrepare(fileUrl);

            //make settings.data a param string if it exists and isn't already
            if (settings.data !== null && typeof settings.data !== "string") {
                settings.data = $.param(settings.data);
            }


            var $iframe,
                downloadWindow,
                formDoc,
                $form;

            if (httpMethodUpper === "GET") {

                if (settings.data !== null) {
                    //need to merge any fileUrl params with the data object

                    var qsStart = fileUrl.indexOf('?');

                    if (qsStart !== -1) {
                        //we have a querystring in the url

                        if (fileUrl.substring(fileUrl.length - 1) !== "&") {
                            fileUrl = fileUrl + "&";
                        }
                    } else {

                        fileUrl = fileUrl + "?";
                    }

                    fileUrl = fileUrl + settings.data;
                }

                if (isIos || isAndroid) {

                    downloadWindow = window.open(fileUrl);
                    downloadWindow.document.title = settings.popupWindowTitle;
                    window.focus();

                } else if (isOtherMobileBrowser) {

                    window.location(fileUrl);

                } else {

                    //create a temporary iframe that is used to request the fileUrl as a GET request
                    $iframe = $("<iframe>")
                        .hide()
                        .prop("src", fileUrl)
                        .appendTo("body");
                }

            } else {

                var formInnerHtml = "";

                if (settings.data !== null) {

                    $.each(settings.data.replace(/\+/g, ' ').split("&"), function () {

                        var kvp = this.split("=");

                        //Issue: When value contains sign '=' then the kvp array does have more than 2 items. We have to join value back
                        var k = kvp[0];
                        kvp.shift();
                        var v = kvp.join("=");
                        kvp = [k, v];

                        var key = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[0])) : decodeURIComponent(kvp[0]);
                        if (key) {
                            var value = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[1])) : decodeURIComponent(kvp[1]);
                            formInnerHtml += '<input type="hidden" name="' + key + '" value="' + value + '" />';
                        }
                    });
                }

                if (isOtherMobileBrowser) {

                    $form = $("<form>").appendTo("body");
                    $form.hide()
                        .prop('method', settings.httpMethod)
                        .prop('action', fileUrl)
                        .html(formInnerHtml);

                } else {

                    if (isIos) {

                        downloadWindow = window.open("about:blank");
                        downloadWindow.document.title = settings.popupWindowTitle;
                        formDoc = downloadWindow.document;
                        window.focus();

                    } else {

                        $iframe = $("<iframe style='display: none' src='about:blank'></iframe>").appendTo("body");
                        formDoc = getiframeDocument($iframe);
                    }

                    formDoc.write("<html><head></head><body><form method='" + settings.httpMethod + "' action='" + fileUrl + "'>" + formInnerHtml + "</form>" + settings.popupWindowTitle + "</body></html>");
                    $form = $(formDoc).find('form');
                }

                $form.submit();
            }


            //check if the file download has completed every checkInterval ms
            setTimeout(checkFileDownloadComplete, settings.checkInterval);


            function checkFileDownloadComplete() {
                //has the cookie been written due to a file download occuring?

                var cookieValue = settings.cookieValue;
                if (typeof cookieValue == 'string') {
                    cookieValue = cookieValue.toLowerCase();
                }

                var lowerCaseCookie = settings.cookieName.toLowerCase() + "=" + cookieValue;

                if (document.cookie.toLowerCase().indexOf(lowerCaseCookie) > -1) {

                    //execute specified callback
                    internalCallbacks.onSuccess(fileUrl);

                    //remove cookie
                    var cookieData = settings.cookieName + "=; path=" + settings.cookiePath + "; expires=" + new Date(0).toUTCString() + ";";
                    if (settings.cookieDomain) cookieData += " domain=" + settings.cookieDomain + ";";
                    document.cookie = cookieData;

                    //remove iframe
                    cleanUp(false);

                    return;
                }

                //has an error occured?
                //if neither containers exist below then the file download is occuring on the current window
                if (downloadWindow || $iframe) {

                    //has an error occured?
                    try {

                        var formDoc = downloadWindow ? downloadWindow.document : getiframeDocument($iframe);

                        if (formDoc && formDoc.body !== null && formDoc.body.innerHTML.length) {

                            var isFailure = true;

                            if ($form && $form.length) {
                                var $contents = $(formDoc.body).contents().first();

                                try {
                                    if ($contents.length && $contents[0] === $form[0]) {
                                        isFailure = false;
                                    }
                                } catch (e) {
                                    if (e && e.number == -2146828218) {
                                        // IE 8-10 throw a permission denied after the form reloads on the "$contents[0] === $form[0]" comparison
                                        isFailure = true;
                                    } else {
                                        throw e;
                                    }
                                }
                            }

                            if (isFailure) {
                                // IE 8-10 don't always have the full content available right away, they need a litle bit to finish
                                setTimeout(function () {
                                    internalCallbacks.onFail(formDoc.body.innerHTML, fileUrl);
                                    cleanUp(true);
                                }, 100);

                                return;
                            }
                        }
                    }
                    catch (err) {

                        //500 error less than IE9
                        internalCallbacks.onFail('', fileUrl, err);

                        cleanUp(true);

                        return;
                    }
                }


                //keep checking...
                setTimeout(checkFileDownloadComplete, settings.checkInterval);
            }

            //gets an iframes document in a cross browser compatible manner
            function getiframeDocument($iframe) {
                var iframeDoc = $iframe[0].contentWindow || $iframe[0].contentDocument;
                if (iframeDoc.document) {
                    iframeDoc = iframeDoc.document;
                }
                return iframeDoc;
            }

            function cleanUp(isFailure) {

                setTimeout(function () {

                    if (downloadWindow) {

                        if (isAndroid) {
                            downloadWindow.close();
                        }

                        if (isIos) {
                            if (downloadWindow.focus) {
                                downloadWindow.focus(); //ios safari bug doesn't allow a window to be closed unless it is focused
                                if (isFailure) {
                                    downloadWindow.close();
                                }
                            }
                        }
                    }

                    //iframe cleanup appears to randomly cause the download to fail
                    //not doing it seems better than failure...
                    //if ($iframe) {
                    //    $iframe.remove();
                    //}

                }, 0);
            }


            function htmlSpecialCharsEntityEncode(str) {
                return str.replace(htmlSpecialCharsRegEx, function (match) {
                    return '&' + htmlSpecialCharsPlaceHolders[match];
                });
            }
            var promise = deferred.promise();
            promise.abort = function () {
                cleanUp();
                $iframe.remove();
            };
            return promise;
        }
    });

})(jQuery, this);

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var H;function f(){return H.apply(null,arguments)}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i<s;++i)n.push(t(e[i],i));return n}function E(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return Pt(e,t,n,s,!0).utc()}function m(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function A(e){if(null==e._isValid){var t=m(e),n=j.call(t.parsedDateParts,function(e){return null!=e}),n=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(n=n&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return n;e._isValid=n}return e._isValid}function I(e){var t=l(NaN);return null!=e?E(m(t),e):m(t).userInvalidated=!0,t}var j=Array.prototype.some||function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1},Z=f.momentProperties=[],z=!1;function $(e,t){var n,s,i,r=Z.length;if(o(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),o(t._i)||(e._i=t._i),o(t._f)||(e._f=t._f),o(t._l)||(e._l=t._l),o(t._strict)||(e._strict=t._strict),o(t._tzm)||(e._tzm=t._tzm),o(t._isUTC)||(e._isUTC=t._isUTC),o(t._offset)||(e._offset=t._offset),o(t._pf)||(e._pf=m(t)),o(t._locale)||(e._locale=t._locale),0<r)for(n=0;n<r;n++)o(i=t[s=Z[n]])||(e[s]=i);return e}function q(e){$(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===z&&(z=!0,f.updateOffset(this),z=!1)}function h(e){return e instanceof q||null!=e&&null!=e._isAMomentObject}function B(e){!1===f.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,a){var o=!0;return E(function(){if(null!=f.deprecationHandler&&f.deprecationHandler(null,r),o){for(var e,t,n=[],s=arguments.length,i=0;i<s;i++){if(e="","object"==typeof arguments[i]){for(t in e+="\n["+i+"] ",arguments[0])c(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[i];n.push(e)}B(r+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),o=!1}return a.apply(this,arguments)},a)}var J={};function Q(e,t){null!=f.deprecationHandler&&f.deprecationHandler(e,t),J[e]||(B(t),J[e]=!0)}function d(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function X(e,t){var n,s=E({},e);for(n in t)c(t,n)&&(F(e[n])&&F(t[n])?(s[n]={},E(s[n],e[n]),E(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)c(e,n)&&!c(t,n)&&F(e[n])&&(s[n]=E({},s[n]));return s}function K(e){null!=e&&this.set(e)}f.suppressDeprecationWarnings=!1,f.deprecationHandler=null;var ee=Object.keys||function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};function r(e,t,n){var s=""+Math.abs(e);return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}var te=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ne=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,se={},ie={};function s(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(ie[e]=i),t&&(ie[t[0]]=function(){return r(i.apply(this,arguments),t[1],t[2])}),n&&(ie[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function re(e,t){return e.isValid()?(t=ae(t,e.localeData()),se[t]=se[t]||function(s){for(var e,i=s.match(te),t=0,r=i.length;t<r;t++)ie[i[t]]?i[t]=ie[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=d(i[n])?i[n].call(e,s):i[n];return t}}(t),se[t](e)):e.localeData().invalidDate()}function ae(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(ne.lastIndex=0;0<=n&&ne.test(e);)e=e.replace(ne,s),ne.lastIndex=0,--n;return e}var oe={};function t(e,t){var n=e.toLowerCase();oe[n]=oe[n+"s"]=oe[t]=e}function _(e){return"string"==typeof e?oe[e]||oe[e.toLowerCase()]:void 0}function ue(e){var t,n,s={};for(n in e)c(e,n)&&(t=_(n))&&(s[t]=e[n]);return s}var le={};function n(e,t){le[e]=t}function he(e){return e%4==0&&e%100!=0||e%400==0}function y(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var e=+e,t=0;return t=0!=e&&isFinite(e)?y(e):t}function de(t,n){return function(e){return null!=e?(fe(this,t,e),f.updateOffset(this,n),this):ce(this,t)}}function ce(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function fe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&he(e.year())&&1===e.month()&&29===e.date()?(n=g(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),We(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var i=/\d/,w=/\d\d/,me=/\d{3}/,_e=/\d{4}/,ye=/[+-]?\d{6}/,p=/\d\d?/,ge=/\d\d\d\d?/,we=/\d\d\d\d\d\d?/,pe=/\d{1,3}/,ke=/\d{1,4}/,ve=/[+-]?\d{1,6}/,Me=/\d+/,De=/[+-]?\d+/,Se=/Z|[+-]\d\d:?\d\d/gi,Ye=/Z|[+-]\d\d(?::?\d\d)?/gi,k=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function v(e,n,s){be[e]=d(n)?n:function(e,t){return e&&s?s:n}}function Oe(e,t){return c(be,e)?be[e](t._strict,t._locale):new RegExp(M(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function M(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var be={},xe={};function D(e,n){var t,s,i=n;for("string"==typeof e&&(e=[e]),u(n)&&(i=function(e,t){t[n]=g(e)}),s=e.length,t=0;t<s;t++)xe[e[t]]=i}function Te(e,i){D(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var S,Y=0,O=1,b=2,x=3,T=4,N=5,Ne=6,Pe=7,Re=8;function We(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=(t%(n=12)+n)%n;return e+=(t-n)/12,1==n?he(e)?29:28:31-n%7%2}S=Array.prototype.indexOf||function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),t("month","M"),n("month",8),v("M",p),v("MM",p,w),v("MMM",function(e,t){return t.monthsShortRegex(e)}),v("MMMM",function(e,t){return t.monthsRegex(e)}),D(["M","MM"],function(e,t){t[O]=g(e)-1}),D(["MMM","MMMM"],function(e,t,n,s){s=n._locale.monthsParse(e,s,n._strict);null!=s?t[O]=s:m(n).invalidMonth=e});var Ce="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ue="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),He=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Fe=k,Le=k;function Ve(e,t){var n;if(e.isValid()){if("string"==typeof t)if(/^\d+$/.test(t))t=g(t);else if(!u(t=e.localeData().monthsParse(t)))return;n=Math.min(e.date(),We(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n)}}function Ge(e){return null!=e?(Ve(this,e),f.updateOffset(this,!0),this):ce(this,"Month")}function Ee(){function e(e,t){return t.length-e.length}for(var t,n=[],s=[],i=[],r=0;r<12;r++)t=l([2e3,r]),n.push(this.monthsShort(t,"")),s.push(this.months(t,"")),i.push(this.months(t,"")),i.push(this.monthsShort(t,""));for(n.sort(e),s.sort(e),i.sort(e),r=0;r<12;r++)n[r]=M(n[r]),s[r]=M(s[r]);for(r=0;r<24;r++)i[r]=M(i[r]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function Ae(e){return he(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?r(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),t("year","y"),n("year",1),v("Y",De),v("YY",p,w),v("YYYY",ke,_e),v("YYYYY",ve,ye),v("YYYYYY",ve,ye),D(["YYYYY","YYYYYY"],Y),D("YYYY",function(e,t){t[Y]=2===e.length?f.parseTwoDigitYear(e):g(e)}),D("YY",function(e,t){t[Y]=f.parseTwoDigitYear(e)}),D("Y",function(e,t){t[Y]=parseInt(e,10)}),f.parseTwoDigitYear=function(e){return g(e)+(68<g(e)?1900:2e3)};var Ie=de("FullYear",!0);function je(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function Ze(e){var t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,t)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function ze(e,t,n){n=7+t-n;return n-(7+Ze(e,0,n).getUTCDay()-t)%7-1}function $e(e,t,n,s,i){var r,t=1+7*(t-1)+(7+n-s)%7+ze(e,s,i),n=t<=0?Ae(r=e-1)+t:t>Ae(e)?(r=e+1,t-Ae(e)):(r=e,t);return{year:r,dayOfYear:n}}function qe(e,t,n){var s,i,r=ze(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+P(i=e.year()-1,t,n):r>P(e.year(),t,n)?(s=r-P(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function P(e,t,n){var s=ze(e,t,n),t=ze(e+1,t,n);return(Ae(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",p),v("ww",p,w),v("W",p),v("WW",p,w),Te(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=g(e)});function Be(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",p),v("e",p),v("E",p),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Te(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:m(n).invalidWeekday=e}),Te(["d","e","E"],function(e,t,n,s){t[s]=g(e)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Qe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=k,et=k,tt=k;function nt(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=M(this.weekdaysMin(s,"")),n=M(this.weekdaysShort(s,"")),s=M(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function st(){return this.hours()%12||12}function it(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function rt(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,st),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),it("a",!0),it("A",!1),t("hour","h"),n("hour",13),v("a",rt),v("A",rt),v("H",p),v("h",p),v("k",p),v("HH",p,w),v("hh",p,w),v("kk",p,w),v("hmm",ge),v("hmmss",we),v("Hmm",ge),v("Hmmss",we),D(["H","HH"],x),D(["k","kk"],function(e,t,n){e=g(e);t[x]=24===e?0:e}),D(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),D(["h","hh"],function(e,t,n){t[x]=g(e),m(n).bigHour=!0}),D("hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s)),m(n).bigHour=!0}),D("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i)),m(n).bigHour=!0}),D("Hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s))}),D("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i))});k=de("Hours",!0);var at,ot={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:Ue,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Qe,meridiemParse:/[ap]\.?m?\.?/i},R={},ut={};function lt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=lt(e[r]).split("-")).length,n=(n=lt(e[r+1]))?n.split("-"):null;0<t;){if(s=dt(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n}(i,n)>=t-1)break;t--}r++}return at}function dt(t){var e;if(void 0===R[t]&&"undefined"!=typeof module&&module&&module.exports&&null!=t.match("^[^/\\\\]*$"))try{e=at._abbr,require("./locale/"+t),ct(e)}catch(e){R[t]=null}return R[t]}function ct(e,t){return e&&((t=o(t)?mt(e):ft(e,t))?at=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),at._abbr}function ft(e,t){if(null===t)return delete R[e],null;var n,s=ot;if(t.abbr=e,null!=R[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=R[e]._config;else if(null!=t.parentLocale)if(null!=R[t.parentLocale])s=R[t.parentLocale]._config;else{if(null==(n=dt(t.parentLocale)))return ut[t.parentLocale]||(ut[t.parentLocale]=[]),ut[t.parentLocale].push({name:e,config:t}),null;s=n._config}return R[e]=new K(X(s,t)),ut[e]&&ut[e].forEach(function(e){ft(e.name,e.config)}),ct(e),R[e]}function mt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return at;if(!a(e)){if(t=dt(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===m(e).overflow&&(t=t[O]<0||11<t[O]?O:t[b]<1||t[b]>We(t[Y],t[O])?b:t[x]<0||24<t[x]||24===t[x]&&(0!==t[T]||0!==t[N]||0!==t[Ne])?x:t[T]<0||59<t[T]?T:t[N]<0||59<t[N]?N:t[Ne]<0||999<t[Ne]?Ne:-1,m(e)._overflowDayOfYear&&(t<Y||b<t)&&(t=b),m(e)._overflowWeeks&&-1===t&&(t=Pe),m(e)._overflowWeekday&&-1===t&&(t=Re),m(e).overflow=t),e}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/Z|[+-]\d\d(?::?\d\d)?/,pt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],kt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],vt=/^\/?Date\((-?\d+)/i,Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Dt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function St(e){var t,n,s,i,r,a,o=e._i,u=yt.exec(o)||gt.exec(o),o=pt.length,l=kt.length;if(u){for(m(e).iso=!0,t=0,n=o;t<n;t++)if(pt[t][1].exec(u[1])){i=pt[t][0],s=!1!==pt[t][2];break}if(null==i)e._isValid=!1;else{if(u[3]){for(t=0,n=l;t<n;t++)if(kt[t][1].exec(u[3])){r=(u[2]||" ")+kt[t][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(u[4]){if(!wt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Tt(e)}else e._isValid=!1}}else e._isValid=!1}function Yt(e,t,n,s,i,r){e=[function(e){e=parseInt(e,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(e),Ue.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&e.push(parseInt(r,10)),e}function Ot(e){var t,n,s,i,r=Mt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));r?(t=Yt(r[4],r[3],r[2],r[5],r[6],r[7]),n=r[1],s=t,i=e,n&&Qe.indexOf(n)!==new Date(s[0],s[1],s[2]).getDay()?(m(i).weekdayMismatch=!0,i._isValid=!1):(e._a=t,e._tzm=(n=r[8],s=r[9],i=r[10],n?Dt[n]:s?0:60*(((n=parseInt(i,10))-(s=n%100))/100)+s),e._d=Ze.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),m(e).rfc2822=!0)):e._isValid=!1}function bt(e,t,n){return null!=e?e:null!=t?t:n}function xt(e){var t,n,s,i,r,a,o,u,l,h,d,c=[];if(!e._d){for(s=e,i=new Date(f.now()),n=s._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[b]&&null==e._a[O]&&(null!=(i=(s=e)._w).GG||null!=i.W||null!=i.E?(u=1,l=4,r=bt(i.GG,s._a[Y],qe(W(),1,4).year),a=bt(i.W,1),((o=bt(i.E,1))<1||7<o)&&(h=!0)):(u=s._locale._week.dow,l=s._locale._week.doy,d=qe(W(),u,l),r=bt(i.gg,s._a[Y],d.year),a=bt(i.w,d.week),null!=i.d?((o=i.d)<0||6<o)&&(h=!0):null!=i.e?(o=i.e+u,(i.e<0||6<i.e)&&(h=!0)):o=u),a<1||a>P(r,u,l)?m(s)._overflowWeeks=!0:null!=h?m(s)._overflowWeekday=!0:(d=$e(r,a,o,u,l),s._a[Y]=d.year,s._dayOfYear=d.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[Y],n[Y]),(e._dayOfYear>Ae(i)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=!0),h=Ze(i,0,e._dayOfYear),e._a[O]=h.getUTCMonth(),e._a[b]=h.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[x]&&0===e._a[T]&&0===e._a[N]&&0===e._a[Ne]&&(e._nextDay=!0,e._a[x]=0),e._d=(e._useUTC?Ze:je).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[x]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(m(e).weekdayMismatch=!0)}}function Tt(e){if(e._f===f.ISO_8601)St(e);else if(e._f===f.RFC_2822)Ot(e);else{e._a=[],m(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],h=l.length,d=0;d<h;d++)n=l[d],(t=(a.match(Oe(n,e))||[])[0])&&(0<(s=a.substr(0,a.indexOf(t))).length&&m(e).unusedInput.push(s),a=a.slice(a.indexOf(t)+t.length),u+=t.length),ie[n]?(t?m(e).empty=!1:m(e).unusedTokens.push(n),s=n,r=e,null!=(i=t)&&c(xe,s)&&xe[s](i,r._a,r,s)):e._strict&&!t&&m(e).unusedTokens.push(n);m(e).charsLeftOver=o-u,0<a.length&&m(e).unusedInput.push(a),e._a[x]<=12&&!0===m(e).bigHour&&0<e._a[x]&&(m(e).bigHour=void 0),m(e).parsedDateParts=e._a.slice(0),m(e).meridiem=e._meridiem,e._a[x]=function(e,t,n){if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((e=e.isPM(n))&&t<12&&(t+=12),t=e||12!==t?t:0):t}(e._locale,e._a[x],e._meridiem),null!==(o=m(e).era)&&(e._a[Y]=e._locale.erasConvertYear(o,e._a[Y])),xt(e),_t(e)}}function Nt(e){var t,n,s,i=e._i,r=e._f;if(e._locale=e._locale||mt(e._l),null===i||void 0===r&&""===i)return I({nullInput:!0});if("string"==typeof i&&(e._i=i=e._locale.preparse(i)),h(i))return new q(_t(i));if(V(i))e._d=i;else if(a(r))!function(e){var t,n,s,i,r,a,o=!1,u=e._f.length;if(0===u)return m(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<u;i++)r=0,a=!1,t=$({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Tt(t),A(t)&&(a=!0),r=(r+=m(t).charsLeftOver)+10*m(t).unusedTokens.length,m(t).score=r,o?r<s&&(s=r,n=t):(null==s||r<s||a)&&(s=r,n=t,a&&(o=!0));E(e,n||t)}(e);else if(r)Tt(e);else if(o(r=(i=e)._i))i._d=new Date(f.now());else V(r)?i._d=new Date(r.valueOf()):"string"==typeof r?(n=i,null!==(t=vt.exec(n._i))?n._d=new Date(+t[1]):(St(n),!1===n._isValid&&(delete n._isValid,Ot(n),!1===n._isValid&&(delete n._isValid,n._strict?n._isValid=!1:f.createFromInputFallback(n))))):a(r)?(i._a=G(r.slice(0),function(e){return parseInt(e,10)}),xt(i)):F(r)?(t=i)._d||(s=void 0===(n=ue(t._i)).day?n.date:n.day,t._a=G([n.year,n.month,s,n.hour,n.minute,n.second,n.millisecond],function(e){return e&&parseInt(e,10)}),xt(t)):u(r)?i._d=new Date(r):f.createFromInputFallback(i);return A(e)||(e._d=null),e}function Pt(e,t,n,s,i){var r={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(F(e)&&L(e)||a(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=t,r._strict=s,(i=new q(_t(Nt(i=r))))._nextDay&&(i.add(1,"d"),i._nextDay=void 0),i}function W(e,t,n,s){return Pt(e,t,n,s,!1)}f.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),f.ISO_8601=function(){},f.RFC_2822=function(){};ge=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=W.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:I()}),we=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=W.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:I()});function Rt(e,t){var n,s;if(!(t=1===t.length&&a(t[0])?t[0]:t).length)return W();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ct(e){var e=ue(e),t=e.year||0,n=e.quarter||0,s=e.month||0,i=e.week||e.isoWeek||0,r=e.day||0,a=e.hour||0,o=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=function(e){var t,n,s=!1,i=Wt.length;for(t in e)if(c(e,t)&&(-1===S.call(Wt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Wt[n]]){if(s)return!1;parseFloat(e[Wt[n]])!==g(e[Wt[n]])&&(s=!0)}return!0}(e),this._milliseconds=+l+1e3*u+6e4*o+1e3*a*60*60,this._days=+r+7*i,this._months=+s+3*n+12*t,this._data={},this._locale=mt(),this._bubble()}function Ut(e){return e instanceof Ct}function Ht(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){s(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+r(~~(e/60),2)+n+r(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),v("Z",Ye),v("ZZ",Ye),D(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Vt(Ye,e)});var Lt=/([\+\-]|\d\d)/gi;function Vt(e,t){var t=(t||"").match(e);return null===t?null:0===(t=60*(e=((t[t.length-1]||[])+"").match(Lt)||["-",0,0])[1]+g(e[2]))?0:"+"===e[0]?t:-t}function Gt(e,t){var n;return t._isUTC?(t=t.clone(),n=(h(e)||V(e)?e:W(e)).valueOf()-t.valueOf(),t._d.setTime(t._d.valueOf()+n),f.updateOffset(t,!1),t):W(e).local()}function Et(e){return-Math.round(e._d.getTimezoneOffset())}function At(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}f.updateOffset=function(){};var It=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,jt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function C(e,t){var n,s=e,i=null;return Ut(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:u(e)||!isNaN(+e)?(s={},t?s[t]=+e:s.milliseconds=+e):(i=It.exec(e))?(n="-"===i[1]?-1:1,s={y:0,d:g(i[b])*n,h:g(i[x])*n,m:g(i[T])*n,s:g(i[N])*n,ms:g(Ht(1e3*i[Ne]))*n}):(i=jt.exec(e))?(n="-"===i[1]?-1:1,s={y:Zt(i[2],n),M:Zt(i[3],n),w:Zt(i[4],n),d:Zt(i[5],n),h:Zt(i[6],n),m:Zt(i[7],n),s:Zt(i[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(t=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(W(s.from),W(s.to)),(s={}).ms=t.milliseconds,s.M=t.months),i=new Ct(s),Ut(e)&&c(e,"_locale")&&(i._locale=e._locale),Ut(e)&&c(e,"_isValid")&&(i._isValid=e._isValid),i}function Zt(e,t){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(Q(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),qt(this,C(e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ht(t._days),t=Ht(t._months);e.isValid()&&(s=null==s||s,t&&Ve(e,ce(e,"Month")+t*n),r&&fe(e,"Date",ce(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&f.updateOffset(e,r||t))}C.fn=Ct.prototype,C.invalid=function(){return C(NaN)};Ce=$t(1,"add"),Je=$t(-1,"subtract");function Bt(e){return"string"==typeof e||e instanceof String}function Jt(e){return h(e)||V(e)||Bt(e)||u(e)||function(t){var e=a(t),n=!1;e&&(n=0===t.filter(function(e){return!u(e)&&Bt(t)}).length);return e&&n}(e)||function(e){var t,n,s=F(e)&&!L(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a=r.length;for(t=0;t<a;t+=1)n=r[t],i=i||c(e,n);return s&&i}(e)||null==e}function Qt(e,t){if(e.date()<t.date())return-Qt(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months"),t=t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s);return-(n+t)||0}function Xt(e){return void 0===e?this._locale._abbr:(null!=(e=mt(e))&&(this._locale=e),this)}f.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",f.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";Xe=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}var en=126227808e5;function tn(e,t){return(e%t+t)%t}function nn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-en:new Date(e,t,n).valueOf()}function sn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-en:Date.UTC(e,t,n)}function rn(e,t){return t.erasAbbrRegex(e)}function an(){for(var e=[],t=[],n=[],s=[],i=this.eras(),r=0,a=i.length;r<a;++r)t.push(M(i[r].name)),e.push(M(i[r].abbr)),n.push(M(i[r].narrow)),s.push(M(i[r].name)),s.push(M(i[r].abbr)),s.push(M(i[r].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+t.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+n.join("|")+")","i")}function on(e,t){s(0,[e,e.length],0,t)}function un(e,t,n,s,i){var r;return null==e?qe(this,s,i).year:(r=P(e,s,i),function(e,t,n,s,i){e=$e(e,t,n,s,i),t=Ze(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t=r<t?r:t,n,s,i))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),v("N",rn),v("NN",rn),v("NNN",rn),v("NNNN",function(e,t){return t.erasNameRegex(e)}),v("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),D(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){s=n._locale.erasParse(e,s,n._strict);s?m(n).era=s:m(n).invalidEra=e}),v("y",Me),v("yy",Me),v("yyy",Me),v("yyyy",Me),v("yo",function(e,t){return t._eraYearOrdinalRegex||Me}),D(["y","yy","yyy","yyyy"],Y),D(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Y]=n._locale.eraYearOrdinalParse(e,i):t[Y]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),on("gggg","weekYear"),on("ggggg","weekYear"),on("GGGG","isoWeekYear"),on("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),v("G",De),v("g",De),v("GG",p,w),v("gg",p,w),v("GGGG",ke,_e),v("gggg",ke,_e),v("GGGGG",ve,ye),v("ggggg",ve,ye),Te(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=g(e)}),Te(["gg","GG"],function(e,t,n,s){t[s]=f.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),v("Q",i),D("Q",function(e,t){t[O]=3*(g(e)-1)}),s("D",["DD",2],"Do","date"),t("date","D"),n("date",9),v("D",p),v("DD",p,w),v("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),D(["D","DD"],b),D("Do",function(e,t){t[b]=g(e.match(p)[0])});ke=de("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),v("DDD",pe),v("DDDD",me),D(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),s("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),v("m",p),v("mm",p,w),D(["m","mm"],T);var ln,_e=de("Minutes",!1),ve=(s("s",["ss",2],0,"second"),t("second","s"),n("second",15),v("s",p),v("ss",p,w),D(["s","ss"],N),de("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),t("millisecond","ms"),n("millisecond",16),v("S",pe,i),v("SS",pe,w),v("SSS",pe,me),ln="SSSS";ln.length<=9;ln+="S")v(ln,Me);function hn(e,t){t[Ne]=g(1e3*("0."+e))}for(ln="S";ln.length<=9;ln+="S")D(ln,hn);ye=de("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");i=q.prototype;function dn(e){return e}i.add=Ce,i.calendar=function(e,t){1===arguments.length&&(arguments[0]?Jt(arguments[0])?(e=arguments[0],t=void 0):function(e){for(var t=F(e)&&!L(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||c(e,s[i]);return t&&n}(arguments[0])&&(t=arguments[0],e=void 0):t=e=void 0);var e=e||W(),n=Gt(e,this).startOf("day"),n=f.calendarFormat(this,n)||"sameElse",t=t&&(d(t[n])?t[n].call(this,e):t[n]);return this.format(t||this.localeData().calendar(n,this,W(e)))},i.clone=function(){return new q(this)},i.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=_(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:y(r)},i.endOf=function(e){var t,n;if(void 0===(e=_(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-tn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-tn(t,1e3)-1;break}return this._d.setTime(t),f.updateOffset(this,!0),this},i.format=function(e){return e=e||(this.isUtc()?f.defaultFormatUtc:f.defaultFormat),e=re(this,e),this.localeData().postformat(e)},i.from=function(e,t){return this.isValid()&&(h(e)&&e.isValid()||W(e).isValid())?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},i.fromNow=function(e){return this.from(W(),e)},i.to=function(e,t){return this.isValid()&&(h(e)&&e.isValid()||W(e).isValid())?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},i.toNow=function(e){return this.to(W(),e)},i.get=function(e){return d(this[e=_(e)])?this[e]():this},i.invalidAt=function(){return m(this).overflow},i.isAfter=function(e,t){return e=h(e)?e:W(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(t).valueOf())},i.isBefore=function(e,t){return e=h(e)?e:W(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(t).valueOf()<e.valueOf())},i.isBetween=function(e,t,n,s){return e=h(e)?e:W(e),t=h(t)?t:W(t),!!(this.isValid()&&e.isValid()&&t.isValid())&&(("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n)))},i.isSame=function(e,t){var e=h(e)?e:W(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(t).valueOf()<=e&&e<=this.clone().endOf(t).valueOf()))},i.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},i.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},i.isValid=function(){return A(this)},i.lang=Xe,i.locale=Xt,i.localeData=Kt,i.max=we,i.min=ge,i.parsingFlags=function(){return E({},m(this))},i.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:le[t]});return n.sort(function(e,t){return e.priority-t.priority}),n}(e=ue(e)),s=n.length,i=0;i<s;i++)this[n[i].unit](e[n[i].unit]);else if(d(this[e=_(e)]))return this[e](t);return this},i.startOf=function(e){var t,n;if(void 0===(e=_(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=tn(t,6e4);break;case"second":t=this._d.valueOf(),t-=tn(t,1e3);break}return this._d.setTime(t),f.updateOffset(this,!0),this},i.subtract=Je,i.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},i.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},i.toDate=function(){return new Date(this.valueOf())},i.toISOString=function(e){if(!this.isValid())return null;var t=(e=!0!==e)?this.clone().utc():this;return t.year()<0||9999<t.year()?re(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):d(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",re(t,"Z")):re(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},i.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t="moment",n="";return this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),t="["+t+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(t+e+"-MM-DD[T]HH:mm:ss.SSS"+(n+'[")]'))},"undefined"!=typeof Symbol&&null!=Symbol.for&&(i[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},i.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},i.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},i.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},i.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},i.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-f(n[s].since).year())*e+n[s].offset;return this.year()},i.year=Ie,i.isLeapYear=function(){return he(this.year())},i.weekYear=function(e){return un.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},i.isoWeekYear=function(e){return un.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},i.quarter=i.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},i.month=Ge,i.daysInMonth=function(){return We(this.year(),this.month())},i.week=i.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},i.isoWeek=i.isoWeeks=function(e){var t=qe(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},i.weeksInYear=function(){var e=this.localeData()._week;return P(this.year(),e.dow,e.doy)},i.weeksInWeekYear=function(){var e=this.localeData()._week;return P(this.weekYear(),e.dow,e.doy)},i.isoWeeksInYear=function(){return P(this.year(),1,4)},i.isoWeeksInISOWeekYear=function(){return P(this.isoWeekYear(),1,4)},i.date=ke,i.day=i.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},i.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},i.isoWeekday=function(e){return this.isValid()?null!=e?(t=e,n=this.localeData(),n="string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t,this.day(this.day()%7?n:n-7)):this.day()||7:null!=e?this:NaN;var t,n},i.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},i.hour=i.hours=k,i.minute=i.minutes=_e,i.second=i.seconds=ve,i.millisecond=i.milliseconds=ye,i.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Et(this);if("string"==typeof e){if(null===(e=Vt(Ye,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Et(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?qt(this,C(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,f.updateOffset(this,!0),this._changeInProgress=null)),this},i.utc=function(e){return this.utcOffset(0,e)},i.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Et(this),"m")),this},i.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Vt(Se,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},i.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?W(e).utcOffset():0,(this.utcOffset()-e)%60==0)},i.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},i.isLocal=function(){return!!this.isValid()&&!this._isUTC},i.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},i.isUtc=At,i.isUTC=At,i.zoneAbbr=function(){return this._isUTC?"UTC":""},i.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},i.dates=e("dates accessor is deprecated. Use date instead.",ke),i.months=e("months accessor is deprecated. Use month instead",Ge),i.years=e("years accessor is deprecated. Use year instead",Ie),i.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),i.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return $(t,this),(t=Nt(t))._a?(e=(t._isUTC?l:W)(t._a),this._isDSTShifted=this.isValid()&&0<function(e,t,n){for(var s=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),r=0,a=0;a<s;a++)(n&&e[a]!==t[a]||!n&&g(e[a])!==g(t[a]))&&r++;return r+i}(t._a,e.toArray())):this._isDSTShifted=!1,this._isDSTShifted});w=K.prototype;function cn(e,t,n,s){var i=mt(),s=l().set(s,t);return i[n](s,e)}function fn(e,t,n){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=cn(e,i,n,"month");return s}function mn(e,t,n,s){t=("boolean"==typeof e?u(t)&&(n=t,t=void 0):(t=e,e=!1,u(n=t)&&(n=t,t=void 0)),t||"");var i,r=mt(),a=e?r._week.dow:0,o=[];if(null!=n)return cn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}w.calendar=function(e,t,n){return d(e=this._calendar[e]||this._calendar.sameElse)?e.call(t,n):e},w.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(te).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},w.invalidDate=function(){return this._invalidDate},w.ordinal=function(e){return this._ordinal.replace("%d",e)},w.preparse=dn,w.postformat=dn,w.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return d(i)?i(e,t,n,s):i.replace(/%d/i,e)},w.pastFuture=function(e,t){return d(e=this._relativeTime[0<e?"future":"past"])?e(t):e.replace(/%s/i,t)},w.set=function(e){var t,n;for(n in e)c(e,n)&&(d(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},w.eras=function(e,t){for(var n,s=this._eras||mt("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=f(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=f(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},w.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},w.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?f(e.since).year():f(e.since).year()+(t-e.offset)*n},w.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||an.call(this),e?this._erasAbbrRegex:this._erasRegex},w.erasNameRegex=function(e){return c(this,"_erasNameRegex")||an.call(this),e?this._erasNameRegex:this._erasRegex},w.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||an.call(this),e?this._erasNarrowRegex:this._erasRegex},w.months=function(e,t){return e?(a(this._months)?this._months:this._months[(this._months.isFormat||He).test(t)?"format":"standalone"])[e.month()]:a(this._months)?this._months:this._months.standalone},w.monthsShort=function(e,t){return e?(a(this._monthsShort)?this._monthsShort:this._monthsShort[He.test(t)?"format":"standalone"])[e.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},w.monthsParse=function(e,t,n){var s,i;if(this._monthsParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=S.call(this._shortMonthsParse,e))?i:null:-1!==(i=S.call(this._longMonthsParse,e))?i:null:"MMM"===t?-1!==(i=S.call(this._shortMonthsParse,e))||-1!==(i=S.call(this._longMonthsParse,e))?i:null:-1!==(i=S.call(this._longMonthsParse,e))||-1!==(i=S.call(this._shortMonthsParse,e))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(i="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},w.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},w.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},w.week=function(e){return qe(e,this._week.dow,this._week.doy).week},w.firstDayOfYear=function(){return this._week.doy},w.firstDayOfWeek=function(){return this._week.dow},w.weekdays=function(e,t){return t=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"],!0===e?Be(t,this._week.dow):e?t[e.day()]:t},w.weekdaysMin=function(e){return!0===e?Be(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},w.weekdaysShort=function(e){return!0===e?Be(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},w.weekdaysParse=function(e,t,n){var s,i;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=S.call(this._weekdaysParse,e))?i:null:"ddd"===t?-1!==(i=S.call(this._shortWeekdaysParse,e))?i:null:-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:"dddd"===t?-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._shortWeekdaysParse,e))||-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:"ddd"===t?-1!==(i=S.call(this._shortWeekdaysParse,e))||-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:-1!==(i=S.call(this._minWeekdaysParse,e))||-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._shortWeekdaysParse,e))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},w.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},w.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=et),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},w.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=tt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},w.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},w.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ct("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),f.lang=e("moment.lang is deprecated. Use moment.locale instead.",ct),f.langData=e("moment.langData is deprecated. Use moment.localeData instead.",mt);var _n=Math.abs;function yn(e,t,n,s){t=C(t,n);return e._milliseconds+=s*t._milliseconds,e._days+=s*t._days,e._months+=s*t._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function wn(e){return 4800*e/146097}function pn(e){return 146097*e/4800}function kn(e){return function(){return this.as(e)}}pe=kn("ms"),me=kn("s"),Ce=kn("m"),we=kn("h"),ge=kn("d"),Je=kn("w"),k=kn("M"),_e=kn("Q"),ve=kn("y");function vn(e){return function(){return this.isValid()?this._data[e]:NaN}}var ye=vn("milliseconds"),ke=vn("seconds"),Ie=vn("minutes"),w=vn("hours"),Mn=vn("days"),Dn=vn("months"),Sn=vn("years");var Yn=Math.round,On={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function bn(e,t,n,s){var i=C(e).abs(),r=Yn(i.as("s")),a=Yn(i.as("m")),o=Yn(i.as("h")),u=Yn(i.as("d")),l=Yn(i.as("M")),h=Yn(i.as("w")),i=Yn(i.as("y")),r=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||a<=1&&["m"]||a<n.m&&["mm",a]||o<=1&&["h"]||o<n.h&&["hh",o]||u<=1&&["d"]||u<n.d&&["dd",u];return(r=(r=null!=n.w?r||h<=1&&["w"]||h<n.w&&["ww",h]:r)||l<=1&&["M"]||l<n.M&&["MM",l]||i<=1&&["y"]||["yy",i])[2]=t,r[3]=0<+e,r[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,r)}var xn=Math.abs;function Tn(e){return(0<e)-(e<0)||+e}function Nn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o=xn(this._milliseconds)/1e3,u=xn(this._days),l=xn(this._months),h=this.asSeconds();return h?(e=y(o/60),t=y(e/60),o%=60,e%=60,n=y(l/12),l%=12,s=o?o.toFixed(3).replace(/\.?0+$/,""):"",i=Tn(this._months)!==Tn(h)?"-":"",r=Tn(this._days)!==Tn(h)?"-":"",a=Tn(this._milliseconds)!==Tn(h)?"-":"",(h<0?"-":"")+"P"+(n?i+n+"Y":"")+(l?i+l+"M":"")+(u?r+u+"D":"")+(t||e||o?"T":"")+(t?a+t+"H":"")+(e?a+e+"M":"")+(o?a+s+"S":"")):"P0D"}var U=Ct.prototype;return U.isValid=function(){return this._isValid},U.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},U.add=function(e,t){return yn(this,e,t,1)},U.subtract=function(e,t){return yn(this,e,t,-1)},U.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=_(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+wn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(pn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},U.asMilliseconds=pe,U.asSeconds=me,U.asMinutes=Ce,U.asHours=we,U.asDays=ge,U.asWeeks=Je,U.asMonths=k,U.asQuarters=_e,U.asYears=ve,U.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},U._bubble=function(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data;return 0<=e&&0<=t&&0<=n||e<=0&&t<=0&&n<=0||(e+=864e5*gn(pn(n)+t),n=t=0),s.milliseconds=e%1e3,e=y(e/1e3),s.seconds=e%60,e=y(e/60),s.minutes=e%60,e=y(e/60),s.hours=e%24,t+=y(e/24),n+=e=y(wn(t)),t-=gn(pn(e)),e=y(n/12),n%=12,s.days=t,s.months=n,s.years=e,this},U.clone=function(){return C(this)},U.get=function(e){return e=_(e),this.isValid()?this[e+"s"]():NaN},U.milliseconds=ye,U.seconds=ke,U.minutes=Ie,U.hours=w,U.days=Mn,U.weeks=function(){return y(this.days()/7)},U.months=Dn,U.years=Sn,U.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,s=On;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(s=Object.assign({},On,t),null!=t.s&&null==t.ss&&(s.ss=t.s-1)),e=this.localeData(),t=bn(this,!n,s,e),n&&(t=e.pastFuture(+this,t)),e.postformat(t)},U.toISOString=Nn,U.toString=Nn,U.toJSON=Nn,U.locale=Xt,U.localeData=Kt,U.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Nn),U.lang=Xe,s("X",0,0,"unix"),s("x",0,0,"valueOf"),v("x",De),v("X",/[+-]?\d+(\.\d{1,3})?/),D("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),D("x",function(e,t,n){n._d=new Date(g(e))}),f.version="2.29.4",H=W,f.fn=i,f.min=function(){return Rt("isBefore",[].slice.call(arguments,0))},f.max=function(){return Rt("isAfter",[].slice.call(arguments,0))},f.now=function(){return Date.now?Date.now():+new Date},f.utc=l,f.unix=function(e){return W(1e3*e)},f.months=function(e,t){return fn(e,t,"months")},f.isDate=V,f.locale=ct,f.invalid=I,f.duration=C,f.isMoment=h,f.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},f.parseZone=function(){return W.apply(null,arguments).parseZone()},f.localeData=mt,f.isDuration=Ut,f.monthsShort=function(e,t){return fn(e,t,"monthsShort")},f.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},f.defineLocale=ft,f.updateLocale=function(e,t){var n,s;return null!=t?(s=ot,null!=R[e]&&null!=R[e].parentLocale?R[e].set(X(R[e]._config,t)):(t=X(s=null!=(n=dt(e))?n._config:s,t),null==n&&(t.abbr=e),(s=new K(t)).parentLocale=R[e],R[e]=s),ct(e)):null!=R[e]&&(null!=R[e].parentLocale?(R[e]=R[e].parentLocale,e===ct()&&ct(e)):null!=R[e]&&delete R[e]),R[e]},f.locales=function(){return ee(R)},f.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},f.normalizeUnits=_,f.relativeTimeRounding=function(e){return void 0===e?Yn:"function"==typeof e&&(Yn=e,!0)},f.relativeTimeThreshold=function(e,t){return void 0!==On[e]&&(void 0===t?On[e]:(On[e]=t,"s"===e&&(On.ss=t-1),!0))},f.calendarFormat=function(e,t){return(e=e.diff(t,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},f.prototype=i,f.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},f});

var luxon=function(e){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,r=arguments[t];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){e.prototype=Object.create(t.prototype),s(e.prototype.constructor=e,t)}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(e,t,n){return(c=function(){if("undefined"!=typeof Reflect&&Reflect.construct&&!Reflect.construct.sham){if("function"==typeof Proxy)return 1;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),1}catch(e){return}}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);r=new(Function.bind.apply(e,r));return n&&s(r,n.prototype),r}).apply(null,arguments)}function t(e){var n="function"==typeof Map?new Map:void 0;return(t=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return c(e,arguments,a(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),s(t,e)})(e)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function k(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(n="Object"===n&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(t(Error)),f=function(t){function e(e){return t.call(this,"Invalid DateTime: "+e.toMessage())||this}return i(e,t),e}(n),d=function(t){function e(e){return t.call(this,"Invalid Interval: "+e.toMessage())||this}return i(e,t),e}(n),h=function(t){function e(e){return t.call(this,"Invalid Duration: "+e.toMessage())||this}return i(e,t),e}(n),S=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(n),y=function(t){function e(e){return t.call(this,"Invalid unit "+e)||this}return i(e,t),e}(n),v=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(n),m=function(e){function t(){return e.call(this,"Zone is an abstract class")||this}return i(t,e),t}(n),p="numeric",g="short",w="long",T={year:p,month:p,day:p},b={year:p,month:g,day:p},O={year:p,month:g,day:p,weekday:g},M={year:p,month:w,day:p},N={year:p,month:w,day:p,weekday:w},D={hour:p,minute:p},E={hour:p,minute:p,second:p},V={hour:p,minute:p,second:p,timeZoneName:g},I={hour:p,minute:p,second:p,timeZoneName:w},x={hour:p,minute:p,hourCycle:"h23"},C={hour:p,minute:p,second:p,hourCycle:"h23"},Z={hour:p,minute:p,second:p,hourCycle:"h23",timeZoneName:g},F={hour:p,minute:p,second:p,hourCycle:"h23",timeZoneName:w},L={year:p,month:p,day:p,hour:p,minute:p},A={year:p,month:p,day:p,hour:p,minute:p,second:p},z={year:p,month:g,day:p,hour:p,minute:p},j={year:p,month:g,day:p,hour:p,minute:p,second:p},q={year:p,month:g,day:p,weekday:g,hour:p,minute:p},_={year:p,month:w,day:p,hour:p,minute:p,timeZoneName:g},U={year:p,month:w,day:p,hour:p,minute:p,second:p,timeZoneName:g},R={year:p,month:w,day:p,weekday:w,hour:p,minute:p,timeZoneName:w},H={year:p,month:w,day:p,weekday:w,hour:p,minute:p,second:p,timeZoneName:w};function P(e){return void 0===e}function W(e){return"number"==typeof e}function J(e){return"number"==typeof e&&e%1==0}function Y(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function G(e,n,r){if(0!==e.length)return e.reduce(function(e,t){t=[n(t),t];return e&&r(e[0],t[0])===e[0]?e:t},null)[1]}function $(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function B(e,t,n){return J(e)&&t<=e&&e<=n}function Q(e,t){void 0===t&&(t=2);var n=e<0?"-":"",e=n?-1*e:e,e=e.toString().length<t?("0".repeat(t)+e).slice(-t):e.toString();return n+e}function K(e){if(!P(e)&&null!==e&&""!==e)return parseInt(e,10)}function X(e){if(!P(e)&&null!==e&&""!==e){e=1e3*parseFloat("0."+e);return Math.floor(e)}}function ee(e,t,n){void 0===n&&(n=!1);t=Math.pow(10,t);return(n?Math.trunc:Math.round)(e*t)/t}function te(e){return e%4==0&&(e%100!=0||e%400==0)}function ne(e){return te(e)?366:365}function re(e,t){var n,r,r=(n=t-1)-(r=12)*Math.floor(n/r)+1;return 2==r?te(e+(t-r)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function ie(e){var t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&0<=e.year&&(t=new Date(t)).setUTCFullYear(t.getUTCFullYear()-1900),+t}function oe(e){var t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,e=e-1,e=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7;return 4==t||3==e?53:52}function ae(e){return 99<e?e:60<e?1900+e:2e3+e}function ue(e,t,n,r){void 0===r&&(r=null);var i=new Date(e),e={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(e.timeZone=r);e=u({timeZoneName:t},e),i=new Intl.DateTimeFormat(n,e).formatToParts(i).find(function(e){return"timezonename"===e.type.toLowerCase()});return i?i.value:null}function se(e,t){e=parseInt(e,10);Number.isNaN(e)&&(e=0);t=parseInt(t,10)||0;return 60*e+(e<0||Object.is(e,-0)?-t:t)}function ce(e){var t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new v("Invalid unit value "+e);return t}function le(e,t){var n,r,i={};for(n in e)!$(e,n)||null!=(r=e[n])&&(i[t(n)]=ce(r));return i}function fe(e,t){var n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=0<=e?"+":"-";switch(t){case"short":return i+Q(n,2)+":"+Q(r,2);case"narrow":return i+n+(0<r?":"+r:"");case"techie":return i+Q(n,2)+Q(r,2);default:throw new RangeError("Value format "+t+" is out of range for property format")}}function de(e){return n=e,["hour","minute","second","millisecond"].reduce(function(e,t){return e[t]=n[t],e},{});var n}var he=/[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/,me=["January","February","March","April","May","June","July","August","September","October","November","December"],ye=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ve=["J","F","M","A","M","J","J","A","S","O","N","D"];function pe(e){switch(e){case"narrow":return[].concat(ve);case"short":return[].concat(ye);case"long":return[].concat(me);case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var ge=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],we=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ke=["M","T","W","T","F","S","S"];function Se(e){switch(e){case"narrow":return[].concat(ke);case"short":return[].concat(we);case"long":return[].concat(ge);case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Te=["AM","PM"],be=["Before Christ","Anno Domini"],Oe=["BC","AD"],Me=["B","A"];function Ne(e){switch(e){case"narrow":return[].concat(Me);case"short":return[].concat(Oe);case"long":return[].concat(be);default:return null}}function De(e,t){for(var n="",r=k(e);!(i=r()).done;){var i=i.value;i.literal?n+=i.val:n+=t(i.val)}return n}var Ee={D:T,DD:b,DDD:M,DDDD:N,t:D,tt:E,ttt:V,tttt:I,T:x,TT:C,TTT:Z,TTTT:F,f:L,ff:z,fff:_,ffff:R,F:A,FF:j,FFF:U,FFFF:H},Ve=function(){function h(e,t){this.opts=t,this.loc=e,this.systemLoc=null}h.create=function(e,t){return new h(e,t=void 0===t?{}:t)},h.parseFormat=function(e){for(var t=null,n="",r=!1,i=[],o=0;o<e.length;o++){var a=e.charAt(o);"'"===a?(0<n.length&&i.push({literal:r,val:n}),t=null,n="",r=!r):r||a===t?n+=a:(0<n.length&&i.push({literal:!1,val:n}),t=n=a)}return 0<n.length&&i.push({literal:r,val:n}),i},h.macroTokenToFormatOpts=function(e){return Ee[e]};var e=h.prototype;return e.formatWithSystemDefault=function(e,t){return null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,u({},this.opts,t)).format()},e.formatDateTime=function(e,t){return this.loc.dtFormatter(e,u({},this.opts,t=void 0===t?{}:t)).format()},e.formatDateTimeParts=function(e,t){return this.loc.dtFormatter(e,u({},this.opts,t=void 0===t?{}:t)).formatToParts()},e.resolvedOptions=function(e,t){return this.loc.dtFormatter(e,u({},this.opts,t=void 0===t?{}:t)).resolvedOptions()},e.num=function(e,t){if(void 0===t&&(t=0),this.opts.forceSimple)return Q(e,t);var n=u({},this.opts);return 0<t&&(n.padTo=t),this.loc.numberFormatter(n).format(e)},e.formatDateTimeFromString=function(r,e){function i(e,t){return l.loc.extract(r,e,t)}function o(e){return r.isOffsetFixed&&0===r.offset&&e.allowZ?"Z":r.isValid?r.zone.formatOffset(r.ts,e.format):""}function a(){return f?Te[r.hour<12?0:1]:i({hour:"numeric",hourCycle:"h12"},"dayperiod")}function u(e,t){return f?(n=r,pe(e)[n.month-1]):i(t?{month:e}:{month:e,day:"numeric"},"month");var n}function s(e,t){return f?(n=r,Se(e)[n.weekday-1]):i(t?{weekday:e}:{weekday:e,month:"long",day:"numeric"},"weekday");var n}function c(e){return f?(t=r,Ne(e)[t.year<0?0:1]):i({era:e},"era");var t}var l=this,f="en"===this.loc.listingMode(),d=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar;return De(h.parseFormat(e),function(e){switch(e){case"S":return l.num(r.millisecond);case"u":case"SSS":return l.num(r.millisecond,3);case"s":return l.num(r.second);case"ss":return l.num(r.second,2);case"m":return l.num(r.minute);case"mm":return l.num(r.minute,2);case"h":return l.num(r.hour%12==0?12:r.hour%12);case"hh":return l.num(r.hour%12==0?12:r.hour%12,2);case"H":return l.num(r.hour);case"HH":return l.num(r.hour,2);case"Z":return o({format:"narrow",allowZ:l.opts.allowZ});case"ZZ":return o({format:"short",allowZ:l.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:l.opts.allowZ});case"ZZZZ":return r.zone.offsetName(r.ts,{format:"short",locale:l.loc.locale});case"ZZZZZ":return r.zone.offsetName(r.ts,{format:"long",locale:l.loc.locale});case"z":return r.zoneName;case"a":return a();case"d":return d?i({day:"numeric"},"day"):l.num(r.day);case"dd":return d?i({day:"2-digit"},"day"):l.num(r.day,2);case"c":return l.num(r.weekday);case"ccc":return s("short",!0);case"cccc":return s("long",!0);case"ccccc":return s("narrow",!0);case"E":return l.num(r.weekday);case"EEE":return s("short",!1);case"EEEE":return s("long",!1);case"EEEEE":return s("narrow",!1);case"L":return d?i({month:"numeric",day:"numeric"},"month"):l.num(r.month);case"LL":return d?i({month:"2-digit",day:"numeric"},"month"):l.num(r.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return d?i({month:"numeric"},"month"):l.num(r.month);case"MM":return d?i({month:"2-digit"},"month"):l.num(r.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return d?i({year:"numeric"},"year"):l.num(r.year);case"yy":return d?i({year:"2-digit"},"year"):l.num(r.year.toString().slice(-2),2);case"yyyy":return d?i({year:"numeric"},"year"):l.num(r.year,4);case"yyyyyy":return d?i({year:"numeric"},"year"):l.num(r.year,6);case"G":return c("short");case"GG":return c("long");case"GGGGG":return c("narrow");case"kk":return l.num(r.weekYear.toString().slice(-2),2);case"kkkk":return l.num(r.weekYear,4);case"W":return l.num(r.weekNumber);case"WW":return l.num(r.weekNumber,2);case"o":return l.num(r.ordinal);case"ooo":return l.num(r.ordinal,3);case"q":return l.num(r.quarter);case"qq":return l.num(r.quarter,2);case"X":return l.num(Math.floor(r.ts/1e3));case"x":return l.num(r.ts);default:return(n=h.macroTokenToFormatOpts(t=e))?l.formatWithSystemDefault(r,n):t}var t,n})},e.formatDurationFromString=function(e,t){function n(e){switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"M":return"month";case"y":return"year";default:return null}}var r,i=this,o=h.parseFormat(t),t=o.reduce(function(e,t){var n=t.literal,t=t.val;return n?e:e.concat(t)},[]),t=e.shiftTo.apply(e,t.map(n).filter(function(e){return e}));return De(o,(r=t,function(e){var t=n(e);return t?i.num(r.get(t),e.length):e}))},h}(),Ie=function(){function e(e,t){this.reason=e,this.explanation=t}return e.prototype.toMessage=function(){return this.explanation?this.reason+": "+this.explanation:this.reason},e}(),xe=function(){function e(){}var t=e.prototype;return t.offsetName=function(e,t){throw new m},t.formatOffset=function(e,t){throw new m},t.offset=function(e){throw new m},t.equals=function(e){throw new m},o(e,[{key:"type",get:function(){throw new m}},{key:"name",get:function(){throw new m}},{key:"isUniversal",get:function(){throw new m}},{key:"isValid",get:function(){throw new m}}]),e}(),Ce=null,Ze=function(e){function t(){return e.apply(this,arguments)||this}i(t,e);var n=t.prototype;return n.offsetName=function(e,t){return ue(e,t.format,t.locale)},n.formatOffset=function(e,t){return fe(this.offset(e),t)},n.offset=function(e){return-new Date(e).getTimezoneOffset()},n.equals=function(e){return"system"===e.type},o(t,[{key:"type",get:function(){return"system"}},{key:"name",get:function(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}},{key:"isUniversal",get:function(){return!1}},{key:"isValid",get:function(){return!0}}],[{key:"instance",get:function(){return Ce=null===Ce?new t:Ce}}]),t}(xe),Fe=RegExp("^"+he.source+"$"),Le={};var Ae={year:0,month:1,day:2,hour:3,minute:4,second:5};var ze={},je=function(n){function r(e){var t=n.call(this)||this;return t.zoneName=e,t.valid=r.isValidZone(e),t}i(r,n),r.create=function(e){return ze[e]||(ze[e]=new r(e)),ze[e]},r.resetCache=function(){ze={},Le={}},r.isValidSpecifier=function(e){return!(!e||!e.match(Fe))},r.isValidZone=function(e){try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}},r.parseGMTOffset=function(e){if(e){e=e.match(/^Etc\/GMT(0|[+-]\d{1,2})$/i);if(e)return-60*parseInt(e[1])}return null};var e=r.prototype;return e.offsetName=function(e,t){return ue(e,t.format,t.locale,this.name)},e.formatOffset=function(e,t){return fe(this.offset(e),t)},e.offset=function(e){var t=new Date(e);if(isNaN(t))return NaN;var n,r,e=(r=this.name,Le[r]||(Le[r]=new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:r,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),Le[r]),n=e.formatToParts?function(e,t){for(var n=e.formatToParts(t),r=[],i=0;i<n.length;i++){var o=n[i],a=o.type,o=o.value,a=Ae[a];P(a)||(r[a]=parseInt(o,10))}return r}(e,t):(r=t,n=(i=e).format(r).replace(/\u200E/g,""),r=(i=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(n))[1],n=i[2],[i[3],r,n,i[4],i[5],i[6]]),i=+t,t=i%1e3;return(ie({year:n[0],month:n[1],day:n[2],hour:n[3],minute:n[4],second:n[5],millisecond:0})-(i-=0<=t?t:1e3+t))/6e4},e.equals=function(e){return"iana"===e.type&&e.name===this.name},o(r,[{key:"type",get:function(){return"iana"}},{key:"name",get:function(){return this.zoneName}},{key:"isUniversal",get:function(){return!1}},{key:"isValid",get:function(){return this.valid}}]),r}(xe),qe=null,_e=function(n){function t(e){var t=n.call(this)||this;return t.fixed=e,t}i(t,n),t.instance=function(e){return 0===e?t.utcInstance:new t(e)},t.parseSpecifier=function(e){if(e){e=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(e)return new t(se(e[1],e[2]))}return null};var e=t.prototype;return e.offsetName=function(){return this.name},e.formatOffset=function(e,t){return fe(this.fixed,t)},e.offset=function(){return this.fixed},e.equals=function(e){return"fixed"===e.type&&e.fixed===this.fixed},o(t,[{key:"type",get:function(){return"fixed"}},{key:"name",get:function(){return 0===this.fixed?"UTC":"UTC"+fe(this.fixed,"narrow")}},{key:"isUniversal",get:function(){return!0}},{key:"isValid",get:function(){return!0}}],[{key:"utcInstance",get:function(){return qe=null===qe?new t(0):qe}}]),t}(xe),Ue=function(n){function e(e){var t=n.call(this)||this;return t.zoneName=e,t}i(e,n);var t=e.prototype;return t.offsetName=function(){return null},t.formatOffset=function(){return""},t.offset=function(){return NaN},t.equals=function(){return!1},o(e,[{key:"type",get:function(){return"invalid"}},{key:"name",get:function(){return this.zoneName}},{key:"isUniversal",get:function(){return!1}},{key:"isValid",get:function(){return!1}}]),e}(xe);function Re(e,t){if(P(e)||null===e)return t;if(e instanceof xe)return e;if("string"!=typeof e)return W(e)?_e.instance(e):"object"==typeof e&&e.offset&&"number"==typeof e.offset?e:new Ue(e);var n=e.toLowerCase();return"local"===n||"system"===n?t:"utc"===n||"gmt"===n?_e.utcInstance:null!=(t=je.parseGMTOffset(e))?_e.instance(t):je.isValidSpecifier(n)?je.create(e):_e.parseSpecifier(n)||new Ue(e)}var He,Pe=function(){return Date.now()},We="system",Je=null,Ye=null,Ge=null,$e=function(){function e(){}return e.resetCaches=function(){ut.resetCache(),je.resetCache()},o(e,null,[{key:"now",get:function(){return Pe},set:function(e){Pe=e}},{key:"defaultZone",get:function(){return Re(We,Ze.instance)},set:function(e){We=e}},{key:"defaultLocale",get:function(){return Je},set:function(e){Je=e}},{key:"defaultNumberingSystem",get:function(){return Ye},set:function(e){Ye=e}},{key:"defaultOutputCalendar",get:function(){return Ge},set:function(e){Ge=e}},{key:"throwOnInvalid",get:function(){return He},set:function(e){He=e}}]),e}(),Be=["base"],Qe={};function Ke(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=Qe[n];return r||(r=new Intl.DateTimeFormat(e,t),Qe[n]=r),r}var Xe={};var et={};function tt(e,t){var n=t=void 0===t?{}:t;n.base;var r=function(e,t){if(null==e)return{};for(var n,r={},i=Object.keys(e),o=0;o<i.length;o++)n=i[o],0<=t.indexOf(n)||(r[n]=e[n]);return r}(n,Be),n=JSON.stringify([e,r]),r=et[n];return r||(r=new Intl.RelativeTimeFormat(e,t),et[n]=r),r}var nt=null;function rt(e,t,n,r,i){n=e.listingMode(n);return"error"===n?null:("en"===n?r:i)(t)}var it=function(){function e(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1,t||(t={useGrouping:!1},0<n.padTo&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=Xe[n];return r||(r=new Intl.NumberFormat(e,t),Xe[n]=r),r}(e,t))}return e.prototype.format=function(e){if(this.inf){var t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Q(this.floor?Math.floor(e):ee(e,3),this.padTo)},e}(),ot=function(){function e(e,t,n){var r,i,o;this.opts=n,e.zone.isUniversal?(o=e.offset/60*-1,o=je.isValidZone(i=0<=o?"Etc/GMT+"+o:"Etc/GMT"+o),0!==e.offset&&o?(r=i,this.dt=e):(r="UTC",n.timeZoneName?this.dt=e:this.dt=0===e.offset?e:tr.fromMillis(e.ts+60*e.offset*1e3))):"system"===e.zone.type?this.dt=e:r=(this.dt=e).zone.name;e=u({},this.opts);r&&(e.timeZone=r),this.dtf=Ke(t,e)}var t=e.prototype;return t.format=function(){return this.dtf.format(this.dt.toJSDate())},t.formatToParts=function(){return this.dtf.formatToParts(this.dt.toJSDate())},t.resolvedOptions=function(){return this.dtf.resolvedOptions()},e}(),at=function(){function e(e,t,n){this.opts=u({style:"long"},n),!t&&Y()&&(this.rtf=tt(e,n))}var t=e.prototype;return t.format=function(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n,r){void 0===n&&(n="always"),void 0===r&&(r=!1);var i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&o){var a="days"===e;switch(t){case 1:return a?"tomorrow":"next "+i[e][0];case-1:return a?"yesterday":"last "+i[e][0];case 0:return a?"today":"this "+i[e][0]}}var u=Object.is(t,-0)||t<0,o=1===(n=Math.abs(t)),t=i[e],o=r?!o&&t[2]||t[1]:o?i[e][0]:e;return u?n+" "+o+" ago":"in "+n+" "+o}(t,e,this.opts.numeric,"long"!==this.opts.style)},t.formatToParts=function(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]},e}(),ut=function(){function i(e,t,n,r){var i=function(e){var t=e.indexOf("-u-");if(-1===t)return[e];t=e.substring(0,t);try{n=Ke(e).resolvedOptions()}catch(e){n=Ke(t).resolvedOptions()}var n=n;return[t,n.numberingSystem,n.calendar]}(e),o=i[0],e=i[1],i=i[2];this.locale=o,this.numberingSystem=t||e||null,this.outputCalendar=n||i||null,this.intl=(e=this.locale,n=this.numberingSystem,((i=this.outputCalendar)||n)&&(e+="-u",i&&(e+="-ca-"+i),n&&(e+="-nu-"+n)),e),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}i.fromOpts=function(e){return i.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)},i.create=function(e,t,n,r){void 0===r&&(r=!1);e=e||$e.defaultLocale;return new i(e||(r?"en-US":nt=nt||"en-US"),t||$e.defaultNumberingSystem,n||$e.defaultOutputCalendar,e)},i.resetCache=function(){nt=null,Qe={},Xe={},et={}},i.fromObject=function(e){var t=void 0===e?{}:e,n=t.locale,e=t.numberingSystem,t=t.outputCalendar;return i.create(n,e,t)};var e=i.prototype;return e.listingMode=function(e){var t=this.isEnglish(),n=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return t&&n?"en":"intl"},e.clone=function(e){return e&&0!==Object.getOwnPropertyNames(e).length?i.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1):this},e.redefaultToEN=function(e){return this.clone(u({},e=void 0===e?{}:e,{defaultToEN:!0}))},e.redefaultToSystem=function(e){return this.clone(u({},e=void 0===e?{}:e,{defaultToEN:!1}))},e.months=function(n,r,e){var i=this;return void 0===r&&(r=!1),rt(this,n,e=void 0===e?!0:e,pe,function(){var t=r?{month:n,day:"numeric"}:{month:n},e=r?"format":"standalone";return i.monthsCache[e][n]||(i.monthsCache[e][n]=function(e){for(var t=[],n=1;n<=12;n++){var r=tr.utc(2016,n,1);t.push(e(r))}return t}(function(e){return i.extract(e,t,"month")})),i.monthsCache[e][n]})},e.weekdays=function(n,r,e){var i=this;return void 0===r&&(r=!1),rt(this,n,e=void 0===e?!0:e,Se,function(){var t=r?{weekday:n,year:"numeric",month:"long",day:"numeric"}:{weekday:n},e=r?"format":"standalone";return i.weekdaysCache[e][n]||(i.weekdaysCache[e][n]=function(e){for(var t=[],n=1;n<=7;n++){var r=tr.utc(2016,11,13+n);t.push(e(r))}return t}(function(e){return i.extract(e,t,"weekday")})),i.weekdaysCache[e][n]})},e.meridiems=function(e){var n=this;return rt(this,void 0,e=void 0===e?!0:e,function(){return Te},function(){var t;return n.meridiemCache||(t={hour:"numeric",hourCycle:"h12"},n.meridiemCache=[tr.utc(2016,11,13,9),tr.utc(2016,11,13,19)].map(function(e){return n.extract(e,t,"dayperiod")})),n.meridiemCache})},e.eras=function(e,t){var n=this;return rt(this,e,t=void 0===t?!0:t,Ne,function(){var t={era:e};return n.eraCache[e]||(n.eraCache[e]=[tr.utc(-40,1,1),tr.utc(2017,1,1)].map(function(e){return n.extract(e,t,"era")})),n.eraCache[e]})},e.extract=function(e,t,n){t=this.dtFormatter(e,t).formatToParts().find(function(e){return e.type.toLowerCase()===n});return t?t.value:null},e.numberFormatter=function(e){return new it(this.intl,(e=void 0===e?{}:e).forceSimple||this.fastNumbers,e)},e.dtFormatter=function(e,t){return new ot(e,this.intl,t=void 0===t?{}:t)},e.relFormatter=function(e){return void 0===e&&(e={}),new at(this.intl,this.isEnglish(),e)},e.isEnglish=function(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")},e.equals=function(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar},o(i,[{key:"fastNumbers",get:function(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}}]),i}();function st(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce(function(e,t){return e+t.source},"");return RegExp("^"+r+"$")}function ct(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(o){return t.reduce(function(e,t){var n=e[0],r=e[1],i=e[2],e=t(o,i),t=e[0],i=e[1],e=e[2];return[u({},n,t),r||i,e]},[{},null,1]).slice(0,2)}}function lt(e){if(null==e)return[null,null];for(var t=arguments.length,n=new Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];for(var i=0,o=n;i<o.length;i++){var a=o[i],u=a[0],a=a[1],u=u.exec(e);if(u)return a(u)}return[null,null]}function ft(){for(var e=arguments.length,i=new Array(e),t=0;t<e;t++)i[t]=arguments[t];return function(e,t){for(var n={},r=0;r<i.length;r++)n[i[r]]=K(e[t+r]);return[n,null,t+r]}}var dt=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,ht=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,n=RegExp(""+ht.source+dt.source+"?"),g=RegExp("(?:T"+n.source+")?"),p=ft("weekYear","weekNumber","weekDay"),w=ft("year","ordinal"),dt=RegExp(ht.source+" ?(?:"+dt.source+"|("+he.source+"))?"),he=RegExp("(?: "+dt.source+")?");function mt(e,t,n){t=e[t];return P(t)?n:K(t)}function yt(e,t){return[{year:mt(e,t),month:mt(e,t+1,1),day:mt(e,t+2,1)},null,t+3]}function vt(e,t){return[{hours:mt(e,t,0),minutes:mt(e,t+1,0),seconds:mt(e,t+2,0),milliseconds:X(e[t+3])},null,t+4]}function pt(e,t){var n=!e[t]&&!e[t+1],e=se(e[t+1],e[t+2]);return[{},n?null:_e.instance(e),t+3]}function gt(e,t){return[{},e[t]?je.create(e[t]):null,t+1]}var wt=RegExp("^T?"+ht.source+"$"),kt=/^-?P(?:(?:(-?\d{1,9})Y)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})W)?(?:(-?\d{1,9})D)?(?:T(?:(-?\d{1,9})H)?(?:(-?\d{1,9})M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,9}))?S)?)?)$/;function St(e){var t=e[0],n=e[1],r=e[2],i=e[3],o=e[4],a=e[5],u=e[6],s=e[7],c=e[8],l="-"===t[0],e=s&&"-"===s[0],t=function(e,t){return void 0===t&&(t=!1),void 0!==e&&(t||e&&l)?-e:e};return[{years:t(K(n)),months:t(K(r)),weeks:t(K(i)),days:t(K(o)),hours:t(K(a)),minutes:t(K(u)),seconds:t(K(s),"-0"===s),milliseconds:t(X(c),e)}]}var Tt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function bt(e,t,n,r,i,o,a){o={year:2===t.length?ae(K(t)):K(t),month:ye.indexOf(n)+1,day:K(r),hour:K(i),minute:K(o)};return a&&(o.second=K(a)),e&&(o.weekday=3<e.length?ge.indexOf(e)+1:we.indexOf(e)+1),o}var Ot=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Mt(e){var t=e[1],n=e[2],r=e[3],i=e[4],o=e[5],a=e[6],u=e[7],s=e[8],c=e[9],l=e[10],e=e[11],u=bt(t,i,r,n,o,a,u),e=s?Tt[s]:c?0:se(l,e);return[u,new _e(e)]}var Nt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Dt=/^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Et=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Vt(e){var t=e[1],n=e[2],r=e[3];return[bt(t,e[4],r,n,e[5],e[6],e[7]),_e.utcInstance]}function It(e){var t=e[1],n=e[2],r=e[3],i=e[4],o=e[5],a=e[6];return[bt(t,e[7],n,r,i,o,a),_e.utcInstance]}var xt=st(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,g),Ct=st(/(\d{4})-?W(\d\d)(?:-?(\d))?/,g),Zt=st(/(\d{4})-?(\d{3})/,g),Ft=st(n),Lt=ct(yt,vt,pt),At=ct(p,vt,pt),zt=ct(w,vt,pt),jt=ct(vt,pt);var qt=ct(vt);var _t=st(/(\d{4})-(\d\d)-(\d\d)/,he),Ut=st(dt),Rt=ct(yt,vt,pt,gt),Ht=ct(vt,pt,gt);var w={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},Pt=u({years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6}},w),he=365.2425,dt=30.436875,Wt=u({years:{quarters:4,months:12,weeks:he/7,days:he,hours:24*he,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:he/28,days:he/4,hours:24*he/4,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:dt/7,days:dt,hours:24*dt,minutes:43829.1,seconds:2629746,milliseconds:2629746e3}},w),Jt=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Yt=Jt.slice(0).reverse();function Gt(e,t,n){e={values:(n=void 0===n?!1:n)?t.values:u({},e.values,t.values||{}),loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy};return new Bt(e)}function $t(e,t,n,r,i){var o=e[i][n],a=t[n]/o,a=!(Math.sign(a)===Math.sign(r[i]))&&0!==r[i]&&Math.abs(a)<=1?(e=a)<0?Math.floor(e):Math.ceil(e):Math.trunc(a);r[i]+=a,t[n]-=a*o}var Bt=function(){function m(e){var t="longterm"===e.conversionAccuracy||!1;this.values=e.values,this.loc=e.loc||ut.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=t?Wt:Pt,this.isLuxonDuration=!0}m.fromMillis=function(e,t){return m.fromObject({milliseconds:e},t)},m.fromObject=function(e,t){if(void 0===t&&(t={}),null==e||"object"!=typeof e)throw new v("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new m({values:le(e,m.normalizeUnit),loc:ut.fromObject(t),conversionAccuracy:t.conversionAccuracy})},m.fromISO=function(e,t){var n=lt(e,[kt,St])[0];return n?m.fromObject(n,t):m.invalid("unparsable",'the input "'+e+"\" can't be parsed as ISO 8601")},m.fromISOTime=function(e,t){var n=lt(e,[wt,qt])[0];return n?m.fromObject(n,t):m.invalid("unparsable",'the input "'+e+"\" can't be parsed as ISO 8601")},m.invalid=function(e,t){if(void 0===t&&(t=null),!e)throw new v("need to specify a reason the Duration is invalid");var n=e instanceof Ie?e:new Ie(e,t);if($e.throwOnInvalid)throw new h(n);return new m({invalid:n})},m.normalizeUnit=function(e){var t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!t)throw new y(e);return t},m.isDuration=function(e){return e&&e.isLuxonDuration||!1};var e=m.prototype;return e.toFormat=function(e,t){t=u({},t=void 0===t?{}:t,{floor:!1!==t.round&&!1!==t.floor});return this.isValid?Ve.create(this.loc,t).formatDurationFromString(this,e):"Invalid Duration"},e.toObject=function(){return this.isValid?u({},this.values):{}},e.toISO=function(){if(!this.isValid)return null;var e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=ee(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e},e.toISOTime=function(e){if(void 0===e&&(e={}),!this.isValid)return null;var t=this.toMillis();if(t<0||864e5<=t)return null;e=u({suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended"},e);var n=this.shiftTo("hours","minutes","seconds","milliseconds"),t="basic"===e.format?"hhmm":"hh:mm";e.suppressSeconds&&0===n.seconds&&0===n.milliseconds||(t+="basic"===e.format?"ss":":ss",e.suppressMilliseconds&&0===n.milliseconds||(t+=".SSS"));t=n.toFormat(t);return t=e.includePrefix?"T"+t:t},e.toJSON=function(){return this.toISO()},e.toString=function(){return this.toISO()},e.toMillis=function(){return this.as("milliseconds")},e.valueOf=function(){return this.toMillis()},e.plus=function(e){if(!this.isValid)return this;for(var t=Qt(e),n={},r=k(Jt);!(i=r()).done;){var i=i.value;($(t.values,i)||$(this.values,i))&&(n[i]=t.get(i)+this.get(i))}return Gt(this,{values:n},!0)},e.minus=function(e){if(!this.isValid)return this;e=Qt(e);return this.plus(e.negate())},e.mapUnits=function(e){if(!this.isValid)return this;for(var t={},n=0,r=Object.keys(this.values);n<r.length;n++){var i=r[n];t[i]=ce(e(this.values[i],i))}return Gt(this,{values:t},!0)},e.get=function(e){return this[m.normalizeUnit(e)]},e.set=function(e){return this.isValid?Gt(this,{values:u({},this.values,le(e,m.normalizeUnit))}):this},e.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,e=t.numberingSystem,t=t.conversionAccuracy,e={loc:this.loc.clone({locale:n,numberingSystem:e})};return t&&(e.conversionAccuracy=t),Gt(this,e)},e.as=function(e){return this.isValid?this.shiftTo(e).get(e):NaN},e.normalize=function(){if(!this.isValid)return this;var n,r,e=this.toObject();return n=this.matrix,r=e,Yt.reduce(function(e,t){return P(r[t])?e:(e&&$t(n,r,e,r,t),t)},null),Gt(this,{values:e},!0)},e.shiftTo=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!this.isValid)return this;if(0===t.length)return this;for(var r,t=t.map(function(e){return m.normalizeUnit(e)}),i={},o={},a=this.toObject(),u=k(Jt);!(h=u()).done;){var s=h.value;if(0<=t.indexOf(s)){var c,l=s,f=0;for(c in o)f+=this.matrix[c][s]*o[c],o[c]=0;W(a[s])&&(f+=a[s]);var d,h=Math.trunc(f);for(d in i[s]=h,o[s]=f-h,a)Jt.indexOf(d)>Jt.indexOf(s)&&$t(this.matrix,a,d,i,s)}else W(a[s])&&(o[s]=a[s])}for(r in o)0!==o[r]&&(i[l]+=r===l?o[r]:o[r]/this.matrix[l][r]);return Gt(this,{values:i},!0).normalize()},e.negate=function(){if(!this.isValid)return this;for(var e={},t=0,n=Object.keys(this.values);t<n.length;t++){var r=n[t];e[r]=-this.values[r]}return Gt(this,{values:e},!0)},e.equals=function(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(var t,n,r=k(Jt);!(i=r()).done;){var i=i.value;if(t=this.values[i],n=e.values[i],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1}return!0},o(m,[{key:"locale",get:function(){return this.isValid?this.loc.locale:null}},{key:"numberingSystem",get:function(){return this.isValid?this.loc.numberingSystem:null}},{key:"years",get:function(){return this.isValid?this.values.years||0:NaN}},{key:"quarters",get:function(){return this.isValid?this.values.quarters||0:NaN}},{key:"months",get:function(){return this.isValid?this.values.months||0:NaN}},{key:"weeks",get:function(){return this.isValid?this.values.weeks||0:NaN}},{key:"days",get:function(){return this.isValid?this.values.days||0:NaN}},{key:"hours",get:function(){return this.isValid?this.values.hours||0:NaN}},{key:"minutes",get:function(){return this.isValid?this.values.minutes||0:NaN}},{key:"seconds",get:function(){return this.isValid?this.values.seconds||0:NaN}},{key:"milliseconds",get:function(){return this.isValid?this.values.milliseconds||0:NaN}},{key:"isValid",get:function(){return null===this.invalid}},{key:"invalidReason",get:function(){return this.invalid?this.invalid.reason:null}},{key:"invalidExplanation",get:function(){return this.invalid?this.invalid.explanation:null}}]),m}();function Qt(e){if(W(e))return Bt.fromMillis(e);if(Bt.isDuration(e))return e;if("object"==typeof e)return Bt.fromObject(e);throw new v("Unknown duration argument "+e+" of type "+typeof e)}var Kt="Invalid Interval";var Xt=function(){function c(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}c.invalid=function(e,t){if(void 0===t&&(t=null),!e)throw new v("need to specify a reason the Interval is invalid");var n=e instanceof Ie?e:new Ie(e,t);if($e.throwOnInvalid)throw new d(n);return new c({invalid:n})},c.fromDateTimes=function(e,t){var n=nr(e),r=nr(t),e=(e=r,(t=n)&&t.isValid?e&&e.isValid?e<t?Xt.invalid("end before start","The end of an interval must be after its start, but you had start="+t.toISO()+" and end="+e.toISO()):null:Xt.invalid("missing or invalid end"):Xt.invalid("missing or invalid start"));return null==e?new c({start:n,end:r}):e},c.after=function(e,t){t=Qt(t),e=nr(e);return c.fromDateTimes(e,e.plus(t))},c.before=function(e,t){t=Qt(t),e=nr(e);return c.fromDateTimes(e.minus(t),e)},c.fromISO=function(e,t){var n,r,i,o=(e||"").split("/",2),a=o[0],u=o[1];if(a&&u){try{s=(n=tr.fromISO(a,t)).isValid}catch(u){s=!1}try{i=(r=tr.fromISO(u,t)).isValid}catch(u){i=!1}if(s&&i)return c.fromDateTimes(n,r);if(s){var s=Bt.fromISO(u,t);if(s.isValid)return c.after(n,s)}else if(i){t=Bt.fromISO(a,t);if(t.isValid)return c.before(r,t)}}return c.invalid("unparsable",'the input "'+e+"\" can't be parsed as ISO 8601")},c.isInterval=function(e){return e&&e.isLuxonInterval||!1};var e=c.prototype;return e.length=function(e){return void 0===e&&(e="milliseconds"),this.isValid?this.toDuration.apply(this,[e]).get(e):NaN},e.count=function(e){if(!this.isValid)return NaN;var t=this.start.startOf(e=void 0===e?"milliseconds":e),n=this.end.startOf(e);return Math.floor(n.diff(t,e).get(e))+1},e.hasSame=function(e){return!!this.isValid&&(this.isEmpty()||this.e.minus(1).hasSame(this.s,e))},e.isEmpty=function(){return this.s.valueOf()===this.e.valueOf()},e.isAfter=function(e){return!!this.isValid&&this.s>e},e.isBefore=function(e){return!!this.isValid&&this.e<=e},e.contains=function(e){return!!this.isValid&&(this.s<=e&&this.e>e)},e.set=function(e){var t=void 0===e?{}:e,e=t.start,t=t.end;return this.isValid?c.fromDateTimes(e||this.s,t||this.e):this},e.splitAt=function(){var t=this;if(!this.isValid)return[];for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];for(var i=n.map(nr).filter(function(e){return t.contains(e)}).sort(),o=[],a=this.s,u=0;a<this.e;){var s=i[u]||this.e,s=+s>+this.e?this.e:s;o.push(c.fromDateTimes(a,s)),a=s,u+=1}return o},e.splitBy=function(e){var t=Qt(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];for(var n=this.s,r=1,i=[];n<this.e;){var o=this.start.plus(t.mapUnits(function(e){return e*r})),o=+o>+this.e?this.e:o;i.push(c.fromDateTimes(n,o)),n=o,r+=1}return i},e.divideEqually=function(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]},e.overlaps=function(e){return this.e>e.s&&this.s<e.e},e.abutsStart=function(e){return!!this.isValid&&+this.e==+e.s},e.abutsEnd=function(e){return!!this.isValid&&+e.e==+this.s},e.engulfs=function(e){return!!this.isValid&&(this.s<=e.s&&this.e>=e.e)},e.equals=function(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))},e.intersection=function(e){if(!this.isValid)return this;var t=(this.s>e.s?this:e).s,e=(this.e<e.e?this:e).e;return e<=t?null:c.fromDateTimes(t,e)},e.union=function(e){if(!this.isValid)return this;var t=(this.s<e.s?this:e).s,e=(this.e>e.e?this:e).e;return c.fromDateTimes(t,e)},c.merge=function(e){var t=e.sort(function(e,t){return e.s-t.s}).reduce(function(e,t){var n=e[0],e=e[1];return e?e.overlaps(t)||e.abutsStart(t)?[n,e.union(t)]:[n.concat([e]),t]:[n,t]},[[],null]),e=t[0],t=t[1];return t&&e.push(t),e},c.xor=function(e){for(var t=null,n=0,r=[],i=e.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),o=k((e=Array.prototype).concat.apply(e,i).sort(function(e,t){return e.time-t.time}));!(a=o()).done;)var a=a.value,t=1===(n+="s"===a.type?1:-1)?a.time:(t&&+t!=+a.time&&r.push(c.fromDateTimes(t,a.time)),null);return c.merge(r)},e.difference=function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return c.xor([this].concat(n)).map(function(e){return t.intersection(e)}).filter(function(e){return e&&!e.isEmpty()})},e.toString=function(){return this.isValid?"["+this.s.toISO()+" – "+this.e.toISO()+")":Kt},e.toISO=function(e){return this.isValid?this.s.toISO(e)+"/"+this.e.toISO(e):Kt},e.toISODate=function(){return this.isValid?this.s.toISODate()+"/"+this.e.toISODate():Kt},e.toISOTime=function(e){return this.isValid?this.s.toISOTime(e)+"/"+this.e.toISOTime(e):Kt},e.toFormat=function(e,t){t=(void 0===t?{}:t).separator,t=void 0===t?" – ":t;return this.isValid?""+this.s.toFormat(e)+t+this.e.toFormat(e):Kt},e.toDuration=function(e,t){return this.isValid?this.e.diff(this.s,e,t):Bt.invalid(this.invalidReason)},e.mapEndpoints=function(e){return c.fromDateTimes(e(this.s),e(this.e))},o(c,[{key:"start",get:function(){return this.isValid?this.s:null}},{key:"end",get:function(){return this.isValid?this.e:null}},{key:"isValid",get:function(){return null===this.invalidReason}},{key:"invalidReason",get:function(){return this.invalid?this.invalid.reason:null}},{key:"invalidExplanation",get:function(){return this.invalid?this.invalid.explanation:null}}]),c}(),en=function(){function e(){}return e.hasDST=function(e){void 0===e&&(e=$e.defaultZone);var t=tr.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset},e.isValidIANAZone=function(e){return je.isValidSpecifier(e)&&je.isValidZone(e)},e.normalizeZone=function(e){return Re(e,$e.defaultZone)},e.months=function(e,t){void 0===e&&(e="long");var n=void 0===t?{}:t,r=n.locale,i=n.numberingSystem,t=n.locObj,t=void 0===t?null:t,n=n.outputCalendar;return(t||ut.create(void 0===r?null:r,void 0===i?null:i,void 0===n?"gregory":n)).months(e)},e.monthsFormat=function(e,t){void 0===e&&(e="long");var n=void 0===t?{}:t,r=n.locale,i=n.numberingSystem,t=n.locObj,t=void 0===t?null:t,n=n.outputCalendar;return(t||ut.create(void 0===r?null:r,void 0===i?null:i,void 0===n?"gregory":n)).months(e,!0)},e.weekdays=function(e,t){void 0===e&&(e="long");var n=void 0===t?{}:t,r=n.locale,t=n.numberingSystem,n=n.locObj;return((void 0===n?null:n)||ut.create(void 0===r?null:r,void 0===t?null:t,null)).weekdays(e)},e.weekdaysFormat=function(e,t){void 0===e&&(e="long");var n=void 0===t?{}:t,r=n.locale,t=n.numberingSystem,n=n.locObj;return((void 0===n?null:n)||ut.create(void 0===r?null:r,void 0===t?null:t,null)).weekdays(e,!0)},e.meridiems=function(e){e=(void 0===e?{}:e).locale;return ut.create(void 0===e?null:e).meridiems()},e.eras=function(e,t){void 0===e&&(e="short");t=(void 0===t?{}:t).locale;return ut.create(void 0===t?null:t,null,"gregory").eras(e)},e.features=function(){return{relative:Y()}},e}();function tn(e,t){function n(e){return e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf()}e=n(t)-n(e);return Math.floor(Bt.fromMillis(e).as("days"))}function nn(e,t,n,r){var i=function(e,t,n){for(var r={},i=0,o=[["years",function(e,t){return t.year-e.year}],["quarters",function(e,t){return t.quarter-e.quarter}],["months",function(e,t){return t.month-e.month+12*(t.year-e.year)}],["weeks",function(e,t){t=tn(e,t);return(t-t%7)/7}],["days",tn]];i<o.length;i++){var a,u,s=o[i],c=s[0],l=s[1];0<=n.indexOf(c)&&(a=c,s=l(e,t),t<(u=e.plus(((l={})[c]=s,l)))?(e=e.plus(((l={})[c]=s-1,l)),--s):e=u,r[c]=s)}return[e,r,u,a]}(e,t,n),o=i[0],a=i[1],u=i[2],e=i[3],i=t-o,n=n.filter(function(e){return 0<=["hours","minutes","seconds","milliseconds"].indexOf(e)});0===n.length&&(u=u<t?o.plus(((t={})[e]=1,t)):u)!==o&&(a[e]=(a[e]||0)+i/(u-o));a=Bt.fromObject(a,r);return 0<n.length?(r=Bt.fromMillis(i,r)).shiftTo.apply(r,n).plus(a):a}var rn={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[０-９]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},on={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},an=rn.hanidec.replace(/[\[|\]]/g,"").split("");function un(e,t){e=e.numberingSystem;return void 0===t&&(t=""),new RegExp(""+rn[e||"latn"]+t)}var sn="missing Intl.DateTimeFormat.formatToParts support";function cn(e,t){return void 0===t&&(t=function(e){return e}),{regex:e,deser:function(e){e=e[0];return t(function(e){var t=parseInt(e,10);if(isNaN(t)){for(var t="",n=0;n<e.length;n++){var r=e.charCodeAt(n);if(-1!==e[n].search(rn.hanidec))t+=an.indexOf(e[n]);else for(var i in on){var o=on[i],i=o[0],o=o[1];i<=r&&r<=o&&(t+=r-i)}}return parseInt(t,10)}return t}(e))}}}var ln="( |"+String.fromCharCode(160)+")",fn=new RegExp(ln,"g");function dn(e){return e.replace(/\./g,"\\.?").replace(fn,ln)}function hn(e){return e.replace(/\./g,"").replace(fn," ").toLowerCase()}function mn(n,r){return null===n?null:{regex:RegExp(n.map(dn).join("|")),deser:function(e){var t=e[0];return n.findIndex(function(e){return hn(t)===hn(e)})+r}}}function yn(e,t){return{regex:e,deser:function(e){return se(e[1],e[2])},groups:t}}function vn(e){return{regex:e,deser:function(e){return e[0]}}}function pn(t,n){function r(e){return{regex:RegExp(e.val.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")),deser:function(e){return e[0]},literal:!0}}var i=un(n),o=un(n,"{2}"),a=un(n,"{3}"),u=un(n,"{4}"),s=un(n,"{6}"),c=un(n,"{1,2}"),l=un(n,"{1,3}"),f=un(n,"{1,6}"),d=un(n,"{1,9}"),h=un(n,"{2,4}"),m=un(n,"{4,6}"),e=function(e){if(t.literal)return r(e);switch(e.val){case"G":return mn(n.eras("short",!1),0);case"GG":return mn(n.eras("long",!1),0);case"y":return cn(f);case"yy":return cn(h,ae);case"yyyy":return cn(u);case"yyyyy":return cn(m);case"yyyyyy":return cn(s);case"M":return cn(c);case"MM":return cn(o);case"MMM":return mn(n.months("short",!0,!1),1);case"MMMM":return mn(n.months("long",!0,!1),1);case"L":return cn(c);case"LL":return cn(o);case"LLL":return mn(n.months("short",!1,!1),1);case"LLLL":return mn(n.months("long",!1,!1),1);case"d":return cn(c);case"dd":return cn(o);case"o":return cn(l);case"ooo":return cn(a);case"HH":return cn(o);case"H":return cn(c);case"hh":return cn(o);case"h":return cn(c);case"mm":return cn(o);case"m":case"q":return cn(c);case"qq":return cn(o);case"s":return cn(c);case"ss":return cn(o);case"S":return cn(l);case"SSS":return cn(a);case"u":return vn(d);case"a":return mn(n.meridiems(),0);case"kkkk":return cn(u);case"kk":return cn(h,ae);case"W":return cn(c);case"WW":return cn(o);case"E":case"c":return cn(i);case"EEE":return mn(n.weekdays("short",!1,!1),1);case"EEEE":return mn(n.weekdays("long",!1,!1),1);case"ccc":return mn(n.weekdays("short",!0,!1),1);case"cccc":return mn(n.weekdays("long",!0,!1),1);case"Z":case"ZZ":return yn(new RegExp("([+-]"+c.source+")(?::("+o.source+"))?"),2);case"ZZZ":return yn(new RegExp("([+-]"+c.source+")("+o.source+")?"),2);case"z":return vn(/[a-z_+-/]{1,256}?/i);default:return r(e)}}(t)||{invalidReason:sn};return e.token=t,e}var gn={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};var wn=null;function kn(e,t){if(e.literal)return e;var i=Ve.macroTokenToFormatOpts(e.val);if(!i)return e;t=Ve.create(t,i).formatDateTimeParts(wn=wn||tr.fromMillis(1555555555555)).map(function(e){return n=i,r=(t=e).type,t=e.value,"literal"===r?{literal:!0,val:t}:(n=n[r],(r="object"==typeof(r=gn[r])?r[n]:r)?{literal:!1,val:r}:void 0);var t,n,r});return t.includes(void 0)?e:t}function Sn(t,e,n){var r,i=(c=Ve.parseFormat(n),r=t,(s=Array.prototype).concat.apply(s,c.map(function(e){return kn(e,r)}))),o=i.map(function(e){return pn(e,t)}),n=o.find(function(e){return e.invalidReason});if(n)return{input:e,tokens:i,invalidReason:n.invalidReason};var a,u,s,c=["^"+(s=o).map(function(e){return e.regex}).reduce(function(e,t){return e+"("+t.source+")"},"")+"$",s],n=c[1],o=RegExp(c[0],"i"),s=function(e,t,n){var r=e.match(t);if(r){var i,o,a,u={},s=1;for(i in n)$(n,i)&&(a=(o=n[i]).groups?o.groups+1:1,!o.literal&&o.token&&(u[o.token.val[0]]=o.deser(r.slice(s,s+a))),s+=a);return[r,u]}return[r,{}]}(e,o,n),c=s[0],n=s[1],s=n?(u=P((a=n).Z)?P(a.z)?null:je.create(a.z):new _e(a.Z),P(a.q)||(a.M=3*(a.q-1)+1),P(a.h)||(a.h<12&&1===a.a?a.h+=12:12===a.h&&0===a.a&&(a.h=0)),0===a.G&&a.y&&(a.y=-a.y),P(a.u)||(a.S=X(a.u)),[Object.keys(a).reduce(function(e,t){var n=function(e){switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}}(t);return n&&(e[n]=a[t]),e},{}),u]):[null,null],u=s[0],s=s[1];if($(n,"a")&&$(n,"H"))throw new S("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:i,regex:o,rawMatches:c,matches:n,result:u,zone:s}}var Tn=[0,31,59,90,120,151,181,212,243,273,304,334],bn=[0,31,60,91,121,152,182,213,244,274,305,335];function On(e,t){return new Ie("unit out of range","you specified "+t+" (of type "+typeof t+") as a "+e+", which is invalid")}function Mn(e,t,n){n=new Date(Date.UTC(e,t-1,n)).getUTCDay();return 0===n?7:n}function Nn(e,t,n){return n+(te(e)?bn:Tn)[t-1]}function Dn(e,t){var n=te(e)?bn:Tn,e=n.findIndex(function(e){return e<t});return{month:e+1,day:t-n[e]}}function En(e){var t,n=e.year,r=e.month,i=e.day,o=Nn(n,r,i),i=Mn(n,r,i),o=Math.floor((o-i+10)/7);return o<1?o=oe(t=n-1):o>oe(n)?(t=n+1,o=1):t=n,u({weekYear:t,weekNumber:o,weekday:i},de(e))}function Vn(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=Mn(n,1,4),a=ne(n),o=7*r+i-o-3;o<1?o+=ne(t=n-1):a<o?(t=n+1,o-=ne(n)):t=n;o=Dn(t,o);return u({year:t,month:o.month,day:o.day},de(e))}function In(e){var t=e.year;return u({year:t,ordinal:Nn(t,e.month,e.day)},de(e))}function xn(e){var t=e.year,n=Dn(t,e.ordinal);return u({year:t,month:n.month,day:n.day},de(e))}function Cn(e){var t=J(e.year),n=B(e.month,1,12),r=B(e.day,1,re(e.year,e.month));return t?n?!r&&On("day",e.day):On("month",e.month):On("year",e.year)}function Zn(e){var t=e.hour,n=e.minute,r=e.second,i=e.millisecond,o=B(t,0,23)||24===t&&0===n&&0===r&&0===i,a=B(n,0,59),u=B(r,0,59),e=B(i,0,999);return o?a?u?!e&&On("millisecond",i):On("second",r):On("minute",n):On("hour",t)}var Fn="Invalid DateTime";function Ln(e){return new Ie("unsupported zone",'the zone "'+e.name+'" is not supported')}function An(e){return null===e.weekData&&(e.weekData=En(e.c)),e.weekData}function zn(e,t){e={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new tr(u({},e,t,{old:e}))}function jn(e,t,n){var r=e-60*t*1e3,i=n.offset(r);if(t===i)return[r,t];t=n.offset(r-=60*(i-t)*1e3);return i===t?[r,i]:[e-60*Math.min(i,t)*1e3,Math.max(i,t)]}function qn(e,t){e+=60*t*1e3;e=new Date(e);return{year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate(),hour:e.getUTCHours(),minute:e.getUTCMinutes(),second:e.getUTCSeconds(),millisecond:e.getUTCMilliseconds()}}function _n(e,t,n){return jn(ie(e),t,n)}function Un(e,t){var n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),i=u({},e.c,{year:r,month:i,day:Math.min(e.c.day,re(r,i))+Math.trunc(t.days)+7*Math.trunc(t.weeks)}),t=Bt.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),i=jn(ie(i),n,e.zone),n=i[0],i=i[1];return 0!==t&&(i=e.zone.offset(n+=t)),{ts:n,o:i}}function Rn(e,t,n,r,i){var o=n.setZone,a=n.zone;if(e&&0!==Object.keys(e).length){t=tr.fromObject(e,u({},n,{zone:t||a,setZone:void 0}));return o?t:t.setZone(a)}return tr.invalid(new Ie("unparsable",'the input "'+i+"\" can't be parsed as "+r))}function Hn(e,t,n){return void 0===n&&(n=!0),e.isValid?Ve.create(ut.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Pn(e,t){var n=t.suppressSeconds,r=t.suppressMilliseconds,i=t.includeOffset,o=t.includePrefix,a=void 0!==o&&o,u=t.includeZone,s=void 0!==u&&u,o=t.spaceZone,u=t.format,t=void 0===u?"extended":u,u="basic"===t?"HHmm":"HH:mm";void 0!==n&&n&&0===e.second&&0===e.millisecond||(u+="basic"===t?"ss":":ss",void 0!==r&&r&&0===e.millisecond||(u+=".SSS")),(s||i)&&(void 0!==o&&o)&&(u+=" "),s?u+="z":i&&(u+="basic"===t?"ZZZ":"ZZ");u=Hn(e,u);return u=a?"T"+u:u}var Wn={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Jn={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Yn={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Gn=["year","month","day","hour","minute","second","millisecond"],$n=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Bn=["year","ordinal","hour","minute","second","millisecond"];function Qn(e){var t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new y(e);return t}function Kn(e,t){var n=Re(t.zone,$e.defaultZone),r=ut.fromObject(t),t=$e.now();if(P(e.year))u=t;else{for(var i=k(Gn);!(o=i()).done;){var o=o.value;P(e[o])&&(e[o]=Wn[o])}var a=Cn(e)||Zn(e);if(a)return tr.invalid(a);var a=_n(e,n.offset(t),n),u=a[0],a=a[1]}return new tr({ts:u,zone:n,loc:r,o:a})}function Xn(t,n,r){function e(e,t){return e=ee(e,o||r.calendary?0:2,!0),n.loc.clone(r).relFormatter(r).format(e,t)}function i(e){return r.calendary?n.hasSame(t,e)?0:n.startOf(e).diff(t.startOf(e),e).get(e):n.diff(t,e).get(e)}var o=!!P(r.round)||r.round;if(r.unit)return e(i(r.unit),r.unit);for(var a=k(r.units);!(s=a()).done;){var u=s.value,s=i(u);if(1<=Math.abs(s))return e(s,u)}return e(n<t?-0:0,r.units[r.units.length-1])}function er(e){var t={},e=0<e.length&&"object"==typeof e[e.length-1]?(t=e[e.length-1],Array.from(e).slice(0,e.length-1)):Array.from(e);return[t,e]}var tr=function(){function w(e){var t=e.zone||$e.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Ie("invalid input"):null)||(t.isValid?null:Ln(t));this.ts=P(e.ts)?$e.now():e.ts;var r,i=null,o=null;n||(o=e.old&&e.old.ts===this.ts&&e.old.zone.equals(t)?(i=(r=[e.old.c,e.old.o])[0],r[1]):(r=t.offset(this.ts),i=qn(this.ts,r),i=(n=Number.isNaN(i.year)?new Ie("invalid input"):null)?null:i,n?null:r)),this._zone=t,this.loc=e.loc||ut.create(),this.invalid=n,this.weekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}w.now=function(){return new w({})},w.local=function(){var e=er(arguments),t=e[0],e=e[1];return Kn({year:e[0],month:e[1],day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]},t)},w.utc=function(){var e=er(arguments),t=e[0],n=e[1],r=n[0],i=n[1],o=n[2],a=n[3],u=n[4],e=n[5],n=n[6];return t.zone=_e.utcInstance,Kn({year:r,month:i,day:o,hour:a,minute:u,second:e,millisecond:n},t)},w.fromJSDate=function(e,t){void 0===t&&(t={});var n="[object Date]"===Object.prototype.toString.call(e)?e.valueOf():NaN;if(Number.isNaN(n))return w.invalid("invalid input");e=Re(t.zone,$e.defaultZone);return e.isValid?new w({ts:n,zone:e,loc:ut.fromObject(t)}):w.invalid(Ln(e))},w.fromMillis=function(e,t){if(void 0===t&&(t={}),W(e))return e<-864e13||864e13<e?w.invalid("Timestamp out of range"):new w({ts:e,zone:Re(t.zone,$e.defaultZone),loc:ut.fromObject(t)});throw new v("fromMillis requires a numerical input, but received a "+typeof e+" with value "+e)},w.fromSeconds=function(e,t){if(void 0===t&&(t={}),W(e))return new w({ts:1e3*e,zone:Re(t.zone,$e.defaultZone),loc:ut.fromObject(t)});throw new v("fromSeconds requires a numerical input")},w.fromObject=function(e,t){e=e||{};var n=Re((t=void 0===t?{}:t).zone,$e.defaultZone);if(!n.isValid)return w.invalid(Ln(n));var r=$e.now(),i=n.offset(r),o=le(e,Qn),a=!P(o.ordinal),u=!P(o.year),s=!P(o.month)||!P(o.day),c=u||s,u=o.weekYear||o.weekNumber,t=ut.fromObject(t);if((c||a)&&u)throw new S("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(s&&a)throw new S("Can't mix ordinal dates with month/day");var l,u=u||o.weekday&&!c,f=qn(r,i);u?(p=$n,l=Jn,f=En(f)):a?(p=Bn,l=Yn,f=In(f)):(p=Gn,l=Wn);for(var d=!1,h=k(p);!(m=h()).done;){var m=m.value;P(o[m])?o[m]=(d?l:f)[m]:d=!0}var y,v,p,g,y=(u?(r=J((v=o).weekYear),p=B(v.weekNumber,1,oe(v.weekYear)),g=B(v.weekday,1,7),r?p?!g&&On("weekday",v.weekday):On("week",v.week):On("weekYear",v.weekYear)):a?(g=J((y=o).year),v=B(y.ordinal,1,ne(y.year)),g?!v&&On("ordinal",y.ordinal):On("year",y.year)):Cn(o))||Zn(o);if(y)return w.invalid(y);i=_n(u?Vn(o):a?xn(o):o,i,n),t=new w({ts:i[0],zone:n,o:i[1],loc:t});return o.weekday&&c&&e.weekday!==t.weekday?w.invalid("mismatched weekday","you can't specify both a weekday of "+o.weekday+" and a date of "+t.toISO()):t},w.fromISO=function(e,t){void 0===t&&(t={});var n=lt(e,[xt,Lt],[Ct,At],[Zt,zt],[Ft,jt]);return Rn(n[0],n[1],t,"ISO 8601",e)},w.fromRFC2822=function(e,t){void 0===t&&(t={});var n=lt(e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim(),[Ot,Mt]);return Rn(n[0],n[1],t,"RFC 2822",e)},w.fromHTTP=function(e,t){void 0===t&&(t={});e=lt(e,[Nt,Vt],[Dt,Vt],[Et,It]);return Rn(e[0],e[1],t,"HTTP",t)},w.fromFormat=function(e,t,n){if(void 0===n&&(n={}),P(e)||P(t))throw new v("fromFormat requires an input string and a format");var r=n,i=r.locale,o=r.numberingSystem,r=ut.fromOpts({locale:void 0===i?null:i,numberingSystem:void 0===o?null:o,defaultToEN:!0}),o=[(i=Sn(r,e,i=t)).result,i.zone,i.invalidReason],r=o[0],i=o[1],o=o[2];return o?w.invalid(o):Rn(r,i,n,"format "+t,e)},w.fromString=function(e,t,n){return w.fromFormat(e,t,n=void 0===n?{}:n)},w.fromSQL=function(e,t){void 0===t&&(t={});var n=lt(e,[_t,Rt],[Ut,Ht]);return Rn(n[0],n[1],t,"SQL",e)},w.invalid=function(e,t){if(void 0===t&&(t=null),!e)throw new v("need to specify a reason the DateTime is invalid");var n=e instanceof Ie?e:new Ie(e,t);if($e.throwOnInvalid)throw new f(n);return new w({invalid:n})},w.isDateTime=function(e){return e&&e.isLuxonDateTime||!1};var e=w.prototype;return e.get=function(e){return this[e]},e.resolvedLocaleOptions=function(e){e=Ve.create(this.loc.clone(e=void 0===e?{}:e),e).resolvedOptions(this);return{locale:e.locale,numberingSystem:e.numberingSystem,outputCalendar:e.calendar}},e.toUTC=function(e,t){return void 0===t&&(t={}),this.setZone(_e.instance(e=void 0===e?0:e),t)},e.toLocal=function(){return this.setZone($e.defaultZone)},e.setZone=function(e,t){var n=void 0===t?{}:t,r=n.keepLocalTime,t=void 0!==r&&r,r=n.keepCalendarTime,n=void 0!==r&&r;if((e=Re(e,$e.defaultZone)).equals(this.zone))return this;if(e.isValid){r=this.ts;return(t||n)&&(n=e.offset(this.ts),r=_n(this.toObject(),n,e)[0]),zn(this,{ts:r,zone:e})}return w.invalid(Ln(e))},e.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,e=t.numberingSystem,t=t.outputCalendar,t=this.loc.clone({locale:n,numberingSystem:e,outputCalendar:t});return zn(this,{loc:t})},e.setLocale=function(e){return this.reconfigure({locale:e})},e.set=function(e){if(!this.isValid)return this;var t=le(e,Qn),n=!P(t.weekYear)||!P(t.weekNumber)||!P(t.weekday),r=!P(t.ordinal),i=!P(t.year),o=!P(t.month)||!P(t.day),e=t.weekYear||t.weekNumber;if((i||o||r)&&e)throw new S("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&r)throw new S("Can't mix ordinal dates with month/day");n?a=Vn(u({},En(this.c),t)):P(t.ordinal)?(a=u({},this.toObject(),t),P(t.day)&&(a.day=Math.min(re(a.year,a.month),a.day))):a=xn(u({},In(this.c),t));var a=_n(a,this.o,this.zone);return zn(this,{ts:a[0],o:a[1]})},e.plus=function(e){return this.isValid?zn(this,Un(this,Qt(e))):this},e.minus=function(e){return this.isValid?zn(this,Un(this,Qt(e).negate())):this},e.startOf=function(e){if(!this.isValid)return this;var t={},e=Bt.normalizeUnit(e);switch(e){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}return"weeks"===e&&(t.weekday=1),"quarters"===e&&(e=Math.ceil(this.month/3),t.month=3*(e-1)+1),this.set(t)},e.endOf=function(e){var t;return this.isValid?this.plus(((t={})[e]=1,t)).startOf(e).minus(1):this},e.toFormat=function(e,t){return void 0===t&&(t={}),this.isValid?Ve.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Fn},e.toLocaleString=function(e,t){return void 0===e&&(e=T),void 0===t&&(t={}),this.isValid?Ve.create(this.loc.clone(t),e).formatDateTime(this):Fn},e.toLocaleParts=function(e){return void 0===e&&(e={}),this.isValid?Ve.create(this.loc.clone(e),e).formatDateTimeParts(this):[]},e.toISO=function(e){return void 0===e&&(e={}),this.isValid?this.toISODate(e)+"T"+this.toISOTime(e):null},e.toISODate=function(e){e=(void 0===e?{}:e).format,e="basic"===(void 0===e?"extended":e)?"yyyyMMdd":"yyyy-MM-dd";return Hn(this,e=9999<this.year?"+"+e:e)},e.toISOWeekDate=function(){return Hn(this,"kkkk-'W'WW-c")},e.toISOTime=function(e){var t=void 0===e?{}:e,n=t.suppressMilliseconds,r=t.suppressSeconds,i=t.includeOffset,e=t.includePrefix,t=t.format;return Pn(this,{suppressSeconds:void 0!==r&&r,suppressMilliseconds:void 0!==n&&n,includeOffset:void 0===i||i,includePrefix:void 0!==e&&e,format:void 0===t?"extended":t})},e.toRFC2822=function(){return Hn(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)},e.toHTTP=function(){return Hn(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")},e.toSQLDate=function(){return Hn(this,"yyyy-MM-dd")},e.toSQLTime=function(e){var t=void 0===e?{}:e,e=t.includeOffset,t=t.includeZone;return Pn(this,{includeOffset:void 0===e||e,includeZone:void 0!==t&&t,spaceZone:!0})},e.toSQL=function(e){return void 0===e&&(e={}),this.isValid?this.toSQLDate()+" "+this.toSQLTime(e):null},e.toString=function(){return this.isValid?this.toISO():Fn},e.valueOf=function(){return this.toMillis()},e.toMillis=function(){return this.isValid?this.ts:NaN},e.toSeconds=function(){return this.isValid?this.ts/1e3:NaN},e.toJSON=function(){return this.toISO()},e.toBSON=function(){return this.toJSDate()},e.toObject=function(e){if(void 0===e&&(e={}),!this.isValid)return{};var t=u({},this.c);return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t},e.toJSDate=function(){return new Date(this.isValid?this.ts:NaN)},e.diff=function(e,t,n){if(void 0===t&&(t="milliseconds"),void 0===n&&(n={}),!this.isValid||!e.isValid)return Bt.invalid("created by diffing an invalid DateTime");var r=u({locale:this.locale,numberingSystem:this.numberingSystem},n),t=(n=t,(Array.isArray(n)?n:[n]).map(Bt.normalizeUnit)),n=e.valueOf()>this.valueOf(),r=nn(n?this:e,n?e:this,t,r);return n?r.negate():r},e.diffNow=function(e,t){return void 0===e&&(e="milliseconds"),void 0===t&&(t={}),this.diff(w.now(),e,t)},e.until=function(e){return this.isValid?Xt.fromDateTimes(this,e):this},e.hasSame=function(e,t){if(!this.isValid)return!1;var n=e.valueOf(),e=this.setZone(e.zone,{keepLocalTime:!0});return e.startOf(t)<=n&&n<=e.endOf(t)},e.equals=function(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)},e.toRelative=function(e){if(!this.isValid)return null;var t=(e=void 0===e?{}:e).base||w.fromObject({},{zone:this.zone}),n=e.padding?this<t?-e.padding:e.padding:0,r=["years","months","days","hours","minutes","seconds"],i=e.unit;return Array.isArray(e.unit)&&(r=e.unit,i=void 0),Xn(t,this.plus(n),u({},e,{numeric:"always",units:r,unit:i}))},e.toRelativeCalendar=function(e){return void 0===e&&(e={}),this.isValid?Xn(e.base||w.fromObject({},{zone:this.zone}),this,u({},e,{numeric:"auto",units:["years","months","days"],calendary:!0})):null},w.min=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!t.every(w.isDateTime))throw new v("min requires all arguments be DateTimes");return G(t,function(e){return e.valueOf()},Math.min)},w.max=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!t.every(w.isDateTime))throw new v("max requires all arguments be DateTimes");return G(t,function(e){return e.valueOf()},Math.max)},w.fromFormatExplain=function(e,t,n){var r=n=void 0===n?{}:n,n=r.locale,r=r.numberingSystem;return Sn(ut.fromOpts({locale:void 0===n?null:n,numberingSystem:void 0===r?null:r,defaultToEN:!0}),e,t)},w.fromStringExplain=function(e,t,n){return w.fromFormatExplain(e,t,n=void 0===n?{}:n)},o(w,[{key:"isValid",get:function(){return null===this.invalid}},{key:"invalidReason",get:function(){return this.invalid?this.invalid.reason:null}},{key:"invalidExplanation",get:function(){return this.invalid?this.invalid.explanation:null}},{key:"locale",get:function(){return this.isValid?this.loc.locale:null}},{key:"numberingSystem",get:function(){return this.isValid?this.loc.numberingSystem:null}},{key:"outputCalendar",get:function(){return this.isValid?this.loc.outputCalendar:null}},{key:"zone",get:function(){return this._zone}},{key:"zoneName",get:function(){return this.isValid?this.zone.name:null}},{key:"year",get:function(){return this.isValid?this.c.year:NaN}},{key:"quarter",get:function(){return this.isValid?Math.ceil(this.c.month/3):NaN}},{key:"month",get:function(){return this.isValid?this.c.month:NaN}},{key:"day",get:function(){return this.isValid?this.c.day:NaN}},{key:"hour",get:function(){return this.isValid?this.c.hour:NaN}},{key:"minute",get:function(){return this.isValid?this.c.minute:NaN}},{key:"second",get:function(){return this.isValid?this.c.second:NaN}},{key:"millisecond",get:function(){return this.isValid?this.c.millisecond:NaN}},{key:"weekYear",get:function(){return this.isValid?An(this).weekYear:NaN}},{key:"weekNumber",get:function(){return this.isValid?An(this).weekNumber:NaN}},{key:"weekday",get:function(){return this.isValid?An(this).weekday:NaN}},{key:"ordinal",get:function(){return this.isValid?In(this.c).ordinal:NaN}},{key:"monthShort",get:function(){return this.isValid?en.months("short",{locObj:this.loc})[this.month-1]:null}},{key:"monthLong",get:function(){return this.isValid?en.months("long",{locObj:this.loc})[this.month-1]:null}},{key:"weekdayShort",get:function(){return this.isValid?en.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}},{key:"weekdayLong",get:function(){return this.isValid?en.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}},{key:"offset",get:function(){return this.isValid?+this.o:NaN}},{key:"offsetNameShort",get:function(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}},{key:"offsetNameLong",get:function(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}},{key:"isOffsetFixed",get:function(){return this.isValid?this.zone.isUniversal:null}},{key:"isInDST",get:function(){return!this.isOffsetFixed&&(this.offset>this.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return te(this.year)}},{key:"daysInMonth",get:function(){return re(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?ne(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?oe(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return T}},{key:"DATE_MED",get:function(){return b}},{key:"DATE_MED_WITH_WEEKDAY",get:function(){return O}},{key:"DATE_FULL",get:function(){return M}},{key:"DATE_HUGE",get:function(){return N}},{key:"TIME_SIMPLE",get:function(){return D}},{key:"TIME_WITH_SECONDS",get:function(){return E}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return V}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return I}},{key:"TIME_24_SIMPLE",get:function(){return x}},{key:"TIME_24_WITH_SECONDS",get:function(){return C}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return Z}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return F}},{key:"DATETIME_SHORT",get:function(){return L}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return A}},{key:"DATETIME_MED",get:function(){return z}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return j}},{key:"DATETIME_MED_WITH_WEEKDAY",get:function(){return q}},{key:"DATETIME_FULL",get:function(){return _}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return U}},{key:"DATETIME_HUGE",get:function(){return R}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return H}}]),w}();function nr(e){if(tr.isDateTime(e))return e;if(e&&e.valueOf&&W(e.valueOf()))return tr.fromJSDate(e);if(e&&"object"==typeof e)return tr.fromObject(e);throw new v("Unknown datetime argument: "+e+", of type "+typeof e)}return e.DateTime=tr,e.Duration=Bt,e.FixedOffsetZone=_e,e.IANAZone=je,e.Info=en,e.Interval=Xt,e.InvalidZone=Ue,e.Settings=$e,e.SystemZone=Ze,e.VERSION="2.0.1",e.Zone=xe,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
(function ($) {
    $.fn.isOnScreen = function (container, edge) {
        var t;

        //if (typeof jQuery === "function"
        if (this instanceof jQuery) t = this[0];
        else t = this;

        if (container && container instanceof jQuery)
            container = container[0];

        var box = t.getBoundingClientRect();
        var win = document.body.getBoundingClientRect();

        if (container) {
            win = container.getBoundingClientRect();
        }

        var topEdgeInRange = box.top >= 0 && box.top <= win.bottom;
        var bottomEdgeInRange = box.bottom >= 0 && box.bottom <= win.bottom;
        var leftEdgeInRange = box.left >= 0 && box.left <= win.right;
        var rightEdgeInRange = box.right >= 0 && box.right <= win.right;

        var isInRange = true;
        if (!edge)
            isInRange = topEdgeInRange && bottomEdgeInRange && leftEdgeInRange && rightEdgeInRange;
        else {
            if (edge.top) isInRange &= topEdgeInRange;
            if (edge.bottom) isInRange &= bottomEdgeInRange;
            if (edge.right) isInRange &= rightEdgeInRange;
            if (edge.left) isInRange &= leftEdgeInRange;
        }
        return isInRange;
    };
})(jQuery);

/*
 * ScrollToFixed
 * https://github.com/bigspotteddog/ScrollToFixed
 *
 * Copyright (c) 2011 Joseph Cava-Lynch
 * MIT license
 *
 * *********************************************************************************************************************************************
 * RQL Note:  WARNING!!!  This library has been customized for RQL use.  When updating do not do a straight copy/paste, perform a diff instead!
 * *********************************************************************************************************************************************
 */
(function ($) {
    $.isScrollToFixed = function (el) {
        return !!$(el).data('ScrollToFixed');
    };

    $.ScrollToFixed = function (el, options) {
        // To avoid scope issues, use 'base' instead of 'this' to reference this
        // class from internal events and functions.
        var base = this;

        // Access to jQuery and DOM versions of element.
        base.$el = $(el);
        base.el = el;

        // Add a reverse reference to the DOM object.
        base.$el.data('ScrollToFixed', base);

        // A flag so we know if the scroll has been reset.
        var isReset = false;

        // The element that was given to us to fix if scrolled above the top of
        // the page.
        var target = base.$el;

        var position;
        var originalPosition;
        var originalFloat;
        var originalOffsetTop;
        var originalZIndex;

        // The offset top of the element when resetScroll was called. This is
        // used to determine if we have scrolled past the top of the element.
        var offsetTop = 0;

        // The offset left of the element when resetScroll was called. This is
        // used to move the element left or right relative to the horizontal
        // scroll.
        var offsetLeft = 0;
        var originalOffsetLeft = -1;

        // This last offset used to move the element horizontally. This is used
        // to determine if we need to move the element because we would not want
        // to do that for no reason.
        var lastOffsetLeft = -1;

        // This is the element used to fill the void left by the target element
        // when it goes fixed; otherwise, everything below it moves up the page.
        var spacer = null;

        var spacerClass;

        var className;

        // Capture the original offsets for the target element. This needs to be
        // called whenever the page size changes or when the page is first
        // scrolled. For some reason, calling this before the page is first
        // scrolled causes the element to become fixed too late.
        function resetScroll() {
            // Set the element to it original positioning.
            target.trigger('preUnfixed.ScrollToFixed');
            setUnfixed();
            target.trigger('unfixed.ScrollToFixed');

            // Reset the last offset used to determine if the page has moved
            // horizontally.
            lastOffsetLeft = -1;

            // Capture the offset top of the target element.
            offsetTop = target.offset().top;

            // Capture the offset left of the target element.
            offsetLeft = target.offset().left;

            // If the offsets option is on, alter the left offset.
            if (base.options.offsets) {
                offsetLeft += (target.offset().left - target.position().left);
            }

            if (originalOffsetLeft == -1) {
                originalOffsetLeft = offsetLeft;
            }

            position = target.css('position');

            // Set that this has been called at least once.
            isReset = true;

            if (base.options.bottom != -1) {
                target.trigger('preFixed.ScrollToFixed');
                setFixed();
                target.trigger('fixed.ScrollToFixed');
            }
        }

        function getLimit() {
            var limit = base.options.limit;
            if (!limit) return 0;

            if (typeof (limit) === 'function') {
                return limit.apply(target);
            }
            return limit;
        }

        // Returns whether the target element is fixed or not.
        function isFixed() {
            return position === 'fixed';
        }

        // Returns whether the target element is absolute or not.
        function isAbsolute() {
            return position === 'absolute';
        }

        function isUnfixed() {
            return !(isFixed() || isAbsolute());
        }

        // Sets the target element to fixed. Also, sets the spacer to fill the
        // void left by the target element.
        function setFixed() {
            // Only fix the target element and the spacer if we need to.
            if (!isFixed()) {
                //get REAL dimensions (decimal fix)
                //Ref. http://stackoverflow.com/questions/3603065/how-to-make-jquery-to-not-round-value-returned-by-width
                var dimensions = target[0].getBoundingClientRect();

                // Set the spacer to fill the height and width of the target
                // element, then display it.
                spacer.css({
                    'display': target.css('display'),
                    'width': dimensions.width,
                    'height': dimensions.height,
                    'float': target.css('float')
                });

                // Set the target element to fixed and set its width so it does
                // not fill the rest of the page horizontally. Also, set its top
                // to the margin top specified in the options.

                cssOptions = {
                    'z-index': base.options.zIndex,
                    'position': 'fixed',
                    'top': base.options.bottom == -1 ? getMarginTop() : '',
                    'bottom': base.options.bottom == -1 ? '' : base.options.bottom,
                    'margin-left': '0px'
                }
                if (!base.options.dontSetWidth) { cssOptions['width'] = target.css('width'); };
                if (base.options.showWhenTriggered) { cssOptions['width'] = '100%'; };

                target.css(cssOptions);

                target.addClass(base.options.baseClassName);

                if (base.options.className) {
                    target.addClass(base.options.className);
                }

                position = 'fixed';
            }
        }

        function setAbsolute() {

            var top = getLimit();
            var left = offsetLeft;

            if (base.options.removeOffsets) {
                left = '';
                top = top - offsetTop;
            }

            cssOptions = {
                'position': 'absolute',
                'top': top,
                'left': left,
                'margin-left': '0px',
                'bottom': ''
            }
            if (!base.options.dontSetWidth) { cssOptions['width'] = target.css('width'); };

            target.css(cssOptions);

            position = 'absolute';
        }

        // Sets the target element back to unfixed. Also, hides the spacer.
        function setUnfixed() {
            // Only unfix the target element and the spacer if we need to.
            if (!isUnfixed()) {
                lastOffsetLeft = -1;

                // Hide the spacer now that the target element will fill the
                // space.
                spacer.css('display', 'none');

                // Remove the style attributes that were added to the target.
                // This will reverse the target back to the its original style.
                target.css({
                    'z-index': originalZIndex,
                    'width': '',
                    'position': originalPosition,
                    'left': '',
                    'top': originalOffsetTop,
                    'margin-left': ''
                });

                target.removeClass('scroll-to-fixed-fixed');

                if (base.options.className) {
                    target.removeClass(base.options.className);
                }

                position = null;
            }
        }

        // Moves the target element left or right relative to the horizontal
        // scroll position.
        function setLeft(x) {
            // Only if the scroll is not what it was last time we did this.
            if (x != lastOffsetLeft) {
                // Move the target element horizontally relative to its original
                // horizontal position.
                target.css('left', offsetLeft - x);

                // Hold the last horizontal position set.
                lastOffsetLeft = x;
            }
        }

        function getMarginTop() {
            var marginTop = base.options.marginTop;
            if (!marginTop) return 0;

            if (typeof (marginTop) === 'function') {
                return marginTop.apply(target);
            }
            return marginTop;
        }

        // Checks to see if we need to do something based on new scroll position
        // of the page.
        function checkScroll() {
            if (!$.isScrollToFixed(target) || (target.is(':hidden') && !base.options.showWhenTriggered)) return;
            var wasReset = isReset;
            var wasUnfixed = isUnfixed();

            // If resetScroll has not yet been called, call it. This only
            // happens once.
            if (!isReset) {
                resetScroll();
            } else if (isUnfixed()) {
                // if the offset has changed since the last scroll,
                // we need to get it again.

                // Capture the offset top of the target element.
                offsetTop = target.offset().top;

                // Capture the offset left of the target element.
                offsetLeft = target.offset().left;
            }

            // Grab the current horizontal scroll position.
            var x = $(window).scrollLeft();

            // Grab the current vertical scroll position.
            var y = $(window).scrollTop();

            // Get the limit, if there is one.
            var limit = getLimit();

            // If the vertical scroll position, plus the optional margin, would
            // put the target element at the specified limit, set the target
            // element to absolute.
            if (base.options.minWidth && $(window).width() < base.options.minWidth) {
                if (!isUnfixed() || !wasReset) {
                    postPosition();
                    target.trigger('preUnfixed.ScrollToFixed');
                    setUnfixed();
                    target.trigger('unfixed.ScrollToFixed');
                }
            } else if (base.options.maxWidth && $(window).width() > base.options.maxWidth) {
                if (!isUnfixed() || !wasReset) {
                    postPosition();
                    target.trigger('preUnfixed.ScrollToFixed');
                    setUnfixed();
                    target.trigger('unfixed.ScrollToFixed');
                }
            } else if (base.options.bottom == -1) {
                // If the vertical scroll position, plus the optional margin, would
                // put the target element at the specified limit, set the target
                // element to absolute.
                if (limit > 0 && y >= limit - getMarginTop()) {
                    if (!wasUnfixed && (!isAbsolute() || !wasReset)) {
                        postPosition();
                        target.trigger('preAbsolute.ScrollToFixed');
                        setAbsolute();
                        target.trigger('unfixed.ScrollToFixed');
                    }
                    // If the vertical scroll position, plus the optional margin, would
                    // put the target element above the top of the page, set the target
                    // element to fixed.
                } else if (y >= offsetTop - getMarginTop()) {
                    if (!isFixed() || !wasReset) {
                        if (base.options.onFixPosition) {
                            if (!base.options.onFixPosition()) return;
                        }
                        postPosition();
                        target.trigger('preFixed.ScrollToFixed');

                        // Set the target element to fixed.
                        setFixed();

                        // Reset the last offset left because we just went fixed.
                        lastOffsetLeft = -1;

                        target.trigger('fixed.ScrollToFixed');
                    }
                    // If the page has been scrolled horizontally as well, move the
                    // target element accordingly.
                    setLeft(x);
                } else {
                    // Set the target element to unfixed, placing it where it was
                    // before.
                    if (!isUnfixed() || !wasReset) {
                        if (base.options.onUnFixPosition) {
                            base.options.onUnFixPosition(function() {
                                postPosition();
                                target.trigger('preUnfixed.ScrollToFixed');
                                setUnfixed();
                                target.trigger('unfixed.ScrollToFixed');
                            });
                        } else {
                            postPosition();
                            target.trigger('preUnfixed.ScrollToFixed');
                            setUnfixed();
                            target.trigger('unfixed.ScrollToFixed');
                        }
                    }
                }
            } else {
                if (limit > 0) {
                    if (y + $(window).height() - target.outerHeight(true) >= limit - (getMarginTop() || -getBottom())) {
                        if (isFixed()) {
                            postPosition();
                            target.trigger('preUnfixed.ScrollToFixed');

                            if (originalPosition === 'absolute') {
                                setAbsolute();
                            } else {
                                setUnfixed();
                            }

                            target.trigger('unfixed.ScrollToFixed');
                        }
                    } else {
                        if (!isFixed()) {
                            postPosition();
                            target.trigger('preFixed.ScrollToFixed');
                            setFixed();
                        }
                        setLeft(x);
                        target.trigger('fixed.ScrollToFixed');
                    }
                } else {
                    setLeft(x);
                }
            }
        }

        function getBottom() {
            if (!base.options.bottom) return 0;
            return base.options.bottom;
        }

        function postPosition() {
            var position = target.css('position');

            if (position == 'absolute') {
                target.trigger('postAbsolute.ScrollToFixed');
            } else if (position == 'fixed') {
                target.trigger('postFixed.ScrollToFixed');
            } else {
                target.trigger('postUnfixed.ScrollToFixed');
            }
        }

        var windowResize = function (event) {
            // Check if the element is visible before updating it's position, which
            // improves behavior with responsive designs where this element is hidden.
            if (target.is(':visible')) {
                isReset = false;
                checkScroll();
            } else {
                // Ensure the spacer is hidden
                setUnfixed();
            }
        }

        var windowScroll = function (event) {
            (!!window.requestAnimationFrame) ? requestAnimationFrame(checkScroll) : checkScroll();
        }

        // From: http://kangax.github.com/cft/#IS_POSITION_FIXED_SUPPORTED
        var isPositionFixedSupported = function () {
            var container = document.body;

            if (document.createElement && container && container.appendChild && container.removeChild) {
                var el = document.createElement('div');

                if (!el.getBoundingClientRect) return null;

                el.innerHTML = 'x';
                el.style.cssText = 'position:fixed;top:100px;';
                container.appendChild(el);

                var originalHeight = container.style.height,
                originalScrollTop = container.scrollTop;

                container.style.height = '3000px';
                container.scrollTop = 500;

                var elementTop = el.getBoundingClientRect().top;
                container.style.height = originalHeight;

                var isSupported = (elementTop === 100);
                container.removeChild(el);
                container.scrollTop = originalScrollTop;

                return isSupported;
            }

            return null;
        }

        var preventDefault = function (e) {
            e = e || window.event;
            if (e.preventDefault) {
                e.preventDefault();
            }
            e.returnValue = false;
        }

        // Initializes this plugin. Captures the options passed in, turns this
        // off for devices that do not support fixed position, adds the spacer,
        // and binds to the window scroll and resize events.
        base.init = function () {
            // Capture the options for this plugin.
            base.options = $.extend({}, $.ScrollToFixed.defaultOptions, options);

            originalZIndex = target.css('z-index')

            // Turn off this functionality for devices that do not support it.
            // if (!(base.options && base.options.dontCheckForPositionFixedSupport)) {
            //     var fixedSupported = isPositionFixedSupported();
            //     if (!fixedSupported) return;
            // }

            // Put the target element on top of everything that could be below
            // it. This reduces flicker when the target element is transitioning
            // to fixed.
            base.$el.css('z-index', base.options.zIndex);

            // Create a spacer element to fill the void left by the target
            // element when it goes fixed.
            spacer = $('<div />');

            position = target.css('position');
            originalPosition = target.css('position');
            originalFloat = target.css('float');
            originalOffsetTop = target.css('top');

            // Place the spacer right after the target element.
            if (!base.options.showWhenTriggered && base.options.bottom === -1 && isUnfixed()) base.$el.after(spacer);

            // Reset the target element offsets when the window is resized, then
            // check to see if we need to fix or unfix the target element.
            $(window).bind('resize.ScrollToFixed', windowResize);

            // When the window scrolls, check to see if we need to fix or unfix
            // the target element.
            $(window).bind('scroll.ScrollToFixed', windowScroll);

            // For touch devices, call checkScroll directlly rather than
            // rAF wrapped windowScroll to animate the element
            if ('ontouchmove' in window) {
                $(window).bind('touchmove.ScrollToFixed', checkScroll);
            }

            if (base.options.preFixed) {
                target.bind('preFixed.ScrollToFixed', base.options.preFixed);
            }
            if (base.options.postFixed) {
                target.bind('postFixed.ScrollToFixed', base.options.postFixed);
            }
            if (base.options.preUnfixed) {
                target.bind('preUnfixed.ScrollToFixed', base.options.preUnfixed);
            }
            if (base.options.postUnfixed) {
                target.bind('postUnfixed.ScrollToFixed', base.options.postUnfixed);
            }
            if (base.options.preAbsolute) {
                target.bind('preAbsolute.ScrollToFixed', base.options.preAbsolute);
            }
            if (base.options.postAbsolute) {
                target.bind('postAbsolute.ScrollToFixed', base.options.postAbsolute);
            }
            if (base.options.fixed) {
                target.bind('fixed.ScrollToFixed', base.options.fixed);
            }
            if (base.options.unfixed) {
                target.bind('unfixed.ScrollToFixed', base.options.unfixed);
            }

            if (base.options.spacerClass) {
                spacer.addClass(base.options.spacerClass);
            }

            target.bind('resize.ScrollToFixed', function () {
                spacer.height(target.height());
            });

            target.bind('scroll.ScrollToFixed', function () {
                target.trigger('preUnfixed.ScrollToFixed');
                setUnfixed();
                target.trigger('unfixed.ScrollToFixed');
                checkScroll();
            });

            target.bind('detach.ScrollToFixed', function (ev) {
                preventDefault(ev);

                target.trigger('preUnfixed.ScrollToFixed');
                setUnfixed();
                target.trigger('unfixed.ScrollToFixed');

                $(window).unbind('resize.ScrollToFixed', windowResize);
                $(window).unbind('scroll.ScrollToFixed', windowScroll);

                target.unbind('.ScrollToFixed');

                //remove spacer from dom
                spacer.remove();

                base.$el.removeData('ScrollToFixed');
            });

            // Reset everything.
            windowResize();
        };

        // Initialize the plugin.
        base.init();
    };

    // Sets the option defaults.
    $.ScrollToFixed.defaultOptions = {
        marginTop: 0,
        limit: 0,
        bottom: -1,
        zIndex: 1000,
        baseClassName: 'scroll-to-fixed-fixed'
    };

    // Returns enhanced elements that will fix to the top of the page when the
    // page is scrolled.
    $.fn.scrollToFixed = function (options) {
        return this.each(function () {
            (new $.ScrollToFixed(this, options));
        });
    };
})(jQuery);
!function (e) { function n() { } function t(e, n) { return function () { e.apply(n, arguments) } } function o(e) { if ("object" != typeof this) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof e) throw new TypeError("not a function"); this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], s(e, this) } function i(e, n) { for (; 3 === e._state;) e = e._value; return 0 === e._state ? void e._deferreds.push(n) : (e._handled = !0, void o._immediateFn(function () { var t = 1 === e._state ? n.onFulfilled : n.onRejected; if (null === t) return void (1 === e._state ? r : u)(n.promise, e._value); var o; try { o = t(e._value) } catch (i) { return void u(n.promise, i) } r(n.promise, o) })) } function r(e, n) { try { if (n === e) throw new TypeError("A promise cannot be resolved with itself."); if (n && ("object" == typeof n || "function" == typeof n)) { var i = n.then; if (n instanceof o) return e._state = 3, e._value = n, void f(e); if ("function" == typeof i) return void s(t(i, n), e) } e._state = 1, e._value = n, f(e) } catch (r) { u(e, r) } } function u(e, n) { e._state = 2, e._value = n, f(e) } function f(e) { 2 === e._state && 0 === e._deferreds.length && o._immediateFn(function () { e._handled || o._unhandledRejectionFn(e._value) }); for (var n = 0, t = e._deferreds.length; n < t; n++) i(e, e._deferreds[n]); e._deferreds = null } function c(e, n, t) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof n ? n : null, this.promise = t } function s(e, n) { var t = !1; try { e(function (e) { t || (t = !0, r(n, e)) }, function (e) { t || (t = !0, u(n, e)) }) } catch (o) { if (t) return; t = !0, u(n, o) } } var a = setTimeout; o.prototype["catch"] = function (e) { return this.then(null, e) }, o.prototype.then = function (e, t) { var o = new this.constructor(n); return i(this, new c(e, t, o)), o }, o.all = function (e) { var n = Array.prototype.slice.call(e); return new o(function (e, t) { function o(r, u) { try { if (u && ("object" == typeof u || "function" == typeof u)) { var f = u.then; if ("function" == typeof f) return void f.call(u, function (e) { o(r, e) }, t) } n[r] = u, 0 === --i && e(n) } catch (c) { t(c) } } if (0 === n.length) return e([]); for (var i = n.length, r = 0; r < n.length; r++) o(r, n[r]) }) }, o.resolve = function (e) { return e && "object" == typeof e && e.constructor === o ? e : new o(function (n) { n(e) }) }, o.reject = function (e) { return new o(function (n, t) { t(e) }) }, o.race = function (e) { return new o(function (n, t) { for (var o = 0, i = e.length; o < i; o++) e[o].then(n, t) }) }, o._immediateFn = "function" == typeof setImmediate && function (e) { setImmediate(e) } || function (e) { a(e, 0) }, o._unhandledRejectionFn = function (e) { "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e) }, o._setImmediateFn = function (e) { o._immediateFn = e }, o._setUnhandledRejectionFn = function (e) { o._unhandledRejectionFn = e }, "undefined" != typeof module && module.exports ? module.exports = o : e.Promise || (e.Promise = o) }(this);
/*	jQuery.flexMenu 1.4.2
	https://github.com/352Media/flexMenu
	Description: If a list is too long for all items to fit on one line, display a popup menu instead.
	Dependencies: jQuery, Modernizr (optional). Without Modernizr, the menu can only be shown on click (not hover). 
    
    WARNING: this library has been customized for RQL use.  When updating to newer version perform DIFF instead of straight copy/pasting.    
*/

(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['jquery'], factory);
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {
    var windowWidth = $(window).width(); // Store the window width
    var windowHeight = $(window).height(); // Store the window height
    var flexObjects = [], // Array of all flexMenu objects
		resizeTimeout;
    // When the page is resized, adjust the flexMenus.
    function adjustFlexMenu() {
        if ($(window).width() !== windowWidth || $(window).height() !== windowHeight) {
            $(flexObjects).each(function () {
                $(this).flexMenu({
                    'undo': true
                }).flexMenu(this.options);
            });
            windowWidth = $(window).width(); // Store the window width if it changed
            windowHeight = $(window).height(); // Store the window height if it changed
        }
    }
    function collapseAllExcept($menuToAvoid) {
        var $activeMenus = $('li.flexMenu-viewMore.active');
        var $menusToCollapse = $activeMenus.not($menuToAvoid);
        $menusToCollapse.removeClass('active').find('> ul').hide();
    }
    $(window).resize(function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(function () {
            adjustFlexMenu();
        }, 200);
    });

    $.fn.flexMenu = function (options) {
        var s = $.extend({
			    'threshold': 2, // [integer] If there are this many items or fewer in the list, we will not display a "View More" link and will instead let the list break to the next line. This is useful in cases where adding a "view more" link would actually cause more things to break  to the next line.
			    'cutoff': 2, // [integer] If there is space for this many or fewer items outside our "more" popup, just move everything into the more menu. In that case, also use linkTextAll and linkTitleAll instead of linkText and linkTitle. To disable this feature, just set this value to 0.
			    'linkText': 'More', // [string] What text should we display on the "view more" link?
			    'linkTitle': 'View More', // [string] What should the title of the "view more" button be?
			    'linkTextAll': 'Menu', // [string] If we hit the cutoff, what text should we display on the "view more" link?
			    'linkTitleAll': 'Open/Close Menu', // [string] If we hit the cutoff, what should the title of the "view more" button be?
			    'showOnHover': true, // [boolean] Should we we show the menu on hover? If not, we'll require a click. If we're on a touch device - or if Modernizr is not available - we'll ignore this setting and only show the menu on click. The reason for this is that touch devices emulate hover events in unpredictable ways, causing some taps to do nothing.
			    'popupAbsolute': true, // [boolean] Should we absolutely position the popup? Usually this is a good idea. That way, the popup can appear over other content and spill outside a parent that has overflow: hidden set. If you want to do something different from this in CSS, just set this option to false.
			    'popupClass': '', // [string] If this is set, this class will be added to the popup
			    'undo': false // [boolean] Move the list items back to where they were before, and remove the "View More" link.
			}, options);
        this.options = s; // Set options on object
        var checkFlexObject = $.inArray(this, flexObjects); // Checks if this object is already in the flexObjects array
        if (checkFlexObject >= 0) {
            flexObjects.splice(checkFlexObject, 1); // Remove this object if found
        } else {
            flexObjects.push(this); // Add this object to the flexObjects array
        }
        return this.each(function () {
            var $this = $(this),
				$items = $this.find('> li'),
				$firstItem = $items.first(),
				$lastItem = $items.last(),
				numItems = $this.find('li').length,
				firstItemTop = Math.floor($firstItem.offset().top),
				firstItemHeight = Math.floor($firstItem.outerHeight(true)),
				$lastChild,
				keepLooking,
				$moreItem,
				$moreLink,
				numToRemove,
				allInPopup = false,
				$menu,
				i;
            function needsMenu($itemOfInterest) {
                var result = (Math.ceil($itemOfInterest.offset().top) >= (firstItemTop + firstItemHeight)) ? true : false;
                // Values may be calculated from em and give us something other than round numbers. Browsers may round these inconsistently. So, let's round numbers to make it easier to trigger flexMenu.
                return result;
            }
            if (needsMenu($lastItem) && numItems > s.threshold && !s.undo && $this.is(':visible')) {
                var $popup = $('<ul class="flexMenu-popup" style="display:none;' + ((s.popupAbsolute) ? ' position: absolute;' : '') + '"></ul>');
                // Add class if popupClass option is set
                $popup.addClass(s.popupClass);
                // Move all list items after the first to this new popup ul
                for (i = numItems; i > 1; i--) {
                    // Find all of the list items that have been pushed below the first item. Put those items into the popup menu. Put one additional item into the popup menu to cover situations where the last item is shorter than the "more" text.
                    $lastChild = $this.find('> li:last-child');
                    keepLooking = (needsMenu($lastChild));
                    // If there only a few items left in the navigation bar, move them all to the popup menu.
                    if ((i - 1) <= s.cutoff) { // We've removed the ith item, so i - 1 gives us the number of items remaining.
                        $($this.children().get().reverse()).appendTo($popup);
                        allInPopup = true;
                        break;
                    }
                    if (!keepLooking) {
                        break;
                    } else {
                        $lastChild.appendTo($popup);
                    }
                }
                var $li,
                    dropdownHtml = '<i class="fas fa-chevron-down fa-sm ml-1 mb-px-3"></i>';
                if (allInPopup) {
                    $li = $('<li class="flexMenu-viewMore flexMenu-allInPopup"><a href="#" title="' + s.linkTitleAll + '" class="nav-link d-flex align-items-center justify-content-center">' + s.linkTextAll + dropdownHtml + '</a></li>');
                } else {
                    $li = $('<li class="flexMenu-viewMore"><a href="#" title="' + s.linkTitle + '" class="nav-link d-flex align-items-center justify-content-center">' + s.linkText + dropdownHtml + '</a></li>');
                }

                if (s.navitemCss) $li.addClass(s.navitemCss);
                $this.append($li);

                $moreItem = $this.find('> li.flexMenu-viewMore');
                // Check to see whether the more link has been pushed down. This might happen if the link immediately before it is especially wide.
                if (needsMenu($moreItem)) {
                    $this.find('> li:nth-last-child(2)').appendTo($popup);
                }
                // Our popup menu is currently in reverse order. Let's fix that.
                $popup.children().each(function (i, li) {
                    $popup.prepend(li);
                });
                $moreItem.append($popup);
                $moreLink = $this.find('> li.flexMenu-viewMore > a');
                $moreLink.click(function (e) {
                    //RQL edit: close any submenus before toggling
                    $(e.target).parent().find("ul").removeClass("show");
                    // Collapsing any other open flexMenu
                    collapseAllExcept($moreItem);
                    //Open and Set active the one being interacted with.
                    if (!$popup.is(":visible")) {
                        var rightEdgeOfWindow = $(window).width() + $(document).scrollLeft();
                        var rightEdgeOfMenu = $(e.target)[0].getBoundingClientRect().right;
                        //$popup.css("right", $f("{0}px", rightEdgeOfWindow - rightEdgeOfMenu));
                        $popup.css("right", "0");
                    }
                    $popup.toggle();
                    $moreItem.toggleClass('active');
                    e.preventDefault();
                    e.stopPropagation();
                });
                $moreItem.click(function (e) {
                    if ($(e.target).attr("data-toggle") !== "dropdown")
                        $popup.toggle();
                });
                if (s.showOnHover && (typeof window.Modernizr !== 'undefined') && !window.Modernizr.touch) { // If requireClick is false AND touch is unsupported, then show the menu on hover. If Modernizr is not available, assume that touch is unsupported. Through the magic of lazy evaluation, we can check for Modernizr and start using it in the same if statement. Reversing the order of these variables would produce an error.
                    $moreItem.hover(
						function () {
						    $popup.show();
						    $(this).addClass('active');
						},
						function () {
						    $popup.hide();
						    $(this).removeClass('active');
						});
                }
            } else if (s.undo && $this.find('ul.flexMenu-popup')) {
                $menu = $this.find('ul.flexMenu-popup');
                numToRemove = $menu.find('li').length;
                for (i = 1; i <= numToRemove; i++) {
                    $menu.find('> li:first-child').appendTo($this);
                }
                $menu.remove();
                $this.find('> li.flexMenu-viewMore').remove();
            }
        });
    };
}));
(function ($) {
    var StickyCss = function(element, options) {
        this.init("stickyCss", element, options);
    }

    StickyCss.prototype = {
        constructor: StickyCss,
        init: function (type, element, options) {
            this.type = type;
            this.$element = $(element);
            this.options = $.extend(options, $.fn[this.type].defaults, this.$element.data());

            var cssSettings = {
                "position": "sticky",
                "z-index": options.zIndex
            }

            if (this.options.position && (this.options.position === "FixedTop" || this.options.position === "FixedBottom")) {
                if (this.options.position === "FixedBottom") cssSettings["position"] = "fixed";  //if FixTop, use the sticky position instead.
                cssSettings[this.options.position === "FixedTop" ? "top" : "bottom"] = this.options.margin && !isNaN(this.options.margin)
                    ? this.options.margin + "px"
                    : "0";
            }

            this.$element.css(cssSettings);

            if (options.hideuntiltriggered) $(window).on('scroll.StickyCss', $.proxy(this.handleShowWhenTriggered, this));
        },
        handleShowWhenTriggered: function (event) {
            var self = this;
            $(window).doTimeout(250,
                function () {
                    var windowScroll = $(window).scrollTop();
                    if (!self.$element.is(":visible") && windowScroll > 0) {
                        self.$element.show();
                    } else if (self.$element.is(":visible") && windowScroll === 0)
                        self.$element.hide();
                });
        },
        destroy: function() {
            $(window).off('scroll.StickyCss', this.handleShowWhenTriggered);
        }
    }

    $.fn.stickyCss = function(options) {
        return this.each(function() {
            var $this = $(this),
                data = $this.data("stickyCss");
            if (!data) $this.data("stickyCss", (data = new StickyCss(this, options)));
            if (typeof options == "string" && data[options]) {
                data[options]();
            }
        });
    }

    $.fn.stickyCss.Constructor = StickyCss;
    $.fn.stickyCss.defaults = {
        zIndex: 1000
    }
}(jQuery));
/*
 * expanding-textareas 1.0.2
 * Copyright � 2011+ Brian Grinstead
 * Released under the MIT license
 * http://bgrins.github.com/ExpandingTextareas/
 *
 * IMPORTANT: this component has been customized for RQL use.  Only 1 change was made to the initial default settings ==> autoInitialize: false
 *
 */

(function() {
    'use strict';

    var userAgent = window.navigator.userAgent

    // Returns the version of Internet Explorer or -1
    // (indicating the use of another browser).
    // From: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx#ParsingUA
    var ieVersion = (function() {
        var version = -1
        if (window.navigator.appName === 'Microsoft Internet Explorer') {
            var regExp = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})')
            if (regExp.exec(userAgent) !== null) version = parseFloat(RegExp.$1)
        }
        return version
    })()

    // Check for oninput support
    // IE9 supports oninput, but not when deleting text, so keyup is used.
    // onpropertychange _is_ supported by IE8/9, but may not be fired unless
    // attached with `attachEvent`
    // (see: http://stackoverflow.com/questions/18436424/ie-onpropertychange-event-doesnt-fire),
    // and so is avoided altogether.
    var inputEventSupported = (
      'oninput' in document.createElement('input') && ieVersion !== 9
    )

    var inputEvent = inputEventSupported ? 'input' : 'keyup'

    var isIosDevice = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream

    function wrap(element, wrapper) {
        element.parentNode.insertBefore(wrapper, element)
        wrapper.appendChild(element)
    }

    function style(element, styles) {
        for (var property in styles) element.style[property] = styles[property]
    }

    function dispatch(eventName, options) {
        options = options || {}
        var event = document.createEvent('Event')
        event.initEvent(eventName, true, options.cancelable === true)
        event.data = options.data != null ? options.data : {}
        var target = options.target != null ? options.target : document
        target.dispatchEvent(event)
    }

    function warn(text) {
        if (window.console && console.warn) console.warn(text)
    }

    function Textarea(element) {
        this.element = element
        this._eventListeners = {}
    }

    Textarea.prototype = {
        style: function(styles) {
            style(this.element, styles)
        },

        styles: function() {
            return {
                position: 'absolute',
                top: 0,
                left: 0,
                height: '100%',
                resize: 'none',
                overflow: 'auto'
            }
        },

        value: function(value) {
            if (arguments.length === 0) {
                return this.element.value.replace(/\r\n/g, '\n')
            } else {
                this.element.value = value
            }
        },

        on: function(eventName, handler) {
            this.element.addEventListener(eventName, handler)
            this._eventListeners[eventName] = handler
        },

        off: function(eventName) {
            if (arguments.length === 0) {
                for (var event in this._eventListeners) { this.off(event) }
            } else {
                this.element.removeEventListener(
                  eventName,
                  this._eventListeners[eventName]
                )
                delete this._eventListeners[eventName]
            }
        },

        destroy: function() {
            this.element.setAttribute('style', this.oldStyleAttribute || '')
            this.off()
        }
    }

    var styleProperties = {
        borderBottomWidth: null,
        borderLeftWidth: null,
        borderRightWidth: null,
        borderTopWidth: null,
        direction: null,
        fontFamily: null,
        fontSize: null,
        fontSizeAdjust: null,
        fontStyle: null,
        fontWeight: null,
        letterSpacing: null,
        lineHeight: null,
        maxHeight: null,
        paddingBottom: null,
        paddingLeft: paddingHorizontal,
        paddingRight: paddingHorizontal,
        paddingTop: null,
        textAlign: null,
        textDecoration: null,
        textTransform: null,
        wordBreak: null,
        wordSpacing: null,
        wordWrap: null
    }

    function paddingHorizontal(computedStyle) {
        return isIosDevice ? (parseFloat(computedStyle) + 3) + 'px' : computedStyle
    }

    function TextareaClone() {
        this.element = document.createElement('pre')
        this.element.className = 'expanding-clone'
        this.innerElement = document.createElement('span')
        this.element.appendChild(this.innerElement)
        this.element.appendChild(document.createElement('br'))
    }

    TextareaClone.prototype = {
        value: function(value) {
            if (arguments.length === 0) return this.innerElement.textContent
            else this.innerElement.textContent = value
        },

        style: function(styles) {
            style(this.element, styles)
        },

        styles: function(textarea) {
            var wrap = textarea.getAttribute('wrap')
            var styles = {
                display: 'block',
                border: '0 solid',
                visibility: 'hidden',
                overflowX: wrap === 'off' ? 'scroll' : 'hidden',
                whiteSpace: wrap === 'off' ? 'pre' : 'pre-wrap'
            }

            var computedStyles = window.getComputedStyle(textarea)

            for (var property in styleProperties) {
                var valueFunction = styleProperties[property]
                var computedStyle = computedStyles[property]
                styles[property] = (
                  valueFunction ? valueFunction(computedStyle) : computedStyle
                )
            }

            return styles
        }
    }

    function Expanding(textarea) {
        this.element = createElement()
        this.textarea = new Textarea(textarea)
        this.textareaClone = new TextareaClone()
        this.textarea.oldStyleAttribute = textarea.getAttribute('style')
        resetStyles.call(this)
        setStyles.call(this)

        wrap(textarea, this.element)
        this.element.appendChild(this.textareaClone.element)

        var inputHandler = this.update.bind(this)
        this.textarea.on(inputEvent, inputHandler)
        this.textarea.on('change', inputHandler)

        this.update()
    }

    Expanding.prototype = {
        update: function() {
            this.textareaClone.value(this.textarea.value())
            dispatch('expanding:update', { target: this.textarea.element })
        },

        refresh: function() {
            setStyles.call(this)
        },

        destroy: function() {
            this.element.removeChild(this.textareaClone.element)
            this.element.parentNode.insertBefore(this.textarea.element, this.element)
            this.element.parentNode.removeChild(this.element)
            this.textarea.destroy()
        }
    }

    function createElement() {
        var element = document.createElement('div')
        element.className = 'expanding-wrapper'
        element.style.position = 'relative'
        return element
    }

    function resetStyles() {
        var styles = {
            margin: 0,
            webkitBoxSizing: 'border-box',
            mozBoxSizing: 'border-box',
            boxSizing: 'border-box',
            width: '100%'
        }
        // Should only be called once i.e. on initialization
        this.textareaClone.style({
            minHeight: this.textarea.element.offsetHeight + 'px'
        })
        this.textareaClone.style(styles)
        this.textarea.style(styles)
    }

    function setStyles() {
        this.textareaClone.style(this.textareaClone.styles(this.textarea.element))
        this.textarea.style(this.textarea.styles())
    }

    /* global jQuery, define */
    (function(factory) {
        if (typeof define === 'function' && define.amd) {
            define(['jquery'], factory)
        } else if (typeof module === 'object' && module.exports) {
            module.exports = function(root, jQuery) {
                if (jQuery === undefined) {
                    if (typeof window !== 'undefined') {
                        jQuery = require('jquery')
                    } else {
                        jQuery = require('jquery')(root)
                    }
                }
                factory(jQuery)
                return jQuery
            }
        } else {
            factory(jQuery)
        }
    }(function($) {
        function plugin(option) {
            if (option === 'active') return !!this.data('expanding')

            this.filter('textarea').each(function() {
                var $this = jQuery(this)
                var instance = $this.data('expanding')

                if (instance) {
                    switch (option) {
                        case 'destroy':
                            $this.removeData('expanding')
                            instance.destroy()
                            return
                        case 'refresh':
                            instance.refresh()
                            return
                        default:
                            return
                    }
                } else if (!(this.offsetWidth > 0 || this.offsetHeight > 0)) {
                    warn(
                      'ExpandingTextareas: attempt to initialize an invisible textarea. ' +
                      'Call expanding() again once it has been inserted into the page and/or is visible.'
                    )
                    return
                } else {
                    return $this.data('expanding', new Expanding(this))
                }
            })
            return this
        }

        var defaults = {
            autoInitialize: false,
            initialSelector: 'textarea.expanding'
        }
        $.expanding = $.extend({}, defaults, $.expanding || {})
        $.fn.expanding = plugin
        $.fn.expanding.Constructor = Expanding

        if ($.expanding.autoInitialize) {
            $(document).ready(function() {
                $($.expanding.initialSelector).expanding()
            })
        }
    }))

}());
'use strict';

/**
 * Copyright Marc J. Schmidt. See the LICENSE file at the top-level
 * directory of this distribution and at
 * https://github.com/marcj/css-element-queries/blob/master/LICENSE.
 */
(function (root, factory) {
    if (typeof define === "function" && define.amd) {
        define(factory);
    } else if (typeof exports === "object") {
        module.exports = factory();
    } else {
        root.ResizeSensor = factory();
    }
}(typeof window !== 'undefined' ? window : this, function () {

    // Make sure it does not throw in a SSR (Server Side Rendering) situation
    if (typeof window === "undefined") {
        return null;
    }
    // https://github.com/Semantic-Org/Semantic-UI/issues/3855
    // https://github.com/marcj/css-element-queries/issues/257
    var globalWindow = typeof window != 'undefined' && window.Math == Math
        ? window
        : typeof self != 'undefined' && self.Math == Math
            ? self
            : Function('return this')();
    // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.
    // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and
    // would generate too many unnecessary events.
    var requestAnimationFrame = globalWindow.requestAnimationFrame ||
        globalWindow.mozRequestAnimationFrame ||
        globalWindow.webkitRequestAnimationFrame ||
        function (fn) {
            return globalWindow.setTimeout(fn, 20);
        };

    var cancelAnimationFrame = globalWindow.cancelAnimationFrame ||
        globalWindow.mozCancelAnimationFrame ||
        globalWindow.webkitCancelAnimationFrame ||
        function (timer) {
            globalWindow.clearTimeout(timer);
        };

    /**
     * Iterate over each of the provided element(s).
     *
     * @param {HTMLElement|HTMLElement[]} elements
     * @param {Function}                  callback
     */
    function forEachElement(elements, callback){
        var elementsType = Object.prototype.toString.call(elements);
        var isCollectionTyped = ('[object Array]' === elementsType
            || ('[object NodeList]' === elementsType)
            || ('[object HTMLCollection]' === elementsType)
            || ('[object Object]' === elementsType)
            || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery
            || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools
        );
        var i = 0, j = elements.length;
        if (isCollectionTyped) {
            for (; i < j; i++) {
                callback(elements[i]);
            }
        } else {
            callback(elements);
        }
    }

    /**
    * Get element size
    * @param {HTMLElement} element
    * @returns {Object} {width, height}
    */
    function getElementSize(element) {
        if (!element.getBoundingClientRect) {
            return {
                width: element.offsetWidth,
                height: element.offsetHeight
            }
        }

        var rect = element.getBoundingClientRect();
        return {
            width: Math.round(rect.width),
            height: Math.round(rect.height)
        }
    }

    /**
     * Apply CSS styles to element.
     *
     * @param {HTMLElement} element
     * @param {Object} style
     */
    function setStyle(element, style) {
        Object.keys(style).forEach(function(key) {
            element.style[key] = style[key];
        });
    }

    /**
     * Class for dimension change detection.
     *
     * @param {Element|Element[]|Elements|jQuery} element
     * @param {Function} callback
     *
     * @constructor
     */
    var ResizeSensor = function(element, callback) {
        //Is used when checking in reset() only for invisible elements
        var lastAnimationFrameForInvisibleCheck = 0;

        /**
         *
         * @constructor
         */
        function EventQueue() {
            var q = [];
            this.add = function(ev) {
                q.push(ev);
            };

            var i, j;
            this.call = function(sizeInfo) {
                for (i = 0, j = q.length; i < j; i++) {
                    q[i].call(this, sizeInfo);
                }
            };

            this.remove = function(ev) {
                var newQueue = [];
                for(i = 0, j = q.length; i < j; i++) {
                    if(q[i] !== ev) newQueue.push(q[i]);
                }
                q = newQueue;
            };

            this.length = function() {
                return q.length;
            }
        }

        /**
         *
         * @param {HTMLElement} element
         * @param {Function}    resized
         */
        function attachResizeEvent(element, resized) {
            if (!element) return;
            if (element.resizedAttached) {
                element.resizedAttached.add(resized);
                return;
            }

            element.resizedAttached = new EventQueue();
            element.resizedAttached.add(resized);

            element.resizeSensor = document.createElement('div');
            element.resizeSensor.dir = 'ltr';
            element.resizeSensor.className = 'resize-sensor';

            var style = {
                pointerEvents: 'none',
                position: 'absolute',
                left: '0px',
                top: '0px',
                right: '0px',
                bottom: '0px',
                overflow: 'hidden',
                zIndex: '-1',
                visibility: 'hidden',
                maxWidth: '100%'
            };
            var styleChild = {
                position: 'absolute',
                left: '0px',
                top: '0px',
                transition: '0s',
            };

            setStyle(element.resizeSensor, style);

            var expand = document.createElement('div');
            expand.className = 'resize-sensor-expand';
            setStyle(expand, style);

            var expandChild = document.createElement('div');
            setStyle(expandChild, styleChild);
            expand.appendChild(expandChild);

            var shrink = document.createElement('div');
            shrink.className = 'resize-sensor-shrink';
            setStyle(shrink, style);

            var shrinkChild = document.createElement('div');
            setStyle(shrinkChild, styleChild);
            setStyle(shrinkChild, { width: '200%', height: '200%' });
            shrink.appendChild(shrinkChild);

            element.resizeSensor.appendChild(expand);
            element.resizeSensor.appendChild(shrink);
            element.appendChild(element.resizeSensor);

            var computedStyle = window.getComputedStyle(element);
            var position = computedStyle ? computedStyle.getPropertyValue('position') : null;
            if ('absolute' !== position && 'relative' !== position && 'fixed' !== position && 'sticky' !== position) {
                element.style.position = 'relative';
            }

            var dirty = false;

            //last request animation frame id used in onscroll event
            var rafId = 0;
            var size = getElementSize(element);
            var lastWidth = 0;
            var lastHeight = 0;
            var initialHiddenCheck = true;
            lastAnimationFrameForInvisibleCheck = 0;

            var resetExpandShrink = function () {
                var width = element.offsetWidth;
                var height = element.offsetHeight;

                expandChild.style.width = (width + 10) + 'px';
                expandChild.style.height = (height + 10) + 'px';

                expand.scrollLeft = width + 10;
                expand.scrollTop = height + 10;

                shrink.scrollLeft = width + 10;
                shrink.scrollTop = height + 10;
            };

            var reset = function() {
                // Check if element is hidden
                if (initialHiddenCheck) {
                    var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;
                    if (invisible) {
                        // Check in next frame
                        if (!lastAnimationFrameForInvisibleCheck){
                            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
                                lastAnimationFrameForInvisibleCheck = 0;
                                reset();
                            });
                        }

                        return;
                    } else {
                        // Stop checking
                        initialHiddenCheck = false;
                    }
                }

                resetExpandShrink();
            };
            element.resizeSensor.resetSensor = reset;

            var onResized = function() {
                rafId = 0;

                if (!dirty) return;

                lastWidth = size.width;
                lastHeight = size.height;

                if (element.resizedAttached) {
                    element.resizedAttached.call(size);
                }
            };

            var onScroll = function() {
                size = getElementSize(element);
                dirty = size.width !== lastWidth || size.height !== lastHeight;

                if (dirty && !rafId) {
                    rafId = requestAnimationFrame(onResized);
                }

                reset();
            };

            var addEvent = function(el, name, cb) {
                if (el.attachEvent) {
                    el.attachEvent('on' + name, cb);
                } else {
                    el.addEventListener(name, cb);
                }
            };

            addEvent(expand, 'scroll', onScroll);
            addEvent(shrink, 'scroll', onScroll);

            // Fix for custom Elements and invisible elements
            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
                lastAnimationFrameForInvisibleCheck = 0;
                reset();
            });
        }

        forEachElement(element, function(elem){
            attachResizeEvent(elem, callback);
        });

        this.detach = function(ev) {
            // clean up the unfinished animation frame to prevent a potential endless requestAnimationFrame of reset
            if (!lastAnimationFrameForInvisibleCheck) {
                cancelAnimationFrame(lastAnimationFrameForInvisibleCheck);
                lastAnimationFrameForInvisibleCheck = 0;
            }
            ResizeSensor.detach(element, ev);
        };

        this.reset = function() {
            element.resizeSensor.resetSensor();
        };
    };

    ResizeSensor.reset = function(element) {
        forEachElement(element, function(elem){
            elem.resizeSensor.resetSensor();
        });
    };

    ResizeSensor.detach = function(element, ev) {
        forEachElement(element, function(elem){
            if (!elem) return;
            if(elem.resizedAttached && typeof ev === "function"){
                elem.resizedAttached.remove(ev);
                if(elem.resizedAttached.length()) return;
            }
            if (elem.resizeSensor) {
                if (elem.contains(elem.resizeSensor)) {
                    elem.removeChild(elem.resizeSensor);
                }
                delete elem.resizeSensor;
                delete elem.resizedAttached;
            }
        });
    };

    if (typeof MutationObserver !== "undefined") {
        var observer = new MutationObserver(function (mutations) {
            for (var i in mutations) {
                if (mutations.hasOwnProperty(i)) {
                    var items = mutations[i].addedNodes;
                    for (var j = 0; j < items.length; j++) {
                        if (items[j].resizeSensor) {
                            ResizeSensor.reset(items[j]);
                        }
                    }
                }
            }
        });

        document.addEventListener("DOMContentLoaded", function (event) {
            observer.observe(document.body, {
                childList: true,
                subtree: true,
            });
        });
    }

    return ResizeSensor;

}));
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;
var createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};
var _$Interactable_20 = createModuleFactory(function (module, exports) {
"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = exports.Interactable = void 0;

var arr = _interopRequireWildcard(_$arr_64);

var _browser = _interopRequireDefault(_$browser_65);

var _clone = _interopRequireDefault(_$clone_66);

/* removed: var _$domUtils_69 = require("@interactjs/utils/domUtils"); */;

var _events = _interopRequireDefault(_$events_70);

var _extend = _interopRequireDefault(_$extend_72);

var is = _interopRequireWildcard(_$is_76);

var _normalizeListeners = _interopRequireDefault(_$normalizeListeners_78);

/* removed: var _$window_83 = require("@interactjs/utils/window"); */;

var _Eventable = _interopRequireDefault(_$Eventable_17);

var _scope = _$scope_28({});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

/** */
var Interactable = /*#__PURE__*/function () {
  _createClass(Interactable, [{
    key: "_defaults",
    get: function get() {
      return {
        base: {},
        perAction: {},
        actions: {}
      };
    }
  }]);

  /** */
  function Interactable(target, options, defaultContext) {
    _classCallCheck(this, Interactable);

    _defineProperty(this, "options", void 0);

    _defineProperty(this, "_actions", void 0);

    _defineProperty(this, "target", void 0);

    _defineProperty(this, "events", new _Eventable["default"]());

    _defineProperty(this, "_context", void 0);

    _defineProperty(this, "_win", void 0);

    _defineProperty(this, "_doc", void 0);

    this._actions = options.actions;
    this.target = target;
    this._context = options.context || defaultContext;
    this._win = (0, _$window_83.getWindow)((0, _$domUtils_69.trySelector)(target) ? this._context : target);
    this._doc = this._win.document;
    this.set(options);
  }

  _createClass(Interactable, [{
    key: "setOnEvents",
    value: function setOnEvents(actionName, phases) {
      if (is.func(phases.onstart)) {
        this.on("".concat(actionName, "start"), phases.onstart);
      }

      if (is.func(phases.onmove)) {
        this.on("".concat(actionName, "move"), phases.onmove);
      }

      if (is.func(phases.onend)) {
        this.on("".concat(actionName, "end"), phases.onend);
      }

      if (is.func(phases.oninertiastart)) {
        this.on("".concat(actionName, "inertiastart"), phases.oninertiastart);
      }

      return this;
    }
  }, {
    key: "updatePerActionListeners",
    value: function updatePerActionListeners(actionName, prev, cur) {
      if (is.array(prev) || is.object(prev)) {
        this.off(actionName, prev);
      }

      if (is.array(cur) || is.object(cur)) {
        this.on(actionName, cur);
      }
    }
  }, {
    key: "setPerAction",
    value: function setPerAction(actionName, options) {
      var defaults = this._defaults; // for all the default per-action options

      for (var optionName_ in options) {
        var optionName = optionName_;
        var actionOptions = this.options[actionName];
        var optionValue = options[optionName]; // remove old event listeners and add new ones

        if (optionName === 'listeners') {
          this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);
        } // if the option value is an array


        if (is.array(optionValue)) {
          actionOptions[optionName] = arr.from(optionValue);
        } // if the option value is an object
        else if (is.plainObject(optionValue)) {
            // copy the object
            actionOptions[optionName] = (0, _extend["default"])(actionOptions[optionName] || {}, (0, _clone["default"])(optionValue)); // set anabled field to true if it exists in the defaults

            if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {
              actionOptions[optionName].enabled = optionValue.enabled !== false;
            }
          } // if the option value is a boolean and the default is an object
          else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {
              actionOptions[optionName].enabled = optionValue;
            } // if it's anything else, do a plain assignment
            else {
                actionOptions[optionName] = optionValue;
              }
      }
    }
    /**
     * The default function to get an Interactables bounding rect. Can be
     * overridden using {@link Interactable.rectChecker}.
     *
     * @param {Element} [element] The element to measure.
     * @return {object} The object's bounding rectangle.
     */

  }, {
    key: "getRect",
    value: function getRect(element) {
      element = element || (is.element(this.target) ? this.target : null);

      if (is.string(this.target)) {
        element = element || this._context.querySelector(this.target);
      }

      return (0, _$domUtils_69.getElementRect)(element);
    }
    /**
     * Returns or sets the function used to calculate the interactable's
     * element's rectangle
     *
     * @param {function} [checker] A function which returns this Interactable's
     * bounding rectangle. See {@link Interactable.getRect}
     * @return {function | object} The checker function or this Interactable
     */

  }, {
    key: "rectChecker",
    value: function rectChecker(checker) {
      if (is.func(checker)) {
        this.getRect = checker;
        return this;
      }

      if (checker === null) {
        delete this.getRect;
        return this;
      }

      return this.getRect;
    }
  }, {
    key: "_backCompatOption",
    value: function _backCompatOption(optionName, newValue) {
      if ((0, _$domUtils_69.trySelector)(newValue) || is.object(newValue)) {
        this.options[optionName] = newValue;

        for (var action in this._actions.map) {
          this.options[action][optionName] = newValue;
        }

        return this;
      }

      return this.options[optionName];
    }
    /**
     * Gets or sets the origin of the Interactable's element.  The x and y
     * of the origin will be subtracted from action event coordinates.
     *
     * @param {Element | object | string} [origin] An HTML or SVG Element whose
     * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'
     * or any CSS selector
     *
     * @return {object} The current origin or this Interactable
     */

  }, {
    key: "origin",
    value: function origin(newValue) {
      return this._backCompatOption('origin', newValue);
    }
    /**
     * Returns or sets the mouse coordinate types used to calculate the
     * movement of the pointer.
     *
     * @param {string} [newValue] Use 'client' if you will be scrolling while
     * interacting; Use 'page' if you want autoScroll to work
     * @return {string | object} The current deltaSource or this Interactable
     */

  }, {
    key: "deltaSource",
    value: function deltaSource(newValue) {
      if (newValue === 'page' || newValue === 'client') {
        this.options.deltaSource = newValue;
        return this;
      }

      return this.options.deltaSource;
    }
    /**
     * Gets the selector context Node of the Interactable. The default is
     * `window.document`.
     *
     * @return {Node} The context Node of this Interactable
     */

  }, {
    key: "context",
    value: function context() {
      return this._context;
    }
  }, {
    key: "inContext",
    value: function inContext(element) {
      return this._context === element.ownerDocument || (0, _$domUtils_69.nodeContains)(this._context, element);
    }
  }, {
    key: "testIgnoreAllow",
    value: function testIgnoreAllow(options, targetNode, eventTarget) {
      return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);
    }
  }, {
    key: "testAllow",
    value: function testAllow(allowFrom, targetNode, element) {
      if (!allowFrom) {
        return true;
      }

      if (!is.element(element)) {
        return false;
      }

      if (is.string(allowFrom)) {
        return (0, _$domUtils_69.matchesUpTo)(element, allowFrom, targetNode);
      } else if (is.element(allowFrom)) {
        return (0, _$domUtils_69.nodeContains)(allowFrom, element);
      }

      return false;
    }
  }, {
    key: "testIgnore",
    value: function testIgnore(ignoreFrom, targetNode, element) {
      if (!ignoreFrom || !is.element(element)) {
        return false;
      }

      if (is.string(ignoreFrom)) {
        return (0, _$domUtils_69.matchesUpTo)(element, ignoreFrom, targetNode);
      } else if (is.element(ignoreFrom)) {
        return (0, _$domUtils_69.nodeContains)(ignoreFrom, element);
      }

      return false;
    }
    /**
     * Calls listeners for the given InteractEvent type bound globally
     * and directly to this Interactable
     *
     * @param {InteractEvent} iEvent The InteractEvent object to be fired on this
     * Interactable
     * @return {Interactable} this Interactable
     */

  }, {
    key: "fire",
    value: function fire(iEvent) {
      this.events.fire(iEvent);
      return this;
    }
  }, {
    key: "_onOff",
    value: function _onOff(method, typeArg, listenerArg, options) {
      if (is.object(typeArg) && !is.array(typeArg)) {
        options = listenerArg;
        listenerArg = null;
      }

      var addRemove = method === 'on' ? 'add' : 'remove';
      var listeners = (0, _normalizeListeners["default"])(typeArg, listenerArg);

      for (var type in listeners) {
        if (type === 'wheel') {
          type = _browser["default"].wheelEvent;
        }

        for (var _i = 0; _i < listeners[type].length; _i++) {
          var _ref;

          _ref = listeners[type][_i];
          var listener = _ref;

          // if it is an action event type
          if ((0, _scope.isNonNativeEvent)(type, this._actions)) {
            this.events[method](type, listener);
          } // delegated event
          else if (is.string(this.target)) {
              _events["default"]["".concat(addRemove, "Delegate")](this.target, this._context, type, listener, options);
            } // remove listener from this Interactable's element
            else {
                _events["default"][addRemove](this.target, type, listener, options);
              }
        }
      }

      return this;
    }
    /**
     * Binds a listener for an InteractEvent, pointerEvent or DOM event.
     *
     * @param {string | array | object} types The types of events to listen
     * for
     * @param {function | array | object} [listener] The event listener function(s)
     * @param {object | boolean} [options] options object or useCapture flag for
     * addEventListener
     * @return {Interactable} This Interactable
     */

  }, {
    key: "on",
    value: function on(types, listener, options) {
      return this._onOff('on', types, listener, options);
    }
    /**
     * Removes an InteractEvent, pointerEvent or DOM event listener.
     *
     * @param {string | array | object} types The types of events that were
     * listened for
     * @param {function | array | object} [listener] The event listener function(s)
     * @param {object | boolean} [options] options object or useCapture flag for
     * removeEventListener
     * @return {Interactable} This Interactable
     */

  }, {
    key: "off",
    value: function off(types, listener, options) {
      return this._onOff('off', types, listener, options);
    }
    /**
     * Reset the options of this Interactable
     *
     * @param {object} options The new settings to apply
     * @return {object} This Interactable
     */

  }, {
    key: "set",
    value: function set(options) {
      var defaults = this._defaults;

      if (!is.object(options)) {
        options = {};
      }

      this.options = (0, _clone["default"])(defaults.base);

      for (var actionName_ in this._actions.methodDict) {
        var actionName = actionName_;
        var methodName = this._actions.methodDict[actionName];
        this.options[actionName] = {};
        this.setPerAction(actionName, (0, _extend["default"])((0, _extend["default"])({}, defaults.perAction), defaults.actions[actionName]));
        this[methodName](options[actionName]);
      }

      for (var setting in options) {
        if (is.func(this[setting])) {
          this[setting](options[setting]);
        }
      }

      return this;
    }
    /**
     * Remove this interactable from the list of interactables and remove it's
     * action capabilities and event listeners
     *
     * @return {interact}
     */

  }, {
    key: "unset",
    value: function unset() {
      _events["default"].remove(this.target, 'all');

      if (is.string(this.target)) {
        // remove delegated events
        for (var type in _events["default"].delegatedEvents) {
          var delegated = _events["default"].delegatedEvents[type];

          if (delegated.selectors[0] === this.target && delegated.contexts[0] === this._context) {
            delegated.selectors.splice(0, 1);
            delegated.contexts.splice(0, 1);
            delegated.listeners.splice(0, 1);
          }

          _events["default"].remove(this._context, type, _events["default"].delegateListener);

          _events["default"].remove(this._context, type, _events["default"].delegateUseCapture, true);
        }
      } else {
        _events["default"].remove(this.target, 'all');
      }
    }
  }]);

  return Interactable;
}();

exports.Interactable = Interactable;
var _default = Interactable;
exports["default"] = _default;

});
var _$scope_28 = createModuleFactory(function (module, exports) {
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.isNonNativeEvent = isNonNativeEvent;
exports.initScope = initScope;
exports.Scope = exports["default"] = void 0;

var _domObjects = _interopRequireDefault(_$domObjects_68);

var utils = _interopRequireWildcard(_$index_75);

var _Eventable = _interopRequireDefault(_$Eventable_17);

var _InteractEvent = _interopRequireDefault(_$InteractEvent_18);

var _InteractStatic = _interopRequireDefault(_$InteractStatic_19({}));

var _Interactable = _interopRequireDefault(_$Interactable_20({}));

var _InteractableSet = _interopRequireDefault(_$InteractableSet_21);

var _defaultOptions = _interopRequireDefault(_$defaultOptions_24);

var _interactions = _interopRequireDefault(_$interactions_27({}));

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }

function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var win = utils.win,
    browser = utils.browser,
    raf = utils.raf,
    events = utils.events; // eslint-disable-next-line @typescript-eslint/no-empty-interface

var Scope = /*#__PURE__*/function () {
  // main window
  // main document
  // main window
  // all documents being listened to
  function Scope() {
    var _this = this;

    _classCallCheck(this, Scope);

    _defineProperty(this, "id", "__interact_scope_".concat(Math.floor(Math.random() * 100)));

    _defineProperty(this, "isInitialized", false);

    _defineProperty(this, "listenerMaps", []);

    _defineProperty(this, "browser", browser);

    _defineProperty(this, "events", events);

    _defineProperty(this, "utils", utils);

    _defineProperty(this, "defaults", utils.clone(_defaultOptions["default"]));

    _defineProperty(this, "Eventable", _Eventable["default"]);

    _defineProperty(this, "actions", {
      map: {},
      phases: {
        start: true,
        move: true,
        end: true
      },
      methodDict: {},
      phaselessTypes: {}
    });

    _defineProperty(this, "interactStatic", new _InteractStatic["default"](this));

    _defineProperty(this, "InteractEvent", _InteractEvent["default"]);

    _defineProperty(this, "Interactable", void 0);

    _defineProperty(this, "interactables", new _InteractableSet["default"](this));

    _defineProperty(this, "_win", void 0);

    _defineProperty(this, "document", void 0);

    _defineProperty(this, "window", void 0);

    _defineProperty(this, "documents", []);

    _defineProperty(this, "_plugins", {
      list: [],
      map: {}
    });

    _defineProperty(this, "onWindowUnload", function (event) {
      return _this.removeDocument(event.target);
    });

    var scope = this;

    this.Interactable = /*#__PURE__*/function (_InteractableBase) {
      _inherits(_class, _InteractableBase);

      function _class() {
        _classCallCheck(this, _class);

        return _possibleConstructorReturn(this, _getPrototypeOf(_class).apply(this, arguments));
      }

      _createClass(_class, [{
        key: "set",
        value: function set(options) {
          _get(_getPrototypeOf(_class.prototype), "set", this).call(this, options);

          scope.fire('interactable:set', {
            options: options,
            interactable: this
          });
          return this;
        }
      }, {
        key: "unset",
        value: function unset() {
          _get(_getPrototypeOf(_class.prototype), "unset", this).call(this);

          scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);
          scope.fire('interactable:unset', {
            interactable: this
          });
        }
      }, {
        key: "_defaults",
        get: function get() {
          return scope.defaults;
        }
      }]);

      return _class;
    }(_Interactable["default"]);
  }

  _createClass(Scope, [{
    key: "addListeners",
    value: function addListeners(map, id) {
      this.listenerMaps.push({
        id: id,
        map: map
      });
    }
  }, {
    key: "fire",
    value: function fire(name, arg) {
      for (var _i = 0; _i < this.listenerMaps.length; _i++) {
        var _ref;

        _ref = this.listenerMaps[_i];
        var _ref2 = _ref,
            listener = _ref2.map[name];

        if (!!listener && listener(arg, this, name) === false) {
          return false;
        }
      }
    }
  }, {
    key: "init",
    value: function init(window) {
      return this.isInitialized ? this : initScope(this, window);
    }
  }, {
    key: "pluginIsInstalled",
    value: function pluginIsInstalled(plugin) {
      return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;
    }
  }, {
    key: "usePlugin",
    value: function usePlugin(plugin, options) {
      if (this.pluginIsInstalled(plugin)) {
        return this;
      }

      if (plugin.id) {
        this._plugins.map[plugin.id] = plugin;
      }

      this._plugins.list.push(plugin);

      if (plugin.install) {
        plugin.install(this, options);
      }

      if (plugin.listeners && plugin.before) {
        var _index = 0;
        var len = this.listenerMaps.length;
        var before = plugin.before.reduce(function (acc, id) {
          acc[id] = true;
          return acc;
        }, {});

        for (; _index < len; _index++) {
          var otherId = this.listenerMaps[_index].id;

          if (before[otherId]) {
            break;
          }
        }

        this.listenerMaps.splice(_index, 0, {
          id: plugin.id,
          map: plugin.listeners
        });
      } else if (plugin.listeners) {
        this.listenerMaps.push({
          id: plugin.id,
          map: plugin.listeners
        });
      }

      return this;
    }
  }, {
    key: "addDocument",
    value: function addDocument(doc, options) {
      // do nothing if document is already known
      if (this.getDocIndex(doc) !== -1) {
        return false;
      }

      var window = win.getWindow(doc);
      options = options ? utils.extend({}, options) : {};
      this.documents.push({
        doc: doc,
        options: options
      });
      events.documents.push(doc); // don't add an unload event for the main document
      // so that the page may be cached in browser history

      if (doc !== this.document) {
        events.add(window, 'unload', this.onWindowUnload);
      }

      this.fire('scope:add-document', {
        doc: doc,
        window: window,
        scope: this,
        options: options
      });
    }
  }, {
    key: "removeDocument",
    value: function removeDocument(doc) {
      var index = this.getDocIndex(doc);
      var window = win.getWindow(doc);
      var options = this.documents[index].options;
      events.remove(window, 'unload', this.onWindowUnload);
      this.documents.splice(index, 1);
      events.documents.splice(index, 1);
      this.fire('scope:remove-document', {
        doc: doc,
        window: window,
        scope: this,
        options: options
      });
    }
  }, {
    key: "getDocIndex",
    value: function getDocIndex(doc) {
      for (var i = 0; i < this.documents.length; i++) {
        if (this.documents[i].doc === doc) {
          return i;
        }
      }

      return -1;
    }
  }, {
    key: "getDocOptions",
    value: function getDocOptions(doc) {
      var docIndex = this.getDocIndex(doc);
      return docIndex === -1 ? null : this.documents[docIndex].options;
    }
  }, {
    key: "now",
    value: function now() {
      return (this.window.Date || Date).now();
    }
  }]);

  return Scope;
}();

exports.Scope = exports["default"] = Scope;

function isNonNativeEvent(type, actions) {
  if (actions.phaselessTypes[type]) {
    return true;
  }

  for (var name in actions.map) {
    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {
      return true;
    }
  }

  return false;
}

function initScope(scope, window) {
  scope.isInitialized = true;
  win.init(window);

  _domObjects["default"].init(window);

  browser.init(window);
  raf.init(window);
  events.init(window);
  scope.usePlugin(_interactions["default"]);
  scope.document = window.document;
  scope.window = window;
  return scope;
}

});
var _$interactions_27 = createModuleFactory(function (module, exports) {
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

var _browser = _interopRequireDefault(_$browser_65);

var _domObjects = _interopRequireDefault(_$domObjects_68);

/* removed: var _$domUtils_69 = require("@interactjs/utils/domUtils"); */;

var _events = _interopRequireDefault(_$events_70);

var pointerUtils = _interopRequireWildcard(_$pointerUtils_80);

var _Interaction = _interopRequireDefault(_$Interaction_22);

var _interactablePreventDefault = _interopRequireDefault(_$interactablePreventDefault_25);

var _interactionFinder = _interopRequireDefault(_$interactionFinder_26);

var _scope = _interopRequireDefault(_$scope_28({}));

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

var methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];

function install(scope) {
  var listeners = {};

  for (var _i = 0; _i < methodNames.length; _i++) {
    var _ref;

    _ref = methodNames[_i];
    var method = _ref;
    listeners[method] = doOnInteractions(method, scope);
  }

  var pEventTypes = _browser["default"].pEventTypes;
  var docEvents;

  if (_domObjects["default"].PointerEvent) {
    docEvents = [{
      type: pEventTypes.down,
      listener: releasePointersOnRemovedEls
    }, {
      type: pEventTypes.down,
      listener: listeners.pointerDown
    }, {
      type: pEventTypes.move,
      listener: listeners.pointerMove
    }, {
      type: pEventTypes.up,
      listener: listeners.pointerUp
    }, {
      type: pEventTypes.cancel,
      listener: listeners.pointerUp
    }];
  } else {
    docEvents = [{
      type: 'mousedown',
      listener: listeners.pointerDown
    }, {
      type: 'mousemove',
      listener: listeners.pointerMove
    }, {
      type: 'mouseup',
      listener: listeners.pointerUp
    }, {
      type: 'touchstart',
      listener: releasePointersOnRemovedEls
    }, {
      type: 'touchstart',
      listener: listeners.pointerDown
    }, {
      type: 'touchmove',
      listener: listeners.pointerMove
    }, {
      type: 'touchend',
      listener: listeners.pointerUp
    }, {
      type: 'touchcancel',
      listener: listeners.pointerUp
    }];
  }

  docEvents.push({
    type: 'blur',
    listener: function listener(event) {
      for (var _i2 = 0; _i2 < scope.interactions.list.length; _i2++) {
        var _ref2;

        _ref2 = scope.interactions.list[_i2];
        var interaction = _ref2;
        interaction.documentBlur(event);
      }
    }
  }); // for ignoring browser's simulated mouse events

  scope.prevTouchTime = 0;

  scope.Interaction = /*#__PURE__*/function (_InteractionBase) {
    _inherits(_class, _InteractionBase);

    function _class() {
      _classCallCheck(this, _class);

      return _possibleConstructorReturn(this, _getPrototypeOf(_class).apply(this, arguments));
    }

    _createClass(_class, [{
      key: "_now",
      value: function _now() {
        return scope.now();
      }
    }, {
      key: "pointerMoveTolerance",
      get: function get() {
        return scope.interactions.pointerMoveTolerance;
      },
      set: function set(value) {
        scope.interactions.pointerMoveTolerance = value;
      }
    }]);

    return _class;
  }(_Interaction["default"]);

  scope.interactions = {
    // all active and idle interactions
    list: [],
    "new": function _new(options) {
      options.scopeFire = function (name, arg) {
        return scope.fire(name, arg);
      };

      var interaction = new scope.Interaction(options);
      scope.interactions.list.push(interaction);
      return interaction;
    },
    listeners: listeners,
    docEvents: docEvents,
    pointerMoveTolerance: 1
  };

  function releasePointersOnRemovedEls() {
    // for all inactive touch interactions with pointers down
    for (var _i3 = 0; _i3 < scope.interactions.list.length; _i3++) {
      var _ref3;

      _ref3 = scope.interactions.list[_i3];
      var interaction = _ref3;

      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {
        continue;
      } // if a pointer is down on an element that is no longer in the DOM tree


      var _loop = function _loop() {
        _ref4 = interaction.pointers[_i4];
        var pointer = _ref4;

        if (!scope.documents.some(function (_ref5) {
          var doc = _ref5.doc;
          return (0, _$domUtils_69.nodeContains)(doc, pointer.downTarget);
        })) {
          // remove the pointer from the interaction
          interaction.removePointer(pointer.pointer, pointer.event);
        }
      };

      for (var _i4 = 0; _i4 < interaction.pointers.length; _i4++) {
        var _ref4;

        _loop();
      }
    }
  }

  scope.usePlugin(_interactablePreventDefault["default"]);
}

function doOnInteractions(method, scope) {
  return function (event) {
    var interactions = scope.interactions.list;
    var pointerType = pointerUtils.getPointerType(event);

    var _pointerUtils$getEven = pointerUtils.getEventTargets(event),
        _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 2),
        eventTarget = _pointerUtils$getEven2[0],
        curEventTarget = _pointerUtils$getEven2[1];

    var matches = []; // [ [pointer, interaction], ...]

    if (/^touch/.test(event.type)) {
      scope.prevTouchTime = scope.now();

      for (var _i5 = 0; _i5 < event.changedTouches.length; _i5++) {
        var _ref6;

        _ref6 = event.changedTouches[_i5];
        var changedTouch = _ref6;
        var pointer = changedTouch;
        var pointerId = pointerUtils.getPointerId(pointer);
        var searchDetails = {
          pointer: pointer,
          pointerId: pointerId,
          pointerType: pointerType,
          eventType: event.type,
          eventTarget: eventTarget,
          curEventTarget: curEventTarget,
          scope: scope
        };
        var interaction = getInteraction(searchDetails);
        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);
      }
    } else {
      var invalidPointer = false;

      if (!_browser["default"].supportsPointerEvent && /mouse/.test(event.type)) {
        // ignore mouse events while touch interactions are active
        for (var i = 0; i < interactions.length && !invalidPointer; i++) {
          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;
        } // try to ignore mouse events that are simulated by the browser
        // after a touch event


        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated
        event.timeStamp === 0;
      }

      if (!invalidPointer) {
        var _searchDetails = {
          pointer: event,
          pointerId: pointerUtils.getPointerId(event),
          pointerType: pointerType,
          eventType: event.type,
          curEventTarget: curEventTarget,
          eventTarget: eventTarget,
          scope: scope
        };

        var _interaction = getInteraction(_searchDetails);

        matches.push([_searchDetails.pointer, _searchDetails.eventTarget, _searchDetails.curEventTarget, _interaction]);
      }
    } // eslint-disable-next-line no-shadow


    for (var _i6 = 0; _i6 < matches.length; _i6++) {
      var _matches$_i = _slicedToArray(matches[_i6], 4),
          _pointer = _matches$_i[0],
          _eventTarget = _matches$_i[1],
          _curEventTarget = _matches$_i[2],
          _interaction2 = _matches$_i[3];

      _interaction2[method](_pointer, event, _eventTarget, _curEventTarget);
    }
  };
}

function getInteraction(searchDetails) {
  var pointerType = searchDetails.pointerType,
      scope = searchDetails.scope;

  var foundInteraction = _interactionFinder["default"].search(searchDetails);

  var signalArg = {
    interaction: foundInteraction,
    searchDetails: searchDetails
  };
  scope.fire('interactions:find', signalArg);
  return signalArg.interaction || scope.interactions["new"]({
    pointerType: pointerType
  });
}

function onDocSignal(_ref7, eventMethodName) {
  var doc = _ref7.doc,
      scope = _ref7.scope,
      options = _ref7.options;
  var docEvents = scope.interactions.docEvents;
  var eventMethod = _events["default"][eventMethodName];

  if (scope.browser.isIOS && !options.events) {
    options.events = {
      passive: false
    };
  } // delegate event listener


  for (var eventType in _events["default"].delegatedEvents) {
    eventMethod(doc, eventType, _events["default"].delegateListener);
    eventMethod(doc, eventType, _events["default"].delegateUseCapture, true);
  }

  var eventOptions = options && options.events;

  for (var _i7 = 0; _i7 < docEvents.length; _i7++) {
    var _ref8;

    _ref8 = docEvents[_i7];
    var _ref9 = _ref8,
        _type = _ref9.type,
        listener = _ref9.listener;
    eventMethod(doc, _type, listener, eventOptions);
  }
}

var interactions = {
  id: 'core/interactions',
  install: install,
  listeners: {
    'scope:add-document': function scopeAddDocument(arg) {
      return onDocSignal(arg, 'add');
    },
    'scope:remove-document': function scopeRemoveDocument(arg) {
      return onDocSignal(arg, 'remove');
    },
    'interactable:unset': function interactableUnset(_ref10, scope) {
      var interactable = _ref10.interactable;

      // Stop and destroy related interactions when an Interactable is unset
      for (var i = scope.interactions.list.length - 1; i >= 0; i--) {
        var interaction = scope.interactions.list[i];

        if (interaction.interactable !== interactable) {
          continue;
        }

        interaction.stop();
        scope.fire('interactions:destroy', {
          interaction: interaction
        });
        interaction.destroy();

        if (scope.interactions.list.length > 2) {
          scope.interactions.list.splice(i, 1);
        }
      }
    }
  },
  onDocSignal: onDocSignal,
  doOnInteractions: doOnInteractions,
  methodNames: methodNames
};
var _default = interactions;
exports["default"] = _default;

});
var _$InteractStatic_19 = createModuleFactory(function (module, exports) {
"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = exports.InteractStatic = void 0;

var _browser = _interopRequireDefault(_$browser_65);

var _events = _interopRequireDefault(_$events_70);

var utils = _interopRequireWildcard(_$index_75);

var _scope = _$scope_28({});

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var InteractStatic = /*#__PURE__*/function () {
  // expose the functions used to calculate multi-touch properties
  // eslint-disable-next-line no-undef
  function InteractStatic(scope) {
    var _this = this;

    _classCallCheck(this, InteractStatic);

    this.scope = scope;

    _defineProperty(this, "getPointerAverage", utils.pointer.pointerAverage);

    _defineProperty(this, "getTouchBBox", utils.pointer.touchBBox);

    _defineProperty(this, "getTouchDistance", utils.pointer.touchDistance);

    _defineProperty(this, "getTouchAngle", utils.pointer.touchAngle);

    _defineProperty(this, "getElementRect", utils.dom.getElementRect);

    _defineProperty(this, "getElementClientRect", utils.dom.getElementClientRect);

    _defineProperty(this, "matchesSelector", utils.dom.matchesSelector);

    _defineProperty(this, "closest", utils.dom.closest);

    _defineProperty(this, "globalEvents", {});

    _defineProperty(this, "dynamicDrop", void 0);

    _defineProperty(this, "version", "1.9.7");

    _defineProperty(this, "interact", void 0);

    var prototype = this.constructor.prototype;
    /**
     * ```js
     * interact('#draggable').draggable(true)
     *
     * var rectables = interact('rect')
     * rectables
     *   .gesturable(true)
     *   .on('gesturemove', function (event) {
     *       // ...
     *   })
     * ```
     *
     * The methods of this variable can be used to set elements as interactables
     * and also to change various default settings.
     *
     * Calling it as a function and passing an element or a valid CSS selector
     * string returns an Interactable object which has various methods to configure
     * it.
     *
     * @global
     *
     * @param {Element | string} target The HTML or SVG Element to interact with
     * or CSS selector
     * @return {Interactable}
     */

    var interact = function interact(target, options) {
      var interactable = scope.interactables.get(target, options);

      if (!interactable) {
        interactable = scope.interactables["new"](target, options);
        interactable.events.global = _this.globalEvents;
      }

      return interactable;
    };

    for (var _i = 0; _i < Object.getOwnPropertyNames(this.constructor.prototype).length; _i++) {
      var _ref;

      _ref = Object.getOwnPropertyNames(this.constructor.prototype)[_i];
      var _key = _ref;
      interact[_key] = prototype[_key];
    }

    utils.extend(interact, this);
    interact.constructor = this.constructor;
    this.interact = interact;
    return interact;
  }
  /**
   * Use a plugin
   *
   * @alias module:interact.use
   *
   * @param {Object} plugin
   * @param {function} plugin.install
   * @return {InteractStatic}
   */


  _createClass(InteractStatic, [{
    key: "use",
    value: function use(plugin, options) {
      this.scope.usePlugin(plugin, options);
      return this;
    }
    /**
     * Check if an element or selector has been set with the {@link interact}
     * function
     *
     * @alias module:interact.isSet
     *
     * @param {Element} element The Element being searched for
     * @return {boolean} Indicates if the element or CSS selector was previously
     * passed to interact
     */

  }, {
    key: "isSet",
    value: function isSet(target, options) {
      return !!this.scope.interactables.get(target, options && options.context);
    }
    /**
     * Add a global listener for an InteractEvent or adds a DOM event to `document`
     *
     * @alias module:interact.on
     *
     * @param {string | array | object} type The types of events to listen for
     * @param {function} listener The function event (s)
     * @param {object | boolean} [options] object or useCapture flag for
     * addEventListener
     * @return {object} interact
     */

  }, {
    key: "on",
    value: function on(type, listener, options) {
      if (utils.is.string(type) && type.search(' ') !== -1) {
        type = type.trim().split(/ +/);
      }

      if (utils.is.array(type)) {
        for (var _i2 = 0; _i2 < type.length; _i2++) {
          var _ref2;

          _ref2 = type[_i2];
          var eventType = _ref2;
          this.on(eventType, listener, options);
        }

        return this;
      }

      if (utils.is.object(type)) {
        for (var prop in type) {
          this.on(prop, type[prop], listener);
        }

        return this;
      } // if it is an InteractEvent type, add listener to globalEvents


      if ((0, _scope.isNonNativeEvent)(type, this.scope.actions)) {
        // if this type of event was never bound
        if (!this.globalEvents[type]) {
          this.globalEvents[type] = [listener];
        } else {
          this.globalEvents[type].push(listener);
        }
      } // If non InteractEvent type, addEventListener to document
      else {
          _events["default"].add(this.scope.document, type, listener, {
            options: options
          });
        }

      return this;
    }
    /**
     * Removes a global InteractEvent listener or DOM event from `document`
     *
     * @alias module:interact.off
     *
     * @param {string | array | object} type The types of events that were listened
     * for
     * @param {function} listener The listener function to be removed
     * @param {object | boolean} options [options] object or useCapture flag for
     * removeEventListener
     * @return {object} interact
     */

  }, {
    key: "off",
    value: function off(type, listener, options) {
      if (utils.is.string(type) && type.search(' ') !== -1) {
        type = type.trim().split(/ +/);
      }

      if (utils.is.array(type)) {
        for (var _i3 = 0; _i3 < type.length; _i3++) {
          var _ref3;

          _ref3 = type[_i3];
          var eventType = _ref3;
          this.off(eventType, listener, options);
        }

        return this;
      }

      if (utils.is.object(type)) {
        for (var prop in type) {
          this.off(prop, type[prop], listener);
        }

        return this;
      }

      if ((0, _scope.isNonNativeEvent)(type, this.scope.actions)) {
        var index;

        if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {
          this.globalEvents[type].splice(index, 1);
        }
      } else {
        _events["default"].remove(this.scope.document, type, listener, options);
      }

      return this;
    }
  }, {
    key: "debug",
    value: function debug() {
      return this.scope;
    }
    /**
     * @alias module:interact.supportsTouch
     *
     * @return {boolean} Whether or not the browser supports touch input
     */

  }, {
    key: "supportsTouch",
    value: function supportsTouch() {
      return _browser["default"].supportsTouch;
    }
    /**
     * @alias module:interact.supportsPointerEvent
     *
     * @return {boolean} Whether or not the browser supports PointerEvents
     */

  }, {
    key: "supportsPointerEvent",
    value: function supportsPointerEvent() {
      return _browser["default"].supportsPointerEvent;
    }
    /**
     * Cancels all interactions (end events are not fired)
     *
     * @alias module:interact.stop
     *
     * @return {object} interact
     */

  }, {
    key: "stop",
    value: function stop() {
      for (var _i4 = 0; _i4 < this.scope.interactions.list.length; _i4++) {
        var _ref4;

        _ref4 = this.scope.interactions.list[_i4];
        var interaction = _ref4;
        interaction.stop();
      }

      return this;
    }
    /**
     * Returns or sets the distance the pointer must be moved before an action
     * sequence occurs. This also affects tolerance for tap events.
     *
     * @alias module:interact.pointerMoveTolerance
     *
     * @param {number} [newValue] The movement from the start position must be greater than this value
     * @return {interact | number}
     */

  }, {
    key: "pointerMoveTolerance",
    value: function pointerMoveTolerance(newValue) {
      if (utils.is.number(newValue)) {
        this.scope.interactions.pointerMoveTolerance = newValue;
        return this;
      }

      return this.scope.interactions.pointerMoveTolerance;
    }
  }, {
    key: "addDocument",
    value: function addDocument(doc, options) {
      this.scope.addDocument(doc, options);
    }
  }, {
    key: "removeDocument",
    value: function removeDocument(doc) {
      this.scope.removeDocument(doc);
    }
  }]);

  return InteractStatic;
}();

exports.InteractStatic = InteractStatic;
var _default = InteractStatic;
exports["default"] = _default;

});
var _$index_63 = {};
/// <reference path="./types.d.ts" />
"use strict";

var _$isWindow_77 = {};
"use strict";

Object.defineProperty(_$isWindow_77, "__esModule", {
  value: true
});
_$isWindow_77["default"] = void 0;

var _default = function _default(thing) {
  return !!(thing && thing.Window) && thing instanceof thing.Window;
};

_$isWindow_77["default"] = _default;

var _$window_83 = {};
"use strict";

Object.defineProperty(_$window_83, "__esModule", {
  value: true
});
_$window_83.init = init;
_$window_83.getWindow = getWindow;
_$window_83["default"] = void 0;

var _isWindow = _interopRequireDefault(_$isWindow_77);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var win = {
  realWindow: undefined,
  window: undefined,
  getWindow: getWindow,
  init: init
};

function init(window) {
  // get wrapped window if using Shadow DOM polyfill
  win.realWindow = window; // create a TextNode

  var el = window.document.createTextNode(''); // check if it's wrapped by a polyfill

  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {
    // use wrapped window
    window = window.wrap(window);
  }

  win.window = window;
}

if (typeof window === 'undefined') {
  win.window = undefined;
  win.realWindow = undefined;
} else {
  init(window);
}

function getWindow(node) {
  if ((0, _isWindow["default"])(node)) {
    return node;
  }

  var rootNode = node.ownerDocument || node;
  return rootNode.defaultView || win.window;
}

win.init = init;
var ___default_83 = win;
_$window_83["default"] = ___default_83;

var _$is_76 = {};
"use strict";

Object.defineProperty(_$is_76, "__esModule", {
  value: true
});
_$is_76.array = _$is_76.plainObject = _$is_76.element = _$is_76.string = _$is_76.bool = _$is_76.number = _$is_76.func = _$is_76.object = _$is_76.docFrag = _$is_76.window = void 0;

var ___isWindow_76 = ___interopRequireDefault_76(_$isWindow_77);

var _window2 = ___interopRequireDefault_76(_$window_83);

function ___interopRequireDefault_76(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

var __window_76 = function window(thing) {
  return thing === _window2["default"].window || (0, ___isWindow_76["default"])(thing);
};

_$is_76.window = __window_76;

var docFrag = function docFrag(thing) {
  return object(thing) && thing.nodeType === 11;
};

_$is_76.docFrag = docFrag;

var object = function object(thing) {
  return !!thing && _typeof(thing) === 'object';
};

_$is_76.object = object;

var func = function func(thing) {
  return typeof thing === 'function';
};

_$is_76.func = func;

var number = function number(thing) {
  return typeof thing === 'number';
};

_$is_76.number = number;

var bool = function bool(thing) {
  return typeof thing === 'boolean';
};

_$is_76.bool = bool;

var string = function string(thing) {
  return typeof thing === 'string';
};

_$is_76.string = string;

var element = function element(thing) {
  if (!thing || _typeof(thing) !== 'object') {
    return false;
  }

  var _window = _window2["default"].getWindow(thing) || _window2["default"].window;

  return /object|function/.test(_typeof(_window.Element)) ? thing instanceof _window.Element // DOM2
  : thing.nodeType === 1 && typeof thing.nodeName === 'string';
};

_$is_76.element = element;

var plainObject = function plainObject(thing) {
  return object(thing) && !!thing.constructor && /function Object\b/.test(thing.constructor.toString());
};

_$is_76.plainObject = plainObject;

var array = function array(thing) {
  return object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);
};

_$is_76.array = array;

var _$drag_1 = {};
"use strict";

function ___typeof_1(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_1 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_1 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_1(obj); }

Object.defineProperty(_$drag_1, "__esModule", {
  value: true
});
_$drag_1["default"] = void 0;

var is = _interopRequireWildcard(_$is_76);

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_1(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function install(scope) {
  var actions = scope.actions,
      Interactable = scope.Interactable,
      defaults = scope.defaults;
  Interactable.prototype.draggable = drag.draggable;
  actions.map.drag = drag;
  actions.methodDict.drag = 'draggable';
  defaults.actions.drag = drag.defaults;
}

function beforeMove(_ref) {
  var interaction = _ref.interaction;

  if (interaction.prepared.name !== 'drag') {
    return;
  }

  var axis = interaction.prepared.axis;

  if (axis === 'x') {
    interaction.coords.cur.page.y = interaction.coords.start.page.y;
    interaction.coords.cur.client.y = interaction.coords.start.client.y;
    interaction.coords.velocity.client.y = 0;
    interaction.coords.velocity.page.y = 0;
  } else if (axis === 'y') {
    interaction.coords.cur.page.x = interaction.coords.start.page.x;
    interaction.coords.cur.client.x = interaction.coords.start.client.x;
    interaction.coords.velocity.client.x = 0;
    interaction.coords.velocity.page.x = 0;
  }
}

function move(_ref2) {
  var iEvent = _ref2.iEvent,
      interaction = _ref2.interaction;

  if (interaction.prepared.name !== 'drag') {
    return;
  }

  var axis = interaction.prepared.axis;

  if (axis === 'x' || axis === 'y') {
    var opposite = axis === 'x' ? 'y' : 'x';
    iEvent.page[opposite] = interaction.coords.start.page[opposite];
    iEvent.client[opposite] = interaction.coords.start.client[opposite];
    iEvent.delta[opposite] = 0;
  }
}
/**
 * ```js
 * interact(element).draggable({
 *     onstart: function (event) {},
 *     onmove : function (event) {},
 *     onend  : function (event) {},
 *
 *     // the axis in which the first movement must be
 *     // for the drag sequence to start
 *     // 'xy' by default - any direction
 *     startAxis: 'x' || 'y' || 'xy',
 *
 *     // 'xy' by default - don't restrict to one axis (move in any direction)
 *     // 'x' or 'y' to restrict movement to either axis
 *     // 'start' to restrict movement to the axis the drag started in
 *     lockAxis: 'x' || 'y' || 'xy' || 'start',
 *
 *     // max number of drags that can happen concurrently
 *     // with elements of this Interactable. Infinity by default
 *     max: Infinity,
 *
 *     // max number of drags that can target the same element+Interactable
 *     // 1 by default
 *     maxPerElement: 2
 * })
 *
 * var isDraggable = interact('element').draggable(); // true
 * ```
 *
 * Get or set whether drag actions can be performed on the target
 *
 * @alias Interactable.prototype.draggable
 *
 * @param {boolean | object} [options] true/false or An object with event
 * listeners to be fired on drag events (object makes the Interactable
 * draggable)
 * @return {boolean | Interactable} boolean indicating if this can be the
 * target of drag events, or this Interctable
 */


var draggable = function draggable(options) {
  if (is.object(options)) {
    this.options.drag.enabled = options.enabled !== false;
    this.setPerAction('drag', options);
    this.setOnEvents('drag', options);

    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {
      this.options.drag.lockAxis = options.lockAxis;
    }

    if (/^(xy|x|y)$/.test(options.startAxis)) {
      this.options.drag.startAxis = options.startAxis;
    }

    return this;
  }

  if (is.bool(options)) {
    this.options.drag.enabled = options;
    return this;
  }

  return this.options.drag;
};

var drag = {
  id: 'actions/drag',
  install: install,
  listeners: {
    'interactions:before-action-move': beforeMove,
    'interactions:action-resume': beforeMove,
    // dragmove
    'interactions:action-move': move,
    'auto-start:check': function autoStartCheck(arg) {
      var interaction = arg.interaction,
          interactable = arg.interactable,
          buttons = arg.buttons;
      var dragOptions = interactable.options.drag;

      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down
      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {
        return undefined;
      }

      arg.action = {
        name: 'drag',
        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis
      };
      return false;
    }
  },
  draggable: draggable,
  beforeMove: beforeMove,
  move: move,
  defaults: {
    startAxis: 'xy',
    lockAxis: 'xy'
  },
  getCursor: function getCursor() {
    return 'move';
  }
};
var ___default_1 = drag;
_$drag_1["default"] = ___default_1;

var _$arr_64 = {};
"use strict";

Object.defineProperty(_$arr_64, "__esModule", {
  value: true
});
_$arr_64.find = _$arr_64.findIndex = _$arr_64.from = _$arr_64.merge = _$arr_64.remove = _$arr_64.contains = void 0;

var contains = function contains(array, target) {
  return array.indexOf(target) !== -1;
};

_$arr_64.contains = contains;

var remove = function remove(array, target) {
  return array.splice(array.indexOf(target), 1);
};

_$arr_64.remove = remove;

var merge = function merge(target, source) {
  for (var _i = 0; _i < source.length; _i++) {
    var _ref;

    _ref = source[_i];
    var item = _ref;
    target.push(item);
  }

  return target;
};

_$arr_64.merge = merge;

var from = function from(source) {
  return merge([], source);
};

_$arr_64.from = from;

var findIndex = function findIndex(array, func) {
  for (var i = 0; i < array.length; i++) {
    if (func(array[i], i, array)) {
      return i;
    }
  }

  return -1;
};

_$arr_64.findIndex = findIndex;

var find = function find(array, func) {
  return array[findIndex(array, func)];
};

_$arr_64.find = find;

var _$domObjects_68 = {};
"use strict";

Object.defineProperty(_$domObjects_68, "__esModule", {
  value: true
});
_$domObjects_68["default"] = void 0;
var domObjects = {
  init: __init_68,
  document: null,
  DocumentFragment: null,
  SVGElement: null,
  SVGSVGElement: null,
  SVGElementInstance: null,
  Element: null,
  HTMLElement: null,
  Event: null,
  Touch: null,
  PointerEvent: null
};

function blank() {}

var ___default_68 = domObjects;
_$domObjects_68["default"] = ___default_68;

function __init_68(window) {
  var win = window;
  domObjects.document = win.document;
  domObjects.DocumentFragment = win.DocumentFragment || blank;
  domObjects.SVGElement = win.SVGElement || blank;
  domObjects.SVGSVGElement = win.SVGSVGElement || blank;
  domObjects.SVGElementInstance = win.SVGElementInstance || blank;
  domObjects.Element = win.Element || blank;
  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;
  domObjects.Event = win.Event;
  domObjects.Touch = win.Touch || blank;
  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;
}

var _$browser_65 = {};
"use strict";

function ___typeof_65(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_65 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_65 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_65(obj); }

Object.defineProperty(_$browser_65, "__esModule", {
  value: true
});
_$browser_65["default"] = void 0;

var _domObjects = ___interopRequireDefault_65(_$domObjects_68);

var __is_65 = ___interopRequireWildcard_65(_$is_76);

var _window = ___interopRequireDefault_65(_$window_83);

function ___getRequireWildcardCache_65() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_65 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_65(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_65(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_65(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_65(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var browser = {
  init: __init_65,
  supportsTouch: null,
  supportsPointerEvent: null,
  isIOS7: null,
  isIOS: null,
  isIe9: null,
  isOperaMobile: null,
  prefixedMatchesSelector: null,
  pEventTypes: null,
  wheelEvent: null
};

function __init_65(window) {
  var Element = _domObjects["default"].Element;
  var navigator = _window["default"].window.navigator; // Does the browser support touch input?

  browser.supportsTouch = 'ontouchstart' in window || __is_65.func(window.DocumentTouch) && _domObjects["default"].document instanceof window.DocumentTouch; // Does the browser support PointerEvents

  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!_domObjects["default"].PointerEvent;
  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7

  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\d]/.test(navigator.appVersion);
  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently

  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector

  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';
  browser.pEventTypes = browser.supportsPointerEvent ? _domObjects["default"].PointerEvent === window.MSPointerEvent ? {
    up: 'MSPointerUp',
    down: 'MSPointerDown',
    over: 'mouseover',
    out: 'mouseout',
    move: 'MSPointerMove',
    cancel: 'MSPointerCancel'
  } : {
    up: 'pointerup',
    down: 'pointerdown',
    over: 'pointerover',
    out: 'pointerout',
    move: 'pointermove',
    cancel: 'pointercancel'
  } : null; // because Webkit and Opera still use 'mousewheel' event type

  browser.wheelEvent = 'onmousewheel' in _domObjects["default"].document ? 'mousewheel' : 'wheel';
}

var ___default_65 = browser;
_$browser_65["default"] = ___default_65;

var _$clone_66 = {};
"use strict";

function ___typeof_66(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_66 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_66 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_66(obj); }

Object.defineProperty(_$clone_66, "__esModule", {
  value: true
});
_$clone_66["default"] = clone;

var arr = ___interopRequireWildcard_66(_$arr_64);

var __is_66 = ___interopRequireWildcard_66(_$is_76);

function ___getRequireWildcardCache_66() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_66 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_66(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_66(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_66(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

// tslint:disable-next-line ban-types
function clone(source) {
  var dest = {};

  for (var prop in source) {
    var value = source[prop];

    if (__is_66.plainObject(value)) {
      dest[prop] = clone(value);
    } else if (__is_66.array(value)) {
      dest[prop] = arr.from(value);
    } else {
      dest[prop] = value;
    }
  }

  return dest;
}

var _$domUtils_69 = {};
"use strict";

function ___typeof_69(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_69 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_69 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_69(obj); }

Object.defineProperty(_$domUtils_69, "__esModule", {
  value: true
});
_$domUtils_69.nodeContains = nodeContains;
_$domUtils_69.closest = closest;
_$domUtils_69.parentNode = parentNode;
_$domUtils_69.matchesSelector = matchesSelector;
_$domUtils_69.indexOfDeepestElement = indexOfDeepestElement;
_$domUtils_69.matchesUpTo = matchesUpTo;
_$domUtils_69.getActualElement = getActualElement;
_$domUtils_69.getScrollXY = getScrollXY;
_$domUtils_69.getElementClientRect = getElementClientRect;
_$domUtils_69.getElementRect = getElementRect;
_$domUtils_69.getPath = getPath;
_$domUtils_69.trySelector = trySelector;

var _browser = ___interopRequireDefault_69(_$browser_65);

var ___domObjects_69 = ___interopRequireDefault_69(_$domObjects_68);

var __is_69 = ___interopRequireWildcard_69(_$is_76);

var ___window_69 = ___interopRequireWildcard_69(_$window_83);

function ___getRequireWildcardCache_69() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_69 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_69(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_69(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_69(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_69(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function nodeContains(parent, child) {
  while (child) {
    if (child === parent) {
      return true;
    }

    child = child.parentNode;
  }

  return false;
}

function closest(element, selector) {
  while (__is_69.element(element)) {
    if (matchesSelector(element, selector)) {
      return element;
    }

    element = parentNode(element);
  }

  return null;
}

function parentNode(node) {
  var parent = node.parentNode;

  if (__is_69.docFrag(parent)) {
    // skip past #shado-root fragments
    // tslint:disable-next-line
    while ((parent = parent.host) && __is_69.docFrag(parent)) {
      continue;
    }

    return parent;
  }

  return parent;
}

function matchesSelector(element, selector) {
  // remove /deep/ from selectors if shadowDOM polyfill is used
  if (___window_69["default"].window !== ___window_69["default"].realWindow) {
    selector = selector.replace(/\/deep\//g, ' ');
  }

  return element[_browser["default"].prefixedMatchesSelector](selector);
}

var getParent = function getParent(el) {
  return el.parentNode ? el.parentNode : el.host;
}; // Test for the element that's "above" all other qualifiers


function indexOfDeepestElement(elements) {
  var deepestZoneParents = [];
  var deepestZone = elements[0];
  var index = deepestZone ? 0 : -1;
  var i;
  var n;

  for (i = 1; i < elements.length; i++) {
    var dropzone = elements[i]; // an element might belong to multiple selector dropzones

    if (!dropzone || dropzone === deepestZone) {
      continue;
    }

    if (!deepestZone) {
      deepestZone = dropzone;
      index = i;
      continue;
    } // check if the deepest or current are document.documentElement or document.rootElement
    // - if the current dropzone is, do nothing and continue


    if (dropzone.parentNode === dropzone.ownerDocument) {
      continue;
    } // - if deepest is, update with the current dropzone and continue to next
    else if (deepestZone.parentNode === dropzone.ownerDocument) {
        deepestZone = dropzone;
        index = i;
        continue;
      } // compare zIndex of siblings


    if (dropzone.parentNode === deepestZone.parentNode) {
      var deepestZIndex = parseInt((0, ___window_69.getWindow)(deepestZone).getComputedStyle(deepestZone).zIndex, 10) || 0;
      var dropzoneZIndex = parseInt((0, ___window_69.getWindow)(dropzone).getComputedStyle(dropzone).zIndex, 10) || 0;

      if (dropzoneZIndex >= deepestZIndex) {
        deepestZone = dropzone;
        index = i;
      }

      continue;
    } // populate the ancestry array for the latest deepest dropzone


    if (!deepestZoneParents.length) {
      var _parent = deepestZone;
      var parentParent = void 0;

      while ((parentParent = getParent(_parent)) && parentParent !== _parent.ownerDocument) {
        deepestZoneParents.unshift(_parent);
        _parent = parentParent;
      }
    }

    var parent = void 0; // if this element is an svg element and the current deepest is an
    // HTMLElement

    if (deepestZone instanceof ___domObjects_69["default"].HTMLElement && dropzone instanceof ___domObjects_69["default"].SVGElement && !(dropzone instanceof ___domObjects_69["default"].SVGSVGElement)) {
      if (dropzone === deepestZone.parentNode) {
        continue;
      }

      parent = dropzone.ownerSVGElement;
    } else {
      parent = dropzone;
    }

    var dropzoneParents = [];

    while (parent.parentNode !== parent.ownerDocument) {
      dropzoneParents.unshift(parent);
      parent = getParent(parent);
    }

    n = 0; // get (position of last common ancestor) + 1

    while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {
      n++;
    }

    var parents = [dropzoneParents[n - 1], dropzoneParents[n], deepestZoneParents[n]];
    var child = parents[0].lastChild;

    while (child) {
      if (child === parents[1]) {
        deepestZone = dropzone;
        index = i;
        deepestZoneParents = dropzoneParents;
        break;
      } else if (child === parents[2]) {
        break;
      }

      child = child.previousSibling;
    }
  }

  return index;
}

function matchesUpTo(element, selector, limit) {
  while (__is_69.element(element)) {
    if (matchesSelector(element, selector)) {
      return true;
    }

    element = parentNode(element);

    if (element === limit) {
      return matchesSelector(element, selector);
    }
  }

  return false;
}

function getActualElement(element) {
  return element instanceof ___domObjects_69["default"].SVGElementInstance ? element.correspondingUseElement : element;
}

function getScrollXY(relevantWindow) {
  relevantWindow = relevantWindow || ___window_69["default"].window;
  return {
    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,
    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop
  };
}

function getElementClientRect(element) {
  var clientRect = element instanceof ___domObjects_69["default"].SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];
  return clientRect && {
    left: clientRect.left,
    right: clientRect.right,
    top: clientRect.top,
    bottom: clientRect.bottom,
    width: clientRect.width || clientRect.right - clientRect.left,
    height: clientRect.height || clientRect.bottom - clientRect.top
  };
}

function getElementRect(element) {
  var clientRect = getElementClientRect(element);

  if (!_browser["default"].isIOS7 && clientRect) {
    var scroll = getScrollXY(___window_69["default"].getWindow(element));
    clientRect.left += scroll.x;
    clientRect.right += scroll.x;
    clientRect.top += scroll.y;
    clientRect.bottom += scroll.y;
  }

  return clientRect;
}

function getPath(node) {
  var path = [];

  while (node) {
    path.push(node);
    node = parentNode(node);
  }

  return path;
}

function trySelector(value) {
  if (!__is_69.string(value)) {
    return false;
  } // an exception will be raised if it is invalid


  ___domObjects_69["default"].document.querySelector(value);

  return true;
}

var _$pointerExtend_79 = {};
"use strict";

Object.defineProperty(_$pointerExtend_79, "__esModule", {
  value: true
});
_$pointerExtend_79["default"] = void 0;

function pointerExtend(dest, source) {
  for (var prop in source) {
    var prefixedPropREs = pointerExtend.prefixedPropREs;
    var deprecated = false; // skip deprecated prefixed properties

    for (var vendor in prefixedPropREs) {
      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {
        deprecated = true;
        break;
      }
    }

    if (!deprecated && typeof source[prop] !== 'function') {
      dest[prop] = source[prop];
    }
  }

  return dest;
}

pointerExtend.prefixedPropREs = {
  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,
  moz: /(Pressure)$/
};
var ___default_79 = pointerExtend;
_$pointerExtend_79["default"] = ___default_79;

var _$hypot_74 = {};
"use strict";

Object.defineProperty(_$hypot_74, "__esModule", {
  value: true
});
_$hypot_74["default"] = void 0;

var ___default_74 = function _default(x, y) {
  return Math.sqrt(x * x + y * y);
};

_$hypot_74["default"] = ___default_74;

var _$pointerUtils_80 = {};
"use strict";

function ___typeof_80(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_80 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_80 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_80(obj); }

Object.defineProperty(_$pointerUtils_80, "__esModule", {
  value: true
});
_$pointerUtils_80.copyCoords = copyCoords;
_$pointerUtils_80.setCoordDeltas = setCoordDeltas;
_$pointerUtils_80.setCoordVelocity = setCoordVelocity;
_$pointerUtils_80.setZeroCoords = setZeroCoords;
_$pointerUtils_80.isNativePointer = isNativePointer;
_$pointerUtils_80.getXY = getXY;
_$pointerUtils_80.getPageXY = getPageXY;
_$pointerUtils_80.getClientXY = getClientXY;
_$pointerUtils_80.getPointerId = getPointerId;
_$pointerUtils_80.setCoords = setCoords;
_$pointerUtils_80.getTouchPair = getTouchPair;
_$pointerUtils_80.pointerAverage = pointerAverage;
_$pointerUtils_80.touchBBox = touchBBox;
_$pointerUtils_80.touchDistance = touchDistance;
_$pointerUtils_80.touchAngle = touchAngle;
_$pointerUtils_80.getPointerType = getPointerType;
_$pointerUtils_80.getEventTargets = getEventTargets;
_$pointerUtils_80.newCoords = newCoords;
_$pointerUtils_80.coordsToEvent = coordsToEvent;
Object.defineProperty(_$pointerUtils_80, "pointerExtend", {
  enumerable: true,
  get: function get() {
    return _pointerExtend["default"];
  }
});

var ___browser_80 = ___interopRequireDefault_80(_$browser_65);

var ___domObjects_80 = ___interopRequireDefault_80(_$domObjects_68);

var domUtils = ___interopRequireWildcard_80(_$domUtils_69);

var _hypot = ___interopRequireDefault_80(_$hypot_74);

var __is_80 = ___interopRequireWildcard_80(_$is_76);

var _pointerExtend = ___interopRequireDefault_80(_$pointerExtend_79);

function ___getRequireWildcardCache_80() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_80 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_80(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_80(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_80(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_80(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function copyCoords(dest, src) {
  dest.page = dest.page || {};
  dest.page.x = src.page.x;
  dest.page.y = src.page.y;
  dest.client = dest.client || {};
  dest.client.x = src.client.x;
  dest.client.y = src.client.y;
  dest.timeStamp = src.timeStamp;
}

function setCoordDeltas(targetObj, prev, cur) {
  targetObj.page.x = cur.page.x - prev.page.x;
  targetObj.page.y = cur.page.y - prev.page.y;
  targetObj.client.x = cur.client.x - prev.client.x;
  targetObj.client.y = cur.client.y - prev.client.y;
  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;
}

function setCoordVelocity(targetObj, delta) {
  var dt = Math.max(delta.timeStamp / 1000, 0.001);
  targetObj.page.x = delta.page.x / dt;
  targetObj.page.y = delta.page.y / dt;
  targetObj.client.x = delta.client.x / dt;
  targetObj.client.y = delta.client.y / dt;
  targetObj.timeStamp = dt;
}

function setZeroCoords(targetObj) {
  targetObj.page.x = 0;
  targetObj.page.y = 0;
  targetObj.client.x = 0;
  targetObj.client.y = 0;
}

function isNativePointer(pointer) {
  return pointer instanceof ___domObjects_80["default"].Event || pointer instanceof ___domObjects_80["default"].Touch;
} // Get specified X/Y coords for mouse or event.touches[0]


function getXY(type, pointer, xy) {
  xy = xy || {};
  type = type || 'page';
  xy.x = pointer[type + 'X'];
  xy.y = pointer[type + 'Y'];
  return xy;
}

function getPageXY(pointer, page) {
  page = page || {
    x: 0,
    y: 0
  }; // Opera Mobile handles the viewport and scrolling oddly

  if (___browser_80["default"].isOperaMobile && isNativePointer(pointer)) {
    getXY('screen', pointer, page);
    page.x += window.scrollX;
    page.y += window.scrollY;
  } else {
    getXY('page', pointer, page);
  }

  return page;
}

function getClientXY(pointer, client) {
  client = client || {};

  if (___browser_80["default"].isOperaMobile && isNativePointer(pointer)) {
    // Opera Mobile handles the viewport and scrolling oddly
    getXY('screen', pointer, client);
  } else {
    getXY('client', pointer, client);
  }

  return client;
}

function getPointerId(pointer) {
  return __is_80.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;
}

function setCoords(targetObj, pointers, timeStamp) {
  var pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];
  var tmpXY = {};
  getPageXY(pointer, tmpXY);
  targetObj.page.x = tmpXY.x;
  targetObj.page.y = tmpXY.y;
  getClientXY(pointer, tmpXY);
  targetObj.client.x = tmpXY.x;
  targetObj.client.y = tmpXY.y;
  targetObj.timeStamp = timeStamp;
}

function getTouchPair(event) {
  var touches = []; // array of touches is supplied

  if (__is_80.array(event)) {
    touches[0] = event[0];
    touches[1] = event[1];
  } // an event
  else {
      if (event.type === 'touchend') {
        if (event.touches.length === 1) {
          touches[0] = event.touches[0];
          touches[1] = event.changedTouches[0];
        } else if (event.touches.length === 0) {
          touches[0] = event.changedTouches[0];
          touches[1] = event.changedTouches[1];
        }
      } else {
        touches[0] = event.touches[0];
        touches[1] = event.touches[1];
      }
    }

  return touches;
}

function pointerAverage(pointers) {
  var average = {
    pageX: 0,
    pageY: 0,
    clientX: 0,
    clientY: 0,
    screenX: 0,
    screenY: 0
  };

  for (var _i = 0; _i < pointers.length; _i++) {
    var _ref;

    _ref = pointers[_i];
    var pointer = _ref;

    for (var _prop in average) {
      average[_prop] += pointer[_prop];
    }
  }

  for (var prop in average) {
    average[prop] /= pointers.length;
  }

  return average;
}

function touchBBox(event) {
  if (!event.length && !(event.touches && event.touches.length > 1)) {
    return null;
  }

  var touches = getTouchPair(event);
  var minX = Math.min(touches[0].pageX, touches[1].pageX);
  var minY = Math.min(touches[0].pageY, touches[1].pageY);
  var maxX = Math.max(touches[0].pageX, touches[1].pageX);
  var maxY = Math.max(touches[0].pageY, touches[1].pageY);
  return {
    x: minX,
    y: minY,
    left: minX,
    top: minY,
    right: maxX,
    bottom: maxY,
    width: maxX - minX,
    height: maxY - minY
  };
}

function touchDistance(event, deltaSource) {
  var sourceX = deltaSource + 'X';
  var sourceY = deltaSource + 'Y';
  var touches = getTouchPair(event);
  var dx = touches[0][sourceX] - touches[1][sourceX];
  var dy = touches[0][sourceY] - touches[1][sourceY];
  return (0, _hypot["default"])(dx, dy);
}

function touchAngle(event, deltaSource) {
  var sourceX = deltaSource + 'X';
  var sourceY = deltaSource + 'Y';
  var touches = getTouchPair(event);
  var dx = touches[1][sourceX] - touches[0][sourceX];
  var dy = touches[1][sourceY] - touches[0][sourceY];
  var angle = 180 * Math.atan2(dy, dx) / Math.PI;
  return angle;
}

function getPointerType(pointer) {
  return __is_80.string(pointer.pointerType) ? pointer.pointerType : __is_80.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the "pointer" must
  // be either a MouseEvent, TouchEvent, or Touch object
  : /touch/.test(pointer.type) || pointer instanceof ___domObjects_80["default"].Touch ? 'touch' : 'mouse';
} // [ event.target, event.currentTarget ]


function getEventTargets(event) {
  var path = __is_80.func(event.composedPath) ? event.composedPath() : event.path;
  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];
}

function newCoords() {
  return {
    page: {
      x: 0,
      y: 0
    },
    client: {
      x: 0,
      y: 0
    },
    timeStamp: 0
  };
}

function coordsToEvent(coords) {
  var event = {
    coords: coords,

    get page() {
      return this.coords.page;
    },

    get client() {
      return this.coords.client;
    },

    get timeStamp() {
      return this.coords.timeStamp;
    },

    get pageX() {
      return this.coords.page.x;
    },

    get pageY() {
      return this.coords.page.y;
    },

    get clientX() {
      return this.coords.client.x;
    },

    get clientY() {
      return this.coords.client.y;
    },

    get pointerId() {
      return this.coords.pointerId;
    },

    get target() {
      return this.coords.target;
    },

    get type() {
      return this.coords.type;
    },

    get pointerType() {
      return this.coords.pointerType;
    },

    get buttons() {
      return this.coords.buttons;
    },

    preventDefault: function preventDefault() {}
  };
  return event;
}

var _$events_70 = {};
"use strict";

function ___typeof_70(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_70 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_70 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_70(obj); }

Object.defineProperty(_$events_70, "__esModule", {
  value: true
});
_$events_70["default"] = _$events_70.FakeEvent = void 0;

/* removed: var _$arr_64 = require("./arr"); */;

var __domUtils_70 = ___interopRequireWildcard_70(_$domUtils_69);

var __is_70 = ___interopRequireWildcard_70(_$is_76);

var ___pointerExtend_70 = ___interopRequireDefault_70(_$pointerExtend_79);

var pointerUtils = ___interopRequireWildcard_70(_$pointerUtils_80);

function ___interopRequireDefault_70(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_70() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_70 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_70(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_70(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_70(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

var elements = [];
var targets = [];
var delegatedEvents = {};
var documents = [];

function add(element, type, listener, optionalArg) {
  var options = getOptions(optionalArg);
  var elementIndex = elements.indexOf(element);
  var target = targets[elementIndex];

  if (!target) {
    target = {
      events: {},
      typeCount: 0
    };
    elementIndex = elements.push(element) - 1;
    targets.push(target);
  }

  if (!target.events[type]) {
    target.events[type] = [];
    target.typeCount++;
  }

  if (element.removeEventListener && !(0, _$arr_64.contains)(target.events[type], listener)) {
    element.addEventListener(type, listener, events.supportsOptions ? options : !!options.capture);
    target.events[type].push(listener);
  }
}

function __remove_70(element, type, listener, optionalArg) {
  var options = getOptions(optionalArg);
  var elementIndex = elements.indexOf(element);
  var target = targets[elementIndex];

  if (!target || !target.events) {
    return;
  }

  if (type === 'all') {
    for (type in target.events) {
      if (target.events.hasOwnProperty(type)) {
        __remove_70(element, type, 'all');
      }
    }

    return;
  }

  if (target.events[type]) {
    var len = target.events[type].length;

    if (listener === 'all') {
      for (var i = 0; i < len; i++) {
        __remove_70(element, type, target.events[type][i], options);
      }

      return;
    } else {
      for (var _i = 0; _i < len; _i++) {
        if (element.removeEventListener && target.events[type][_i] === listener) {
          element.removeEventListener(type, listener, events.supportsOptions ? options : !!options.capture);
          target.events[type].splice(_i, 1);
          break;
        }
      }
    }

    if (target.events[type] && target.events[type].length === 0) {
      target.events[type] = null;
      target.typeCount--;
    }
  }

  if (!target.typeCount) {
    targets.splice(elementIndex, 1);
    elements.splice(elementIndex, 1);
  }
}

function addDelegate(selector, context, type, listener, optionalArg) {
  var options = getOptions(optionalArg);

  if (!delegatedEvents[type]) {
    delegatedEvents[type] = {
      contexts: [],
      listeners: [],
      selectors: []
    }; // add delegate listener functions

    for (var _i2 = 0; _i2 < documents.length; _i2++) {
      var _ref;

      _ref = documents[_i2];
      var doc = _ref;
      add(doc, type, delegateListener);
      add(doc, type, delegateUseCapture, true);
    }
  }

  var delegated = delegatedEvents[type];
  var index;

  for (index = delegated.selectors.length - 1; index >= 0; index--) {
    if (delegated.selectors[index] === selector && delegated.contexts[index] === context) {
      break;
    }
  }

  if (index === -1) {
    index = delegated.selectors.length;
    delegated.selectors.push(selector);
    delegated.contexts.push(context);
    delegated.listeners.push([]);
  } // keep listener and capture and passive flags


  delegated.listeners[index].push([listener, !!options.capture, options.passive]);
}

function removeDelegate(selector, context, type, listener, optionalArg) {
  var options = getOptions(optionalArg);
  var delegated = delegatedEvents[type];
  var matchFound = false;
  var index;

  if (!delegated) {
    return;
  } // count from last index of delegated to 0


  for (index = delegated.selectors.length - 1; index >= 0; index--) {
    // look for matching selector and context Node
    if (delegated.selectors[index] === selector && delegated.contexts[index] === context) {
      var listeners = delegated.listeners[index]; // each item of the listeners array is an array: [function, capture, passive]

      for (var i = listeners.length - 1; i >= 0; i--) {
        var _listeners$i = _slicedToArray(listeners[i], 3),
            fn = _listeners$i[0],
            capture = _listeners$i[1],
            passive = _listeners$i[2]; // check if the listener functions and capture and passive flags match


        if (fn === listener && capture === !!options.capture && passive === options.passive) {
          // remove the listener from the array of listeners
          listeners.splice(i, 1); // if all listeners for this interactable have been removed
          // remove the interactable from the delegated arrays

          if (!listeners.length) {
            delegated.selectors.splice(index, 1);
            delegated.contexts.splice(index, 1);
            delegated.listeners.splice(index, 1); // remove delegate function from context

            __remove_70(context, type, delegateListener);
            __remove_70(context, type, delegateUseCapture, true); // remove the arrays if they are empty

            if (!delegated.selectors.length) {
              delegatedEvents[type] = null;
            }
          } // only remove one listener


          matchFound = true;
          break;
        }
      }

      if (matchFound) {
        break;
      }
    }
  }
} // bound to the interactable context when a DOM event
// listener is added to a selector interactable


function delegateListener(event, optionalArg) {
  var options = getOptions(optionalArg);
  var fakeEvent = new FakeEvent(event);
  var delegated = delegatedEvents[event.type];

  var _pointerUtils$getEven = pointerUtils.getEventTargets(event),
      _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 1),
      eventTarget = _pointerUtils$getEven2[0];

  var element = eventTarget; // climb up document tree looking for selector matches

  while (__is_70.element(element)) {
    for (var i = 0; i < delegated.selectors.length; i++) {
      var selector = delegated.selectors[i];
      var context = delegated.contexts[i];

      if (__domUtils_70.matchesSelector(element, selector) && __domUtils_70.nodeContains(context, eventTarget) && __domUtils_70.nodeContains(context, element)) {
        var listeners = delegated.listeners[i];
        fakeEvent.currentTarget = element;

        for (var _i3 = 0; _i3 < listeners.length; _i3++) {
          var _ref2;

          _ref2 = listeners[_i3];

          var _ref3 = _ref2,
              _ref4 = _slicedToArray(_ref3, 3),
              fn = _ref4[0],
              capture = _ref4[1],
              passive = _ref4[2];

          if (capture === !!options.capture && passive === options.passive) {
            fn(fakeEvent);
          }
        }
      }
    }

    element = __domUtils_70.parentNode(element);
  }
}

function delegateUseCapture(event) {
  return delegateListener.call(this, event, true);
}

function getOptions(param) {
  return __is_70.object(param) ? param : {
    capture: param
  };
}

var FakeEvent = /*#__PURE__*/function () {
  function FakeEvent(originalEvent) {
    _classCallCheck(this, FakeEvent);

    this.originalEvent = originalEvent;

    _defineProperty(this, "currentTarget", void 0);

    // duplicate the event so that currentTarget can be changed
    (0, ___pointerExtend_70["default"])(this, originalEvent);
  }

  _createClass(FakeEvent, [{
    key: "preventOriginalDefault",
    value: function preventOriginalDefault() {
      this.originalEvent.preventDefault();
    }
  }, {
    key: "stopPropagation",
    value: function stopPropagation() {
      this.originalEvent.stopPropagation();
    }
  }, {
    key: "stopImmediatePropagation",
    value: function stopImmediatePropagation() {
      this.originalEvent.stopImmediatePropagation();
    }
  }]);

  return FakeEvent;
}();

_$events_70.FakeEvent = FakeEvent;
var events = {
  add: add,
  remove: __remove_70,
  addDelegate: addDelegate,
  removeDelegate: removeDelegate,
  delegateListener: delegateListener,
  delegateUseCapture: delegateUseCapture,
  delegatedEvents: delegatedEvents,
  documents: documents,
  supportsOptions: false,
  supportsPassive: false,
  _elements: elements,
  _targets: targets,
  init: function init(window) {
    window.document.createElement('div').addEventListener('test', null, {
      get capture() {
        return events.supportsOptions = true;
      },

      get passive() {
        return events.supportsPassive = true;
      }

    });
  }
};
var ___default_70 = events;
_$events_70["default"] = ___default_70;

var _$extend_72 = {};
"use strict";

Object.defineProperty(_$extend_72, "__esModule", {
  value: true
});
_$extend_72["default"] = extend;

function extend(dest, source) {
  for (var prop in source) {
    dest[prop] = source[prop];
  }

  var ret = dest;
  return ret;
}

var _$normalizeListeners_78 = {};
"use strict";

function ___typeof_78(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_78 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_78 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_78(obj); }

Object.defineProperty(_$normalizeListeners_78, "__esModule", {
  value: true
});
_$normalizeListeners_78["default"] = normalize;

var _extend = ___interopRequireDefault_78(_$extend_72);

var __is_78 = ___interopRequireWildcard_78(_$is_76);

function ___getRequireWildcardCache_78() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_78 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_78(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_78(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_78(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_78(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function normalize(type, listeners, result) {
  result = result || {};

  if (__is_78.string(type) && type.search(' ') !== -1) {
    type = split(type);
  }

  if (__is_78.array(type)) {
    return type.reduce(function (acc, t) {
      return (0, _extend["default"])(acc, normalize(t, listeners, result));
    }, result);
  } // ({ type: fn }) -> ('', { type: fn })


  if (__is_78.object(type)) {
    listeners = type;
    type = '';
  }

  if (__is_78.func(listeners)) {
    result[type] = result[type] || [];
    result[type].push(listeners);
  } else if (__is_78.array(listeners)) {
    for (var _i = 0; _i < listeners.length; _i++) {
      var _ref;

      _ref = listeners[_i];
      var l = _ref;
      normalize(type, l, result);
    }
  } else if (__is_78.object(listeners)) {
    for (var prefix in listeners) {
      var combinedTypes = split(prefix).map(function (p) {
        return "".concat(type).concat(p);
      });
      normalize(combinedTypes, listeners[prefix], result);
    }
  }

  return result;
}

function split(type) {
  return type.trim().split(/ +/);
}

var _$Eventable_17 = {};
"use strict";

function ___typeof_17(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_17 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_17 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_17(obj); }

Object.defineProperty(_$Eventable_17, "__esModule", {
  value: true
});
_$Eventable_17["default"] = void 0;

var __arr_17 = ___interopRequireWildcard_17(_$arr_64);

var ___extend_17 = ___interopRequireDefault_17(_$extend_72);

var _normalizeListeners = ___interopRequireDefault_17(_$normalizeListeners_78);

function ___interopRequireDefault_17(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_17() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_17 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_17(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_17(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_17(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___classCallCheck_17(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_17(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_17(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_17(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_17(Constructor, staticProps); return Constructor; }

function ___defineProperty_17(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function fireUntilImmediateStopped(event, listeners) {
  for (var _i = 0; _i < listeners.length; _i++) {
    var _ref;

    _ref = listeners[_i];
    var listener = _ref;

    if (event.immediatePropagationStopped) {
      break;
    }

    listener(event);
  }
}

var Eventable = /*#__PURE__*/function () {
  function Eventable(options) {
    ___classCallCheck_17(this, Eventable);

    ___defineProperty_17(this, "options", void 0);

    ___defineProperty_17(this, "types", {});

    ___defineProperty_17(this, "propagationStopped", false);

    ___defineProperty_17(this, "immediatePropagationStopped", false);

    ___defineProperty_17(this, "global", void 0);

    this.options = (0, ___extend_17["default"])({}, options || {});
  }

  ___createClass_17(Eventable, [{
    key: "fire",
    value: function fire(event) {
      var listeners;
      var global = this.global; // Interactable#on() listeners
      // tslint:disable no-conditional-assignment

      if (listeners = this.types[event.type]) {
        fireUntilImmediateStopped(event, listeners);
      } // interact.on() listeners


      if (!event.propagationStopped && global && (listeners = global[event.type])) {
        fireUntilImmediateStopped(event, listeners);
      }
    }
  }, {
    key: "on",
    value: function on(type, listener) {
      var listeners = (0, _normalizeListeners["default"])(type, listener);

      for (type in listeners) {
        this.types[type] = __arr_17.merge(this.types[type] || [], listeners[type]);
      }
    }
  }, {
    key: "off",
    value: function off(type, listener) {
      var listeners = (0, _normalizeListeners["default"])(type, listener);

      for (type in listeners) {
        var eventList = this.types[type];

        if (!eventList || !eventList.length) {
          continue;
        }

        for (var _i2 = 0; _i2 < listeners[type].length; _i2++) {
          var _ref2;

          _ref2 = listeners[type][_i2];
          var subListener = _ref2;

          var _index = eventList.indexOf(subListener);

          if (_index !== -1) {
            eventList.splice(_index, 1);
          }
        }
      }
    }
  }, {
    key: "getRect",
    value: function getRect(_element) {
      return null;
    }
  }]);

  return Eventable;
}();

var ___default_17 = Eventable;
_$Eventable_17["default"] = ___default_17;

var _$rect_82 = {};
"use strict";

function ___typeof_82(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_82 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_82 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_82(obj); }

Object.defineProperty(_$rect_82, "__esModule", {
  value: true
});
_$rect_82.getStringOptionResult = getStringOptionResult;
_$rect_82.resolveRectLike = resolveRectLike;
_$rect_82.rectToXY = rectToXY;
_$rect_82.xywhToTlbr = xywhToTlbr;
_$rect_82.tlbrToXywh = tlbrToXywh;
_$rect_82.addEdges = addEdges;

/* removed: var _$domUtils_69 = require("./domUtils"); */;

var ___extend_82 = ___interopRequireDefault_82(_$extend_72);

var __is_82 = ___interopRequireWildcard_82(_$is_76);

function ___getRequireWildcardCache_82() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_82 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_82(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_82(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_82(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_82(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }

function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }

function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }

function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }

function getStringOptionResult(value, target, element) {
  if (value === 'parent') {
    return (0, _$domUtils_69.parentNode)(element);
  }

  if (value === 'self') {
    return target.getRect(element);
  }

  return (0, _$domUtils_69.closest)(element, value);
}

function resolveRectLike(value, target, element, functionArgs) {
  var returnValue = value;

  if (__is_82.string(returnValue)) {
    returnValue = getStringOptionResult(returnValue, target, element);
  } else if (__is_82.func(returnValue)) {
    returnValue = returnValue.apply(void 0, _toConsumableArray(functionArgs));
  }

  if (__is_82.element(returnValue)) {
    returnValue = (0, _$domUtils_69.getElementRect)(returnValue);
  }

  return returnValue;
}

function rectToXY(rect) {
  return rect && {
    x: 'x' in rect ? rect.x : rect.left,
    y: 'y' in rect ? rect.y : rect.top
  };
}

function xywhToTlbr(rect) {
  if (rect && !('left' in rect && 'top' in rect)) {
    rect = (0, ___extend_82["default"])({}, rect);
    rect.left = rect.x || 0;
    rect.top = rect.y || 0;
    rect.right = rect.right || rect.left + rect.width;
    rect.bottom = rect.bottom || rect.top + rect.height;
  }

  return rect;
}

function tlbrToXywh(rect) {
  if (rect && !('x' in rect && 'y' in rect)) {
    rect = (0, ___extend_82["default"])({}, rect);
    rect.x = rect.left || 0;
    rect.y = rect.top || 0;
    rect.width = rect.width || rect.right || 0 - rect.x;
    rect.height = rect.height || rect.bottom || 0 - rect.y;
  }

  return rect;
}

function addEdges(edges, rect, delta) {
  if (edges.left) {
    rect.left += delta.x;
  }

  if (edges.right) {
    rect.right += delta.x;
  }

  if (edges.top) {
    rect.top += delta.y;
  }

  if (edges.bottom) {
    rect.bottom += delta.y;
  }

  rect.width = rect.right - rect.left;
  rect.height = rect.bottom - rect.top;
}

var _$getOriginXY_73 = {};
"use strict";

Object.defineProperty(_$getOriginXY_73, "__esModule", {
  value: true
});
_$getOriginXY_73["default"] = ___default_73;

/* removed: var _$rect_82 = require("./rect"); */;

function ___default_73(target, element, actionName) {
  var actionOptions = target.options[actionName];
  var actionOrigin = actionOptions && actionOptions.origin;
  var origin = actionOrigin || target.options.origin;
  var originRect = (0, _$rect_82.resolveRectLike)(origin, target, element, [target && element]);
  return (0, _$rect_82.rectToXY)(originRect) || {
    x: 0,
    y: 0
  };
}

var _$raf_81 = {};
"use strict";

Object.defineProperty(_$raf_81, "__esModule", {
  value: true
});
_$raf_81["default"] = void 0;
var lastTime = 0;

var _request;

var _cancel;

function __init_81(window) {
  _request = window.requestAnimationFrame;
  _cancel = window.cancelAnimationFrame;

  if (!_request) {
    var vendors = ['ms', 'moz', 'webkit', 'o'];

    for (var _i = 0; _i < vendors.length; _i++) {
      var vendor = vendors[_i];
      _request = window["".concat(vendor, "RequestAnimationFrame")];
      _cancel = window["".concat(vendor, "CancelAnimationFrame")] || window["".concat(vendor, "CancelRequestAnimationFrame")];
    }
  }

  if (!_request) {
    _request = function request(callback) {
      var currTime = Date.now();
      var timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line standard/no-callback-literal

      var token = setTimeout(function () {
        callback(currTime + timeToCall);
      }, timeToCall);
      lastTime = currTime + timeToCall;
      return token;
    };

    _cancel = function cancel(token) {
      return clearTimeout(token);
    };
  }
}

var ___default_81 = {
  request: function request(callback) {
    return _request(callback);
  },
  cancel: function cancel(token) {
    return _cancel(token);
  },
  init: __init_81
};
_$raf_81["default"] = ___default_81;

var _$index_75 = {};
"use strict";

function ___typeof_75(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_75 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_75 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_75(obj); }

Object.defineProperty(_$index_75, "__esModule", {
  value: true
});
_$index_75.warnOnce = warnOnce;
_$index_75.copyAction = copyAction;
Object.defineProperty(_$index_75, "win", {
  enumerable: true,
  get: function get() {
    return ___window_75["default"];
  }
});
Object.defineProperty(_$index_75, "browser", {
  enumerable: true,
  get: function get() {
    return ___browser_75["default"];
  }
});
Object.defineProperty(_$index_75, "clone", {
  enumerable: true,
  get: function get() {
    return _clone["default"];
  }
});
Object.defineProperty(_$index_75, "events", {
  enumerable: true,
  get: function get() {
    return _events["default"];
  }
});
Object.defineProperty(_$index_75, "extend", {
  enumerable: true,
  get: function get() {
    return ___extend_75["default"];
  }
});
Object.defineProperty(_$index_75, "getOriginXY", {
  enumerable: true,
  get: function get() {
    return _getOriginXY["default"];
  }
});
Object.defineProperty(_$index_75, "hypot", {
  enumerable: true,
  get: function get() {
    return ___hypot_75["default"];
  }
});
Object.defineProperty(_$index_75, "normalizeListeners", {
  enumerable: true,
  get: function get() {
    return ___normalizeListeners_75["default"];
  }
});
Object.defineProperty(_$index_75, "raf", {
  enumerable: true,
  get: function get() {
    return _raf["default"];
  }
});
_$index_75.rect = _$index_75.pointer = _$index_75.is = _$index_75.dom = _$index_75.arr = void 0;

var __arr_75 = ___interopRequireWildcard_75(_$arr_64);

_$index_75.arr = __arr_75;

var dom = ___interopRequireWildcard_75(_$domUtils_69);

_$index_75.dom = dom;

var __is_75 = ___interopRequireWildcard_75(_$is_76);

_$index_75.is = __is_75;

var pointer = ___interopRequireWildcard_75(_$pointerUtils_80);

_$index_75.pointer = pointer;

var rect = ___interopRequireWildcard_75(_$rect_82);

_$index_75.rect = rect;

var ___window_75 = ___interopRequireDefault_75(_$window_83);

var ___browser_75 = ___interopRequireDefault_75(_$browser_65);

var _clone = ___interopRequireDefault_75(_$clone_66);

var _events = ___interopRequireDefault_75(_$events_70);

var ___extend_75 = ___interopRequireDefault_75(_$extend_72);

var _getOriginXY = ___interopRequireDefault_75(_$getOriginXY_73);

var ___hypot_75 = ___interopRequireDefault_75(_$hypot_74);

var ___normalizeListeners_75 = ___interopRequireDefault_75(_$normalizeListeners_78);

var _raf = ___interopRequireDefault_75(_$raf_81);

function ___interopRequireDefault_75(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_75() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_75 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_75(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_75(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_75(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function warnOnce(method, message) {
  var warned = false; // eslint-disable-next-line no-shadow

  return function () {
    if (!warned) {
      ___window_75["default"].window.console.warn(message);

      warned = true;
    }

    return method.apply(this, arguments);
  };
}

function copyAction(dest, src) {
  dest.name = src.name;
  dest.axis = src.axis;
  dest.edges = src.edges;
  return dest;
}

var _$BaseEvent_16 = {};
"use strict";

Object.defineProperty(_$BaseEvent_16, "__esModule", {
  value: true
});
_$BaseEvent_16["default"] = _$BaseEvent_16.BaseEvent = void 0;

function ___classCallCheck_16(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_16(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_16(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_16(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_16(Constructor, staticProps); return Constructor; }

function ___defineProperty_16(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var BaseEvent = /*#__PURE__*/function () {
  ___createClass_16(BaseEvent, [{
    key: "interaction",
    get: function get() {
      return this._interaction._proxy;
    }
  }]);

  function BaseEvent(interaction) {
    ___classCallCheck_16(this, BaseEvent);

    ___defineProperty_16(this, "type", void 0);

    ___defineProperty_16(this, "target", void 0);

    ___defineProperty_16(this, "currentTarget", void 0);

    ___defineProperty_16(this, "interactable", void 0);

    ___defineProperty_16(this, "_interaction", void 0);

    ___defineProperty_16(this, "timeStamp", void 0);

    ___defineProperty_16(this, "immediatePropagationStopped", false);

    ___defineProperty_16(this, "propagationStopped", false);

    this._interaction = interaction;
  }

  ___createClass_16(BaseEvent, [{
    key: "preventDefault",
    value: function preventDefault() {}
    /**
     * Don't call any other listeners (even on the current target)
     */

  }, {
    key: "stopPropagation",
    value: function stopPropagation() {
      this.propagationStopped = true;
    }
    /**
     * Don't call listeners on the remaining targets
     */

  }, {
    key: "stopImmediatePropagation",
    value: function stopImmediatePropagation() {
      this.immediatePropagationStopped = this.propagationStopped = true;
    }
  }]);

  return BaseEvent;
}();

_$BaseEvent_16.BaseEvent = BaseEvent;
var ___default_16 = BaseEvent;
_$BaseEvent_16["default"] = ___default_16;

var _$defaultOptions_24 = {};
"use strict";

Object.defineProperty(_$defaultOptions_24, "__esModule", {
  value: true
});
_$defaultOptions_24["default"] = _$defaultOptions_24.defaults = void 0;
// tslint:disable no-empty-interface
// eslint-disable-next-line @typescript-eslint/no-empty-interface
// export interface Options extends BaseDefaults, PerActionDefaults {}
var defaults = {
  base: {
    preventDefault: 'auto',
    deltaSource: 'page'
  },
  perAction: {
    enabled: false,
    origin: {
      x: 0,
      y: 0
    }
  },
  actions: {}
};
_$defaultOptions_24.defaults = defaults;
var ___default_24 = defaults;
_$defaultOptions_24["default"] = ___default_24;

var _$InteractEvent_18 = {};
"use strict";

Object.defineProperty(_$InteractEvent_18, "__esModule", {
  value: true
});
_$InteractEvent_18["default"] = _$InteractEvent_18.InteractEvent = void 0;

var ___extend_18 = ___interopRequireDefault_18(_$extend_72);

var ___getOriginXY_18 = ___interopRequireDefault_18(_$getOriginXY_73);

var ___hypot_18 = ___interopRequireDefault_18(_$hypot_74);

var _BaseEvent2 = ___interopRequireDefault_18(_$BaseEvent_16);

var _defaultOptions = ___interopRequireDefault_18(_$defaultOptions_24);

function ___interopRequireDefault_18(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___typeof_18(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_18 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_18 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_18(obj); }

function ___classCallCheck_18(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_18(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_18(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_18(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_18(Constructor, staticProps); return Constructor; }

function _possibleConstructorReturn(self, call) { if (call && (___typeof_18(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function ___defineProperty_18(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var InteractEvent = /*#__PURE__*/function (_BaseEvent) {
  _inherits(InteractEvent, _BaseEvent);

  // drag
  // resize

  /** */
  function InteractEvent(interaction, event, actionName, phase, element, preEnd, type) {
    var _this;

    ___classCallCheck_18(this, InteractEvent);

    _this = _possibleConstructorReturn(this, _getPrototypeOf(InteractEvent).call(this, interaction));

    ___defineProperty_18(_assertThisInitialized(_this), "target", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "currentTarget", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "relatedTarget", null);

    ___defineProperty_18(_assertThisInitialized(_this), "screenX", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "screenY", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "button", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "buttons", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "ctrlKey", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "shiftKey", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "altKey", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "metaKey", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "page", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "client", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "delta", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "rect", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "x0", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "y0", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "t0", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "dt", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "duration", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "clientX0", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "clientY0", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "velocity", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "speed", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "swipe", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "timeStamp", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "dragEnter", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "dragLeave", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "axes", void 0);

    ___defineProperty_18(_assertThisInitialized(_this), "preEnd", void 0);

    element = element || interaction.element;
    var target = interaction.interactable;
    var deltaSource = (target && target.options || _defaultOptions["default"]).deltaSource;
    var origin = (0, ___getOriginXY_18["default"])(target, element, actionName);
    var starting = phase === 'start';
    var ending = phase === 'end';
    var prevEvent = starting ? _assertThisInitialized(_this) : interaction.prevEvent;
    var coords = starting ? interaction.coords.start : ending ? {
      page: prevEvent.page,
      client: prevEvent.client,
      timeStamp: interaction.coords.cur.timeStamp
    } : interaction.coords.cur;
    _this.page = (0, ___extend_18["default"])({}, coords.page);
    _this.client = (0, ___extend_18["default"])({}, coords.client);
    _this.rect = (0, ___extend_18["default"])({}, interaction.rect);
    _this.timeStamp = coords.timeStamp;

    if (!ending) {
      _this.page.x -= origin.x;
      _this.page.y -= origin.y;
      _this.client.x -= origin.x;
      _this.client.y -= origin.y;
    }

    _this.ctrlKey = event.ctrlKey;
    _this.altKey = event.altKey;
    _this.shiftKey = event.shiftKey;
    _this.metaKey = event.metaKey;
    _this.button = event.button;
    _this.buttons = event.buttons;
    _this.target = element;
    _this.currentTarget = element;
    _this.preEnd = preEnd;
    _this.type = type || actionName + (phase || '');
    _this.interactable = target;
    _this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;
    _this.x0 = interaction.coords.start.page.x - origin.x;
    _this.y0 = interaction.coords.start.page.y - origin.y;
    _this.clientX0 = interaction.coords.start.client.x - origin.x;
    _this.clientY0 = interaction.coords.start.client.y - origin.y;

    if (starting || ending) {
      _this.delta = {
        x: 0,
        y: 0
      };
    } else {
      _this.delta = {
        x: _this[deltaSource].x - prevEvent[deltaSource].x,
        y: _this[deltaSource].y - prevEvent[deltaSource].y
      };
    }

    _this.dt = interaction.coords.delta.timeStamp;
    _this.duration = _this.timeStamp - _this.t0; // velocity and speed in pixels per second

    _this.velocity = (0, ___extend_18["default"])({}, interaction.coords.velocity[deltaSource]);
    _this.speed = (0, ___hypot_18["default"])(_this.velocity.x, _this.velocity.y);
    _this.swipe = ending || phase === 'inertiastart' ? _this.getSwipe() : null;
    return _this;
  }

  ___createClass_18(InteractEvent, [{
    key: "getSwipe",
    value: function getSwipe() {
      var interaction = this._interaction;

      if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {
        return null;
      }

      var angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;
      var overlap = 22.5;

      if (angle < 0) {
        angle += 360;
      }

      var left = 135 - overlap <= angle && angle < 225 + overlap;
      var up = 225 - overlap <= angle && angle < 315 + overlap;
      var right = !left && (315 - overlap <= angle || angle < 45 + overlap);
      var down = !up && 45 - overlap <= angle && angle < 135 + overlap;
      return {
        up: up,
        down: down,
        left: left,
        right: right,
        angle: angle,
        speed: interaction.prevEvent.speed,
        velocity: {
          x: interaction.prevEvent.velocityX,
          y: interaction.prevEvent.velocityY
        }
      };
    }
  }, {
    key: "preventDefault",
    value: function preventDefault() {}
    /**
     * Don't call listeners on the remaining targets
     */

  }, {
    key: "stopImmediatePropagation",
    value: function stopImmediatePropagation() {
      this.immediatePropagationStopped = this.propagationStopped = true;
    }
    /**
     * Don't call any other listeners (even on the current target)
     */

  }, {
    key: "stopPropagation",
    value: function stopPropagation() {
      this.propagationStopped = true;
    }
  }, {
    key: "pageX",
    get: function get() {
      return this.page.x;
    },
    set: function set(value) {
      this.page.x = value;
    }
  }, {
    key: "pageY",
    get: function get() {
      return this.page.y;
    },
    set: function set(value) {
      this.page.y = value;
    }
  }, {
    key: "clientX",
    get: function get() {
      return this.client.x;
    },
    set: function set(value) {
      this.client.x = value;
    }
  }, {
    key: "clientY",
    get: function get() {
      return this.client.y;
    },
    set: function set(value) {
      this.client.y = value;
    }
  }, {
    key: "dx",
    get: function get() {
      return this.delta.x;
    },
    set: function set(value) {
      this.delta.x = value;
    }
  }, {
    key: "dy",
    get: function get() {
      return this.delta.y;
    },
    set: function set(value) {
      this.delta.y = value;
    }
  }, {
    key: "velocityX",
    get: function get() {
      return this.velocity.x;
    },
    set: function set(value) {
      this.velocity.x = value;
    }
  }, {
    key: "velocityY",
    get: function get() {
      return this.velocity.y;
    },
    set: function set(value) {
      this.velocity.y = value;
    }
  }]);

  return InteractEvent;
}(_BaseEvent2["default"]);

_$InteractEvent_18.InteractEvent = InteractEvent;
var ___default_18 = InteractEvent;
_$InteractEvent_18["default"] = ___default_18;

var _$InteractableSet_21 = {};
"use strict";

function ___typeof_21(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_21 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_21 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_21(obj); }

Object.defineProperty(_$InteractableSet_21, "__esModule", {
  value: true
});
_$InteractableSet_21["default"] = void 0;

var __arr_21 = ___interopRequireWildcard_21(_$arr_64);

var __domUtils_21 = ___interopRequireWildcard_21(_$domUtils_69);

var ___extend_21 = ___interopRequireDefault_21(_$extend_72);

var __is_21 = ___interopRequireWildcard_21(_$is_76);

function ___interopRequireDefault_21(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_21() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_21 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_21(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_21(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_21(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___classCallCheck_21(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_21(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_21(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_21(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_21(Constructor, staticProps); return Constructor; }

function ___defineProperty_21(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var InteractableSet = /*#__PURE__*/function () {
  // all set interactables
  function InteractableSet(scope) {
    var _this = this;

    ___classCallCheck_21(this, InteractableSet);

    this.scope = scope;

    ___defineProperty_21(this, "list", []);

    ___defineProperty_21(this, "selectorMap", {});

    scope.addListeners({
      'interactable:unset': function interactableUnset(_ref) {
        var interactable = _ref.interactable;
        var target = interactable.target,
            context = interactable._context;
        var targetMappings = __is_21.string(target) ? _this.selectorMap[target] : target[_this.scope.id];
        var targetIndex = targetMappings.findIndex(function (m) {
          return m.context === context;
        });

        if (targetMappings[targetIndex]) {
          // Destroying mappingInfo's context and interactable
          targetMappings[targetIndex].context = null;
          targetMappings[targetIndex].interactable = null;
        }

        targetMappings.splice(targetIndex, 1);
      }
    });
  }

  ___createClass_21(InteractableSet, [{
    key: "new",
    value: function _new(target, options) {
      options = (0, ___extend_21["default"])(options || {}, {
        actions: this.scope.actions
      });
      var interactable = new this.scope.Interactable(target, options, this.scope.document);
      var mappingInfo = {
        context: interactable._context,
        interactable: interactable
      };
      this.scope.addDocument(interactable._doc);
      this.list.push(interactable);

      if (__is_21.string(target)) {
        if (!this.selectorMap[target]) {
          this.selectorMap[target] = [];
        }

        this.selectorMap[target].push(mappingInfo);
      } else {
        if (!interactable.target[this.scope.id]) {
          Object.defineProperty(target, this.scope.id, {
            value: [],
            configurable: true
          });
        }

        target[this.scope.id].push(mappingInfo);
      }

      this.scope.fire('interactable:new', {
        target: target,
        options: options,
        interactable: interactable,
        win: this.scope._win
      });
      return interactable;
    }
  }, {
    key: "get",
    value: function get(target, options) {
      var context = options && options.context || this.scope.document;
      var isSelector = __is_21.string(target);
      var targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];

      if (!targetMappings) {
        return null;
      }

      var found = __arr_21.find(targetMappings, function (m) {
        return m.context === context && (isSelector || m.interactable.inContext(target));
      });
      return found && found.interactable;
    }
  }, {
    key: "forEachMatch",
    value: function forEachMatch(node, callback) {
      for (var _i = 0; _i < this.list.length; _i++) {
        var _ref2;

        _ref2 = this.list[_i];
        var _interactable = _ref2;
        var ret = void 0;

        if ((__is_21.string(_interactable.target) // target is a selector and the element matches
        ? __is_21.element(node) && __domUtils_21.matchesSelector(node, _interactable.target) : // target is the element
        node === _interactable.target) && // the element is in context
        _interactable.inContext(node)) {
          ret = callback(_interactable);
        }

        if (ret !== undefined) {
          return ret;
        }
      }
    }
  }]);

  return InteractableSet;
}();

_$InteractableSet_21["default"] = InteractableSet;

var _$PointerInfo_23 = {};
"use strict";

Object.defineProperty(_$PointerInfo_23, "__esModule", {
  value: true
});
_$PointerInfo_23["default"] = _$PointerInfo_23.PointerInfo = void 0;

function ___classCallCheck_23(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

/* eslint-disable @typescript-eslint/no-parameter-properties */
var PointerInfo = function PointerInfo(id, pointer, event, downTime, downTarget) {
  ___classCallCheck_23(this, PointerInfo);

  this.id = id;
  this.pointer = pointer;
  this.event = event;
  this.downTime = downTime;
  this.downTarget = downTarget;
};

_$PointerInfo_23.PointerInfo = PointerInfo;
var ___default_23 = PointerInfo;
_$PointerInfo_23["default"] = ___default_23;

var _$Interaction_22 = {};
"use strict";

function ___typeof_22(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_22 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_22 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_22(obj); }

Object.defineProperty(_$Interaction_22, "__esModule", {
  value: true
});
Object.defineProperty(_$Interaction_22, "PointerInfo", {
  enumerable: true,
  get: function get() {
    return _PointerInfo["default"];
  }
});
_$Interaction_22["default"] = _$Interaction_22.Interaction = _$Interaction_22._ProxyMethods = _$Interaction_22._ProxyValues = void 0;

var __utils_22 = ___interopRequireWildcard_22(_$index_75);

var _InteractEvent = ___interopRequireDefault_22(_$InteractEvent_18);

var _PointerInfo = ___interopRequireDefault_22(_$PointerInfo_23);

function ___interopRequireDefault_22(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_22() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_22 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_22(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_22(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_22(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___classCallCheck_22(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_22(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_22(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_22(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_22(Constructor, staticProps); return Constructor; }

function ___defineProperty_22(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var _ProxyValues;

_$Interaction_22._ProxyValues = _ProxyValues;

(function (_ProxyValues) {
  _ProxyValues["interactable"] = "";
  _ProxyValues["element"] = "";
  _ProxyValues["prepared"] = "";
  _ProxyValues["pointerIsDown"] = "";
  _ProxyValues["pointerWasMoved"] = "";
  _ProxyValues["_proxy"] = "";
})(_ProxyValues || (_$Interaction_22._ProxyValues = _ProxyValues = {}));

var _ProxyMethods;

_$Interaction_22._ProxyMethods = _ProxyMethods;

(function (_ProxyMethods) {
  _ProxyMethods["start"] = "";
  _ProxyMethods["move"] = "";
  _ProxyMethods["end"] = "";
  _ProxyMethods["stop"] = "";
  _ProxyMethods["interacting"] = "";
})(_ProxyMethods || (_$Interaction_22._ProxyMethods = _ProxyMethods = {}));

var idCounter = 0;

var Interaction = /*#__PURE__*/function () {
  ___createClass_22(Interaction, [{
    key: "pointerMoveTolerance",
    // current interactable being interacted with
    // the target element of the interactable
    // action that's ready to be fired on next move event
    // keep track of added pointers
    // pointerdown/mousedown/touchstart event
    // previous action event
    get: function get() {
      return 1;
    }
    /**
     * @alias Interaction.prototype.move
     */

  }]);

  /** */
  function Interaction(_ref) {
    var _this = this;

    var pointerType = _ref.pointerType,
        scopeFire = _ref.scopeFire;

    ___classCallCheck_22(this, Interaction);

    ___defineProperty_22(this, "interactable", null);

    ___defineProperty_22(this, "element", null);

    ___defineProperty_22(this, "rect", void 0);

    ___defineProperty_22(this, "_rects", void 0);

    ___defineProperty_22(this, "edges", void 0);

    ___defineProperty_22(this, "_scopeFire", void 0);

    ___defineProperty_22(this, "prepared", {
      name: null,
      axis: null,
      edges: null
    });

    ___defineProperty_22(this, "pointerType", void 0);

    ___defineProperty_22(this, "pointers", []);

    ___defineProperty_22(this, "downEvent", null);

    ___defineProperty_22(this, "downPointer", {});

    ___defineProperty_22(this, "_latestPointer", {
      pointer: null,
      event: null,
      eventTarget: null
    });

    ___defineProperty_22(this, "prevEvent", null);

    ___defineProperty_22(this, "pointerIsDown", false);

    ___defineProperty_22(this, "pointerWasMoved", false);

    ___defineProperty_22(this, "_interacting", false);

    ___defineProperty_22(this, "_ending", false);

    ___defineProperty_22(this, "_stopped", true);

    ___defineProperty_22(this, "_proxy", null);

    ___defineProperty_22(this, "simulation", null);

    ___defineProperty_22(this, "doMove", __utils_22.warnOnce(function (signalArg) {
      this.move(signalArg);
    }, 'The interaction.doMove() method has been renamed to interaction.move()'));

    ___defineProperty_22(this, "coords", {
      // Starting InteractEvent pointer coordinates
      start: __utils_22.pointer.newCoords(),
      // Previous native pointer move event coordinates
      prev: __utils_22.pointer.newCoords(),
      // current native pointer move event coordinates
      cur: __utils_22.pointer.newCoords(),
      // Change in coordinates and time of the pointer
      delta: __utils_22.pointer.newCoords(),
      // pointer velocity
      velocity: __utils_22.pointer.newCoords()
    });

    ___defineProperty_22(this, "_id", idCounter++);

    this._scopeFire = scopeFire;
    this.pointerType = pointerType;
    var that = this;
    this._proxy = {};

    var _loop = function _loop(key) {
      Object.defineProperty(_this._proxy, key, {
        get: function get() {
          return that[key];
        }
      });
    };

    for (var key in _ProxyValues) {
      _loop(key);
    }

    var _loop2 = function _loop2(_key) {
      Object.defineProperty(_this._proxy, _key, {
        value: function value() {
          return that[_key].apply(that, arguments);
        }
      });
    };

    for (var _key in _ProxyMethods) {
      _loop2(_key);
    }

    this._scopeFire('interactions:new', {
      interaction: this
    });
  }

  ___createClass_22(Interaction, [{
    key: "pointerDown",
    value: function pointerDown(pointer, event, eventTarget) {
      var pointerIndex = this.updatePointer(pointer, event, eventTarget, true);
      var pointerInfo = this.pointers[pointerIndex];

      this._scopeFire('interactions:down', {
        pointer: pointer,
        event: event,
        eventTarget: eventTarget,
        pointerIndex: pointerIndex,
        pointerInfo: pointerInfo,
        type: 'down',
        interaction: this
      });
    }
    /**
     * ```js
     * interact(target)
     *   .draggable({
     *     // disable the default drag start by down->move
     *     manualStart: true
     *   })
     *   // start dragging after the user holds the pointer down
     *   .on('hold', function (event) {
     *     var interaction = event.interaction
     *
     *     if (!interaction.interacting()) {
     *       interaction.start({ name: 'drag' },
     *                         event.interactable,
     *                         event.currentTarget)
     *     }
     * })
     * ```
     *
     * Start an action with the given Interactable and Element as tartgets. The
     * action must be enabled for the target Interactable and an appropriate
     * number of pointers must be held down - 1 for drag/resize, 2 for gesture.
     *
     * Use it with `interactable.<action>able({ manualStart: false })` to always
     * [start actions manually](https://github.com/taye/interact.js/issues/114)
     *
     * @param {object} action   The action to be performed - drag, resize, etc.
     * @param {Interactable} target  The Interactable to target
     * @param {Element} element The DOM Element to target
     * @return {object} interact
     */

  }, {
    key: "start",
    value: function start(action, interactable, element) {
      if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {
        return false;
      }

      __utils_22.copyAction(this.prepared, action);
      this.interactable = interactable;
      this.element = element;
      this.rect = interactable.getRect(element);
      this.edges = this.prepared.edges ? __utils_22.extend({}, this.prepared.edges) : {
        left: true,
        right: true,
        top: true,
        bottom: true
      };
      this._stopped = false;
      this._interacting = this._doPhase({
        interaction: this,
        event: this.downEvent,
        phase: 'start'
      }) && !this._stopped;
      return this._interacting;
    }
  }, {
    key: "pointerMove",
    value: function pointerMove(pointer, event, eventTarget) {
      if (!this.simulation && !(this.modification && this.modification.endResult)) {
        this.updatePointer(pointer, event, eventTarget, false);
      }

      var duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;
      var dx;
      var dy; // register movement greater than pointerMoveTolerance

      if (this.pointerIsDown && !this.pointerWasMoved) {
        dx = this.coords.cur.client.x - this.coords.start.client.x;
        dy = this.coords.cur.client.y - this.coords.start.client.y;
        this.pointerWasMoved = __utils_22.hypot(dx, dy) > this.pointerMoveTolerance;
      }

      var pointerIndex = this.getPointerIndex(pointer);
      var signalArg = {
        pointer: pointer,
        pointerIndex: pointerIndex,
        pointerInfo: this.pointers[pointerIndex],
        event: event,
        type: 'move',
        eventTarget: eventTarget,
        dx: dx,
        dy: dy,
        duplicate: duplicateMove,
        interaction: this
      };

      if (!duplicateMove) {
        // set pointer coordinate, time changes and velocity
        __utils_22.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta);
      }

      this._scopeFire('interactions:move', signalArg);

      if (!duplicateMove && !this.simulation) {
        // if interacting, fire an 'action-move' signal etc
        if (this.interacting()) {
          signalArg.type = null;
          this.move(signalArg);
        }

        if (this.pointerWasMoved) {
          __utils_22.pointer.copyCoords(this.coords.prev, this.coords.cur);
        }
      }
    }
    /**
     * ```js
     * interact(target)
     *   .draggable(true)
     *   .on('dragmove', function (event) {
     *     if (someCondition) {
     *       // change the snap settings
     *       event.interactable.draggable({ snap: { targets: [] }})
     *       // fire another move event with re-calculated snap
     *       event.interaction.move()
     *     }
     *   })
     * ```
     *
     * Force a move of the current action at the same coordinates. Useful if
     * snap/restrict has been changed and you want a movement with the new
     * settings.
     */

  }, {
    key: "move",
    value: function move(signalArg) {
      if (!signalArg || !signalArg.event) {
        __utils_22.pointer.setZeroCoords(this.coords.delta);
      }

      signalArg = __utils_22.extend({
        pointer: this._latestPointer.pointer,
        event: this._latestPointer.event,
        eventTarget: this._latestPointer.eventTarget,
        interaction: this
      }, signalArg || {});
      signalArg.phase = 'move';

      this._doPhase(signalArg);
    } // End interact move events and stop auto-scroll unless simulation is running

  }, {
    key: "pointerUp",
    value: function pointerUp(pointer, event, eventTarget, curEventTarget) {
      var pointerIndex = this.getPointerIndex(pointer);

      if (pointerIndex === -1) {
        pointerIndex = this.updatePointer(pointer, event, eventTarget, false);
      }

      var type = /cancel$/i.test(event.type) ? 'cancel' : 'up';

      this._scopeFire("interactions:".concat(type), {
        pointer: pointer,
        pointerIndex: pointerIndex,
        pointerInfo: this.pointers[pointerIndex],
        event: event,
        eventTarget: eventTarget,
        type: type,
        curEventTarget: curEventTarget,
        interaction: this
      });

      if (!this.simulation) {
        this.end(event);
      }

      this.pointerIsDown = false;
      this.removePointer(pointer, event);
    }
  }, {
    key: "documentBlur",
    value: function documentBlur(event) {
      this.end(event);

      this._scopeFire('interactions:blur', {
        event: event,
        type: 'blur',
        interaction: this
      });
    }
    /**
     * ```js
     * interact(target)
     *   .draggable(true)
     *   .on('move', function (event) {
     *     if (event.pageX > 1000) {
     *       // end the current action
     *       event.interaction.end()
     *       // stop all further listeners from being called
     *       event.stopImmediatePropagation()
     *     }
     *   })
     * ```
     *
     * @param {PointerEvent} [event]
     */

  }, {
    key: "end",
    value: function end(event) {
      this._ending = true;
      event = event || this._latestPointer.event;
      var endPhaseResult;

      if (this.interacting()) {
        endPhaseResult = this._doPhase({
          event: event,
          interaction: this,
          phase: 'end'
        });
      }

      this._ending = false;

      if (endPhaseResult === true) {
        this.stop();
      }
    }
  }, {
    key: "currentAction",
    value: function currentAction() {
      return this._interacting ? this.prepared.name : null;
    }
  }, {
    key: "interacting",
    value: function interacting() {
      return this._interacting;
    }
    /** */

  }, {
    key: "stop",
    value: function stop() {
      this._scopeFire('interactions:stop', {
        interaction: this
      });

      this.interactable = this.element = null;
      this._interacting = false;
      this._stopped = true;
      this.prepared.name = this.prevEvent = null;
    }
  }, {
    key: "getPointerIndex",
    value: function getPointerIndex(pointer) {
      var pointerId = __utils_22.pointer.getPointerId(pointer); // mouse and pen interactions may have only one pointer

      return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : __utils_22.arr.findIndex(this.pointers, function (curPointer) {
        return curPointer.id === pointerId;
      });
    }
  }, {
    key: "getPointerInfo",
    value: function getPointerInfo(pointer) {
      return this.pointers[this.getPointerIndex(pointer)];
    }
  }, {
    key: "updatePointer",
    value: function updatePointer(pointer, event, eventTarget, down) {
      var id = __utils_22.pointer.getPointerId(pointer);
      var pointerIndex = this.getPointerIndex(pointer);
      var pointerInfo = this.pointers[pointerIndex];
      down = down === false ? false : down || /(down|start)$/i.test(event.type);

      if (!pointerInfo) {
        pointerInfo = new _PointerInfo["default"](id, pointer, event, null, null);
        pointerIndex = this.pointers.length;
        this.pointers.push(pointerInfo);
      } else {
        pointerInfo.pointer = pointer;
      }

      __utils_22.pointer.setCoords(this.coords.cur, this.pointers.map(function (p) {
        return p.pointer;
      }), this._now());
      __utils_22.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);

      if (down) {
        this.pointerIsDown = true;
        pointerInfo.downTime = this.coords.cur.timeStamp;
        pointerInfo.downTarget = eventTarget;
        __utils_22.pointer.pointerExtend(this.downPointer, pointer);

        if (!this.interacting()) {
          __utils_22.pointer.copyCoords(this.coords.start, this.coords.cur);
          __utils_22.pointer.copyCoords(this.coords.prev, this.coords.cur);
          this.downEvent = event;
          this.pointerWasMoved = false;
        }
      }

      this._updateLatestPointer(pointer, event, eventTarget);

      this._scopeFire('interactions:update-pointer', {
        pointer: pointer,
        event: event,
        eventTarget: eventTarget,
        down: down,
        pointerInfo: pointerInfo,
        pointerIndex: pointerIndex,
        interaction: this
      });

      return pointerIndex;
    }
  }, {
    key: "removePointer",
    value: function removePointer(pointer, event) {
      var pointerIndex = this.getPointerIndex(pointer);

      if (pointerIndex === -1) {
        return;
      }

      var pointerInfo = this.pointers[pointerIndex];

      this._scopeFire('interactions:remove-pointer', {
        pointer: pointer,
        event: event,
        eventTarget: null,
        pointerIndex: pointerIndex,
        pointerInfo: pointerInfo,
        interaction: this
      });

      this.pointers.splice(pointerIndex, 1);
    }
  }, {
    key: "_updateLatestPointer",
    value: function _updateLatestPointer(pointer, event, eventTarget) {
      this._latestPointer.pointer = pointer;
      this._latestPointer.event = event;
      this._latestPointer.eventTarget = eventTarget;
    }
  }, {
    key: "destroy",
    value: function destroy() {
      this._latestPointer.pointer = null;
      this._latestPointer.event = null;
      this._latestPointer.eventTarget = null;
    }
  }, {
    key: "_createPreparedEvent",
    value: function _createPreparedEvent(event, phase, preEnd, type) {
      return new _InteractEvent["default"](this, event, this.prepared.name, phase, this.element, preEnd, type);
    }
  }, {
    key: "_fireEvent",
    value: function _fireEvent(iEvent) {
      this.interactable.fire(iEvent);

      if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {
        this.prevEvent = iEvent;
      }
    }
  }, {
    key: "_doPhase",
    value: function _doPhase(signalArg) {
      var event = signalArg.event,
          phase = signalArg.phase,
          preEnd = signalArg.preEnd,
          type = signalArg.type;
      var rect = this.rect;

      if (rect && phase === 'move') {
        // update the rect changes due to pointer move
        __utils_22.rect.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);
        rect.width = rect.right - rect.left;
        rect.height = rect.bottom - rect.top;
      }

      var beforeResult = this._scopeFire("interactions:before-action-".concat(phase), signalArg);

      if (beforeResult === false) {
        return false;
      }

      var iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);

      this._scopeFire("interactions:action-".concat(phase), signalArg);

      if (phase === 'start') {
        this.prevEvent = iEvent;
      }

      this._fireEvent(iEvent);

      this._scopeFire("interactions:after-action-".concat(phase), signalArg);

      return true;
    }
  }, {
    key: "_now",
    value: function _now() {
      return Date.now();
    }
  }]);

  return Interaction;
}();

_$Interaction_22.Interaction = Interaction;
var ___default_22 = Interaction;
_$Interaction_22["default"] = ___default_22;

var _$interactablePreventDefault_25 = {};
"use strict";

function ___typeof_25(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_25 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_25 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_25(obj); }

Object.defineProperty(_$interactablePreventDefault_25, "__esModule", {
  value: true
});
_$interactablePreventDefault_25.install = __install_25;
_$interactablePreventDefault_25["default"] = void 0;

/* removed: var _$domUtils_69 = require("@interactjs/utils/domUtils"); */;

var ___events_25 = ___interopRequireDefault_25(_$events_70);

var __is_25 = ___interopRequireWildcard_25(_$is_76);

/* removed: var _$window_83 = require("@interactjs/utils/window"); */;

function ___getRequireWildcardCache_25() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_25 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_25(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_25(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_25(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_25(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function preventDefault(newValue) {
  if (/^(always|never|auto)$/.test(newValue)) {
    this.options.preventDefault = newValue;
    return this;
  }

  if (__is_25.bool(newValue)) {
    this.options.preventDefault = newValue ? 'always' : 'never';
    return this;
  }

  return this.options.preventDefault;
}

function checkAndPreventDefault(interactable, scope, event) {
  var setting = interactable.options.preventDefault;

  if (setting === 'never') {
    return;
  }

  if (setting === 'always') {
    event.preventDefault();
    return;
  } // setting === 'auto'
  // if the browser supports passive event listeners and isn't running on iOS,
  // don't preventDefault of touch{start,move} events. CSS touch-action and
  // user-select should be used instead of calling event.preventDefault().


  if (___events_25["default"].supportsPassive && /^touch(start|move)$/.test(event.type)) {
    var doc = (0, _$window_83.getWindow)(event.target).document;
    var docOptions = scope.getDocOptions(doc);

    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {
      return;
    }
  } // don't preventDefault of pointerdown events


  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {
    return;
  } // don't preventDefault on editable elements


  if (__is_25.element(event.target) && (0, _$domUtils_69.matchesSelector)(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {
    return;
  }

  event.preventDefault();
}

function onInteractionEvent(_ref) {
  var interaction = _ref.interaction,
      event = _ref.event;

  if (interaction.interactable) {
    interaction.interactable.checkAndPreventDefault(event);
  }
}

function __install_25(scope) {
  /** @lends Interactable */
  var Interactable = scope.Interactable;
  /**
   * Returns or sets whether to prevent the browser's default behaviour in
   * response to pointer events. Can be set to:
   *  - `'always'` to always prevent
   *  - `'never'` to never prevent
   *  - `'auto'` to let interact.js try to determine what would be best
   *
   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`
   * @return {string | Interactable} The current setting or this Interactable
   */

  Interactable.prototype.preventDefault = preventDefault;

  Interactable.prototype.checkAndPreventDefault = function (event) {
    return checkAndPreventDefault(this, scope, event);
  }; // prevent native HTML5 drag on interact.js target elements


  scope.interactions.docEvents.push({
    type: 'dragstart',
    listener: function listener(event) {
      for (var _i = 0; _i < scope.interactions.list.length; _i++) {
        var _ref2;

        _ref2 = scope.interactions.list[_i];
        var interaction = _ref2;

        if (interaction.element && (interaction.element === event.target || (0, _$domUtils_69.nodeContains)(interaction.element, event.target))) {
          interaction.interactable.checkAndPreventDefault(event);
          return;
        }
      }
    }
  });
}

var ___default_25 = {
  id: 'core/interactablePreventDefault',
  install: __install_25,
  listeners: ['down', 'move', 'up', 'cancel'].reduce(function (acc, eventType) {
    acc["interactions:".concat(eventType)] = onInteractionEvent;
    return acc;
  }, {})
};
_$interactablePreventDefault_25["default"] = ___default_25;

var _$interactionFinder_26 = {};
"use strict";

function ___typeof_26(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_26 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_26 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_26(obj); }

Object.defineProperty(_$interactionFinder_26, "__esModule", {
  value: true
});
_$interactionFinder_26["default"] = void 0;

var __dom_26 = ___interopRequireWildcard_26(_$domUtils_69);

function ___getRequireWildcardCache_26() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_26 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_26(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_26(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_26(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

var finder = {
  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],
  search: function search(details) {
    for (var _i = 0; _i < finder.methodOrder.length; _i++) {
      var _ref;

      _ref = finder.methodOrder[_i];
      var method = _ref;
      var interaction = finder[method](details);

      if (interaction) {
        return interaction;
      }
    }

    return null;
  },
  // try to resume simulation with a new pointer
  simulationResume: function simulationResume(_ref2) {
    var pointerType = _ref2.pointerType,
        eventType = _ref2.eventType,
        eventTarget = _ref2.eventTarget,
        scope = _ref2.scope;

    if (!/down|start/i.test(eventType)) {
      return null;
    }

    for (var _i2 = 0; _i2 < scope.interactions.list.length; _i2++) {
      var _ref3;

      _ref3 = scope.interactions.list[_i2];
      var interaction = _ref3;
      var element = eventTarget;

      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {
        while (element) {
          // if the element is the interaction element
          if (element === interaction.element) {
            return interaction;
          }

          element = __dom_26.parentNode(element);
        }
      }
    }

    return null;
  },
  // if it's a mouse or pen interaction
  mouseOrPen: function mouseOrPen(_ref4) {
    var pointerId = _ref4.pointerId,
        pointerType = _ref4.pointerType,
        eventType = _ref4.eventType,
        scope = _ref4.scope;

    if (pointerType !== 'mouse' && pointerType !== 'pen') {
      return null;
    }

    var firstNonActive;

    for (var _i3 = 0; _i3 < scope.interactions.list.length; _i3++) {
      var _ref5;

      _ref5 = scope.interactions.list[_i3];
      var interaction = _ref5;

      if (interaction.pointerType === pointerType) {
        // if it's a down event, skip interactions with running simulations
        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {
          continue;
        } // if the interaction is active, return it immediately


        if (interaction.interacting()) {
          return interaction;
        } // otherwise save it and look for another active interaction
        else if (!firstNonActive) {
            firstNonActive = interaction;
          }
      }
    } // if no active mouse interaction was found use the first inactive mouse
    // interaction


    if (firstNonActive) {
      return firstNonActive;
    } // find any mouse or pen interaction.
    // ignore the interaction if the eventType is a *down, and a simulation
    // is active


    for (var _i4 = 0; _i4 < scope.interactions.list.length; _i4++) {
      var _ref6;

      _ref6 = scope.interactions.list[_i4];
      var _interaction = _ref6;

      if (_interaction.pointerType === pointerType && !(/down/i.test(eventType) && _interaction.simulation)) {
        return _interaction;
      }
    }

    return null;
  },
  // get interaction that has this pointer
  hasPointer: function hasPointer(_ref7) {
    var pointerId = _ref7.pointerId,
        scope = _ref7.scope;

    for (var _i5 = 0; _i5 < scope.interactions.list.length; _i5++) {
      var _ref8;

      _ref8 = scope.interactions.list[_i5];
      var interaction = _ref8;

      if (hasPointerId(interaction, pointerId)) {
        return interaction;
      }
    }

    return null;
  },
  // get first idle interaction with a matching pointerType
  idle: function idle(_ref9) {
    var pointerType = _ref9.pointerType,
        scope = _ref9.scope;

    for (var _i6 = 0; _i6 < scope.interactions.list.length; _i6++) {
      var _ref10;

      _ref10 = scope.interactions.list[_i6];
      var interaction = _ref10;

      // if there's already a pointer held down
      if (interaction.pointers.length === 1) {
        var target = interaction.interactable; // don't add this pointer if there is a target interactable and it
        // isn't gesturable

        if (target && !(target.options.gesture && target.options.gesture.enabled)) {
          continue;
        }
      } // maximum of 2 pointers per interaction
      else if (interaction.pointers.length >= 2) {
          continue;
        }

      if (!interaction.interacting() && pointerType === interaction.pointerType) {
        return interaction;
      }
    }

    return null;
  }
};

function hasPointerId(interaction, pointerId) {
  return interaction.pointers.some(function (_ref11) {
    var id = _ref11.id;
    return id === pointerId;
  });
}

var ___default_26 = finder;
_$interactionFinder_26["default"] = ___default_26;

var _$DropEvent_2 = {};
"use strict";

Object.defineProperty(_$DropEvent_2, "__esModule", {
  value: true
});
_$DropEvent_2["default"] = void 0;

var ___BaseEvent2_2 = ___interopRequireDefault_2(_$BaseEvent_16);

var __arr_2 = ___interopRequireWildcard_2(_$arr_64);

function ___getRequireWildcardCache_2() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_2 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_2(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_2(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_2(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_2(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___typeof_2(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_2 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_2 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_2(obj); }

function ___classCallCheck_2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_2(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_2(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_2(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_2(Constructor, staticProps); return Constructor; }

function ___possibleConstructorReturn_2(self, call) { if (call && (___typeof_2(call) === "object" || typeof call === "function")) { return call; } return ___assertThisInitialized_2(self); }

function ___getPrototypeOf_2(o) { ___getPrototypeOf_2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ___getPrototypeOf_2(o); }

function ___assertThisInitialized_2(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function ___inherits_2(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ___setPrototypeOf_2(subClass, superClass); }

function ___setPrototypeOf_2(o, p) { ___setPrototypeOf_2 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ___setPrototypeOf_2(o, p); }

function ___defineProperty_2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var DropEvent = /*#__PURE__*/function (_BaseEvent) {
  ___inherits_2(DropEvent, _BaseEvent);

  /**
   * Class of events fired on dropzones during drags with acceptable targets.
   */
  function DropEvent(dropState, dragEvent, type) {
    var _this;

    ___classCallCheck_2(this, DropEvent);

    _this = ___possibleConstructorReturn_2(this, ___getPrototypeOf_2(DropEvent).call(this, dragEvent._interaction));

    ___defineProperty_2(___assertThisInitialized_2(_this), "target", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "dropzone", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "dragEvent", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "relatedTarget", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "draggable", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "timeStamp", void 0);

    ___defineProperty_2(___assertThisInitialized_2(_this), "propagationStopped", false);

    ___defineProperty_2(___assertThisInitialized_2(_this), "immediatePropagationStopped", false);

    var _ref = type === 'dragleave' ? dropState.prev : dropState.cur,
        element = _ref.element,
        dropzone = _ref.dropzone;

    _this.type = type;
    _this.target = element;
    _this.currentTarget = element;
    _this.dropzone = dropzone;
    _this.dragEvent = dragEvent;
    _this.relatedTarget = dragEvent.target;
    _this.draggable = dragEvent.interactable;
    _this.timeStamp = dragEvent.timeStamp;
    return _this;
  }
  /**
   * If this is a `dropactivate` event, the dropzone element will be
   * deactivated.
   *
   * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the
   * dropzone element and more.
   */


  ___createClass_2(DropEvent, [{
    key: "reject",
    value: function reject() {
      var _this2 = this;

      var dropState = this._interaction.dropState;

      if (this.type !== 'dropactivate' && (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)) {
        return;
      }

      dropState.prev.dropzone = this.dropzone;
      dropState.prev.element = this.target;
      dropState.rejected = true;
      dropState.events.enter = null;
      this.stopImmediatePropagation();

      if (this.type === 'dropactivate') {
        var activeDrops = dropState.activeDrops;
        var index = __arr_2.findIndex(activeDrops, function (_ref2) {
          var dropzone = _ref2.dropzone,
              element = _ref2.element;
          return dropzone === _this2.dropzone && element === _this2.target;
        });
        dropState.activeDrops.splice(index, 1);
        var deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate');
        deactivateEvent.dropzone = this.dropzone;
        deactivateEvent.target = this.target;
        this.dropzone.fire(deactivateEvent);
      } else {
        this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'));
      }
    }
  }, {
    key: "preventDefault",
    value: function preventDefault() {}
  }, {
    key: "stopPropagation",
    value: function stopPropagation() {
      this.propagationStopped = true;
    }
  }, {
    key: "stopImmediatePropagation",
    value: function stopImmediatePropagation() {
      this.immediatePropagationStopped = this.propagationStopped = true;
    }
  }]);

  return DropEvent;
}(___BaseEvent2_2["default"]);

var ___default_2 = DropEvent;
_$DropEvent_2["default"] = ___default_2;

var _$index_3 = {};
"use strict";

function ___typeof_3(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_3 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_3 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_3(obj); }

Object.defineProperty(_$index_3, "__esModule", {
  value: true
});
_$index_3["default"] = void 0;

var ___Interactable_3 = ___interopRequireDefault_3(_$Interactable_20({}));

var ___scope_3 = ___interopRequireDefault_3(_$scope_28({}));

var __utils_3 = ___interopRequireWildcard_3(_$index_75);

var _drag = ___interopRequireDefault_3(_$drag_1);

var _DropEvent = ___interopRequireDefault_3(_$DropEvent_2);

function ___getRequireWildcardCache_3() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_3 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_3(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_3(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_3(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __install_3(scope) {
  var actions = scope.actions,
      interact = scope.interactStatic,
      Interactable = scope.Interactable,
      defaults = scope.defaults;
  scope.usePlugin(_drag["default"]);
  /**
   *
   * ```js
   * interact('.drop').dropzone({
   *   accept: '.can-drop' || document.getElementById('single-drop'),
   *   overlap: 'pointer' || 'center' || zeroToOne
   * }
   * ```
   *
   * Returns or sets whether draggables can be dropped onto this target to
   * trigger drop events
   *
   * Dropzones can receive the following events:
   *  - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends
   *  - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone
   *  - `dragmove` when a draggable that has entered the dropzone is moved
   *  - `drop` when a draggable is dropped into this dropzone
   *
   * Use the `accept` option to allow only elements that match the given CSS
   * selector or element. The value can be:
   *
   *  - **an Element** - only that element can be dropped into this dropzone.
   *  - **a string**, - the element being dragged must match it as a CSS selector.
   *  - **`null`** - accept options is cleared - it accepts any element.
   *
   * Use the `overlap` option to set how drops are checked for. The allowed
   * values are:
   *
   *   - `'pointer'`, the pointer must be over the dropzone (default)
   *   - `'center'`, the draggable element's center must be over the dropzone
   *   - a number from 0-1 which is the `(intersection area) / (draggable area)`.
   *   e.g. `0.5` for drop to happen when half of the area of the draggable is
   *   over the dropzone
   *
   * Use the `checker` option to specify a function to check if a dragged element
   * is over this Interactable.
   *
   * @param {boolean | object | null} [options] The new options to be set.
   * @return {boolean | Interactable} The current setting or this Interactable
   */

  Interactable.prototype.dropzone = function (options) {
    return dropzoneMethod(this, options);
  };
  /**
   * ```js
   * interact(target)
   * .dropChecker(function(dragEvent,         // related dragmove or dragend event
   *                       event,             // TouchEvent/PointerEvent/MouseEvent
   *                       dropped,           // bool result of the default checker
   *                       dropzone,          // dropzone Interactable
   *                       dropElement,       // dropzone elemnt
   *                       draggable,         // draggable Interactable
   *                       draggableElement) {// draggable element
   *
   *   return dropped && event.target.hasAttribute('allow-drop')
   * }
   * ```
   */


  Interactable.prototype.dropCheck = function (dragEvent, event, draggable, draggableElement, dropElement, rect) {
    return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect);
  };
  /**
   * Returns or sets whether the dimensions of dropzone elements are calculated
   * on every dragmove or only on dragstart for the default dropChecker
   *
   * @param {boolean} [newValue] True to check on each move. False to check only
   * before start
   * @return {boolean | interact} The current setting or interact
   */


  interact.dynamicDrop = function (newValue) {
    if (__utils_3.is.bool(newValue)) {
      // if (dragging && scope.dynamicDrop !== newValue && !newValue) {
      //  calcRects(dropzones)
      // }
      scope.dynamicDrop = newValue;
      return interact;
    }

    return scope.dynamicDrop;
  };

  __utils_3.extend(actions.phaselessTypes, {
    dragenter: true,
    dragleave: true,
    dropactivate: true,
    dropdeactivate: true,
    dropmove: true,
    drop: true
  });
  actions.methodDict.drop = 'dropzone';
  scope.dynamicDrop = false;
  defaults.actions.drop = drop.defaults;
}

function collectDrops(_ref, draggableElement) {
  var interactables = _ref.interactables;
  var drops = []; // collect all dropzones and their elements which qualify for a drop

  for (var _i = 0; _i < interactables.list.length; _i++) {
    var _ref2;

    _ref2 = interactables.list[_i];
    var dropzone = _ref2;

    if (!dropzone.options.drop.enabled) {
      continue;
    }

    var accept = dropzone.options.drop.accept; // test the draggable draggableElement against the dropzone's accept setting

    if (__utils_3.is.element(accept) && accept !== draggableElement || __utils_3.is.string(accept) && !__utils_3.dom.matchesSelector(draggableElement, accept) || __utils_3.is.func(accept) && !accept({
      dropzone: dropzone,
      draggableElement: draggableElement
    })) {
      continue;
    } // query for new elements if necessary


    var dropElements = __utils_3.is.string(dropzone.target) ? dropzone._context.querySelectorAll(dropzone.target) : __utils_3.is.array(dropzone.target) ? dropzone.target : [dropzone.target];

    for (var _i2 = 0; _i2 < dropElements.length; _i2++) {
      var _ref3;

      _ref3 = dropElements[_i2];
      var dropzoneElement = _ref3;

      if (dropzoneElement !== draggableElement) {
        drops.push({
          dropzone: dropzone,
          element: dropzoneElement
        });
      }
    }
  }

  return drops;
}

function fireActivationEvents(activeDrops, event) {
  // loop through all active dropzones and trigger event
  for (var _i3 = 0; _i3 < activeDrops.slice().length; _i3++) {
    var _ref4;

    _ref4 = activeDrops.slice()[_i3];
    var _ref5 = _ref4,
        dropzone = _ref5.dropzone,
        element = _ref5.element;
    event.dropzone = dropzone; // set current element as event target

    event.target = element;
    dropzone.fire(event);
    event.propagationStopped = event.immediatePropagationStopped = false;
  }
} // return a new array of possible drops. getActiveDrops should always be
// called when a drag has just started or a drag event happens while
// dynamicDrop is true


function getActiveDrops(scope, dragElement) {
  // get dropzones and their elements that could receive the draggable
  var activeDrops = collectDrops(scope, dragElement);

  for (var _i4 = 0; _i4 < activeDrops.length; _i4++) {
    var _ref6;

    _ref6 = activeDrops[_i4];
    var activeDrop = _ref6;
    activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element);
  }

  return activeDrops;
}

function getDrop(_ref7, dragEvent, pointerEvent) {
  var dropState = _ref7.dropState,
      draggable = _ref7.interactable,
      dragElement = _ref7.element;
  var validDrops = []; // collect all dropzones and their elements which qualify for a drop

  for (var _i5 = 0; _i5 < dropState.activeDrops.length; _i5++) {
    var _ref8;

    _ref8 = dropState.activeDrops[_i5];
    var _ref9 = _ref8,
        dropzone = _ref9.dropzone,
        dropzoneElement = _ref9.element,
        _rect = _ref9.rect;
    validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, _rect) ? dropzoneElement : null);
  } // get the most appropriate dropzone based on DOM depth and order


  var dropIndex = __utils_3.dom.indexOfDeepestElement(validDrops);
  return dropState.activeDrops[dropIndex] || null;
}

function getDropEvents(interaction, _pointerEvent, dragEvent) {
  var dropState = interaction.dropState;
  var dropEvents = {
    enter: null,
    leave: null,
    activate: null,
    deactivate: null,
    move: null,
    drop: null
  };

  if (dragEvent.type === 'dragstart') {
    dropEvents.activate = new _DropEvent["default"](dropState, dragEvent, 'dropactivate');
    dropEvents.activate.target = null;
    dropEvents.activate.dropzone = null;
  }

  if (dragEvent.type === 'dragend') {
    dropEvents.deactivate = new _DropEvent["default"](dropState, dragEvent, 'dropdeactivate');
    dropEvents.deactivate.target = null;
    dropEvents.deactivate.dropzone = null;
  }

  if (dropState.rejected) {
    return dropEvents;
  }

  if (dropState.cur.element !== dropState.prev.element) {
    // if there was a previous dropzone, create a dragleave event
    if (dropState.prev.dropzone) {
      dropEvents.leave = new _DropEvent["default"](dropState, dragEvent, 'dragleave');
      dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element;
      dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone;
    } // if dropzone is not null, create a dragenter event


    if (dropState.cur.dropzone) {
      dropEvents.enter = new _DropEvent["default"](dropState, dragEvent, 'dragenter');
      dragEvent.dragEnter = dropState.cur.element;
      dragEvent.dropzone = dropState.cur.dropzone;
    }
  }

  if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {
    dropEvents.drop = new _DropEvent["default"](dropState, dragEvent, 'drop');
    dragEvent.dropzone = dropState.cur.dropzone;
    dragEvent.relatedTarget = dropState.cur.element;
  }

  if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {
    dropEvents.move = new _DropEvent["default"](dropState, dragEvent, 'dropmove');
    dropEvents.move.dragmove = dragEvent;
    dragEvent.dropzone = dropState.cur.dropzone;
  }

  return dropEvents;
}

function fireDropEvents(interaction, events) {
  var dropState = interaction.dropState;
  var activeDrops = dropState.activeDrops,
      cur = dropState.cur,
      prev = dropState.prev;

  if (events.leave) {
    prev.dropzone.fire(events.leave);
  }

  if (events.move) {
    cur.dropzone.fire(events.move);
  }

  if (events.enter) {
    cur.dropzone.fire(events.enter);
  }

  if (events.drop) {
    cur.dropzone.fire(events.drop);
  }

  if (events.deactivate) {
    fireActivationEvents(activeDrops, events.deactivate);
  }

  dropState.prev.dropzone = cur.dropzone;
  dropState.prev.element = cur.element;
}

function onEventCreated(_ref10, scope) {
  var interaction = _ref10.interaction,
      iEvent = _ref10.iEvent,
      event = _ref10.event;

  if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') {
    return;
  }

  var dropState = interaction.dropState;

  if (scope.dynamicDrop) {
    dropState.activeDrops = getActiveDrops(scope, interaction.element);
  }

  var dragEvent = iEvent;
  var dropResult = getDrop(interaction, dragEvent, event); // update rejected status

  dropState.rejected = dropState.rejected && !!dropResult && dropResult.dropzone === dropState.cur.dropzone && dropResult.element === dropState.cur.element;
  dropState.cur.dropzone = dropResult && dropResult.dropzone;
  dropState.cur.element = dropResult && dropResult.element;
  dropState.events = getDropEvents(interaction, event, dragEvent);
}

function dropzoneMethod(interactable, options) {
  if (__utils_3.is.object(options)) {
    interactable.options.drop.enabled = options.enabled !== false;

    if (options.listeners) {
      var normalized = __utils_3.normalizeListeners(options.listeners); // rename 'drop' to '' as it will be prefixed with 'drop'

      var corrected = Object.keys(normalized).reduce(function (acc, type) {
        var correctedType = /^(enter|leave)/.test(type) ? "drag".concat(type) : /^(activate|deactivate|move)/.test(type) ? "drop".concat(type) : type;
        acc[correctedType] = normalized[type];
        return acc;
      }, {});
      interactable.off(interactable.options.drop.listeners);
      interactable.on(corrected);
      interactable.options.drop.listeners = corrected;
    }

    if (__utils_3.is.func(options.ondrop)) {
      interactable.on('drop', options.ondrop);
    }

    if (__utils_3.is.func(options.ondropactivate)) {
      interactable.on('dropactivate', options.ondropactivate);
    }

    if (__utils_3.is.func(options.ondropdeactivate)) {
      interactable.on('dropdeactivate', options.ondropdeactivate);
    }

    if (__utils_3.is.func(options.ondragenter)) {
      interactable.on('dragenter', options.ondragenter);
    }

    if (__utils_3.is.func(options.ondragleave)) {
      interactable.on('dragleave', options.ondragleave);
    }

    if (__utils_3.is.func(options.ondropmove)) {
      interactable.on('dropmove', options.ondropmove);
    }

    if (/^(pointer|center)$/.test(options.overlap)) {
      interactable.options.drop.overlap = options.overlap;
    } else if (__utils_3.is.number(options.overlap)) {
      interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0);
    }

    if ('accept' in options) {
      interactable.options.drop.accept = options.accept;
    }

    if ('checker' in options) {
      interactable.options.drop.checker = options.checker;
    }

    return interactable;
  }

  if (__utils_3.is.bool(options)) {
    interactable.options.drop.enabled = options;
    return interactable;
  }

  return interactable.options.drop;
}

function dropCheckMethod(interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {
  var dropped = false; // if the dropzone has no rect (eg. display: none)
  // call the custom dropChecker or just return false

  if (!(rect = rect || interactable.getRect(dropElement))) {
    return interactable.options.drop.checker ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement) : false;
  }

  var dropOverlap = interactable.options.drop.overlap;

  if (dropOverlap === 'pointer') {
    var origin = __utils_3.getOriginXY(draggable, draggableElement, 'drag');
    var page = __utils_3.pointer.getPageXY(dragEvent);
    page.x += origin.x;
    page.y += origin.y;
    var horizontal = page.x > rect.left && page.x < rect.right;
    var vertical = page.y > rect.top && page.y < rect.bottom;
    dropped = horizontal && vertical;
  }

  var dragRect = draggable.getRect(draggableElement);

  if (dragRect && dropOverlap === 'center') {
    var cx = dragRect.left + dragRect.width / 2;
    var cy = dragRect.top + dragRect.height / 2;
    dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom;
  }

  if (dragRect && __utils_3.is.number(dropOverlap)) {
    var overlapArea = Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) * Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top));
    var overlapRatio = overlapArea / (dragRect.width * dragRect.height);
    dropped = overlapRatio >= dropOverlap;
  }

  if (interactable.options.drop.checker) {
    dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement);
  }

  return dropped;
}

var drop = {
  id: 'actions/drop',
  install: __install_3,
  listeners: {
    'interactions:before-action-start': function interactionsBeforeActionStart(_ref11) {
      var interaction = _ref11.interaction;

      if (interaction.prepared.name !== 'drag') {
        return;
      }

      interaction.dropState = {
        cur: {
          dropzone: null,
          element: null
        },
        prev: {
          dropzone: null,
          element: null
        },
        rejected: null,
        events: null,
        activeDrops: []
      };
    },
    'interactions:after-action-start': function interactionsAfterActionStart(_ref12, scope) {
      var interaction = _ref12.interaction,
          event = _ref12.event,
          dragEvent = _ref12.iEvent;

      if (interaction.prepared.name !== 'drag') {
        return;
      }

      var dropState = interaction.dropState; // reset active dropzones

      dropState.activeDrops = null;
      dropState.events = null;
      dropState.activeDrops = getActiveDrops(scope, interaction.element);
      dropState.events = getDropEvents(interaction, event, dragEvent);

      if (dropState.events.activate) {
        fireActivationEvents(dropState.activeDrops, dropState.events.activate);
        scope.fire('actions/drop:start', {
          interaction: interaction,
          dragEvent: dragEvent
        });
      }
    },
    // FIXME proper signal types
    'interactions:action-move': onEventCreated,
    'interactions:action-end': onEventCreated,
    'interactions:after-action-move': function fireDropAfterMove(_ref13, scope) {
      var interaction = _ref13.interaction,
          dragEvent = _ref13.iEvent;

      if (interaction.prepared.name !== 'drag') {
        return;
      }

      fireDropEvents(interaction, interaction.dropState.events);
      scope.fire('actions/drop:move', {
        interaction: interaction,
        dragEvent: dragEvent
      });
      interaction.dropState.events = {};
    },
    'interactions:after-action-end': function interactionsAfterActionEnd(_ref14, scope) {
      var interaction = _ref14.interaction,
          dragEvent = _ref14.iEvent;

      if (interaction.prepared.name !== 'drag') {
        return;
      }

      fireDropEvents(interaction, interaction.dropState.events);
      scope.fire('actions/drop:end', {
        interaction: interaction,
        dragEvent: dragEvent
      });
    },
    'interactions:stop': function interactionsStop(_ref15) {
      var interaction = _ref15.interaction;

      if (interaction.prepared.name !== 'drag') {
        return;
      }

      var dropState = interaction.dropState;

      if (dropState) {
        dropState.activeDrops = null;
        dropState.events = null;
        dropState.cur.dropzone = null;
        dropState.cur.element = null;
        dropState.prev.dropzone = null;
        dropState.prev.element = null;
        dropState.rejected = false;
      }
    }
  },
  getActiveDrops: getActiveDrops,
  getDrop: getDrop,
  getDropEvents: getDropEvents,
  fireDropEvents: fireDropEvents,
  defaults: {
    enabled: false,
    accept: null,
    overlap: 'pointer'
  }
};
var ___default_3 = drop;
_$index_3["default"] = ___default_3;

var _$gesture_4 = {};
"use strict";

function ___typeof_4(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_4 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_4 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_4(obj); }

Object.defineProperty(_$gesture_4, "__esModule", {
  value: true
});
_$gesture_4["default"] = void 0;

var __utils_4 = ___interopRequireWildcard_4(_$index_75);

function ___getRequireWildcardCache_4() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_4 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_4(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_4(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_4(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __install_4(scope) {
  var actions = scope.actions,
      Interactable = scope.Interactable,
      defaults = scope.defaults;
  /**
   * ```js
   * interact(element).gesturable({
   *     onstart: function (event) {},
   *     onmove : function (event) {},
   *     onend  : function (event) {},
   *
   *     // limit multiple gestures.
   *     // See the explanation in {@link Interactable.draggable} example
   *     max: Infinity,
   *     maxPerElement: 1,
   * })
   *
   * var isGestureable = interact(element).gesturable()
   * ```
   *
   * Gets or sets whether multitouch gestures can be performed on the target
   *
   * @param {boolean | object} [options] true/false or An object with event
   * listeners to be fired on gesture events (makes the Interactable gesturable)
   * @return {boolean | Interactable} A boolean indicating if this can be the
   * target of gesture events, or this Interactable
   */

  Interactable.prototype.gesturable = function (options) {
    if (__utils_4.is.object(options)) {
      this.options.gesture.enabled = options.enabled !== false;
      this.setPerAction('gesture', options);
      this.setOnEvents('gesture', options);
      return this;
    }

    if (__utils_4.is.bool(options)) {
      this.options.gesture.enabled = options;
      return this;
    }

    return this.options.gesture;
  };

  actions.map.gesture = gesture;
  actions.methodDict.gesture = 'gesturable';
  defaults.actions.gesture = gesture.defaults;
}

function updateGestureProps(_ref) {
  var interaction = _ref.interaction,
      iEvent = _ref.iEvent,
      phase = _ref.phase;

  if (interaction.prepared.name !== 'gesture') {
    return;
  }

  var pointers = interaction.pointers.map(function (p) {
    return p.pointer;
  });
  var starting = phase === 'start';
  var ending = phase === 'end';
  var deltaSource = interaction.interactable.options.deltaSource;
  iEvent.touches = [pointers[0], pointers[1]];

  if (starting) {
    iEvent.distance = __utils_4.pointer.touchDistance(pointers, deltaSource);
    iEvent.box = __utils_4.pointer.touchBBox(pointers);
    iEvent.scale = 1;
    iEvent.ds = 0;
    iEvent.angle = __utils_4.pointer.touchAngle(pointers, deltaSource);
    iEvent.da = 0;
    interaction.gesture.startDistance = iEvent.distance;
    interaction.gesture.startAngle = iEvent.angle;
  } else if (ending) {
    var prevEvent = interaction.prevEvent;
    iEvent.distance = prevEvent.distance;
    iEvent.box = prevEvent.box;
    iEvent.scale = prevEvent.scale;
    iEvent.ds = 0;
    iEvent.angle = prevEvent.angle;
    iEvent.da = 0;
  } else {
    iEvent.distance = __utils_4.pointer.touchDistance(pointers, deltaSource);
    iEvent.box = __utils_4.pointer.touchBBox(pointers);
    iEvent.scale = iEvent.distance / interaction.gesture.startDistance;
    iEvent.angle = __utils_4.pointer.touchAngle(pointers, deltaSource);
    iEvent.ds = iEvent.scale - interaction.gesture.scale;
    iEvent.da = iEvent.angle - interaction.gesture.angle;
  }

  interaction.gesture.distance = iEvent.distance;
  interaction.gesture.angle = iEvent.angle;

  if (__utils_4.is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {
    interaction.gesture.scale = iEvent.scale;
  }
}

var gesture = {
  id: 'actions/gesture',
  before: ['actions/drag', 'actions/resize'],
  install: __install_4,
  listeners: {
    'interactions:action-start': updateGestureProps,
    'interactions:action-move': updateGestureProps,
    'interactions:action-end': updateGestureProps,
    'interactions:new': function interactionsNew(_ref2) {
      var interaction = _ref2.interaction;
      interaction.gesture = {
        angle: 0,
        distance: 0,
        scale: 1,
        startAngle: 0,
        startDistance: 0
      };
    },
    'auto-start:check': function autoStartCheck(arg) {
      if (arg.interaction.pointers.length < 2) {
        return undefined;
      }

      var gestureOptions = arg.interactable.options.gesture;

      if (!(gestureOptions && gestureOptions.enabled)) {
        return undefined;
      }

      arg.action = {
        name: 'gesture'
      };
      return false;
    }
  },
  defaults: {},
  getCursor: function getCursor() {
    return '';
  }
};
var ___default_4 = gesture;
_$gesture_4["default"] = ___default_4;

var _$resize_6 = {};
"use strict";

function ___typeof_6(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_6 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_6 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_6(obj); }

Object.defineProperty(_$resize_6, "__esModule", {
  value: true
});
_$resize_6["default"] = void 0;

/* removed: var _$Interaction_22 = require("@interactjs/core/Interaction"); */;

var __dom_6 = ___interopRequireWildcard_6(_$domUtils_69);

var ___extend_6 = ___interopRequireDefault_6(_$extend_72);

var __is_6 = ___interopRequireWildcard_6(_$is_76);

function ___interopRequireDefault_6(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_6() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_6 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_6(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_6(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_6(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __install_6(scope) {
  var actions = scope.actions,
      browser = scope.browser,
      Interactable = scope.Interactable,
      defaults = scope.defaults; // Less Precision with touch input

  resize.cursors = initCursors(browser);
  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;
  /**
   * ```js
   * interact(element).resizable({
   *   onstart: function (event) {},
   *   onmove : function (event) {},
   *   onend  : function (event) {},
   *
   *   edges: {
   *     top   : true,       // Use pointer coords to check for resize.
   *     left  : false,      // Disable resizing from left edge.
   *     bottom: '.resize-s',// Resize if pointer target matches selector
   *     right : handleEl    // Resize if pointer target is the given Element
   *   },
   *
   *     // Width and height can be adjusted independently. When `true`, width and
   *     // height are adjusted at a 1:1 ratio.
   *     square: false,
   *
   *     // Width and height can be adjusted independently. When `true`, width and
   *     // height maintain the aspect ratio they had when resizing started.
   *     preserveAspectRatio: false,
   *
   *   // a value of 'none' will limit the resize rect to a minimum of 0x0
   *   // 'negate' will allow the rect to have negative width/height
   *   // 'reposition' will keep the width/height positive by swapping
   *   // the top and bottom edges and/or swapping the left and right edges
   *   invert: 'none' || 'negate' || 'reposition'
   *
   *   // limit multiple resizes.
   *   // See the explanation in the {@link Interactable.draggable} example
   *   max: Infinity,
   *   maxPerElement: 1,
   * })
   *
   * var isResizeable = interact(element).resizable()
   * ```
   *
   * Gets or sets whether resize actions can be performed on the target
   *
   * @param {boolean | object} [options] true/false or An object with event
   * listeners to be fired on resize events (object makes the Interactable
   * resizable)
   * @return {boolean | Interactable} A boolean indicating if this can be the
   * target of resize elements, or this Interactable
   */

  Interactable.prototype.resizable = function (options) {
    return resizable(this, options, scope);
  };

  actions.map.resize = resize;
  actions.methodDict.resize = 'resizable';
  defaults.actions.resize = resize.defaults;
}

function resizeChecker(arg) {
  var interaction = arg.interaction,
      interactable = arg.interactable,
      element = arg.element,
      rect = arg.rect,
      buttons = arg.buttons;

  if (!rect) {
    return undefined;
  }

  var page = (0, ___extend_6["default"])({}, interaction.coords.cur.page);
  var resizeOptions = interactable.options.resize;

  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down
  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {
    return undefined;
  } // if using resize.edges


  if (__is_6.object(resizeOptions.edges)) {
    var resizeEdges = {
      left: false,
      right: false,
      top: false,
      bottom: false
    };

    for (var edge in resizeEdges) {
      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);
    }

    resizeEdges.left = resizeEdges.left && !resizeEdges.right;
    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;

    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {
      arg.action = {
        name: 'resize',
        edges: resizeEdges
      };
    }
  } else {
    var right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;
    var bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;

    if (right || bottom) {
      arg.action = {
        name: 'resize',
        axes: (right ? 'x' : '') + (bottom ? 'y' : '')
      };
    }
  }

  return arg.action ? false : undefined;
}

function resizable(interactable, options, scope) {
  if (__is_6.object(options)) {
    interactable.options.resize.enabled = options.enabled !== false;
    interactable.setPerAction('resize', options);
    interactable.setOnEvents('resize', options);

    if (__is_6.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {
      interactable.options.resize.axis = options.axis;
    } else if (options.axis === null) {
      interactable.options.resize.axis = scope.defaults.actions.resize.axis;
    }

    if (__is_6.bool(options.preserveAspectRatio)) {
      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;
    } else if (__is_6.bool(options.square)) {
      interactable.options.resize.square = options.square;
    }

    return interactable;
  }

  if (__is_6.bool(options)) {
    interactable.options.resize.enabled = options;
    return interactable;
  }

  return interactable.options.resize;
}

function checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {
  // false, '', undefined, null
  if (!value) {
    return false;
  } // true value, use pointer coords and element rect


  if (value === true) {
    // if dimensions are negative, "switch" edges
    var width = __is_6.number(rect.width) ? rect.width : rect.right - rect.left;
    var height = __is_6.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension

    margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2);

    if (width < 0) {
      if (name === 'left') {
        name = 'right';
      } else if (name === 'right') {
        name = 'left';
      }
    }

    if (height < 0) {
      if (name === 'top') {
        name = 'bottom';
      } else if (name === 'bottom') {
        name = 'top';
      }
    }

    if (name === 'left') {
      return page.x < (width >= 0 ? rect.left : rect.right) + margin;
    }

    if (name === 'top') {
      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;
    }

    if (name === 'right') {
      return page.x > (width >= 0 ? rect.right : rect.left) - margin;
    }

    if (name === 'bottom') {
      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;
    }
  } // the remaining checks require an element


  if (!__is_6.element(element)) {
    return false;
  }

  return __is_6.element(value) // the value is an element to use as a resize handle
  ? value === element // otherwise check if element matches value as selector
  : __dom_6.matchesUpTo(element, value, interactableElement);
}

function initCursors(browser) {
  return browser.isIe9 ? {
    x: 'e-resize',
    y: 's-resize',
    xy: 'se-resize',
    top: 'n-resize',
    left: 'w-resize',
    bottom: 's-resize',
    right: 'e-resize',
    topleft: 'se-resize',
    bottomright: 'se-resize',
    topright: 'ne-resize',
    bottomleft: 'ne-resize'
  } : {
    x: 'ew-resize',
    y: 'ns-resize',
    xy: 'nwse-resize',
    top: 'ns-resize',
    left: 'ew-resize',
    bottom: 'ns-resize',
    right: 'ew-resize',
    topleft: 'nwse-resize',
    bottomright: 'nwse-resize',
    topright: 'nesw-resize',
    bottomleft: 'nesw-resize'
  };
}

function start(_ref) {
  var iEvent = _ref.iEvent,
      interaction = _ref.interaction;

  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {
    return;
  }

  var resizeEvent = iEvent;
  var rect = interaction.rect;
  interaction._rects = {
    start: (0, ___extend_6["default"])({}, rect),
    corrected: (0, ___extend_6["default"])({}, rect),
    previous: (0, ___extend_6["default"])({}, rect),
    delta: {
      left: 0,
      right: 0,
      width: 0,
      top: 0,
      bottom: 0,
      height: 0
    }
  };
  resizeEvent.edges = interaction.prepared.edges;
  resizeEvent.rect = interaction._rects.corrected;
  resizeEvent.deltaRect = interaction._rects.delta;
}

function __move_6(_ref2) {
  var iEvent = _ref2.iEvent,
      interaction = _ref2.interaction;

  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {
    return;
  }

  var resizeEvent = iEvent;
  var resizeOptions = interaction.interactable.options.resize;
  var invert = resizeOptions.invert;
  var invertible = invert === 'reposition' || invert === 'negate'; // eslint-disable-next-line no-shadow

  var current = interaction.rect;
  var _interaction$_rects = interaction._rects,
      startRect = _interaction$_rects.start,
      corrected = _interaction$_rects.corrected,
      deltaRect = _interaction$_rects.delta,
      previous = _interaction$_rects.previous;
  (0, ___extend_6["default"])(previous, corrected);

  if (invertible) {
    // if invertible, copy the current rect
    (0, ___extend_6["default"])(corrected, current);

    if (invert === 'reposition') {
      // swap edge values if necessary to keep width/height positive
      if (corrected.top > corrected.bottom) {
        var swap = corrected.top;
        corrected.top = corrected.bottom;
        corrected.bottom = swap;
      }

      if (corrected.left > corrected.right) {
        var _swap = corrected.left;
        corrected.left = corrected.right;
        corrected.right = _swap;
      }
    }
  } else {
    // if not invertible, restrict to minimum of 0x0 rect
    corrected.top = Math.min(current.top, startRect.bottom);
    corrected.bottom = Math.max(current.bottom, startRect.top);
    corrected.left = Math.min(current.left, startRect.right);
    corrected.right = Math.max(current.right, startRect.left);
  }

  corrected.width = corrected.right - corrected.left;
  corrected.height = corrected.bottom - corrected.top;

  for (var edge in corrected) {
    deltaRect[edge] = corrected[edge] - previous[edge];
  }

  resizeEvent.edges = interaction.prepared.edges;
  resizeEvent.rect = corrected;
  resizeEvent.deltaRect = deltaRect;
}

function end(_ref3) {
  var iEvent = _ref3.iEvent,
      interaction = _ref3.interaction;

  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {
    return;
  }

  var resizeEvent = iEvent;
  resizeEvent.edges = interaction.prepared.edges;
  resizeEvent.rect = interaction._rects.corrected;
  resizeEvent.deltaRect = interaction._rects.delta;
}

function updateEventAxes(_ref4) {
  var iEvent = _ref4.iEvent,
      interaction = _ref4.interaction;

  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {
    return;
  }

  var options = interaction.interactable.options;
  var resizeEvent = iEvent;

  if (options.resize.square) {
    if (interaction.resizeAxes === 'y') {
      resizeEvent.delta.x = resizeEvent.delta.y;
    } else {
      resizeEvent.delta.y = resizeEvent.delta.x;
    }

    resizeEvent.axes = 'xy';
  } else {
    resizeEvent.axes = interaction.resizeAxes;

    if (interaction.resizeAxes === 'x') {
      resizeEvent.delta.y = 0;
    } else if (interaction.resizeAxes === 'y') {
      resizeEvent.delta.x = 0;
    }
  }
}

var resize = {
  id: 'actions/resize',
  before: ['actions/drag'],
  install: __install_6,
  listeners: {
    'interactions:new': function interactionsNew(_ref5) {
      var interaction = _ref5.interaction;
      interaction.resizeAxes = 'xy';
    },
    'interactions:action-start': function interactionsActionStart(arg) {
      start(arg);
      updateEventAxes(arg);
    },
    'interactions:action-move': function interactionsActionMove(arg) {
      __move_6(arg);
      updateEventAxes(arg);
    },
    'interactions:action-end': end,
    'auto-start:check': resizeChecker
  },
  defaults: {
    square: false,
    preserveAspectRatio: false,
    axis: 'xy',
    // use default margin
    margin: NaN,
    // object with props left, right, top, bottom which are
    // true/false values to resize when the pointer is over that edge,
    // CSS selectors to match the handles for each direction
    // or the Elements for each handle
    edges: null,
    // a value of 'none' will limit the resize rect to a minimum of 0x0
    // 'negate' will alow the rect to have negative width/height
    // 'reposition' will keep the width/height positive by swapping
    // the top and bottom edges and/or swapping the left and right edges
    invert: 'none'
  },
  cursors: null,
  getCursor: function getCursor(_ref6) {
    var edges = _ref6.edges,
        axis = _ref6.axis,
        name = _ref6.name;
    var cursors = resize.cursors;
    var result = null;

    if (axis) {
      result = cursors[name + axis];
    } else if (edges) {
      var cursorKey = '';
      var _arr = ['top', 'bottom', 'left', 'right'];

      for (var _i = 0; _i < _arr.length; _i++) {
        var edge = _arr[_i];

        if (edges[edge]) {
          cursorKey += edge;
        }
      }

      result = cursors[cursorKey];
    }

    return result;
  },
  defaultMargin: null
};
var ___default_6 = resize;
_$resize_6["default"] = ___default_6;

var _$index_5 = {};
"use strict";

Object.defineProperty(_$index_5, "__esModule", {
  value: true
});
Object.defineProperty(_$index_5, "drag", {
  enumerable: true,
  get: function get() {
    return ___drag_5["default"];
  }
});
Object.defineProperty(_$index_5, "drop", {
  enumerable: true,
  get: function get() {
    return _index["default"];
  }
});
Object.defineProperty(_$index_5, "gesture", {
  enumerable: true,
  get: function get() {
    return _gesture["default"];
  }
});
Object.defineProperty(_$index_5, "resize", {
  enumerable: true,
  get: function get() {
    return _resize["default"];
  }
});
_$index_5["default"] = void 0;

var ___drag_5 = ___interopRequireDefault_5(_$drag_1);

var _index = ___interopRequireDefault_5(_$index_3);

var _gesture = ___interopRequireDefault_5(_$gesture_4);

var _resize = ___interopRequireDefault_5(_$resize_6);

function ___interopRequireDefault_5(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var ___default_5 = {
  id: 'actions',
  install: function install(scope) {
    scope.usePlugin(_gesture["default"]);
    scope.usePlugin(_resize["default"]);
    scope.usePlugin(___drag_5["default"]);
    scope.usePlugin(_index["default"]);
  }
};
_$index_5["default"] = ___default_5;

var _$index_7 = {};
"use strict";

Object.defineProperty(_$index_7, "__esModule", {
  value: true
});
_$index_7["default"] = void 0;
var ___default_7 = {};
_$index_7["default"] = ___default_7;

var _$index_8 = {};
"use strict";

function ___typeof_8(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_8 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_8 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_8(obj); }

Object.defineProperty(_$index_8, "__esModule", {
  value: true
});
_$index_8.getContainer = getContainer;
_$index_8.getScroll = getScroll;
_$index_8.getScrollSize = getScrollSize;
_$index_8.getScrollSizeDelta = getScrollSizeDelta;
_$index_8["default"] = void 0;

var __domUtils_8 = ___interopRequireWildcard_8(_$domUtils_69);

var __is_8 = ___interopRequireWildcard_8(_$is_76);

var ___raf_8 = ___interopRequireDefault_8(_$raf_81);

/* removed: var _$rect_82 = require("@interactjs/utils/rect"); */;

/* removed: var _$window_83 = require("@interactjs/utils/window"); */;

function ___interopRequireDefault_8(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_8() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_8 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_8(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_8(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_8(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __install_8(scope) {
  var defaults = scope.defaults,
      actions = scope.actions;
  scope.autoScroll = autoScroll;

  autoScroll.now = function () {
    return scope.now();
  };

  actions.phaselessTypes.autoscroll = true;
  defaults.perAction.autoScroll = autoScroll.defaults;
}

var autoScroll = {
  defaults: {
    enabled: false,
    margin: 60,
    // the item that is scrolled (Window or HTMLElement)
    container: null,
    // the scroll speed in pixels per second
    speed: 300
  },
  now: Date.now,
  interaction: null,
  i: 0,
  // the handle returned by window.setInterval
  // Direction each pulse is to scroll in
  x: 0,
  y: 0,
  isScrolling: false,
  prevTime: 0,
  margin: 0,
  speed: 0,
  start: function start(interaction) {
    autoScroll.isScrolling = true;

    ___raf_8["default"].cancel(autoScroll.i);

    interaction.autoScroll = autoScroll;
    autoScroll.interaction = interaction;
    autoScroll.prevTime = autoScroll.now();
    autoScroll.i = ___raf_8["default"].request(autoScroll.scroll);
  },
  stop: function stop() {
    autoScroll.isScrolling = false;

    if (autoScroll.interaction) {
      autoScroll.interaction.autoScroll = null;
    }

    ___raf_8["default"].cancel(autoScroll.i);
  },
  // scroll the window by the values in scroll.x/y
  scroll: function scroll() {
    var interaction = autoScroll.interaction;
    var interactable = interaction.interactable,
        element = interaction.element;
    var actionName = interaction.prepared.name;
    var options = interactable.options[actionName].autoScroll;
    var container = getContainer(options.container, interactable, element);
    var now = autoScroll.now(); // change in time in seconds

    var dt = (now - autoScroll.prevTime) / 1000; // displacement

    var s = options.speed * dt;

    if (s >= 1) {
      var scrollBy = {
        x: autoScroll.x * s,
        y: autoScroll.y * s
      };

      if (scrollBy.x || scrollBy.y) {
        var prevScroll = getScroll(container);

        if (__is_8.window(container)) {
          container.scrollBy(scrollBy.x, scrollBy.y);
        } else if (container) {
          container.scrollLeft += scrollBy.x;
          container.scrollTop += scrollBy.y;
        }

        var curScroll = getScroll(container);
        var delta = {
          x: curScroll.x - prevScroll.x,
          y: curScroll.y - prevScroll.y
        };

        if (delta.x || delta.y) {
          interactable.fire({
            type: 'autoscroll',
            target: element,
            interactable: interactable,
            delta: delta,
            interaction: interaction,
            container: container
          });
        }
      }

      autoScroll.prevTime = now;
    }

    if (autoScroll.isScrolling) {
      ___raf_8["default"].cancel(autoScroll.i);

      autoScroll.i = ___raf_8["default"].request(autoScroll.scroll);
    }
  },
  check: function check(interactable, actionName) {
    var options = interactable.options;
    return options[actionName].autoScroll && options[actionName].autoScroll.enabled;
  },
  onInteractionMove: function onInteractionMove(_ref) {
    var interaction = _ref.interaction,
        pointer = _ref.pointer;

    if (!(interaction.interacting() && autoScroll.check(interaction.interactable, interaction.prepared.name))) {
      return;
    }

    if (interaction.simulation) {
      autoScroll.x = autoScroll.y = 0;
      return;
    }

    var top;
    var right;
    var bottom;
    var left;
    var interactable = interaction.interactable,
        element = interaction.element;
    var actionName = interaction.prepared.name;
    var options = interactable.options[actionName].autoScroll;
    var container = getContainer(options.container, interactable, element);

    if (__is_8.window(container)) {
      left = pointer.clientX < autoScroll.margin;
      top = pointer.clientY < autoScroll.margin;
      right = pointer.clientX > container.innerWidth - autoScroll.margin;
      bottom = pointer.clientY > container.innerHeight - autoScroll.margin;
    } else {
      var rect = __domUtils_8.getElementClientRect(container);
      left = pointer.clientX < rect.left + autoScroll.margin;
      top = pointer.clientY < rect.top + autoScroll.margin;
      right = pointer.clientX > rect.right - autoScroll.margin;
      bottom = pointer.clientY > rect.bottom - autoScroll.margin;
    }

    autoScroll.x = right ? 1 : left ? -1 : 0;
    autoScroll.y = bottom ? 1 : top ? -1 : 0;

    if (!autoScroll.isScrolling) {
      // set the autoScroll properties to those of the target
      autoScroll.margin = options.margin;
      autoScroll.speed = options.speed;
      autoScroll.start(interaction);
    }
  }
};

function getContainer(value, interactable, element) {
  return (__is_8.string(value) ? (0, _$rect_82.getStringOptionResult)(value, interactable, element) : value) || (0, _$window_83.getWindow)(element);
}

function getScroll(container) {
  if (__is_8.window(container)) {
    container = window.document.body;
  }

  return {
    x: container.scrollLeft,
    y: container.scrollTop
  };
}

function getScrollSize(container) {
  if (__is_8.window(container)) {
    container = window.document.body;
  }

  return {
    x: container.scrollWidth,
    y: container.scrollHeight
  };
}

function getScrollSizeDelta(_ref2, func) {
  var interaction = _ref2.interaction,
      element = _ref2.element;
  var scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll;

  if (!scrollOptions || !scrollOptions.enabled) {
    func();
    return {
      x: 0,
      y: 0
    };
  }

  var scrollContainer = getContainer(scrollOptions.container, interaction.interactable, element);
  var prevSize = getScroll(scrollContainer);
  func();
  var curSize = getScroll(scrollContainer);
  return {
    x: curSize.x - prevSize.x,
    y: curSize.y - prevSize.y
  };
}

var autoScrollPlugin = {
  id: 'auto-scroll',
  install: __install_8,
  listeners: {
    'interactions:new': function interactionsNew(_ref3) {
      var interaction = _ref3.interaction;
      interaction.autoScroll = null;
    },
    'interactions:destroy': function interactionsDestroy(_ref4) {
      var interaction = _ref4.interaction;
      interaction.autoScroll = null;
      autoScroll.stop();

      if (autoScroll.interaction) {
        autoScroll.interaction = null;
      }
    },
    'interactions:stop': autoScroll.stop,
    'interactions:action-move': function interactionsActionMove(arg) {
      return autoScroll.onInteractionMove(arg);
    }
  }
};
var ___default_8 = autoScrollPlugin;
_$index_8["default"] = ___default_8;

var _$InteractableMethods_9 = {};
"use strict";

function ___typeof_9(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_9 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_9 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_9(obj); }

Object.defineProperty(_$InteractableMethods_9, "__esModule", {
  value: true
});
_$InteractableMethods_9["default"] = void 0;

/* removed: var _$index_75 = require("@interactjs/utils/index"); */;

var __is_9 = ___interopRequireWildcard_9(_$is_76);

function ___getRequireWildcardCache_9() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_9 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_9(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_9(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_9(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __install_9(scope) {
  var Interactable = scope.Interactable;

  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {
    var action = defaultActionChecker(this, event, interaction, element, scope);

    if (this.options.actionChecker) {
      return this.options.actionChecker(pointer, event, action, this, element, interaction);
    }

    return action;
  };
  /**
   * ```js
   * interact(element, { ignoreFrom: document.getElementById('no-action') })
   * // or
   * interact(element).ignoreFrom('input, textarea, a')
   * ```
   * @deprecated
   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any
   * of it's parents match the given CSS selector or Element, no
   * drag/resize/gesture is started.
   *
   * Don't use this method. Instead set the `ignoreFrom` option for each action
   * or for `pointerEvents`
   *
   * @example
   * interact(targett)
   *   .draggable({
   *     ignoreFrom: 'input, textarea, a[href]'',
   *   })
   *   .pointerEvents({
   *     ignoreFrom: '[no-pointer]',
   *   })
   *
   * @param {string | Element | null} [newValue] a CSS selector string, an
   * Element or `null` to not ignore any elements
   * @return {string | Element | object} The current ignoreFrom value or this
   * Interactable
   */


  Interactable.prototype.ignoreFrom = (0, _$index_75.warnOnce)(function (newValue) {
    return this._backCompatOption('ignoreFrom', newValue);
  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');
  /**
   * @deprecated
   *
   * A drag/resize/gesture is started only If the target of the `mousedown`,
   * `pointerdown` or `touchstart` event or any of it's parents match the given
   * CSS selector or Element.
   *
   * Don't use this method. Instead set the `allowFrom` option for each action
   * or for `pointerEvents`
   *
   * @example
   * interact(targett)
   *   .resizable({
   *     allowFrom: '.resize-handle',
   *   .pointerEvents({
   *     allowFrom: '.handle',,
   *   })
   *
   * @param {string | Element | null} [newValue] a CSS selector string, an
   * Element or `null` to allow from any element
   * @return {string | Element | object} The current allowFrom value or this
   * Interactable
   */

  Interactable.prototype.allowFrom = (0, _$index_75.warnOnce)(function (newValue) {
    return this._backCompatOption('allowFrom', newValue);
  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');
  /**
   * ```js
   * interact('.resize-drag')
   *   .resizable(true)
   *   .draggable(true)
   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {
   *
   *   if (interact.matchesSelector(event.target, '.drag-handle')) {
   *     // force drag with handle target
   *     action.name = drag
   *   }
   *   else {
   *     // resize from the top and right edges
   *     action.name  = 'resize'
   *     action.edges = { top: true, right: true }
   *   }
   *
   *   return action
   * })
   * ```
   *
   * Returns or sets the function used to check action to be performed on
   * pointerDown
   *
   * @param {function | null} [checker] A function which takes a pointer event,
   * defaultAction string, interactable, element and interaction as parameters
   * and returns an object with name property 'drag' 'resize' or 'gesture' and
   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right
   * props.
   * @return {Function | Interactable} The checker function or this Interactable
   */

  Interactable.prototype.actionChecker = actionChecker;
  /**
   * Returns or sets whether the the cursor should be changed depending on the
   * action that would be performed if the mouse were pressed and dragged.
   *
   * @param {boolean} [newValue]
   * @return {boolean | Interactable} The current setting or this Interactable
   */

  Interactable.prototype.styleCursor = styleCursor;
}

function defaultActionChecker(interactable, event, interaction, element, scope) {
  var rect = interactable.getRect(element);
  var buttons = event.buttons || {
    0: 1,
    1: 4,
    3: 8,
    4: 16
  }[event.button];
  var arg = {
    action: null,
    interactable: interactable,
    interaction: interaction,
    element: element,
    rect: rect,
    buttons: buttons
  };
  scope.fire('auto-start:check', arg);
  return arg.action;
}

function styleCursor(newValue) {
  if (__is_9.bool(newValue)) {
    this.options.styleCursor = newValue;
    return this;
  }

  if (newValue === null) {
    delete this.options.styleCursor;
    return this;
  }

  return this.options.styleCursor;
}

function actionChecker(checker) {
  if (__is_9.func(checker)) {
    this.options.actionChecker = checker;
    return this;
  }

  if (checker === null) {
    delete this.options.actionChecker;
    return this;
  }

  return this.options.actionChecker;
}

var ___default_9 = {
  id: 'auto-start/interactableMethods',
  install: __install_9
};
_$InteractableMethods_9["default"] = ___default_9;

var _$base_10 = {};
"use strict";

function ___typeof_10(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_10 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_10 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_10(obj); }

Object.defineProperty(_$base_10, "__esModule", {
  value: true
});
_$base_10["default"] = void 0;

var __utils_10 = ___interopRequireWildcard_10(_$index_75);

var _InteractableMethods = ___interopRequireDefault_10(_$InteractableMethods_9);

function ___interopRequireDefault_10(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_10() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_10 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_10(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_10(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_10(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __install_10(scope) {
  var interact = scope.interactStatic,
      defaults = scope.defaults;
  scope.usePlugin(_InteractableMethods["default"]);
  defaults.base.actionChecker = null;
  defaults.base.styleCursor = true;
  __utils_10.extend(defaults.perAction, {
    manualStart: false,
    max: Infinity,
    maxPerElement: 1,
    allowFrom: null,
    ignoreFrom: null,
    // only allow left button by default
    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value
    mouseButtons: 1
  });
  /**
   * Returns or sets the maximum number of concurrent interactions allowed.  By
   * default only 1 interaction is allowed at a time (for backwards
   * compatibility). To allow multiple interactions on the same Interactables and
   * elements, you need to enable it in the draggable, resizable and gesturable
   * `'max'` and `'maxPerElement'` options.
   *
   * @alias module:interact.maxInteractions
   *
   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.
   */

  interact.maxInteractions = function (newValue) {
    return maxInteractions(newValue, scope);
  };

  scope.autoStart = {
    // Allow this many interactions to happen simultaneously
    maxInteractions: Infinity,
    withinInteractionLimit: withinInteractionLimit,
    cursorElement: null
  };
}

function prepareOnDown(_ref, scope) {
  var interaction = _ref.interaction,
      pointer = _ref.pointer,
      event = _ref.event,
      eventTarget = _ref.eventTarget;

  if (interaction.interacting()) {
    return;
  }

  var actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);
  prepare(interaction, actionInfo, scope);
}

function prepareOnMove(_ref2, scope) {
  var interaction = _ref2.interaction,
      pointer = _ref2.pointer,
      event = _ref2.event,
      eventTarget = _ref2.eventTarget;

  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {
    return;
  }

  var actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);
  prepare(interaction, actionInfo, scope);
}

function startOnMove(arg, scope) {
  var interaction = arg.interaction;

  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {
    return;
  }

  scope.fire('autoStart:before-start', arg);
  var interactable = interaction.interactable;
  var actionName = interaction.prepared.name;

  if (actionName && interactable) {
    // check manualStart and interaction limit
    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {
      interaction.stop();
    } else {
      interaction.start(interaction.prepared, interactable, interaction.element);
      setInteractionCursor(interaction, scope);
    }
  }
}

function clearCursorOnStop(_ref3, scope) {
  var interaction = _ref3.interaction;
  var interactable = interaction.interactable;

  if (interactable && interactable.options.styleCursor) {
    setCursor(interaction.element, '', scope);
  }
} // Check if the current interactable supports the action.
// If so, return the validated action. Otherwise, return null


function validateAction(action, interactable, element, eventTarget, scope) {
  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {
    return action;
  }

  return null;
}

function validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {
  for (var i = 0, len = matches.length; i < len; i++) {
    var match = matches[i];
    var matchElement = matchElements[i];
    var matchAction = match.getAction(pointer, event, interaction, matchElement);

    if (!matchAction) {
      continue;
    }

    var action = validateAction(matchAction, match, matchElement, eventTarget, scope);

    if (action) {
      return {
        action: action,
        interactable: match,
        element: matchElement
      };
    }
  }

  return {
    action: null,
    interactable: null,
    element: null
  };
}

function getActionInfo(interaction, pointer, event, eventTarget, scope) {
  var matches = [];
  var matchElements = [];
  var element = eventTarget;

  function pushMatches(interactable) {
    matches.push(interactable);
    matchElements.push(element);
  }

  while (__utils_10.is.element(element)) {
    matches = [];
    matchElements = [];
    scope.interactables.forEachMatch(element, pushMatches);
    var actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);

    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {
      return actionInfo;
    }

    element = __utils_10.dom.parentNode(element);
  }

  return {
    action: null,
    interactable: null,
    element: null
  };
}

function prepare(interaction, _ref4, scope) {
  var action = _ref4.action,
      interactable = _ref4.interactable,
      element = _ref4.element;
  action = action || {
    name: null
  };
  interaction.interactable = interactable;
  interaction.element = element;
  __utils_10.copyAction(interaction.prepared, action);
  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;
  setInteractionCursor(interaction, scope);
  scope.fire('autoStart:prepared', {
    interaction: interaction
  });
}

function withinInteractionLimit(interactable, element, action, scope) {
  var options = interactable.options;
  var maxActions = options[action.name].max;
  var maxPerElement = options[action.name].maxPerElement;
  var autoStartMax = scope.autoStart.maxInteractions;
  var activeInteractions = 0;
  var interactableCount = 0;
  var elementCount = 0; // no actions if any of these values == 0

  if (!(maxActions && maxPerElement && autoStartMax)) {
    return false;
  }

  for (var _i = 0; _i < scope.interactions.list.length; _i++) {
    var _ref5;

    _ref5 = scope.interactions.list[_i];
    var interaction = _ref5;
    var otherAction = interaction.prepared.name;

    if (!interaction.interacting()) {
      continue;
    }

    activeInteractions++;

    if (activeInteractions >= autoStartMax) {
      return false;
    }

    if (interaction.interactable !== interactable) {
      continue;
    }

    interactableCount += otherAction === action.name ? 1 : 0;

    if (interactableCount >= maxActions) {
      return false;
    }

    if (interaction.element === element) {
      elementCount++;

      if (otherAction === action.name && elementCount >= maxPerElement) {
        return false;
      }
    }
  }

  return autoStartMax > 0;
}

function maxInteractions(newValue, scope) {
  if (__utils_10.is.number(newValue)) {
    scope.autoStart.maxInteractions = newValue;
    return this;
  }

  return scope.autoStart.maxInteractions;
}

function setCursor(element, cursor, scope) {
  var prevCursorElement = scope.autoStart.cursorElement;

  if (prevCursorElement && prevCursorElement !== element) {
    prevCursorElement.style.cursor = '';
  }

  element.ownerDocument.documentElement.style.cursor = cursor;
  element.style.cursor = cursor;
  scope.autoStart.cursorElement = cursor ? element : null;
}

function setInteractionCursor(interaction, scope) {
  var interactable = interaction.interactable,
      element = interaction.element,
      prepared = interaction.prepared;

  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {
    // clear previous target element cursor
    if (scope.autoStart.cursorElement) {
      setCursor(scope.autoStart.cursorElement, '', scope);
    }

    return;
  }

  var cursor = '';

  if (prepared.name) {
    var cursorChecker = interactable.options[prepared.name].cursorChecker;

    if (__utils_10.is.func(cursorChecker)) {
      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);
    } else {
      cursor = scope.actions.map[prepared.name].getCursor(prepared);
    }
  }

  setCursor(interaction.element, cursor || '', scope);
}

var autoStart = {
  id: 'auto-start/base',
  before: ['actions', 'actions/drag', 'actions/resize', 'actions/gesture'],
  install: __install_10,
  listeners: {
    'interactions:down': prepareOnDown,
    'interactions:move': function interactionsMove(arg, scope) {
      prepareOnMove(arg, scope);
      startOnMove(arg, scope);
    },
    'interactions:stop': clearCursorOnStop
  },
  maxInteractions: maxInteractions,
  withinInteractionLimit: withinInteractionLimit,
  validateAction: validateAction
};
var ___default_10 = autoStart;
_$base_10["default"] = ___default_10;

var _$dragAxis_11 = {};
"use strict";

function ___typeof_11(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_11 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_11 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_11(obj); }

Object.defineProperty(_$dragAxis_11, "__esModule", {
  value: true
});
_$dragAxis_11["default"] = void 0;

/* removed: var _$domUtils_69 = require("@interactjs/utils/domUtils"); */;

var __is_11 = ___interopRequireWildcard_11(_$is_76);

var _base = ___interopRequireDefault_11(_$base_10);

function ___interopRequireDefault_11(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_11() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_11 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_11(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_11(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_11(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function beforeStart(_ref, scope) {
  var interaction = _ref.interaction,
      eventTarget = _ref.eventTarget,
      dx = _ref.dx,
      dy = _ref.dy;

  if (interaction.prepared.name !== 'drag') {
    return;
  } // check if a drag is in the correct axis


  var absX = Math.abs(dx);
  var absY = Math.abs(dy);
  var targetOptions = interaction.interactable.options.drag;
  var startAxis = targetOptions.startAxis;
  var currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';
  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'
  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable

  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {
    // cancel the prepared action
    interaction.prepared.name = null; // then try to get a drag from another ineractable

    var element = eventTarget;

    var getDraggable = function getDraggable(interactable) {
      if (interactable === interaction.interactable) {
        return;
      }

      var options = interaction.interactable.options.drag;

      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {
        var action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);

        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && _base["default"].validateAction(action, interactable, element, eventTarget, scope)) {
          return interactable;
        }
      }
    }; // check all interactables


    while (__is_11.element(element)) {
      var interactable = scope.interactables.forEachMatch(element, getDraggable);

      if (interactable) {
        interaction.prepared.name = 'drag';
        interaction.interactable = interactable;
        interaction.element = element;
        break;
      }

      element = (0, _$domUtils_69.parentNode)(element);
    }
  }
}

function checkStartAxis(startAxis, interactable) {
  if (!interactable) {
    return false;
  }

  var thisAxis = interactable.options.drag.startAxis;
  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;
}

var ___default_11 = {
  id: 'auto-start/dragAxis',
  listeners: {
    'autoStart:before-start': beforeStart
  }
};
_$dragAxis_11["default"] = ___default_11;

var _$hold_12 = {};
"use strict";

Object.defineProperty(_$hold_12, "__esModule", {
  value: true
});
_$hold_12["default"] = void 0;

var ___base_12 = ___interopRequireDefault_12(_$base_10);

function ___interopRequireDefault_12(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __install_12(scope) {
  var defaults = scope.defaults;
  scope.usePlugin(___base_12["default"]);
  defaults.perAction.hold = 0;
  defaults.perAction.delay = 0;
}

function getHoldDuration(interaction) {
  var actionName = interaction.prepared && interaction.prepared.name;

  if (!actionName) {
    return null;
  }

  var options = interaction.interactable.options;
  return options[actionName].hold || options[actionName].delay;
}

var ___default_12 = {
  id: 'auto-start/hold',
  install: __install_12,
  listeners: {
    'interactions:new': function interactionsNew(_ref) {
      var interaction = _ref.interaction;
      interaction.autoStartHoldTimer = null;
    },
    'autoStart:prepared': function autoStartPrepared(_ref2) {
      var interaction = _ref2.interaction;
      var hold = getHoldDuration(interaction);

      if (hold > 0) {
        interaction.autoStartHoldTimer = setTimeout(function () {
          interaction.start(interaction.prepared, interaction.interactable, interaction.element);
        }, hold);
      }
    },
    'interactions:move': function interactionsMove(_ref3) {
      var interaction = _ref3.interaction,
          duplicate = _ref3.duplicate;

      if (interaction.pointerWasMoved && !duplicate) {
        clearTimeout(interaction.autoStartHoldTimer);
      }
    },
    // prevent regular down->move autoStart
    'autoStart:before-start': function autoStartBeforeStart(_ref4) {
      var interaction = _ref4.interaction;
      var hold = getHoldDuration(interaction);

      if (hold > 0) {
        interaction.prepared.name = null;
      }
    }
  },
  getHoldDuration: getHoldDuration
};
_$hold_12["default"] = ___default_12;

var _$index_13 = {};
"use strict";

Object.defineProperty(_$index_13, "__esModule", {
  value: true
});
Object.defineProperty(_$index_13, "autoStart", {
  enumerable: true,
  get: function get() {
    return ___base_13["default"];
  }
});
Object.defineProperty(_$index_13, "dragAxis", {
  enumerable: true,
  get: function get() {
    return _dragAxis["default"];
  }
});
Object.defineProperty(_$index_13, "hold", {
  enumerable: true,
  get: function get() {
    return _hold["default"];
  }
});
_$index_13["default"] = void 0;

var ___base_13 = ___interopRequireDefault_13(_$base_10);

var _dragAxis = ___interopRequireDefault_13(_$dragAxis_11);

var _hold = ___interopRequireDefault_13(_$hold_12);

function ___interopRequireDefault_13(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var ___default_13 = {
  id: 'auto-start',
  install: function install(scope) {
    scope.usePlugin(___base_13["default"]);
    scope.usePlugin(_hold["default"]);
    scope.usePlugin(_dragAxis["default"]);
  }
};
_$index_13["default"] = ___default_13;

var _$index_14 = {};
"use strict";

Object.defineProperty(_$index_14, "__esModule", {
  value: true
});
_$index_14["default"] = void 0;
var ___default_14 = {};
_$index_14["default"] = ___default_14;

var _$index_15 = {};
"use strict";

Object.defineProperty(_$index_15, "__esModule", {
  value: true
});
_$index_15["default"] = void 0;
var ___default_15 = {};
_$index_15["default"] = ___default_15;

var _$index_29 = {};
"use strict";

function ___typeof_29(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_29 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_29 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_29(obj); }

Object.defineProperty(_$index_29, "__esModule", {
  value: true
});
_$index_29["default"] = void 0;

var ___domObjects_29 = ___interopRequireDefault_29(_$domObjects_68);

/* removed: var _$domUtils_69 = require("@interactjs/utils/domUtils"); */;

var ___extend_29 = ___interopRequireDefault_29(_$extend_72);

var __is_29 = ___interopRequireWildcard_29(_$is_76);

var ___window_29 = ___interopRequireDefault_29(_$window_83);

function ___getRequireWildcardCache_29() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_29 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_29(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_29(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_29(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_29(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___toConsumableArray_29(arr) { return ___arrayWithoutHoles_29(arr) || ___iterableToArray_29(arr) || ___nonIterableSpread_29(); }

function ___nonIterableSpread_29() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }

function ___iterableToArray_29(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }

function ___arrayWithoutHoles_29(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }

var CheckName;

(function (CheckName) {
  CheckName["touchAction"] = "touchAction";
  CheckName["boxSizing"] = "boxSizing";
  CheckName["noListeners"] = "noListeners";
})(CheckName || (CheckName = {}));

var prefix = '[interact.js] ';
var links = {
  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',
  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'
};
var isProduction = "production" === 'production'; // eslint-disable-next-line no-restricted-syntax

function __install_29(scope) {
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
      logger = _ref.logger;

  var Interactable = scope.Interactable,
      defaults = scope.defaults;
  scope.logger = logger || console;
  defaults.base.devTools = {
    ignore: {}
  };

  Interactable.prototype.devTools = function (options) {
    if (options) {
      (0, ___extend_29["default"])(this.options.devTools, options);
      return this;
    }

    return this.options.devTools;
  };
}

var checks = [{
  name: CheckName.touchAction,
  perform: function perform(_ref2) {
    var element = _ref2.element;
    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);
  },
  getInfo: function getInfo(_ref3) {
    var element = _ref3.element;
    return [element, links.touchAction];
  },
  text: 'Consider adding CSS "touch-action: none" to this element\n'
}, {
  name: CheckName.boxSizing,
  perform: function perform(interaction) {
    var element = interaction.element;
    return interaction.prepared.name === 'resize' && element instanceof ___domObjects_29["default"].HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);
  },
  text: 'Consider adding CSS "box-sizing: border-box" to this resizable element',
  getInfo: function getInfo(_ref4) {
    var element = _ref4.element;
    return [element, links.boxSizing];
  }
}, {
  name: CheckName.noListeners,
  perform: function perform(interaction) {
    var actionName = interaction.prepared.name;
    var moveListeners = interaction.interactable.events.types["".concat(actionName, "move")] || [];
    return !moveListeners.length;
  },
  getInfo: function getInfo(interaction) {
    return [interaction.prepared.name, interaction.interactable];
  },
  text: 'There are no listeners set for this action'
}];

function hasStyle(element, prop, styleRe) {
  return styleRe.test(element.style[prop] || ___window_29["default"].window.getComputedStyle(element)[prop]);
}

function parentHasStyle(element, prop, styleRe) {
  var parent = element;

  while (__is_29.element(parent)) {
    if (hasStyle(parent, prop, styleRe)) {
      return true;
    }

    parent = (0, _$domUtils_69.parentNode)(parent);
  }

  return false;
}

var id = 'dev-tools';
var defaultExport = isProduction ? {
  id: id,
  install: function install() {}
} : {
  id: id,
  install: __install_29,
  listeners: {
    'interactions:action-start': function interactionsActionStart(_ref5, scope) {
      var interaction = _ref5.interaction;

      for (var _i = 0; _i < checks.length; _i++) {
        var _ref6;

        _ref6 = checks[_i];
        var check = _ref6;
        var options = interaction.interactable && interaction.interactable.options;

        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {
          var _scope$logger;

          (_scope$logger = scope.logger).warn.apply(_scope$logger, [prefix + check.text].concat(___toConsumableArray_29(check.getInfo(interaction))));
        }
      }
    }
  },
  checks: checks,
  CheckName: CheckName,
  links: links,
  prefix: prefix
};
var ___default_29 = defaultExport;
_$index_29["default"] = ___default_29;

var _$index_30 = {};
"use strict";

Object.defineProperty(_$index_30, "__esModule", {
  value: true
});
_$index_30["default"] = void 0;
var ___default_30 = {};
_$index_30["default"] = ___default_30;

var _$Modification_34 = {};
"use strict";

function ___typeof_34(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_34 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_34 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_34(obj); }

Object.defineProperty(_$Modification_34, "__esModule", {
  value: true
});
_$Modification_34.getRectOffset = getRectOffset;
_$Modification_34["default"] = void 0;

var ___clone_34 = ___interopRequireDefault_34(_$clone_66);

var ___extend_34 = ___interopRequireDefault_34(_$extend_72);

var rectUtils = ___interopRequireWildcard_34(_$rect_82);

function ___getRequireWildcardCache_34() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_34 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_34(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_34(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_34(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_34(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___slicedToArray_34(arr, i) { return ___arrayWithHoles_34(arr) || ___iterableToArrayLimit_34(arr, i) || ___nonIterableRest_34(); }

function ___nonIterableRest_34() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function ___iterableToArrayLimit_34(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function ___arrayWithHoles_34(arr) { if (Array.isArray(arr)) return arr; }

function ___classCallCheck_34(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_34(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_34(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_34(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_34(Constructor, staticProps); return Constructor; }

function ___defineProperty_34(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var Modification = /*#__PURE__*/function () {
  function Modification(interaction) {
    ___classCallCheck_34(this, Modification);

    this.interaction = interaction;

    ___defineProperty_34(this, "states", []);

    ___defineProperty_34(this, "startOffset", {
      left: 0,
      right: 0,
      top: 0,
      bottom: 0
    });

    ___defineProperty_34(this, "startDelta", null);

    ___defineProperty_34(this, "result", null);

    ___defineProperty_34(this, "endResult", null);

    ___defineProperty_34(this, "edges", void 0);

    this.result = createResult();
  }

  ___createClass_34(Modification, [{
    key: "start",
    value: function start(_ref, pageCoords) {
      var phase = _ref.phase;
      var interaction = this.interaction;
      var modifierList = getModifierList(interaction);
      this.prepareStates(modifierList);
      this.edges = (0, ___extend_34["default"])({}, interaction.edges);
      this.startOffset = getRectOffset(interaction.rect, pageCoords);
      this.startDelta = {
        x: 0,
        y: 0
      };
      var arg = {
        phase: phase,
        pageCoords: pageCoords,
        preEnd: false
      };
      this.result = createResult();
      this.startAll(arg);
      var result = this.result = this.setAll(arg);
      return result;
    }
  }, {
    key: "fillArg",
    value: function fillArg(arg) {
      var interaction = this.interaction;
      arg.interaction = interaction;
      arg.interactable = interaction.interactable;
      arg.element = interaction.element;
      arg.rect = arg.rect || interaction.rect;
      arg.edges = this.edges;
      arg.startOffset = this.startOffset;
    }
  }, {
    key: "startAll",
    value: function startAll(arg) {
      this.fillArg(arg);

      for (var _i = 0; _i < this.states.length; _i++) {
        var _ref2;

        _ref2 = this.states[_i];
        var state = _ref2;

        if (state.methods.start) {
          arg.state = state;
          state.methods.start(arg);
        }
      }
    }
  }, {
    key: "setAll",
    value: function setAll(arg) {
      this.fillArg(arg);
      var phase = arg.phase,
          preEnd = arg.preEnd,
          skipModifiers = arg.skipModifiers,
          unmodifiedRect = arg.rect;
      arg.coords = (0, ___extend_34["default"])({}, arg.pageCoords);
      arg.rect = (0, ___extend_34["default"])({}, unmodifiedRect);
      var states = skipModifiers ? this.states.slice(skipModifiers) : this.states;
      var newResult = createResult(arg.coords, arg.rect);

      for (var _i2 = 0; _i2 < states.length; _i2++) {
        var _ref3;

        _ref3 = states[_i2];
        var state = _ref3;
        var options = state.options;
        var lastModifierCoords = (0, ___extend_34["default"])({}, arg.coords);
        var returnValue = null;

        if (state.methods.set && this.shouldDo(options, preEnd, phase)) {
          arg.state = state;
          returnValue = state.methods.set(arg);
          rectUtils.addEdges(this.interaction.edges, arg.rect, {
            x: arg.coords.x - lastModifierCoords.x,
            y: arg.coords.y - lastModifierCoords.y
          });
        }

        newResult.eventProps.push(returnValue);
      }

      newResult.delta.x = arg.coords.x - arg.pageCoords.x;
      newResult.delta.y = arg.coords.y - arg.pageCoords.y;
      newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;
      newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;
      newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;
      newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;
      var prevCoords = this.result.coords;
      var prevRect = this.result.rect;

      if (prevCoords && prevRect) {
        var rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;
        newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;
      }

      return newResult;
    }
  }, {
    key: "applyToInteraction",
    value: function applyToInteraction(arg) {
      var interaction = this.interaction;
      var phase = arg.phase;
      var curCoords = interaction.coords.cur;
      var startCoords = interaction.coords.start;
      var result = this.result,
          startDelta = this.startDelta;
      var curDelta = result.delta;

      if (phase === 'start') {
        (0, ___extend_34["default"])(this.startDelta, result.delta);
      }

      for (var _i3 = 0; _i3 < [[startCoords, startDelta], [curCoords, curDelta]].length; _i3++) {
        var _ref4;

        _ref4 = [[startCoords, startDelta], [curCoords, curDelta]][_i3];

        var _ref5 = _ref4,
            _ref6 = ___slicedToArray_34(_ref5, 2),
            coordsSet = _ref6[0],
            delta = _ref6[1];

        coordsSet.page.x += delta.x;
        coordsSet.page.y += delta.y;
        coordsSet.client.x += delta.x;
        coordsSet.client.y += delta.y;
      }

      var rectDelta = this.result.rectDelta;
      var rect = arg.rect || interaction.rect;
      rect.left += rectDelta.left;
      rect.right += rectDelta.right;
      rect.top += rectDelta.top;
      rect.bottom += rectDelta.bottom;
      rect.width = rect.right - rect.left;
      rect.height = rect.bottom - rect.top;
    }
  }, {
    key: "setAndApply",
    value: function setAndApply(arg) {
      var interaction = this.interaction;
      var phase = arg.phase,
          preEnd = arg.preEnd,
          skipModifiers = arg.skipModifiers;
      var result = this.setAll({
        preEnd: preEnd,
        phase: phase,
        pageCoords: arg.modifiedCoords || interaction.coords.cur.page
      });
      this.result = result; // don't fire an action move if a modifier would keep the event in the same
      // cordinates as before

      if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {
        return false;
      }

      if (arg.modifiedCoords) {
        var page = interaction.coords.cur.page;
        var adjustment = {
          x: arg.modifiedCoords.x - page.x,
          y: arg.modifiedCoords.y - page.y
        };
        result.coords.x += adjustment.x;
        result.coords.y += adjustment.y;
        result.delta.x += adjustment.x;
        result.delta.y += adjustment.y;
      }

      this.applyToInteraction(arg);
    }
  }, {
    key: "beforeEnd",
    value: function beforeEnd(arg) {
      var interaction = arg.interaction,
          event = arg.event;
      var states = this.states;

      if (!states || !states.length) {
        return;
      }

      var doPreend = false;

      for (var _i4 = 0; _i4 < states.length; _i4++) {
        var _ref7;

        _ref7 = states[_i4];
        var state = _ref7;
        arg.state = state;
        var options = state.options,
            methods = state.methods;
        var endPosition = methods.beforeEnd && methods.beforeEnd(arg);

        if (endPosition) {
          this.endResult = endPosition;
          return false;
        }

        doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);
      }

      if (doPreend) {
        // trigger a final modified move before ending
        interaction.move({
          event: event,
          preEnd: true
        });
      }
    }
  }, {
    key: "stop",
    value: function stop(arg) {
      var interaction = arg.interaction;

      if (!this.states || !this.states.length) {
        return;
      }

      var modifierArg = (0, ___extend_34["default"])({
        states: this.states,
        interactable: interaction.interactable,
        element: interaction.element,
        rect: null
      }, arg);
      this.fillArg(modifierArg);

      for (var _i5 = 0; _i5 < this.states.length; _i5++) {
        var _ref8;

        _ref8 = this.states[_i5];
        var state = _ref8;
        modifierArg.state = state;

        if (state.methods.stop) {
          state.methods.stop(modifierArg);
        }
      }

      this.states = null;
      this.endResult = null;
    }
  }, {
    key: "prepareStates",
    value: function prepareStates(modifierList) {
      this.states = [];

      for (var index = 0; index < modifierList.length; index++) {
        var _modifierList$index = modifierList[index],
            options = _modifierList$index.options,
            methods = _modifierList$index.methods,
            name = _modifierList$index.name;

        if (options && options.enabled === false) {
          continue;
        }

        this.states.push({
          options: options,
          methods: methods,
          index: index,
          name: name
        });
      }

      return this.states;
    }
  }, {
    key: "restoreInteractionCoords",
    value: function restoreInteractionCoords(_ref9) {
      var _ref9$interaction = _ref9.interaction,
          coords = _ref9$interaction.coords,
          rect = _ref9$interaction.rect,
          modification = _ref9$interaction.modification;

      if (!modification.result) {
        return;
      }

      var startDelta = modification.startDelta;
      var _modification$result = modification.result,
          curDelta = _modification$result.delta,
          rectDelta = _modification$result.rectDelta;
      var coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];

      for (var _i6 = 0; _i6 < coordsAndDeltas.length; _i6++) {
        var _ref10;

        _ref10 = coordsAndDeltas[_i6];

        var _ref11 = _ref10,
            _ref12 = ___slicedToArray_34(_ref11, 2),
            coordsSet = _ref12[0],
            delta = _ref12[1];

        coordsSet.page.x -= delta.x;
        coordsSet.page.y -= delta.y;
        coordsSet.client.x -= delta.x;
        coordsSet.client.y -= delta.y;
      }

      rect.left -= rectDelta.left;
      rect.right -= rectDelta.right;
      rect.top -= rectDelta.top;
      rect.bottom -= rectDelta.bottom;
    }
  }, {
    key: "shouldDo",
    value: function shouldDo(options, preEnd, phase, requireEndOnly) {
      if ( // ignore disabled modifiers
      !options || options.enabled === false || // check if we require endOnly option to fire move before end
      requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending
      options.endOnly && !preEnd || // check if modifier should run be applied on start
      phase === 'start' && !options.setStart) {
        return false;
      }

      return true;
    }
  }, {
    key: "copyFrom",
    value: function copyFrom(other) {
      this.startOffset = other.startOffset;
      this.startDelta = other.startDelta;
      this.edges = other.edges;
      this.states = other.states.map(function (s) {
        return (0, ___clone_34["default"])(s);
      });
      this.result = createResult((0, ___extend_34["default"])({}, other.result.coords), (0, ___extend_34["default"])({}, other.result.rect));
    }
  }, {
    key: "destroy",
    value: function destroy() {
      for (var prop in this) {
        this[prop] = null;
      }
    }
  }]);

  return Modification;
}();

_$Modification_34["default"] = Modification;

function createResult(coords, rect) {
  return {
    rect: rect,
    coords: coords,
    delta: {
      x: 0,
      y: 0
    },
    rectDelta: {
      left: 0,
      right: 0,
      top: 0,
      bottom: 0
    },
    eventProps: [],
    changed: true
  };
}

function getModifierList(interaction) {
  var actionOptions = interaction.interactable.options[interaction.prepared.name];
  var actionModifiers = actionOptions.modifiers;

  if (actionModifiers && actionModifiers.length) {
    return actionModifiers.filter(function (modifier) {
      return !modifier.options || modifier.options.enabled !== false;
    });
  }

  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(function (type) {
    var options = actionOptions[type];
    return options && options.enabled && {
      options: options,
      methods: options._methods
    };
  }).filter(function (m) {
    return !!m;
  });
}

function getRectOffset(rect, coords) {
  return rect ? {
    left: coords.x - rect.left,
    top: coords.y - rect.top,
    right: rect.right - coords.x,
    bottom: rect.bottom - coords.y
  } : {
    left: 0,
    top: 0,
    right: 0,
    bottom: 0
  };
}

var _$base_38 = {};
"use strict";

Object.defineProperty(_$base_38, "__esModule", {
  value: true
});
_$base_38.makeModifier = makeModifier;
_$base_38.addEventModifiers = addEventModifiers;
_$base_38["default"] = void 0;

var _Modification = ___interopRequireDefault_38(_$Modification_34);

function ___interopRequireDefault_38(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function makeModifier(module, name) {
  var defaults = module.defaults;
  var methods = {
    start: module.start,
    set: module.set,
    beforeEnd: module.beforeEnd,
    stop: module.stop
  };

  var modifier = function modifier(_options) {
    var options = _options || {};
    options.enabled = options.enabled !== false; // add missing defaults to options

    for (var _prop in defaults) {
      if (!(_prop in options)) {
        options[_prop] = defaults[_prop];
      }
    }

    var m = {
      options: options,
      methods: methods,
      name: name
    };
    return m;
  };

  if (name && typeof name === 'string') {
    // for backwrads compatibility
    modifier._defaults = defaults;
    modifier._methods = methods;
  }

  return modifier;
}

function addEventModifiers(_ref) {
  var iEvent = _ref.iEvent,
      result = _ref.interaction.modification.result;

  if (result) {
    iEvent.modifiers = result.eventProps;
  }
}

var modifiersBase = {
  id: 'modifiers/base',
  install: function install(scope) {
    scope.defaults.perAction.modifiers = [];
  },
  listeners: {
    'interactions:new': function interactionsNew(_ref2) {
      var interaction = _ref2.interaction;
      interaction.modification = new _Modification["default"](interaction);
    },
    'interactions:before-action-start': function interactionsBeforeActionStart(arg) {
      var modification = arg.interaction.modification;
      modification.start(arg, arg.interaction.coords.start.page);
      arg.interaction.edges = modification.edges;
      modification.applyToInteraction(arg);
    },
    'interactions:before-action-move': function interactionsBeforeActionMove(arg) {
      return arg.interaction.modification.setAndApply(arg);
    },
    'interactions:before-action-end': function interactionsBeforeActionEnd(arg) {
      return arg.interaction.modification.beforeEnd(arg);
    },
    'interactions:action-start': addEventModifiers,
    'interactions:action-move': addEventModifiers,
    'interactions:action-end': addEventModifiers,
    'interactions:after-action-start': function interactionsAfterActionStart(arg) {
      return arg.interaction.modification.restoreInteractionCoords(arg);
    },
    'interactions:after-action-move': function interactionsAfterActionMove(arg) {
      return arg.interaction.modification.restoreInteractionCoords(arg);
    },
    'interactions:stop': function interactionsStop(arg) {
      return arg.interaction.modification.stop(arg);
    }
  },
  before: ['actions', 'action/drag', 'actions/resize', 'actions/gesture']
};
var ___default_38 = modifiersBase;
_$base_38["default"] = ___default_38;

var _$index_51 = {};
"use strict";

function ___typeof_51(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_51 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_51 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_51(obj); }

Object.defineProperty(_$index_51, "__esModule", {
  value: true
});
_$index_51.addTotal = addTotal;
_$index_51.applyPending = applyPending;
_$index_51["default"] = void 0;

/* removed: var _$Interaction_22 = require("@interactjs/core/Interaction"); */;

var __rectUtils_51 = ___interopRequireWildcard_51(_$rect_82);

function ___getRequireWildcardCache_51() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_51 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_51(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_51(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_51(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

_$Interaction_22._ProxyMethods.offsetBy = '';

function addTotal(interaction) {
  if (!interaction.pointerIsDown) {
    return;
  }

  addToCoords(interaction.coords.cur, interaction.offset.total);
  interaction.offset.pending.x = 0;
  interaction.offset.pending.y = 0;
}

function beforeAction(_ref) {
  var interaction = _ref.interaction;
  applyPending(interaction);
}

function beforeEnd(_ref2) {
  var interaction = _ref2.interaction;
  var hadPending = applyPending(interaction);

  if (!hadPending) {
    return;
  }

  interaction.move({
    offset: true
  });
  interaction.end();
  return false;
}

function __end_51(_ref3) {
  var interaction = _ref3.interaction;
  interaction.offset.total.x = 0;
  interaction.offset.total.y = 0;
  interaction.offset.pending.x = 0;
  interaction.offset.pending.y = 0;
}

function applyPending(interaction) {
  if (!hasPending(interaction)) {
    return false;
  }

  var pending = interaction.offset.pending;
  addToCoords(interaction.coords.cur, pending);
  addToCoords(interaction.coords.delta, pending);
  __rectUtils_51.addEdges(interaction.edges, interaction.rect, pending);
  pending.x = 0;
  pending.y = 0;
  return true;
}

function offsetBy(_ref4) {
  var x = _ref4.x,
      y = _ref4.y;
  this.offset.pending.x += x;
  this.offset.pending.y += y;
  this.offset.total.x += x;
  this.offset.total.y += y;
}

function addToCoords(_ref5, _ref6) {
  var page = _ref5.page,
      client = _ref5.client;
  var x = _ref6.x,
      y = _ref6.y;
  page.x += x;
  page.y += y;
  client.x += x;
  client.y += y;
}

function hasPending(interaction) {
  return !!(interaction.offset.pending.x || interaction.offset.pending.y);
}

var offset = {
  id: 'offset',
  install: function install(scope) {
    scope.Interaction.prototype.offsetBy = offsetBy;
  },
  listeners: {
    'interactions:new': function interactionsNew(_ref7) {
      var interaction = _ref7.interaction;
      interaction.offset = {
        total: {
          x: 0,
          y: 0
        },
        pending: {
          x: 0,
          y: 0
        }
      };
    },
    'interactions:update-pointer': function interactionsUpdatePointer(_ref8) {
      var interaction = _ref8.interaction;
      return addTotal(interaction);
    },
    'interactions:before-action-start': beforeAction,
    'interactions:before-action-move': beforeAction,
    'interactions:before-action-end': beforeEnd,
    'interactions:stop': __end_51
  }
};
var ___default_51 = offset;
_$index_51["default"] = ___default_51;

var _$index_31 = {};
"use strict";

function ___typeof_31(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_31 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_31 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_31(obj); }

Object.defineProperty(_$index_31, "__esModule", {
  value: true
});
_$index_31["default"] = _$index_31.InertiaState = void 0;

var ___Modification_31 = ___interopRequireDefault_31(_$Modification_34);

var modifiers = ___interopRequireWildcard_31(_$base_38);

var ___index_31 = ___interopRequireDefault_31(_$index_51);

var __dom_31 = ___interopRequireWildcard_31(_$domUtils_69);

var ___hypot_31 = ___interopRequireDefault_31(_$hypot_74);

var __is_31 = ___interopRequireWildcard_31(_$is_76);

/* removed: var _$pointerUtils_80 = require("@interactjs/utils/pointerUtils"); */;

var ___raf_31 = ___interopRequireDefault_31(_$raf_81);

function ___getRequireWildcardCache_31() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_31 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_31(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_31(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_31(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_31(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___classCallCheck_31(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_31(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_31(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_31(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_31(Constructor, staticProps); return Constructor; }

function ___defineProperty_31(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function __install_31(scope) {
  var defaults = scope.defaults;
  scope.usePlugin(___index_31["default"]);
  scope.usePlugin(modifiers["default"]);
  scope.actions.phases.inertiastart = true;
  scope.actions.phases.resume = true;
  defaults.perAction.inertia = {
    enabled: false,
    resistance: 10,
    // the lambda in exponential decay
    minSpeed: 100,
    // target speed must be above this for inertia to start
    endSpeed: 10,
    // the speed at which inertia is slow enough to stop
    allowResume: true,
    // allow resuming an action in inertia phase
    smoothEndDuration: 300 // animate to snap/restrict endOnly if there's no inertia

  };
}

var InertiaState = /*#__PURE__*/function () {
  // eslint-disable-line camelcase
  // eslint-disable-line camelcase
  function InertiaState(interaction) {
    ___classCallCheck_31(this, InertiaState);

    this.interaction = interaction;

    ___defineProperty_31(this, "active", false);

    ___defineProperty_31(this, "isModified", false);

    ___defineProperty_31(this, "smoothEnd", false);

    ___defineProperty_31(this, "allowResume", false);

    ___defineProperty_31(this, "modification", null);

    ___defineProperty_31(this, "modifierCount", 0);

    ___defineProperty_31(this, "modifierArg", null);

    ___defineProperty_31(this, "startCoords", null);

    ___defineProperty_31(this, "t0", 0);

    ___defineProperty_31(this, "v0", 0);

    ___defineProperty_31(this, "te", 0);

    ___defineProperty_31(this, "targetOffset", null);

    ___defineProperty_31(this, "modifiedOffset", null);

    ___defineProperty_31(this, "currentOffset", null);

    ___defineProperty_31(this, "lambda_v0", 0);

    ___defineProperty_31(this, "one_ve_v0", 0);

    ___defineProperty_31(this, "timeout", null);
  }

  ___createClass_31(InertiaState, [{
    key: "start",
    value: function start(event) {
      var interaction = this.interaction;
      var options = __getOptions_31(interaction);

      if (!options || !options.enabled) {
        return false;
      }

      var velocityClient = interaction.coords.velocity.client;
      var pointerSpeed = (0, ___hypot_31["default"])(velocityClient.x, velocityClient.y);
      var modification = this.modification || (this.modification = new ___Modification_31["default"](interaction));
      modification.copyFrom(interaction.modification);
      this.t0 = interaction._now();
      this.allowResume = options.allowResume;
      this.v0 = pointerSpeed;
      this.currentOffset = {
        x: 0,
        y: 0
      };
      this.startCoords = interaction.coords.cur.page;
      this.modifierArg = {
        interaction: interaction,
        interactable: interaction.interactable,
        element: interaction.element,
        rect: interaction.rect,
        edges: interaction.edges,
        pageCoords: this.startCoords,
        preEnd: true,
        phase: 'inertiastart'
      };
      var thrown = this.t0 - interaction.coords.cur.timeStamp < 50 && pointerSpeed > options.minSpeed && pointerSpeed > options.endSpeed;

      if (thrown) {
        this.startInertia();
      } else {
        modification.result = modification.setAll(this.modifierArg);

        if (!modification.result.changed) {
          return false;
        }

        this.startSmoothEnd();
      } // force modification change


      interaction.modification.result.rect = null; // bring inertiastart event to the target coords

      interaction.offsetBy(this.targetOffset);

      interaction._doPhase({
        interaction: interaction,
        event: event,
        phase: 'inertiastart'
      });

      interaction.offsetBy({
        x: -this.targetOffset.x,
        y: -this.targetOffset.y
      }); // force modification change

      interaction.modification.result.rect = null;
      this.active = true;
      interaction.simulation = this;
      return true;
    }
  }, {
    key: "startInertia",
    value: function startInertia() {
      var _this = this;

      var startVelocity = this.interaction.coords.velocity.client;
      var options = __getOptions_31(this.interaction);
      var lambda = options.resistance;
      var inertiaDur = -Math.log(options.endSpeed / this.v0) / lambda;
      this.targetOffset = {
        x: (startVelocity.x - inertiaDur) / lambda,
        y: (startVelocity.y - inertiaDur) / lambda
      };
      this.te = inertiaDur;
      this.lambda_v0 = lambda / this.v0;
      this.one_ve_v0 = 1 - options.endSpeed / this.v0;
      var modification = this.modification,
          modifierArg = this.modifierArg;
      modifierArg.pageCoords = {
        x: this.startCoords.x + this.targetOffset.x,
        y: this.startCoords.y + this.targetOffset.y
      };
      modification.result = modification.setAll(modifierArg);

      if (modification.result.changed) {
        this.isModified = true;
        this.modifiedOffset = {
          x: this.targetOffset.x + modification.result.delta.x,
          y: this.targetOffset.y + modification.result.delta.y
        };
      }

      this.timeout = ___raf_31["default"].request(function () {
        return _this.inertiaTick();
      });
    }
  }, {
    key: "startSmoothEnd",
    value: function startSmoothEnd() {
      var _this2 = this;

      this.smoothEnd = true;
      this.isModified = true;
      this.targetOffset = {
        x: this.modification.result.delta.x,
        y: this.modification.result.delta.y
      };
      this.timeout = ___raf_31["default"].request(function () {
        return _this2.smoothEndTick();
      });
    }
  }, {
    key: "inertiaTick",
    value: function inertiaTick() {
      var _this3 = this;

      var interaction = this.interaction;
      var options = __getOptions_31(interaction);
      var lambda = options.resistance;
      var t = (interaction._now() - this.t0) / 1000;

      if (t < this.te) {
        var progress = 1 - (Math.exp(-lambda * t) - this.lambda_v0) / this.one_ve_v0;
        var newOffset;

        if (this.isModified) {
          newOffset = getQuadraticCurvePoint(0, 0, this.targetOffset.x, this.targetOffset.y, this.modifiedOffset.x, this.modifiedOffset.y, progress);
        } else {
          newOffset = {
            x: this.targetOffset.x * progress,
            y: this.targetOffset.y * progress
          };
        }

        var delta = {
          x: newOffset.x - this.currentOffset.x,
          y: newOffset.y - this.currentOffset.y
        };
        this.currentOffset.x += delta.x;
        this.currentOffset.y += delta.y;
        interaction.offsetBy(delta);
        interaction.move();
        this.timeout = ___raf_31["default"].request(function () {
          return _this3.inertiaTick();
        });
      } else {
        interaction.offsetBy({
          x: this.modifiedOffset.x - this.currentOffset.x,
          y: this.modifiedOffset.y - this.currentOffset.y
        });
        this.end();
      }
    }
  }, {
    key: "smoothEndTick",
    value: function smoothEndTick() {
      var _this4 = this;

      var interaction = this.interaction;
      var t = interaction._now() - this.t0;

      var _getOptions = __getOptions_31(interaction),
          duration = _getOptions.smoothEndDuration;

      if (t < duration) {
        var newOffset = {
          x: easeOutQuad(t, 0, this.targetOffset.x, duration),
          y: easeOutQuad(t, 0, this.targetOffset.y, duration)
        };
        var delta = {
          x: newOffset.x - this.currentOffset.x,
          y: newOffset.y - this.currentOffset.y
        };
        this.currentOffset.x += delta.x;
        this.currentOffset.y += delta.y;
        interaction.offsetBy(delta);
        interaction.move({
          skipModifiers: this.modifierCount
        });
        this.timeout = ___raf_31["default"].request(function () {
          return _this4.smoothEndTick();
        });
      } else {
        interaction.offsetBy({
          x: this.targetOffset.x - this.currentOffset.x,
          y: this.targetOffset.y - this.currentOffset.y
        });
        this.end();
      }
    }
  }, {
    key: "resume",
    value: function resume(_ref) {
      var pointer = _ref.pointer,
          event = _ref.event,
          eventTarget = _ref.eventTarget;
      var interaction = this.interaction; // undo inertia changes to interaction coords

      interaction.offsetBy({
        x: -this.currentOffset.x,
        y: -this.currentOffset.y
      }); // update pointer at pointer down position

      interaction.updatePointer(pointer, event, eventTarget, true); // fire resume signals and event

      interaction._doPhase({
        interaction: interaction,
        event: event,
        phase: 'resume'
      });

      (0, _$pointerUtils_80.copyCoords)(interaction.coords.prev, interaction.coords.cur);
      this.stop();
    }
  }, {
    key: "end",
    value: function end() {
      this.interaction.move();
      this.interaction.end();
      this.stop();
    }
  }, {
    key: "stop",
    value: function stop() {
      this.active = this.smoothEnd = false;
      this.interaction.simulation = null;

      ___raf_31["default"].cancel(this.timeout);
    }
  }]);

  return InertiaState;
}();

_$index_31.InertiaState = InertiaState;

function __start_31(_ref2) {
  var interaction = _ref2.interaction,
      event = _ref2.event;

  if (!interaction._interacting || interaction.simulation) {
    return null;
  }

  var started = interaction.inertia.start(event); // prevent action end if inertia or smoothEnd

  return started ? false : null;
} // Check if the down event hits the current inertia target
// control should be return to the user


function resume(arg) {
  var interaction = arg.interaction,
      eventTarget = arg.eventTarget;
  var state = interaction.inertia;

  if (!state.active) {
    return;
  }

  var element = eventTarget; // climb up the DOM tree from the event target

  while (__is_31.element(element)) {
    // if interaction element is the current inertia target element
    if (element === interaction.element) {
      state.resume(arg);
      break;
    }

    element = __dom_31.parentNode(element);
  }
}

function stop(_ref3) {
  var interaction = _ref3.interaction;
  var state = interaction.inertia;

  if (state.active) {
    state.stop();
  }
}

function __getOptions_31(_ref4) {
  var interactable = _ref4.interactable,
      prepared = _ref4.prepared;
  return interactable && interactable.options && prepared.name && interactable.options[prepared.name].inertia;
}

var inertia = {
  id: 'inertia',
  before: ['modifiers/base'],
  install: __install_31,
  listeners: {
    'interactions:new': function interactionsNew(_ref5) {
      var interaction = _ref5.interaction;
      interaction.inertia = new InertiaState(interaction);
    },
    'interactions:before-action-end': __start_31,
    'interactions:down': resume,
    'interactions:stop': stop,
    'interactions:before-action-resume': function interactionsBeforeActionResume(arg) {
      var modification = arg.interaction.modification;
      modification.stop(arg);
      modification.start(arg, arg.interaction.coords.cur.page);
      modification.applyToInteraction(arg);
    },
    'interactions:before-action-inertiastart': function interactionsBeforeActionInertiastart(arg) {
      return arg.interaction.modification.setAndApply(arg);
    },
    'interactions:action-resume': modifiers.addEventModifiers,
    'interactions:action-inertiastart': modifiers.addEventModifiers,
    'interactions:after-action-inertiastart': function interactionsAfterActionInertiastart(arg) {
      return arg.interaction.modification.restoreInteractionCoords(arg);
    },
    'interactions:after-action-resume': function interactionsAfterActionResume(arg) {
      return arg.interaction.modification.restoreInteractionCoords(arg);
    }
  }
}; // http://stackoverflow.com/a/5634528/2280888

function _getQBezierValue(t, p1, p2, p3) {
  var iT = 1 - t;
  return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3;
}

function getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, position) {
  return {
    x: _getQBezierValue(position, startX, cpX, endX),
    y: _getQBezierValue(position, startY, cpY, endY)
  };
} // http://gizma.com/easing/


function easeOutQuad(t, b, c, d) {
  t /= d;
  return -c * t * (t - 2) + b;
}

var ___default_31 = inertia;
_$index_31["default"] = ___default_31;

var _$index_32 = {};
"use strict";

Object.defineProperty(_$index_32, "__esModule", {
  value: true
});
_$index_32.init = _$index_32["default"] = void 0;

_$index_63;

var ___scope_32 = ___interopRequireDefault_32(_$scope_28({}));

function ___interopRequireDefault_32(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___typeof_32(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_32 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_32 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_32(obj); }

var scope = new ___scope_32["default"]();
var interact = scope.interactStatic;
var ___default_32 = interact;
_$index_32["default"] = ___default_32;

var __init_32 = function init(win) {
  return scope.init(win);
};

_$index_32.init = __init_32;

if ((typeof window === "undefined" ? "undefined" : ___typeof_32(window)) === 'object' && !!window) {
  __init_32(window);
}

var _$edgeTarget_59 = {};
"use strict";

Object.defineProperty(_$edgeTarget_59, "__esModule", {
  value: true
});
_$edgeTarget_59["default"] = void 0;
var ___default_59 = {};
_$edgeTarget_59["default"] = ___default_59;

var _$elements_60 = {};
"use strict";

Object.defineProperty(_$elements_60, "__esModule", {
  value: true
});
_$elements_60["default"] = void 0;
var ___default_60 = {};
_$elements_60["default"] = ___default_60;

var _$grid_61 = {};
"use strict";

Object.defineProperty(_$grid_61, "__esModule", {
  value: true
});
_$grid_61["default"] = void 0;

function ___slicedToArray_61(arr, i) { return ___arrayWithHoles_61(arr) || ___iterableToArrayLimit_61(arr, i) || ___nonIterableRest_61(); }

function ___nonIterableRest_61() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function ___iterableToArrayLimit_61(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function ___arrayWithHoles_61(arr) { if (Array.isArray(arr)) return arr; }

var ___default_61 = function _default(grid) {
  var coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(function (_ref) {
    var _ref2 = ___slicedToArray_61(_ref, 2),
        xField = _ref2[0],
        yField = _ref2[1];

    return xField in grid || yField in grid;
  });

  var gridFunc = function gridFunc(x, y) {
    var range = grid.range,
        _grid$limits = grid.limits,
        limits = _grid$limits === void 0 ? {
      left: -Infinity,
      right: Infinity,
      top: -Infinity,
      bottom: Infinity
    } : _grid$limits,
        _grid$offset = grid.offset,
        offset = _grid$offset === void 0 ? {
      x: 0,
      y: 0
    } : _grid$offset;
    var result = {
      range: range,
      grid: grid,
      x: null,
      y: null
    };

    for (var _i2 = 0; _i2 < coordFields.length; _i2++) {
      var _ref3;

      _ref3 = coordFields[_i2];

      var _ref4 = _ref3,
          _ref5 = ___slicedToArray_61(_ref4, 2),
          xField = _ref5[0],
          yField = _ref5[1];

      var gridx = Math.round((x - offset.x) / grid[xField]);
      var gridy = Math.round((y - offset.y) / grid[yField]);
      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));
      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));
    }

    return result;
  };

  gridFunc.grid = grid;
  gridFunc.coordFields = coordFields;
  return gridFunc;
};

_$grid_61["default"] = ___default_61;

var _$all_58 = {};
"use strict";

Object.defineProperty(_$all_58, "__esModule", {
  value: true
});
Object.defineProperty(_$all_58, "edgeTarget", {
  enumerable: true,
  get: function get() {
    return _edgeTarget["default"];
  }
});
Object.defineProperty(_$all_58, "elements", {
  enumerable: true,
  get: function get() {
    return _elements["default"];
  }
});
Object.defineProperty(_$all_58, "grid", {
  enumerable: true,
  get: function get() {
    return _grid["default"];
  }
});

var _edgeTarget = ___interopRequireDefault_58(_$edgeTarget_59);

var _elements = ___interopRequireDefault_58(_$elements_60);

var _grid = ___interopRequireDefault_58(_$grid_61);

function ___interopRequireDefault_58(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _$index_62 = {};
"use strict";

function ___typeof_62(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_62 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_62 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_62(obj); }

Object.defineProperty(_$index_62, "__esModule", {
  value: true
});
_$index_62["default"] = void 0;

var ___extend_62 = ___interopRequireDefault_62(_$extend_72);

var allSnappers = ___interopRequireWildcard_62(_$all_58);

function ___getRequireWildcardCache_62() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_62 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_62(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_62(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_62(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_62(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var snappersPlugin = {
  id: 'snappers',
  install: function install(scope) {
    var interact = scope.interactStatic;
    interact.snappers = (0, ___extend_62["default"])(interact.snappers || {}, allSnappers);
    interact.createSnapGrid = interact.snappers.grid;
  }
};
var ___default_62 = snappersPlugin;
_$index_62["default"] = ___default_62;

var _$aspectRatio_36 = {};
"use strict";

Object.defineProperty(_$aspectRatio_36, "__esModule", {
  value: true
});
_$aspectRatio_36.aspectRatio = _$aspectRatio_36["default"] = void 0;

var ___extend_36 = ___interopRequireDefault_36(_$extend_72);

/* removed: var _$rect_82 = require("@interactjs/utils/rect"); */;

var ___Modification_36 = ___interopRequireDefault_36(_$Modification_34);

/* removed: var _$base_38 = require("./base"); */;

function ___interopRequireDefault_36(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { ___defineProperty_36(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function ___defineProperty_36(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var aspectRatio = {
  start: function start(arg) {
    var state = arg.state,
        rect = arg.rect,
        originalEdges = arg.edges,
        coords = arg.pageCoords;
    var ratio = state.options.ratio;
    var _state$options = state.options,
        equalDelta = _state$options.equalDelta,
        modifiers = _state$options.modifiers;

    if (ratio === 'preserve') {
      ratio = rect.width / rect.height;
    }

    state.startCoords = (0, ___extend_36["default"])({}, coords);
    state.startRect = (0, ___extend_36["default"])({}, rect);
    state.ratio = ratio;
    state.equalDelta = equalDelta;
    var linkedEdges = state.linkedEdges = {
      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,
      left: originalEdges.left || originalEdges.top && !originalEdges.right,
      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,
      right: originalEdges.right || originalEdges.bottom && !originalEdges.left
    };
    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);

    if (state.equalDelta) {
      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);
    } else {
      var negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;
      state.edgeSign = negativeSecondaryEdge ? -1 : 1;
    }

    (0, ___extend_36["default"])(arg.edges, linkedEdges);

    if (!modifiers || !modifiers.length) {
      return;
    }

    var subModification = new ___Modification_36["default"](arg.interaction);
    subModification.copyFrom(arg.interaction.modification);
    subModification.prepareStates(modifiers);
    state.subModification = subModification;
    subModification.startAll(_objectSpread({}, arg));
  },
  set: function set(arg) {
    var state = arg.state,
        rect = arg.rect,
        coords = arg.coords;
    var initialCoords = (0, ___extend_36["default"])({}, coords);
    var aspectMethod = state.equalDelta ? setEqualDelta : setRatio;
    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);

    if (!state.subModification) {
      return null;
    }

    var correctedRect = (0, ___extend_36["default"])({}, rect);
    (0, _$rect_82.addEdges)(state.linkedEdges, correctedRect, {
      x: coords.x - initialCoords.x,
      y: coords.y - initialCoords.y
    });
    var result = state.subModification.setAll(_objectSpread({}, arg, {
      rect: correctedRect,
      edges: state.linkedEdges,
      pageCoords: coords,
      prevCoords: coords,
      prevRect: correctedRect
    }));
    var delta = result.delta;

    if (result.changed) {
      var xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary

      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);
      (0, ___extend_36["default"])(coords, result.coords);
    }

    return result.eventProps;
  },
  defaults: {
    ratio: 'preserve',
    equalDelta: false,
    modifiers: [],
    enabled: false
  }
};
_$aspectRatio_36.aspectRatio = aspectRatio;

function setEqualDelta(_ref, xIsPrimaryAxis, coords) {
  var startCoords = _ref.startCoords,
      edgeSign = _ref.edgeSign;

  if (xIsPrimaryAxis) {
    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;
  } else {
    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;
  }
}

function setRatio(_ref2, xIsPrimaryAxis, coords, rect) {
  var startRect = _ref2.startRect,
      startCoords = _ref2.startCoords,
      ratio = _ref2.ratio,
      edgeSign = _ref2.edgeSign;

  if (xIsPrimaryAxis) {
    var newHeight = rect.width / ratio;
    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;
  } else {
    var newWidth = rect.height * ratio;
    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;
  }
}

var ___default_36 = (0, _$base_38.makeModifier)(aspectRatio, 'aspectRatio');

_$aspectRatio_36["default"] = ___default_36;

var _$avoid_37 = {};
"use strict";

Object.defineProperty(_$avoid_37, "__esModule", {
  value: true
});
_$avoid_37["default"] = void 0;

var avoid = function avoid() {};

avoid._defaults = {};
var ___default_37 = avoid;
_$avoid_37["default"] = ___default_37;

var _$pointer_41 = {};
"use strict";

function ___typeof_41(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_41 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_41 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_41(obj); }

Object.defineProperty(_$pointer_41, "__esModule", {
  value: true
});
_$pointer_41.getRestrictionRect = getRestrictionRect;
_$pointer_41.restrict = _$pointer_41["default"] = void 0;

var ___extend_41 = ___interopRequireDefault_41(_$extend_72);

var __is_41 = ___interopRequireWildcard_41(_$is_76);

var __rectUtils_41 = ___interopRequireWildcard_41(_$rect_82);

/* removed: var _$base_38 = require("../base"); */;

function ___getRequireWildcardCache_41() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_41 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_41(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_41(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_41(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_41(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __start_41(_ref) {
  var rect = _ref.rect,
      startOffset = _ref.startOffset,
      state = _ref.state,
      interaction = _ref.interaction,
      pageCoords = _ref.pageCoords;
  var options = state.options;
  var elementRect = options.elementRect;
  var offset = (0, ___extend_41["default"])({
    left: 0,
    top: 0,
    right: 0,
    bottom: 0
  }, options.offset || {});

  if (rect && elementRect) {
    var restriction = getRestrictionRect(options.restriction, interaction, pageCoords);

    if (restriction) {
      var widthDiff = restriction.right - restriction.left - rect.width;
      var heightDiff = restriction.bottom - restriction.top - rect.height;

      if (widthDiff < 0) {
        offset.left += widthDiff;
        offset.right += widthDiff;
      }

      if (heightDiff < 0) {
        offset.top += heightDiff;
        offset.bottom += heightDiff;
      }
    }

    offset.left += startOffset.left - rect.width * elementRect.left;
    offset.top += startOffset.top - rect.height * elementRect.top;
    offset.right += startOffset.right - rect.width * (1 - elementRect.right);
    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);
  }

  state.offset = offset;
}

function set(_ref2) {
  var coords = _ref2.coords,
      interaction = _ref2.interaction,
      state = _ref2.state;
  var options = state.options,
      offset = state.offset;
  var restriction = getRestrictionRect(options.restriction, interaction, coords);

  if (!restriction) {
    return;
  }

  var rect = __rectUtils_41.xywhToTlbr(restriction);
  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);
  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);
}

function getRestrictionRect(value, interaction, coords) {
  if (__is_41.func(value)) {
    return __rectUtils_41.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);
  } else {
    return __rectUtils_41.resolveRectLike(value, interaction.interactable, interaction.element);
  }
}

var __defaults_41 = {
  restriction: null,
  elementRect: null,
  offset: null,
  endOnly: false,
  enabled: false
};
var restrict = {
  start: __start_41,
  set: set,
  defaults: __defaults_41
};
_$pointer_41.restrict = restrict;

var ___default_41 = (0, _$base_38.makeModifier)(restrict, 'restrict');

_$pointer_41["default"] = ___default_41;

var _$edges_40 = {};
"use strict";

function ___typeof_40(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_40 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_40 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_40(obj); }

Object.defineProperty(_$edges_40, "__esModule", {
  value: true
});
_$edges_40.restrictEdges = _$edges_40["default"] = void 0;

var ___extend_40 = ___interopRequireDefault_40(_$extend_72);

var __rectUtils_40 = ___interopRequireWildcard_40(_$rect_82);

/* removed: var _$base_38 = require("../base"); */;

/* removed: var _$pointer_41 = require("./pointer"); */;

function ___getRequireWildcardCache_40() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_40 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_40(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_40(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_40(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_40(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

// This module adds the options.resize.restrictEdges setting which sets min and
// max for the top, left, bottom and right edges of the target being resized.
//
// interact(target).resize({
//   edges: { top: true, left: true },
//   restrictEdges: {
//     inner: { top: 200, left: 200, right: 400, bottom: 400 },
//     outer: { top:   0, left:   0, right: 600, bottom: 600 },
//   },
// })
var noInner = {
  top: +Infinity,
  left: +Infinity,
  bottom: -Infinity,
  right: -Infinity
};
var noOuter = {
  top: -Infinity,
  left: -Infinity,
  bottom: +Infinity,
  right: +Infinity
};

function __start_40(_ref) {
  var interaction = _ref.interaction,
      startOffset = _ref.startOffset,
      state = _ref.state;
  var options = state.options;
  var offset;

  if (options) {
    var offsetRect = (0, _$pointer_41.getRestrictionRect)(options.offset, interaction, interaction.coords.start.page);
    offset = __rectUtils_40.rectToXY(offsetRect);
  }

  offset = offset || {
    x: 0,
    y: 0
  };
  state.offset = {
    top: offset.y + startOffset.top,
    left: offset.x + startOffset.left,
    bottom: offset.y - startOffset.bottom,
    right: offset.x - startOffset.right
  };
}

function __set_40(_ref2) {
  var coords = _ref2.coords,
      edges = _ref2.edges,
      interaction = _ref2.interaction,
      state = _ref2.state;
  var offset = state.offset,
      options = state.options;

  if (!edges) {
    return;
  }

  var page = (0, ___extend_40["default"])({}, coords);
  var inner = (0, _$pointer_41.getRestrictionRect)(options.inner, interaction, page) || {};
  var outer = (0, _$pointer_41.getRestrictionRect)(options.outer, interaction, page) || {};
  fixRect(inner, noInner);
  fixRect(outer, noOuter);

  if (edges.top) {
    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);
  } else if (edges.bottom) {
    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);
  }

  if (edges.left) {
    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);
  } else if (edges.right) {
    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);
  }
}

function fixRect(rect, defaults) {
  var _arr = ['top', 'left', 'bottom', 'right'];

  for (var _i = 0; _i < _arr.length; _i++) {
    var edge = _arr[_i];

    if (!(edge in rect)) {
      rect[edge] = defaults[edge];
    }
  }

  return rect;
}

var __defaults_40 = {
  inner: null,
  outer: null,
  offset: null,
  endOnly: false,
  enabled: false
};
var restrictEdges = {
  noInner: noInner,
  noOuter: noOuter,
  start: __start_40,
  set: __set_40,
  defaults: __defaults_40
};
_$edges_40.restrictEdges = restrictEdges;

var ___default_40 = (0, _$base_38.makeModifier)(restrictEdges, 'restrictEdges');

_$edges_40["default"] = ___default_40;

var _$rect_42 = {};
"use strict";

Object.defineProperty(_$rect_42, "__esModule", {
  value: true
});
_$rect_42.restrictRect = _$rect_42["default"] = void 0;

var ___extend_42 = ___interopRequireDefault_42(_$extend_72);

/* removed: var _$base_38 = require("../base"); */;

/* removed: var _$pointer_41 = require("./pointer"); */;

function ___interopRequireDefault_42(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var __defaults_42 = (0, ___extend_42["default"])({
  get elementRect() {
    return {
      top: 0,
      left: 0,
      bottom: 1,
      right: 1
    };
  },

  set elementRect(_) {}

}, _$pointer_41.restrict.defaults);
var restrictRect = {
  start: _$pointer_41.restrict.start,
  set: _$pointer_41.restrict.set,
  defaults: __defaults_42
};
_$rect_42.restrictRect = restrictRect;

var ___default_42 = (0, _$base_38.makeModifier)(restrictRect, 'restrictRect');

_$rect_42["default"] = ___default_42;

var _$size_43 = {};
"use strict";

function ___typeof_43(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_43 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_43 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_43(obj); }

Object.defineProperty(_$size_43, "__esModule", {
  value: true
});
_$size_43.restrictSize = _$size_43["default"] = void 0;

var ___extend_43 = ___interopRequireDefault_43(_$extend_72);

var __rectUtils_43 = ___interopRequireWildcard_43(_$rect_82);

/* removed: var _$base_38 = require("../base"); */;

/* removed: var _$edges_40 = require("./edges"); */;

/* removed: var _$pointer_41 = require("./pointer"); */;

function ___getRequireWildcardCache_43() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_43 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_43(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_43(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_43(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_43(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var noMin = {
  width: -Infinity,
  height: -Infinity
};
var noMax = {
  width: +Infinity,
  height: +Infinity
};

function __start_43(arg) {
  return _$edges_40.restrictEdges.start(arg);
}

function __set_43(arg) {
  var interaction = arg.interaction,
      state = arg.state,
      rect = arg.rect,
      edges = arg.edges;
  var options = state.options;

  if (!edges) {
    return;
  }

  var minSize = __rectUtils_43.tlbrToXywh((0, _$pointer_41.getRestrictionRect)(options.min, interaction, arg.coords)) || noMin;
  var maxSize = __rectUtils_43.tlbrToXywh((0, _$pointer_41.getRestrictionRect)(options.max, interaction, arg.coords)) || noMax;
  state.options = {
    endOnly: options.endOnly,
    inner: (0, ___extend_43["default"])({}, _$edges_40.restrictEdges.noInner),
    outer: (0, ___extend_43["default"])({}, _$edges_40.restrictEdges.noOuter)
  };

  if (edges.top) {
    state.options.inner.top = rect.bottom - minSize.height;
    state.options.outer.top = rect.bottom - maxSize.height;
  } else if (edges.bottom) {
    state.options.inner.bottom = rect.top + minSize.height;
    state.options.outer.bottom = rect.top + maxSize.height;
  }

  if (edges.left) {
    state.options.inner.left = rect.right - minSize.width;
    state.options.outer.left = rect.right - maxSize.width;
  } else if (edges.right) {
    state.options.inner.right = rect.left + minSize.width;
    state.options.outer.right = rect.left + maxSize.width;
  }

  _$edges_40.restrictEdges.set(arg);

  state.options = options;
}

var __defaults_43 = {
  min: null,
  max: null,
  endOnly: false,
  enabled: false
};
var restrictSize = {
  start: __start_43,
  set: __set_43,
  defaults: __defaults_43
};
_$size_43.restrictSize = restrictSize;

var ___default_43 = (0, _$base_38.makeModifier)(restrictSize, 'restrictSize');

_$size_43["default"] = ___default_43;

var _$rubberband_44 = {};
"use strict";

Object.defineProperty(_$rubberband_44, "__esModule", {
  value: true
});
_$rubberband_44["default"] = void 0;

var rubberband = function rubberband() {};

rubberband._defaults = {};
var ___default_44 = rubberband;
_$rubberband_44["default"] = ___default_44;

var _$pointer_46 = {};
"use strict";

function ___typeof_46(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_46 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_46 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_46(obj); }

Object.defineProperty(_$pointer_46, "__esModule", {
  value: true
});
_$pointer_46.snap = _$pointer_46["default"] = void 0;

var __utils_46 = ___interopRequireWildcard_46(_$index_75);

/* removed: var _$base_38 = require("../base"); */;

function ___getRequireWildcardCache_46() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_46 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_46(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_46(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_46(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function __start_46(arg) {
  var interaction = arg.interaction,
      interactable = arg.interactable,
      element = arg.element,
      rect = arg.rect,
      state = arg.state,
      startOffset = arg.startOffset;
  var options = state.options;
  var origin = options.offsetWithOrigin ? getOrigin(arg) : {
    x: 0,
    y: 0
  };
  var snapOffset;

  if (options.offset === 'startCoords') {
    snapOffset = {
      x: interaction.coords.start.page.x,
      y: interaction.coords.start.page.y
    };
  } else {
    var offsetRect = __utils_46.rect.resolveRectLike(options.offset, interactable, element, [interaction]);
    snapOffset = __utils_46.rect.rectToXY(offsetRect) || {
      x: 0,
      y: 0
    };
    snapOffset.x += origin.x;
    snapOffset.y += origin.y;
  }

  var relativePoints = options.relativePoints;
  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map(function (relativePoint, index) {
    return {
      index: index,
      relativePoint: relativePoint,
      x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,
      y: startOffset.top - rect.height * relativePoint.y + snapOffset.y
    };
  }) : [__utils_46.extend({
    index: 0,
    relativePoint: null
  }, snapOffset)];
}

function __set_46(arg) {
  var interaction = arg.interaction,
      coords = arg.coords,
      state = arg.state;
  var options = state.options,
      offsets = state.offsets;
  var origin = __utils_46.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);
  var page = __utils_46.extend({}, coords);
  var targets = [];

  if (!options.offsetWithOrigin) {
    page.x -= origin.x;
    page.y -= origin.y;
  }

  for (var _i = 0; _i < offsets.length; _i++) {
    var _ref;

    _ref = offsets[_i];
    var _offset = _ref;
    var relativeX = page.x - _offset.x;
    var relativeY = page.y - _offset.y;

    for (var _index = 0, len = options.targets.length; _index < len; _index++) {
      var snapTarget = options.targets[_index];
      var target = void 0;

      if (__utils_46.is.func(snapTarget)) {
        target = snapTarget(relativeX, relativeY, interaction, _offset, _index);
      } else {
        target = snapTarget;
      }

      if (!target) {
        continue;
      }

      targets.push({
        x: (__utils_46.is.number(target.x) ? target.x : relativeX) + _offset.x,
        y: (__utils_46.is.number(target.y) ? target.y : relativeY) + _offset.y,
        range: __utils_46.is.number(target.range) ? target.range : options.range,
        source: snapTarget,
        index: _index,
        offset: _offset
      });
    }
  }

  var closest = {
    target: null,
    inRange: false,
    distance: 0,
    range: 0,
    delta: {
      x: 0,
      y: 0
    }
  };

  for (var _i2 = 0; _i2 < targets.length; _i2++) {
    var _target = targets[_i2];
    var range = _target.range;
    var dx = _target.x - page.x;
    var dy = _target.y - page.y;
    var distance = __utils_46.hypot(dx, dy);
    var inRange = distance <= range; // Infinite targets count as being out of range
    // compared to non infinite ones that are in range

    if (range === Infinity && closest.inRange && closest.range !== Infinity) {
      inRange = false;
    }

    if (!closest.target || (inRange // is the closest target in range?
    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target
    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't
    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest
    distance < closest.distance : // The other is not in range and the pointer is closer to this target
    !closest.inRange && distance < closest.distance)) {
      closest.target = _target;
      closest.distance = distance;
      closest.range = range;
      closest.inRange = inRange;
      closest.delta.x = dx;
      closest.delta.y = dy;
    }
  }

  if (closest.inRange) {
    coords.x = closest.target.x;
    coords.y = closest.target.y;
  }

  state.closest = closest;
  return closest;
}

function getOrigin(arg) {
  var element = arg.interaction.element;
  var optionsOrigin = __utils_46.rect.rectToXY(__utils_46.rect.resolveRectLike(arg.state.options.origin, null, null, [element]));
  var origin = optionsOrigin || __utils_46.getOriginXY(arg.interactable, element, arg.interaction.prepared.name);
  return origin;
}

var __defaults_46 = {
  range: Infinity,
  targets: null,
  offset: null,
  offsetWithOrigin: true,
  origin: null,
  relativePoints: null,
  endOnly: false,
  enabled: false
};
var snap = {
  start: __start_46,
  set: __set_46,
  defaults: __defaults_46
};
_$pointer_46.snap = snap;

var ___default_46 = (0, _$base_38.makeModifier)(snap, 'snap');

_$pointer_46["default"] = ___default_46;

var _$size_47 = {};
"use strict";

function ___typeof_47(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_47 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_47 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_47(obj); }

Object.defineProperty(_$size_47, "__esModule", {
  value: true
});
_$size_47.snapSize = _$size_47["default"] = void 0;

var ___extend_47 = ___interopRequireDefault_47(_$extend_72);

var __is_47 = ___interopRequireWildcard_47(_$is_76);

/* removed: var _$base_38 = require("../base"); */;

/* removed: var _$pointer_46 = require("./pointer"); */;

function ___getRequireWildcardCache_47() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_47 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_47(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_47(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_47(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_47(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___slicedToArray_47(arr, i) { return ___arrayWithHoles_47(arr) || ___iterableToArrayLimit_47(arr, i) || ___nonIterableRest_47(); }

function ___nonIterableRest_47() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function ___iterableToArrayLimit_47(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function ___arrayWithHoles_47(arr) { if (Array.isArray(arr)) return arr; }

function __start_47(arg) {
  var state = arg.state,
      edges = arg.edges;
  var options = state.options;

  if (!edges) {
    return null;
  }

  arg.state = {
    options: {
      targets: null,
      relativePoints: [{
        x: edges.left ? 0 : 1,
        y: edges.top ? 0 : 1
      }],
      offset: options.offset || 'self',
      origin: {
        x: 0,
        y: 0
      },
      range: options.range
    }
  };
  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];

  _$pointer_46.snap.start(arg);

  state.offsets = arg.state.offsets;
  arg.state = state;
}

function __set_47(arg) {
  var interaction = arg.interaction,
      state = arg.state,
      coords = arg.coords;
  var options = state.options,
      offsets = state.offsets;
  var relative = {
    x: coords.x - offsets[0].x,
    y: coords.y - offsets[0].y
  };
  state.options = (0, ___extend_47["default"])({}, options);
  state.options.targets = [];

  for (var _i = 0; _i < (options.targets || []).length; _i++) {
    var _ref;

    _ref = (options.targets || [])[_i];
    var snapTarget = _ref;
    var target = void 0;

    if (__is_47.func(snapTarget)) {
      target = snapTarget(relative.x, relative.y, interaction);
    } else {
      target = snapTarget;
    }

    if (!target) {
      continue;
    }

    for (var _i2 = 0; _i2 < state.targetFields.length; _i2++) {
      var _ref2;

      _ref2 = state.targetFields[_i2];

      var _ref3 = _ref2,
          _ref4 = ___slicedToArray_47(_ref3, 2),
          xField = _ref4[0],
          yField = _ref4[1];

      if (xField in target || yField in target) {
        target.x = target[xField];
        target.y = target[yField];
        break;
      }
    }

    state.options.targets.push(target);
  }

  var returnValue = _$pointer_46.snap.set(arg);

  state.options = options;
  return returnValue;
}

var __defaults_47 = {
  range: Infinity,
  targets: null,
  offset: null,
  endOnly: false,
  enabled: false
};
var snapSize = {
  start: __start_47,
  set: __set_47,
  defaults: __defaults_47
};
_$size_47.snapSize = snapSize;

var ___default_47 = (0, _$base_38.makeModifier)(snapSize, 'snapSize');

_$size_47["default"] = ___default_47;

var _$edges_45 = {};
"use strict";

Object.defineProperty(_$edges_45, "__esModule", {
  value: true
});
_$edges_45.snapEdges = _$edges_45["default"] = void 0;

var ___clone_45 = ___interopRequireDefault_45(_$clone_66);

var ___extend_45 = ___interopRequireDefault_45(_$extend_72);

/* removed: var _$base_38 = require("../base"); */;

/* removed: var _$size_47 = require("./size"); */;

function ___interopRequireDefault_45(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/**
 * @module modifiers/snapEdges
 *
 * @description
 * This module allows snapping of the edges of targets during resize
 * interactions.
 *
 * @example
 * interact(target).resizable({
 *   snapEdges: {
 *     targets: [interact.snappers.grid({ x: 100, y: 50 })],
 *   },
 * })
 *
 * interact(target).resizable({
 *   snapEdges: {
 *     targets: [
 *       interact.snappers.grid({
 *        top: 50,
 *        left: 50,
 *        bottom: 100,
 *        right: 100,
 *       }),
 *     ],
 *   },
 * })
 */
function __start_45(arg) {
  var edges = arg.edges;

  if (!edges) {
    return null;
  }

  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];
  return _$size_47.snapSize.start(arg);
}

var snapEdges = {
  start: __start_45,
  set: _$size_47.snapSize.set,
  defaults: (0, ___extend_45["default"])((0, ___clone_45["default"])(_$size_47.snapSize.defaults), {
    targets: null,
    range: null,
    offset: {
      x: 0,
      y: 0
    }
  })
};
_$edges_45.snapEdges = snapEdges;

var ___default_45 = (0, _$base_38.makeModifier)(snapEdges, 'snapEdges');

_$edges_45["default"] = ___default_45;

var _$spring_48 = {};
"use strict";

Object.defineProperty(_$spring_48, "__esModule", {
  value: true
});
_$spring_48["default"] = void 0;

var spring = function spring() {};

spring._defaults = {};
var ___default_48 = spring;
_$spring_48["default"] = ___default_48;

var _$transform_49 = {};
"use strict";

Object.defineProperty(_$transform_49, "__esModule", {
  value: true
});
_$transform_49["default"] = void 0;

var transform = function transform() {};

transform._defaults = {};
var ___default_49 = transform;
_$transform_49["default"] = ___default_49;

var _$all_35 = {};
"use strict";

Object.defineProperty(_$all_35, "__esModule", {
  value: true
});
_$all_35["default"] = void 0;

var _aspectRatio = ___interopRequireDefault_35(_$aspectRatio_36);

var _avoid = ___interopRequireDefault_35(_$avoid_37);

var ___edges_35 = ___interopRequireDefault_35(_$edges_40);

var ___pointer_35 = ___interopRequireDefault_35(_$pointer_41);

var ___rect_35 = ___interopRequireDefault_35(_$rect_42);

var ___size_35 = ___interopRequireDefault_35(_$size_43);

var _rubberband = ___interopRequireDefault_35(_$rubberband_44);

var _edges2 = ___interopRequireDefault_35(_$edges_45);

var _pointer2 = ___interopRequireDefault_35(_$pointer_46);

var _size2 = ___interopRequireDefault_35(_$size_47);

var _spring = ___interopRequireDefault_35(_$spring_48);

var _transform = ___interopRequireDefault_35(_$transform_49);

function ___interopRequireDefault_35(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/* eslint-disable node/no-extraneous-import */
var ___default_35 = {
  aspectRatio: _aspectRatio["default"],
  restrictEdges: ___edges_35["default"],
  restrict: ___pointer_35["default"],
  restrictRect: ___rect_35["default"],
  restrictSize: ___size_35["default"],
  snapEdges: _edges2["default"],
  snap: _pointer2["default"],
  snapSize: _size2["default"],
  spring: _spring["default"],
  avoid: _avoid["default"],
  transform: _transform["default"],
  rubberband: _rubberband["default"]
};
_$all_35["default"] = ___default_35;

var _$index_39 = {};
"use strict";

Object.defineProperty(_$index_39, "__esModule", {
  value: true
});
_$index_39["default"] = void 0;

var ___index_39 = ___interopRequireDefault_39(_$index_62);

var _all2 = ___interopRequireDefault_39(_$all_35);

var ___base_39 = ___interopRequireDefault_39(_$base_38);

function ___interopRequireDefault_39(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var __modifiers_39 = {
  id: 'modifiers',
  install: function install(scope) {
    var interact = scope.interactStatic;
    scope.usePlugin(___base_39["default"]);
    scope.usePlugin(___index_39["default"]);
    interact.modifiers = _all2["default"]; // for backwrads compatibility

    for (var type in _all2["default"]) {
      var _all = _all2["default"][type],
          _defaults = _all._defaults,
          _methods = _all._methods;
      _defaults._methods = _methods;
      scope.defaults.perAction[type] = _defaults;
    }
  }
};
var ___default_39 = __modifiers_39;
_$index_39["default"] = ___default_39;

var _$index_50 = {};
"use strict";

Object.defineProperty(_$index_50, "__esModule", {
  value: true
});
_$index_50["default"] = void 0;
var ___default_50 = {};
_$index_50["default"] = ___default_50;

var _$PointerEvent_52 = {};
"use strict";

Object.defineProperty(_$PointerEvent_52, "__esModule", {
  value: true
});
_$PointerEvent_52.PointerEvent = _$PointerEvent_52["default"] = void 0;

var ___BaseEvent2_52 = ___interopRequireDefault_52(_$BaseEvent_16);

var __pointerUtils_52 = ___interopRequireWildcard_52(_$pointerUtils_80);

function ___getRequireWildcardCache_52() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_52 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_52(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_52(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_52(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_52(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___typeof_52(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_52 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_52 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_52(obj); }

function ___classCallCheck_52(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function ___defineProperties_52(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function ___createClass_52(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_52(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_52(Constructor, staticProps); return Constructor; }

function ___possibleConstructorReturn_52(self, call) { if (call && (___typeof_52(call) === "object" || typeof call === "function")) { return call; } return ___assertThisInitialized_52(self); }

function ___getPrototypeOf_52(o) { ___getPrototypeOf_52 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ___getPrototypeOf_52(o); }

function ___assertThisInitialized_52(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function ___inherits_52(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ___setPrototypeOf_52(subClass, superClass); }

function ___setPrototypeOf_52(o, p) { ___setPrototypeOf_52 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ___setPrototypeOf_52(o, p); }

function ___defineProperty_52(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var PointerEvent = /*#__PURE__*/function (_BaseEvent) {
  ___inherits_52(PointerEvent, _BaseEvent);

  /** */
  function PointerEvent(type, pointer, event, eventTarget, interaction, timeStamp) {
    var _this;

    ___classCallCheck_52(this, PointerEvent);

    _this = ___possibleConstructorReturn_52(this, ___getPrototypeOf_52(PointerEvent).call(this, interaction));

    ___defineProperty_52(___assertThisInitialized_52(_this), "type", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "originalEvent", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "pointerId", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "pointerType", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "double", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "pageX", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "pageY", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "clientX", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "clientY", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "dt", void 0);

    ___defineProperty_52(___assertThisInitialized_52(_this), "eventable", void 0);

    __pointerUtils_52.pointerExtend(___assertThisInitialized_52(_this), event);

    if (event !== pointer) {
      __pointerUtils_52.pointerExtend(___assertThisInitialized_52(_this), pointer);
    }

    _this.timeStamp = timeStamp;
    _this.originalEvent = event;
    _this.type = type;
    _this.pointerId = __pointerUtils_52.getPointerId(pointer);
    _this.pointerType = __pointerUtils_52.getPointerType(pointer);
    _this.target = eventTarget;
    _this.currentTarget = null;

    if (type === 'tap') {
      var pointerIndex = interaction.getPointerIndex(pointer);
      _this.dt = _this.timeStamp - interaction.pointers[pointerIndex].downTime;
      var interval = _this.timeStamp - interaction.tapTime;
      _this["double"] = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === _this.target && interval < 500);
    } else if (type === 'doubletap') {
      _this.dt = pointer.timeStamp - interaction.tapTime;
    }

    return _this;
  }

  ___createClass_52(PointerEvent, [{
    key: "_subtractOrigin",
    value: function _subtractOrigin(_ref) {
      var originX = _ref.x,
          originY = _ref.y;
      this.pageX -= originX;
      this.pageY -= originY;
      this.clientX -= originX;
      this.clientY -= originY;
      return this;
    }
  }, {
    key: "_addOrigin",
    value: function _addOrigin(_ref2) {
      var originX = _ref2.x,
          originY = _ref2.y;
      this.pageX += originX;
      this.pageY += originY;
      this.clientX += originX;
      this.clientY += originY;
      return this;
    }
    /**
     * Prevent the default behaviour of the original Event
     */

  }, {
    key: "preventDefault",
    value: function preventDefault() {
      this.originalEvent.preventDefault();
    }
  }]);

  return PointerEvent;
}(___BaseEvent2_52["default"]);

_$PointerEvent_52.PointerEvent = _$PointerEvent_52["default"] = PointerEvent;

var _$base_53 = {};
"use strict";

function ___typeof_53(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_53 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_53 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_53(obj); }

Object.defineProperty(_$base_53, "__esModule", {
  value: true
});
_$base_53["default"] = void 0;

var ___Interaction_53 = ___interopRequireDefault_53(_$Interaction_22);

var ___scope_53 = ___interopRequireDefault_53(_$scope_28({}));

var __utils_53 = ___interopRequireWildcard_53(_$index_75);

var _PointerEvent = ___interopRequireDefault_53(_$PointerEvent_52);

function ___getRequireWildcardCache_53() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_53 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_53(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_53(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_53(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_53(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var __defaults_53 = {
  holdDuration: 600,
  ignoreFrom: null,
  allowFrom: null,
  origin: {
    x: 0,
    y: 0
  }
};
var pointerEvents = {
  id: 'pointer-events/base',
  install: __install_53,
  listeners: {
    'interactions:new': addInteractionProps,
    'interactions:update-pointer': addHoldInfo,
    'interactions:move': moveAndClearHold,
    'interactions:down': function interactionsDown(arg, scope) {
      downAndStartHold(arg, scope);
      fire(arg, scope);
    },
    'interactions:up': function interactionsUp(arg, scope) {
      clearHold(arg);
      fire(arg, scope);
      tapAfterUp(arg, scope);
    },
    'interactions:cancel': function interactionsCancel(arg, scope) {
      clearHold(arg);
      fire(arg, scope);
    }
  },
  PointerEvent: _PointerEvent["default"],
  fire: fire,
  collectEventTargets: collectEventTargets,
  defaults: __defaults_53,
  types: {
    down: true,
    move: true,
    up: true,
    cancel: true,
    tap: true,
    doubletap: true,
    hold: true
  }
};

function fire(arg, scope) {
  var interaction = arg.interaction,
      pointer = arg.pointer,
      event = arg.event,
      eventTarget = arg.eventTarget,
      type = arg.type,
      _arg$targets = arg.targets,
      targets = _arg$targets === void 0 ? collectEventTargets(arg, scope) : _arg$targets;
  var pointerEvent = new _PointerEvent["default"](type, pointer, event, eventTarget, interaction, scope.now());
  scope.fire('pointerEvents:new', {
    pointerEvent: pointerEvent
  });
  var signalArg = {
    interaction: interaction,
    pointer: pointer,
    event: event,
    eventTarget: eventTarget,
    targets: targets,
    type: type,
    pointerEvent: pointerEvent
  };

  for (var i = 0; i < targets.length; i++) {
    var target = targets[i];

    for (var prop in target.props || {}) {
      pointerEvent[prop] = target.props[prop];
    }

    var origin = __utils_53.getOriginXY(target.eventable, target.node);

    pointerEvent._subtractOrigin(origin);

    pointerEvent.eventable = target.eventable;
    pointerEvent.currentTarget = target.node;
    target.eventable.fire(pointerEvent);

    pointerEvent._addOrigin(origin);

    if (pointerEvent.immediatePropagationStopped || pointerEvent.propagationStopped && i + 1 < targets.length && targets[i + 1].node !== pointerEvent.currentTarget) {
      break;
    }
  }

  scope.fire('pointerEvents:fired', signalArg);

  if (type === 'tap') {
    // if pointerEvent should make a double tap, create and fire a doubletap
    // PointerEvent and use that as the prevTap
    var prevTap = pointerEvent["double"] ? fire({
      interaction: interaction,
      pointer: pointer,
      event: event,
      eventTarget: eventTarget,
      type: 'doubletap'
    }, scope) : pointerEvent;
    interaction.prevTap = prevTap;
    interaction.tapTime = prevTap.timeStamp;
  }

  return pointerEvent;
}

function collectEventTargets(_ref, scope) {
  var interaction = _ref.interaction,
      pointer = _ref.pointer,
      event = _ref.event,
      eventTarget = _ref.eventTarget,
      type = _ref.type;
  var pointerIndex = interaction.getPointerIndex(pointer);
  var pointerInfo = interaction.pointers[pointerIndex]; // do not fire a tap event if the pointer was moved before being lifted

  if (type === 'tap' && (interaction.pointerWasMoved || // or if the pointerup target is different to the pointerdown target
  !(pointerInfo && pointerInfo.downTarget === eventTarget))) {
    return [];
  }

  var path = __utils_53.dom.getPath(eventTarget);
  var signalArg = {
    interaction: interaction,
    pointer: pointer,
    event: event,
    eventTarget: eventTarget,
    type: type,
    path: path,
    targets: [],
    node: null
  };

  for (var _i = 0; _i < path.length; _i++) {
    var _ref2;

    _ref2 = path[_i];
    var node = _ref2;
    signalArg.node = node;
    scope.fire('pointerEvents:collect-targets', signalArg);
  }

  if (type === 'hold') {
    signalArg.targets = signalArg.targets.filter(function (target) {
      return target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration;
    });
  }

  return signalArg.targets;
}

function addInteractionProps(_ref3) {
  var interaction = _ref3.interaction;
  interaction.prevTap = null; // the most recent tap event on this interaction

  interaction.tapTime = 0; // time of the most recent tap event
}

function addHoldInfo(_ref4) {
  var down = _ref4.down,
      pointerInfo = _ref4.pointerInfo;

  if (!down && pointerInfo.hold) {
    return;
  }

  pointerInfo.hold = {
    duration: Infinity,
    timeout: null
  };
}

function clearHold(_ref5) {
  var interaction = _ref5.interaction,
      pointerIndex = _ref5.pointerIndex;

  if (interaction.pointers[pointerIndex].hold) {
    clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
  }
}

function moveAndClearHold(_ref6, scope) {
  var interaction = _ref6.interaction,
      pointer = _ref6.pointer,
      event = _ref6.event,
      eventTarget = _ref6.eventTarget,
      duplicate = _ref6.duplicate;
  var pointerIndex = interaction.getPointerIndex(pointer);

  if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {
    if (interaction.pointerIsDown) {
      clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
    }

    fire({
      interaction: interaction,
      pointer: pointer,
      event: event,
      eventTarget: eventTarget,
      type: 'move'
    }, scope);
  }
}

function downAndStartHold(_ref7, scope) {
  var interaction = _ref7.interaction,
      pointer = _ref7.pointer,
      event = _ref7.event,
      eventTarget = _ref7.eventTarget,
      pointerIndex = _ref7.pointerIndex;
  var timer = interaction.pointers[pointerIndex].hold;
  var path = __utils_53.dom.getPath(eventTarget);
  var signalArg = {
    interaction: interaction,
    pointer: pointer,
    event: event,
    eventTarget: eventTarget,
    type: 'hold',
    targets: [],
    path: path,
    node: null
  };

  for (var _i2 = 0; _i2 < path.length; _i2++) {
    var _ref8;

    _ref8 = path[_i2];
    var node = _ref8;
    signalArg.node = node;
    scope.fire('pointerEvents:collect-targets', signalArg);
  }

  if (!signalArg.targets.length) {
    return;
  }

  var minDuration = Infinity;

  for (var _i3 = 0; _i3 < signalArg.targets.length; _i3++) {
    var _ref9;

    _ref9 = signalArg.targets[_i3];
    var target = _ref9;
    var holdDuration = target.eventable.options.holdDuration;

    if (holdDuration < minDuration) {
      minDuration = holdDuration;
    }
  }

  timer.duration = minDuration;
  timer.timeout = setTimeout(function () {
    fire({
      interaction: interaction,
      eventTarget: eventTarget,
      pointer: pointer,
      event: event,
      type: 'hold'
    }, scope);
  }, minDuration);
}

function tapAfterUp(_ref10, scope) {
  var interaction = _ref10.interaction,
      pointer = _ref10.pointer,
      event = _ref10.event,
      eventTarget = _ref10.eventTarget;

  if (!interaction.pointerWasMoved) {
    fire({
      interaction: interaction,
      eventTarget: eventTarget,
      pointer: pointer,
      event: event,
      type: 'tap'
    }, scope);
  }
}

function __install_53(scope) {
  scope.pointerEvents = pointerEvents;
  scope.defaults.actions.pointerEvents = pointerEvents.defaults;
  __utils_53.extend(scope.actions.phaselessTypes, pointerEvents.types);
}

var ___default_53 = pointerEvents;
_$base_53["default"] = ___default_53;

var _$holdRepeat_54 = {};
"use strict";

Object.defineProperty(_$holdRepeat_54, "__esModule", {
  value: true
});
_$holdRepeat_54["default"] = void 0;

var ___PointerEvent_54 = ___interopRequireDefault_54(_$PointerEvent_52);

var ___base_54 = ___interopRequireDefault_54(_$base_53);

function ___interopRequireDefault_54(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __install_54(scope) {
  scope.usePlugin(___base_54["default"]);
  var pointerEvents = scope.pointerEvents; // don't repeat by default

  pointerEvents.defaults.holdRepeatInterval = 0;
  pointerEvents.types.holdrepeat = scope.actions.phaselessTypes.holdrepeat = true;
}

function onNew(_ref) {
  var pointerEvent = _ref.pointerEvent;

  if (pointerEvent.type !== 'hold') {
    return;
  }

  pointerEvent.count = (pointerEvent.count || 0) + 1;
}

function onFired(_ref2, scope) {
  var interaction = _ref2.interaction,
      pointerEvent = _ref2.pointerEvent,
      eventTarget = _ref2.eventTarget,
      targets = _ref2.targets;

  if (pointerEvent.type !== 'hold' || !targets.length) {
    return;
  } // get the repeat interval from the first eventable


  var interval = targets[0].eventable.options.holdRepeatInterval; // don't repeat if the interval is 0 or less

  if (interval <= 0) {
    return;
  } // set a timeout to fire the holdrepeat event


  interaction.holdIntervalHandle = setTimeout(function () {
    scope.pointerEvents.fire({
      interaction: interaction,
      eventTarget: eventTarget,
      type: 'hold',
      pointer: pointerEvent,
      event: pointerEvent
    }, scope);
  }, interval);
}

function endHoldRepeat(_ref3) {
  var interaction = _ref3.interaction;

  // set the interaction's holdStopTime property
  // to stop further holdRepeat events
  if (interaction.holdIntervalHandle) {
    clearInterval(interaction.holdIntervalHandle);
    interaction.holdIntervalHandle = null;
  }
}

var holdRepeat = {
  id: 'pointer-events/holdRepeat',
  install: __install_54,
  listeners: ['move', 'up', 'cancel', 'endall'].reduce(function (acc, enderTypes) {
    acc["pointerEvents:".concat(enderTypes)] = endHoldRepeat;
    return acc;
  }, {
    'pointerEvents:new': onNew,
    'pointerEvents:fired': onFired
  })
};
var ___default_54 = holdRepeat;
_$holdRepeat_54["default"] = ___default_54;

var _$interactableTargets_56 = {};
"use strict";

Object.defineProperty(_$interactableTargets_56, "__esModule", {
  value: true
});
_$interactableTargets_56["default"] = void 0;

var ___extend_56 = ___interopRequireDefault_56(_$extend_72);

function ___interopRequireDefault_56(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __install_56(scope) {
  var Interactable = scope.Interactable;
  Interactable.prototype.pointerEvents = pointerEventsMethod;
  var __backCompatOption = Interactable.prototype._backCompatOption;

  Interactable.prototype._backCompatOption = function (optionName, newValue) {
    var ret = __backCompatOption.call(this, optionName, newValue);

    if (ret === this) {
      this.events.options[optionName] = newValue;
    }

    return ret;
  };
}

function pointerEventsMethod(options) {
  (0, ___extend_56["default"])(this.events.options, options);
  return this;
}

var plugin = {
  id: 'pointer-events/interactableTargets',
  install: __install_56,
  listeners: {
    'pointerEvents:collect-targets': function pointerEventsCollectTargets(_ref, scope) {
      var targets = _ref.targets,
          node = _ref.node,
          type = _ref.type,
          eventTarget = _ref.eventTarget;
      scope.interactables.forEachMatch(node, function (interactable) {
        var eventable = interactable.events;
        var options = eventable.options;

        if (eventable.types[type] && eventable.types[type].length && interactable.testIgnoreAllow(options, node, eventTarget)) {
          targets.push({
            node: node,
            eventable: eventable,
            props: {
              interactable: interactable
            }
          });
        }
      });
    },
    'interactable:new': function interactableNew(_ref2) {
      var interactable = _ref2.interactable;

      interactable.events.getRect = function (element) {
        return interactable.getRect(element);
      };
    },
    'interactable:set': function interactableSet(_ref3, scope) {
      var interactable = _ref3.interactable,
          options = _ref3.options;
      (0, ___extend_56["default"])(interactable.events.options, scope.pointerEvents.defaults);
      (0, ___extend_56["default"])(interactable.events.options, options.pointerEvents || {});
    }
  }
};
var ___default_56 = plugin;
_$interactableTargets_56["default"] = ___default_56;

var _$index_55 = {};
"use strict";

function ___typeof_55(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_55 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_55 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_55(obj); }

Object.defineProperty(_$index_55, "__esModule", {
  value: true
});
Object.defineProperty(_$index_55, "holdRepeat", {
  enumerable: true,
  get: function get() {
    return _holdRepeat["default"];
  }
});
Object.defineProperty(_$index_55, "interactableTargets", {
  enumerable: true,
  get: function get() {
    return _interactableTargets["default"];
  }
});
_$index_55.pointerEvents = _$index_55["default"] = void 0;

var __pointerEvents_55 = ___interopRequireWildcard_55(_$base_53);

_$index_55.pointerEvents = __pointerEvents_55;

var _holdRepeat = ___interopRequireDefault_55(_$holdRepeat_54);

var _interactableTargets = ___interopRequireDefault_55(_$interactableTargets_56);

function ___interopRequireDefault_55(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___getRequireWildcardCache_55() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_55 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_55(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_55(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_55(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

var ___default_55 = {
  id: 'pointer-events',
  install: function install(scope) {
    scope.usePlugin(__pointerEvents_55);
    scope.usePlugin(_holdRepeat["default"]);
    scope.usePlugin(_interactableTargets["default"]);
  }
};
_$index_55["default"] = ___default_55;

var _$index_57 = {};
"use strict";

Object.defineProperty(_$index_57, "__esModule", {
  value: true
});
_$index_57.install = __install_57;
_$index_57["default"] = void 0;

var ___Interactable_57 = ___interopRequireDefault_57(_$Interactable_20({}));

/* removed: var _$Interaction_22 = require("@interactjs/core/Interaction"); */;

/* removed: var _$index_75 = require("@interactjs/utils/index"); */;

function ___interopRequireDefault_57(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function __install_57(scope) {
  var Interactable = scope.Interactable;
  scope.actions.phases.reflow = true;
  /**
   * ```js
   * const interactable = interact(target)
   * const drag = { name: drag, axis: 'x' }
   * const resize = { name: resize, edges: { left: true, bottom: true }
   *
   * interactable.reflow(drag)
   * interactable.reflow(resize)
   * ```
   *
   * Start an action sequence to re-apply modifiers, check drops, etc.
   *
   * @param { Object } action The action to begin
   * @param { string } action.name The name of the action
   * @returns { Promise } A promise that resolves to the `Interactable` when actions on all targets have ended
   */

  Interactable.prototype.reflow = function (action) {
    return reflow(this, action, scope);
  };
}

function reflow(interactable, action, scope) {
  var elements = _$index_75.is.string(interactable.target) ? _$index_75.arr.from(interactable._context.querySelectorAll(interactable.target)) : [interactable.target]; // tslint:disable-next-line variable-name

  var Promise = _$index_75.win.window.Promise;
  var promises = Promise ? [] : null;

  var _loop = function _loop() {
    _ref = elements[_i];
    var element = _ref;
    var rect = interactable.getRect(element);

    if (!rect) {
      return "break";
    }

    var runningInteraction = _$index_75.arr.find(scope.interactions.list, function (interaction) {
      return interaction.interacting() && interaction.interactable === interactable && interaction.element === element && interaction.prepared.name === action.name;
    });

    var reflowPromise = void 0;

    if (runningInteraction) {
      runningInteraction.move();

      if (promises) {
        reflowPromise = runningInteraction._reflowPromise || new Promise(function (resolve) {
          runningInteraction._reflowResolve = resolve;
        });
      }
    } else {
      var xywh = _$index_75.rect.tlbrToXywh(rect);

      var coords = {
        page: {
          x: xywh.x,
          y: xywh.y
        },
        client: {
          x: xywh.x,
          y: xywh.y
        },
        timeStamp: scope.now()
      };

      var event = _$index_75.pointer.coordsToEvent(coords);

      reflowPromise = startReflow(scope, interactable, element, action, event);
    }

    if (promises) {
      promises.push(reflowPromise);
    }
  };

  for (var _i = 0; _i < elements.length; _i++) {
    var _ref;

    var _ret = _loop();

    if (_ret === "break") break;
  }

  return promises && Promise.all(promises).then(function () {
    return interactable;
  });
}

function startReflow(scope, interactable, element, action, event) {
  var interaction = scope.interactions["new"]({
    pointerType: 'reflow'
  });
  var signalArg = {
    interaction: interaction,
    event: event,
    pointer: event,
    eventTarget: element,
    phase: 'reflow'
  };
  interaction.interactable = interactable;
  interaction.element = element;
  interaction.prepared = (0, _$index_75.extend)({}, action);
  interaction.prevEvent = event;
  interaction.updatePointer(event, event, element, true);

  interaction._doPhase(signalArg);

  var reflowPromise = _$index_75.win.window.Promise ? new _$index_75.win.window.Promise(function (resolve) {
    interaction._reflowResolve = resolve;
  }) : null;
  interaction._reflowPromise = reflowPromise;
  interaction.start(action, interactable, element);

  if (interaction._interacting) {
    interaction.move(signalArg);
    interaction.end(event);
  } else {
    interaction.stop();
  }

  interaction.removePointer(event, event);
  interaction.pointerIsDown = false;
  return reflowPromise;
}

var ___default_57 = {
  id: 'reflow',
  install: __install_57,
  listeners: {
    // remove completed reflow interactions
    'interactions:stop': function interactionsStop(_ref2, scope) {
      var interaction = _ref2.interaction;

      if (interaction.pointerType === 'reflow') {
        if (interaction._reflowResolve) {
          interaction._reflowResolve();
        }

        _$index_75.arr.remove(scope.interactions.list, interaction);
      }
    }
  }
};
_$index_57["default"] = ___default_57;

var _$displace_67 = {};
"use strict";

Object.defineProperty(_$displace_67, "__esModule", {
  value: true
});
_$displace_67["default"] = void 0;
var ___default_67 = {};
_$displace_67["default"] = ___default_67;

var _$exchange_71 = {};
"use strict";

Object.defineProperty(_$exchange_71, "__esModule", {
  value: true
});
_$exchange_71.exchange = void 0;
var exchange = {};
_$exchange_71.exchange = exchange;

var _$index_84 = {};
"use strict";

Object.defineProperty(_$index_84, "__esModule", {
  value: true
});
_$index_84["default"] = void 0;
var ___default_84 = {};
_$index_84["default"] = ___default_84;

var _$index_33 = {};
"use strict";

function ___typeof_33(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_33 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_33 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_33(obj); }

Object.defineProperty(_$index_33, "__esModule", {
  value: true
});
_$index_33["default"] = void 0;

_$index_63;

var _actions = ___interopRequireDefault_33(_$index_5);

var _arrange = ___interopRequireDefault_33(_$index_7);

var _autoScroll = ___interopRequireDefault_33(_$index_8);

var _autoStart = ___interopRequireDefault_33(_$index_13);

var ___clone_33 = ___interopRequireDefault_33(_$index_14);

var _components = ___interopRequireDefault_33(_$index_15);

var ___interactablePreventDefault_33 = ___interopRequireDefault_33(_$interactablePreventDefault_25);

var _devTools = ___interopRequireDefault_33(_$index_29);

var feedback = ___interopRequireWildcard_33(_$index_30);

var _inertia = ___interopRequireDefault_33(_$index_31);

var _interact = ___interopRequireDefault_33(_$index_32);

var ___index_33 = ___interopRequireDefault_33(_$index_39);

var _multiTarget = ___interopRequireDefault_33(_$index_50);

var _offset = ___interopRequireDefault_33(_$index_51);

var _pointerEvents = ___interopRequireDefault_33(_$index_55);

var _reflow = ___interopRequireDefault_33(_$index_57);

var displace = ___interopRequireWildcard_33(_$displace_67);

/* removed: var _$exchange_71 = require("@interactjs/utils/exchange"); */;

var __pointerUtils_33 = ___interopRequireWildcard_33(_$pointerUtils_80);

var vueComponents = ___interopRequireWildcard_33(_$index_84);

function ___getRequireWildcardCache_33() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); ___getRequireWildcardCache_33 = function _getRequireWildcardCache() { return cache; }; return cache; }

function ___interopRequireWildcard_33(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || ___typeof_33(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = ___getRequireWildcardCache_33(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ___interopRequireDefault_33(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

_interact["default"].use(_multiTarget["default"]);

_interact["default"].use(___interactablePreventDefault_33["default"]);

_interact["default"].use(_offset["default"]); // interaction element cloning


_interact["default"].use(___clone_33["default"]); // sortable and swappable


_interact["default"].use(_arrange["default"]); // pointerEvents


_interact["default"].use(_pointerEvents["default"]); // inertia


_interact["default"].use(_inertia["default"]); // snap, resize, etc.


_interact["default"].use(___index_33["default"]); // autoStart, hold


_interact["default"].use(_autoStart["default"]); // drag and drop, resize, gesture


_interact["default"].use(_actions["default"]); // autoScroll


_interact["default"].use(_autoScroll["default"]); // reflow


_interact["default"].use(_reflow["default"]);

_interact["default"].feedback = feedback;

_interact["default"].use(_components["default"]);

_interact["default"].vue = {
  components: vueComponents
};
_interact["default"].__utils = {
  exchange: _$exchange_71.exchange,
  displace: displace,
  pointer: __pointerUtils_33
}; // eslint-disable-next-line no-undef

if ("production" !== 'production') {
  _interact["default"].use(_devTools["default"]);
}

var ___default_33 = _interact["default"];
_$index_33["default"] = ___default_33;

var _$index_85 = { exports: {} };
"use strict";

Object.defineProperty(_$index_85.exports, "__esModule", {
  value: true
});
_$index_85.exports["default"] = void 0;

var ___index_85 = ___interopRequireDefault_85(_$index_33);

function ___interopRequireDefault_85(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function ___typeof_85(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_85 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_85 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_85(obj); }

if (("object" === "undefined" ? "undefined" : ___typeof_85(_$index_85)) === 'object' && !!_$index_85) {
  try {
    _$index_85.exports = ___index_85["default"];
  } catch (_unused) {}
}

___index_85["default"]["default"] = ___index_85["default"];
var ___default_85 = ___index_85["default"];
_$index_85.exports["default"] = ___default_85;

_$index_85 = _$index_85.exports
return _$index_85;

});

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2stZmxhdC9fcHJlbHVkZSIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RhYmxlLnRzIiwiLi4vQGludGVyYWN0anMvY29yZS9zY29wZS50cyIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvaW50ZXJhY3Rpb25zLnRzIiwiLi4vQGludGVyYWN0anMvY29yZS9JbnRlcmFjdFN0YXRpYy50cyIsIi4uL0BpbnRlcmFjdGpzL3R5cGVzL2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvaXNXaW5kb3cudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy93aW5kb3cudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy9pcy50cyIsIi4uL0BpbnRlcmFjdGpzL2FjdGlvbnMvZHJhZy50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL2Fyci50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL2RvbU9iamVjdHMudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy9icm93c2VyLnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvY2xvbmUudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscy50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL3BvaW50ZXJFeHRlbmQudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy9oeXBvdC50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL3BvaW50ZXJVdGlscy50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL2V2ZW50cy50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZC50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL25vcm1hbGl6ZUxpc3RlbmVycy50cyIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvRXZlbnRhYmxlLnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvcmVjdC50cyIsIi4uL0BpbnRlcmFjdGpzL3V0aWxzL2dldE9yaWdpblhZLnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvcmFmLnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvaW5kZXgudHMiLCIuLi9AaW50ZXJhY3Rqcy9jb3JlL0Jhc2VFdmVudC50cyIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvZGVmYXVsdE9wdGlvbnMudHMiLCIuLi9AaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0RXZlbnQudHMiLCIuLi9AaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZVNldC50cyIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvUG9pbnRlckluZm8udHMiLCIuLi9AaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uLnRzIiwiLi4vQGludGVyYWN0anMvY29yZS9pbnRlcmFjdGFibGVQcmV2ZW50RGVmYXVsdC50cyIsIi4uL0BpbnRlcmFjdGpzL2NvcmUvaW50ZXJhY3Rpb25GaW5kZXIudHMiLCIuLi9AaW50ZXJhY3Rqcy9hY3Rpb25zL2Ryb3AvRHJvcEV2ZW50LnRzIiwiLi4vQGludGVyYWN0anMvYWN0aW9ucy9kcm9wL2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvYWN0aW9ucy9nZXN0dXJlLnRzIiwiLi4vQGludGVyYWN0anMvYWN0aW9ucy9yZXNpemUudHMiLCIuLi9AaW50ZXJhY3Rqcy9hY3Rpb25zL2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvYXJyYW5nZS9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL2F1dG8tc2Nyb2xsL2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvYXV0by1zdGFydC9JbnRlcmFjdGFibGVNZXRob2RzLnRzIiwiLi4vQGludGVyYWN0anMvYXV0by1zdGFydC9iYXNlLnRzIiwiLi4vQGludGVyYWN0anMvYXV0by1zdGFydC9kcmFnQXhpcy50cyIsIi4uL0BpbnRlcmFjdGpzL2F1dG8tc3RhcnQvaG9sZC50cyIsIi4uL0BpbnRlcmFjdGpzL2F1dG8tc3RhcnQvaW5kZXgudHMiLCIuLi9AaW50ZXJhY3Rqcy9jbG9uZS9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL2Rldi10b29scy9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9Nb2RpZmljYXRpb24udHMiLCIuLi9AaW50ZXJhY3Rqcy9tb2RpZmllcnMvYmFzZS50cyIsIi4uL0BpbnRlcmFjdGpzL29mZnNldC9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL2luZXJ0aWEvaW5kZXgudHMiLCIuLi9AaW50ZXJhY3Rqcy9pbnRlcmFjdC9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL3NuYXBwZXJzL2VkZ2VUYXJnZXQudHMiLCIuLi9AaW50ZXJhY3Rqcy9zbmFwcGVycy9lbGVtZW50cy50cyIsIi4uL0BpbnRlcmFjdGpzL3NuYXBwZXJzL2dyaWQudHMiLCIuLi9AaW50ZXJhY3Rqcy9zbmFwcGVycy9hbGwudHMiLCIuLi9AaW50ZXJhY3Rqcy9zbmFwcGVycy9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9hc3BlY3RSYXRpby50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9hdm9pZC50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9yZXN0cmljdC9wb2ludGVyLnRzIiwiLi4vQGludGVyYWN0anMvbW9kaWZpZXJzL3Jlc3RyaWN0L2VkZ2VzLnRzIiwiLi4vQGludGVyYWN0anMvbW9kaWZpZXJzL3Jlc3RyaWN0L3JlY3QudHMiLCIuLi9AaW50ZXJhY3Rqcy9tb2RpZmllcnMvcmVzdHJpY3Qvc2l6ZS50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9ydWJiZXJiYW5kLnRzIiwiLi4vQGludGVyYWN0anMvbW9kaWZpZXJzL3NuYXAvcG9pbnRlci50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9zbmFwL3NpemUudHMiLCIuLi9AaW50ZXJhY3Rqcy9tb2RpZmllcnMvc25hcC9lZGdlcy50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9zcHJpbmcudHMiLCIuLi9AaW50ZXJhY3Rqcy9tb2RpZmllcnMvdHJhbnNmb3JtLnRzIiwiLi4vQGludGVyYWN0anMvbW9kaWZpZXJzL2FsbC50cyIsIi4uL0BpbnRlcmFjdGpzL21vZGlmaWVycy9pbmRleC50cyIsIi4uL0BpbnRlcmFjdGpzL3BvaW50ZXItZXZlbnRzL1BvaW50ZXJFdmVudC50cyIsIi4uL0BpbnRlcmFjdGpzL3BvaW50ZXItZXZlbnRzL2Jhc2UudHMiLCIuLi9AaW50ZXJhY3Rqcy9wb2ludGVyLWV2ZW50cy9ob2xkUmVwZWF0LnRzIiwiLi4vQGludGVyYWN0anMvcG9pbnRlci1ldmVudHMvaW50ZXJhY3RhYmxlVGFyZ2V0cy50cyIsIi4uL0BpbnRlcmFjdGpzL3BvaW50ZXItZXZlbnRzL2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvcmVmbG93L2luZGV4LnRzIiwiLi4vQGludGVyYWN0anMvdXRpbHMvZGlzcGxhY2UudHMiLCIuLi9AaW50ZXJhY3Rqcy91dGlscy9leGNoYW5nZS50cyIsIi4uL0BpbnRlcmFjdGpzL2ludGVyYWN0anMvaW5kZXgudHMiLCJpbmRleC50cyIsIi4uL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2stZmxhdC9fcG9zdGx1ZGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FDRkEsSUFBQSxHQUFBLEdBQUEsdUJBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQTs7QUFDQSxJQUFBLFFBQUEsR0FBQSxzQkFBQSxDQUFBLFlBQUEsQ0FBQSxDQUFBOztBQUNBLElBQUEsTUFBQSxHQUFBLHNCQUFBLENBQUEsVUFBQSxDQUFBLENBQUE7O0FBQ0EsMEVBQUE7O0FBQ0EsSUFBQSxPQUFBLEdBQUEsc0JBQUEsQ0FBQSxXQUFBLENBQUEsQ0FBQTs7QUFDQSxJQUFBLE9BQUEsR0FBQSxzQkFBQSxDQUFBLFdBQUEsQ0FBQSxDQUFBOztBQUNBLElBQUEsRUFBQSxHQUFBLHVCQUFBLENBQUEsT0FBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxtQkFBQSxHQUFBLHNCQUFBLENBQUEsdUJBQUEsQ0FBQSxDQUFBOztBQUNBLHNFQUFBOztBQUNBLElBQUEsVUFBQSxHQUFBLHNCQUFBLENBQUEsY0FBQSxDQUFBLENBQUE7O0FBRUEsSUFB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LENBQUEsRUFBQSxTQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsU0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxTQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsU0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLFVBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsU0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLFVBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxVQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsV0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7O0lBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLFdBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBOztJQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxXQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTs7SUFBQSxv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Q0FDVDs7QUFFQSxXQUFBLENBQUEsU0FBQSxDQUFELENBQUEsU0FBQSxDQUFBLEdBQTRCLFdBQUEsQ0FBQSxTQUFBLENBQTVCLENBQUE7b0JBRWUsV0FBQSxDQUFBLFNBQUE7OztBQ1RmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLmludGVyYWN0ID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztcbnZhciBjcmVhdGVNb2R1bGVGYWN0b3J5ID0gZnVuY3Rpb24gY3JlYXRlTW9kdWxlRmFjdG9yeSh0KXt2YXIgZTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGV8fHQoZT17ZXhwb3J0czp7fSxwYXJlbnQ6cn0sZS5leHBvcnRzKSxlLmV4cG9ydHN9fTtcbiIsImltcG9ydCAqIGFzIGFyciBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9hcnInXG5pbXBvcnQgYnJvd3NlciBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9icm93c2VyJ1xuaW1wb3J0IGNsb25lIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2Nsb25lJ1xuaW1wb3J0IHsgZ2V0RWxlbWVudFJlY3QsIG1hdGNoZXNVcFRvLCBub2RlQ29udGFpbnMsIHRyeVNlbGVjdG9yIH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZG9tVXRpbHMnXG5pbXBvcnQgZXZlbnRzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V2ZW50cydcbmltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaXMnXG5pbXBvcnQgbm9ybWFsaXplTGlzdGVuZXJzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL25vcm1hbGl6ZUxpc3RlbmVycydcbmltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3dpbmRvdydcbmltcG9ydCBFdmVudGFibGUgZnJvbSAnLi9FdmVudGFibGUnXG5pbXBvcnQgeyBBY3Rpb25EZWZhdWx0cywgRGVmYXVsdHMsIE9wdGlvbnMgfSBmcm9tICcuL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IHsgQWN0aW9ucywgaXNOb25OYXRpdmVFdmVudCB9IGZyb20gJy4vc2NvcGUnXG5cbnR5cGUgSWdub3JlVmFsdWUgPSBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50IHwgYm9vbGVhblxuXG4vKiogKi9cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGFibGUgaW1wbGVtZW50cyBQYXJ0aWFsPEV2ZW50YWJsZT4ge1xuICBwcm90ZWN0ZWQgZ2V0IF9kZWZhdWx0cyAoKTogRGVmYXVsdHMge1xuICAgIHJldHVybiB7XG4gICAgICBiYXNlOiB7fSxcbiAgICAgIHBlckFjdGlvbjoge30sXG4gICAgICBhY3Rpb25zOiB7fSBhcyBBY3Rpb25EZWZhdWx0cyxcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBvcHRpb25zITogUmVxdWlyZWQ8T3B0aW9ucz5cbiAgcmVhZG9ubHkgX2FjdGlvbnM6IEFjdGlvbnNcbiAgcmVhZG9ubHkgdGFyZ2V0OiBJbnRlcmFjdC5UYXJnZXRcbiAgcmVhZG9ubHkgZXZlbnRzID0gbmV3IEV2ZW50YWJsZSgpXG4gIHJlYWRvbmx5IF9jb250ZXh0OiBJbnRlcmFjdC5Db250ZXh0XG4gIHJlYWRvbmx5IF93aW46IFdpbmRvd1xuICByZWFkb25seSBfZG9jOiBEb2N1bWVudFxuXG4gIC8qKiAqL1xuICBjb25zdHJ1Y3RvciAodGFyZ2V0OiBJbnRlcmFjdC5UYXJnZXQsIG9wdGlvbnM6IGFueSwgZGVmYXVsdENvbnRleHQ6IERvY3VtZW50IHwgSW50ZXJhY3QuRWxlbWVudCkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSBvcHRpb25zLmFjdGlvbnNcbiAgICB0aGlzLnRhcmdldCAgID0gdGFyZ2V0XG4gICAgdGhpcy5fY29udGV4dCA9IG9wdGlvbnMuY29udGV4dCB8fCBkZWZhdWx0Q29udGV4dFxuICAgIHRoaXMuX3dpbiAgICAgPSBnZXRXaW5kb3codHJ5U2VsZWN0b3IodGFyZ2V0KSA/IHRoaXMuX2NvbnRleHQgOiB0YXJnZXQpXG4gICAgdGhpcy5fZG9jICAgICA9IHRoaXMuX3dpbi5kb2N1bWVudFxuXG4gICAgdGhpcy5zZXQob3B0aW9ucylcbiAgfVxuXG4gIHNldE9uRXZlbnRzIChhY3Rpb25OYW1lOiBJbnRlcmFjdC5BY3Rpb25OYW1lLCBwaGFzZXM6IE5vbk51bGxhYmxlPGFueT4pIHtcbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25zdGFydCkpIHsgdGhpcy5vbihgJHthY3Rpb25OYW1lfXN0YXJ0YCwgcGhhc2VzLm9uc3RhcnQpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25tb3ZlKSkgeyB0aGlzLm9uKGAke2FjdGlvbk5hbWV9bW92ZWAsIHBoYXNlcy5vbm1vdmUpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25lbmQpKSB7IHRoaXMub24oYCR7YWN0aW9uTmFtZX1lbmRgLCBwaGFzZXMub25lbmQpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25pbmVydGlhc3RhcnQpKSB7IHRoaXMub24oYCR7YWN0aW9uTmFtZX1pbmVydGlhc3RhcnRgLCBwaGFzZXMub25pbmVydGlhc3RhcnQpIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1cGRhdGVQZXJBY3Rpb25MaXN0ZW5lcnMgKGFjdGlvbk5hbWU6IEludGVyYWN0LkFjdGlvbk5hbWUsIHByZXY6IEludGVyYWN0Lkxpc3RlbmVycywgY3VyOiBJbnRlcmFjdC5MaXN0ZW5lcnMpIHtcbiAgICBpZiAoaXMuYXJyYXkocHJldikgfHwgaXMub2JqZWN0KHByZXYpKSB7XG4gICAgICB0aGlzLm9mZihhY3Rpb25OYW1lLCBwcmV2KVxuICAgIH1cblxuICAgIGlmIChpcy5hcnJheShjdXIpIHx8IGlzLm9iamVjdChjdXIpKSB7XG4gICAgICB0aGlzLm9uKGFjdGlvbk5hbWUsIGN1cilcbiAgICB9XG4gIH1cblxuICBzZXRQZXJBY3Rpb24gKGFjdGlvbk5hbWU6IEludGVyYWN0LkFjdGlvbk5hbWUsIG9wdGlvbnM6IEludGVyYWN0Lk9yQm9vbGVhbjxPcHRpb25zPikge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5fZGVmYXVsdHNcblxuICAgIC8vIGZvciBhbGwgdGhlIGRlZmF1bHQgcGVyLWFjdGlvbiBvcHRpb25zXG4gICAgZm9yIChjb25zdCBvcHRpb25OYW1lXyBpbiBvcHRpb25zKSB7XG4gICAgICBjb25zdCBvcHRpb25OYW1lID0gb3B0aW9uTmFtZV8gYXMga2V5b2YgSW50ZXJhY3QuUGVyQWN0aW9uRGVmYXVsdHNcbiAgICAgIGNvbnN0IGFjdGlvbk9wdGlvbnMgPSB0aGlzLm9wdGlvbnNbYWN0aW9uTmFtZV1cbiAgICAgIGNvbnN0IG9wdGlvblZhbHVlOiBhbnkgPSBvcHRpb25zW29wdGlvbk5hbWVdXG5cbiAgICAgIC8vIHJlbW92ZSBvbGQgZXZlbnQgbGlzdGVuZXJzIGFuZCBhZGQgbmV3IG9uZXNcbiAgICAgIGlmIChvcHRpb25OYW1lID09PSAnbGlzdGVuZXJzJykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBlckFjdGlvbkxpc3RlbmVycyhhY3Rpb25OYW1lLCBhY3Rpb25PcHRpb25zLmxpc3RlbmVycywgb3B0aW9uVmFsdWUgYXMgSW50ZXJhY3QuTGlzdGVuZXJzKVxuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgb3B0aW9uIHZhbHVlIGlzIGFuIGFycmF5XG4gICAgICBpZiAoaXMuYXJyYXk8YW55PihvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgKGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gYXMgYW55KSA9IGFyci5mcm9tKG9wdGlvblZhbHVlKVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIG9wdGlvbiB2YWx1ZSBpcyBhbiBvYmplY3RcbiAgICAgIGVsc2UgaWYgKGlzLnBsYWluT2JqZWN0KG9wdGlvblZhbHVlKSkge1xuICAgICAgICAvLyBjb3B5IHRoZSBvYmplY3RcbiAgICAgICAgKGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gYXMgYW55KSA9IGV4dGVuZChcbiAgICAgICAgICBhY3Rpb25PcHRpb25zW29wdGlvbk5hbWVdIHx8IHt9IGFzIGFueSxcbiAgICAgICAgICBjbG9uZShvcHRpb25WYWx1ZSkpXG5cbiAgICAgICAgLy8gc2V0IGFuYWJsZWQgZmllbGQgdG8gdHJ1ZSBpZiBpdCBleGlzdHMgaW4gdGhlIGRlZmF1bHRzXG4gICAgICAgIGlmIChpcy5vYmplY3QoZGVmYXVsdHMucGVyQWN0aW9uW29wdGlvbk5hbWVdKSAmJiAnZW5hYmxlZCcgaW4gKGRlZmF1bHRzLnBlckFjdGlvbltvcHRpb25OYW1lXSBhcyBhbnkpKSB7XG4gICAgICAgICAgKGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gYXMgYW55KS5lbmFibGVkID0gb3B0aW9uVmFsdWUuZW5hYmxlZCAhPT0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIG9wdGlvbiB2YWx1ZSBpcyBhIGJvb2xlYW4gYW5kIHRoZSBkZWZhdWx0IGlzIGFuIG9iamVjdFxuICAgICAgZWxzZSBpZiAoaXMuYm9vbChvcHRpb25WYWx1ZSkgJiYgaXMub2JqZWN0KGRlZmF1bHRzLnBlckFjdGlvbltvcHRpb25OYW1lXSkpIHtcbiAgICAgICAgKGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gYXMgYW55KS5lbmFibGVkID0gb3B0aW9uVmFsdWVcbiAgICAgIH1cbiAgICAgIC8vIGlmIGl0J3MgYW55dGhpbmcgZWxzZSwgZG8gYSBwbGFpbiBhc3NpZ25tZW50XG4gICAgICBlbHNlIHtcbiAgICAgICAgKGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gYXMgYW55KSA9IG9wdGlvblZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIGdldCBhbiBJbnRlcmFjdGFibGVzIGJvdW5kaW5nIHJlY3QuIENhbiBiZVxuICAgKiBvdmVycmlkZGVuIHVzaW5nIHtAbGluayBJbnRlcmFjdGFibGUucmVjdENoZWNrZXJ9LlxuICAgKlxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IFtlbGVtZW50XSBUaGUgZWxlbWVudCB0byBtZWFzdXJlLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBvYmplY3QncyBib3VuZGluZyByZWN0YW5nbGUuXG4gICAqL1xuICBnZXRSZWN0IChlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50KSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQgfHwgKGlzLmVsZW1lbnQodGhpcy50YXJnZXQpXG4gICAgICA/IHRoaXMudGFyZ2V0XG4gICAgICA6IG51bGwpXG5cbiAgICBpZiAoaXMuc3RyaW5nKHRoaXMudGFyZ2V0KSkge1xuICAgICAgZWxlbWVudCA9IGVsZW1lbnQgfHwgdGhpcy5fY29udGV4dC5xdWVyeVNlbGVjdG9yKHRoaXMudGFyZ2V0KVxuICAgIH1cblxuICAgIHJldHVybiBnZXRFbGVtZW50UmVjdChlbGVtZW50KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgb3Igc2V0cyB0aGUgZnVuY3Rpb24gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGludGVyYWN0YWJsZSdzXG4gICAqIGVsZW1lbnQncyByZWN0YW5nbGVcbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2NoZWNrZXJdIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB0aGlzIEludGVyYWN0YWJsZSdzXG4gICAqIGJvdW5kaW5nIHJlY3RhbmdsZS4gU2VlIHtAbGluayBJbnRlcmFjdGFibGUuZ2V0UmVjdH1cbiAgICogQHJldHVybiB7ZnVuY3Rpb24gfCBvYmplY3R9IFRoZSBjaGVja2VyIGZ1bmN0aW9uIG9yIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICByZWN0Q2hlY2tlciAoY2hlY2tlcjogKGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQpID0+IGFueSkge1xuICAgIGlmIChpcy5mdW5jKGNoZWNrZXIpKSB7XG4gICAgICB0aGlzLmdldFJlY3QgPSBjaGVja2VyXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKGNoZWNrZXIgPT09IG51bGwpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmdldFJlY3RcblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRSZWN0XG4gIH1cblxuICBfYmFja0NvbXBhdE9wdGlvbiAob3B0aW9uTmFtZToga2V5b2YgSW50ZXJhY3QuT3B0aW9ucywgbmV3VmFsdWU6IGFueSkge1xuICAgIGlmICh0cnlTZWxlY3RvcihuZXdWYWx1ZSkgfHwgaXMub2JqZWN0KG5ld1ZhbHVlKSkge1xuICAgICAgKHRoaXMub3B0aW9uc1tvcHRpb25OYW1lXSBhcyBhbnkpID0gbmV3VmFsdWVcblxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gaW4gdGhpcy5fYWN0aW9ucy5tYXApIHtcbiAgICAgICAgKHRoaXMub3B0aW9uc1thY3Rpb25dW29wdGlvbk5hbWVdIGFzIGFueSkgPSBuZXdWYWx1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbb3B0aW9uTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIG9yaWdpbiBvZiB0aGUgSW50ZXJhY3RhYmxlJ3MgZWxlbWVudC4gIFRoZSB4IGFuZCB5XG4gICAqIG9mIHRoZSBvcmlnaW4gd2lsbCBiZSBzdWJ0cmFjdGVkIGZyb20gYWN0aW9uIGV2ZW50IGNvb3JkaW5hdGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0VsZW1lbnQgfCBvYmplY3QgfCBzdHJpbmd9IFtvcmlnaW5dIEFuIEhUTUwgb3IgU1ZHIEVsZW1lbnQgd2hvc2VcbiAgICogcmVjdCB3aWxsIGJlIHVzZWQsIGFuIG9iamVjdCBlZy4geyB4OiAwLCB5OiAwIH0gb3Igc3RyaW5nICdwYXJlbnQnLCAnc2VsZidcbiAgICogb3IgYW55IENTUyBzZWxlY3RvclxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBjdXJyZW50IG9yaWdpbiBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgb3JpZ2luIChuZXdWYWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tDb21wYXRPcHRpb24oJ29yaWdpbicsIG5ld1ZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgb3Igc2V0cyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0eXBlcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGVcbiAgICogbW92ZW1lbnQgb2YgdGhlIHBvaW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbmV3VmFsdWVdIFVzZSAnY2xpZW50JyBpZiB5b3Ugd2lsbCBiZSBzY3JvbGxpbmcgd2hpbGVcbiAgICogaW50ZXJhY3Rpbmc7IFVzZSAncGFnZScgaWYgeW91IHdhbnQgYXV0b1Njcm9sbCB0byB3b3JrXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IG9iamVjdH0gVGhlIGN1cnJlbnQgZGVsdGFTb3VyY2Ugb3IgdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIGRlbHRhU291cmNlIChuZXdWYWx1ZT86IHN0cmluZykge1xuICAgIGlmIChuZXdWYWx1ZSA9PT0gJ3BhZ2UnIHx8IG5ld1ZhbHVlID09PSAnY2xpZW50Jykge1xuICAgICAgdGhpcy5vcHRpb25zLmRlbHRhU291cmNlID0gbmV3VmFsdWVcblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRlbHRhU291cmNlXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VsZWN0b3IgY29udGV4dCBOb2RlIG9mIHRoZSBJbnRlcmFjdGFibGUuIFRoZSBkZWZhdWx0IGlzXG4gICAqIGB3aW5kb3cuZG9jdW1lbnRgLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGUgY29udGV4dCBOb2RlIG9mIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBjb250ZXh0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGV4dFxuICB9XG5cbiAgaW5Db250ZXh0IChlbGVtZW50OiBEb2N1bWVudCB8IE5vZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuX2NvbnRleHQgPT09IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fFxuICAgICAgICAgICAgbm9kZUNvbnRhaW5zKHRoaXMuX2NvbnRleHQsIGVsZW1lbnQpKVxuICB9XG5cbiAgdGVzdElnbm9yZUFsbG93IChcbiAgICB0aGlzOiBJbnRlcmFjdGFibGUsXG4gICAgb3B0aW9uczogeyBpZ25vcmVGcm9tPzogSWdub3JlVmFsdWUsIGFsbG93RnJvbT86IElnbm9yZVZhbHVlIH0sXG4gICAgdGFyZ2V0Tm9kZTogTm9kZSxcbiAgICBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXQsXG4gICkge1xuICAgIHJldHVybiAoIXRoaXMudGVzdElnbm9yZShvcHRpb25zLmlnbm9yZUZyb20sIHRhcmdldE5vZGUsIGV2ZW50VGFyZ2V0KSAmJlxuICAgICAgICAgICAgdGhpcy50ZXN0QWxsb3cob3B0aW9ucy5hbGxvd0Zyb20sIHRhcmdldE5vZGUsIGV2ZW50VGFyZ2V0KSlcbiAgfVxuXG4gIHRlc3RBbGxvdyAoXG4gICAgdGhpczogSW50ZXJhY3RhYmxlLFxuICAgIGFsbG93RnJvbTogSWdub3JlVmFsdWUsXG4gICAgdGFyZ2V0Tm9kZTogTm9kZSxcbiAgICBlbGVtZW50OiBJbnRlcmFjdC5FdmVudFRhcmdldCxcbiAgKSB7XG4gICAgaWYgKCFhbGxvd0Zyb20pIHsgcmV0dXJuIHRydWUgfVxuXG4gICAgaWYgKCFpcy5lbGVtZW50KGVsZW1lbnQpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAoaXMuc3RyaW5nKGFsbG93RnJvbSkpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzVXBUbyhlbGVtZW50LCBhbGxvd0Zyb20sIHRhcmdldE5vZGUpXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzLmVsZW1lbnQoYWxsb3dGcm9tKSkge1xuICAgICAgcmV0dXJuIG5vZGVDb250YWlucyhhbGxvd0Zyb20sIGVsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB0ZXN0SWdub3JlIChcbiAgICB0aGlzOiBJbnRlcmFjdGFibGUsXG4gICAgaWdub3JlRnJvbTogSWdub3JlVmFsdWUsXG4gICAgdGFyZ2V0Tm9kZTogTm9kZSxcbiAgICBlbGVtZW50OiBJbnRlcmFjdC5FdmVudFRhcmdldCxcbiAgKSB7XG4gICAgaWYgKCFpZ25vcmVGcm9tIHx8ICFpcy5lbGVtZW50KGVsZW1lbnQpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAoaXMuc3RyaW5nKGlnbm9yZUZyb20pKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1VwVG8oZWxlbWVudCwgaWdub3JlRnJvbSwgdGFyZ2V0Tm9kZSlcbiAgICB9XG4gICAgZWxzZSBpZiAoaXMuZWxlbWVudChpZ25vcmVGcm9tKSkge1xuICAgICAgcmV0dXJuIG5vZGVDb250YWlucyhpZ25vcmVGcm9tLCBlbGVtZW50KVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIEludGVyYWN0RXZlbnQgdHlwZSBib3VuZCBnbG9iYWxseVxuICAgKiBhbmQgZGlyZWN0bHkgdG8gdGhpcyBJbnRlcmFjdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtJbnRlcmFjdEV2ZW50fSBpRXZlbnQgVGhlIEludGVyYWN0RXZlbnQgb2JqZWN0IHRvIGJlIGZpcmVkIG9uIHRoaXNcbiAgICogSW50ZXJhY3RhYmxlXG4gICAqIEByZXR1cm4ge0ludGVyYWN0YWJsZX0gdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIGZpcmUgKGlFdmVudDogb2JqZWN0KSB7XG4gICAgdGhpcy5ldmVudHMuZmlyZShpRXZlbnQpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgX29uT2ZmIChtZXRob2Q6ICdvbicgfCAnb2ZmJywgdHlwZUFyZzogSW50ZXJhY3QuRXZlbnRUeXBlcywgbGlzdGVuZXJBcmc/OiBJbnRlcmFjdC5MaXN0ZW5lcnNBcmcgfCBudWxsLCBvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKGlzLm9iamVjdCh0eXBlQXJnKSAmJiAhaXMuYXJyYXkodHlwZUFyZykpIHtcbiAgICAgIG9wdGlvbnMgPSBsaXN0ZW5lckFyZ1xuICAgICAgbGlzdGVuZXJBcmcgPSBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgYWRkUmVtb3ZlID0gbWV0aG9kID09PSAnb24nID8gJ2FkZCcgOiAncmVtb3ZlJ1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IG5vcm1hbGl6ZUxpc3RlbmVycyh0eXBlQXJnLCBsaXN0ZW5lckFyZylcblxuICAgIGZvciAobGV0IHR5cGUgaW4gbGlzdGVuZXJzKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3doZWVsJykgeyB0eXBlID0gYnJvd3Nlci53aGVlbEV2ZW50IH1cblxuICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgLy8gaWYgaXQgaXMgYW4gYWN0aW9uIGV2ZW50IHR5cGVcbiAgICAgICAgaWYgKGlzTm9uTmF0aXZlRXZlbnQodHlwZSwgdGhpcy5fYWN0aW9ucykpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50c1ttZXRob2RdKHR5cGUsIGxpc3RlbmVyKVxuICAgICAgICB9XG4gICAgICAgIC8vIGRlbGVnYXRlZCBldmVudFxuICAgICAgICBlbHNlIGlmIChpcy5zdHJpbmcodGhpcy50YXJnZXQpKSB7XG4gICAgICAgICAgZXZlbnRzW2Ake2FkZFJlbW92ZX1EZWxlZ2F0ZWAgYXMgJ2FkZERlbGVnYXRlJyB8ICdyZW1vdmVEZWxlZ2F0ZSddKHRoaXMudGFyZ2V0LCB0aGlzLl9jb250ZXh0LCB0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgbGlzdGVuZXIgZnJvbSB0aGlzIEludGVyYWN0YWJsZSdzIGVsZW1lbnRcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgKGV2ZW50c1thZGRSZW1vdmVdIGFzIHR5cGVvZiBldmVudHMucmVtb3ZlKSh0aGlzLnRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgbGlzdGVuZXIgZm9yIGFuIEludGVyYWN0RXZlbnQsIHBvaW50ZXJFdmVudCBvciBET00gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgYXJyYXkgfCBvYmplY3R9IHR5cGVzIFRoZSB0eXBlcyBvZiBldmVudHMgdG8gbGlzdGVuXG4gICAqIGZvclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uIHwgYXJyYXkgfCBvYmplY3R9IFtsaXN0ZW5lcl0gVGhlIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uKHMpXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgYm9vbGVhbn0gW29wdGlvbnNdIG9wdGlvbnMgb2JqZWN0IG9yIHVzZUNhcHR1cmUgZmxhZyBmb3JcbiAgICogYWRkRXZlbnRMaXN0ZW5lclxuICAgKiBAcmV0dXJuIHtJbnRlcmFjdGFibGV9IFRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBvbiAodHlwZXM6IEludGVyYWN0LkV2ZW50VHlwZXMsIGxpc3RlbmVyPzogSW50ZXJhY3QuTGlzdGVuZXJzQXJnLCBvcHRpb25zPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX29uT2ZmKCdvbicsIHR5cGVzLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIEludGVyYWN0RXZlbnQsIHBvaW50ZXJFdmVudCBvciBET00gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgYXJyYXkgfCBvYmplY3R9IHR5cGVzIFRoZSB0eXBlcyBvZiBldmVudHMgdGhhdCB3ZXJlXG4gICAqIGxpc3RlbmVkIGZvclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uIHwgYXJyYXkgfCBvYmplY3R9IFtsaXN0ZW5lcl0gVGhlIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uKHMpXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgYm9vbGVhbn0gW29wdGlvbnNdIG9wdGlvbnMgb2JqZWN0IG9yIHVzZUNhcHR1cmUgZmxhZyBmb3JcbiAgICogcmVtb3ZlRXZlbnRMaXN0ZW5lclxuICAgKiBAcmV0dXJuIHtJbnRlcmFjdGFibGV9IFRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBvZmYgKHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IEludGVyYWN0LkV2ZW50VHlwZXMsIGxpc3RlbmVyPzogSW50ZXJhY3QuTGlzdGVuZXJzQXJnLCBvcHRpb25zPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX29uT2ZmKCdvZmYnLCB0eXBlcywgbGlzdGVuZXIsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIG9wdGlvbnMgb2YgdGhpcyBJbnRlcmFjdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgVGhlIG5ldyBzZXR0aW5ncyB0byBhcHBseVxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBzZXQgKG9wdGlvbnM6IEludGVyYWN0Lk9wdGlvbnNBcmcpIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuX2RlZmF1bHRzXG5cbiAgICBpZiAoIWlzLm9iamVjdChvcHRpb25zKSkge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuXG4gICAgKHRoaXMub3B0aW9ucyBhcyBSZXF1aXJlZDxPcHRpb25zPikgPSBjbG9uZShkZWZhdWx0cy5iYXNlKSBhcyBSZXF1aXJlZDxPcHRpb25zPlxuXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lXyBpbiB0aGlzLl9hY3Rpb25zLm1ldGhvZERpY3QpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBhY3Rpb25OYW1lXyBhcyBJbnRlcmFjdC5BY3Rpb25OYW1lXG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gdGhpcy5fYWN0aW9ucy5tZXRob2REaWN0W2FjdGlvbk5hbWVdXG5cbiAgICAgIHRoaXMub3B0aW9uc1thY3Rpb25OYW1lXSA9IHt9XG4gICAgICB0aGlzLnNldFBlckFjdGlvbihhY3Rpb25OYW1lLCBleHRlbmQoZXh0ZW5kKHt9LCBkZWZhdWx0cy5wZXJBY3Rpb24pLCBkZWZhdWx0cy5hY3Rpb25zW2FjdGlvbk5hbWVdKSlcblxuICAgICAgdGhpc1ttZXRob2ROYW1lXShvcHRpb25zW2FjdGlvbk5hbWVdKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2V0dGluZyBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAoaXMuZnVuYyh0aGlzW3NldHRpbmddKSkge1xuICAgICAgICB0aGlzW3NldHRpbmddKG9wdGlvbnNbc2V0dGluZ10pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhpcyBpbnRlcmFjdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBpbnRlcmFjdGFibGVzIGFuZCByZW1vdmUgaXQnc1xuICAgKiBhY3Rpb24gY2FwYWJpbGl0aWVzIGFuZCBldmVudCBsaXN0ZW5lcnNcbiAgICpcbiAgICogQHJldHVybiB7aW50ZXJhY3R9XG4gICAqL1xuICB1bnNldCAoKSB7XG4gICAgZXZlbnRzLnJlbW92ZSh0aGlzLnRhcmdldCBhcyBOb2RlLCAnYWxsJylcblxuICAgIGlmIChpcy5zdHJpbmcodGhpcy50YXJnZXQpKSB7XG4gICAgICAvLyByZW1vdmUgZGVsZWdhdGVkIGV2ZW50c1xuICAgICAgZm9yIChjb25zdCB0eXBlIGluIGV2ZW50cy5kZWxlZ2F0ZWRFdmVudHMpIHtcbiAgICAgICAgY29uc3QgZGVsZWdhdGVkID0gZXZlbnRzLmRlbGVnYXRlZEV2ZW50c1t0eXBlXVxuXG4gICAgICAgIGlmIChkZWxlZ2F0ZWQuc2VsZWN0b3JzWzBdID09PSB0aGlzLnRhcmdldCAmJlxuICAgICAgICAgICAgZGVsZWdhdGVkLmNvbnRleHRzWzBdID09PSB0aGlzLl9jb250ZXh0KSB7XG4gICAgICAgICAgZGVsZWdhdGVkLnNlbGVjdG9ycy5zcGxpY2UoMCwgMSlcbiAgICAgICAgICBkZWxlZ2F0ZWQuY29udGV4dHMuc3BsaWNlKDAsIDEpXG4gICAgICAgICAgZGVsZWdhdGVkLmxpc3RlbmVycy5zcGxpY2UoMCwgMSlcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50cy5yZW1vdmUodGhpcy5fY29udGV4dCwgdHlwZSwgZXZlbnRzLmRlbGVnYXRlTGlzdGVuZXIpXG4gICAgICAgIGV2ZW50cy5yZW1vdmUodGhpcy5fY29udGV4dCwgdHlwZSwgZXZlbnRzLmRlbGVnYXRlVXNlQ2FwdHVyZSwgdHJ1ZSlcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBldmVudHMucmVtb3ZlKHRoaXMudGFyZ2V0IGFzIE5vZGUsICdhbGwnKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGFibGVcbiIsImltcG9ydCBkb21PYmplY3RzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbU9iamVjdHMnXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pbmRleCdcbmltcG9ydCBFdmVudGFibGUgZnJvbSAnLi9FdmVudGFibGUnXG5pbXBvcnQgSW50ZXJhY3RFdmVudCwgeyBQaGFzZU1hcCB9IGZyb20gJy4vSW50ZXJhY3RFdmVudCdcbmltcG9ydCBJbnRlcmFjdFN0YXRpYyBmcm9tICcuL0ludGVyYWN0U3RhdGljJ1xuaW1wb3J0IEludGVyYWN0YWJsZUJhc2UgZnJvbSAnLi9JbnRlcmFjdGFibGUnXG5pbXBvcnQgSW50ZXJhY3RhYmxlU2V0IGZyb20gJy4vSW50ZXJhY3RhYmxlU2V0J1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4vZGVmYXVsdE9wdGlvbnMnXG5pbXBvcnQgaW50ZXJhY3Rpb25zIGZyb20gJy4vaW50ZXJhY3Rpb25zJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hbEFyZ3Mge1xuICAnc2NvcGU6YWRkLWRvY3VtZW50JzogRG9jU2lnbmFsQXJnXG4gICdzY29wZTpyZW1vdmUtZG9jdW1lbnQnOiBEb2NTaWduYWxBcmdcbiAgJ2ludGVyYWN0YWJsZTp1bnNldCc6IHsgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGVCYXNlIH1cbiAgJ2ludGVyYWN0YWJsZTpzZXQnOiB7IGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlQmFzZSwgb3B0aW9uczogSW50ZXJhY3QuT3B0aW9ucyB9XG4gICdpbnRlcmFjdGlvbnM6ZGVzdHJveSc6IHsgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uIH1cbn1cblxuZXhwb3J0IHR5cGUgTGlzdGVuZXJOYW1lID0ga2V5b2YgU2lnbmFsQXJnc1xuXG5leHBvcnQgdHlwZSBMaXN0ZW5lck1hcCA9IHtcbiAgW1AgaW4gTGlzdGVuZXJOYW1lXT86IChhcmc6IFNpZ25hbEFyZ3NbUF0sIHNjb3BlOiBTY29wZSwgc2lnbmFsTmFtZTogUCkgPT4gdm9pZCB8IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIERvY1NpZ25hbEFyZyB7XG4gIGRvYzogRG9jdW1lbnRcbiAgd2luZG93OiBXaW5kb3dcbiAgc2NvcGU6IFNjb3BlXG4gIG9wdGlvbnM/OiB7IFtpbmRleDogc3RyaW5nXTogYW55IH1cbn1cblxuY29uc3Qge1xuICB3aW4sXG4gIGJyb3dzZXIsXG4gIHJhZixcbiAgZXZlbnRzLFxufSA9IHV0aWxzXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1hcCB7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tZW1wdHktaW50ZXJmYWNlXG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk5hbWUgPSBrZXlvZiBBY3Rpb25NYXBcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25zIHtcbiAgbWFwOiBBY3Rpb25NYXBcbiAgcGhhc2VzOiBQaGFzZU1hcFxuICBtZXRob2REaWN0OiB7IFtQIGluIEFjdGlvbk5hbWVdPzogc3RyaW5nIH1cbiAgcGhhc2VsZXNzVHlwZXM6IHsgW3R5cGU6IHN0cmluZ106IHRydWUgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBpZD86IHN0cmluZ1xuICBsaXN0ZW5lcnM/OiBMaXN0ZW5lck1hcFxuICBiZWZvcmU/OiBzdHJpbmdbXVxuICBpbnN0YWxsPyAoc2NvcGU6IFNjb3BlLCBvcHRpb25zPzogYW55KTogdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY29wZSB7XG4gIGlkID0gYF9faW50ZXJhY3Rfc2NvcGVfJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApfWBcbiAgaXNJbml0aWFsaXplZCA9IGZhbHNlXG4gIGxpc3RlbmVyTWFwczogQXJyYXk8e1xuICAgIG1hcDogTGlzdGVuZXJNYXBcbiAgICBpZDogc3RyaW5nXG4gIH0+ID0gW11cblxuICBicm93c2VyID0gYnJvd3NlclxuICBldmVudHMgPSBldmVudHNcbiAgdXRpbHMgPSB1dGlsc1xuICBkZWZhdWx0cyA9IHV0aWxzLmNsb25lKGRlZmF1bHRzKSBhcyB0eXBlb2YgZGVmYXVsdHNcbiAgRXZlbnRhYmxlID0gRXZlbnRhYmxlXG4gIGFjdGlvbnM6IEFjdGlvbnMgPSB7XG4gICAgbWFwOiB7fSxcbiAgICBwaGFzZXM6IHtcbiAgICAgIHN0YXJ0OiB0cnVlLFxuICAgICAgbW92ZTogdHJ1ZSxcbiAgICAgIGVuZDogdHJ1ZSxcbiAgICB9LFxuICAgIG1ldGhvZERpY3Q6IHt9LFxuICAgIHBoYXNlbGVzc1R5cGVzOiB7fSxcbiAgfVxuXG4gIGludGVyYWN0U3RhdGljID0gbmV3IEludGVyYWN0U3RhdGljKHRoaXMpXG4gIEludGVyYWN0RXZlbnQgPSBJbnRlcmFjdEV2ZW50XG4gIEludGVyYWN0YWJsZSE6IHR5cGVvZiBJbnRlcmFjdGFibGVCYXNlXG4gIGludGVyYWN0YWJsZXMgPSBuZXcgSW50ZXJhY3RhYmxlU2V0KHRoaXMpXG5cbiAgLy8gbWFpbiB3aW5kb3dcbiAgX3dpbiE6IFdpbmRvd1xuXG4gIC8vIG1haW4gZG9jdW1lbnRcbiAgZG9jdW1lbnQhOiBEb2N1bWVudFxuXG4gIC8vIG1haW4gd2luZG93XG4gIHdpbmRvdyE6IFdpbmRvd1xuXG4gIC8vIGFsbCBkb2N1bWVudHMgYmVpbmcgbGlzdGVuZWQgdG9cbiAgZG9jdW1lbnRzOiBBcnJheTx7IGRvYzogRG9jdW1lbnQsIG9wdGlvbnM6IGFueSB9PiA9IFtdXG5cbiAgX3BsdWdpbnM6IHtcbiAgICBsaXN0OiBQbHVnaW5bXVxuICAgIG1hcDogeyBbaWQ6IHN0cmluZ106IFBsdWdpbiB9XG4gIH0gPSB7XG4gICAgbGlzdDogW10sXG4gICAgbWFwOiB7fSxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBjb25zdCBzY29wZSA9IHRoaXNcblxuICAgIHRoaXMuSW50ZXJhY3RhYmxlID0gY2xhc3MgZXh0ZW5kcyBJbnRlcmFjdGFibGVCYXNlIHtcbiAgICAgIGdldCBfZGVmYXVsdHMgKCkgeyByZXR1cm4gc2NvcGUuZGVmYXVsdHMgfVxuXG4gICAgICBzZXQgKG9wdGlvbnM6IEludGVyYWN0Lk9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIuc2V0KG9wdGlvbnMpXG5cbiAgICAgICAgc2NvcGUuZmlyZSgnaW50ZXJhY3RhYmxlOnNldCcsIHtcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGludGVyYWN0YWJsZTogdGhpcyxcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgfVxuXG4gICAgICB1bnNldCAoKSB7XG4gICAgICAgIHN1cGVyLnVuc2V0KClcbiAgICAgICAgc2NvcGUuaW50ZXJhY3RhYmxlcy5saXN0LnNwbGljZShzY29wZS5pbnRlcmFjdGFibGVzLmxpc3QuaW5kZXhPZih0aGlzKSwgMSlcblxuICAgICAgICBzY29wZS5maXJlKCdpbnRlcmFjdGFibGU6dW5zZXQnLCB7IGludGVyYWN0YWJsZTogdGhpcyB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZExpc3RlbmVycyAobWFwOiBMaXN0ZW5lck1hcCwgaWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxpc3RlbmVyTWFwcy5wdXNoKHsgaWQsIG1hcCB9KVxuICB9XG5cbiAgZmlyZTxUIGV4dGVuZHMgTGlzdGVuZXJOYW1lPiAobmFtZTogVCwgYXJnOiBTaWduYWxBcmdzW1RdKTogdm9pZCB8IGZhbHNlIHtcbiAgICBmb3IgKGNvbnN0IHsgbWFwOiB7IFtuYW1lXTogbGlzdGVuZXIgfSB9IG9mIHRoaXMubGlzdGVuZXJNYXBzKSB7XG4gICAgICBpZiAoISFsaXN0ZW5lciAmJiBsaXN0ZW5lcihhcmcgYXMgYW55LCB0aGlzLCBuYW1lIGFzIG5ldmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25XaW5kb3dVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB0aGlzLnJlbW92ZURvY3VtZW50KGV2ZW50LnRhcmdldCBhcyBEb2N1bWVudClcblxuICBpbml0ICh3aW5kb3c6IFdpbmRvdykge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRcbiAgICAgID8gdGhpc1xuICAgICAgOiBpbml0U2NvcGUodGhpcywgd2luZG93KVxuICB9XG5cbiAgcGx1Z2luSXNJbnN0YWxsZWQgKHBsdWdpbjogUGx1Z2luKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsdWdpbnMubWFwW3BsdWdpbi5pZF0gfHwgdGhpcy5fcGx1Z2lucy5saXN0LmluZGV4T2YocGx1Z2luKSAhPT0gLTFcbiAgfVxuXG4gIHVzZVBsdWdpbiAocGx1Z2luOiBQbHVnaW4sIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKHRoaXMucGx1Z2luSXNJbnN0YWxsZWQocGx1Z2luKSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLmlkKSB7IHRoaXMuX3BsdWdpbnMubWFwW3BsdWdpbi5pZF0gPSBwbHVnaW4gfVxuICAgIHRoaXMuX3BsdWdpbnMubGlzdC5wdXNoKHBsdWdpbilcblxuICAgIGlmIChwbHVnaW4uaW5zdGFsbCkge1xuICAgICAgcGx1Z2luLmluc3RhbGwodGhpcywgb3B0aW9ucylcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLmxpc3RlbmVycyAmJiBwbHVnaW4uYmVmb3JlKSB7XG4gICAgICBsZXQgaW5kZXggPSAwXG4gICAgICBjb25zdCBsZW4gPSB0aGlzLmxpc3RlbmVyTWFwcy5sZW5ndGhcbiAgICAgIGNvbnN0IGJlZm9yZSA9IHBsdWdpbi5iZWZvcmUucmVkdWNlKChhY2MsIGlkKSA9PiB7XG4gICAgICAgIGFjY1tpZF0gPSB0cnVlXG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIHt9KVxuXG4gICAgICBmb3IgKDsgaW5kZXggPCBsZW47IGluZGV4KyspIHtcbiAgICAgICAgY29uc3Qgb3RoZXJJZCA9IHRoaXMubGlzdGVuZXJNYXBzW2luZGV4XS5pZFxuXG4gICAgICAgIGlmIChiZWZvcmVbb3RoZXJJZF0pIHsgYnJlYWsgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RlbmVyTWFwcy5zcGxpY2UoaW5kZXgsIDAsIHsgaWQ6IHBsdWdpbi5pZCwgbWFwOiBwbHVnaW4ubGlzdGVuZXJzIH0pXG4gICAgfVxuICAgIGVsc2UgaWYgKHBsdWdpbi5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJNYXBzLnB1c2goeyBpZDogcGx1Z2luLmlkLCBtYXA6IHBsdWdpbi5saXN0ZW5lcnMgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgYWRkRG9jdW1lbnQgKGRvYzogRG9jdW1lbnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHwgZmFsc2Uge1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgZG9jdW1lbnQgaXMgYWxyZWFkeSBrbm93blxuICAgIGlmICh0aGlzLmdldERvY0luZGV4KGRvYykgIT09IC0xKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBjb25zdCB3aW5kb3cgPSB3aW4uZ2V0V2luZG93KGRvYylcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zID8gdXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zKSA6IHt9XG5cbiAgICB0aGlzLmRvY3VtZW50cy5wdXNoKHsgZG9jLCBvcHRpb25zIH0pXG4gICAgZXZlbnRzLmRvY3VtZW50cy5wdXNoKGRvYylcblxuICAgIC8vIGRvbid0IGFkZCBhbiB1bmxvYWQgZXZlbnQgZm9yIHRoZSBtYWluIGRvY3VtZW50XG4gICAgLy8gc28gdGhhdCB0aGUgcGFnZSBtYXkgYmUgY2FjaGVkIGluIGJyb3dzZXIgaGlzdG9yeVxuICAgIGlmIChkb2MgIT09IHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgIGV2ZW50cy5hZGQod2luZG93LCAndW5sb2FkJywgdGhpcy5vbldpbmRvd1VubG9hZClcbiAgICB9XG5cbiAgICB0aGlzLmZpcmUoJ3Njb3BlOmFkZC1kb2N1bWVudCcsIHsgZG9jLCB3aW5kb3csIHNjb3BlOiB0aGlzLCBvcHRpb25zIH0pXG4gIH1cblxuICByZW1vdmVEb2N1bWVudCAoZG9jOiBEb2N1bWVudCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXREb2NJbmRleChkb2MpXG5cbiAgICBjb25zdCB3aW5kb3cgPSB3aW4uZ2V0V2luZG93KGRvYylcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5kb2N1bWVudHNbaW5kZXhdLm9wdGlvbnNcblxuICAgIGV2ZW50cy5yZW1vdmUod2luZG93LCAndW5sb2FkJywgdGhpcy5vbldpbmRvd1VubG9hZClcblxuICAgIHRoaXMuZG9jdW1lbnRzLnNwbGljZShpbmRleCwgMSlcbiAgICBldmVudHMuZG9jdW1lbnRzLnNwbGljZShpbmRleCwgMSlcblxuICAgIHRoaXMuZmlyZSgnc2NvcGU6cmVtb3ZlLWRvY3VtZW50JywgeyBkb2MsIHdpbmRvdywgc2NvcGU6IHRoaXMsIG9wdGlvbnMgfSlcbiAgfVxuXG4gIGdldERvY0luZGV4IChkb2M6IERvY3VtZW50KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvY3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnRzW2ldLmRvYyA9PT0gZG9jKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICBnZXREb2NPcHRpb25zIChkb2M6IERvY3VtZW50KSB7XG4gICAgY29uc3QgZG9jSW5kZXggPSB0aGlzLmdldERvY0luZGV4KGRvYylcblxuICAgIHJldHVybiBkb2NJbmRleCA9PT0gLTEgPyBudWxsIDogdGhpcy5kb2N1bWVudHNbZG9jSW5kZXhdLm9wdGlvbnNcbiAgfVxuXG4gIG5vdyAoKSB7XG4gICAgcmV0dXJuICgodGhpcy53aW5kb3cgYXMgYW55KS5EYXRlIGFzIHR5cGVvZiBEYXRlIHx8IERhdGUpLm5vdygpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9uTmF0aXZlRXZlbnQgKHR5cGU6IHN0cmluZywgYWN0aW9uczogQWN0aW9ucykge1xuICBpZiAoYWN0aW9ucy5waGFzZWxlc3NUeXBlc1t0eXBlXSkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgZm9yIChjb25zdCBuYW1lIGluIGFjdGlvbnMubWFwKSB7XG4gICAgaWYgKHR5cGUuaW5kZXhPZihuYW1lKSA9PT0gMCAmJiB0eXBlLnN1YnN0cihuYW1lLmxlbmd0aCkgaW4gYWN0aW9ucy5waGFzZXMpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0U2NvcGUgKHNjb3BlOiBTY29wZSwgd2luZG93OiBXaW5kb3cpIHtcbiAgc2NvcGUuaXNJbml0aWFsaXplZCA9IHRydWVcbiAgd2luLmluaXQod2luZG93KVxuICBkb21PYmplY3RzLmluaXQod2luZG93KVxuICBicm93c2VyLmluaXQod2luZG93KVxuICByYWYuaW5pdCh3aW5kb3cpXG4gIGV2ZW50cy5pbml0KHdpbmRvdylcblxuICBzY29wZS51c2VQbHVnaW4oaW50ZXJhY3Rpb25zKVxuICBzY29wZS5kb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudFxuICBzY29wZS53aW5kb3cgPSB3aW5kb3dcblxuICByZXR1cm4gc2NvcGVcbn1cblxuZXhwb3J0IHsgU2NvcGUgfVxuIiwiaW1wb3J0IGJyb3dzZXIgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvYnJvd3NlcidcbmltcG9ydCBkb21PYmplY3RzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbU9iamVjdHMnXG5pbXBvcnQgeyBub2RlQ29udGFpbnMgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcbmltcG9ydCBldmVudHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXZlbnRzJ1xuaW1wb3J0ICogYXMgcG9pbnRlclV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3BvaW50ZXJVdGlscydcbmltcG9ydCBJbnRlcmFjdGlvbkJhc2UgZnJvbSAnLi9JbnRlcmFjdGlvbidcbmltcG9ydCBpbnRlcmFjdGFibGVQcmV2ZW50RGVmYXVsdCBmcm9tICcuL2ludGVyYWN0YWJsZVByZXZlbnREZWZhdWx0J1xuaW1wb3J0IGZpbmRlciwgeyBTZWFyY2hEZXRhaWxzIH0gZnJvbSAnLi9pbnRlcmFjdGlvbkZpbmRlcidcbmltcG9ydCBTY29wZSBmcm9tICcuL3Njb3BlJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgU2NvcGUge1xuICAgIEludGVyYWN0aW9uOiB0eXBlb2YgSW50ZXJhY3Rpb25CYXNlXG4gICAgaW50ZXJhY3Rpb25zOiB7XG4gICAgICBuZXc6IDxUIGV4dGVuZHMgQWN0aW9uTmFtZT4gKG9wdGlvbnM6IGFueSkgPT4gSW50ZXJhY3Rpb25CYXNlPFQ+XG4gICAgICBsaXN0OiBJbnRlcmFjdGlvbkJhc2VbXVxuICAgICAgbGlzdGVuZXJzOiB7IFt0eXBlOiBzdHJpbmddOiBJbnRlcmFjdC5MaXN0ZW5lciB9XG4gICAgICBkb2NFdmVudHM6IEFycmF5PHsgdHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogSW50ZXJhY3QuTGlzdGVuZXIgfT5cbiAgICAgIHBvaW50ZXJNb3ZlVG9sZXJhbmNlOiBudW1iZXJcbiAgICB9XG4gICAgcHJldlRvdWNoVGltZTogbnVtYmVyXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIFNpZ25hbEFyZ3Mge1xuICAgICdpbnRlcmFjdGlvbnM6ZmluZCc6IHtcbiAgICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbkJhc2VcbiAgICAgIHNlYXJjaERldGFpbHM6IFNlYXJjaERldGFpbHNcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgbWV0aG9kTmFtZXMgPSBbXG4gICdwb2ludGVyRG93bicsICdwb2ludGVyTW92ZScsICdwb2ludGVyVXAnLFxuICAndXBkYXRlUG9pbnRlcicsICdyZW1vdmVQb2ludGVyJywgJ3dpbmRvd0JsdXInLFxuXVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgY29uc3QgbGlzdGVuZXJzID0ge30gYXMgYW55XG5cbiAgZm9yIChjb25zdCBtZXRob2Qgb2YgbWV0aG9kTmFtZXMpIHtcbiAgICBsaXN0ZW5lcnNbbWV0aG9kXSA9IGRvT25JbnRlcmFjdGlvbnMobWV0aG9kLCBzY29wZSlcbiAgfVxuXG4gIGNvbnN0IHBFdmVudFR5cGVzID0gYnJvd3Nlci5wRXZlbnRUeXBlc1xuICBsZXQgZG9jRXZlbnRzOiB0eXBlb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmRvY0V2ZW50c1xuXG4gIGlmIChkb21PYmplY3RzLlBvaW50ZXJFdmVudCkge1xuICAgIGRvY0V2ZW50cyA9IFtcbiAgICAgIHsgdHlwZTogcEV2ZW50VHlwZXMuZG93biwgICBsaXN0ZW5lcjogcmVsZWFzZVBvaW50ZXJzT25SZW1vdmVkRWxzIH0sXG4gICAgICB7IHR5cGU6IHBFdmVudFR5cGVzLmRvd24sICAgbGlzdGVuZXI6IGxpc3RlbmVycy5wb2ludGVyRG93biB9LFxuICAgICAgeyB0eXBlOiBwRXZlbnRUeXBlcy5tb3ZlLCAgIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlck1vdmUgfSxcbiAgICAgIHsgdHlwZTogcEV2ZW50VHlwZXMudXAsICAgICBsaXN0ZW5lcjogbGlzdGVuZXJzLnBvaW50ZXJVcCB9LFxuICAgICAgeyB0eXBlOiBwRXZlbnRUeXBlcy5jYW5jZWwsIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlclVwIH0sXG4gICAgXVxuICB9XG4gIGVsc2Uge1xuICAgIGRvY0V2ZW50cyA9IFtcbiAgICAgIHsgdHlwZTogJ21vdXNlZG93bicsIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlckRvd24gfSxcbiAgICAgIHsgdHlwZTogJ21vdXNlbW92ZScsIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlck1vdmUgfSxcbiAgICAgIHsgdHlwZTogJ21vdXNldXAnLCBsaXN0ZW5lcjogbGlzdGVuZXJzLnBvaW50ZXJVcCB9LFxuXG4gICAgICB7IHR5cGU6ICd0b3VjaHN0YXJ0JywgbGlzdGVuZXI6IHJlbGVhc2VQb2ludGVyc09uUmVtb3ZlZEVscyB9LFxuICAgICAgeyB0eXBlOiAndG91Y2hzdGFydCcsIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlckRvd24gfSxcbiAgICAgIHsgdHlwZTogJ3RvdWNobW92ZScsIGxpc3RlbmVyOiBsaXN0ZW5lcnMucG9pbnRlck1vdmUgfSxcbiAgICAgIHsgdHlwZTogJ3RvdWNoZW5kJywgbGlzdGVuZXI6IGxpc3RlbmVycy5wb2ludGVyVXAgfSxcbiAgICAgIHsgdHlwZTogJ3RvdWNoY2FuY2VsJywgbGlzdGVuZXI6IGxpc3RlbmVycy5wb2ludGVyVXAgfSxcbiAgICBdXG4gIH1cblxuICBkb2NFdmVudHMucHVzaCh7XG4gICAgdHlwZTogJ2JsdXInLFxuICAgIGxpc3RlbmVyIChldmVudCkge1xuICAgICAgZm9yIChjb25zdCBpbnRlcmFjdGlvbiBvZiBzY29wZS5pbnRlcmFjdGlvbnMubGlzdCkge1xuICAgICAgICBpbnRlcmFjdGlvbi5kb2N1bWVudEJsdXIoZXZlbnQpXG4gICAgICB9XG4gICAgfSxcbiAgfSlcblxuICAvLyBmb3IgaWdub3JpbmcgYnJvd3NlcidzIHNpbXVsYXRlZCBtb3VzZSBldmVudHNcbiAgc2NvcGUucHJldlRvdWNoVGltZSA9IDBcblxuICBzY29wZS5JbnRlcmFjdGlvbiA9IGNsYXNzIDxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gZXh0ZW5kcyBJbnRlcmFjdGlvbkJhc2U8VD4ge1xuICAgIGdldCBwb2ludGVyTW92ZVRvbGVyYW5jZSAoKSB7XG4gICAgICByZXR1cm4gc2NvcGUuaW50ZXJhY3Rpb25zLnBvaW50ZXJNb3ZlVG9sZXJhbmNlXG4gICAgfVxuXG4gICAgc2V0IHBvaW50ZXJNb3ZlVG9sZXJhbmNlICh2YWx1ZSkge1xuICAgICAgc2NvcGUuaW50ZXJhY3Rpb25zLnBvaW50ZXJNb3ZlVG9sZXJhbmNlID0gdmFsdWVcbiAgICB9XG5cbiAgICBfbm93ICgpIHsgcmV0dXJuIHNjb3BlLm5vdygpIH1cbiAgfVxuXG4gIHNjb3BlLmludGVyYWN0aW9ucyA9IHtcbiAgICAvLyBhbGwgYWN0aXZlIGFuZCBpZGxlIGludGVyYWN0aW9uc1xuICAgIGxpc3Q6IFtdLFxuICAgIG5ldzxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gKG9wdGlvbnM6IHsgcG9pbnRlclR5cGU/OiBzdHJpbmcsIHNjb3BlRmlyZT86IFNjb3BlWydmaXJlJ10gfSkge1xuICAgICAgb3B0aW9ucy5zY29wZUZpcmUgPSAobmFtZSwgYXJnKSA9PiBzY29wZS5maXJlKG5hbWUsIGFyZylcblxuICAgICAgY29uc3QgaW50ZXJhY3Rpb24gPSBuZXcgc2NvcGUuSW50ZXJhY3Rpb248VD4ob3B0aW9ucyBhcyBSZXF1aXJlZDx0eXBlb2Ygb3B0aW9ucz4pXG5cbiAgICAgIHNjb3BlLmludGVyYWN0aW9ucy5saXN0LnB1c2goaW50ZXJhY3Rpb24pXG4gICAgICByZXR1cm4gaW50ZXJhY3Rpb25cbiAgICB9LFxuICAgIGxpc3RlbmVycyxcbiAgICBkb2NFdmVudHMsXG4gICAgcG9pbnRlck1vdmVUb2xlcmFuY2U6IDEsXG4gIH1cblxuICBmdW5jdGlvbiByZWxlYXNlUG9pbnRlcnNPblJlbW92ZWRFbHMgKCkge1xuICAgIC8vIGZvciBhbGwgaW5hY3RpdmUgdG91Y2ggaW50ZXJhY3Rpb25zIHdpdGggcG9pbnRlcnMgZG93blxuICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QpIHtcbiAgICAgIGlmICghaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93biB8fFxuICAgICAgICBpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJyB8fFxuICAgICAgICBpbnRlcmFjdGlvbi5faW50ZXJhY3RpbmcpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gaWYgYSBwb2ludGVyIGlzIGRvd24gb24gYW4gZWxlbWVudCB0aGF0IGlzIG5vIGxvbmdlciBpbiB0aGUgRE9NIHRyZWVcbiAgICAgIGZvciAoY29uc3QgcG9pbnRlciBvZiBpbnRlcmFjdGlvbi5wb2ludGVycykge1xuICAgICAgICBpZiAoIXNjb3BlLmRvY3VtZW50cy5zb21lKCh7IGRvYyB9KSA9PiBub2RlQ29udGFpbnMoZG9jLCBwb2ludGVyLmRvd25UYXJnZXQpKSkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgcG9pbnRlciBmcm9tIHRoZSBpbnRlcmFjdGlvblxuICAgICAgICAgIGludGVyYWN0aW9uLnJlbW92ZVBvaW50ZXIocG9pbnRlci5wb2ludGVyLCBwb2ludGVyLmV2ZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2NvcGUudXNlUGx1Z2luKGludGVyYWN0YWJsZVByZXZlbnREZWZhdWx0KVxufVxuXG5mdW5jdGlvbiBkb09uSW50ZXJhY3Rpb25zIChtZXRob2QsIHNjb3BlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBjb25zdCBpbnRlcmFjdGlvbnMgPSBzY29wZS5pbnRlcmFjdGlvbnMubGlzdFxuXG4gICAgY29uc3QgcG9pbnRlclR5cGUgPSBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlclR5cGUoZXZlbnQpXG4gICAgY29uc3QgW2V2ZW50VGFyZ2V0LCBjdXJFdmVudFRhcmdldF0gPSBwb2ludGVyVXRpbHMuZ2V0RXZlbnRUYXJnZXRzKGV2ZW50KVxuICAgIGNvbnN0IG1hdGNoZXMgPSBbXSAvLyBbIFtwb2ludGVyLCBpbnRlcmFjdGlvbl0sIC4uLl1cblxuICAgIGlmICgvXnRvdWNoLy50ZXN0KGV2ZW50LnR5cGUpKSB7XG4gICAgICBzY29wZS5wcmV2VG91Y2hUaW1lID0gc2NvcGUubm93KClcblxuICAgICAgZm9yIChjb25zdCBjaGFuZ2VkVG91Y2ggb2YgZXZlbnQuY2hhbmdlZFRvdWNoZXMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlciA9IGNoYW5nZWRUb3VjaFxuICAgICAgICBjb25zdCBwb2ludGVySWQgPSBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlcklkKHBvaW50ZXIpXG4gICAgICAgIGNvbnN0IHNlYXJjaERldGFpbHM6IFNlYXJjaERldGFpbHMgPSB7XG4gICAgICAgICAgcG9pbnRlcixcbiAgICAgICAgICBwb2ludGVySWQsXG4gICAgICAgICAgcG9pbnRlclR5cGUsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uID0gZ2V0SW50ZXJhY3Rpb24oc2VhcmNoRGV0YWlscylcblxuICAgICAgICBtYXRjaGVzLnB1c2goW1xuICAgICAgICAgIHNlYXJjaERldGFpbHMucG9pbnRlcixcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLmV2ZW50VGFyZ2V0LFxuICAgICAgICAgIHNlYXJjaERldGFpbHMuY3VyRXZlbnRUYXJnZXQsXG4gICAgICAgICAgaW50ZXJhY3Rpb24sXG4gICAgICAgIF0pXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbGV0IGludmFsaWRQb2ludGVyID0gZmFsc2VcblxuICAgICAgaWYgKCFicm93c2VyLnN1cHBvcnRzUG9pbnRlckV2ZW50ICYmIC9tb3VzZS8udGVzdChldmVudC50eXBlKSkge1xuICAgICAgICAvLyBpZ25vcmUgbW91c2UgZXZlbnRzIHdoaWxlIHRvdWNoIGludGVyYWN0aW9ucyBhcmUgYWN0aXZlXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJhY3Rpb25zLmxlbmd0aCAmJiAhaW52YWxpZFBvaW50ZXI7IGkrKykge1xuICAgICAgICAgIGludmFsaWRQb2ludGVyID0gaW50ZXJhY3Rpb25zW2ldLnBvaW50ZXJUeXBlICE9PSAnbW91c2UnICYmIGludGVyYWN0aW9uc1tpXS5wb2ludGVySXNEb3duXG4gICAgICAgIH1cblxuICAgICAgICAvLyB0cnkgdG8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IGFyZSBzaW11bGF0ZWQgYnkgdGhlIGJyb3dzZXJcbiAgICAgICAgLy8gYWZ0ZXIgYSB0b3VjaCBldmVudFxuICAgICAgICBpbnZhbGlkUG9pbnRlciA9IGludmFsaWRQb2ludGVyIHx8XG4gICAgICAgICAgKHNjb3BlLm5vdygpIC0gc2NvcGUucHJldlRvdWNoVGltZSA8IDUwMCkgfHxcbiAgICAgICAgICAvLyBvbiBpT1MgYW5kIEZpcmVmb3ggTW9iaWxlLCBNb3VzZUV2ZW50LnRpbWVTdGFtcCBpcyB6ZXJvIGlmIHNpbXVsYXRlZFxuICAgICAgICAgIGV2ZW50LnRpbWVTdGFtcCA9PT0gMFxuICAgICAgfVxuXG4gICAgICBpZiAoIWludmFsaWRQb2ludGVyKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaERldGFpbHMgPSB7XG4gICAgICAgICAgcG9pbnRlcjogZXZlbnQsXG4gICAgICAgICAgcG9pbnRlcklkOiBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlcklkKGV2ZW50KSxcbiAgICAgICAgICBwb2ludGVyVHlwZSxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LnR5cGUsXG4gICAgICAgICAgY3VyRXZlbnRUYXJnZXQsXG4gICAgICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnRlcmFjdGlvbiA9IGdldEludGVyYWN0aW9uKHNlYXJjaERldGFpbHMpXG5cbiAgICAgICAgbWF0Y2hlcy5wdXNoKFtcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLnBvaW50ZXIsXG4gICAgICAgICAgc2VhcmNoRGV0YWlscy5ldmVudFRhcmdldCxcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLmN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGludGVyYWN0aW9uLFxuICAgICAgICBdKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBmb3IgKGNvbnN0IFtwb2ludGVyLCBldmVudFRhcmdldCwgY3VyRXZlbnRUYXJnZXQsIGludGVyYWN0aW9uXSBvZiBtYXRjaGVzKSB7XG4gICAgICBpbnRlcmFjdGlvblttZXRob2RdKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgY3VyRXZlbnRUYXJnZXQpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEludGVyYWN0aW9uIChzZWFyY2hEZXRhaWxzOiBTZWFyY2hEZXRhaWxzKSB7XG4gIGNvbnN0IHsgcG9pbnRlclR5cGUsIHNjb3BlIH0gPSBzZWFyY2hEZXRhaWxzXG5cbiAgY29uc3QgZm91bmRJbnRlcmFjdGlvbiA9IGZpbmRlci5zZWFyY2goc2VhcmNoRGV0YWlscylcbiAgY29uc3Qgc2lnbmFsQXJnID0geyBpbnRlcmFjdGlvbjogZm91bmRJbnRlcmFjdGlvbiwgc2VhcmNoRGV0YWlscyB9XG5cbiAgc2NvcGUuZmlyZSgnaW50ZXJhY3Rpb25zOmZpbmQnLCBzaWduYWxBcmcpXG5cbiAgcmV0dXJuIHNpZ25hbEFyZy5pbnRlcmFjdGlvbiB8fCBzY29wZS5pbnRlcmFjdGlvbnMubmV3KHsgcG9pbnRlclR5cGUgfSlcbn1cblxuZnVuY3Rpb24gb25Eb2NTaWduYWw8VCBleHRlbmRzICdzY29wZTphZGQtZG9jdW1lbnQnIHwgJ3Njb3BlOnJlbW92ZS1kb2N1bWVudCc+ICh7IGRvYywgc2NvcGUsIG9wdGlvbnMgfTogSW50ZXJhY3QuU2lnbmFsQXJnc1tUXSwgZXZlbnRNZXRob2ROYW1lOiAnYWRkJyB8ICdyZW1vdmUnKSB7XG4gIGNvbnN0IHsgZG9jRXZlbnRzIH0gPSBzY29wZS5pbnRlcmFjdGlvbnNcbiAgY29uc3QgZXZlbnRNZXRob2QgPSBldmVudHNbZXZlbnRNZXRob2ROYW1lXVxuXG4gIGlmIChzY29wZS5icm93c2VyLmlzSU9TICYmICFvcHRpb25zLmV2ZW50cykge1xuICAgIG9wdGlvbnMuZXZlbnRzID0geyBwYXNzaXZlOiBmYWxzZSB9XG4gIH1cblxuICAvLyBkZWxlZ2F0ZSBldmVudCBsaXN0ZW5lclxuICBmb3IgKGNvbnN0IGV2ZW50VHlwZSBpbiBldmVudHMuZGVsZWdhdGVkRXZlbnRzKSB7XG4gICAgZXZlbnRNZXRob2QoZG9jLCBldmVudFR5cGUsIGV2ZW50cy5kZWxlZ2F0ZUxpc3RlbmVyKVxuICAgIGV2ZW50TWV0aG9kKGRvYywgZXZlbnRUeXBlLCBldmVudHMuZGVsZWdhdGVVc2VDYXB0dXJlLCB0cnVlKVxuICB9XG5cbiAgY29uc3QgZXZlbnRPcHRpb25zID0gb3B0aW9ucyAmJiBvcHRpb25zLmV2ZW50c1xuXG4gIGZvciAoY29uc3QgeyB0eXBlLCBsaXN0ZW5lciB9IG9mIGRvY0V2ZW50cykge1xuICAgIGV2ZW50TWV0aG9kKGRvYywgdHlwZSwgbGlzdGVuZXIsIGV2ZW50T3B0aW9ucylcbiAgfVxufVxuXG5jb25zdCBpbnRlcmFjdGlvbnM6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdjb3JlL2ludGVyYWN0aW9ucycsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdzY29wZTphZGQtZG9jdW1lbnQnOiBhcmcgPT4gb25Eb2NTaWduYWwoYXJnLCAnYWRkJyksXG4gICAgJ3Njb3BlOnJlbW92ZS1kb2N1bWVudCc6IGFyZyA9PiBvbkRvY1NpZ25hbChhcmcsICdyZW1vdmUnKSxcbiAgICAnaW50ZXJhY3RhYmxlOnVuc2V0JzogKHsgaW50ZXJhY3RhYmxlIH0sIHNjb3BlKSA9PiB7XG4gICAgICAvLyBTdG9wIGFuZCBkZXN0cm95IHJlbGF0ZWQgaW50ZXJhY3Rpb25zIHdoZW4gYW4gSW50ZXJhY3RhYmxlIGlzIHVuc2V0XG4gICAgICBmb3IgKGxldCBpID0gc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb24gPSBzY29wZS5pbnRlcmFjdGlvbnMubGlzdFtpXVxuXG4gICAgICAgIGlmIChpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUgIT09IGludGVyYWN0YWJsZSkgeyBjb250aW51ZSB9XG5cbiAgICAgICAgaW50ZXJhY3Rpb24uc3RvcCgpXG4gICAgICAgIHNjb3BlLmZpcmUoJ2ludGVyYWN0aW9uczpkZXN0cm95JywgeyBpbnRlcmFjdGlvbiB9KVxuICAgICAgICBpbnRlcmFjdGlvbi5kZXN0cm95KClcblxuICAgICAgICBpZiAoc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QubGVuZ3RoID4gMikge1xuICAgICAgICAgIHNjb3BlLmludGVyYWN0aW9ucy5saXN0LnNwbGljZShpLCAxKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgb25Eb2NTaWduYWwsXG4gIGRvT25JbnRlcmFjdGlvbnMsXG4gIG1ldGhvZE5hbWVzLFxufVxuXG5leHBvcnQgZGVmYXVsdCBpbnRlcmFjdGlvbnNcbiIsIi8qKiBAbW9kdWxlIGludGVyYWN0ICovXG5cbmltcG9ydCBicm93c2VyIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2Jyb3dzZXInXG5pbXBvcnQgZXZlbnRzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V2ZW50cydcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2luZGV4J1xuaW1wb3J0IEludGVyYWN0YWJsZSBmcm9tICcuL0ludGVyYWN0YWJsZSdcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICcuL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IHsgaXNOb25OYXRpdmVFdmVudCB9IGZyb20gJy4vc2NvcGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3RTdGF0aWMge1xuICAodGFyZ2V0OiBJbnRlcmFjdC5UYXJnZXQsIG9wdGlvbnM/OiBPcHRpb25zKTogSW50ZXJhY3RhYmxlXG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdFN0YXRpYyB7XG4gIC8vIGV4cG9zZSB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gY2FsY3VsYXRlIG11bHRpLXRvdWNoIHByb3BlcnRpZXNcbiAgZ2V0UG9pbnRlckF2ZXJhZ2UgID0gdXRpbHMucG9pbnRlci5wb2ludGVyQXZlcmFnZVxuICBnZXRUb3VjaEJCb3ggPSB1dGlscy5wb2ludGVyLnRvdWNoQkJveFxuICBnZXRUb3VjaERpc3RhbmNlID0gdXRpbHMucG9pbnRlci50b3VjaERpc3RhbmNlXG4gIGdldFRvdWNoQW5nbGUgPSB1dGlscy5wb2ludGVyLnRvdWNoQW5nbGVcblxuICBnZXRFbGVtZW50UmVjdCA9IHV0aWxzLmRvbS5nZXRFbGVtZW50UmVjdFxuICBnZXRFbGVtZW50Q2xpZW50UmVjdCA9IHV0aWxzLmRvbS5nZXRFbGVtZW50Q2xpZW50UmVjdFxuICBtYXRjaGVzU2VsZWN0b3IgPSB1dGlscy5kb20ubWF0Y2hlc1NlbGVjdG9yXG4gIGNsb3Nlc3QgPSB1dGlscy5kb20uY2xvc2VzdFxuXG4gIGdsb2JhbEV2ZW50czogYW55ID0ge31cblxuICBkeW5hbWljRHJvcDogKG5ld1ZhbHVlPzogYm9vbGVhbikgPT4gYm9vbGVhbiB8IHRoaXNcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmVyc2lvbiA9IHByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb25cbiAgaW50ZXJhY3Q6IEludGVyYWN0U3RhdGljXG5cbiAgY29uc3RydWN0b3IgKHByaXZhdGUgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gICAgY29uc3QgeyBwcm90b3R5cGUgfSA9IHRoaXMuY29uc3RydWN0b3JcblxuICAgIC8qKlxuICAgICAqIGBgYGpzXG4gICAgICogaW50ZXJhY3QoJyNkcmFnZ2FibGUnKS5kcmFnZ2FibGUodHJ1ZSlcbiAgICAgKlxuICAgICAqIHZhciByZWN0YWJsZXMgPSBpbnRlcmFjdCgncmVjdCcpXG4gICAgICogcmVjdGFibGVzXG4gICAgICogICAuZ2VzdHVyYWJsZSh0cnVlKVxuICAgICAqICAgLm9uKCdnZXN0dXJlbW92ZScsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAqICAgICAgIC8vIC4uLlxuICAgICAqICAgfSlcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFRoZSBtZXRob2RzIG9mIHRoaXMgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gc2V0IGVsZW1lbnRzIGFzIGludGVyYWN0YWJsZXNcbiAgICAgKiBhbmQgYWxzbyB0byBjaGFuZ2UgdmFyaW91cyBkZWZhdWx0IHNldHRpbmdzLlxuICAgICAqXG4gICAgICogQ2FsbGluZyBpdCBhcyBhIGZ1bmN0aW9uIGFuZCBwYXNzaW5nIGFuIGVsZW1lbnQgb3IgYSB2YWxpZCBDU1Mgc2VsZWN0b3JcbiAgICAgKiBzdHJpbmcgcmV0dXJucyBhbiBJbnRlcmFjdGFibGUgb2JqZWN0IHdoaWNoIGhhcyB2YXJpb3VzIG1ldGhvZHMgdG8gY29uZmlndXJlXG4gICAgICogaXQuXG4gICAgICpcbiAgICAgKiBAZ2xvYmFsXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnQgfCBzdHJpbmd9IHRhcmdldCBUaGUgSFRNTCBvciBTVkcgRWxlbWVudCB0byBpbnRlcmFjdCB3aXRoXG4gICAgICogb3IgQ1NTIHNlbGVjdG9yXG4gICAgICogQHJldHVybiB7SW50ZXJhY3RhYmxlfVxuICAgICAqL1xuICAgIGNvbnN0IGludGVyYWN0ID0gKCh0YXJnZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGxldCBpbnRlcmFjdGFibGUgPSBzY29wZS5pbnRlcmFjdGFibGVzLmdldCh0YXJnZXQsIG9wdGlvbnMpXG5cbiAgICAgIGlmICghaW50ZXJhY3RhYmxlKSB7XG4gICAgICAgIGludGVyYWN0YWJsZSA9IHNjb3BlLmludGVyYWN0YWJsZXMubmV3KHRhcmdldCwgb3B0aW9ucylcbiAgICAgICAgaW50ZXJhY3RhYmxlLmV2ZW50cy5nbG9iYWwgPSB0aGlzLmdsb2JhbEV2ZW50c1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50ZXJhY3RhYmxlXG4gICAgfSkgYXMgSW50ZXJhY3RTdGF0aWNcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKSkge1xuICAgICAgaW50ZXJhY3Rba2V5XSA9IHByb3RvdHlwZVtrZXldXG4gICAgfVxuXG4gICAgdXRpbHMuZXh0ZW5kKGludGVyYWN0IGFzIGFueSwgdGhpcylcbiAgICBpbnRlcmFjdC5jb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0b3JcbiAgICB0aGlzLmludGVyYWN0ID0gaW50ZXJhY3RcblxuICAgIHJldHVybiBpbnRlcmFjdFxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBhIHBsdWdpblxuICAgKlxuICAgKiBAYWxpYXMgbW9kdWxlOmludGVyYWN0LnVzZVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGx1Z2luXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHBsdWdpbi5pbnN0YWxsXG4gICAqIEByZXR1cm4ge0ludGVyYWN0U3RhdGljfVxuICAgKi9cbiAgdXNlIChwbHVnaW46IEludGVyYWN0LlBsdWdpbiwgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLnNjb3BlLnVzZVBsdWdpbihwbHVnaW4sIG9wdGlvbnMpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGVsZW1lbnQgb3Igc2VsZWN0b3IgaGFzIGJlZW4gc2V0IHdpdGggdGhlIHtAbGluayBpbnRlcmFjdH1cbiAgICogZnVuY3Rpb25cbiAgICpcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5pc1NldFxuICAgKlxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgVGhlIEVsZW1lbnQgYmVpbmcgc2VhcmNoZWQgZm9yXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IEluZGljYXRlcyBpZiB0aGUgZWxlbWVudCBvciBDU1Mgc2VsZWN0b3Igd2FzIHByZXZpb3VzbHlcbiAgICogcGFzc2VkIHRvIGludGVyYWN0XG4gICAqL1xuICBpc1NldCAodGFyZ2V0OiBJbnRlcmFjdC5FbGVtZW50LCBvcHRpb25zPzogYW55KSB7XG4gICAgcmV0dXJuICEhdGhpcy5zY29wZS5pbnRlcmFjdGFibGVzLmdldCh0YXJnZXQsIG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGdsb2JhbCBsaXN0ZW5lciBmb3IgYW4gSW50ZXJhY3RFdmVudCBvciBhZGRzIGEgRE9NIGV2ZW50IHRvIGBkb2N1bWVudGBcbiAgICpcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5vblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGFycmF5IHwgb2JqZWN0fSB0eXBlIFRoZSB0eXBlcyBvZiBldmVudHMgdG8gbGlzdGVuIGZvclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgZnVuY3Rpb24gZXZlbnQgKHMpXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgYm9vbGVhbn0gW29wdGlvbnNdIG9iamVjdCBvciB1c2VDYXB0dXJlIGZsYWcgZm9yXG4gICAqIGFkZEV2ZW50TGlzdGVuZXJcbiAgICogQHJldHVybiB7b2JqZWN0fSBpbnRlcmFjdFxuICAgKi9cbiAgb24gKHR5cGU6IHN0cmluZyB8IEludGVyYWN0LkV2ZW50VHlwZXMsIGxpc3RlbmVyOiBJbnRlcmFjdC5MaXN0ZW5lcnNBcmcsIG9wdGlvbnM/OiBvYmplY3QpIHtcbiAgICBpZiAodXRpbHMuaXMuc3RyaW5nKHR5cGUpICYmIHR5cGUuc2VhcmNoKCcgJykgIT09IC0xKSB7XG4gICAgICB0eXBlID0gdHlwZS50cmltKCkuc3BsaXQoLyArLylcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXMuYXJyYXkodHlwZSkpIHtcbiAgICAgIGZvciAoY29uc3QgZXZlbnRUeXBlIG9mICh0eXBlIGFzIGFueVtdKSkge1xuICAgICAgICB0aGlzLm9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzLm9iamVjdCh0eXBlKSkge1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIHR5cGUpIHtcbiAgICAgICAgdGhpcy5vbihwcm9wLCAodHlwZSBhcyBhbnkpW3Byb3BdLCBsaXN0ZW5lcilcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvLyBpZiBpdCBpcyBhbiBJbnRlcmFjdEV2ZW50IHR5cGUsIGFkZCBsaXN0ZW5lciB0byBnbG9iYWxFdmVudHNcbiAgICBpZiAoaXNOb25OYXRpdmVFdmVudCh0eXBlLCB0aGlzLnNjb3BlLmFjdGlvbnMpKSB7XG4gICAgICAvLyBpZiB0aGlzIHR5cGUgb2YgZXZlbnQgd2FzIG5ldmVyIGJvdW5kXG4gICAgICBpZiAoIXRoaXMuZ2xvYmFsRXZlbnRzW3R5cGVdKSB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRXZlbnRzW3R5cGVdID0gW2xpc3RlbmVyXVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vbiBJbnRlcmFjdEV2ZW50IHR5cGUsIGFkZEV2ZW50TGlzdGVuZXIgdG8gZG9jdW1lbnRcbiAgICBlbHNlIHtcbiAgICAgIGV2ZW50cy5hZGQodGhpcy5zY29wZS5kb2N1bWVudCwgdHlwZSwgbGlzdGVuZXIgYXMgSW50ZXJhY3QuTGlzdGVuZXIsIHsgb3B0aW9ucyB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGdsb2JhbCBJbnRlcmFjdEV2ZW50IGxpc3RlbmVyIG9yIERPTSBldmVudCBmcm9tIGBkb2N1bWVudGBcbiAgICpcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5vZmZcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBhcnJheSB8IG9iamVjdH0gdHlwZSBUaGUgdHlwZXMgb2YgZXZlbnRzIHRoYXQgd2VyZSBsaXN0ZW5lZFxuICAgKiBmb3JcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGxpc3RlbmVyIGZ1bmN0aW9uIHRvIGJlIHJlbW92ZWRcbiAgICogQHBhcmFtIHtvYmplY3QgfCBib29sZWFufSBvcHRpb25zIFtvcHRpb25zXSBvYmplY3Qgb3IgdXNlQ2FwdHVyZSBmbGFnIGZvclxuICAgKiByZW1vdmVFdmVudExpc3RlbmVyXG4gICAqIEByZXR1cm4ge29iamVjdH0gaW50ZXJhY3RcbiAgICovXG4gIG9mZiAodHlwZTogSW50ZXJhY3QuRXZlbnRUeXBlcywgbGlzdGVuZXI6IGFueSwgb3B0aW9ucz86IG9iamVjdCkge1xuICAgIGlmICh1dGlscy5pcy5zdHJpbmcodHlwZSkgJiYgdHlwZS5zZWFyY2goJyAnKSAhPT0gLTEpIHtcbiAgICAgIHR5cGUgPSB0eXBlLnRyaW0oKS5zcGxpdCgvICsvKVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pcy5hcnJheSh0eXBlKSkge1xuICAgICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgdHlwZSkge1xuICAgICAgICB0aGlzLm9mZihldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pcy5vYmplY3QodHlwZSkpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiB0eXBlKSB7XG4gICAgICAgIHRoaXMub2ZmKHByb3AsIHR5cGVbcHJvcF0sIGxpc3RlbmVyKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGlmIChpc05vbk5hdGl2ZUV2ZW50KHR5cGUsIHRoaXMuc2NvcGUuYWN0aW9ucykpIHtcbiAgICAgIGxldCBpbmRleDogbnVtYmVyXG5cbiAgICAgIGlmICh0eXBlIGluIHRoaXMuZ2xvYmFsRXZlbnRzICYmXG4gICAgICAgICAgKGluZGV4ID0gdGhpcy5nbG9iYWxFdmVudHNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikpICE9PSAtMSkge1xuICAgICAgICB0aGlzLmdsb2JhbEV2ZW50c1t0eXBlXS5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZXZlbnRzLnJlbW92ZSh0aGlzLnNjb3BlLmRvY3VtZW50LCB0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZGVidWcgKCkge1xuICAgIHJldHVybiB0aGlzLnNjb3BlXG4gIH1cblxuICAvKipcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5zdXBwb3J0c1RvdWNoXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBicm93c2VyIHN1cHBvcnRzIHRvdWNoIGlucHV0XG4gICAqL1xuICBzdXBwb3J0c1RvdWNoICgpIHtcbiAgICByZXR1cm4gYnJvd3Nlci5zdXBwb3J0c1RvdWNoXG4gIH1cblxuICAvKipcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5zdXBwb3J0c1BvaW50ZXJFdmVudFxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgYnJvd3NlciBzdXBwb3J0cyBQb2ludGVyRXZlbnRzXG4gICAqL1xuICBzdXBwb3J0c1BvaW50ZXJFdmVudCAoKSB7XG4gICAgcmV0dXJuIGJyb3dzZXIuc3VwcG9ydHNQb2ludGVyRXZlbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGFsbCBpbnRlcmFjdGlvbnMgKGVuZCBldmVudHMgYXJlIG5vdCBmaXJlZClcbiAgICpcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5zdG9wXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH0gaW50ZXJhY3RcbiAgICovXG4gIHN0b3AgKCkge1xuICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2YgdGhpcy5zY29wZS5pbnRlcmFjdGlvbnMubGlzdCkge1xuICAgICAgaW50ZXJhY3Rpb24uc3RvcCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgdGhlIGRpc3RhbmNlIHRoZSBwb2ludGVyIG11c3QgYmUgbW92ZWQgYmVmb3JlIGFuIGFjdGlvblxuICAgKiBzZXF1ZW5jZSBvY2N1cnMuIFRoaXMgYWxzbyBhZmZlY3RzIHRvbGVyYW5jZSBmb3IgdGFwIGV2ZW50cy5cbiAgICpcbiAgICogQGFsaWFzIG1vZHVsZTppbnRlcmFjdC5wb2ludGVyTW92ZVRvbGVyYW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW25ld1ZhbHVlXSBUaGUgbW92ZW1lbnQgZnJvbSB0aGUgc3RhcnQgcG9zaXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhpcyB2YWx1ZVxuICAgKiBAcmV0dXJuIHtpbnRlcmFjdCB8IG51bWJlcn1cbiAgICovXG4gIHBvaW50ZXJNb3ZlVG9sZXJhbmNlIChuZXdWYWx1ZT86IG51bWJlcikge1xuICAgIGlmICh1dGlscy5pcy5udW1iZXIobmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLnNjb3BlLmludGVyYWN0aW9ucy5wb2ludGVyTW92ZVRvbGVyYW5jZSA9IG5ld1ZhbHVlXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2NvcGUuaW50ZXJhY3Rpb25zLnBvaW50ZXJNb3ZlVG9sZXJhbmNlXG4gIH1cblxuICBhZGREb2N1bWVudCAoZG9jOiBEb2N1bWVudCwgb3B0aW9ucz86IG9iamVjdCkge1xuICAgIHRoaXMuc2NvcGUuYWRkRG9jdW1lbnQoZG9jLCBvcHRpb25zKVxuICB9XG5cbiAgcmVtb3ZlRG9jdW1lbnQgKGRvYzogRG9jdW1lbnQpIHtcbiAgICB0aGlzLnNjb3BlLnJlbW92ZURvY3VtZW50KGRvYylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdFN0YXRpY1xuIiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwZXMuZC50c1wiIC8+XG4iLCJleHBvcnQgZGVmYXVsdCAodGhpbmc6IGFueSkgPT4gISEodGhpbmcgJiYgdGhpbmcuV2luZG93KSAmJiAodGhpbmcgaW5zdGFuY2VvZiB0aGluZy5XaW5kb3cpXG4iLCJpbXBvcnQgaXNXaW5kb3cgZnJvbSAnLi9pc1dpbmRvdydcblxuY29uc3Qgd2luID0ge1xuICByZWFsV2luZG93OiB1bmRlZmluZWQgYXMgV2luZG93LFxuICB3aW5kb3c6IHVuZGVmaW5lZCBhcyBXaW5kb3csXG4gIGdldFdpbmRvdyxcbiAgaW5pdCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXQgKHdpbmRvdzogV2luZG93ICYgeyB3cmFwPzogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgfSkge1xuICAvLyBnZXQgd3JhcHBlZCB3aW5kb3cgaWYgdXNpbmcgU2hhZG93IERPTSBwb2x5ZmlsbFxuXG4gIHdpbi5yZWFsV2luZG93ID0gd2luZG93XG5cbiAgLy8gY3JlYXRlIGEgVGV4dE5vZGVcbiAgY29uc3QgZWwgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpXG5cbiAgLy8gY2hlY2sgaWYgaXQncyB3cmFwcGVkIGJ5IGEgcG9seWZpbGxcbiAgaWYgKGVsLm93bmVyRG9jdW1lbnQgIT09IHdpbmRvdy5kb2N1bWVudCAmJlxuICAgICAgdHlwZW9mIHdpbmRvdy53cmFwID09PSAnZnVuY3Rpb24nICYmXG4gICAgd2luZG93LndyYXAoZWwpID09PSBlbCkge1xuICAgIC8vIHVzZSB3cmFwcGVkIHdpbmRvd1xuICAgIHdpbmRvdyA9IHdpbmRvdy53cmFwKHdpbmRvdylcbiAgfVxuXG4gIHdpbi53aW5kb3cgPSB3aW5kb3dcbn1cblxuaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gIHdpbi53aW5kb3cgICAgID0gdW5kZWZpbmVkXG4gIHdpbi5yZWFsV2luZG93ID0gdW5kZWZpbmVkXG59XG5lbHNlIHtcbiAgaW5pdCh3aW5kb3cpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaW5kb3cgKG5vZGU6IGFueSkge1xuICBpZiAoaXNXaW5kb3cobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgY29uc3Qgcm9vdE5vZGUgPSAobm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUpXG5cbiAgcmV0dXJuIHJvb3ROb2RlLmRlZmF1bHRWaWV3IHx8IHdpbi53aW5kb3dcbn1cblxud2luLmluaXQgPSBpbml0XG5cbmV4cG9ydCBkZWZhdWx0IHdpblxuIiwiLy8gdHNsaW50OmRpc2FibGUgdmFyaWFibGUtbmFtZVxuXG5pbXBvcnQgaXNXaW5kb3cgZnJvbSAnLi9pc1dpbmRvdydcbmltcG9ydCB3aW4gZnJvbSAnLi93aW5kb3cnXG5cbmV4cG9ydCBjb25zdCB3aW5kb3cgPSAodGhpbmc6IGFueSk6IHRoaW5nIGlzIFdpbmRvdyA9PlxuICB0aGluZyA9PT0gd2luLndpbmRvdyB8fCBpc1dpbmRvdyh0aGluZylcblxuZXhwb3J0IGNvbnN0IGRvY0ZyYWcgPSAodGhpbmc6IGFueSk6IHRoaW5nIGlzIERvY3VtZW50RnJhZ21lbnQgPT5cbiAgb2JqZWN0KHRoaW5nKSAmJiB0aGluZy5ub2RlVHlwZSA9PT0gMTFcblxuZXhwb3J0IGNvbnN0IG9iamVjdCA9ICh0aGluZzogYW55KTogdGhpbmcgaXMgeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0+XG4gICEhdGhpbmcgJiYgKHR5cGVvZiB0aGluZyA9PT0gJ29iamVjdCcpXG5cbmV4cG9ydCBjb25zdCBmdW5jID0gKHRoaW5nOiBhbnkpOiB0aGluZyBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSA9PlxuICB0eXBlb2YgdGhpbmcgPT09ICdmdW5jdGlvbidcblxuZXhwb3J0IGNvbnN0IG51bWJlciA9ICh0aGluZzogYW55KTogdGhpbmcgaXMgbnVtYmVyID0+XG4gIHR5cGVvZiB0aGluZyA9PT0gJ251bWJlcidcblxuZXhwb3J0IGNvbnN0IGJvb2wgPSAodGhpbmc6IGFueSk6IHRoaW5nIGlzIGJvb2xlYW4gPT5cbiAgdHlwZW9mIHRoaW5nID09PSAnYm9vbGVhbidcblxuZXhwb3J0IGNvbnN0IHN0cmluZyA9ICh0aGluZzogYW55KTogdGhpbmcgaXMgc3RyaW5nID0+XG4gIHR5cGVvZiB0aGluZyA9PT0gJ3N0cmluZydcblxuZXhwb3J0IGNvbnN0IGVsZW1lbnQgPSAodGhpbmc6IGFueSk6IHRoaW5nIGlzIEludGVyYWN0LkVsZW1lbnQgPT4ge1xuICBpZiAoIXRoaW5nIHx8ICh0eXBlb2YgdGhpbmcgIT09ICdvYmplY3QnKSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IF93aW5kb3cgPSB3aW4uZ2V0V2luZG93KHRoaW5nKSB8fCB3aW4ud2luZG93XG5cbiAgcmV0dXJuICgvb2JqZWN0fGZ1bmN0aW9uLy50ZXN0KHR5cGVvZiBfd2luZG93LkVsZW1lbnQpXG4gICAgPyB0aGluZyBpbnN0YW5jZW9mIF93aW5kb3cuRWxlbWVudCAvLyBET00yXG4gICAgOiB0aGluZy5ub2RlVHlwZSA9PT0gMSAmJiB0eXBlb2YgdGhpbmcubm9kZU5hbWUgPT09ICdzdHJpbmcnKVxufVxuXG5leHBvcnQgY29uc3QgcGxhaW5PYmplY3Q6IHR5cGVvZiBvYmplY3QgPSAodGhpbmc6IGFueSk6IHRoaW5nIGlzIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9PlxuICBvYmplY3QodGhpbmcpICYmXG4gICEhdGhpbmcuY29uc3RydWN0b3IgJiZcbiAgL2Z1bmN0aW9uIE9iamVjdFxcYi8udGVzdCh0aGluZy5jb25zdHJ1Y3Rvci50b1N0cmluZygpKVxuXG5leHBvcnQgY29uc3QgYXJyYXkgPSA8VCBleHRlbmRzIHVua25vd24+KHRoaW5nOiBhbnkpOiB0aGluZyBpcyBUW10gPT5cbiAgKG9iamVjdCh0aGluZykgJiZcbiAgKHR5cGVvZiB0aGluZy5sZW5ndGggIT09ICd1bmRlZmluZWQnKSAmJlxuICBmdW5jKHRoaW5nLnNwbGljZSkpXG4iLCJpbXBvcnQgU2NvcGUgZnJvbSAnQGludGVyYWN0anMvY29yZS9zY29wZSdcbmltcG9ydCAqIGFzIGlzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2lzJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGFibGUnIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0YWJsZSB7XG4gICAgZHJhZ2dhYmxlOiBEcmFnZ2FibGVNZXRob2RcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9kZWZhdWx0T3B0aW9ucycge1xuICBpbnRlcmZhY2UgQWN0aW9uRGVmYXVsdHMge1xuICAgIGRyYWc6IEludGVyYWN0LkRyYWdnYWJsZU9wdGlvbnNcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgQWN0aW9uTWFwIHtcbiAgICBkcmFnPzogdHlwZW9mIGRyYWdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBEcmFnRXZlbnQgPSBJbnRlcmFjdC5JbnRlcmFjdEV2ZW50PCdkcmFnJz5cblxuZXhwb3J0IHR5cGUgRHJhZ2dhYmxlTWV0aG9kID0gSW50ZXJhY3QuQWN0aW9uTWV0aG9kPEludGVyYWN0LkRyYWdnYWJsZU9wdGlvbnM+XG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBTY29wZSkge1xuICBjb25zdCB7XG4gICAgYWN0aW9ucyxcbiAgICBJbnRlcmFjdGFibGUsXG4gICAgZGVmYXVsdHMsXG4gIH0gPSBzY29wZVxuXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUuZHJhZ2dhYmxlID0gZHJhZy5kcmFnZ2FibGVcblxuICBhY3Rpb25zLm1hcC5kcmFnID0gZHJhZ1xuICBhY3Rpb25zLm1ldGhvZERpY3QuZHJhZyA9ICdkcmFnZ2FibGUnXG5cbiAgZGVmYXVsdHMuYWN0aW9ucy5kcmFnID0gZHJhZy5kZWZhdWx0c1xufVxuXG5mdW5jdGlvbiBiZWZvcmVNb3ZlICh7IGludGVyYWN0aW9uIH0pIHtcbiAgaWYgKGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgIT09ICdkcmFnJykgeyByZXR1cm4gfVxuXG4gIGNvbnN0IGF4aXMgPSBpbnRlcmFjdGlvbi5wcmVwYXJlZC5heGlzXG5cbiAgaWYgKGF4aXMgPT09ICd4Jykge1xuICAgIGludGVyYWN0aW9uLmNvb3Jkcy5jdXIucGFnZS55ICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZS55XG4gICAgaW50ZXJhY3Rpb24uY29vcmRzLmN1ci5jbGllbnQueSA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnQueVxuXG4gICAgaW50ZXJhY3Rpb24uY29vcmRzLnZlbG9jaXR5LmNsaWVudC55ID0gMFxuICAgIGludGVyYWN0aW9uLmNvb3Jkcy52ZWxvY2l0eS5wYWdlLnkgICA9IDBcbiAgfVxuICBlbHNlIGlmIChheGlzID09PSAneScpIHtcbiAgICBpbnRlcmFjdGlvbi5jb29yZHMuY3VyLnBhZ2UueCAgID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LnBhZ2UueFxuICAgIGludGVyYWN0aW9uLmNvb3Jkcy5jdXIuY2xpZW50LnggPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQuY2xpZW50LnhcblxuICAgIGludGVyYWN0aW9uLmNvb3Jkcy52ZWxvY2l0eS5jbGllbnQueCA9IDBcbiAgICBpbnRlcmFjdGlvbi5jb29yZHMudmVsb2NpdHkucGFnZS54ICAgPSAwXG4gIH1cbn1cblxuZnVuY3Rpb24gbW92ZSAoeyBpRXZlbnQsIGludGVyYWN0aW9uIH0pIHtcbiAgaWYgKGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgIT09ICdkcmFnJykgeyByZXR1cm4gfVxuXG4gIGNvbnN0IGF4aXMgPSBpbnRlcmFjdGlvbi5wcmVwYXJlZC5heGlzXG5cbiAgaWYgKGF4aXMgPT09ICd4JyB8fCBheGlzID09PSAneScpIHtcbiAgICBjb25zdCBvcHBvc2l0ZSA9IGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4J1xuXG4gICAgaUV2ZW50LnBhZ2Vbb3Bwb3NpdGVdICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZVtvcHBvc2l0ZV1cbiAgICBpRXZlbnQuY2xpZW50W29wcG9zaXRlXSA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnRbb3Bwb3NpdGVdXG4gICAgaUV2ZW50LmRlbHRhW29wcG9zaXRlXSA9IDBcbiAgfVxufVxuXG4vKipcbiAqIGBgYGpzXG4gKiBpbnRlcmFjdChlbGVtZW50KS5kcmFnZ2FibGUoe1xuICogICAgIG9uc3RhcnQ6IGZ1bmN0aW9uIChldmVudCkge30sXG4gKiAgICAgb25tb3ZlIDogZnVuY3Rpb24gKGV2ZW50KSB7fSxcbiAqICAgICBvbmVuZCAgOiBmdW5jdGlvbiAoZXZlbnQpIHt9LFxuICpcbiAqICAgICAvLyB0aGUgYXhpcyBpbiB3aGljaCB0aGUgZmlyc3QgbW92ZW1lbnQgbXVzdCBiZVxuICogICAgIC8vIGZvciB0aGUgZHJhZyBzZXF1ZW5jZSB0byBzdGFydFxuICogICAgIC8vICd4eScgYnkgZGVmYXVsdCAtIGFueSBkaXJlY3Rpb25cbiAqICAgICBzdGFydEF4aXM6ICd4JyB8fCAneScgfHwgJ3h5JyxcbiAqXG4gKiAgICAgLy8gJ3h5JyBieSBkZWZhdWx0IC0gZG9uJ3QgcmVzdHJpY3QgdG8gb25lIGF4aXMgKG1vdmUgaW4gYW55IGRpcmVjdGlvbilcbiAqICAgICAvLyAneCcgb3IgJ3knIHRvIHJlc3RyaWN0IG1vdmVtZW50IHRvIGVpdGhlciBheGlzXG4gKiAgICAgLy8gJ3N0YXJ0JyB0byByZXN0cmljdCBtb3ZlbWVudCB0byB0aGUgYXhpcyB0aGUgZHJhZyBzdGFydGVkIGluXG4gKiAgICAgbG9ja0F4aXM6ICd4JyB8fCAneScgfHwgJ3h5JyB8fCAnc3RhcnQnLFxuICpcbiAqICAgICAvLyBtYXggbnVtYmVyIG9mIGRyYWdzIHRoYXQgY2FuIGhhcHBlbiBjb25jdXJyZW50bHlcbiAqICAgICAvLyB3aXRoIGVsZW1lbnRzIG9mIHRoaXMgSW50ZXJhY3RhYmxlLiBJbmZpbml0eSBieSBkZWZhdWx0XG4gKiAgICAgbWF4OiBJbmZpbml0eSxcbiAqXG4gKiAgICAgLy8gbWF4IG51bWJlciBvZiBkcmFncyB0aGF0IGNhbiB0YXJnZXQgdGhlIHNhbWUgZWxlbWVudCtJbnRlcmFjdGFibGVcbiAqICAgICAvLyAxIGJ5IGRlZmF1bHRcbiAqICAgICBtYXhQZXJFbGVtZW50OiAyXG4gKiB9KVxuICpcbiAqIHZhciBpc0RyYWdnYWJsZSA9IGludGVyYWN0KCdlbGVtZW50JykuZHJhZ2dhYmxlKCk7IC8vIHRydWVcbiAqIGBgYFxuICpcbiAqIEdldCBvciBzZXQgd2hldGhlciBkcmFnIGFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgdGFyZ2V0XG4gKlxuICogQGFsaWFzIEludGVyYWN0YWJsZS5wcm90b3R5cGUuZHJhZ2dhYmxlXG4gKlxuICogQHBhcmFtIHtib29sZWFuIHwgb2JqZWN0fSBbb3B0aW9uc10gdHJ1ZS9mYWxzZSBvciBBbiBvYmplY3Qgd2l0aCBldmVudFxuICogbGlzdGVuZXJzIHRvIGJlIGZpcmVkIG9uIGRyYWcgZXZlbnRzIChvYmplY3QgbWFrZXMgdGhlIEludGVyYWN0YWJsZVxuICogZHJhZ2dhYmxlKVxuICogQHJldHVybiB7Ym9vbGVhbiB8IEludGVyYWN0YWJsZX0gYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgY2FuIGJlIHRoZVxuICogdGFyZ2V0IG9mIGRyYWcgZXZlbnRzLCBvciB0aGlzIEludGVyY3RhYmxlXG4gKi9cbmNvbnN0IGRyYWdnYWJsZTogRHJhZ2dhYmxlTWV0aG9kID0gZnVuY3Rpb24gZHJhZ2dhYmxlICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIG9wdGlvbnM/OiBJbnRlcmFjdC5EcmFnZ2FibGVPcHRpb25zIHwgYm9vbGVhbik6IGFueSB7XG4gIGlmIChpcy5vYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aGlzLm9wdGlvbnMuZHJhZy5lbmFibGVkID0gb3B0aW9ucy5lbmFibGVkICE9PSBmYWxzZVxuICAgIHRoaXMuc2V0UGVyQWN0aW9uKCdkcmFnJywgb3B0aW9ucylcbiAgICB0aGlzLnNldE9uRXZlbnRzKCdkcmFnJywgb3B0aW9ucylcblxuICAgIGlmICgvXih4eXx4fHl8c3RhcnQpJC8udGVzdChvcHRpb25zLmxvY2tBeGlzKSkge1xuICAgICAgdGhpcy5vcHRpb25zLmRyYWcubG9ja0F4aXMgPSBvcHRpb25zLmxvY2tBeGlzXG4gICAgfVxuICAgIGlmICgvXih4eXx4fHkpJC8udGVzdChvcHRpb25zLnN0YXJ0QXhpcykpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kcmFnLnN0YXJ0QXhpcyA9IG9wdGlvbnMuc3RhcnRBeGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGlmIChpcy5ib29sKG9wdGlvbnMpKSB7XG4gICAgdGhpcy5vcHRpb25zLmRyYWcuZW5hYmxlZCA9IG9wdGlvbnNcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICByZXR1cm4gdGhpcy5vcHRpb25zLmRyYWdcbn1cblxuY29uc3QgZHJhZzogSW50ZXJhY3QuUGx1Z2luID0ge1xuICBpZDogJ2FjdGlvbnMvZHJhZycsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdpbnRlcmFjdGlvbnM6YmVmb3JlLWFjdGlvbi1tb3ZlJzogYmVmb3JlTW92ZSxcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1yZXN1bWUnOiBiZWZvcmVNb3ZlLFxuXG4gICAgLy8gZHJhZ21vdmVcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1tb3ZlJzogbW92ZSxcbiAgICAnYXV0by1zdGFydDpjaGVjayc6IGFyZyA9PiB7XG4gICAgICBjb25zdCB7IGludGVyYWN0aW9uLCBpbnRlcmFjdGFibGUsIGJ1dHRvbnMgfSA9IGFyZ1xuICAgICAgY29uc3QgZHJhZ09wdGlvbnMgPSBpbnRlcmFjdGFibGUub3B0aW9ucy5kcmFnXG5cbiAgICAgIGlmIChcbiAgICAgICAgIShkcmFnT3B0aW9ucyAmJiBkcmFnT3B0aW9ucy5lbmFibGVkKSB8fFxuICAgICAgICAvLyBjaGVjayBtb3VzZUJ1dHRvbiBzZXR0aW5nIGlmIHRoZSBwb2ludGVyIGlzIGRvd25cbiAgICAgICAgKGludGVyYWN0aW9uLnBvaW50ZXJJc0Rvd24gJiZcbiAgICAgICAgIC9tb3VzZXxwb2ludGVyLy50ZXN0KGludGVyYWN0aW9uLnBvaW50ZXJUeXBlKSAmJlxuICAgICAgIChidXR0b25zICYgaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJhZy5tb3VzZUJ1dHRvbnMpID09PSAwKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgYXJnLmFjdGlvbiA9IHtcbiAgICAgICAgbmFtZTogJ2RyYWcnLFxuICAgICAgICBheGlzOiAoZHJhZ09wdGlvbnMubG9ja0F4aXMgPT09ICdzdGFydCdcbiAgICAgICAgICA/IGRyYWdPcHRpb25zLnN0YXJ0QXhpc1xuICAgICAgICAgIDogZHJhZ09wdGlvbnMubG9ja0F4aXMpLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICB9LFxuICBkcmFnZ2FibGUsXG4gIGJlZm9yZU1vdmUsXG4gIG1vdmUsXG4gIGRlZmF1bHRzOiB7XG4gICAgc3RhcnRBeGlzIDogJ3h5JyxcbiAgICBsb2NrQXhpcyAgOiAneHknLFxuICB9IGFzIEludGVyYWN0LkRyb3B6b25lT3B0aW9ucyxcblxuICBnZXRDdXJzb3IgKCkge1xuICAgIHJldHVybiAnbW92ZSdcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZHJhZ1xuIiwidHlwZSBGaWx0ZXI8VD4gPSAoZWxlbWVudDogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gYm9vbGVhblxuXG5leHBvcnQgY29uc3QgY29udGFpbnMgPSA8VD4oYXJyYXk6IFRbXSwgdGFyZ2V0OiBUKSA9PiBhcnJheS5pbmRleE9mKHRhcmdldCkgIT09IC0xXG5cbmV4cG9ydCBjb25zdCByZW1vdmUgPSA8VD4oYXJyYXk6IFRbXSwgdGFyZ2V0OiBUKSA9PiBhcnJheS5zcGxpY2UoYXJyYXkuaW5kZXhPZih0YXJnZXQpLCAxKVxuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSA8VCwgVT4odGFyZ2V0OiBBcnJheTxUIHwgVT4sIHNvdXJjZTogVVtdKSA9PiB7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBzb3VyY2UpIHtcbiAgICB0YXJnZXQucHVzaChpdGVtKVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldFxufVxuXG5leHBvcnQgY29uc3QgZnJvbSA9IDxUID0gYW55Pihzb3VyY2U6IEFycmF5TGlrZTxUPikgPT4gbWVyZ2UoW10gYXMgVFtdLCBzb3VyY2UgYXMgVFtdKVxuXG5leHBvcnQgY29uc3QgZmluZEluZGV4ID0gPFQ+KGFycmF5OiBUW10sIGZ1bmM6IEZpbHRlcjxUPikgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZ1bmMoYXJyYXlbaV0sIGksIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuZXhwb3J0IGNvbnN0IGZpbmQgPSA8VCA9IGFueT4oYXJyYXk6IFRbXSwgZnVuYzogRmlsdGVyPFQ+KSA9PiBhcnJheVtmaW5kSW5kZXgoYXJyYXksIGZ1bmMpXVxuIiwiY29uc3QgZG9tT2JqZWN0czoge1xuICBpbml0OiBhbnlcbiAgZG9jdW1lbnQ6IERvY3VtZW50XG4gIERvY3VtZW50RnJhZ21lbnQ6IHR5cGVvZiBEb2N1bWVudEZyYWdtZW50XG4gIFNWR0VsZW1lbnQ6IHR5cGVvZiBTVkdFbGVtZW50XG4gIFNWR1NWR0VsZW1lbnQ6IHR5cGVvZiBTVkdTVkdFbGVtZW50XG4gIFNWR0VsZW1lbnRJbnN0YW5jZTogYW55XG4gIEVsZW1lbnQ6IHR5cGVvZiBFbGVtZW50XG4gIEhUTUxFbGVtZW50OiB0eXBlb2YgSFRNTEVsZW1lbnRcbiAgRXZlbnQ6IHR5cGVvZiBFdmVudFxuICBUb3VjaDogdHlwZW9mIFRvdWNoXG4gIFBvaW50ZXJFdmVudDogdHlwZW9mIFBvaW50ZXJFdmVudFxufSA9XG57XG4gIGluaXQsXG4gIGRvY3VtZW50OiBudWxsLFxuICBEb2N1bWVudEZyYWdtZW50OiBudWxsLFxuICBTVkdFbGVtZW50OiBudWxsLFxuICBTVkdTVkdFbGVtZW50OiBudWxsLFxuICBTVkdFbGVtZW50SW5zdGFuY2U6IG51bGwsXG4gIEVsZW1lbnQ6IG51bGwsXG4gIEhUTUxFbGVtZW50OiBudWxsLFxuICBFdmVudDogbnVsbCxcbiAgVG91Y2g6IG51bGwsXG4gIFBvaW50ZXJFdmVudDogbnVsbCxcbn1cblxuZnVuY3Rpb24gYmxhbmsgKCkge31cblxuZXhwb3J0IGRlZmF1bHQgZG9tT2JqZWN0c1xuXG5mdW5jdGlvbiBpbml0ICh3aW5kb3c6IFdpbmRvdykge1xuICBjb25zdCB3aW4gPSB3aW5kb3cgYXMgYW55XG5cbiAgZG9tT2JqZWN0cy5kb2N1bWVudCAgICAgICAgICAgPSB3aW4uZG9jdW1lbnRcbiAgZG9tT2JqZWN0cy5Eb2N1bWVudEZyYWdtZW50ICAgPSB3aW4uRG9jdW1lbnRGcmFnbWVudCAgIHx8IGJsYW5rXG4gIGRvbU9iamVjdHMuU1ZHRWxlbWVudCAgICAgICAgID0gd2luLlNWR0VsZW1lbnQgICAgICAgICB8fCBibGFua1xuICBkb21PYmplY3RzLlNWR1NWR0VsZW1lbnQgICAgICA9IHdpbi5TVkdTVkdFbGVtZW50ICAgICAgfHwgYmxhbmtcbiAgZG9tT2JqZWN0cy5TVkdFbGVtZW50SW5zdGFuY2UgPSB3aW4uU1ZHRWxlbWVudEluc3RhbmNlIHx8IGJsYW5rXG4gIGRvbU9iamVjdHMuRWxlbWVudCAgICAgICAgICAgID0gd2luLkVsZW1lbnQgICAgICAgICAgICB8fCBibGFua1xuICBkb21PYmplY3RzLkhUTUxFbGVtZW50ICAgICAgICA9IHdpbi5IVE1MRWxlbWVudCAgICAgICAgfHwgZG9tT2JqZWN0cy5FbGVtZW50XG5cbiAgZG9tT2JqZWN0cy5FdmVudCAgICAgICAgPSB3aW4uRXZlbnRcbiAgZG9tT2JqZWN0cy5Ub3VjaCAgICAgICAgPSB3aW4uVG91Y2ggfHwgYmxhbmtcbiAgZG9tT2JqZWN0cy5Qb2ludGVyRXZlbnQgPSAod2luLlBvaW50ZXJFdmVudCB8fCB3aW4uTVNQb2ludGVyRXZlbnQpXG59XG4iLCJpbXBvcnQgZG9tT2JqZWN0cyBmcm9tICcuL2RvbU9iamVjdHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICcuL2lzJ1xuaW1wb3J0IHdpbiBmcm9tICcuL3dpbmRvdydcblxuY29uc3QgYnJvd3NlciA9IHtcbiAgaW5pdCxcbiAgc3VwcG9ydHNUb3VjaDogbnVsbCBhcyBib29sZWFuLFxuICBzdXBwb3J0c1BvaW50ZXJFdmVudDogbnVsbCBhcyBib29sZWFuLFxuICBpc0lPUzc6IG51bGwgYXMgYm9vbGVhbixcbiAgaXNJT1M6IG51bGwgYXMgYm9vbGVhbixcbiAgaXNJZTk6IG51bGwgYXMgYm9vbGVhbixcbiAgaXNPcGVyYU1vYmlsZTogbnVsbCBhcyBib29sZWFuLFxuICBwcmVmaXhlZE1hdGNoZXNTZWxlY3RvcjogbnVsbCBhcyBzdHJpbmcsXG4gIHBFdmVudFR5cGVzOiBudWxsIGFzIHtcbiAgICB1cDogc3RyaW5nXG4gICAgZG93bjogc3RyaW5nXG4gICAgb3Zlcjogc3RyaW5nXG4gICAgb3V0OiBzdHJpbmdcbiAgICBtb3ZlOiBzdHJpbmdcbiAgICBjYW5jZWw6IHN0cmluZ1xuICB9LFxuICB3aGVlbEV2ZW50OiBudWxsIGFzIHN0cmluZyxcbn1cblxuZnVuY3Rpb24gaW5pdCAod2luZG93OiBhbnkpIHtcbiAgY29uc3QgRWxlbWVudCA9IGRvbU9iamVjdHMuRWxlbWVudFxuICBjb25zdCBuYXZpZ2F0b3IgID0gd2luLndpbmRvdy5uYXZpZ2F0b3JcblxuICAvLyBEb2VzIHRoZSBicm93c2VyIHN1cHBvcnQgdG91Y2ggaW5wdXQ/XG4gIGJyb3dzZXIuc3VwcG9ydHNUb3VjaCA9ICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpIHx8XG4gICAgKGlzLmZ1bmMod2luZG93LkRvY3VtZW50VG91Y2gpICYmIGRvbU9iamVjdHMuZG9jdW1lbnQgaW5zdGFuY2VvZiB3aW5kb3cuRG9jdW1lbnRUb3VjaClcblxuICAvLyBEb2VzIHRoZSBicm93c2VyIHN1cHBvcnQgUG9pbnRlckV2ZW50c1xuICBicm93c2VyLnN1cHBvcnRzUG9pbnRlckV2ZW50ID0gbmF2aWdhdG9yLnBvaW50ZXJFbmFibGVkICE9PSBmYWxzZSAmJiAhIWRvbU9iamVjdHMuUG9pbnRlckV2ZW50XG5cbiAgYnJvd3Nlci5pc0lPUyA9ICgvaVAoaG9uZXxvZHxhZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSlcblxuICAvLyBzY3JvbGxpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHJlc3VsdCBvZiBnZXRDbGllbnRSZWN0cyBvbiBpT1MgN1xuICBicm93c2VyLmlzSU9TNyA9ICgvaVAoaG9uZXxvZHxhZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSAmJlxuICAgICAgICAgICAvT1MgN1teXFxkXS8udGVzdChuYXZpZ2F0b3IuYXBwVmVyc2lvbikpXG5cbiAgYnJvd3Nlci5pc0llOSA9IC9NU0lFIDkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcblxuICAvLyBPcGVyYSBNb2JpbGUgbXVzdCBiZSBoYW5kbGVkIGRpZmZlcmVudGx5XG4gIGJyb3dzZXIuaXNPcGVyYU1vYmlsZSA9IChuYXZpZ2F0b3IuYXBwTmFtZSA9PT0gJ09wZXJhJyAmJlxuICAgIGJyb3dzZXIuc3VwcG9ydHNUb3VjaCAmJlxuICAgIC9QcmVzdG8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpXG5cbiAgLy8gcHJlZml4IG1hdGNoZXNTZWxlY3RvclxuICBicm93c2VyLnByZWZpeGVkTWF0Y2hlc1NlbGVjdG9yID0gJ21hdGNoZXMnIGluIEVsZW1lbnQucHJvdG90eXBlXG4gICAgPyAnbWF0Y2hlcydcbiAgICA6ICd3ZWJraXRNYXRjaGVzU2VsZWN0b3InIGluIEVsZW1lbnQucHJvdG90eXBlXG4gICAgICA/ICd3ZWJraXRNYXRjaGVzU2VsZWN0b3InXG4gICAgICA6ICdtb3pNYXRjaGVzU2VsZWN0b3InIGluIEVsZW1lbnQucHJvdG90eXBlXG4gICAgICAgID8gJ21vek1hdGNoZXNTZWxlY3RvcidcbiAgICAgICAgOiAnb01hdGNoZXNTZWxlY3RvcicgaW4gRWxlbWVudC5wcm90b3R5cGVcbiAgICAgICAgICA/ICdvTWF0Y2hlc1NlbGVjdG9yJ1xuICAgICAgICAgIDogJ21zTWF0Y2hlc1NlbGVjdG9yJ1xuXG4gIGJyb3dzZXIucEV2ZW50VHlwZXMgPSAoYnJvd3Nlci5zdXBwb3J0c1BvaW50ZXJFdmVudFxuICAgID8gKGRvbU9iamVjdHMuUG9pbnRlckV2ZW50ID09PSB3aW5kb3cuTVNQb2ludGVyRXZlbnRcbiAgICAgID8ge1xuICAgICAgICB1cDogICAgICdNU1BvaW50ZXJVcCcsXG4gICAgICAgIGRvd246ICAgJ01TUG9pbnRlckRvd24nLFxuICAgICAgICBvdmVyOiAgICdtb3VzZW92ZXInLFxuICAgICAgICBvdXQ6ICAgICdtb3VzZW91dCcsXG4gICAgICAgIG1vdmU6ICAgJ01TUG9pbnRlck1vdmUnLFxuICAgICAgICBjYW5jZWw6ICdNU1BvaW50ZXJDYW5jZWwnLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHVwOiAgICAgJ3BvaW50ZXJ1cCcsXG4gICAgICAgIGRvd246ICAgJ3BvaW50ZXJkb3duJyxcbiAgICAgICAgb3ZlcjogICAncG9pbnRlcm92ZXInLFxuICAgICAgICBvdXQ6ICAgICdwb2ludGVyb3V0JyxcbiAgICAgICAgbW92ZTogICAncG9pbnRlcm1vdmUnLFxuICAgICAgICBjYW5jZWw6ICdwb2ludGVyY2FuY2VsJyxcbiAgICAgIH0pXG4gICAgOiBudWxsKVxuXG4gIC8vIGJlY2F1c2UgV2Via2l0IGFuZCBPcGVyYSBzdGlsbCB1c2UgJ21vdXNld2hlZWwnIGV2ZW50IHR5cGVcbiAgYnJvd3Nlci53aGVlbEV2ZW50ID0gJ29ubW91c2V3aGVlbCcgaW4gZG9tT2JqZWN0cy5kb2N1bWVudCA/ICdtb3VzZXdoZWVsJyA6ICd3aGVlbCdcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnJvd3NlclxuIiwiaW1wb3J0ICogYXMgYXJyIGZyb20gJy4vYXJyJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnLi9pcydcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGJhbi10eXBlc1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvbmU8VCBleHRlbmRzIE9iamVjdD4gKHNvdXJjZTogVCk6IFBhcnRpYWw8VD4ge1xuICBjb25zdCBkZXN0ID0ge30gYXMgUGFydGlhbDxUPlxuXG4gIGZvciAoY29uc3QgcHJvcCBpbiBzb3VyY2UpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtwcm9wXVxuXG4gICAgaWYgKGlzLnBsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgZGVzdFtwcm9wXSA9IGNsb25lKHZhbHVlKSBhcyBhbnlcbiAgICB9XG4gICAgZWxzZSBpZiAoaXMuYXJyYXkodmFsdWUpKSB7XG4gICAgICBkZXN0W3Byb3BdID0gYXJyLmZyb20odmFsdWUpIGFzIHR5cGVvZiB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGRlc3RbcHJvcF0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXN0XG59XG4iLCJpbXBvcnQgYnJvd3NlciBmcm9tICcuL2Jyb3dzZXInXG5pbXBvcnQgZG9tT2JqZWN0cyBmcm9tICcuL2RvbU9iamVjdHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICcuL2lzJ1xuaW1wb3J0IHdpbiwgeyBnZXRXaW5kb3cgfSBmcm9tICcuL3dpbmRvdydcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVDb250YWlucyAocGFyZW50OiBOb2RlIHwgSW50ZXJhY3QuRXZlbnRUYXJnZXQsIGNoaWxkOiBOb2RlIHwgSW50ZXJhY3QuRXZlbnRUYXJnZXQpIHtcbiAgd2hpbGUgKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkID09PSBwYXJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY2hpbGQgPSAoY2hpbGQgYXMgTm9kZSkucGFyZW50Tm9kZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZXN0IChlbGVtZW50OiBOb2RlLCBzZWxlY3Rvcjogc3RyaW5nKSB7XG4gIHdoaWxlIChpcy5lbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgaWYgKG1hdGNoZXNTZWxlY3RvcihlbGVtZW50LCBzZWxlY3RvcikpIHsgcmV0dXJuIGVsZW1lbnQgfVxuXG4gICAgZWxlbWVudCA9IHBhcmVudE5vZGUoZWxlbWVudClcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJlbnROb2RlIChub2RlOiBOb2RlIHwgRG9jdW1lbnQpIHtcbiAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZVxuXG4gIGlmIChpcy5kb2NGcmFnKHBhcmVudCkpIHtcbiAgICAvLyBza2lwIHBhc3QgI3NoYWRvLXJvb3QgZnJhZ21lbnRzXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgd2hpbGUgKChwYXJlbnQgPSAocGFyZW50IGFzIGFueSkuaG9zdCkgJiYgaXMuZG9jRnJhZyhwYXJlbnQpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRcbiAgfVxuXG4gIHJldHVybiBwYXJlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXNTZWxlY3RvciAoZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCwgc2VsZWN0b3I6IHN0cmluZykge1xuICAvLyByZW1vdmUgL2RlZXAvIGZyb20gc2VsZWN0b3JzIGlmIHNoYWRvd0RPTSBwb2x5ZmlsbCBpcyB1c2VkXG4gIGlmICh3aW4ud2luZG93ICE9PSB3aW4ucmVhbFdpbmRvdykge1xuICAgIHNlbGVjdG9yID0gc2VsZWN0b3IucmVwbGFjZSgvXFwvZGVlcFxcLy9nLCAnICcpXG4gIH1cblxuICByZXR1cm4gZWxlbWVudFticm93c2VyLnByZWZpeGVkTWF0Y2hlc1NlbGVjdG9yXShzZWxlY3Rvcilcbn1cblxuY29uc3QgZ2V0UGFyZW50ID0gZWwgPT4gZWwucGFyZW50Tm9kZSA/IGVsLnBhcmVudE5vZGUgOiBlbC5ob3N0XG5cbi8vIFRlc3QgZm9yIHRoZSBlbGVtZW50IHRoYXQncyBcImFib3ZlXCIgYWxsIG90aGVyIHF1YWxpZmllcnNcbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mRGVlcGVzdEVsZW1lbnQgKGVsZW1lbnRzOiBJbnRlcmFjdC5FbGVtZW50W10gfCBOb2RlTGlzdE9mPEVsZW1lbnQ+KSB7XG4gIGxldCBkZWVwZXN0Wm9uZVBhcmVudHMgPSBbXVxuICBsZXQgZGVlcGVzdFpvbmUgPSBlbGVtZW50c1swXVxuICBsZXQgaW5kZXggPSBkZWVwZXN0Wm9uZSA/IDAgOiAtMVxuICBsZXQgaVxuICBsZXQgblxuXG4gIGZvciAoaSA9IDE7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGRyb3B6b25lID0gZWxlbWVudHNbaV1cblxuICAgIC8vIGFuIGVsZW1lbnQgbWlnaHQgYmVsb25nIHRvIG11bHRpcGxlIHNlbGVjdG9yIGRyb3B6b25lc1xuICAgIGlmICghZHJvcHpvbmUgfHwgZHJvcHpvbmUgPT09IGRlZXBlc3Rab25lKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICghZGVlcGVzdFpvbmUpIHtcbiAgICAgIGRlZXBlc3Rab25lID0gZHJvcHpvbmVcbiAgICAgIGluZGV4ID0gaVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB0aGUgZGVlcGVzdCBvciBjdXJyZW50IGFyZSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgb3IgZG9jdW1lbnQucm9vdEVsZW1lbnRcbiAgICAvLyAtIGlmIHRoZSBjdXJyZW50IGRyb3B6b25lIGlzLCBkbyBub3RoaW5nIGFuZCBjb250aW51ZVxuICAgIGlmIChkcm9wem9uZS5wYXJlbnROb2RlID09PSBkcm9wem9uZS5vd25lckRvY3VtZW50KSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICAvLyAtIGlmIGRlZXBlc3QgaXMsIHVwZGF0ZSB3aXRoIHRoZSBjdXJyZW50IGRyb3B6b25lIGFuZCBjb250aW51ZSB0byBuZXh0XG4gICAgZWxzZSBpZiAoZGVlcGVzdFpvbmUucGFyZW50Tm9kZSA9PT0gZHJvcHpvbmUub3duZXJEb2N1bWVudCkge1xuICAgICAgZGVlcGVzdFpvbmUgPSBkcm9wem9uZVxuICAgICAgaW5kZXggPSBpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIGNvbXBhcmUgekluZGV4IG9mIHNpYmxpbmdzXG4gICAgaWYgKGRyb3B6b25lLnBhcmVudE5vZGUgPT09IGRlZXBlc3Rab25lLnBhcmVudE5vZGUpIHtcbiAgICAgIGNvbnN0IGRlZXBlc3RaSW5kZXggPSBwYXJzZUludChnZXRXaW5kb3coZGVlcGVzdFpvbmUpLmdldENvbXB1dGVkU3R5bGUoZGVlcGVzdFpvbmUpLnpJbmRleCwgMTApIHx8IDBcbiAgICAgIGNvbnN0IGRyb3B6b25lWkluZGV4ID0gcGFyc2VJbnQoZ2V0V2luZG93KGRyb3B6b25lKS5nZXRDb21wdXRlZFN0eWxlKGRyb3B6b25lKS56SW5kZXgsIDEwKSB8fCAwXG5cbiAgICAgIGlmIChkcm9wem9uZVpJbmRleCA+PSBkZWVwZXN0WkluZGV4KSB7XG4gICAgICAgIGRlZXBlc3Rab25lID0gZHJvcHpvbmVcbiAgICAgICAgaW5kZXggPSBpXG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gcG9wdWxhdGUgdGhlIGFuY2VzdHJ5IGFycmF5IGZvciB0aGUgbGF0ZXN0IGRlZXBlc3QgZHJvcHpvbmVcbiAgICBpZiAoIWRlZXBlc3Rab25lUGFyZW50cy5sZW5ndGgpIHtcbiAgICAgIGxldCBwYXJlbnQgPSBkZWVwZXN0Wm9uZVxuICAgICAgbGV0IHBhcmVudFBhcmVudFxuXG4gICAgICB3aGlsZSAoKHBhcmVudFBhcmVudCA9IGdldFBhcmVudChwYXJlbnQpKSAmJiBwYXJlbnRQYXJlbnQgIT09IHBhcmVudC5vd25lckRvY3VtZW50KSB7XG4gICAgICAgIGRlZXBlc3Rab25lUGFyZW50cy51bnNoaWZ0KHBhcmVudClcbiAgICAgICAgcGFyZW50ID0gcGFyZW50UGFyZW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudFxuXG4gICAgLy8gaWYgdGhpcyBlbGVtZW50IGlzIGFuIHN2ZyBlbGVtZW50IGFuZCB0aGUgY3VycmVudCBkZWVwZXN0IGlzIGFuXG4gICAgLy8gSFRNTEVsZW1lbnRcbiAgICBpZiAoZGVlcGVzdFpvbmUgaW5zdGFuY2VvZiBkb21PYmplY3RzLkhUTUxFbGVtZW50ICYmXG4gICAgICAgIGRyb3B6b25lIGluc3RhbmNlb2YgZG9tT2JqZWN0cy5TVkdFbGVtZW50ICYmXG4gICAgICAgICEoZHJvcHpvbmUgaW5zdGFuY2VvZiBkb21PYmplY3RzLlNWR1NWR0VsZW1lbnQpKSB7XG4gICAgICBpZiAoZHJvcHpvbmUgPT09IGRlZXBlc3Rab25lLnBhcmVudE5vZGUpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgcGFyZW50ID0gZHJvcHpvbmUub3duZXJTVkdFbGVtZW50XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcGFyZW50ID0gZHJvcHpvbmVcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wem9uZVBhcmVudHMgPSBbXVxuXG4gICAgd2hpbGUgKHBhcmVudC5wYXJlbnROb2RlICE9PSBwYXJlbnQub3duZXJEb2N1bWVudCkge1xuICAgICAgZHJvcHpvbmVQYXJlbnRzLnVuc2hpZnQocGFyZW50KVxuICAgICAgcGFyZW50ID0gZ2V0UGFyZW50KHBhcmVudClcbiAgICB9XG5cbiAgICBuID0gMFxuXG4gICAgLy8gZ2V0IChwb3NpdGlvbiBvZiBsYXN0IGNvbW1vbiBhbmNlc3RvcikgKyAxXG4gICAgd2hpbGUgKGRyb3B6b25lUGFyZW50c1tuXSAmJiBkcm9wem9uZVBhcmVudHNbbl0gPT09IGRlZXBlc3Rab25lUGFyZW50c1tuXSkge1xuICAgICAgbisrXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50cyA9IFtcbiAgICAgIGRyb3B6b25lUGFyZW50c1tuIC0gMV0sXG4gICAgICBkcm9wem9uZVBhcmVudHNbbl0sXG4gICAgICBkZWVwZXN0Wm9uZVBhcmVudHNbbl0sXG4gICAgXVxuXG4gICAgbGV0IGNoaWxkID0gcGFyZW50c1swXS5sYXN0Q2hpbGRcblxuICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkID09PSBwYXJlbnRzWzFdKSB7XG4gICAgICAgIGRlZXBlc3Rab25lID0gZHJvcHpvbmVcbiAgICAgICAgaW5kZXggPSBpXG4gICAgICAgIGRlZXBlc3Rab25lUGFyZW50cyA9IGRyb3B6b25lUGFyZW50c1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBlbHNlIGlmIChjaGlsZCA9PT0gcGFyZW50c1syXSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjaGlsZCA9IGNoaWxkLnByZXZpb3VzU2libGluZ1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hlc1VwVG8gKGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsIHNlbGVjdG9yOiBzdHJpbmcsIGxpbWl0OiBOb2RlKSB7XG4gIHdoaWxlIChpcy5lbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgaWYgKG1hdGNoZXNTZWxlY3RvcihlbGVtZW50LCBzZWxlY3RvcikpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZWxlbWVudCA9IHBhcmVudE5vZGUoZWxlbWVudCkgYXMgSW50ZXJhY3QuRWxlbWVudFxuXG4gICAgaWYgKGVsZW1lbnQgPT09IGxpbWl0KSB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1NlbGVjdG9yKGVsZW1lbnQsIHNlbGVjdG9yKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0dWFsRWxlbWVudCAoZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCkge1xuICByZXR1cm4gKGVsZW1lbnQgaW5zdGFuY2VvZiBkb21PYmplY3RzLlNWR0VsZW1lbnRJbnN0YW5jZVxuICAgID8gKGVsZW1lbnQgYXMgU1ZHRWxlbWVudCkuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnRcbiAgICA6IGVsZW1lbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JvbGxYWSAocmVsZXZhbnRXaW5kb3cpIHtcbiAgcmVsZXZhbnRXaW5kb3cgPSByZWxldmFudFdpbmRvdyB8fCB3aW4ud2luZG93XG4gIHJldHVybiB7XG4gICAgeDogcmVsZXZhbnRXaW5kb3cuc2Nyb2xsWCB8fCByZWxldmFudFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICB5OiByZWxldmFudFdpbmRvdy5zY3JvbGxZIHx8IHJlbGV2YW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRDbGllbnRSZWN0IChlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSAoZWxlbWVudCBpbnN0YW5jZW9mIGRvbU9iamVjdHMuU1ZHRWxlbWVudFxuICAgID8gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIDogZWxlbWVudC5nZXRDbGllbnRSZWN0cygpWzBdKVxuXG4gIHJldHVybiBjbGllbnRSZWN0ICYmIHtcbiAgICBsZWZ0ICA6IGNsaWVudFJlY3QubGVmdCxcbiAgICByaWdodCA6IGNsaWVudFJlY3QucmlnaHQsXG4gICAgdG9wICAgOiBjbGllbnRSZWN0LnRvcCxcbiAgICBib3R0b206IGNsaWVudFJlY3QuYm90dG9tLFxuICAgIHdpZHRoIDogY2xpZW50UmVjdC53aWR0aCAgfHwgY2xpZW50UmVjdC5yaWdodCAgLSBjbGllbnRSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGllbnRSZWN0LmhlaWdodCB8fCBjbGllbnRSZWN0LmJvdHRvbSAtIGNsaWVudFJlY3QudG9wLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UmVjdCAoZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0RWxlbWVudENsaWVudFJlY3QoZWxlbWVudClcblxuICBpZiAoIWJyb3dzZXIuaXNJT1M3ICYmIGNsaWVudFJlY3QpIHtcbiAgICBjb25zdCBzY3JvbGwgPSBnZXRTY3JvbGxYWSh3aW4uZ2V0V2luZG93KGVsZW1lbnQpKVxuXG4gICAgY2xpZW50UmVjdC5sZWZ0ICAgKz0gc2Nyb2xsLnhcbiAgICBjbGllbnRSZWN0LnJpZ2h0ICArPSBzY3JvbGwueFxuICAgIGNsaWVudFJlY3QudG9wICAgICs9IHNjcm9sbC55XG4gICAgY2xpZW50UmVjdC5ib3R0b20gKz0gc2Nyb2xsLnlcbiAgfVxuXG4gIHJldHVybiBjbGllbnRSZWN0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoIChub2RlOiBOb2RlIHwgRG9jdW1lbnQpIHtcbiAgY29uc3QgcGF0aCA9IFtdXG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBwYXRoLnB1c2gobm9kZSlcbiAgICBub2RlID0gcGFyZW50Tm9kZShub2RlKVxuICB9XG5cbiAgcmV0dXJuIHBhdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyeVNlbGVjdG9yICh2YWx1ZSkge1xuICBpZiAoIWlzLnN0cmluZyh2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvLyBhbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaWYgaXQgaXMgaW52YWxpZFxuICBkb21PYmplY3RzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodmFsdWUpXG4gIHJldHVybiB0cnVlXG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIFBvaW50ZXJFeHRlbmQge1xuICB3ZWJraXQ6IFJlZ0V4cFxuICBbcHJlZml4OiBzdHJpbmddOiBSZWdFeHBcbn1cblxuZnVuY3Rpb24gcG9pbnRlckV4dGVuZCAoZGVzdCwgc291cmNlKSB7XG4gIGZvciAoY29uc3QgcHJvcCBpbiBzb3VyY2UpIHtcbiAgICBjb25zdCBwcmVmaXhlZFByb3BSRXMgPSBwb2ludGVyRXh0ZW5kLnByZWZpeGVkUHJvcFJFc1xuICAgIGxldCBkZXByZWNhdGVkID0gZmFsc2VcblxuICAgIC8vIHNraXAgZGVwcmVjYXRlZCBwcmVmaXhlZCBwcm9wZXJ0aWVzXG4gICAgZm9yIChjb25zdCB2ZW5kb3IgaW4gcHJlZml4ZWRQcm9wUkVzKSB7XG4gICAgICBpZiAocHJvcC5pbmRleE9mKHZlbmRvcikgPT09IDAgJiYgcHJlZml4ZWRQcm9wUkVzW3ZlbmRvcl0udGVzdChwcm9wKSkge1xuICAgICAgICBkZXByZWNhdGVkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZGVwcmVjYXRlZCAmJiB0eXBlb2Ygc291cmNlW3Byb3BdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkZXN0W3Byb3BdID0gc291cmNlW3Byb3BdXG4gICAgfVxuICB9XG4gIHJldHVybiBkZXN0XG59XG5cbnBvaW50ZXJFeHRlbmQucHJlZml4ZWRQcm9wUkVzID0ge1xuICB3ZWJraXQ6IC8oTW92ZW1lbnRbWFldfFJhZGl1c1tYWV18Um90YXRpb25BbmdsZXxGb3JjZSkkLyxcbiAgbW96OiAvKFByZXNzdXJlKSQvLFxufVxuXG5leHBvcnQgZGVmYXVsdCBwb2ludGVyRXh0ZW5kXG4iLCJleHBvcnQgZGVmYXVsdCAoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+ICBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSlcbiIsImltcG9ydCBicm93c2VyIGZyb20gJy4vYnJvd3NlcidcbmltcG9ydCBkb20gZnJvbSAnLi9kb21PYmplY3RzJ1xuaW1wb3J0ICogYXMgZG9tVXRpbHMgZnJvbSAnLi9kb21VdGlscydcbmltcG9ydCBoeXBvdCBmcm9tICcuL2h5cG90J1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnLi9pcydcbmltcG9ydCBwb2ludGVyRXh0ZW5kIGZyb20gJy4vcG9pbnRlckV4dGVuZCdcblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlDb29yZHMgKGRlc3Q6IEludGVyYWN0LkNvb3Jkc1NldE1lbWJlciwgc3JjOiBJbnRlcmFjdC5Db29yZHNTZXRNZW1iZXIpIHtcbiAgZGVzdC5wYWdlID0gZGVzdC5wYWdlIHx8IHt9IGFzIGFueVxuICBkZXN0LnBhZ2UueCA9IHNyYy5wYWdlLnhcbiAgZGVzdC5wYWdlLnkgPSBzcmMucGFnZS55XG5cbiAgZGVzdC5jbGllbnQgPSBkZXN0LmNsaWVudCB8fCB7fSBhcyBhbnlcbiAgZGVzdC5jbGllbnQueCA9IHNyYy5jbGllbnQueFxuICBkZXN0LmNsaWVudC55ID0gc3JjLmNsaWVudC55XG5cbiAgZGVzdC50aW1lU3RhbXAgPSBzcmMudGltZVN0YW1wXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb29yZERlbHRhcyAodGFyZ2V0T2JqOiBJbnRlcmFjdC5Db29yZHNTZXRNZW1iZXIsIHByZXY6IEludGVyYWN0LkNvb3Jkc1NldE1lbWJlciwgY3VyOiBJbnRlcmFjdC5Db29yZHNTZXRNZW1iZXIpIHtcbiAgdGFyZ2V0T2JqLnBhZ2UueCAgICA9IGN1ci5wYWdlLnggICAgLSBwcmV2LnBhZ2UueFxuICB0YXJnZXRPYmoucGFnZS55ICAgID0gY3VyLnBhZ2UueSAgICAtIHByZXYucGFnZS55XG4gIHRhcmdldE9iai5jbGllbnQueCAgPSBjdXIuY2xpZW50LnggIC0gcHJldi5jbGllbnQueFxuICB0YXJnZXRPYmouY2xpZW50LnkgID0gY3VyLmNsaWVudC55ICAtIHByZXYuY2xpZW50LnlcbiAgdGFyZ2V0T2JqLnRpbWVTdGFtcCA9IGN1ci50aW1lU3RhbXAgLSBwcmV2LnRpbWVTdGFtcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29vcmRWZWxvY2l0eSAodGFyZ2V0T2JqOiBJbnRlcmFjdC5Db29yZHNTZXRNZW1iZXIsIGRlbHRhOiBJbnRlcmFjdC5Db29yZHNTZXRNZW1iZXIpIHtcbiAgY29uc3QgZHQgPSBNYXRoLm1heChkZWx0YS50aW1lU3RhbXAgLyAxMDAwLCAwLjAwMSlcblxuICB0YXJnZXRPYmoucGFnZS54ICAgPSBkZWx0YS5wYWdlLnggLyBkdFxuICB0YXJnZXRPYmoucGFnZS55ICAgPSBkZWx0YS5wYWdlLnkgLyBkdFxuICB0YXJnZXRPYmouY2xpZW50LnggPSBkZWx0YS5jbGllbnQueCAvIGR0XG4gIHRhcmdldE9iai5jbGllbnQueSA9IGRlbHRhLmNsaWVudC55IC8gZHRcbiAgdGFyZ2V0T2JqLnRpbWVTdGFtcCA9IGR0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRaZXJvQ29vcmRzICh0YXJnZXRPYmo6IEludGVyYWN0LkNvb3Jkc1NldE1lbWJlcikge1xuICB0YXJnZXRPYmoucGFnZS54ID0gMFxuICB0YXJnZXRPYmoucGFnZS55ID0gMFxuICB0YXJnZXRPYmouY2xpZW50LnggPSAwXG4gIHRhcmdldE9iai5jbGllbnQueSA9IDBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmF0aXZlUG9pbnRlciAgKHBvaW50ZXI6IGFueSkge1xuICByZXR1cm4gKHBvaW50ZXIgaW5zdGFuY2VvZiBkb20uRXZlbnQgfHwgcG9pbnRlciBpbnN0YW5jZW9mIGRvbS5Ub3VjaClcbn1cblxuLy8gR2V0IHNwZWNpZmllZCBYL1kgY29vcmRzIGZvciBtb3VzZSBvciBldmVudC50b3VjaGVzWzBdXG5leHBvcnQgZnVuY3Rpb24gZ2V0WFkgKHR5cGUsIHBvaW50ZXIsIHh5KSB7XG4gIHh5ID0geHkgfHwge31cbiAgdHlwZSA9IHR5cGUgfHwgJ3BhZ2UnXG5cbiAgeHkueCA9IHBvaW50ZXJbdHlwZSArICdYJ11cbiAgeHkueSA9IHBvaW50ZXJbdHlwZSArICdZJ11cblxuICByZXR1cm4geHlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VYWSAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUgfCBJbnRlcmFjdC5JbnRlcmFjdEV2ZW50LCBwYWdlPzogSW50ZXJhY3QuUG9pbnQpIHtcbiAgcGFnZSA9IHBhZ2UgfHwgeyB4OiAwLCB5OiAwIH1cblxuICAvLyBPcGVyYSBNb2JpbGUgaGFuZGxlcyB0aGUgdmlld3BvcnQgYW5kIHNjcm9sbGluZyBvZGRseVxuICBpZiAoYnJvd3Nlci5pc09wZXJhTW9iaWxlICYmIGlzTmF0aXZlUG9pbnRlcihwb2ludGVyKSkge1xuICAgIGdldFhZKCdzY3JlZW4nLCBwb2ludGVyLCBwYWdlKVxuXG4gICAgcGFnZS54ICs9IHdpbmRvdy5zY3JvbGxYXG4gICAgcGFnZS55ICs9IHdpbmRvdy5zY3JvbGxZXG4gIH1cbiAgZWxzZSB7XG4gICAgZ2V0WFkoJ3BhZ2UnLCBwb2ludGVyLCBwYWdlKVxuICB9XG5cbiAgcmV0dXJuIHBhZ2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFhZIChwb2ludGVyLCBjbGllbnQpIHtcbiAgY2xpZW50ID0gY2xpZW50IHx8IHt9XG5cbiAgaWYgKGJyb3dzZXIuaXNPcGVyYU1vYmlsZSAmJiBpc05hdGl2ZVBvaW50ZXIocG9pbnRlcikpIHtcbiAgICAvLyBPcGVyYSBNb2JpbGUgaGFuZGxlcyB0aGUgdmlld3BvcnQgYW5kIHNjcm9sbGluZyBvZGRseVxuICAgIGdldFhZKCdzY3JlZW4nLCBwb2ludGVyLCBjbGllbnQpXG4gIH1cbiAgZWxzZSB7XG4gICAgZ2V0WFkoJ2NsaWVudCcsIHBvaW50ZXIsIGNsaWVudClcbiAgfVxuXG4gIHJldHVybiBjbGllbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvaW50ZXJJZCAocG9pbnRlcikge1xuICByZXR1cm4gaXMubnVtYmVyKHBvaW50ZXIucG9pbnRlcklkKSA/IHBvaW50ZXIucG9pbnRlcklkIDogcG9pbnRlci5pZGVudGlmaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb29yZHMgKHRhcmdldE9iaiwgcG9pbnRlcnM6IGFueVtdLCB0aW1lU3RhbXA6IG51bWJlcikge1xuICBjb25zdCBwb2ludGVyID0gKHBvaW50ZXJzLmxlbmd0aCA+IDFcbiAgICA/IHBvaW50ZXJBdmVyYWdlKHBvaW50ZXJzKVxuICAgIDogcG9pbnRlcnNbMF0pXG5cbiAgY29uc3QgdG1wWFkgPSB7fSBhcyB7IHg6IG51bWJlciwgeTogbnVtYmVyIH1cblxuICBnZXRQYWdlWFkocG9pbnRlciwgdG1wWFkpXG4gIHRhcmdldE9iai5wYWdlLnggPSB0bXBYWS54XG4gIHRhcmdldE9iai5wYWdlLnkgPSB0bXBYWS55XG5cbiAgZ2V0Q2xpZW50WFkocG9pbnRlciwgdG1wWFkpXG4gIHRhcmdldE9iai5jbGllbnQueCA9IHRtcFhZLnhcbiAgdGFyZ2V0T2JqLmNsaWVudC55ID0gdG1wWFkueVxuXG4gIHRhcmdldE9iai50aW1lU3RhbXAgPSB0aW1lU3RhbXBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvdWNoUGFpciAoZXZlbnQpIHtcbiAgY29uc3QgdG91Y2hlcyA9IFtdXG5cbiAgLy8gYXJyYXkgb2YgdG91Y2hlcyBpcyBzdXBwbGllZFxuICBpZiAoaXMuYXJyYXkoZXZlbnQpKSB7XG4gICAgdG91Y2hlc1swXSA9IGV2ZW50WzBdXG4gICAgdG91Y2hlc1sxXSA9IGV2ZW50WzFdXG4gIH1cbiAgLy8gYW4gZXZlbnRcbiAgZWxzZSB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b3VjaGVuZCcpIHtcbiAgICAgIGlmIChldmVudC50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0b3VjaGVzWzBdID0gZXZlbnQudG91Y2hlc1swXVxuICAgICAgICB0b3VjaGVzWzFdID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRvdWNoZXNbMF0gPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXVxuICAgICAgICB0b3VjaGVzWzFdID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMV1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0b3VjaGVzWzBdID0gZXZlbnQudG91Y2hlc1swXVxuICAgICAgdG91Y2hlc1sxXSA9IGV2ZW50LnRvdWNoZXNbMV1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG91Y2hlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRlckF2ZXJhZ2UgKHBvaW50ZXJzOiBQb2ludGVyRXZlbnRbXSB8IEV2ZW50W10pIHtcbiAgY29uc3QgYXZlcmFnZSA9IHtcbiAgICBwYWdlWCAgOiAwLFxuICAgIHBhZ2VZICA6IDAsXG4gICAgY2xpZW50WDogMCxcbiAgICBjbGllbnRZOiAwLFxuICAgIHNjcmVlblg6IDAsXG4gICAgc2NyZWVuWTogMCxcbiAgfVxuXG4gIGZvciAoY29uc3QgcG9pbnRlciBvZiBwb2ludGVycykge1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiBhdmVyYWdlKSB7XG4gICAgICBhdmVyYWdlW3Byb3BdICs9IHBvaW50ZXJbcHJvcF1cbiAgICB9XG4gIH1cbiAgZm9yIChjb25zdCBwcm9wIGluIGF2ZXJhZ2UpIHtcbiAgICBhdmVyYWdlW3Byb3BdIC89IHBvaW50ZXJzLmxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIGF2ZXJhZ2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvdWNoQkJveCAoZXZlbnQ6IEV2ZW50IHwgQXJyYXk8KEludGVyYWN0LlBvaW50ZXJUeXBlKSB8IFRvdWNoRXZlbnQ+KSB7XG4gIGlmICghKGV2ZW50IGFzIGFueSkubGVuZ3RoICYmXG4gICAgICAhKChldmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzICYmXG4gICAgICAgIChldmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA+IDEpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IHRvdWNoZXMgPSBnZXRUb3VjaFBhaXIoZXZlbnQpXG4gIGNvbnN0IG1pblggPSBNYXRoLm1pbih0b3VjaGVzWzBdLnBhZ2VYLCB0b3VjaGVzWzFdLnBhZ2VYKVxuICBjb25zdCBtaW5ZID0gTWF0aC5taW4odG91Y2hlc1swXS5wYWdlWSwgdG91Y2hlc1sxXS5wYWdlWSlcbiAgY29uc3QgbWF4WCA9IE1hdGgubWF4KHRvdWNoZXNbMF0ucGFnZVgsIHRvdWNoZXNbMV0ucGFnZVgpXG4gIGNvbnN0IG1heFkgPSBNYXRoLm1heCh0b3VjaGVzWzBdLnBhZ2VZLCB0b3VjaGVzWzFdLnBhZ2VZKVxuXG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIGxlZnQ6IG1pblgsXG4gICAgdG9wOiBtaW5ZLFxuICAgIHJpZ2h0OiBtYXhYLFxuICAgIGJvdHRvbTogbWF4WSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG91Y2hEaXN0YW5jZSAoZXZlbnQsIGRlbHRhU291cmNlKSB7XG4gIGNvbnN0IHNvdXJjZVggPSBkZWx0YVNvdXJjZSArICdYJ1xuICBjb25zdCBzb3VyY2VZID0gZGVsdGFTb3VyY2UgKyAnWSdcbiAgY29uc3QgdG91Y2hlcyA9IGdldFRvdWNoUGFpcihldmVudClcblxuICBjb25zdCBkeCA9IHRvdWNoZXNbMF1bc291cmNlWF0gLSB0b3VjaGVzWzFdW3NvdXJjZVhdXG4gIGNvbnN0IGR5ID0gdG91Y2hlc1swXVtzb3VyY2VZXSAtIHRvdWNoZXNbMV1bc291cmNlWV1cblxuICByZXR1cm4gaHlwb3QoZHgsIGR5KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG91Y2hBbmdsZSAoZXZlbnQsIGRlbHRhU291cmNlKSB7XG4gIGNvbnN0IHNvdXJjZVggPSBkZWx0YVNvdXJjZSArICdYJ1xuICBjb25zdCBzb3VyY2VZID0gZGVsdGFTb3VyY2UgKyAnWSdcbiAgY29uc3QgdG91Y2hlcyA9IGdldFRvdWNoUGFpcihldmVudClcbiAgY29uc3QgZHggPSB0b3VjaGVzWzFdW3NvdXJjZVhdIC0gdG91Y2hlc1swXVtzb3VyY2VYXVxuICBjb25zdCBkeSA9IHRvdWNoZXNbMV1bc291cmNlWV0gLSB0b3VjaGVzWzBdW3NvdXJjZVldXG4gIGNvbnN0IGFuZ2xlID0gMTgwICogTWF0aC5hdGFuMihkeSwgZHgpIC8gTWF0aC5QSVxuXG4gIHJldHVybiAgYW5nbGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvaW50ZXJUeXBlIChwb2ludGVyKSB7XG4gIHJldHVybiBpcy5zdHJpbmcocG9pbnRlci5wb2ludGVyVHlwZSlcbiAgICA/IHBvaW50ZXIucG9pbnRlclR5cGVcbiAgICA6IGlzLm51bWJlcihwb2ludGVyLnBvaW50ZXJUeXBlKVxuICAgICAgPyBbdW5kZWZpbmVkLCB1bmRlZmluZWQsICd0b3VjaCcsICdwZW4nLCAnbW91c2UnXVtwb2ludGVyLnBvaW50ZXJUeXBlXVxuICAgICAgLy8gaWYgdGhlIFBvaW50ZXJFdmVudCBBUEkgaXNuJ3QgYXZhaWxhYmxlLCB0aGVuIHRoZSBcInBvaW50ZXJcIiBtdXN0XG4gICAgICAvLyBiZSBlaXRoZXIgYSBNb3VzZUV2ZW50LCBUb3VjaEV2ZW50LCBvciBUb3VjaCBvYmplY3RcbiAgICAgIDogL3RvdWNoLy50ZXN0KHBvaW50ZXIudHlwZSkgfHwgcG9pbnRlciBpbnN0YW5jZW9mIGRvbS5Ub3VjaFxuICAgICAgICA/ICd0b3VjaCdcbiAgICAgICAgOiAnbW91c2UnXG59XG5cbi8vIFsgZXZlbnQudGFyZ2V0LCBldmVudC5jdXJyZW50VGFyZ2V0IF1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudFRhcmdldHMgKGV2ZW50KSB7XG4gIGNvbnN0IHBhdGggPSBpcy5mdW5jKGV2ZW50LmNvbXBvc2VkUGF0aCkgPyBldmVudC5jb21wb3NlZFBhdGgoKSA6IGV2ZW50LnBhdGhcblxuICByZXR1cm4gW1xuICAgIGRvbVV0aWxzLmdldEFjdHVhbEVsZW1lbnQocGF0aCA/IHBhdGhbMF0gOiBldmVudC50YXJnZXQpLFxuICAgIGRvbVV0aWxzLmdldEFjdHVhbEVsZW1lbnQoZXZlbnQuY3VycmVudFRhcmdldCksXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0Nvb3JkcyAoKTogSW50ZXJhY3QuQ29vcmRzU2V0TWVtYmVyIHtcbiAgcmV0dXJuIHtcbiAgICBwYWdlICAgICA6IHsgeDogMCwgeTogMCB9LFxuICAgIGNsaWVudCAgIDogeyB4OiAwLCB5OiAwIH0sXG4gICAgdGltZVN0YW1wOiAwLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb29yZHNUb0V2ZW50IChjb29yZHM6IE1vY2tDb29yZHMpIHtcbiAgY29uc3QgZXZlbnQgPSB7XG4gICAgY29vcmRzLFxuICAgIGdldCBwYWdlICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLnBhZ2UgfSxcbiAgICBnZXQgY2xpZW50ICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLmNsaWVudCB9LFxuICAgIGdldCB0aW1lU3RhbXAgKCkgeyByZXR1cm4gdGhpcy5jb29yZHMudGltZVN0YW1wIH0sXG4gICAgZ2V0IHBhZ2VYICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLnBhZ2UueCB9LFxuICAgIGdldCBwYWdlWSAoKSB7IHJldHVybiB0aGlzLmNvb3Jkcy5wYWdlLnkgfSxcbiAgICBnZXQgY2xpZW50WCAoKSB7IHJldHVybiB0aGlzLmNvb3Jkcy5jbGllbnQueCB9LFxuICAgIGdldCBjbGllbnRZICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLmNsaWVudC55IH0sXG4gICAgZ2V0IHBvaW50ZXJJZCAoKSB7IHJldHVybiB0aGlzLmNvb3Jkcy5wb2ludGVySWQgfSxcbiAgICBnZXQgdGFyZ2V0ICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLnRhcmdldCB9LFxuICAgIGdldCB0eXBlICgpIHsgcmV0dXJuIHRoaXMuY29vcmRzLnR5cGUgfSxcbiAgICBnZXQgcG9pbnRlclR5cGUgKCkgeyByZXR1cm4gdGhpcy5jb29yZHMucG9pbnRlclR5cGUgfSxcbiAgICBnZXQgYnV0dG9ucyAoKSB7IHJldHVybiB0aGlzLmNvb3Jkcy5idXR0b25zIH0sXG4gICAgcHJldmVudERlZmF1bHQgKCkge30sXG4gIH1cblxuICByZXR1cm4gZXZlbnQgYXMgdHlwZW9mIGV2ZW50ICYgSW50ZXJhY3QuUG9pbnRlclR5cGUgJiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja0Nvb3JkcyB7XG4gIHBhZ2U6IEludGVyYWN0LlBvaW50XG4gIGNsaWVudDogSW50ZXJhY3QuUG9pbnRcbiAgdGltZVN0YW1wPzogbnVtYmVyXG4gIHBvaW50ZXJJZD86IGFueVxuICB0YXJnZXQ/OiBhbnlcbiAgdHlwZT86IHN0cmluZ1xuICBwb2ludGVyVHlwZT86IHN0cmluZ1xuICBidXR0b25zPzogbnVtYmVyXG59XG5cbmV4cG9ydCB7IHBvaW50ZXJFeHRlbmQgfVxuIiwiaW1wb3J0IHsgY29udGFpbnMgfSBmcm9tICcuL2FycidcbmltcG9ydCAqIGFzIGRvbVV0aWxzIGZyb20gJy4vZG9tVXRpbHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICcuL2lzJ1xuaW1wb3J0IHBFeHRlbmQgZnJvbSAnLi9wb2ludGVyRXh0ZW5kJ1xuaW1wb3J0ICogYXMgcG9pbnRlclV0aWxzIGZyb20gJy4vcG9pbnRlclV0aWxzJ1xuXG50eXBlIExpc3RlbmVyID0gKGV2ZW50OiBFdmVudCB8IEZha2VFdmVudCkgPT4gYW55XG5cbmNvbnN0IGVsZW1lbnRzOiBFdmVudFRhcmdldFtdID0gW11cbmNvbnN0IHRhcmdldHM6IEFycmF5PHtcbiAgZXZlbnRzOiB7IFt0eXBlOiBzdHJpbmddOiBMaXN0ZW5lcltdIH1cbiAgdHlwZUNvdW50OiBudW1iZXJcbn0+ID0gW11cblxuY29uc3QgZGVsZWdhdGVkRXZlbnRzOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgc2VsZWN0b3JzOiBzdHJpbmdbXVxuICAgIGNvbnRleHRzOiBOb2RlW11cbiAgICBsaXN0ZW5lcnM6IEFycmF5PEFycmF5PFtMaXN0ZW5lciwgYm9vbGVhbiwgYm9vbGVhbl0+PlxuICB9XG59ID0ge31cbmNvbnN0IGRvY3VtZW50czogRG9jdW1lbnRbXSA9IFtdXG5cbmZ1bmN0aW9uIGFkZCAoZWxlbWVudDogRXZlbnRUYXJnZXQsIHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IExpc3RlbmVyLCBvcHRpb25hbEFyZz86IGJvb2xlYW4gfCBhbnkpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnMob3B0aW9uYWxBcmcpXG4gIGxldCBlbGVtZW50SW5kZXggPSBlbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpXG4gIGxldCB0YXJnZXQgPSB0YXJnZXRzW2VsZW1lbnRJbmRleF1cblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRhcmdldCA9IHtcbiAgICAgIGV2ZW50czoge30sXG4gICAgICB0eXBlQ291bnQ6IDAsXG4gICAgfVxuXG4gICAgZWxlbWVudEluZGV4ID0gZWxlbWVudHMucHVzaChlbGVtZW50KSAtIDFcbiAgICB0YXJnZXRzLnB1c2godGFyZ2V0KVxuICB9XG5cbiAgaWYgKCF0YXJnZXQuZXZlbnRzW3R5cGVdKSB7XG4gICAgdGFyZ2V0LmV2ZW50c1t0eXBlXSA9IFtdXG4gICAgdGFyZ2V0LnR5cGVDb3VudCsrXG4gIH1cblxuICBpZiAoZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyICYmICFjb250YWlucyh0YXJnZXQuZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcikpIHtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIgYXMgYW55LCBldmVudHMuc3VwcG9ydHNPcHRpb25zID8gb3B0aW9ucyA6ICEhb3B0aW9ucy5jYXB0dXJlKVxuICAgIHRhcmdldC5ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUgKGVsZW1lbnQ6IEV2ZW50VGFyZ2V0LCB0eXBlOiBzdHJpbmcsIGxpc3RlbmVyPzogJ2FsbCcgfCBMaXN0ZW5lciwgb3B0aW9uYWxBcmc/OiBib29sZWFuIHwgYW55KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRPcHRpb25zKG9wdGlvbmFsQXJnKVxuICBjb25zdCBlbGVtZW50SW5kZXggPSBlbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpXG4gIGNvbnN0IHRhcmdldCA9IHRhcmdldHNbZWxlbWVudEluZGV4XVxuXG4gIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQuZXZlbnRzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ2FsbCcpIHtcbiAgICBmb3IgKHR5cGUgaW4gdGFyZ2V0LmV2ZW50cykge1xuICAgICAgaWYgKHRhcmdldC5ldmVudHMuaGFzT3duUHJvcGVydHkodHlwZSkpIHtcbiAgICAgICAgcmVtb3ZlKGVsZW1lbnQsIHR5cGUsICdhbGwnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICh0YXJnZXQuZXZlbnRzW3R5cGVdKSB7XG4gICAgY29uc3QgbGVuID0gdGFyZ2V0LmV2ZW50c1t0eXBlXS5sZW5ndGhcblxuICAgIGlmIChsaXN0ZW5lciA9PT0gJ2FsbCcpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlKGVsZW1lbnQsIHR5cGUsIHRhcmdldC5ldmVudHNbdHlwZV1baV0sIG9wdGlvbnMpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgdGFyZ2V0LmV2ZW50c1t0eXBlXVtpXSA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIgYXMgYW55LCBldmVudHMuc3VwcG9ydHNPcHRpb25zID8gb3B0aW9ucyA6ICEhb3B0aW9ucy5jYXB0dXJlKVxuICAgICAgICAgIHRhcmdldC5ldmVudHNbdHlwZV0uc3BsaWNlKGksIDEpXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldC5ldmVudHNbdHlwZV0gJiYgdGFyZ2V0LmV2ZW50c1t0eXBlXS5sZW5ndGggPT09IDApIHtcbiAgICAgICh0YXJnZXQuZXZlbnRzW3R5cGVdIGFzIGFueSkgPSBudWxsXG4gICAgICB0YXJnZXQudHlwZUNvdW50LS1cbiAgICB9XG4gIH1cblxuICBpZiAoIXRhcmdldC50eXBlQ291bnQpIHtcbiAgICB0YXJnZXRzLnNwbGljZShlbGVtZW50SW5kZXgsIDEpXG4gICAgZWxlbWVudHMuc3BsaWNlKGVsZW1lbnRJbmRleCwgMSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGREZWxlZ2F0ZSAoc2VsZWN0b3I6IHN0cmluZywgY29udGV4dDogTm9kZSwgdHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogTGlzdGVuZXIsIG9wdGlvbmFsQXJnPzogYW55KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRPcHRpb25zKG9wdGlvbmFsQXJnKVxuICBpZiAoIWRlbGVnYXRlZEV2ZW50c1t0eXBlXSkge1xuICAgIGRlbGVnYXRlZEV2ZW50c1t0eXBlXSA9IHtcbiAgICAgIGNvbnRleHRzIDogW10sXG4gICAgICBsaXN0ZW5lcnM6IFtdLFxuICAgICAgc2VsZWN0b3JzOiBbXSxcbiAgICB9XG5cbiAgICAvLyBhZGQgZGVsZWdhdGUgbGlzdGVuZXIgZnVuY3Rpb25zXG4gICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jdW1lbnRzKSB7XG4gICAgICBhZGQoZG9jLCB0eXBlLCBkZWxlZ2F0ZUxpc3RlbmVyKVxuICAgICAgYWRkKGRvYywgdHlwZSwgZGVsZWdhdGVVc2VDYXB0dXJlLCB0cnVlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRlbGVnYXRlZCA9IGRlbGVnYXRlZEV2ZW50c1t0eXBlXVxuICBsZXQgaW5kZXhcblxuICBmb3IgKGluZGV4ID0gZGVsZWdhdGVkLnNlbGVjdG9ycy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgaWYgKGRlbGVnYXRlZC5zZWxlY3RvcnNbaW5kZXhdID09PSBzZWxlY3RvciAmJlxuICAgICAgICBkZWxlZ2F0ZWQuY29udGV4dHNbaW5kZXhdID09PSBjb250ZXh0KSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICBpbmRleCA9IGRlbGVnYXRlZC5zZWxlY3RvcnMubGVuZ3RoXG5cbiAgICBkZWxlZ2F0ZWQuc2VsZWN0b3JzLnB1c2goc2VsZWN0b3IpXG4gICAgZGVsZWdhdGVkLmNvbnRleHRzLnB1c2goY29udGV4dClcbiAgICBkZWxlZ2F0ZWQubGlzdGVuZXJzLnB1c2goW10pXG4gIH1cblxuICAvLyBrZWVwIGxpc3RlbmVyIGFuZCBjYXB0dXJlIGFuZCBwYXNzaXZlIGZsYWdzXG4gIGRlbGVnYXRlZC5saXN0ZW5lcnNbaW5kZXhdLnB1c2goW2xpc3RlbmVyLCAhIW9wdGlvbnMuY2FwdHVyZSwgb3B0aW9ucy5wYXNzaXZlXSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGVsZWdhdGUgKFxuICBzZWxlY3Rvcjogc3RyaW5nLFxuICBjb250ZXh0OiBEb2N1bWVudCB8IEludGVyYWN0LkVsZW1lbnQsXG4gIHR5cGU6IHN0cmluZyxcbiAgbGlzdGVuZXI/OiBMaXN0ZW5lcixcbiAgb3B0aW9uYWxBcmc/OiBhbnksXG4pIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnMob3B0aW9uYWxBcmcpXG4gIGNvbnN0IGRlbGVnYXRlZCA9IGRlbGVnYXRlZEV2ZW50c1t0eXBlXVxuICBsZXQgbWF0Y2hGb3VuZCA9IGZhbHNlXG4gIGxldCBpbmRleFxuXG4gIGlmICghZGVsZWdhdGVkKSB7IHJldHVybiB9XG5cbiAgLy8gY291bnQgZnJvbSBsYXN0IGluZGV4IG9mIGRlbGVnYXRlZCB0byAwXG4gIGZvciAoaW5kZXggPSBkZWxlZ2F0ZWQuc2VsZWN0b3JzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAvLyBsb29rIGZvciBtYXRjaGluZyBzZWxlY3RvciBhbmQgY29udGV4dCBOb2RlXG4gICAgaWYgKGRlbGVnYXRlZC5zZWxlY3RvcnNbaW5kZXhdID09PSBzZWxlY3RvciAmJlxuICAgICAgICBkZWxlZ2F0ZWQuY29udGV4dHNbaW5kZXhdID09PSBjb250ZXh0KSB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBkZWxlZ2F0ZWQubGlzdGVuZXJzW2luZGV4XVxuXG4gICAgICAvLyBlYWNoIGl0ZW0gb2YgdGhlIGxpc3RlbmVycyBhcnJheSBpcyBhbiBhcnJheTogW2Z1bmN0aW9uLCBjYXB0dXJlLCBwYXNzaXZlXVxuICAgICAgZm9yIChsZXQgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBbZm4sIGNhcHR1cmUsIHBhc3NpdmVdID0gbGlzdGVuZXJzW2ldXG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGxpc3RlbmVyIGZ1bmN0aW9ucyBhbmQgY2FwdHVyZSBhbmQgcGFzc2l2ZSBmbGFncyBtYXRjaFxuICAgICAgICBpZiAoZm4gPT09IGxpc3RlbmVyICYmIGNhcHR1cmUgPT09ICEhb3B0aW9ucy5jYXB0dXJlICYmIHBhc3NpdmUgPT09IG9wdGlvbnMucGFzc2l2ZSkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgbGlzdGVuZXIgZnJvbSB0aGUgYXJyYXkgb2YgbGlzdGVuZXJzXG4gICAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKVxuXG4gICAgICAgICAgLy8gaWYgYWxsIGxpc3RlbmVycyBmb3IgdGhpcyBpbnRlcmFjdGFibGUgaGF2ZSBiZWVuIHJlbW92ZWRcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGludGVyYWN0YWJsZSBmcm9tIHRoZSBkZWxlZ2F0ZWQgYXJyYXlzXG4gICAgICAgICAgaWYgKCFsaXN0ZW5lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWxlZ2F0ZWQuc2VsZWN0b3JzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgICAgIGRlbGVnYXRlZC5jb250ZXh0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgICAgICBkZWxlZ2F0ZWQubGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSlcblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGRlbGVnYXRlIGZ1bmN0aW9uIGZyb20gY29udGV4dFxuICAgICAgICAgICAgcmVtb3ZlKGNvbnRleHQsIHR5cGUsIGRlbGVnYXRlTGlzdGVuZXIpXG4gICAgICAgICAgICByZW1vdmUoY29udGV4dCwgdHlwZSwgZGVsZWdhdGVVc2VDYXB0dXJlLCB0cnVlKVxuXG4gICAgICAgICAgICAvLyByZW1vdmUgdGhlIGFycmF5cyBpZiB0aGV5IGFyZSBlbXB0eVxuICAgICAgICAgICAgaWYgKCFkZWxlZ2F0ZWQuc2VsZWN0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBkZWxlZ2F0ZWRFdmVudHNbdHlwZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gb25seSByZW1vdmUgb25lIGxpc3RlbmVyXG4gICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaEZvdW5kKSB7IGJyZWFrIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gYm91bmQgdG8gdGhlIGludGVyYWN0YWJsZSBjb250ZXh0IHdoZW4gYSBET00gZXZlbnRcbi8vIGxpc3RlbmVyIGlzIGFkZGVkIHRvIGEgc2VsZWN0b3IgaW50ZXJhY3RhYmxlXG5mdW5jdGlvbiBkZWxlZ2F0ZUxpc3RlbmVyIChldmVudDogRXZlbnQsIG9wdGlvbmFsQXJnPzogYW55KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRPcHRpb25zKG9wdGlvbmFsQXJnKVxuICBjb25zdCBmYWtlRXZlbnQgPSBuZXcgRmFrZUV2ZW50KGV2ZW50KVxuICBjb25zdCBkZWxlZ2F0ZWQgPSBkZWxlZ2F0ZWRFdmVudHNbZXZlbnQudHlwZV1cbiAgY29uc3QgW2V2ZW50VGFyZ2V0XSA9IChwb2ludGVyVXRpbHMuZ2V0RXZlbnRUYXJnZXRzKGV2ZW50KSlcbiAgbGV0IGVsZW1lbnQ6IE5vZGUgPSBldmVudFRhcmdldFxuXG4gIC8vIGNsaW1iIHVwIGRvY3VtZW50IHRyZWUgbG9va2luZyBmb3Igc2VsZWN0b3IgbWF0Y2hlc1xuICB3aGlsZSAoaXMuZWxlbWVudChlbGVtZW50KSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsZWdhdGVkLnNlbGVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBkZWxlZ2F0ZWQuc2VsZWN0b3JzW2ldXG4gICAgICBjb25zdCBjb250ZXh0ID0gZGVsZWdhdGVkLmNvbnRleHRzW2ldXG5cbiAgICAgIGlmIChkb21VdGlscy5tYXRjaGVzU2VsZWN0b3IoZWxlbWVudCwgc2VsZWN0b3IpICYmXG4gICAgICAgICAgZG9tVXRpbHMubm9kZUNvbnRhaW5zKGNvbnRleHQsIGV2ZW50VGFyZ2V0KSAmJlxuICAgICAgICAgIGRvbVV0aWxzLm5vZGVDb250YWlucyhjb250ZXh0LCBlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSBkZWxlZ2F0ZWQubGlzdGVuZXJzW2ldXG5cbiAgICAgICAgZmFrZUV2ZW50LmN1cnJlbnRUYXJnZXQgPSBlbGVtZW50XG5cbiAgICAgICAgZm9yIChjb25zdCBbZm4sIGNhcHR1cmUsIHBhc3NpdmVdIG9mIGxpc3RlbmVycykge1xuICAgICAgICAgIGlmIChjYXB0dXJlID09PSAhIW9wdGlvbnMuY2FwdHVyZSAmJiBwYXNzaXZlID09PSBvcHRpb25zLnBhc3NpdmUpIHtcbiAgICAgICAgICAgIGZuKGZha2VFdmVudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbGVtZW50ID0gZG9tVXRpbHMucGFyZW50Tm9kZShlbGVtZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlbGVnYXRlVXNlQ2FwdHVyZSAoZXZlbnQ6IEV2ZW50KSB7XG4gIHJldHVybiBkZWxlZ2F0ZUxpc3RlbmVyLmNhbGwodGhpcywgZXZlbnQsIHRydWUpXG59XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnMgKHBhcmFtOiBvYmplY3QpIHtcbiAgcmV0dXJuIGlzLm9iamVjdChwYXJhbSkgPyBwYXJhbSA6IHsgY2FwdHVyZTogcGFyYW0gfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUV2ZW50IGltcGxlbWVudHMgUGFydGlhbDxFdmVudD4ge1xuICBjdXJyZW50VGFyZ2V0OiBFdmVudFRhcmdldFxuXG4gIGNvbnN0cnVjdG9yIChwdWJsaWMgb3JpZ2luYWxFdmVudDogRXZlbnQpIHtcbiAgICAvLyBkdXBsaWNhdGUgdGhlIGV2ZW50IHNvIHRoYXQgY3VycmVudFRhcmdldCBjYW4gYmUgY2hhbmdlZFxuICAgIHBFeHRlbmQodGhpcywgb3JpZ2luYWxFdmVudClcbiAgfVxuXG4gIHByZXZlbnRPcmlnaW5hbERlZmF1bHQgKCkge1xuICAgIHRoaXMub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBzdG9wUHJvcGFnYXRpb24gKCkge1xuICAgIHRoaXMub3JpZ2luYWxFdmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uICgpIHtcbiAgICB0aGlzLm9yaWdpbmFsRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgfVxufVxuXG5jb25zdCBldmVudHMgPSB7XG4gIGFkZCxcbiAgcmVtb3ZlLFxuXG4gIGFkZERlbGVnYXRlLFxuICByZW1vdmVEZWxlZ2F0ZSxcblxuICBkZWxlZ2F0ZUxpc3RlbmVyLFxuICBkZWxlZ2F0ZVVzZUNhcHR1cmUsXG4gIGRlbGVnYXRlZEV2ZW50cyxcbiAgZG9jdW1lbnRzLFxuXG4gIHN1cHBvcnRzT3B0aW9uczogZmFsc2UsXG4gIHN1cHBvcnRzUGFzc2l2ZTogZmFsc2UsXG5cbiAgX2VsZW1lbnRzOiBlbGVtZW50cyxcbiAgX3RhcmdldHM6IHRhcmdldHMsXG5cbiAgaW5pdCAod2luZG93OiBXaW5kb3cpIHtcbiAgICB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG51bGwsIHtcbiAgICAgIGdldCBjYXB0dXJlICgpIHsgcmV0dXJuIChldmVudHMuc3VwcG9ydHNPcHRpb25zID0gdHJ1ZSkgfSxcbiAgICAgIGdldCBwYXNzaXZlICgpIHsgcmV0dXJuIChldmVudHMuc3VwcG9ydHNQYXNzaXZlID0gdHJ1ZSkgfSxcbiAgICB9KVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBldmVudHNcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVuZDxULCBVIGV4dGVuZHMgb2JqZWN0PiAoZGVzdDogVSAmIFBhcnRpYWw8VD4sIHNvdXJjZTogVCk6IFQgJiBVIHtcbiAgZm9yIChjb25zdCBwcm9wIGluIHNvdXJjZSkge1xuICAgIChkZXN0IGFzIHVua25vd24gYXMgVClbcHJvcF0gPSBzb3VyY2VbcHJvcF1cbiAgfVxuXG4gIGNvbnN0IHJldCA9IGRlc3QgYXMgVCAmIFVcblxuICByZXR1cm4gcmV0XG59XG4iLCJpbXBvcnQgZXh0ZW5kIGZyb20gJy4vZXh0ZW5kJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnLi9pcydcblxuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkTGlzdGVuZXJzIHtcbiAgW3R5cGU6IHN0cmluZ106IEludGVyYWN0Lkxpc3RlbmVyW11cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplIChcbiAgdHlwZTogSW50ZXJhY3QuRXZlbnRUeXBlcyxcbiAgbGlzdGVuZXJzPzogSW50ZXJhY3QuTGlzdGVuZXJzQXJnIHwgSW50ZXJhY3QuTGlzdGVuZXJzQXJnW10sXG4gIHJlc3VsdD86IE5vcm1hbGl6ZWRMaXN0ZW5lcnMsXG4pOiBOb3JtYWxpemVkTGlzdGVuZXJzIHtcbiAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9XG5cbiAgaWYgKGlzLnN0cmluZyh0eXBlKSAmJiB0eXBlLnNlYXJjaCgnICcpICE9PSAtMSkge1xuICAgIHR5cGUgPSBzcGxpdCh0eXBlKVxuICB9XG5cbiAgaWYgKGlzLmFycmF5KHR5cGUpKSB7XG4gICAgcmV0dXJuIHR5cGUucmVkdWNlPE5vcm1hbGl6ZWRMaXN0ZW5lcnM+KFxuICAgICAgKGFjYywgdCkgPT4gZXh0ZW5kKGFjYywgbm9ybWFsaXplKHQsIGxpc3RlbmVycywgcmVzdWx0KSksXG4gICAgICByZXN1bHQsXG4gICAgKVxuICB9XG5cbiAgLy8gKHsgdHlwZTogZm4gfSkgLT4gKCcnLCB7IHR5cGU6IGZuIH0pXG4gIGlmIChpcy5vYmplY3QodHlwZSkpIHtcbiAgICBsaXN0ZW5lcnMgPSB0eXBlXG4gICAgdHlwZSA9ICcnXG4gIH1cblxuICBpZiAoaXMuZnVuYyhsaXN0ZW5lcnMpKSB7XG4gICAgcmVzdWx0W3R5cGVdID0gcmVzdWx0W3R5cGVdIHx8IFtdXG4gICAgcmVzdWx0W3R5cGVdLnB1c2gobGlzdGVuZXJzKVxuICB9XG4gIGVsc2UgaWYgKGlzLmFycmF5KGxpc3RlbmVycykpIHtcbiAgICBmb3IgKGNvbnN0IGwgb2YgbGlzdGVuZXJzKSB7XG4gICAgICBub3JtYWxpemUodHlwZSwgbCwgcmVzdWx0KVxuICAgIH1cbiAgfVxuICBlbHNlIGlmIChpcy5vYmplY3QobGlzdGVuZXJzKSkge1xuICAgIGZvciAoY29uc3QgcHJlZml4IGluIGxpc3RlbmVycykge1xuICAgICAgY29uc3QgY29tYmluZWRUeXBlcyA9IHNwbGl0KHByZWZpeCkubWFwKHAgPT4gYCR7dHlwZX0ke3B9YClcblxuICAgICAgbm9ybWFsaXplKGNvbWJpbmVkVHlwZXMsIGxpc3RlbmVyc1twcmVmaXhdLCByZXN1bHQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBOb3JtYWxpemVkTGlzdGVuZXJzXG59XG5cbmZ1bmN0aW9uIHNwbGl0ICh0eXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHR5cGUudHJpbSgpLnNwbGl0KC8gKy8pXG59XG4iLCJpbXBvcnQgKiBhcyBhcnIgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvYXJyJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgbm9ybWFsaXplLCB7IE5vcm1hbGl6ZWRMaXN0ZW5lcnMgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9ub3JtYWxpemVMaXN0ZW5lcnMnXG5cbmZ1bmN0aW9uIGZpcmVVbnRpbEltbWVkaWF0ZVN0b3BwZWQ8XG4gIFQgZXh0ZW5kcyBJbnRlcmFjdC5BY3Rpb25OYW1lLFxuICBQIGV4dGVuZHMgSW50ZXJhY3QuRXZlbnRQaGFzZSxcbj4gKGV2ZW50OiBJbnRlcmFjdC5JbnRlcmFjdEV2ZW50PFQsIFA+LCBsaXN0ZW5lcnM6IEludGVyYWN0Lkxpc3RlbmVyW10pIHtcbiAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICBpZiAoZXZlbnQuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKSB7IGJyZWFrIH1cblxuICAgIGxpc3RlbmVyKGV2ZW50KVxuICB9XG59XG5cbmNsYXNzIEV2ZW50YWJsZSB7XG4gIG9wdGlvbnM6IGFueVxuICB0eXBlczogTm9ybWFsaXplZExpc3RlbmVycyA9IHt9XG4gIHByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlXG4gIGltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlXG4gIGdsb2JhbDogYW55XG5cbiAgY29uc3RydWN0b3IgKG9wdGlvbnM/OiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMgfHwge30pXG4gIH1cblxuICBmaXJlIChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVyc1xuICAgIGNvbnN0IGdsb2JhbCA9IHRoaXMuZ2xvYmFsXG5cbiAgICAvLyBJbnRlcmFjdGFibGUjb24oKSBsaXN0ZW5lcnNcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1jb25kaXRpb25hbC1hc3NpZ25tZW50XG4gICAgaWYgKChsaXN0ZW5lcnMgPSB0aGlzLnR5cGVzW2V2ZW50LnR5cGVdKSkge1xuICAgICAgZmlyZVVudGlsSW1tZWRpYXRlU3RvcHBlZChldmVudCwgbGlzdGVuZXJzKVxuICAgIH1cblxuICAgIC8vIGludGVyYWN0Lm9uKCkgbGlzdGVuZXJzXG4gICAgaWYgKCFldmVudC5wcm9wYWdhdGlvblN0b3BwZWQgJiYgZ2xvYmFsICYmIChsaXN0ZW5lcnMgPSBnbG9iYWxbZXZlbnQudHlwZV0pKSAge1xuICAgICAgZmlyZVVudGlsSW1tZWRpYXRlU3RvcHBlZChldmVudCwgbGlzdGVuZXJzKVxuICAgIH1cbiAgfVxuXG4gIG9uICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiBJbnRlcmFjdC5MaXN0ZW5lcnNBcmcpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBub3JtYWxpemUodHlwZSwgbGlzdGVuZXIpXG5cbiAgICBmb3IgKHR5cGUgaW4gbGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLnR5cGVzW3R5cGVdID0gYXJyLm1lcmdlKHRoaXMudHlwZXNbdHlwZV0gfHwgW10sIGxpc3RlbmVyc1t0eXBlXSlcbiAgICB9XG4gIH1cblxuICBvZmYgKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEludGVyYWN0Lkxpc3RlbmVyc0FyZykge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IG5vcm1hbGl6ZSh0eXBlLCBsaXN0ZW5lcilcblxuICAgIGZvciAodHlwZSBpbiBsaXN0ZW5lcnMpIHtcbiAgICAgIGNvbnN0IGV2ZW50TGlzdCA9IHRoaXMudHlwZXNbdHlwZV1cblxuICAgICAgaWYgKCFldmVudExpc3QgfHwgIWV2ZW50TGlzdC5sZW5ndGgpIHsgY29udGludWUgfVxuXG4gICAgICBmb3IgKGNvbnN0IHN1Ykxpc3RlbmVyIG9mIGxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGV2ZW50TGlzdC5pbmRleE9mKHN1Ykxpc3RlbmVyKVxuXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBldmVudExpc3Quc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVjdCAoX2VsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQpOiBJbnRlcmFjdC5SZWN0IHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50YWJsZVxuIiwiaW1wb3J0IHsgY2xvc2VzdCwgZ2V0RWxlbWVudFJlY3QsIHBhcmVudE5vZGUgfSBmcm9tICcuL2RvbVV0aWxzJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICcuL2V4dGVuZCdcbmltcG9ydCAqIGFzIGlzIGZyb20gJy4vaXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHJpbmdPcHRpb25SZXN1bHQgKHZhbHVlOiBhbnksIHRhcmdldDogSW50ZXJhY3QuSGFzR2V0UmVjdCwgZWxlbWVudCkge1xuICBpZiAodmFsdWUgPT09ICdwYXJlbnQnKSB7IHJldHVybiBwYXJlbnROb2RlKGVsZW1lbnQpIH1cblxuICBpZiAodmFsdWUgPT09ICdzZWxmJykgeyByZXR1cm4gdGFyZ2V0LmdldFJlY3QoZWxlbWVudCkgfVxuXG4gIHJldHVybiBjbG9zZXN0KGVsZW1lbnQsIHZhbHVlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlY3RMaWtlPFQgZXh0ZW5kcyBhbnlbXT4gKFxuICB2YWx1ZTogSW50ZXJhY3QuUmVjdFJlc29sdmFibGU8VD4sXG4gIHRhcmdldD86IEludGVyYWN0Lkhhc0dldFJlY3QsXG4gIGVsZW1lbnQ/OiBOb2RlLFxuICBmdW5jdGlvbkFyZ3M/OiBULFxuKSB7XG4gIGxldCByZXR1cm5WYWx1ZTogYW55ID0gdmFsdWVcbiAgaWYgKGlzLnN0cmluZyhyZXR1cm5WYWx1ZSkpIHtcbiAgICByZXR1cm5WYWx1ZSA9IGdldFN0cmluZ09wdGlvblJlc3VsdChyZXR1cm5WYWx1ZSwgdGFyZ2V0LCBlbGVtZW50KVxuICB9XG4gIGVsc2UgaWYgKGlzLmZ1bmMocmV0dXJuVmFsdWUpKSB7XG4gICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZSguLi5mdW5jdGlvbkFyZ3MpXG4gIH1cblxuICBpZiAoaXMuZWxlbWVudChyZXR1cm5WYWx1ZSkpIHtcbiAgICByZXR1cm5WYWx1ZSA9IGdldEVsZW1lbnRSZWN0KHJldHVyblZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIHJldHVyblZhbHVlIGFzIEludGVyYWN0LlJlY3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY3RUb1hZIChyZWN0KSB7XG4gIHJldHVybiAgcmVjdCAmJiB7XG4gICAgeDogJ3gnIGluIHJlY3QgPyByZWN0LnggOiByZWN0LmxlZnQsXG4gICAgeTogJ3knIGluIHJlY3QgPyByZWN0LnkgOiByZWN0LnRvcCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24geHl3aFRvVGxiciAocmVjdCkge1xuICBpZiAocmVjdCAmJiAhKCdsZWZ0JyBpbiByZWN0ICYmICd0b3AnIGluIHJlY3QpKSB7XG4gICAgcmVjdCA9IGV4dGVuZCh7fSwgcmVjdClcblxuICAgIHJlY3QubGVmdCAgID0gcmVjdC54IHx8IDBcbiAgICByZWN0LnRvcCAgICA9IHJlY3QueSB8fCAwXG4gICAgcmVjdC5yaWdodCAgPSByZWN0LnJpZ2h0ICAgfHwgKHJlY3QubGVmdCArIHJlY3Qud2lkdGgpXG4gICAgcmVjdC5ib3R0b20gPSByZWN0LmJvdHRvbSAgfHwgKHJlY3QudG9wICsgcmVjdC5oZWlnaHQpXG4gIH1cblxuICByZXR1cm4gcmVjdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGxiclRvWHl3aCAocmVjdCkge1xuICBpZiAocmVjdCAmJiAhKCd4JyBpbiByZWN0ICYmICd5JyBpbiByZWN0KSkge1xuICAgIHJlY3QgPSBleHRlbmQoe30sIHJlY3QpXG5cbiAgICByZWN0LnggICAgICA9IHJlY3QubGVmdCB8fCAwXG4gICAgcmVjdC55ICAgICAgPSByZWN0LnRvcCAgfHwgMFxuICAgIHJlY3Qud2lkdGggID0gcmVjdC53aWR0aCAgfHwgKHJlY3QucmlnaHQgfHwgMCAgLSByZWN0LngpXG4gICAgcmVjdC5oZWlnaHQgPSByZWN0LmhlaWdodCB8fCAocmVjdC5ib3R0b20gfHwgMCAtIHJlY3QueSlcbiAgfVxuXG4gIHJldHVybiByZWN0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRFZGdlcyAoZWRnZXM6IEludGVyYWN0LkVkZ2VPcHRpb25zLCByZWN0OiBJbnRlcmFjdC5SZWN0LCBkZWx0YTogSW50ZXJhY3QuUG9pbnQpIHtcbiAgaWYgKGVkZ2VzLmxlZnQpICAgeyByZWN0LmxlZnQgICArPSBkZWx0YS54IH1cbiAgaWYgKGVkZ2VzLnJpZ2h0KSAgeyByZWN0LnJpZ2h0ICArPSBkZWx0YS54IH1cbiAgaWYgKGVkZ2VzLnRvcCkgICAgeyByZWN0LnRvcCAgICArPSBkZWx0YS55IH1cbiAgaWYgKGVkZ2VzLmJvdHRvbSkgeyByZWN0LmJvdHRvbSArPSBkZWx0YS55IH1cblxuICByZWN0LndpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdFxuICByZWN0LmhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3Bcbn1cbiIsImltcG9ydCB7IHJlY3RUb1hZLCByZXNvbHZlUmVjdExpa2UgfSBmcm9tICcuL3JlY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChcbiAgdGFyZ2V0OiBJbnRlcmFjdC5IYXNHZXRSZWN0ICYgeyBvcHRpb25zOiBJbnRlcmFjdC5QZXJBY3Rpb25EZWZhdWx0cyB9LFxuICBlbGVtZW50OiBOb2RlLFxuICBhY3Rpb25OYW1lPzogSW50ZXJhY3QuQWN0aW9uTmFtZSxcbikge1xuICBjb25zdCBhY3Rpb25PcHRpb25zID0gKHRhcmdldC5vcHRpb25zIGFzIGFueSlbYWN0aW9uTmFtZV1cbiAgY29uc3QgYWN0aW9uT3JpZ2luID0gYWN0aW9uT3B0aW9ucyAmJiBhY3Rpb25PcHRpb25zLm9yaWdpblxuICBjb25zdCBvcmlnaW4gPSBhY3Rpb25PcmlnaW4gfHwgdGFyZ2V0Lm9wdGlvbnMub3JpZ2luXG5cbiAgY29uc3Qgb3JpZ2luUmVjdCA9IHJlc29sdmVSZWN0TGlrZShvcmlnaW4sIHRhcmdldCwgZWxlbWVudCwgW3RhcmdldCAmJiBlbGVtZW50XSlcblxuICByZXR1cm4gcmVjdFRvWFkob3JpZ2luUmVjdCkgfHwgeyB4OiAwLCB5OiAwIH1cbn1cbiIsImxldCBsYXN0VGltZSA9IDBcbmxldCByZXF1ZXN0XG5sZXQgY2FuY2VsXG5cbmZ1bmN0aW9uIGluaXQgKHdpbmRvdykge1xuICByZXF1ZXN0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICBjYW5jZWwgPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWVcblxuICBpZiAoIXJlcXVlc3QpIHtcbiAgICBjb25zdCB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXVxuXG4gICAgZm9yIChjb25zdCB2ZW5kb3Igb2YgdmVuZG9ycykge1xuICAgICAgcmVxdWVzdCA9IHdpbmRvd1tgJHt2ZW5kb3J9UmVxdWVzdEFuaW1hdGlvbkZyYW1lYF1cbiAgICAgIGNhbmNlbCA9IHdpbmRvd1tgJHt2ZW5kb3J9Q2FuY2VsQW5pbWF0aW9uRnJhbWVgXSB8fCB3aW5kb3dbYCR7dmVuZG9yfUNhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZWBdXG4gICAgfVxuICB9XG5cbiAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgcmVxdWVzdCA9IGNhbGxiYWNrID0+IHtcbiAgICAgIGNvbnN0IGN1cnJUaW1lID0gRGF0ZS5ub3coKVxuICAgICAgY29uc3QgdGltZVRvQ2FsbCA9IE1hdGgubWF4KDAsIDE2IC0gKGN1cnJUaW1lIC0gbGFzdFRpbWUpKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHN0YW5kYXJkL25vLWNhbGxiYWNrLWxpdGVyYWxcbiAgICAgIGNvbnN0IHRva2VuID0gc2V0VGltZW91dCgoKSA9PiB7IGNhbGxiYWNrKGN1cnJUaW1lICsgdGltZVRvQ2FsbCkgfSxcbiAgICAgICAgdGltZVRvQ2FsbClcblxuICAgICAgbGFzdFRpbWUgPSBjdXJyVGltZSArIHRpbWVUb0NhbGxcbiAgICAgIHJldHVybiB0b2tlblxuICAgIH1cblxuICAgIGNhbmNlbCA9IHRva2VuID0+IGNsZWFyVGltZW91dCh0b2tlbilcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJlcXVlc3Q6IGNhbGxiYWNrID0+IHJlcXVlc3QoY2FsbGJhY2spLFxuICBjYW5jZWw6IHRva2VuID0+IGNhbmNlbCh0b2tlbiksXG4gIGluaXQsXG59XG4iLCJpbXBvcnQgKiBhcyBhcnIgZnJvbSAnLi9hcnInXG5pbXBvcnQgKiBhcyBkb20gZnJvbSAnLi9kb21VdGlscydcbmltcG9ydCAqIGFzIGlzIGZyb20gJy4vaXMnXG5pbXBvcnQgKiBhcyBwb2ludGVyIGZyb20gJy4vcG9pbnRlclV0aWxzJ1xuaW1wb3J0ICogYXMgcmVjdCBmcm9tICcuL3JlY3QnXG5pbXBvcnQgd2luIGZyb20gJy4vd2luZG93J1xuXG5leHBvcnQgZnVuY3Rpb24gd2Fybk9uY2U8VD4gKHRoaXM6IFQsIG1ldGhvZDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnksIG1lc3NhZ2U6IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2VcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogVCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICAod2luIGFzIGFueSkud2luZG93LmNvbnNvbGUud2FybihtZXNzYWdlKVxuICAgICAgd2FybmVkID0gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5QWN0aW9uIChkZXN0OiBJbnRlcmFjdC5BY3Rpb25Qcm9wcywgc3JjOiBJbnRlcmFjdC5BY3Rpb25Qcm9wcykge1xuICBkZXN0Lm5hbWUgID0gc3JjLm5hbWVcbiAgZGVzdC5heGlzICA9IHNyYy5heGlzXG4gIGRlc3QuZWRnZXMgPSBzcmMuZWRnZXNcblxuICByZXR1cm4gZGVzdFxufVxuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGJyb3dzZXIgfSBmcm9tICcuL2Jyb3dzZXInXG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb25lIH0gZnJvbSAnLi9jbG9uZSdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXZlbnRzIH0gZnJvbSAnLi9ldmVudHMnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4dGVuZCB9IGZyb20gJy4vZXh0ZW5kJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRPcmlnaW5YWSB9IGZyb20gJy4vZ2V0T3JpZ2luWFknXG5leHBvcnQgeyBkZWZhdWx0IGFzIGh5cG90IH0gZnJvbSAnLi9oeXBvdCdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbm9ybWFsaXplTGlzdGVuZXJzIH0gZnJvbSAnLi9ub3JtYWxpemVMaXN0ZW5lcnMnXG5leHBvcnQgeyBkZWZhdWx0IGFzIHJhZiB9IGZyb20gJy4vcmFmJ1xuZXhwb3J0IHsgd2luLCBhcnIsIGRvbSwgaXMsIHBvaW50ZXIsIHJlY3QgfVxuIiwiZXhwb3J0IGNsYXNzIEJhc2VFdmVudDxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZSA9IGFueT4ge1xuICB0eXBlOiBzdHJpbmdcbiAgdGFyZ2V0OiBFdmVudFRhcmdldFxuICBjdXJyZW50VGFyZ2V0OiBFdmVudFRhcmdldFxuICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZVxuICBfaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uPFQ+XG4gIHRpbWVTdGFtcDogYW55XG4gIGltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlXG4gIHByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlXG5cbiAgZ2V0IGludGVyYWN0aW9uICgpOiBJbnRlcmFjdC5JbnRlcmFjdGlvblByb3h5PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3Rpb24uX3Byb3h5XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uKSB7XG4gICAgdGhpcy5faW50ZXJhY3Rpb24gPSBpbnRlcmFjdGlvblxuICB9XG5cbiAgcHJldmVudERlZmF1bHQgKCkge31cblxuICAvKipcbiAgICogRG9uJ3QgY2FsbCBhbnkgb3RoZXIgbGlzdGVuZXJzIChldmVuIG9uIHRoZSBjdXJyZW50IHRhcmdldClcbiAgICovXG4gIHN0b3BQcm9wYWdhdGlvbiAoKSB7XG4gICAgdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlXG4gIH1cblxuICAvKipcbiAgICogRG9uJ3QgY2FsbCBsaXN0ZW5lcnMgb24gdGhlIHJlbWFpbmluZyB0YXJnZXRzXG4gICAqL1xuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gKCkge1xuICAgIHRoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQmFzZUV2ZW50XG4iLCIvLyB0c2xpbnQ6ZGlzYWJsZSBuby1lbXB0eS1pbnRlcmZhY2VcblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0cyB7XG4gIGJhc2U6IEJhc2VEZWZhdWx0c1xuICBwZXJBY3Rpb246IFBlckFjdGlvbkRlZmF1bHRzXG4gIGFjdGlvbnM6IEFjdGlvbkRlZmF1bHRzXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlZmF1bHRzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRGVmYXVsdHMge1xuICBwcmV2ZW50RGVmYXVsdD86ICdhdXRvJyB8ICduZXZlcicgfCBzdHJpbmdcbiAgZGVsdGFTb3VyY2U/OiAncGFnZScgfCAnY2xpZW50J1xuICBjb250ZXh0PzogTm9kZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlckFjdGlvbkRlZmF1bHRzIHtcbiAgZW5hYmxlZD86IGJvb2xlYW5cbiAgb3JpZ2luPzogSW50ZXJhY3QuUG9pbnQgfCBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50XG4gIGxpc3RlbmVycz86IEludGVyYWN0Lkxpc3RlbmVyc1xuICBhbGxvd0Zyb20/OiBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50XG4gIGlnbm9yZUZyb20/OiBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50XG59XG5cbmV4cG9ydCB0eXBlIE9wdGlvbnMgPSBQYXJ0aWFsPEJhc2VEZWZhdWx0cz4gJiBQYXJ0aWFsPFBlckFjdGlvbkRlZmF1bHRzPiAmIHtcbiAgW1AgaW4ga2V5b2YgQWN0aW9uRGVmYXVsdHNdPzogUGFydGlhbDxBY3Rpb25EZWZhdWx0c1tQXT5cbn1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIGV4dGVuZHMgQmFzZURlZmF1bHRzLCBQZXJBY3Rpb25EZWZhdWx0cyB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnNBcmcgZXh0ZW5kcyBCYXNlRGVmYXVsdHMsIEludGVyYWN0Lk9yQm9vbGVhbjxQYXJ0aWFsPEFjdGlvbkRlZmF1bHRzPj4ge31cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzOiBEZWZhdWx0cyA9IHtcbiAgYmFzZToge1xuICAgIHByZXZlbnREZWZhdWx0OiAnYXV0bycsXG4gICAgZGVsdGFTb3VyY2U6ICdwYWdlJyxcbiAgfSxcblxuICBwZXJBY3Rpb246IHtcbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICBvcmlnaW46IHsgeDogMCwgeTogMCB9LFxuICB9LFxuXG4gIGFjdGlvbnM6IHt9IGFzIEFjdGlvbkRlZmF1bHRzLFxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0c1xuIiwiaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgZ2V0T3JpZ2luWFkgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZ2V0T3JpZ2luWFknXG5pbXBvcnQgaHlwb3QgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaHlwb3QnXG5pbXBvcnQgQmFzZUV2ZW50IGZyb20gJy4vQmFzZUV2ZW50J1xuaW1wb3J0IEludGVyYWN0aW9uIGZyb20gJy4vSW50ZXJhY3Rpb24nXG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0T3B0aW9ucydcblxuZXhwb3J0IHR5cGUgRXZlbnRQaGFzZSA9IGtleW9mIFBoYXNlTWFwXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VNYXAge1xuICBzdGFydDogdHJ1ZVxuICBtb3ZlOiB0cnVlXG4gIGVuZDogdHJ1ZVxufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RFdmVudDxcbiAgVCBleHRlbmRzIEludGVyYWN0LkFjdGlvbk5hbWUgPSBuZXZlcixcbiAgUCBleHRlbmRzIEV2ZW50UGhhc2UgPSBFdmVudFBoYXNlLFxuPiBleHRlbmRzIEJhc2VFdmVudDxUPiB7XG4gIHRhcmdldDogSW50ZXJhY3QuRWxlbWVudFxuICBjdXJyZW50VGFyZ2V0OiBJbnRlcmFjdC5FbGVtZW50XG4gIHJlbGF0ZWRUYXJnZXQ6IG51bGwgPSBudWxsXG4gIHNjcmVlblg/OiBudW1iZXJcbiAgc2NyZWVuWT86IG51bWJlclxuICBidXR0b246IG51bWJlclxuICBidXR0b25zOiBudW1iZXJcbiAgY3RybEtleTogYm9vbGVhblxuICBzaGlmdEtleTogYm9vbGVhblxuICBhbHRLZXk6IGJvb2xlYW5cbiAgbWV0YUtleTogYm9vbGVhblxuICBwYWdlOiBJbnRlcmFjdC5Qb2ludFxuICBjbGllbnQ6IEludGVyYWN0LlBvaW50XG4gIGRlbHRhOiBJbnRlcmFjdC5Qb2ludFxuICByZWN0OiBJbnRlcmFjdC5GdWxsUmVjdFxuICB4MDogbnVtYmVyXG4gIHkwOiBudW1iZXJcbiAgdDA6IG51bWJlclxuICBkdDogbnVtYmVyXG4gIGR1cmF0aW9uOiBudW1iZXJcbiAgY2xpZW50WDA6IG51bWJlclxuICBjbGllbnRZMDogbnVtYmVyXG4gIHZlbG9jaXR5OiBJbnRlcmFjdC5Qb2ludFxuICBzcGVlZDogbnVtYmVyXG4gIHN3aXBlOiBSZXR1cm5UeXBlPEludGVyYWN0RXZlbnQ8VD5bJ2dldFN3aXBlJ10+XG4gIHRpbWVTdGFtcDogYW55XG4gIC8vIGRyYWdcbiAgZHJhZ0VudGVyPzogSW50ZXJhY3QuRWxlbWVudFxuICBkcmFnTGVhdmU/OiBJbnRlcmFjdC5FbGVtZW50XG4gIC8vIHJlc2l6ZVxuICBheGVzPzogJ3gnIHwgJ3knIHwgJ3h5J1xuICBwcmVFbmQ/OiBib29sZWFuXG5cbiAgLyoqICovXG4gIGNvbnN0cnVjdG9yIChcbiAgICBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24sXG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsXG4gICAgYWN0aW9uTmFtZTogVCxcbiAgICBwaGFzZTogUCxcbiAgICBlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50LFxuICAgIHByZUVuZD86IGJvb2xlYW4sXG4gICAgdHlwZT86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoaW50ZXJhY3Rpb24pXG5cbiAgICBlbGVtZW50ID0gZWxlbWVudCB8fCBpbnRlcmFjdGlvbi5lbGVtZW50XG5cbiAgICBjb25zdCB0YXJnZXQgICAgICA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZVxuICAgIGNvbnN0IGRlbHRhU291cmNlID0gKCgodGFyZ2V0ICYmIHRhcmdldC5vcHRpb25zKSB8fCBkZWZhdWx0cykgYXMgYW55KS5kZWx0YVNvdXJjZSBhcyAncGFnZScgfCAnY2xpZW50J1xuICAgIGNvbnN0IG9yaWdpbiAgICAgID0gZ2V0T3JpZ2luWFkodGFyZ2V0LCBlbGVtZW50LCBhY3Rpb25OYW1lKVxuICAgIGNvbnN0IHN0YXJ0aW5nICAgID0gcGhhc2UgPT09ICdzdGFydCdcbiAgICBjb25zdCBlbmRpbmcgICAgICA9IHBoYXNlID09PSAnZW5kJ1xuICAgIGNvbnN0IHByZXZFdmVudCAgID0gc3RhcnRpbmcgPyB0aGlzIDogaW50ZXJhY3Rpb24ucHJldkV2ZW50XG4gICAgY29uc3QgY29vcmRzICAgICAgPSBzdGFydGluZ1xuICAgICAgPyBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnRcbiAgICAgIDogZW5kaW5nXG4gICAgICAgID8geyBwYWdlOiBwcmV2RXZlbnQucGFnZSwgY2xpZW50OiBwcmV2RXZlbnQuY2xpZW50LCB0aW1lU3RhbXA6IGludGVyYWN0aW9uLmNvb3Jkcy5jdXIudGltZVN0YW1wIH1cbiAgICAgICAgOiBpbnRlcmFjdGlvbi5jb29yZHMuY3VyXG5cbiAgICB0aGlzLnBhZ2UgICAgICA9IGV4dGVuZCh7fSwgY29vcmRzLnBhZ2UpXG4gICAgdGhpcy5jbGllbnQgICAgPSBleHRlbmQoe30sIGNvb3Jkcy5jbGllbnQpXG4gICAgdGhpcy5yZWN0ICAgICAgPSBleHRlbmQoe30sIGludGVyYWN0aW9uLnJlY3QpXG4gICAgdGhpcy50aW1lU3RhbXAgPSBjb29yZHMudGltZVN0YW1wXG5cbiAgICBpZiAoIWVuZGluZykge1xuICAgICAgdGhpcy5wYWdlLnggLT0gb3JpZ2luLnhcbiAgICAgIHRoaXMucGFnZS55IC09IG9yaWdpbi55XG5cbiAgICAgIHRoaXMuY2xpZW50LnggLT0gb3JpZ2luLnhcbiAgICAgIHRoaXMuY2xpZW50LnkgLT0gb3JpZ2luLnlcbiAgICB9XG5cbiAgICB0aGlzLmN0cmxLZXkgICAgICAgPSBldmVudC5jdHJsS2V5XG4gICAgdGhpcy5hbHRLZXkgICAgICAgID0gZXZlbnQuYWx0S2V5XG4gICAgdGhpcy5zaGlmdEtleSAgICAgID0gZXZlbnQuc2hpZnRLZXlcbiAgICB0aGlzLm1ldGFLZXkgICAgICAgPSBldmVudC5tZXRhS2V5XG4gICAgdGhpcy5idXR0b24gICAgICAgID0gKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmJ1dHRvblxuICAgIHRoaXMuYnV0dG9ucyAgICAgICA9IChldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b25zXG4gICAgdGhpcy50YXJnZXQgICAgICAgID0gZWxlbWVudFxuICAgIHRoaXMuY3VycmVudFRhcmdldCA9IGVsZW1lbnRcbiAgICB0aGlzLnByZUVuZCAgICAgICAgPSBwcmVFbmRcbiAgICB0aGlzLnR5cGUgICAgICAgICAgPSB0eXBlIHx8IChhY3Rpb25OYW1lICsgKHBoYXNlIHx8ICcnKSlcbiAgICB0aGlzLmludGVyYWN0YWJsZSAgPSB0YXJnZXRcblxuICAgIHRoaXMudDAgPSBzdGFydGluZ1xuICAgICAgPyBpbnRlcmFjdGlvbi5wb2ludGVyc1tpbnRlcmFjdGlvbi5wb2ludGVycy5sZW5ndGggLSAxXS5kb3duVGltZVxuICAgICAgOiBwcmV2RXZlbnQudDBcblxuICAgIHRoaXMueDAgICAgICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZS54IC0gb3JpZ2luLnhcbiAgICB0aGlzLnkwICAgICAgID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LnBhZ2UueSAtIG9yaWdpbi55XG4gICAgdGhpcy5jbGllbnRYMCA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnQueCAtIG9yaWdpbi54XG4gICAgdGhpcy5jbGllbnRZMCA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnQueSAtIG9yaWdpbi55XG5cbiAgICBpZiAoc3RhcnRpbmcgfHwgZW5kaW5nKSB7XG4gICAgICB0aGlzLmRlbHRhID0geyB4OiAwLCB5OiAwIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRlbHRhID0ge1xuICAgICAgICB4OiB0aGlzW2RlbHRhU291cmNlXS54IC0gcHJldkV2ZW50W2RlbHRhU291cmNlXS54LFxuICAgICAgICB5OiB0aGlzW2RlbHRhU291cmNlXS55IC0gcHJldkV2ZW50W2RlbHRhU291cmNlXS55LFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHQgICAgICAgID0gaW50ZXJhY3Rpb24uY29vcmRzLmRlbHRhLnRpbWVTdGFtcFxuICAgIHRoaXMuZHVyYXRpb24gID0gdGhpcy50aW1lU3RhbXAgLSB0aGlzLnQwXG5cbiAgICAvLyB2ZWxvY2l0eSBhbmQgc3BlZWQgaW4gcGl4ZWxzIHBlciBzZWNvbmRcbiAgICB0aGlzLnZlbG9jaXR5ID0gZXh0ZW5kKHt9LCBpbnRlcmFjdGlvbi5jb29yZHMudmVsb2NpdHlbZGVsdGFTb3VyY2VdKVxuICAgIHRoaXMuc3BlZWQgPSBoeXBvdCh0aGlzLnZlbG9jaXR5LngsIHRoaXMudmVsb2NpdHkueSlcblxuICAgIHRoaXMuc3dpcGUgPSAoZW5kaW5nIHx8IHBoYXNlID09PSAnaW5lcnRpYXN0YXJ0JykgPyB0aGlzLmdldFN3aXBlKCkgOiBudWxsXG4gIH1cblxuICBnZXQgcGFnZVggKCkgeyByZXR1cm4gdGhpcy5wYWdlLnggfVxuICBzZXQgcGFnZVggKHZhbHVlKSB7IHRoaXMucGFnZS54ID0gdmFsdWUgfVxuICBnZXQgcGFnZVkgKCkgeyByZXR1cm4gdGhpcy5wYWdlLnkgfVxuICBzZXQgcGFnZVkgKHZhbHVlKSB7IHRoaXMucGFnZS55ID0gdmFsdWUgfVxuXG4gIGdldCBjbGllbnRYICgpIHsgcmV0dXJuIHRoaXMuY2xpZW50LnggfVxuICBzZXQgY2xpZW50WCAodmFsdWUpIHsgdGhpcy5jbGllbnQueCA9IHZhbHVlIH1cbiAgZ2V0IGNsaWVudFkgKCkgeyByZXR1cm4gdGhpcy5jbGllbnQueSB9XG4gIHNldCBjbGllbnRZICh2YWx1ZSkgeyB0aGlzLmNsaWVudC55ID0gdmFsdWUgfVxuXG4gIGdldCBkeCAoKSB7IHJldHVybiB0aGlzLmRlbHRhLnggfVxuICBzZXQgZHggKHZhbHVlKSB7IHRoaXMuZGVsdGEueCA9IHZhbHVlIH1cbiAgZ2V0IGR5ICgpIHsgcmV0dXJuIHRoaXMuZGVsdGEueSB9XG4gIHNldCBkeSAodmFsdWUpIHsgdGhpcy5kZWx0YS55ID0gdmFsdWUgfVxuXG4gIGdldCB2ZWxvY2l0eVggKCkgeyByZXR1cm4gdGhpcy52ZWxvY2l0eS54IH1cbiAgc2V0IHZlbG9jaXR5WCAodmFsdWUpIHsgdGhpcy52ZWxvY2l0eS54ID0gdmFsdWUgfVxuICBnZXQgdmVsb2NpdHlZICgpIHsgcmV0dXJuIHRoaXMudmVsb2NpdHkueSB9XG4gIHNldCB2ZWxvY2l0eVkgKHZhbHVlKSB7IHRoaXMudmVsb2NpdHkueSA9IHZhbHVlIH1cblxuICBnZXRTd2lwZSAoKSB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb24gPSB0aGlzLl9pbnRlcmFjdGlvblxuXG4gICAgaWYgKGludGVyYWN0aW9uLnByZXZFdmVudC5zcGVlZCA8IDYwMCB8fFxuICAgICAgICB0aGlzLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnByZXZFdmVudC50aW1lU3RhbXAgPiAxNTApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgbGV0IGFuZ2xlID0gMTgwICogTWF0aC5hdGFuMihpbnRlcmFjdGlvbi5wcmV2RXZlbnQudmVsb2NpdHlZLCBpbnRlcmFjdGlvbi5wcmV2RXZlbnQudmVsb2NpdHlYKSAvIE1hdGguUElcbiAgICBjb25zdCBvdmVybGFwID0gMjIuNVxuXG4gICAgaWYgKGFuZ2xlIDwgMCkge1xuICAgICAgYW5nbGUgKz0gMzYwXG4gICAgfVxuXG4gICAgY29uc3QgbGVmdCA9IDEzNSAtIG92ZXJsYXAgPD0gYW5nbGUgJiYgYW5nbGUgPCAyMjUgKyBvdmVybGFwXG4gICAgY29uc3QgdXAgICA9IDIyNSAtIG92ZXJsYXAgPD0gYW5nbGUgJiYgYW5nbGUgPCAzMTUgKyBvdmVybGFwXG5cbiAgICBjb25zdCByaWdodCA9ICFsZWZ0ICYmICgzMTUgLSBvdmVybGFwIDw9IGFuZ2xlIHx8IGFuZ2xlIDwgIDQ1ICsgb3ZlcmxhcClcbiAgICBjb25zdCBkb3duICA9ICF1cCAgICYmICAgNDUgLSBvdmVybGFwIDw9IGFuZ2xlICYmIGFuZ2xlIDwgMTM1ICsgb3ZlcmxhcFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwLFxuICAgICAgZG93bixcbiAgICAgIGxlZnQsXG4gICAgICByaWdodCxcbiAgICAgIGFuZ2xlLFxuICAgICAgc3BlZWQ6IGludGVyYWN0aW9uLnByZXZFdmVudC5zcGVlZCxcbiAgICAgIHZlbG9jaXR5OiB7XG4gICAgICAgIHg6IGludGVyYWN0aW9uLnByZXZFdmVudC52ZWxvY2l0eVgsXG4gICAgICAgIHk6IGludGVyYWN0aW9uLnByZXZFdmVudC52ZWxvY2l0eVksXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByZXZlbnREZWZhdWx0ICgpIHt9XG5cbiAgLyoqXG4gICAqIERvbid0IGNhbGwgbGlzdGVuZXJzIG9uIHRoZSByZW1haW5pbmcgdGFyZ2V0c1xuICAgKi9cbiAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uICgpIHtcbiAgICB0aGlzLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHRoaXMucHJvcGFnYXRpb25TdG9wcGVkID0gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIERvbid0IGNhbGwgYW55IG90aGVyIGxpc3RlbmVycyAoZXZlbiBvbiB0aGUgY3VycmVudCB0YXJnZXQpXG4gICAqL1xuICBzdG9wUHJvcGFnYXRpb24gKCkge1xuICAgIHRoaXMucHJvcGFnYXRpb25TdG9wcGVkID0gdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyYWN0RXZlbnRcbiIsImltcG9ydCAqIGFzIGFyciBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9hcnInXG5pbXBvcnQgKiBhcyBkb21VdGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcbmltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaXMnXG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJyB7XG4gIGludGVyZmFjZSBTaWduYWxBcmdzIHtcbiAgICAnaW50ZXJhY3RhYmxlOm5ldyc6IHtcbiAgICAgIGludGVyYWN0YWJsZTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlXG4gICAgICB0YXJnZXQ6IEludGVyYWN0LlRhcmdldFxuICAgICAgb3B0aW9uczogSW50ZXJhY3QuT3B0aW9uc0FyZ1xuICAgICAgd2luOiBXaW5kb3dcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIEludGVyYWN0YWJsZVNjb3BlUHJvcCB7XG4gIGNvbnRleHQ6IERvY3VtZW50IHwgSW50ZXJhY3QuRWxlbWVudFxuICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcmFjdGFibGVTZXQge1xuICAvLyBhbGwgc2V0IGludGVyYWN0YWJsZXNcbiAgbGlzdDogSW50ZXJhY3QuSW50ZXJhY3RhYmxlW10gPSBbXVxuXG4gIHNlbGVjdG9yTWFwOiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiBJbnRlcmFjdGFibGVTY29wZVByb3BbXVxuICB9ID0ge31cblxuICBjb25zdHJ1Y3RvciAocHJvdGVjdGVkIHNjb3BlOiBJbnRlcmFjdC5TY29wZSkge1xuICAgIHNjb3BlLmFkZExpc3RlbmVycyh7XG4gICAgICAnaW50ZXJhY3RhYmxlOnVuc2V0JzogKHsgaW50ZXJhY3RhYmxlIH0pID0+IHtcbiAgICAgICAgY29uc3QgeyB0YXJnZXQsIF9jb250ZXh0OiBjb250ZXh0IH0gPSBpbnRlcmFjdGFibGVcbiAgICAgICAgY29uc3QgdGFyZ2V0TWFwcGluZ3M6IEludGVyYWN0YWJsZVNjb3BlUHJvcFtdID0gaXMuc3RyaW5nKHRhcmdldClcbiAgICAgICAgICA/IHRoaXMuc2VsZWN0b3JNYXBbdGFyZ2V0XVxuICAgICAgICAgIDogKHRhcmdldCBhcyBhbnkpW3RoaXMuc2NvcGUuaWRdXG5cbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0YXJnZXRNYXBwaW5ncy5maW5kSW5kZXgobSA9PiBtLmNvbnRleHQgPT09IGNvbnRleHQpXG4gICAgICAgIGlmICh0YXJnZXRNYXBwaW5nc1t0YXJnZXRJbmRleF0pIHtcbiAgICAgICAgLy8gRGVzdHJveWluZyBtYXBwaW5nSW5mbydzIGNvbnRleHQgYW5kIGludGVyYWN0YWJsZVxuICAgICAgICAgIHRhcmdldE1hcHBpbmdzW3RhcmdldEluZGV4XS5jb250ZXh0ID0gbnVsbFxuICAgICAgICAgIHRhcmdldE1hcHBpbmdzW3RhcmdldEluZGV4XS5pbnRlcmFjdGFibGUgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0TWFwcGluZ3Muc3BsaWNlKHRhcmdldEluZGV4LCAxKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgbmV3ICh0YXJnZXQ6IEludGVyYWN0LlRhcmdldCwgb3B0aW9ucz86IGFueSk6IEludGVyYWN0LkludGVyYWN0YWJsZSB7XG4gICAgb3B0aW9ucyA9IGV4dGVuZChvcHRpb25zIHx8IHt9LCB7XG4gICAgICBhY3Rpb25zOiB0aGlzLnNjb3BlLmFjdGlvbnMsXG4gICAgfSlcbiAgICBjb25zdCBpbnRlcmFjdGFibGUgPSBuZXcgdGhpcy5zY29wZS5JbnRlcmFjdGFibGUodGFyZ2V0LCBvcHRpb25zLCB0aGlzLnNjb3BlLmRvY3VtZW50KVxuICAgIGNvbnN0IG1hcHBpbmdJbmZvID0geyBjb250ZXh0OiBpbnRlcmFjdGFibGUuX2NvbnRleHQsIGludGVyYWN0YWJsZSB9XG5cbiAgICB0aGlzLnNjb3BlLmFkZERvY3VtZW50KGludGVyYWN0YWJsZS5fZG9jKVxuICAgIHRoaXMubGlzdC5wdXNoKGludGVyYWN0YWJsZSlcblxuICAgIGlmIChpcy5zdHJpbmcodGFyZ2V0KSkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdG9yTWFwW3RhcmdldF0pIHsgdGhpcy5zZWxlY3Rvck1hcFt0YXJnZXRdID0gW10gfVxuICAgICAgdGhpcy5zZWxlY3Rvck1hcFt0YXJnZXRdLnB1c2gobWFwcGluZ0luZm8pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKChpbnRlcmFjdGFibGUudGFyZ2V0IGFzIGFueSlbdGhpcy5zY29wZS5pZF0pKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHRoaXMuc2NvcGUuaWQsIHtcbiAgICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAodGFyZ2V0IGFzIGFueSlbdGhpcy5zY29wZS5pZF0ucHVzaChtYXBwaW5nSW5mbylcbiAgICB9XG5cbiAgICB0aGlzLnNjb3BlLmZpcmUoJ2ludGVyYWN0YWJsZTpuZXcnLCB7XG4gICAgICB0YXJnZXQsXG4gICAgICBvcHRpb25zLFxuICAgICAgaW50ZXJhY3RhYmxlLFxuICAgICAgd2luOiB0aGlzLnNjb3BlLl93aW4sXG4gICAgfSlcblxuICAgIHJldHVybiBpbnRlcmFjdGFibGVcbiAgfVxuXG4gIGdldCAodGFyZ2V0OiBJbnRlcmFjdC5UYXJnZXQsIG9wdGlvbnM/OiBJbnRlcmFjdC5PcHRpb25zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IChvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dCkgfHwgdGhpcy5zY29wZS5kb2N1bWVudFxuICAgIGNvbnN0IGlzU2VsZWN0b3IgPSBpcy5zdHJpbmcodGFyZ2V0KVxuICAgIGNvbnN0IHRhcmdldE1hcHBpbmdzOiBJbnRlcmFjdGFibGVTY29wZVByb3BbXSA9IGlzU2VsZWN0b3JcbiAgICAgID8gdGhpcy5zZWxlY3Rvck1hcFt0YXJnZXQgYXMgc3RyaW5nXVxuICAgICAgOiAodGFyZ2V0IGFzIGFueSlbdGhpcy5zY29wZS5pZF1cblxuICAgIGlmICghdGFyZ2V0TWFwcGluZ3MpIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgY29uc3QgZm91bmQgPSBhcnIuZmluZChcbiAgICAgIHRhcmdldE1hcHBpbmdzLFxuICAgICAgbSA9PiBtLmNvbnRleHQgPT09IGNvbnRleHQgJiZcbiAgICAgICAgKGlzU2VsZWN0b3IgfHwgbS5pbnRlcmFjdGFibGUuaW5Db250ZXh0KHRhcmdldCBhcyBhbnkpKSlcblxuICAgIHJldHVybiBmb3VuZCAmJiBmb3VuZC5pbnRlcmFjdGFibGVcbiAgfVxuXG4gIGZvckVhY2hNYXRjaDxUPiAobm9kZTogTm9kZSwgY2FsbGJhY2s6IChpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSkgPT4gVCk6IFQgfCB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGludGVyYWN0YWJsZSBvZiB0aGlzLmxpc3QpIHtcbiAgICAgIGxldCByZXRcblxuICAgICAgaWYgKChpcy5zdHJpbmcoaW50ZXJhY3RhYmxlLnRhcmdldClcbiAgICAgIC8vIHRhcmdldCBpcyBhIHNlbGVjdG9yIGFuZCB0aGUgZWxlbWVudCBtYXRjaGVzXG4gICAgICAgID8gKGlzLmVsZW1lbnQobm9kZSkgJiYgZG9tVXRpbHMubWF0Y2hlc1NlbGVjdG9yKG5vZGUsIGludGVyYWN0YWJsZS50YXJnZXQpKVxuICAgICAgICAvLyB0YXJnZXQgaXMgdGhlIGVsZW1lbnRcbiAgICAgICAgOiBub2RlID09PSBpbnRlcmFjdGFibGUudGFyZ2V0KSAmJlxuICAgICAgICAvLyB0aGUgZWxlbWVudCBpcyBpbiBjb250ZXh0XG4gICAgICAgIChpbnRlcmFjdGFibGUuaW5Db250ZXh0KG5vZGUpKSkge1xuICAgICAgICByZXQgPSBjYWxsYmFjayhpbnRlcmFjdGFibGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmV0XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcGFyYW1ldGVyLXByb3BlcnRpZXMgKi9cbmV4cG9ydCBjbGFzcyBQb2ludGVySW5mbyB7XG4gIGNvbnN0cnVjdG9yIChcbiAgICBwdWJsaWMgaWQ6IG51bWJlcixcbiAgICBwdWJsaWMgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsXG4gICAgcHVibGljIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLFxuICAgIHB1YmxpYyBkb3duVGltZTogbnVtYmVyLFxuICAgIHB1YmxpYyBkb3duVGFyZ2V0OiBJbnRlcmFjdC5FdmVudFRhcmdldCxcbiAgKSB7fVxufVxuXG5leHBvcnQgZGVmYXVsdCBQb2ludGVySW5mb1xuIiwiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaW5kZXgnXG5pbXBvcnQgSW50ZXJhY3RFdmVudCwgeyBFdmVudFBoYXNlIH0gZnJvbSAnLi9JbnRlcmFjdEV2ZW50J1xuaW1wb3J0IEludGVyYWN0YWJsZSBmcm9tICcuL0ludGVyYWN0YWJsZSdcbmltcG9ydCBQb2ludGVySW5mbyBmcm9tICcuL1BvaW50ZXJJbmZvJ1xuaW1wb3J0IHsgQWN0aW9uTmFtZSB9IGZyb20gJy4vc2NvcGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uUHJvcHM8VCBleHRlbmRzIEFjdGlvbk5hbWUgPSBJbnRlcmFjdC5BY3Rpb25OYW1lPiB7XG4gIG5hbWU6IFRcbiAgYXhpcz86ICd4JyB8ICd5JyB8ICd4eSdcbiAgZWRnZXM/OiBJbnRlcmFjdC5FZGdlT3B0aW9uc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0QWN0aW9uIGV4dGVuZHMgQWN0aW9uUHJvcHMge1xuICBuYW1lOiBBY3Rpb25OYW1lXG59XG5cbmV4cG9ydCBlbnVtIF9Qcm94eVZhbHVlcyB7XG4gIGludGVyYWN0YWJsZSA9ICcnLFxuICBlbGVtZW50ID0gJycsXG4gIHByZXBhcmVkID0gJycsXG4gIHBvaW50ZXJJc0Rvd24gPSAnJyxcbiAgcG9pbnRlcldhc01vdmVkID0gJycsXG4gIF9wcm94eSA9ICcnXG59XG5cbmV4cG9ydCBlbnVtIF9Qcm94eU1ldGhvZHMge1xuICBzdGFydCA9ICcnLFxuICBtb3ZlID0gJycsXG4gIGVuZCA9ICcnLFxuICBzdG9wID0gJycsXG4gIGludGVyYWN0aW5nID0gJydcbn1cblxuZXhwb3J0IHR5cGUgUG9pbnRlckFyZ1Byb3BzPFQgZXh0ZW5kcyB7fSA9IHt9PiA9IHtcbiAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGVcbiAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGVcbiAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0XG4gIHBvaW50ZXJJbmRleDogbnVtYmVyXG4gIHBvaW50ZXJJbmZvOiBQb2ludGVySW5mb1xuICBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb25cbn0gJiBUXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9QaGFzZUFyZzxUIGV4dGVuZHMgQWN0aW9uTmFtZSwgUCBleHRlbmRzIEV2ZW50UGhhc2U+IHtcbiAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGVcbiAgcGhhc2U6IEV2ZW50UGhhc2VcbiAgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uPFQ+XG4gIGlFdmVudDogSW50ZXJhY3RFdmVudDxULCBQPlxuICBwcmVFbmQ/OiBib29sZWFuXG4gIHR5cGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRG9BbnlQaGFzZUFyZyA9IERvUGhhc2VBcmc8QWN0aW9uTmFtZSwgRXZlbnRQaGFzZT5cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIFNpZ25hbEFyZ3Mge1xuICAgICdpbnRlcmFjdGlvbnM6bmV3JzogeyBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24gfVxuICAgICdpbnRlcmFjdGlvbnM6ZG93bic6IFBvaW50ZXJBcmdQcm9wczx7XG4gICAgICB0eXBlOiAnZG93bidcbiAgICB9PlxuICAgICdpbnRlcmFjdGlvbnM6bW92ZSc6IFBvaW50ZXJBcmdQcm9wczx7XG4gICAgICB0eXBlOiAnbW92ZSdcbiAgICAgIGR4OiBudW1iZXJcbiAgICAgIGR5OiBudW1iZXJcbiAgICAgIGR1cGxpY2F0ZTogYm9vbGVhblxuICAgIH0+XG4gICAgJ2ludGVyYWN0aW9uczp1cCc6IFBvaW50ZXJBcmdQcm9wczx7XG4gICAgICB0eXBlOiAndXAnXG4gICAgICBjdXJFdmVudFRhcmdldDogRXZlbnRUYXJnZXRcbiAgICB9PlxuICAgICdpbnRlcmFjdGlvbnM6Y2FuY2VsJzogU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOnVwJ10gJiB7XG4gICAgICB0eXBlOiAnY2FuY2VsJ1xuICAgICAgY3VyRXZlbnRUYXJnZXQ6IEV2ZW50VGFyZ2V0XG4gICAgfVxuICAgICdpbnRlcmFjdGlvbnM6dXBkYXRlLXBvaW50ZXInOiBQb2ludGVyQXJnUHJvcHM8e1xuICAgICAgZG93bjogYm9vbGVhblxuICAgIH0+XG4gICAgJ2ludGVyYWN0aW9uczpyZW1vdmUtcG9pbnRlcic6IFBvaW50ZXJBcmdQcm9wc1xuICAgICdpbnRlcmFjdGlvbnM6Ymx1cidcbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tc3RhcnQnOiBPbWl0PERvQW55UGhhc2VBcmcsICdpRXZlbnQnPlxuICAgICdpbnRlcmFjdGlvbnM6YWN0aW9uLXN0YXJ0JzogRG9BbnlQaGFzZUFyZ1xuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLXN0YXJ0JzogRG9BbnlQaGFzZUFyZ1xuICAgICdpbnRlcmFjdGlvbnM6YmVmb3JlLWFjdGlvbi1tb3ZlJzogT21pdDxEb0FueVBoYXNlQXJnLCAnaUV2ZW50Jz5cbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1tb3ZlJzogRG9BbnlQaGFzZUFyZ1xuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLW1vdmUnOiBEb0FueVBoYXNlQXJnXG4gICAgJ2ludGVyYWN0aW9uczpiZWZvcmUtYWN0aW9uLWVuZCc6IE9taXQ8RG9BbnlQaGFzZUFyZywgJ2lFdmVudCc+XG4gICAgJ2ludGVyYWN0aW9uczphY3Rpb24tZW5kJzogRG9BbnlQaGFzZUFyZ1xuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLWVuZCc6IERvQW55UGhhc2VBcmdcbiAgICAnaW50ZXJhY3Rpb25zOnN0b3AnOiB7IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25Qcm94eTxUIGV4dGVuZHMgQWN0aW9uTmFtZSA9IEFjdGlvbk5hbWU+ID0gUGljazxcbkludGVyYWN0aW9uPFQ+LFxua2V5b2YgdHlwZW9mIF9Qcm94eVZhbHVlcyB8IGtleW9mIHR5cGVvZiBfUHJveHlNZXRob2RzXG4+XG5cbmxldCBpZENvdW50ZXIgPSAwXG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvbjxUIGV4dGVuZHMgQWN0aW9uTmFtZSA9IEFjdGlvbk5hbWU+IHtcbiAgLy8gY3VycmVudCBpbnRlcmFjdGFibGUgYmVpbmcgaW50ZXJhY3RlZCB3aXRoXG4gIGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlID0gbnVsbFxuXG4gIC8vIHRoZSB0YXJnZXQgZWxlbWVudCBvZiB0aGUgaW50ZXJhY3RhYmxlXG4gIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQgPSBudWxsXG4gIHJlY3Q6IEludGVyYWN0LkZ1bGxSZWN0XG4gIF9yZWN0cz86IHtcbiAgICBzdGFydDogSW50ZXJhY3QuRnVsbFJlY3RcbiAgICBjb3JyZWN0ZWQ6IEludGVyYWN0LkZ1bGxSZWN0XG4gICAgcHJldmlvdXM6IEludGVyYWN0LkZ1bGxSZWN0XG4gICAgZGVsdGE6IEludGVyYWN0LkZ1bGxSZWN0XG4gIH1cbiAgZWRnZXM6IEludGVyYWN0LkVkZ2VPcHRpb25zXG5cbiAgX3Njb3BlRmlyZTogSW50ZXJhY3QuU2NvcGVbJ2ZpcmUnXVxuXG4gIC8vIGFjdGlvbiB0aGF0J3MgcmVhZHkgdG8gYmUgZmlyZWQgb24gbmV4dCBtb3ZlIGV2ZW50XG4gIHByZXBhcmVkOiBBY3Rpb25Qcm9wczxUPiA9IHtcbiAgICBuYW1lIDogbnVsbCxcbiAgICBheGlzIDogbnVsbCxcbiAgICBlZGdlczogbnVsbCxcbiAgfVxuXG4gIHBvaW50ZXJUeXBlOiBzdHJpbmdcblxuICAvLyBrZWVwIHRyYWNrIG9mIGFkZGVkIHBvaW50ZXJzXG4gIHBvaW50ZXJzOiBQb2ludGVySW5mb1tdID0gW11cblxuICAvLyBwb2ludGVyZG93bi9tb3VzZWRvd24vdG91Y2hzdGFydCBldmVudFxuICBkb3duRXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUgPSBudWxsXG5cbiAgZG93blBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlID0ge30gYXMgSW50ZXJhY3QuUG9pbnRlclR5cGVcblxuICBfbGF0ZXN0UG9pbnRlcjoge1xuICAgIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlXG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGVcbiAgICBldmVudFRhcmdldDogTm9kZVxuICB9ID0ge1xuICAgIHBvaW50ZXI6IG51bGwsXG4gICAgZXZlbnQ6IG51bGwsXG4gICAgZXZlbnRUYXJnZXQ6IG51bGwsXG4gIH1cblxuICAvLyBwcmV2aW91cyBhY3Rpb24gZXZlbnRcbiAgcHJldkV2ZW50OiBJbnRlcmFjdEV2ZW50PFQsIEV2ZW50UGhhc2U+ID0gbnVsbFxuXG4gIHBvaW50ZXJJc0Rvd24gPSBmYWxzZVxuICBwb2ludGVyV2FzTW92ZWQgPSBmYWxzZVxuICBfaW50ZXJhY3RpbmcgPSBmYWxzZVxuICBfZW5kaW5nID0gZmFsc2VcbiAgX3N0b3BwZWQgPSB0cnVlXG4gIF9wcm94eTogSW50ZXJhY3Rpb25Qcm94eTxUPiA9IG51bGxcblxuICBzaW11bGF0aW9uID0gbnVsbFxuXG4gIGdldCBwb2ludGVyTW92ZVRvbGVyYW5jZSAoKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWxpYXMgSW50ZXJhY3Rpb24ucHJvdG90eXBlLm1vdmVcbiAgICovXG4gIGRvTW92ZSA9IHV0aWxzLndhcm5PbmNlKFxuICAgIGZ1bmN0aW9uICh0aGlzOiBJbnRlcmFjdGlvbiwgc2lnbmFsQXJnOiBhbnkpIHtcbiAgICAgIHRoaXMubW92ZShzaWduYWxBcmcpXG4gICAgfSxcbiAgICAnVGhlIGludGVyYWN0aW9uLmRvTW92ZSgpIG1ldGhvZCBoYXMgYmVlbiByZW5hbWVkIHRvIGludGVyYWN0aW9uLm1vdmUoKScpXG5cbiAgY29vcmRzOiBJbnRlcmFjdC5Db29yZHNTZXQgPSB7XG4gICAgLy8gU3RhcnRpbmcgSW50ZXJhY3RFdmVudCBwb2ludGVyIGNvb3JkaW5hdGVzXG4gICAgc3RhcnQ6IHV0aWxzLnBvaW50ZXIubmV3Q29vcmRzKCksXG4gICAgLy8gUHJldmlvdXMgbmF0aXZlIHBvaW50ZXIgbW92ZSBldmVudCBjb29yZGluYXRlc1xuICAgIHByZXY6IHV0aWxzLnBvaW50ZXIubmV3Q29vcmRzKCksXG4gICAgLy8gY3VycmVudCBuYXRpdmUgcG9pbnRlciBtb3ZlIGV2ZW50IGNvb3JkaW5hdGVzXG4gICAgY3VyOiB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpLFxuICAgIC8vIENoYW5nZSBpbiBjb29yZGluYXRlcyBhbmQgdGltZSBvZiB0aGUgcG9pbnRlclxuICAgIGRlbHRhOiB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpLFxuICAgIC8vIHBvaW50ZXIgdmVsb2NpdHlcbiAgICB2ZWxvY2l0eTogdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKSxcbiAgfVxuXG4gIHJlYWRvbmx5IF9pZDogbnVtYmVyID0gaWRDb3VudGVyKytcblxuICAvKiogKi9cbiAgY29uc3RydWN0b3IgKHsgcG9pbnRlclR5cGUsIHNjb3BlRmlyZSB9OiB7XG4gICAgcG9pbnRlclR5cGU/OiBzdHJpbmdcbiAgICBzY29wZUZpcmU6IEludGVyYWN0LlNjb3BlWydmaXJlJ11cbiAgfSkge1xuICAgIHRoaXMuX3Njb3BlRmlyZSA9IHNjb3BlRmlyZVxuICAgIHRoaXMucG9pbnRlclR5cGUgPSBwb2ludGVyVHlwZVxuXG4gICAgY29uc3QgdGhhdCA9IHRoaXNcblxuICAgIHRoaXMuX3Byb3h5ID0ge30gYXMgSW50ZXJhY3Rpb25Qcm94eTxUPlxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gX1Byb3h5VmFsdWVzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5fcHJveHksIGtleSwge1xuICAgICAgICBnZXQgKCkgeyByZXR1cm4gdGhhdFtrZXldIH0sXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIF9Qcm94eU1ldGhvZHMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLl9wcm94eSwga2V5LCB7XG4gICAgICAgIHZhbHVlOiAoLi4uYXJncykgPT4gdGhhdFtrZXldKC4uLmFyZ3MpLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLl9zY29wZUZpcmUoJ2ludGVyYWN0aW9uczpuZXcnLCB7IGludGVyYWN0aW9uOiB0aGlzIH0pXG4gIH1cblxuICBwb2ludGVyRG93biAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXQpIHtcbiAgICBjb25zdCBwb2ludGVySW5kZXggPSB0aGlzLnVwZGF0ZVBvaW50ZXIocG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LCB0cnVlKVxuICAgIGNvbnN0IHBvaW50ZXJJbmZvID0gdGhpcy5wb2ludGVyc1twb2ludGVySW5kZXhdXG5cbiAgICB0aGlzLl9zY29wZUZpcmUoJ2ludGVyYWN0aW9uczpkb3duJywge1xuICAgICAgcG9pbnRlcixcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICBwb2ludGVySW5kZXgsXG4gICAgICBwb2ludGVySW5mbyxcbiAgICAgIHR5cGU6ICdkb3duJyxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QodGFyZ2V0KVxuICAgKiAgIC5kcmFnZ2FibGUoe1xuICAgKiAgICAgLy8gZGlzYWJsZSB0aGUgZGVmYXVsdCBkcmFnIHN0YXJ0IGJ5IGRvd24tPm1vdmVcbiAgICogICAgIG1hbnVhbFN0YXJ0OiB0cnVlXG4gICAqICAgfSlcbiAgICogICAvLyBzdGFydCBkcmFnZ2luZyBhZnRlciB0aGUgdXNlciBob2xkcyB0aGUgcG9pbnRlciBkb3duXG4gICAqICAgLm9uKCdob2xkJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAqICAgICB2YXIgaW50ZXJhY3Rpb24gPSBldmVudC5pbnRlcmFjdGlvblxuICAgKlxuICAgKiAgICAgaWYgKCFpbnRlcmFjdGlvbi5pbnRlcmFjdGluZygpKSB7XG4gICAqICAgICAgIGludGVyYWN0aW9uLnN0YXJ0KHsgbmFtZTogJ2RyYWcnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmludGVyYWN0YWJsZSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldClcbiAgICogICAgIH1cbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqIFN0YXJ0IGFuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBJbnRlcmFjdGFibGUgYW5kIEVsZW1lbnQgYXMgdGFydGdldHMuIFRoZVxuICAgKiBhY3Rpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGUgdGFyZ2V0IEludGVyYWN0YWJsZSBhbmQgYW4gYXBwcm9wcmlhdGVcbiAgICogbnVtYmVyIG9mIHBvaW50ZXJzIG11c3QgYmUgaGVsZCBkb3duIC0gMSBmb3IgZHJhZy9yZXNpemUsIDIgZm9yIGdlc3R1cmUuXG4gICAqXG4gICAqIFVzZSBpdCB3aXRoIGBpbnRlcmFjdGFibGUuPGFjdGlvbj5hYmxlKHsgbWFudWFsU3RhcnQ6IGZhbHNlIH0pYCB0byBhbHdheXNcbiAgICogW3N0YXJ0IGFjdGlvbnMgbWFudWFsbHldKGh0dHBzOi8vZ2l0aHViLmNvbS90YXllL2ludGVyYWN0LmpzL2lzc3Vlcy8xMTQpXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhY3Rpb24gICBUaGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCAtIGRyYWcsIHJlc2l6ZSwgZXRjLlxuICAgKiBAcGFyYW0ge0ludGVyYWN0YWJsZX0gdGFyZ2V0ICBUaGUgSW50ZXJhY3RhYmxlIHRvIHRhcmdldFxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgVGhlIERPTSBFbGVtZW50IHRvIHRhcmdldFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IGludGVyYWN0XG4gICAqL1xuICBzdGFydCAoYWN0aW9uOiBTdGFydEFjdGlvbiwgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGUsIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5pbnRlcmFjdGluZygpIHx8XG4gICAgICAgICF0aGlzLnBvaW50ZXJJc0Rvd24gfHxcbiAgICAgICAgdGhpcy5wb2ludGVycy5sZW5ndGggPCAoYWN0aW9uLm5hbWUgPT09ICdnZXN0dXJlJyA/IDIgOiAxKSB8fFxuICAgICAgICAhaW50ZXJhY3RhYmxlLm9wdGlvbnNbYWN0aW9uLm5hbWVdLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHV0aWxzLmNvcHlBY3Rpb24odGhpcy5wcmVwYXJlZCwgYWN0aW9uKVxuXG4gICAgdGhpcy5pbnRlcmFjdGFibGUgPSBpbnRlcmFjdGFibGVcbiAgICB0aGlzLmVsZW1lbnQgICAgICA9IGVsZW1lbnRcbiAgICB0aGlzLnJlY3QgICAgICAgICA9IGludGVyYWN0YWJsZS5nZXRSZWN0KGVsZW1lbnQpXG4gICAgdGhpcy5lZGdlcyAgICAgICAgPSB0aGlzLnByZXBhcmVkLmVkZ2VzXG4gICAgICA/IHV0aWxzLmV4dGVuZCh7fSwgdGhpcy5wcmVwYXJlZC5lZGdlcylcbiAgICAgIDogeyBsZWZ0OiB0cnVlLCByaWdodDogdHJ1ZSwgdG9wOiB0cnVlLCBib3R0b206IHRydWUgfVxuICAgIHRoaXMuX3N0b3BwZWQgICAgID0gZmFsc2VcbiAgICB0aGlzLl9pbnRlcmFjdGluZyA9IHRoaXMuX2RvUGhhc2Uoe1xuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgICBldmVudDogdGhpcy5kb3duRXZlbnQsXG4gICAgICBwaGFzZTogJ3N0YXJ0JyxcbiAgICB9KSAmJiAhdGhpcy5fc3RvcHBlZFxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW5nXG4gIH1cblxuICBwb2ludGVyTW92ZSAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAoIXRoaXMuc2ltdWxhdGlvbiAmJiAhKHRoaXMubW9kaWZpY2F0aW9uICYmIHRoaXMubW9kaWZpY2F0aW9uLmVuZFJlc3VsdCkpIHtcbiAgICAgIHRoaXMudXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGZhbHNlKVxuICAgIH1cblxuICAgIGNvbnN0IGR1cGxpY2F0ZU1vdmUgPSAodGhpcy5jb29yZHMuY3VyLnBhZ2UueCA9PT0gdGhpcy5jb29yZHMucHJldi5wYWdlLnggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzLmN1ci5wYWdlLnkgPT09IHRoaXMuY29vcmRzLnByZXYucGFnZS55ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkcy5jdXIuY2xpZW50LnggPT09IHRoaXMuY29vcmRzLnByZXYuY2xpZW50LnggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzLmN1ci5jbGllbnQueSA9PT0gdGhpcy5jb29yZHMucHJldi5jbGllbnQueSlcblxuICAgIGxldCBkeFxuICAgIGxldCBkeVxuXG4gICAgLy8gcmVnaXN0ZXIgbW92ZW1lbnQgZ3JlYXRlciB0aGFuIHBvaW50ZXJNb3ZlVG9sZXJhbmNlXG4gICAgaWYgKHRoaXMucG9pbnRlcklzRG93biAmJiAhdGhpcy5wb2ludGVyV2FzTW92ZWQpIHtcbiAgICAgIGR4ID0gdGhpcy5jb29yZHMuY3VyLmNsaWVudC54IC0gdGhpcy5jb29yZHMuc3RhcnQuY2xpZW50LnhcbiAgICAgIGR5ID0gdGhpcy5jb29yZHMuY3VyLmNsaWVudC55IC0gdGhpcy5jb29yZHMuc3RhcnQuY2xpZW50LnlcblxuICAgICAgdGhpcy5wb2ludGVyV2FzTW92ZWQgPSB1dGlscy5oeXBvdChkeCwgZHkpID4gdGhpcy5wb2ludGVyTW92ZVRvbGVyYW5jZVxuICAgIH1cblxuICAgIGNvbnN0IHBvaW50ZXJJbmRleCA9IHRoaXMuZ2V0UG9pbnRlckluZGV4KHBvaW50ZXIpXG4gICAgY29uc3Qgc2lnbmFsQXJnID0ge1xuICAgICAgcG9pbnRlcixcbiAgICAgIHBvaW50ZXJJbmRleCxcbiAgICAgIHBvaW50ZXJJbmZvOiB0aGlzLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0sXG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdtb3ZlJyBhcyBjb25zdCxcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgZHgsXG4gICAgICBkeSxcbiAgICAgIGR1cGxpY2F0ZTogZHVwbGljYXRlTW92ZSxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH1cblxuICAgIGlmICghZHVwbGljYXRlTW92ZSkge1xuICAgICAgLy8gc2V0IHBvaW50ZXIgY29vcmRpbmF0ZSwgdGltZSBjaGFuZ2VzIGFuZCB2ZWxvY2l0eVxuICAgICAgdXRpbHMucG9pbnRlci5zZXRDb29yZFZlbG9jaXR5KHRoaXMuY29vcmRzLnZlbG9jaXR5LCB0aGlzLmNvb3Jkcy5kZWx0YSlcbiAgICB9XG5cbiAgICB0aGlzLl9zY29wZUZpcmUoJ2ludGVyYWN0aW9uczptb3ZlJywgc2lnbmFsQXJnKVxuXG4gICAgaWYgKCFkdXBsaWNhdGVNb3ZlICYmICF0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgIC8vIGlmIGludGVyYWN0aW5nLCBmaXJlIGFuICdhY3Rpb24tbW92ZScgc2lnbmFsIGV0Y1xuICAgICAgaWYgKHRoaXMuaW50ZXJhY3RpbmcoKSkge1xuICAgICAgICBzaWduYWxBcmcudHlwZSA9IG51bGxcbiAgICAgICAgdGhpcy5tb3ZlKHNpZ25hbEFyZylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucG9pbnRlcldhc01vdmVkKSB7XG4gICAgICAgIHV0aWxzLnBvaW50ZXIuY29weUNvb3Jkcyh0aGlzLmNvb3Jkcy5wcmV2LCB0aGlzLmNvb3Jkcy5jdXIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGludGVyYWN0KHRhcmdldClcbiAgICogICAuZHJhZ2dhYmxlKHRydWUpXG4gICAqICAgLm9uKCdkcmFnbW92ZScsIGZ1bmN0aW9uIChldmVudCkge1xuICAgKiAgICAgaWYgKHNvbWVDb25kaXRpb24pIHtcbiAgICogICAgICAgLy8gY2hhbmdlIHRoZSBzbmFwIHNldHRpbmdzXG4gICAqICAgICAgIGV2ZW50LmludGVyYWN0YWJsZS5kcmFnZ2FibGUoeyBzbmFwOiB7IHRhcmdldHM6IFtdIH19KVxuICAgKiAgICAgICAvLyBmaXJlIGFub3RoZXIgbW92ZSBldmVudCB3aXRoIHJlLWNhbGN1bGF0ZWQgc25hcFxuICAgKiAgICAgICBldmVudC5pbnRlcmFjdGlvbi5tb3ZlKClcbiAgICogICAgIH1cbiAgICogICB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogRm9yY2UgYSBtb3ZlIG9mIHRoZSBjdXJyZW50IGFjdGlvbiBhdCB0aGUgc2FtZSBjb29yZGluYXRlcy4gVXNlZnVsIGlmXG4gICAqIHNuYXAvcmVzdHJpY3QgaGFzIGJlZW4gY2hhbmdlZCBhbmQgeW91IHdhbnQgYSBtb3ZlbWVudCB3aXRoIHRoZSBuZXdcbiAgICogc2V0dGluZ3MuXG4gICAqL1xuICBtb3ZlIChzaWduYWxBcmc/KSB7XG4gICAgaWYgKCFzaWduYWxBcmcgfHwgIXNpZ25hbEFyZy5ldmVudCkge1xuICAgICAgdXRpbHMucG9pbnRlci5zZXRaZXJvQ29vcmRzKHRoaXMuY29vcmRzLmRlbHRhKVxuICAgIH1cblxuICAgIHNpZ25hbEFyZyA9IHV0aWxzLmV4dGVuZCh7XG4gICAgICBwb2ludGVyOiB0aGlzLl9sYXRlc3RQb2ludGVyLnBvaW50ZXIsXG4gICAgICBldmVudDogdGhpcy5fbGF0ZXN0UG9pbnRlci5ldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0OiB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50VGFyZ2V0LFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgfSwgc2lnbmFsQXJnIHx8IHt9KVxuXG4gICAgc2lnbmFsQXJnLnBoYXNlID0gJ21vdmUnXG5cbiAgICB0aGlzLl9kb1BoYXNlKHNpZ25hbEFyZylcbiAgfVxuXG4gIC8vIEVuZCBpbnRlcmFjdCBtb3ZlIGV2ZW50cyBhbmQgc3RvcCBhdXRvLXNjcm9sbCB1bmxlc3Mgc2ltdWxhdGlvbiBpcyBydW5uaW5nXG4gIHBvaW50ZXJVcCAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXQsIGN1ckV2ZW50VGFyZ2V0OiBJbnRlcmFjdC5FdmVudFRhcmdldCkge1xuICAgIGxldCBwb2ludGVySW5kZXggPSB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gICAgaWYgKHBvaW50ZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHBvaW50ZXJJbmRleCA9IHRoaXMudXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGZhbHNlKVxuICAgIH1cblxuICAgIGNvbnN0IHR5cGUgPSAvY2FuY2VsJC9pLnRlc3QoZXZlbnQudHlwZSkgPyAnY2FuY2VsJyA6ICd1cCdcblxuICAgIHRoaXMuX3Njb3BlRmlyZShgaW50ZXJhY3Rpb25zOiR7dHlwZX1gIGFzICdpbnRlcmFjdGlvbnM6dXAnIHwgJ2ludGVyYWN0aW9uczpjYW5jZWwnLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgcG9pbnRlckluZGV4LFxuICAgICAgcG9pbnRlckluZm86IHRoaXMucG9pbnRlcnNbcG9pbnRlckluZGV4XSxcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICB0eXBlOiB0eXBlIGFzIGFueSxcbiAgICAgIGN1ckV2ZW50VGFyZ2V0LFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgfSlcblxuICAgIGlmICghdGhpcy5zaW11bGF0aW9uKSB7XG4gICAgICB0aGlzLmVuZChldmVudClcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ZXJJc0Rvd24gPSBmYWxzZVxuICAgIHRoaXMucmVtb3ZlUG9pbnRlcihwb2ludGVyLCBldmVudClcbiAgfVxuXG4gIGRvY3VtZW50Qmx1ciAoZXZlbnQpIHtcbiAgICB0aGlzLmVuZChldmVudClcbiAgICB0aGlzLl9zY29wZUZpcmUoJ2ludGVyYWN0aW9uczpibHVyJywgeyBldmVudCwgdHlwZTogJ2JsdXInLCBpbnRlcmFjdGlvbjogdGhpcyB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGludGVyYWN0KHRhcmdldClcbiAgICogICAuZHJhZ2dhYmxlKHRydWUpXG4gICAqICAgLm9uKCdtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAqICAgICBpZiAoZXZlbnQucGFnZVggPiAxMDAwKSB7XG4gICAqICAgICAgIC8vIGVuZCB0aGUgY3VycmVudCBhY3Rpb25cbiAgICogICAgICAgZXZlbnQuaW50ZXJhY3Rpb24uZW5kKClcbiAgICogICAgICAgLy8gc3RvcCBhbGwgZnVydGhlciBsaXN0ZW5lcnMgZnJvbSBiZWluZyBjYWxsZWRcbiAgICogICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICogICAgIH1cbiAgICogICB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtQb2ludGVyRXZlbnR9IFtldmVudF1cbiAgICovXG4gIGVuZCAoZXZlbnQ/OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5fZW5kaW5nID0gdHJ1ZVxuICAgIGV2ZW50ID0gZXZlbnQgfHwgdGhpcy5fbGF0ZXN0UG9pbnRlci5ldmVudFxuICAgIGxldCBlbmRQaGFzZVJlc3VsdFxuXG4gICAgaWYgKHRoaXMuaW50ZXJhY3RpbmcoKSkge1xuICAgICAgZW5kUGhhc2VSZXN1bHQgPSB0aGlzLl9kb1BoYXNlKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgICAgICBwaGFzZTogJ2VuZCcsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuX2VuZGluZyA9IGZhbHNlXG5cbiAgICBpZiAoZW5kUGhhc2VSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuc3RvcCgpXG4gICAgfVxuICB9XG5cbiAgY3VycmVudEFjdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW5nID8gdGhpcy5wcmVwYXJlZC5uYW1lIDogbnVsbFxuICB9XG5cbiAgaW50ZXJhY3RpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGluZ1xuICB9XG5cbiAgLyoqICovXG4gIHN0b3AgKCkge1xuICAgIHRoaXMuX3Njb3BlRmlyZSgnaW50ZXJhY3Rpb25zOnN0b3AnLCB7IGludGVyYWN0aW9uOiB0aGlzIH0pXG5cbiAgICB0aGlzLmludGVyYWN0YWJsZSA9IHRoaXMuZWxlbWVudCA9IG51bGxcblxuICAgIHRoaXMuX2ludGVyYWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLl9zdG9wcGVkID0gdHJ1ZVxuICAgIHRoaXMucHJlcGFyZWQubmFtZSA9IHRoaXMucHJldkV2ZW50ID0gbnVsbFxuICB9XG5cbiAgZ2V0UG9pbnRlckluZGV4IChwb2ludGVyKSB7XG4gICAgY29uc3QgcG9pbnRlcklkID0gdXRpbHMucG9pbnRlci5nZXRQb2ludGVySWQocG9pbnRlcilcblxuICAgIC8vIG1vdXNlIGFuZCBwZW4gaW50ZXJhY3Rpb25zIG1heSBoYXZlIG9ubHkgb25lIHBvaW50ZXJcbiAgICByZXR1cm4gKHRoaXMucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgdGhpcy5wb2ludGVyVHlwZSA9PT0gJ3BlbicpXG4gICAgICA/IHRoaXMucG9pbnRlcnMubGVuZ3RoIC0gMVxuICAgICAgOiB1dGlscy5hcnIuZmluZEluZGV4KHRoaXMucG9pbnRlcnMsIGN1clBvaW50ZXIgPT4gY3VyUG9pbnRlci5pZCA9PT0gcG9pbnRlcklkKVxuICB9XG5cbiAgZ2V0UG9pbnRlckluZm8gKHBvaW50ZXIpIHtcbiAgICByZXR1cm4gdGhpcy5wb2ludGVyc1t0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKV1cbiAgfVxuXG4gIHVwZGF0ZVBvaW50ZXIgKHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLCBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSwgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LCBkb3duPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGlkID0gdXRpbHMucG9pbnRlci5nZXRQb2ludGVySWQocG9pbnRlcilcbiAgICBsZXQgcG9pbnRlckluZGV4ID0gdGhpcy5nZXRQb2ludGVySW5kZXgocG9pbnRlcilcbiAgICBsZXQgcG9pbnRlckluZm8gPSB0aGlzLnBvaW50ZXJzW3BvaW50ZXJJbmRleF1cblxuICAgIGRvd24gPSBkb3duID09PSBmYWxzZVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBkb3duIHx8IC8oZG93bnxzdGFydCkkL2kudGVzdChldmVudC50eXBlKVxuXG4gICAgaWYgKCFwb2ludGVySW5mbykge1xuICAgICAgcG9pbnRlckluZm8gPSBuZXcgUG9pbnRlckluZm8oXG4gICAgICAgIGlkLFxuICAgICAgICBwb2ludGVyLFxuICAgICAgICBldmVudCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcblxuICAgICAgcG9pbnRlckluZGV4ID0gdGhpcy5wb2ludGVycy5sZW5ndGhcbiAgICAgIHRoaXMucG9pbnRlcnMucHVzaChwb2ludGVySW5mbylcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBwb2ludGVySW5mby5wb2ludGVyID0gcG9pbnRlclxuICAgIH1cblxuICAgIHV0aWxzLnBvaW50ZXIuc2V0Q29vcmRzKHRoaXMuY29vcmRzLmN1ciwgdGhpcy5wb2ludGVycy5tYXAocCA9PiBwLnBvaW50ZXIpLCB0aGlzLl9ub3coKSlcbiAgICB1dGlscy5wb2ludGVyLnNldENvb3JkRGVsdGFzKHRoaXMuY29vcmRzLmRlbHRhLCB0aGlzLmNvb3Jkcy5wcmV2LCB0aGlzLmNvb3Jkcy5jdXIpXG5cbiAgICBpZiAoZG93bikge1xuICAgICAgdGhpcy5wb2ludGVySXNEb3duID0gdHJ1ZVxuXG4gICAgICBwb2ludGVySW5mby5kb3duVGltZSA9IHRoaXMuY29vcmRzLmN1ci50aW1lU3RhbXBcbiAgICAgIHBvaW50ZXJJbmZvLmRvd25UYXJnZXQgPSBldmVudFRhcmdldFxuICAgICAgdXRpbHMucG9pbnRlci5wb2ludGVyRXh0ZW5kKHRoaXMuZG93blBvaW50ZXIsIHBvaW50ZXIpXG5cbiAgICAgIGlmICghdGhpcy5pbnRlcmFjdGluZygpKSB7XG4gICAgICAgIHV0aWxzLnBvaW50ZXIuY29weUNvb3Jkcyh0aGlzLmNvb3Jkcy5zdGFydCwgdGhpcy5jb29yZHMuY3VyKVxuICAgICAgICB1dGlscy5wb2ludGVyLmNvcHlDb29yZHModGhpcy5jb29yZHMucHJldiwgdGhpcy5jb29yZHMuY3VyKVxuXG4gICAgICAgIHRoaXMuZG93bkV2ZW50ID0gZXZlbnRcbiAgICAgICAgdGhpcy5wb2ludGVyV2FzTW92ZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUxhdGVzdFBvaW50ZXIocG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0KVxuXG4gICAgdGhpcy5fc2NvcGVGaXJlKCdpbnRlcmFjdGlvbnM6dXBkYXRlLXBvaW50ZXInLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgZXZlbnQsXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIGRvd24sXG4gICAgICBwb2ludGVySW5mbyxcbiAgICAgIHBvaW50ZXJJbmRleCxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH0pXG5cbiAgICByZXR1cm4gcG9pbnRlckluZGV4XG4gIH1cblxuICByZW1vdmVQb2ludGVyIChwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZSwgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUpIHtcbiAgICBjb25zdCBwb2ludGVySW5kZXggPSB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gICAgaWYgKHBvaW50ZXJJbmRleCA9PT0gLTEpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHBvaW50ZXJJbmZvID0gdGhpcy5wb2ludGVyc1twb2ludGVySW5kZXhdXG5cbiAgICB0aGlzLl9zY29wZUZpcmUoJ2ludGVyYWN0aW9uczpyZW1vdmUtcG9pbnRlcicsIHtcbiAgICAgIHBvaW50ZXIsXG4gICAgICBldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0OiBudWxsLFxuICAgICAgcG9pbnRlckluZGV4LFxuICAgICAgcG9pbnRlckluZm8sXG4gICAgICBpbnRlcmFjdGlvbjogdGhpcyxcbiAgICB9KVxuXG4gICAgdGhpcy5wb2ludGVycy5zcGxpY2UocG9pbnRlckluZGV4LCAxKVxuICB9XG5cbiAgX3VwZGF0ZUxhdGVzdFBvaW50ZXIgKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCkge1xuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIucG9pbnRlciA9IHBvaW50ZXJcbiAgICB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50ID0gZXZlbnRcbiAgICB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRcbiAgfVxuXG4gIGRlc3Ryb3kgKCkge1xuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIucG9pbnRlciA9IG51bGxcbiAgICB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50ID0gbnVsbFxuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIuZXZlbnRUYXJnZXQgPSBudWxsXG4gIH1cblxuICBfY3JlYXRlUHJlcGFyZWRFdmVudDxQIGV4dGVuZHMgRXZlbnRQaGFzZT4gKGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBwaGFzZTogUCwgcHJlRW5kPzogYm9vbGVhbiwgdHlwZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSW50ZXJhY3RFdmVudDxULCBQPih0aGlzLCBldmVudCwgdGhpcy5wcmVwYXJlZC5uYW1lLCBwaGFzZSwgdGhpcy5lbGVtZW50LCBwcmVFbmQsIHR5cGUpXG4gIH1cblxuICBfZmlyZUV2ZW50PFAgZXh0ZW5kcyBFdmVudFBoYXNlPiAoaUV2ZW50OiBJbnRlcmFjdEV2ZW50PFQsIFA+KSB7XG4gICAgdGhpcy5pbnRlcmFjdGFibGUuZmlyZShpRXZlbnQpXG5cbiAgICBpZiAoIXRoaXMucHJldkV2ZW50IHx8IGlFdmVudC50aW1lU3RhbXAgPj0gdGhpcy5wcmV2RXZlbnQudGltZVN0YW1wKSB7XG4gICAgICB0aGlzLnByZXZFdmVudCA9IGlFdmVudFxuICAgIH1cbiAgfVxuXG4gIF9kb1BoYXNlPFAgZXh0ZW5kcyBFdmVudFBoYXNlPiAoc2lnbmFsQXJnOiBPbWl0PERvUGhhc2VBcmc8VCwgUD4sICdpRXZlbnQnPiAmIHsgaUV2ZW50PzogSW50ZXJhY3RFdmVudDxULCBQPiB9KSB7XG4gICAgY29uc3QgeyBldmVudCwgcGhhc2UsIHByZUVuZCwgdHlwZSB9ID0gc2lnbmFsQXJnXG4gICAgY29uc3QgeyByZWN0IH0gPSB0aGlzXG5cbiAgICBpZiAocmVjdCAmJiBwaGFzZSA9PT0gJ21vdmUnKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIHJlY3QgY2hhbmdlcyBkdWUgdG8gcG9pbnRlciBtb3ZlXG4gICAgICB1dGlscy5yZWN0LmFkZEVkZ2VzKHRoaXMuZWRnZXMsIHJlY3QsIHRoaXMuY29vcmRzLmRlbHRhW3RoaXMuaW50ZXJhY3RhYmxlLm9wdGlvbnMuZGVsdGFTb3VyY2VdKVxuXG4gICAgICByZWN0LndpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdFxuICAgICAgcmVjdC5oZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wXG4gICAgfVxuXG4gICAgY29uc3QgYmVmb3JlUmVzdWx0ID0gdGhpcy5fc2NvcGVGaXJlKGBpbnRlcmFjdGlvbnM6YmVmb3JlLWFjdGlvbi0ke3BoYXNlfWAgYXMgYW55LCBzaWduYWxBcmcpXG5cbiAgICBpZiAoYmVmb3JlUmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgaUV2ZW50ID0gc2lnbmFsQXJnLmlFdmVudCA9IHRoaXMuX2NyZWF0ZVByZXBhcmVkRXZlbnQoZXZlbnQsIHBoYXNlLCBwcmVFbmQsIHR5cGUpXG5cbiAgICB0aGlzLl9zY29wZUZpcmUoYGludGVyYWN0aW9uczphY3Rpb24tJHtwaGFzZX1gIGFzIGFueSwgc2lnbmFsQXJnKVxuXG4gICAgaWYgKHBoYXNlID09PSAnc3RhcnQnKSB7IHRoaXMucHJldkV2ZW50ID0gaUV2ZW50IH1cblxuICAgIHRoaXMuX2ZpcmVFdmVudChpRXZlbnQpXG5cbiAgICB0aGlzLl9zY29wZUZpcmUoYGludGVyYWN0aW9uczphZnRlci1hY3Rpb24tJHtwaGFzZX1gIGFzIGFueSwgc2lnbmFsQXJnKVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIF9ub3cgKCkgeyByZXR1cm4gRGF0ZS5ub3coKSB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyYWN0aW9uXG5leHBvcnQgeyBQb2ludGVySW5mbyB9XG4iLCJpbXBvcnQgeyBtYXRjaGVzU2VsZWN0b3IsIG5vZGVDb250YWlucyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbVV0aWxzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9ldmVudHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3dpbmRvdydcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RhYmxlJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGFibGUge1xuICAgIHByZXZlbnREZWZhdWx0OiB0eXBlb2YgcHJldmVudERlZmF1bHRcbiAgICBjaGVja0FuZFByZXZlbnREZWZhdWx0OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkXG4gIH1cbn1cblxudHlwZSBQcmV2ZW50RGVmYXVsdFZhbHVlID0gJ2Fsd2F5cycgfCAnbmV2ZXInIHwgJ2F1dG8nXG5mdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlKTogUHJldmVudERlZmF1bHRWYWx1ZVxuZnVuY3Rpb24gcHJldmVudERlZmF1bHQgKHRoaXM6IEludGVyYWN0LkludGVyYWN0YWJsZSwgbmV3VmFsdWU6IFByZXZlbnREZWZhdWx0VmFsdWUpOiB0eXBlb2YgdGhpc1xuZnVuY3Rpb24gcHJldmVudERlZmF1bHQgKHRoaXM6IEludGVyYWN0LkludGVyYWN0YWJsZSwgbmV3VmFsdWU/OiBQcmV2ZW50RGVmYXVsdFZhbHVlKSB7XG4gIGlmICgvXihhbHdheXN8bmV2ZXJ8YXV0bykkLy50ZXN0KG5ld1ZhbHVlKSkge1xuICAgIHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCA9IG5ld1ZhbHVlXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGlmIChpcy5ib29sKG5ld1ZhbHVlKSkge1xuICAgIHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCA9IG5ld1ZhbHVlID8gJ2Fsd2F5cycgOiAnbmV2ZXInXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHJldHVybiB0aGlzLm9wdGlvbnMucHJldmVudERlZmF1bHRcbn1cblxuZnVuY3Rpb24gY2hlY2tBbmRQcmV2ZW50RGVmYXVsdCAoaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIHNjb3BlOiBJbnRlcmFjdC5TY29wZSwgZXZlbnQ6IEV2ZW50KSB7XG4gIGNvbnN0IHNldHRpbmcgPSBpbnRlcmFjdGFibGUub3B0aW9ucy5wcmV2ZW50RGVmYXVsdFxuXG4gIGlmIChzZXR0aW5nID09PSAnbmV2ZXInKSB7IHJldHVybiB9XG5cbiAgaWYgKHNldHRpbmcgPT09ICdhbHdheXMnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gc2V0dGluZyA9PT0gJ2F1dG8nXG5cbiAgLy8gaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMgYW5kIGlzbid0IHJ1bm5pbmcgb24gaU9TLFxuICAvLyBkb24ndCBwcmV2ZW50RGVmYXVsdCBvZiB0b3VjaHtzdGFydCxtb3ZlfSBldmVudHMuIENTUyB0b3VjaC1hY3Rpb24gYW5kXG4gIC8vIHVzZXItc2VsZWN0IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgY2FsbGluZyBldmVudC5wcmV2ZW50RGVmYXVsdCgpLlxuICBpZiAoZXZlbnRzLnN1cHBvcnRzUGFzc2l2ZSAmJiAvXnRvdWNoKHN0YXJ0fG1vdmUpJC8udGVzdChldmVudC50eXBlKSkge1xuICAgIGNvbnN0IGRvYyA9IGdldFdpbmRvdyhldmVudC50YXJnZXQpLmRvY3VtZW50XG4gICAgY29uc3QgZG9jT3B0aW9ucyA9IHNjb3BlLmdldERvY09wdGlvbnMoZG9jKVxuXG4gICAgaWYgKCEoZG9jT3B0aW9ucyAmJiBkb2NPcHRpb25zLmV2ZW50cykgfHwgZG9jT3B0aW9ucy5ldmVudHMucGFzc2l2ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8vIGRvbid0IHByZXZlbnREZWZhdWx0IG9mIHBvaW50ZXJkb3duIGV2ZW50c1xuICBpZiAoL14obW91c2V8cG9pbnRlcnx0b3VjaCkqKGRvd258c3RhcnQpL2kudGVzdChldmVudC50eXBlKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gZG9uJ3QgcHJldmVudERlZmF1bHQgb24gZWRpdGFibGUgZWxlbWVudHNcbiAgaWYgKGlzLmVsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgbWF0Y2hlc1NlbGVjdG9yKGV2ZW50LnRhcmdldCwgJ2lucHV0LHNlbGVjdCx0ZXh0YXJlYSxbY29udGVudGVkaXRhYmxlPXRydWVdLFtjb250ZW50ZWRpdGFibGU9dHJ1ZV0gKicpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG59XG5cbmZ1bmN0aW9uIG9uSW50ZXJhY3Rpb25FdmVudCAoeyBpbnRlcmFjdGlvbiwgZXZlbnQgfTogeyBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24sIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlIH0pIHtcbiAgaWYgKGludGVyYWN0aW9uLmludGVyYWN0YWJsZSkge1xuICAgIGludGVyYWN0aW9uLmludGVyYWN0YWJsZS5jaGVja0FuZFByZXZlbnREZWZhdWx0KGV2ZW50IGFzIEV2ZW50KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsIChzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgLyoqIEBsZW5kcyBJbnRlcmFjdGFibGUgKi9cbiAgY29uc3QgeyBJbnRlcmFjdGFibGUgfSA9IHNjb3BlXG5cbiAgLyoqXG4gICAqIFJldHVybnMgb3Igc2V0cyB3aGV0aGVyIHRvIHByZXZlbnQgdGhlIGJyb3dzZXIncyBkZWZhdWx0IGJlaGF2aW91ciBpblxuICAgKiByZXNwb25zZSB0byBwb2ludGVyIGV2ZW50cy4gQ2FuIGJlIHNldCB0bzpcbiAgICogIC0gYCdhbHdheXMnYCB0byBhbHdheXMgcHJldmVudFxuICAgKiAgLSBgJ25ldmVyJ2AgdG8gbmV2ZXIgcHJldmVudFxuICAgKiAgLSBgJ2F1dG8nYCB0byBsZXQgaW50ZXJhY3QuanMgdHJ5IHRvIGRldGVybWluZSB3aGF0IHdvdWxkIGJlIGJlc3RcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtuZXdWYWx1ZV0gYCdhbHdheXMnYCwgYCduZXZlcidgIG9yIGAnYXV0bydgXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IEludGVyYWN0YWJsZX0gVGhlIGN1cnJlbnQgc2V0dGluZyBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IHByZXZlbnREZWZhdWx0XG5cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5jaGVja0FuZFByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGNoZWNrQW5kUHJldmVudERlZmF1bHQodGhpcywgc2NvcGUsIGV2ZW50KVxuICB9XG5cbiAgLy8gcHJldmVudCBuYXRpdmUgSFRNTDUgZHJhZyBvbiBpbnRlcmFjdC5qcyB0YXJnZXQgZWxlbWVudHNcbiAgc2NvcGUuaW50ZXJhY3Rpb25zLmRvY0V2ZW50cy5wdXNoKHtcbiAgICB0eXBlOiAnZHJhZ3N0YXJ0JyxcbiAgICBsaXN0ZW5lciAoZXZlbnQpIHtcbiAgICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QpIHtcbiAgICAgICAgaWYgKGludGVyYWN0aW9uLmVsZW1lbnQgJiZcbiAgICAgICAgICAoaW50ZXJhY3Rpb24uZWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0IHx8XG4gICAgICAgICAgIG5vZGVDb250YWlucyhpbnRlcmFjdGlvbi5lbGVtZW50LCBldmVudC50YXJnZXQpKSkge1xuICAgICAgICAgIGludGVyYWN0aW9uLmludGVyYWN0YWJsZS5jaGVja0FuZFByZXZlbnREZWZhdWx0KGV2ZW50KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ2NvcmUvaW50ZXJhY3RhYmxlUHJldmVudERlZmF1bHQnLFxuICBpbnN0YWxsLFxuICBsaXN0ZW5lcnM6IFsnZG93bicsICdtb3ZlJywgJ3VwJywgJ2NhbmNlbCddLnJlZHVjZSgoYWNjLCBldmVudFR5cGUpID0+IHtcbiAgICBhY2NbYGludGVyYWN0aW9uczoke2V2ZW50VHlwZX1gXSA9IG9uSW50ZXJhY3Rpb25FdmVudFxuICAgIHJldHVybiBhY2NcbiAgfSwge30gYXMgYW55KSxcbn1cbiIsImltcG9ydCAqIGFzIGRvbSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hEZXRhaWxzIHtcbiAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGVcbiAgcG9pbnRlcklkOiBudW1iZXJcbiAgcG9pbnRlclR5cGU6IHN0cmluZ1xuICBldmVudFR5cGU6IHN0cmluZ1xuICBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXRcbiAgY3VyRXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0XG4gIHNjb3BlOiBJbnRlcmFjdC5TY29wZVxufVxuXG5jb25zdCBmaW5kZXIgPSB7XG4gIG1ldGhvZE9yZGVyOiBbJ3NpbXVsYXRpb25SZXN1bWUnLCAnbW91c2VPclBlbicsICdoYXNQb2ludGVyJywgJ2lkbGUnXSBhcyBjb25zdCxcblxuICBzZWFyY2ggKGRldGFpbHM6IFNlYXJjaERldGFpbHMpIHtcbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBmaW5kZXIubWV0aG9kT3JkZXIpIHtcbiAgICAgIGNvbnN0IGludGVyYWN0aW9uID0gZmluZGVyW21ldGhvZF0oZGV0YWlscylcblxuICAgICAgaWYgKGludGVyYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBpbnRlcmFjdGlvblxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sXG5cbiAgLy8gdHJ5IHRvIHJlc3VtZSBzaW11bGF0aW9uIHdpdGggYSBuZXcgcG9pbnRlclxuICBzaW11bGF0aW9uUmVzdW1lICh7IHBvaW50ZXJUeXBlLCBldmVudFR5cGUsIGV2ZW50VGFyZ2V0LCBzY29wZSB9OiBTZWFyY2hEZXRhaWxzKSB7XG4gICAgaWYgKCEvZG93bnxzdGFydC9pLnRlc3QoZXZlbnRUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGludGVyYWN0aW9uIG9mIHNjb3BlLmludGVyYWN0aW9ucy5saXN0KSB7XG4gICAgICBsZXQgZWxlbWVudCA9IGV2ZW50VGFyZ2V0IGFzIE5vZGVcblxuICAgICAgaWYgKGludGVyYWN0aW9uLnNpbXVsYXRpb24gJiYgaW50ZXJhY3Rpb24uc2ltdWxhdGlvbi5hbGxvd1Jlc3VtZSAmJlxuICAgICAgICAgIChpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSA9PT0gcG9pbnRlclR5cGUpKSB7XG4gICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaXMgdGhlIGludGVyYWN0aW9uIGVsZW1lbnRcbiAgICAgICAgICBpZiAoZWxlbWVudCA9PT0gaW50ZXJhY3Rpb24uZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsZW1lbnQgPSBkb20ucGFyZW50Tm9kZShlbGVtZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSxcblxuICAvLyBpZiBpdCdzIGEgbW91c2Ugb3IgcGVuIGludGVyYWN0aW9uXG4gIG1vdXNlT3JQZW4gKHsgcG9pbnRlcklkLCBwb2ludGVyVHlwZSwgZXZlbnRUeXBlLCBzY29wZSB9OiBTZWFyY2hEZXRhaWxzKSB7XG4gICAgaWYgKHBvaW50ZXJUeXBlICE9PSAnbW91c2UnICYmIHBvaW50ZXJUeXBlICE9PSAncGVuJykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBsZXQgZmlyc3ROb25BY3RpdmVcblxuICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QpIHtcbiAgICAgIGlmIChpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSA9PT0gcG9pbnRlclR5cGUpIHtcbiAgICAgICAgLy8gaWYgaXQncyBhIGRvd24gZXZlbnQsIHNraXAgaW50ZXJhY3Rpb25zIHdpdGggcnVubmluZyBzaW11bGF0aW9uc1xuICAgICAgICBpZiAoaW50ZXJhY3Rpb24uc2ltdWxhdGlvbiAmJiAhaGFzUG9pbnRlcklkKGludGVyYWN0aW9uLCBwb2ludGVySWQpKSB7IGNvbnRpbnVlIH1cblxuICAgICAgICAvLyBpZiB0aGUgaW50ZXJhY3Rpb24gaXMgYWN0aXZlLCByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgICAgICAgaWYgKGludGVyYWN0aW9uLmludGVyYWN0aW5nKCkpIHtcbiAgICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25cbiAgICAgICAgfVxuICAgICAgICAvLyBvdGhlcndpc2Ugc2F2ZSBpdCBhbmQgbG9vayBmb3IgYW5vdGhlciBhY3RpdmUgaW50ZXJhY3Rpb25cbiAgICAgICAgZWxzZSBpZiAoIWZpcnN0Tm9uQWN0aXZlKSB7XG4gICAgICAgICAgZmlyc3ROb25BY3RpdmUgPSBpbnRlcmFjdGlvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgbm8gYWN0aXZlIG1vdXNlIGludGVyYWN0aW9uIHdhcyBmb3VuZCB1c2UgdGhlIGZpcnN0IGluYWN0aXZlIG1vdXNlXG4gICAgLy8gaW50ZXJhY3Rpb25cbiAgICBpZiAoZmlyc3ROb25BY3RpdmUpIHtcbiAgICAgIHJldHVybiBmaXJzdE5vbkFjdGl2ZVxuICAgIH1cblxuICAgIC8vIGZpbmQgYW55IG1vdXNlIG9yIHBlbiBpbnRlcmFjdGlvbi5cbiAgICAvLyBpZ25vcmUgdGhlIGludGVyYWN0aW9uIGlmIHRoZSBldmVudFR5cGUgaXMgYSAqZG93biwgYW5kIGEgc2ltdWxhdGlvblxuICAgIC8vIGlzIGFjdGl2ZVxuICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QpIHtcbiAgICAgIGlmIChpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSA9PT0gcG9pbnRlclR5cGUgJiYgISgvZG93bi9pLnRlc3QoZXZlbnRUeXBlKSAmJiBpbnRlcmFjdGlvbi5zaW11bGF0aW9uKSkge1xuICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LFxuXG4gIC8vIGdldCBpbnRlcmFjdGlvbiB0aGF0IGhhcyB0aGlzIHBvaW50ZXJcbiAgaGFzUG9pbnRlciAoeyBwb2ludGVySWQsIHNjb3BlIH06IFNlYXJjaERldGFpbHMpIHtcbiAgICBmb3IgKGNvbnN0IGludGVyYWN0aW9uIG9mIHNjb3BlLmludGVyYWN0aW9ucy5saXN0KSB7XG4gICAgICBpZiAoaGFzUG9pbnRlcklkKGludGVyYWN0aW9uLCBwb2ludGVySWQpKSB7XG4gICAgICAgIHJldHVybiBpbnRlcmFjdGlvblxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sXG5cbiAgLy8gZ2V0IGZpcnN0IGlkbGUgaW50ZXJhY3Rpb24gd2l0aCBhIG1hdGNoaW5nIHBvaW50ZXJUeXBlXG4gIGlkbGUgKHsgcG9pbnRlclR5cGUsIHNjb3BlIH06IFNlYXJjaERldGFpbHMpIHtcbiAgICBmb3IgKGNvbnN0IGludGVyYWN0aW9uIG9mIHNjb3BlLmludGVyYWN0aW9ucy5saXN0KSB7XG4gICAgICAvLyBpZiB0aGVyZSdzIGFscmVhZHkgYSBwb2ludGVyIGhlbGQgZG93blxuICAgICAgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGVcbiAgICAgICAgLy8gZG9uJ3QgYWRkIHRoaXMgcG9pbnRlciBpZiB0aGVyZSBpcyBhIHRhcmdldCBpbnRlcmFjdGFibGUgYW5kIGl0XG4gICAgICAgIC8vIGlzbid0IGdlc3R1cmFibGVcbiAgICAgICAgaWYgKHRhcmdldCAmJiAhKHRhcmdldC5vcHRpb25zLmdlc3R1cmUgJiYgdGFyZ2V0Lm9wdGlvbnMuZ2VzdHVyZS5lbmFibGVkKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIG1heGltdW0gb2YgMiBwb2ludGVycyBwZXIgaW50ZXJhY3Rpb25cbiAgICAgIGVsc2UgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICghaW50ZXJhY3Rpb24uaW50ZXJhY3RpbmcoKSAmJiAocG9pbnRlclR5cGUgPT09IGludGVyYWN0aW9uLnBvaW50ZXJUeXBlKSkge1xuICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LFxufVxuXG5mdW5jdGlvbiBoYXNQb2ludGVySWQgKGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbiwgcG9pbnRlcklkOiBudW1iZXIpIHtcbiAgcmV0dXJuIGludGVyYWN0aW9uLnBvaW50ZXJzLnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IHBvaW50ZXJJZClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmluZGVyXG4iLCJpbXBvcnQgQmFzZUV2ZW50IGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvQmFzZUV2ZW50J1xuaW1wb3J0IEludGVyYWN0RXZlbnQgZnJvbSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdEV2ZW50J1xuaW1wb3J0IEludGVyYWN0YWJsZSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZSdcbmltcG9ydCAqIGFzIGFyciBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9hcnInXG5cbmNsYXNzIERyb3BFdmVudCBleHRlbmRzIEJhc2VFdmVudCB7XG4gIHRhcmdldDogSW50ZXJhY3QuRWxlbWVudFxuICBkcm9wem9uZTogSW50ZXJhY3RhYmxlXG4gIGRyYWdFdmVudDogSW50ZXJhY3RFdmVudDwnZHJhZyc+XG4gIHJlbGF0ZWRUYXJnZXQ6IEludGVyYWN0LkVsZW1lbnRcbiAgZHJhZ2dhYmxlOiBJbnRlcmFjdGFibGVcbiAgdGltZVN0YW1wOiBudW1iZXJcbiAgcHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2VcbiAgaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2VcblxuICAvKipcbiAgICogQ2xhc3Mgb2YgZXZlbnRzIGZpcmVkIG9uIGRyb3B6b25lcyBkdXJpbmcgZHJhZ3Mgd2l0aCBhY2NlcHRhYmxlIHRhcmdldHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZHJvcFN0YXRlOiBpbXBvcnQoJy4vJykuRHJvcFN0YXRlLCBkcmFnRXZlbnQ6IEludGVyYWN0RXZlbnQ8J2RyYWcnPiwgdHlwZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZHJhZ0V2ZW50Ll9pbnRlcmFjdGlvbilcblxuICAgIGNvbnN0IHsgZWxlbWVudCwgZHJvcHpvbmUgfSA9IHR5cGUgPT09ICdkcmFnbGVhdmUnXG4gICAgICA/IGRyb3BTdGF0ZS5wcmV2XG4gICAgICA6IGRyb3BTdGF0ZS5jdXJcblxuICAgIHRoaXMudHlwZSAgICAgICAgICA9IHR5cGVcbiAgICB0aGlzLnRhcmdldCAgICAgICAgPSBlbGVtZW50XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gZWxlbWVudFxuICAgIHRoaXMuZHJvcHpvbmUgICAgICA9IGRyb3B6b25lXG4gICAgdGhpcy5kcmFnRXZlbnQgICAgID0gZHJhZ0V2ZW50XG4gICAgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZHJhZ0V2ZW50LnRhcmdldFxuICAgIHRoaXMuZHJhZ2dhYmxlICAgICA9IGRyYWdFdmVudC5pbnRlcmFjdGFibGVcbiAgICB0aGlzLnRpbWVTdGFtcCAgICAgPSBkcmFnRXZlbnQudGltZVN0YW1wXG4gIH1cblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBhIGBkcm9wYWN0aXZhdGVgIGV2ZW50LCB0aGUgZHJvcHpvbmUgZWxlbWVudCB3aWxsIGJlXG4gICAqIGRlYWN0aXZhdGVkLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGEgYGRyYWdtb3ZlYCBvciBgZHJhZ2VudGVyYCwgYSBgZHJhZ2xlYXZlYCB3aWxsIGJlIGZpcmVkIG9uIHRoZVxuICAgKiBkcm9wem9uZSBlbGVtZW50IGFuZCBtb3JlLlxuICAgKi9cbiAgcmVqZWN0ICgpIHtcbiAgICBjb25zdCB7IGRyb3BTdGF0ZSB9ID0gdGhpcy5faW50ZXJhY3Rpb25cblxuICAgIGlmIChcbiAgICAgICh0aGlzLnR5cGUgIT09ICdkcm9wYWN0aXZhdGUnKSAmJiAoXG4gICAgICAgICF0aGlzLmRyb3B6b25lIHx8XG4gICAgICAgIGRyb3BTdGF0ZS5jdXIuZHJvcHpvbmUgIT09IHRoaXMuZHJvcHpvbmUgfHxcbiAgICAgICAgZHJvcFN0YXRlLmN1ci5lbGVtZW50ICE9PSB0aGlzLnRhcmdldCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRyb3BTdGF0ZS5wcmV2LmRyb3B6b25lID0gdGhpcy5kcm9wem9uZVxuICAgIGRyb3BTdGF0ZS5wcmV2LmVsZW1lbnQgPSB0aGlzLnRhcmdldFxuXG4gICAgZHJvcFN0YXRlLnJlamVjdGVkID0gdHJ1ZVxuICAgIGRyb3BTdGF0ZS5ldmVudHMuZW50ZXIgPSBudWxsXG5cbiAgICB0aGlzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJvcGFjdGl2YXRlJykge1xuICAgICAgY29uc3QgYWN0aXZlRHJvcHMgPSBkcm9wU3RhdGUuYWN0aXZlRHJvcHNcbiAgICAgIGNvbnN0IGluZGV4ID0gYXJyLmZpbmRJbmRleChhY3RpdmVEcm9wcywgKHsgZHJvcHpvbmUsIGVsZW1lbnQgfSkgPT5cbiAgICAgICAgZHJvcHpvbmUgPT09IHRoaXMuZHJvcHpvbmUgJiYgZWxlbWVudCA9PT0gdGhpcy50YXJnZXQpXG5cbiAgICAgIGRyb3BTdGF0ZS5hY3RpdmVEcm9wcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICAgIGNvbnN0IGRlYWN0aXZhdGVFdmVudCA9IG5ldyBEcm9wRXZlbnQoZHJvcFN0YXRlLCB0aGlzLmRyYWdFdmVudCwgJ2Ryb3BkZWFjdGl2YXRlJylcblxuICAgICAgZGVhY3RpdmF0ZUV2ZW50LmRyb3B6b25lID0gdGhpcy5kcm9wem9uZVxuICAgICAgZGVhY3RpdmF0ZUV2ZW50LnRhcmdldCA9IHRoaXMudGFyZ2V0XG5cbiAgICAgIHRoaXMuZHJvcHpvbmUuZmlyZShkZWFjdGl2YXRlRXZlbnQpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5kcm9wem9uZS5maXJlKG5ldyBEcm9wRXZlbnQoZHJvcFN0YXRlLCB0aGlzLmRyYWdFdmVudCwgJ2RyYWdsZWF2ZScpKVxuICAgIH1cbiAgfVxuXG4gIHByZXZlbnREZWZhdWx0ICgpIHt9XG5cbiAgc3RvcFByb3BhZ2F0aW9uICgpIHtcbiAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWVcbiAgfVxuXG4gIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiAoKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEcm9wRXZlbnRcbiIsImltcG9ydCBJbnRlcmFjdEV2ZW50IGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RFdmVudCdcbmltcG9ydCBJbnRlcmFjdGFibGUgZnJvbSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGFibGUnXG5pbXBvcnQgU2NvcGUgZnJvbSAnQGludGVyYWN0anMvY29yZS9zY29wZSdcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2luZGV4J1xuaW1wb3J0IGRyYWcgZnJvbSAnLi4vZHJhZydcbmltcG9ydCBEcm9wRXZlbnQgZnJvbSAnLi9Ecm9wRXZlbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcHpvbmVNZXRob2Qge1xuICAob3B0aW9uczogSW50ZXJhY3QuRHJvcHpvbmVPcHRpb25zIHwgYm9vbGVhbik6IEludGVyYWN0LkludGVyYWN0YWJsZVxuICAoKTogSW50ZXJhY3QuRHJvcHpvbmVPcHRpb25zXG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlIHtcbiAgICBkcm9wem9uZTogRHJvcHpvbmVNZXRob2RcbiAgICBkcm9wQ2hlY2s6IChcbiAgICAgIGRyYWdFdmVudDogSW50ZXJhY3RFdmVudCxcbiAgICAgIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLFxuICAgICAgZHJhZ2dhYmxlOiBJbnRlcmFjdGFibGUsXG4gICAgICBkcmFnZ2FibGVFbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50LFxuICAgICAgZHJvcEVsZW1lbjogSW50ZXJhY3QuRWxlbWVudCxcbiAgICAgIHJlY3Q6IGFueVxuICAgICkgPT4gYm9vbGVhblxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGlvbiB7XG4gICAgZHJvcFN0YXRlPzogRHJvcFN0YXRlXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvZGVmYXVsdE9wdGlvbnMnIHtcbiAgaW50ZXJmYWNlIEFjdGlvbkRlZmF1bHRzIHtcbiAgICBkcm9wOiBJbnRlcmFjdC5Ecm9wem9uZU9wdGlvbnNcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgQWN0aW9uTWFwIHtcbiAgICBkcm9wPzogdHlwZW9mIGRyb3BcbiAgfVxuXG4gIGludGVyZmFjZSBTY29wZSB7XG4gICAgZHluYW1pY0Ryb3A/OiBib29sZWFuXG4gIH1cblxuICBpbnRlcmZhY2UgU2lnbmFsQXJncyB7XG4gICAgJ2FjdGlvbnMvZHJvcDpzdGFydCc6IERyb3BTaWduYWxBcmdcbiAgICAnYWN0aW9ucy9kcm9wOm1vdmUnOiBEcm9wU2lnbmFsQXJnXG4gICAgJ2FjdGlvbnMvZHJvcDplbmQnOiBEcm9wU2lnbmFsQXJnXG4gIH1cbn1cblxuaW50ZXJmYWNlIERyb3BTaWduYWxBcmcge1xuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb25cbiAgZHJhZ0V2ZW50OiBJbnRlcmFjdC5EcmFnRXZlbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEcm9wIHtcbiAgZHJvcHpvbmU6IEludGVyYWN0YWJsZVxuICBlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50XG4gIHJlY3Q6IEludGVyYWN0LlJlY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEcm9wU3RhdGUge1xuICBjdXI6IHtcbiAgICBkcm9wem9uZTogSW50ZXJhY3RhYmxlICAgIC8vIHRoZSBkcm9wem9uZSBhIGRyYWcgdGFyZ2V0IG1pZ2h0IGJlIGRyb3BwZWQgaW50b1xuICAgIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQgLy8gdGhlIGVsZW1lbnQgYXQgdGhlIHRpbWUgb2YgY2hlY2tpbmdcbiAgfVxuICBwcmV2OiB7XG4gICAgZHJvcHpvbmU6IEludGVyYWN0YWJsZSAgICAvLyB0aGUgZHJvcHpvbmUgdGhhdCB3YXMgcmVjZW50bHkgZHJhZ2dlZCBhd2F5IGZyb21cbiAgICBlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50IC8vIHRoZSBlbGVtZW50IGF0IHRoZSB0aW1lIG9mIGNoZWNraW5nXG4gIH1cbiAgcmVqZWN0ZWQ6IGJvb2xlYW4gICAgICAgICAgIC8vIHdoZWF0aGVyIHRoZSBwb3RlbnRpYWwgZHJvcCB3YXMgcmVqZWN0ZWQgZnJvbSBhIGxpc3RlbmVyXG4gIGV2ZW50czogYW55ICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcCBldmVudHMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBkcmFnIGV2ZW50XG4gIGFjdGl2ZURyb3BzOiBBY3RpdmVEcm9wW11cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IFNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zLFxuICAgIC8qKiBAbGVuZHMgbW9kdWxlOmludGVyYWN0ICovXG4gICAgaW50ZXJhY3RTdGF0aWM6IGludGVyYWN0LFxuICAgIC8qKiBAbGVuZHMgSW50ZXJhY3RhYmxlICovXG4gICAgSW50ZXJhY3RhYmxlLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNoYWRvd1xuICAgIGRlZmF1bHRzLFxuICB9ID0gc2NvcGVcblxuICBzY29wZS51c2VQbHVnaW4oZHJhZylcblxuICAvKipcbiAgICpcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QoJy5kcm9wJykuZHJvcHpvbmUoe1xuICAgKiAgIGFjY2VwdDogJy5jYW4tZHJvcCcgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpbmdsZS1kcm9wJyksXG4gICAqICAgb3ZlcmxhcDogJ3BvaW50ZXInIHx8ICdjZW50ZXInIHx8IHplcm9Ub09uZVxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgd2hldGhlciBkcmFnZ2FibGVzIGNhbiBiZSBkcm9wcGVkIG9udG8gdGhpcyB0YXJnZXQgdG9cbiAgICogdHJpZ2dlciBkcm9wIGV2ZW50c1xuICAgKlxuICAgKiBEcm9wem9uZXMgY2FuIHJlY2VpdmUgdGhlIGZvbGxvd2luZyBldmVudHM6XG4gICAqICAtIGBkcm9wYWN0aXZhdGVgIGFuZCBgZHJvcGRlYWN0aXZhdGVgIHdoZW4gYW4gYWNjZXB0YWJsZSBkcmFnIHN0YXJ0cyBhbmQgZW5kc1xuICAgKiAgLSBgZHJhZ2VudGVyYCBhbmQgYGRyYWdsZWF2ZWAgd2hlbiBhIGRyYWdnYWJsZSBlbnRlcnMgYW5kIGxlYXZlcyB0aGUgZHJvcHpvbmVcbiAgICogIC0gYGRyYWdtb3ZlYCB3aGVuIGEgZHJhZ2dhYmxlIHRoYXQgaGFzIGVudGVyZWQgdGhlIGRyb3B6b25lIGlzIG1vdmVkXG4gICAqICAtIGBkcm9wYCB3aGVuIGEgZHJhZ2dhYmxlIGlzIGRyb3BwZWQgaW50byB0aGlzIGRyb3B6b25lXG4gICAqXG4gICAqIFVzZSB0aGUgYGFjY2VwdGAgb3B0aW9uIHRvIGFsbG93IG9ubHkgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gQ1NTXG4gICAqIHNlbGVjdG9yIG9yIGVsZW1lbnQuIFRoZSB2YWx1ZSBjYW4gYmU6XG4gICAqXG4gICAqICAtICoqYW4gRWxlbWVudCoqIC0gb25seSB0aGF0IGVsZW1lbnQgY2FuIGJlIGRyb3BwZWQgaW50byB0aGlzIGRyb3B6b25lLlxuICAgKiAgLSAqKmEgc3RyaW5nKiosIC0gdGhlIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZCBtdXN0IG1hdGNoIGl0IGFzIGEgQ1NTIHNlbGVjdG9yLlxuICAgKiAgLSAqKmBudWxsYCoqIC0gYWNjZXB0IG9wdGlvbnMgaXMgY2xlYXJlZCAtIGl0IGFjY2VwdHMgYW55IGVsZW1lbnQuXG4gICAqXG4gICAqIFVzZSB0aGUgYG92ZXJsYXBgIG9wdGlvbiB0byBzZXQgaG93IGRyb3BzIGFyZSBjaGVja2VkIGZvci4gVGhlIGFsbG93ZWRcbiAgICogdmFsdWVzIGFyZTpcbiAgICpcbiAgICogICAtIGAncG9pbnRlcidgLCB0aGUgcG9pbnRlciBtdXN0IGJlIG92ZXIgdGhlIGRyb3B6b25lIChkZWZhdWx0KVxuICAgKiAgIC0gYCdjZW50ZXInYCwgdGhlIGRyYWdnYWJsZSBlbGVtZW50J3MgY2VudGVyIG11c3QgYmUgb3ZlciB0aGUgZHJvcHpvbmVcbiAgICogICAtIGEgbnVtYmVyIGZyb20gMC0xIHdoaWNoIGlzIHRoZSBgKGludGVyc2VjdGlvbiBhcmVhKSAvIChkcmFnZ2FibGUgYXJlYSlgLlxuICAgKiAgIGUuZy4gYDAuNWAgZm9yIGRyb3AgdG8gaGFwcGVuIHdoZW4gaGFsZiBvZiB0aGUgYXJlYSBvZiB0aGUgZHJhZ2dhYmxlIGlzXG4gICAqICAgb3ZlciB0aGUgZHJvcHpvbmVcbiAgICpcbiAgICogVXNlIHRoZSBgY2hlY2tlcmAgb3B0aW9uIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGRyYWdnZWQgZWxlbWVudFxuICAgKiBpcyBvdmVyIHRoaXMgSW50ZXJhY3RhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW4gfCBvYmplY3QgfCBudWxsfSBbb3B0aW9uc10gVGhlIG5ldyBvcHRpb25zIHRvIGJlIHNldC5cbiAgICogQHJldHVybiB7Ym9vbGVhbiB8IEludGVyYWN0YWJsZX0gVGhlIGN1cnJlbnQgc2V0dGluZyBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5kcm9wem9uZSA9IGZ1bmN0aW9uICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIG9wdGlvbnM/OiBJbnRlcmFjdC5Ecm9wem9uZU9wdGlvbnMgfCBib29sZWFuKSB7XG4gICAgcmV0dXJuIGRyb3B6b25lTWV0aG9kKHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QodGFyZ2V0KVxuICAgKiAuZHJvcENoZWNrZXIoZnVuY3Rpb24oZHJhZ0V2ZW50LCAgICAgICAgIC8vIHJlbGF0ZWQgZHJhZ21vdmUgb3IgZHJhZ2VuZCBldmVudFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQsICAgICAgICAgICAgIC8vIFRvdWNoRXZlbnQvUG9pbnRlckV2ZW50L01vdXNlRXZlbnRcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGRyb3BwZWQsICAgICAgICAgICAvLyBib29sIHJlc3VsdCBvZiB0aGUgZGVmYXVsdCBjaGVja2VyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBkcm9wem9uZSwgICAgICAgICAgLy8gZHJvcHpvbmUgSW50ZXJhY3RhYmxlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBkcm9wRWxlbWVudCwgICAgICAgLy8gZHJvcHpvbmUgZWxlbW50XG4gICAqICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGUsICAgICAgICAgLy8gZHJhZ2dhYmxlIEludGVyYWN0YWJsZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlRWxlbWVudCkgey8vIGRyYWdnYWJsZSBlbGVtZW50XG4gICAqXG4gICAqICAgcmV0dXJuIGRyb3BwZWQgJiYgZXZlbnQudGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnYWxsb3ctZHJvcCcpXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBJbnRlcmFjdGFibGUucHJvdG90eXBlLmRyb3BDaGVjayA9IGZ1bmN0aW9uICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIGRyYWdFdmVudCwgZXZlbnQsIGRyYWdnYWJsZSwgZHJhZ2dhYmxlRWxlbWVudCwgZHJvcEVsZW1lbnQsIHJlY3QpIHtcbiAgICByZXR1cm4gZHJvcENoZWNrTWV0aG9kKHRoaXMsIGRyYWdFdmVudCwgZXZlbnQsIGRyYWdnYWJsZSwgZHJhZ2dhYmxlRWxlbWVudCwgZHJvcEVsZW1lbnQsIHJlY3QpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBvciBzZXRzIHdoZXRoZXIgdGhlIGRpbWVuc2lvbnMgb2YgZHJvcHpvbmUgZWxlbWVudHMgYXJlIGNhbGN1bGF0ZWRcbiAgICogb24gZXZlcnkgZHJhZ21vdmUgb3Igb25seSBvbiBkcmFnc3RhcnQgZm9yIHRoZSBkZWZhdWx0IGRyb3BDaGVja2VyXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW25ld1ZhbHVlXSBUcnVlIHRvIGNoZWNrIG9uIGVhY2ggbW92ZS4gRmFsc2UgdG8gY2hlY2sgb25seVxuICAgKiBiZWZvcmUgc3RhcnRcbiAgICogQHJldHVybiB7Ym9vbGVhbiB8IGludGVyYWN0fSBUaGUgY3VycmVudCBzZXR0aW5nIG9yIGludGVyYWN0XG4gICAqL1xuICBpbnRlcmFjdC5keW5hbWljRHJvcCA9IGZ1bmN0aW9uIChuZXdWYWx1ZT86IGJvb2xlYW4pIHtcbiAgICBpZiAodXRpbHMuaXMuYm9vbChuZXdWYWx1ZSkpIHtcbiAgICAgIC8vIGlmIChkcmFnZ2luZyAmJiBzY29wZS5keW5hbWljRHJvcCAhPT0gbmV3VmFsdWUgJiYgIW5ld1ZhbHVlKSB7XG4gICAgICAvLyAgY2FsY1JlY3RzKGRyb3B6b25lcylcbiAgICAgIC8vIH1cblxuICAgICAgc2NvcGUuZHluYW1pY0Ryb3AgPSBuZXdWYWx1ZVxuXG4gICAgICByZXR1cm4gaW50ZXJhY3RcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlLmR5bmFtaWNEcm9wXG4gIH1cblxuICB1dGlscy5leHRlbmQoYWN0aW9ucy5waGFzZWxlc3NUeXBlcywge1xuICAgIGRyYWdlbnRlcjogdHJ1ZSxcbiAgICBkcmFnbGVhdmU6IHRydWUsXG4gICAgZHJvcGFjdGl2YXRlOiB0cnVlLFxuICAgIGRyb3BkZWFjdGl2YXRlOiB0cnVlLFxuICAgIGRyb3Btb3ZlOiB0cnVlLFxuICAgIGRyb3A6IHRydWUsXG4gIH0pXG4gIGFjdGlvbnMubWV0aG9kRGljdC5kcm9wID0gJ2Ryb3B6b25lJ1xuXG4gIHNjb3BlLmR5bmFtaWNEcm9wID0gZmFsc2VcblxuICBkZWZhdWx0cy5hY3Rpb25zLmRyb3AgPSBkcm9wLmRlZmF1bHRzXG59XG5cbmZ1bmN0aW9uIGNvbGxlY3REcm9wcyAoeyBpbnRlcmFjdGFibGVzIH0sIGRyYWdnYWJsZUVsZW1lbnQpIHtcbiAgY29uc3QgZHJvcHMgPSBbXVxuXG4gIC8vIGNvbGxlY3QgYWxsIGRyb3B6b25lcyBhbmQgdGhlaXIgZWxlbWVudHMgd2hpY2ggcXVhbGlmeSBmb3IgYSBkcm9wXG4gIGZvciAoY29uc3QgZHJvcHpvbmUgb2YgaW50ZXJhY3RhYmxlcy5saXN0KSB7XG4gICAgaWYgKCFkcm9wem9uZS5vcHRpb25zLmRyb3AuZW5hYmxlZCkgeyBjb250aW51ZSB9XG5cbiAgICBjb25zdCBhY2NlcHQgPSBkcm9wem9uZS5vcHRpb25zLmRyb3AuYWNjZXB0XG5cbiAgICAvLyB0ZXN0IHRoZSBkcmFnZ2FibGUgZHJhZ2dhYmxlRWxlbWVudCBhZ2FpbnN0IHRoZSBkcm9wem9uZSdzIGFjY2VwdCBzZXR0aW5nXG4gICAgaWYgKCh1dGlscy5pcy5lbGVtZW50KGFjY2VwdCkgJiYgYWNjZXB0ICE9PSBkcmFnZ2FibGVFbGVtZW50KSB8fFxuICAgICAgICAodXRpbHMuaXMuc3RyaW5nKGFjY2VwdCkgJiZcbiAgICAgICAgIXV0aWxzLmRvbS5tYXRjaGVzU2VsZWN0b3IoZHJhZ2dhYmxlRWxlbWVudCwgYWNjZXB0KSkgfHxcbiAgICAgICAgKHV0aWxzLmlzLmZ1bmMoYWNjZXB0KSAmJiAhYWNjZXB0KHsgZHJvcHpvbmUsIGRyYWdnYWJsZUVsZW1lbnQgfSkpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIHF1ZXJ5IGZvciBuZXcgZWxlbWVudHMgaWYgbmVjZXNzYXJ5XG4gICAgY29uc3QgZHJvcEVsZW1lbnRzID0gdXRpbHMuaXMuc3RyaW5nKGRyb3B6b25lLnRhcmdldClcbiAgICAgID8gZHJvcHpvbmUuX2NvbnRleHQucXVlcnlTZWxlY3RvckFsbChkcm9wem9uZS50YXJnZXQpXG4gICAgICA6IHV0aWxzLmlzLmFycmF5KGRyb3B6b25lLnRhcmdldCkgPyBkcm9wem9uZS50YXJnZXQgOiBbZHJvcHpvbmUudGFyZ2V0XVxuXG4gICAgZm9yIChjb25zdCBkcm9wem9uZUVsZW1lbnQgb2YgZHJvcEVsZW1lbnRzKSB7XG4gICAgICBpZiAoZHJvcHpvbmVFbGVtZW50ICE9PSBkcmFnZ2FibGVFbGVtZW50KSB7XG4gICAgICAgIGRyb3BzLnB1c2goe1xuICAgICAgICAgIGRyb3B6b25lLFxuICAgICAgICAgIGVsZW1lbnQ6IGRyb3B6b25lRWxlbWVudCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZHJvcHNcbn1cblxuZnVuY3Rpb24gZmlyZUFjdGl2YXRpb25FdmVudHMgKGFjdGl2ZURyb3BzLCBldmVudCkge1xuICAvLyBsb29wIHRocm91Z2ggYWxsIGFjdGl2ZSBkcm9wem9uZXMgYW5kIHRyaWdnZXIgZXZlbnRcbiAgZm9yIChjb25zdCB7IGRyb3B6b25lLCBlbGVtZW50IH0gb2YgYWN0aXZlRHJvcHMuc2xpY2UoKSkge1xuICAgIGV2ZW50LmRyb3B6b25lID0gZHJvcHpvbmVcblxuICAgIC8vIHNldCBjdXJyZW50IGVsZW1lbnQgYXMgZXZlbnQgdGFyZ2V0XG4gICAgZXZlbnQudGFyZ2V0ID0gZWxlbWVudFxuICAgIGRyb3B6b25lLmZpcmUoZXZlbnQpXG4gICAgZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkID0gZXZlbnQuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2VcbiAgfVxufVxuXG4vLyByZXR1cm4gYSBuZXcgYXJyYXkgb2YgcG9zc2libGUgZHJvcHMuIGdldEFjdGl2ZURyb3BzIHNob3VsZCBhbHdheXMgYmVcbi8vIGNhbGxlZCB3aGVuIGEgZHJhZyBoYXMganVzdCBzdGFydGVkIG9yIGEgZHJhZyBldmVudCBoYXBwZW5zIHdoaWxlXG4vLyBkeW5hbWljRHJvcCBpcyB0cnVlXG5mdW5jdGlvbiBnZXRBY3RpdmVEcm9wcyAoc2NvcGU6IFNjb3BlLCBkcmFnRWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCkge1xuICAvLyBnZXQgZHJvcHpvbmVzIGFuZCB0aGVpciBlbGVtZW50cyB0aGF0IGNvdWxkIHJlY2VpdmUgdGhlIGRyYWdnYWJsZVxuICBjb25zdCBhY3RpdmVEcm9wcyA9IGNvbGxlY3REcm9wcyhzY29wZSwgZHJhZ0VsZW1lbnQpXG5cbiAgZm9yIChjb25zdCBhY3RpdmVEcm9wIG9mIGFjdGl2ZURyb3BzKSB7XG4gICAgYWN0aXZlRHJvcC5yZWN0ID0gYWN0aXZlRHJvcC5kcm9wem9uZS5nZXRSZWN0KGFjdGl2ZURyb3AuZWxlbWVudClcbiAgfVxuXG4gIHJldHVybiBhY3RpdmVEcm9wc1xufVxuXG5mdW5jdGlvbiBnZXREcm9wICh7IGRyb3BTdGF0ZSwgaW50ZXJhY3RhYmxlOiBkcmFnZ2FibGUsIGVsZW1lbnQ6IGRyYWdFbGVtZW50IH06IFBhcnRpYWw8SW50ZXJhY3QuSW50ZXJhY3Rpb24+LCBkcmFnRXZlbnQsIHBvaW50ZXJFdmVudCkge1xuICBjb25zdCB2YWxpZERyb3BzID0gW11cblxuICAvLyBjb2xsZWN0IGFsbCBkcm9wem9uZXMgYW5kIHRoZWlyIGVsZW1lbnRzIHdoaWNoIHF1YWxpZnkgZm9yIGEgZHJvcFxuICBmb3IgKGNvbnN0IHsgZHJvcHpvbmUsIGVsZW1lbnQ6IGRyb3B6b25lRWxlbWVudCwgcmVjdCB9IG9mIGRyb3BTdGF0ZS5hY3RpdmVEcm9wcykge1xuICAgIHZhbGlkRHJvcHMucHVzaChkcm9wem9uZS5kcm9wQ2hlY2soZHJhZ0V2ZW50LCBwb2ludGVyRXZlbnQsIGRyYWdnYWJsZSwgZHJhZ0VsZW1lbnQsIGRyb3B6b25lRWxlbWVudCwgcmVjdClcbiAgICAgID8gZHJvcHpvbmVFbGVtZW50XG4gICAgICA6IG51bGwpXG4gIH1cblxuICAvLyBnZXQgdGhlIG1vc3QgYXBwcm9wcmlhdGUgZHJvcHpvbmUgYmFzZWQgb24gRE9NIGRlcHRoIGFuZCBvcmRlclxuICBjb25zdCBkcm9wSW5kZXggPSB1dGlscy5kb20uaW5kZXhPZkRlZXBlc3RFbGVtZW50KHZhbGlkRHJvcHMpXG5cbiAgcmV0dXJuIGRyb3BTdGF0ZS5hY3RpdmVEcm9wc1tkcm9wSW5kZXhdIHx8IG51bGxcbn1cblxuZnVuY3Rpb24gZ2V0RHJvcEV2ZW50cyAoaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uLCBfcG9pbnRlckV2ZW50LCBkcmFnRXZlbnQpIHtcbiAgY29uc3QgeyBkcm9wU3RhdGUgfSA9IGludGVyYWN0aW9uXG4gIGNvbnN0IGRyb3BFdmVudHMgPSB7XG4gICAgZW50ZXIgICAgIDogbnVsbCxcbiAgICBsZWF2ZSAgICAgOiBudWxsLFxuICAgIGFjdGl2YXRlICA6IG51bGwsXG4gICAgZGVhY3RpdmF0ZTogbnVsbCxcbiAgICBtb3ZlICAgICAgOiBudWxsLFxuICAgIGRyb3AgICAgICA6IG51bGwsXG4gIH1cblxuICBpZiAoZHJhZ0V2ZW50LnR5cGUgPT09ICdkcmFnc3RhcnQnKSB7XG4gICAgZHJvcEV2ZW50cy5hY3RpdmF0ZSA9IG5ldyBEcm9wRXZlbnQoZHJvcFN0YXRlLCBkcmFnRXZlbnQsICdkcm9wYWN0aXZhdGUnKVxuXG4gICAgZHJvcEV2ZW50cy5hY3RpdmF0ZS50YXJnZXQgICA9IG51bGxcbiAgICBkcm9wRXZlbnRzLmFjdGl2YXRlLmRyb3B6b25lID0gbnVsbFxuICB9XG4gIGlmIChkcmFnRXZlbnQudHlwZSA9PT0gJ2RyYWdlbmQnKSB7XG4gICAgZHJvcEV2ZW50cy5kZWFjdGl2YXRlID0gbmV3IERyb3BFdmVudChkcm9wU3RhdGUsIGRyYWdFdmVudCwgJ2Ryb3BkZWFjdGl2YXRlJylcblxuICAgIGRyb3BFdmVudHMuZGVhY3RpdmF0ZS50YXJnZXQgICA9IG51bGxcbiAgICBkcm9wRXZlbnRzLmRlYWN0aXZhdGUuZHJvcHpvbmUgPSBudWxsXG4gIH1cblxuICBpZiAoZHJvcFN0YXRlLnJlamVjdGVkKSB7XG4gICAgcmV0dXJuIGRyb3BFdmVudHNcbiAgfVxuXG4gIGlmIChkcm9wU3RhdGUuY3VyLmVsZW1lbnQgIT09IGRyb3BTdGF0ZS5wcmV2LmVsZW1lbnQpIHtcbiAgICAvLyBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBkcm9wem9uZSwgY3JlYXRlIGEgZHJhZ2xlYXZlIGV2ZW50XG4gICAgaWYgKGRyb3BTdGF0ZS5wcmV2LmRyb3B6b25lKSB7XG4gICAgICBkcm9wRXZlbnRzLmxlYXZlID0gbmV3IERyb3BFdmVudChkcm9wU3RhdGUsIGRyYWdFdmVudCwgJ2RyYWdsZWF2ZScpXG5cbiAgICAgIGRyYWdFdmVudC5kcmFnTGVhdmUgICAgPSBkcm9wRXZlbnRzLmxlYXZlLnRhcmdldCAgID0gZHJvcFN0YXRlLnByZXYuZWxlbWVudFxuICAgICAgZHJhZ0V2ZW50LnByZXZEcm9wem9uZSA9IGRyb3BFdmVudHMubGVhdmUuZHJvcHpvbmUgPSBkcm9wU3RhdGUucHJldi5kcm9wem9uZVxuICAgIH1cbiAgICAvLyBpZiBkcm9wem9uZSBpcyBub3QgbnVsbCwgY3JlYXRlIGEgZHJhZ2VudGVyIGV2ZW50XG4gICAgaWYgKGRyb3BTdGF0ZS5jdXIuZHJvcHpvbmUpIHtcbiAgICAgIGRyb3BFdmVudHMuZW50ZXIgPSBuZXcgRHJvcEV2ZW50KGRyb3BTdGF0ZSwgZHJhZ0V2ZW50LCAnZHJhZ2VudGVyJylcblxuICAgICAgZHJhZ0V2ZW50LmRyYWdFbnRlciA9IGRyb3BTdGF0ZS5jdXIuZWxlbWVudFxuICAgICAgZHJhZ0V2ZW50LmRyb3B6b25lID0gZHJvcFN0YXRlLmN1ci5kcm9wem9uZVxuICAgIH1cbiAgfVxuXG4gIGlmIChkcmFnRXZlbnQudHlwZSA9PT0gJ2RyYWdlbmQnICYmIGRyb3BTdGF0ZS5jdXIuZHJvcHpvbmUpIHtcbiAgICBkcm9wRXZlbnRzLmRyb3AgPSBuZXcgRHJvcEV2ZW50KGRyb3BTdGF0ZSwgZHJhZ0V2ZW50LCAnZHJvcCcpXG5cbiAgICBkcmFnRXZlbnQuZHJvcHpvbmUgPSBkcm9wU3RhdGUuY3VyLmRyb3B6b25lXG4gICAgZHJhZ0V2ZW50LnJlbGF0ZWRUYXJnZXQgPSBkcm9wU3RhdGUuY3VyLmVsZW1lbnRcbiAgfVxuICBpZiAoZHJhZ0V2ZW50LnR5cGUgPT09ICdkcmFnbW92ZScgJiYgZHJvcFN0YXRlLmN1ci5kcm9wem9uZSkge1xuICAgIGRyb3BFdmVudHMubW92ZSA9IG5ldyBEcm9wRXZlbnQoZHJvcFN0YXRlLCBkcmFnRXZlbnQsICdkcm9wbW92ZScpXG5cbiAgICBkcm9wRXZlbnRzLm1vdmUuZHJhZ21vdmUgPSBkcmFnRXZlbnRcbiAgICBkcmFnRXZlbnQuZHJvcHpvbmUgPSBkcm9wU3RhdGUuY3VyLmRyb3B6b25lXG4gIH1cblxuICByZXR1cm4gZHJvcEV2ZW50c1xufVxuXG5mdW5jdGlvbiBmaXJlRHJvcEV2ZW50cyAoaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uLCBldmVudHMpIHtcbiAgY29uc3QgeyBkcm9wU3RhdGUgfSA9IGludGVyYWN0aW9uXG4gIGNvbnN0IHtcbiAgICBhY3RpdmVEcm9wcyxcbiAgICBjdXIsXG4gICAgcHJldixcbiAgfSA9IGRyb3BTdGF0ZVxuXG4gIGlmIChldmVudHMubGVhdmUpIHsgcHJldi5kcm9wem9uZS5maXJlKGV2ZW50cy5sZWF2ZSkgfVxuICBpZiAoZXZlbnRzLm1vdmUpIHsgY3VyLmRyb3B6b25lLmZpcmUoZXZlbnRzLm1vdmUpIH1cbiAgaWYgKGV2ZW50cy5lbnRlcikgeyBjdXIuZHJvcHpvbmUuZmlyZShldmVudHMuZW50ZXIpIH1cbiAgaWYgKGV2ZW50cy5kcm9wKSB7IGN1ci5kcm9wem9uZS5maXJlKGV2ZW50cy5kcm9wKSB9XG5cbiAgaWYgKGV2ZW50cy5kZWFjdGl2YXRlKSB7XG4gICAgZmlyZUFjdGl2YXRpb25FdmVudHMoYWN0aXZlRHJvcHMsIGV2ZW50cy5kZWFjdGl2YXRlKVxuICB9XG5cbiAgZHJvcFN0YXRlLnByZXYuZHJvcHpvbmUgID0gY3VyLmRyb3B6b25lXG4gIGRyb3BTdGF0ZS5wcmV2LmVsZW1lbnQgPSBjdXIuZWxlbWVudFxufVxuXG5mdW5jdGlvbiBvbkV2ZW50Q3JlYXRlZCAoeyBpbnRlcmFjdGlvbiwgaUV2ZW50LCBldmVudCB9OiBJbnRlcmFjdC5Eb1BoYXNlQXJnPCdkcmFnJywgSW50ZXJhY3QuRXZlbnRQaGFzZT4sIHNjb3BlKSB7XG4gIGlmIChpRXZlbnQudHlwZSAhPT0gJ2RyYWdtb3ZlJyAmJiBpRXZlbnQudHlwZSAhPT0gJ2RyYWdlbmQnKSB7IHJldHVybiB9XG5cbiAgY29uc3QgeyBkcm9wU3RhdGUgfSA9IGludGVyYWN0aW9uXG5cbiAgaWYgKHNjb3BlLmR5bmFtaWNEcm9wKSB7XG4gICAgZHJvcFN0YXRlLmFjdGl2ZURyb3BzID0gZ2V0QWN0aXZlRHJvcHMoc2NvcGUsIGludGVyYWN0aW9uLmVsZW1lbnQpXG4gIH1cblxuICBjb25zdCBkcmFnRXZlbnQgPSBpRXZlbnRcbiAgY29uc3QgZHJvcFJlc3VsdCA9IGdldERyb3AoaW50ZXJhY3Rpb24sIGRyYWdFdmVudCwgZXZlbnQpXG5cbiAgLy8gdXBkYXRlIHJlamVjdGVkIHN0YXR1c1xuICBkcm9wU3RhdGUucmVqZWN0ZWQgPSBkcm9wU3RhdGUucmVqZWN0ZWQgJiZcbiAgICAhIWRyb3BSZXN1bHQgJiZcbiAgICBkcm9wUmVzdWx0LmRyb3B6b25lID09PSBkcm9wU3RhdGUuY3VyLmRyb3B6b25lICYmXG4gICAgZHJvcFJlc3VsdC5lbGVtZW50ID09PSBkcm9wU3RhdGUuY3VyLmVsZW1lbnRcblxuICBkcm9wU3RhdGUuY3VyLmRyb3B6b25lICA9IGRyb3BSZXN1bHQgJiYgZHJvcFJlc3VsdC5kcm9wem9uZVxuICBkcm9wU3RhdGUuY3VyLmVsZW1lbnQgPSBkcm9wUmVzdWx0ICYmIGRyb3BSZXN1bHQuZWxlbWVudFxuXG4gIGRyb3BTdGF0ZS5ldmVudHMgPSBnZXREcm9wRXZlbnRzKGludGVyYWN0aW9uLCBldmVudCwgZHJhZ0V2ZW50KVxufVxuXG5mdW5jdGlvbiBkcm9wem9uZU1ldGhvZCAoaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUpOiBJbnRlcmFjdC5Ecm9wem9uZU9wdGlvbnNcbmZ1bmN0aW9uIGRyb3B6b25lTWV0aG9kIChpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSwgb3B0aW9uczogSW50ZXJhY3QuRHJvcHpvbmVPcHRpb25zIHwgYm9vbGVhbilcbmZ1bmN0aW9uIGRyb3B6b25lTWV0aG9kIChpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSwgb3B0aW9ucz86IEludGVyYWN0LkRyb3B6b25lT3B0aW9ucyB8IGJvb2xlYW4pIHtcbiAgaWYgKHV0aWxzLmlzLm9iamVjdChvcHRpb25zKSkge1xuICAgIGludGVyYWN0YWJsZS5vcHRpb25zLmRyb3AuZW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlZCAhPT0gZmFsc2VcblxuICAgIGlmIChvcHRpb25zLmxpc3RlbmVycykge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHV0aWxzLm5vcm1hbGl6ZUxpc3RlbmVycyhvcHRpb25zLmxpc3RlbmVycylcbiAgICAgIC8vIHJlbmFtZSAnZHJvcCcgdG8gJycgYXMgaXQgd2lsbCBiZSBwcmVmaXhlZCB3aXRoICdkcm9wJ1xuICAgICAgY29uc3QgY29ycmVjdGVkID0gT2JqZWN0LmtleXMobm9ybWFsaXplZCkucmVkdWNlKChhY2MsIHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgY29ycmVjdGVkVHlwZSA9IC9eKGVudGVyfGxlYXZlKS8udGVzdCh0eXBlKVxuICAgICAgICAgID8gYGRyYWcke3R5cGV9YFxuICAgICAgICAgIDogL14oYWN0aXZhdGV8ZGVhY3RpdmF0ZXxtb3ZlKS8udGVzdCh0eXBlKVxuICAgICAgICAgICAgPyBgZHJvcCR7dHlwZX1gXG4gICAgICAgICAgICA6IHR5cGVcblxuICAgICAgICBhY2NbY29ycmVjdGVkVHlwZV0gPSBub3JtYWxpemVkW3R5cGVdXG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwge30pXG5cbiAgICAgIGludGVyYWN0YWJsZS5vZmYoaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcC5saXN0ZW5lcnMpXG4gICAgICBpbnRlcmFjdGFibGUub24oY29ycmVjdGVkKVxuICAgICAgaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcC5saXN0ZW5lcnMgPSBjb3JyZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJvcCkpIHsgaW50ZXJhY3RhYmxlLm9uKCdkcm9wJywgb3B0aW9ucy5vbmRyb3ApIH1cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJvcGFjdGl2YXRlKSkgeyBpbnRlcmFjdGFibGUub24oJ2Ryb3BhY3RpdmF0ZScsIG9wdGlvbnMub25kcm9wYWN0aXZhdGUpIH1cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJvcGRlYWN0aXZhdGUpKSB7IGludGVyYWN0YWJsZS5vbignZHJvcGRlYWN0aXZhdGUnLCBvcHRpb25zLm9uZHJvcGRlYWN0aXZhdGUpIH1cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJhZ2VudGVyKSkgeyBpbnRlcmFjdGFibGUub24oJ2RyYWdlbnRlcicsIG9wdGlvbnMub25kcmFnZW50ZXIpIH1cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJhZ2xlYXZlKSkgeyBpbnRlcmFjdGFibGUub24oJ2RyYWdsZWF2ZScsIG9wdGlvbnMub25kcmFnbGVhdmUpIH1cbiAgICBpZiAodXRpbHMuaXMuZnVuYyhvcHRpb25zLm9uZHJvcG1vdmUpKSB7IGludGVyYWN0YWJsZS5vbignZHJvcG1vdmUnLCBvcHRpb25zLm9uZHJvcG1vdmUpIH1cblxuICAgIGlmICgvXihwb2ludGVyfGNlbnRlcikkLy50ZXN0KG9wdGlvbnMub3ZlcmxhcCBhcyBzdHJpbmcpKSB7XG4gICAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5kcm9wLm92ZXJsYXAgPSBvcHRpb25zLm92ZXJsYXBcbiAgICB9XG4gICAgZWxzZSBpZiAodXRpbHMuaXMubnVtYmVyKG9wdGlvbnMub3ZlcmxhcCkpIHtcbiAgICAgIGludGVyYWN0YWJsZS5vcHRpb25zLmRyb3Aub3ZlcmxhcCA9IE1hdGgubWF4KE1hdGgubWluKDEsIG9wdGlvbnMub3ZlcmxhcCksIDApXG4gICAgfVxuICAgIGlmICgnYWNjZXB0JyBpbiBvcHRpb25zKSB7XG4gICAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5kcm9wLmFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0XG4gICAgfVxuICAgIGlmICgnY2hlY2tlcicgaW4gb3B0aW9ucykge1xuICAgICAgaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcC5jaGVja2VyID0gb3B0aW9ucy5jaGVja2VyXG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVyYWN0YWJsZVxuICB9XG5cbiAgaWYgKHV0aWxzLmlzLmJvb2wob3B0aW9ucykpIHtcbiAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5kcm9wLmVuYWJsZWQgPSBvcHRpb25zXG5cbiAgICByZXR1cm4gaW50ZXJhY3RhYmxlXG4gIH1cblxuICByZXR1cm4gaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcFxufVxuXG5mdW5jdGlvbiBkcm9wQ2hlY2tNZXRob2QgKFxuICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSxcbiAgZHJhZ0V2ZW50OiBJbnRlcmFjdEV2ZW50LFxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSxcbiAgZHJhZ2dhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsXG4gIGRyYWdnYWJsZUVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsXG4gIGRyb3BFbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50LFxuICByZWN0OiBhbnksXG4pIHtcbiAgbGV0IGRyb3BwZWQgPSBmYWxzZVxuXG4gIC8vIGlmIHRoZSBkcm9wem9uZSBoYXMgbm8gcmVjdCAoZWcuIGRpc3BsYXk6IG5vbmUpXG4gIC8vIGNhbGwgdGhlIGN1c3RvbSBkcm9wQ2hlY2tlciBvciBqdXN0IHJldHVybiBmYWxzZVxuICBpZiAoIShyZWN0ID0gcmVjdCB8fCBpbnRlcmFjdGFibGUuZ2V0UmVjdChkcm9wRWxlbWVudCkpKSB7XG4gICAgcmV0dXJuIChpbnRlcmFjdGFibGUub3B0aW9ucy5kcm9wLmNoZWNrZXJcbiAgICAgID8gaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcC5jaGVja2VyKGRyYWdFdmVudCwgZXZlbnQsIGRyb3BwZWQsIGludGVyYWN0YWJsZSwgZHJvcEVsZW1lbnQsIGRyYWdnYWJsZSwgZHJhZ2dhYmxlRWxlbWVudClcbiAgICAgIDogZmFsc2UpXG4gIH1cblxuICBjb25zdCBkcm9wT3ZlcmxhcCA9IGludGVyYWN0YWJsZS5vcHRpb25zLmRyb3Aub3ZlcmxhcFxuXG4gIGlmIChkcm9wT3ZlcmxhcCA9PT0gJ3BvaW50ZXInKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gdXRpbHMuZ2V0T3JpZ2luWFkoZHJhZ2dhYmxlLCBkcmFnZ2FibGVFbGVtZW50LCAnZHJhZycpXG4gICAgY29uc3QgcGFnZSA9IHV0aWxzLnBvaW50ZXIuZ2V0UGFnZVhZKGRyYWdFdmVudClcblxuICAgIHBhZ2UueCArPSBvcmlnaW4ueFxuICAgIHBhZ2UueSArPSBvcmlnaW4ueVxuXG4gICAgY29uc3QgaG9yaXpvbnRhbCA9IChwYWdlLnggPiByZWN0LmxlZnQpICYmIChwYWdlLnggPCByZWN0LnJpZ2h0KVxuICAgIGNvbnN0IHZlcnRpY2FsICAgPSAocGFnZS55ID4gcmVjdC50b3ApICYmIChwYWdlLnkgPCByZWN0LmJvdHRvbSlcblxuICAgIGRyb3BwZWQgPSBob3Jpem9udGFsICYmIHZlcnRpY2FsXG4gIH1cblxuICBjb25zdCBkcmFnUmVjdCA9IGRyYWdnYWJsZS5nZXRSZWN0KGRyYWdnYWJsZUVsZW1lbnQpXG5cbiAgaWYgKGRyYWdSZWN0ICYmIGRyb3BPdmVybGFwID09PSAnY2VudGVyJykge1xuICAgIGNvbnN0IGN4ID0gZHJhZ1JlY3QubGVmdCArIGRyYWdSZWN0LndpZHRoICAvIDJcbiAgICBjb25zdCBjeSA9IGRyYWdSZWN0LnRvcCAgKyBkcmFnUmVjdC5oZWlnaHQgLyAyXG5cbiAgICBkcm9wcGVkID0gY3ggPj0gcmVjdC5sZWZ0ICYmIGN4IDw9IHJlY3QucmlnaHQgJiYgY3kgPj0gcmVjdC50b3AgJiYgY3kgPD0gcmVjdC5ib3R0b21cbiAgfVxuXG4gIGlmIChkcmFnUmVjdCAmJiB1dGlscy5pcy5udW1iZXIoZHJvcE92ZXJsYXApKSB7XG4gICAgY29uc3Qgb3ZlcmxhcEFyZWEgID0gKE1hdGgubWF4KDAsIE1hdGgubWluKHJlY3QucmlnaHQsIGRyYWdSZWN0LnJpZ2h0KSAtIE1hdGgubWF4KHJlY3QubGVmdCwgZHJhZ1JlY3QubGVmdCkpICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5taW4ocmVjdC5ib3R0b20sIGRyYWdSZWN0LmJvdHRvbSkgLSBNYXRoLm1heChyZWN0LnRvcCwgZHJhZ1JlY3QudG9wKSkpXG5cbiAgICBjb25zdCBvdmVybGFwUmF0aW8gPSBvdmVybGFwQXJlYSAvIChkcmFnUmVjdC53aWR0aCAqIGRyYWdSZWN0LmhlaWdodClcblxuICAgIGRyb3BwZWQgPSBvdmVybGFwUmF0aW8gPj0gZHJvcE92ZXJsYXBcbiAgfVxuXG4gIGlmIChpbnRlcmFjdGFibGUub3B0aW9ucy5kcm9wLmNoZWNrZXIpIHtcbiAgICBkcm9wcGVkID0gaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJvcC5jaGVja2VyKGRyYWdFdmVudCwgZXZlbnQsIGRyb3BwZWQsIGludGVyYWN0YWJsZSwgZHJvcEVsZW1lbnQsIGRyYWdnYWJsZSwgZHJhZ2dhYmxlRWxlbWVudClcbiAgfVxuXG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmNvbnN0IGRyb3A6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdhY3Rpb25zL2Ryb3AnLFxuICBpbnN0YWxsLFxuICBsaXN0ZW5lcnM6IHtcbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tc3RhcnQnOiAoeyBpbnRlcmFjdGlvbiB9KSA9PiB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ2RyYWcnKSB7IHJldHVybiB9XG5cbiAgICAgIGludGVyYWN0aW9uLmRyb3BTdGF0ZSA9IHtcbiAgICAgICAgY3VyOiB7XG4gICAgICAgICAgZHJvcHpvbmU6IG51bGwsXG4gICAgICAgICAgZWxlbWVudDogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJldjoge1xuICAgICAgICAgIGRyb3B6b25lOiBudWxsLFxuICAgICAgICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHJlamVjdGVkOiBudWxsLFxuICAgICAgICBldmVudHM6IG51bGwsXG4gICAgICAgIGFjdGl2ZURyb3BzOiBbXSxcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJ2ludGVyYWN0aW9uczphZnRlci1hY3Rpb24tc3RhcnQnOiAoeyBpbnRlcmFjdGlvbiwgZXZlbnQsIGlFdmVudDogZHJhZ0V2ZW50IH06IEludGVyYWN0LkRvUGhhc2VBcmc8J2RyYWcnLCBJbnRlcmFjdC5FdmVudFBoYXNlPiwgc2NvcGUpID0+IHtcbiAgICAgIGlmIChpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lICE9PSAnZHJhZycpIHsgcmV0dXJuIH1cblxuICAgICAgY29uc3QgeyBkcm9wU3RhdGUgfSA9IGludGVyYWN0aW9uXG5cbiAgICAgIC8vIHJlc2V0IGFjdGl2ZSBkcm9wem9uZXNcbiAgICAgIGRyb3BTdGF0ZS5hY3RpdmVEcm9wcyA9IG51bGxcbiAgICAgIGRyb3BTdGF0ZS5ldmVudHMgPSBudWxsXG4gICAgICBkcm9wU3RhdGUuYWN0aXZlRHJvcHMgPSBnZXRBY3RpdmVEcm9wcyhzY29wZSwgaW50ZXJhY3Rpb24uZWxlbWVudClcbiAgICAgIGRyb3BTdGF0ZS5ldmVudHMgPSBnZXREcm9wRXZlbnRzKGludGVyYWN0aW9uLCBldmVudCwgZHJhZ0V2ZW50KVxuXG4gICAgICBpZiAoZHJvcFN0YXRlLmV2ZW50cy5hY3RpdmF0ZSkge1xuICAgICAgICBmaXJlQWN0aXZhdGlvbkV2ZW50cyhkcm9wU3RhdGUuYWN0aXZlRHJvcHMsIGRyb3BTdGF0ZS5ldmVudHMuYWN0aXZhdGUpXG4gICAgICAgIHNjb3BlLmZpcmUoJ2FjdGlvbnMvZHJvcDpzdGFydCcsIHsgaW50ZXJhY3Rpb24sIGRyYWdFdmVudCB9KVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBGSVhNRSBwcm9wZXIgc2lnbmFsIHR5cGVzXG4gICAgJ2ludGVyYWN0aW9uczphY3Rpb24tbW92ZSc6IG9uRXZlbnRDcmVhdGVkLFxuICAgICdpbnRlcmFjdGlvbnM6YWN0aW9uLWVuZCc6IG9uRXZlbnRDcmVhdGVkLFxuXG4gICAgJ2ludGVyYWN0aW9uczphZnRlci1hY3Rpb24tbW92ZSc6IGZ1bmN0aW9uIGZpcmVEcm9wQWZ0ZXJNb3ZlICh7IGludGVyYWN0aW9uLCBpRXZlbnQ6IGRyYWdFdmVudCB9OiBJbnRlcmFjdC5Eb1BoYXNlQXJnPCdkcmFnJywgSW50ZXJhY3QuRXZlbnRQaGFzZT4sIHNjb3BlKSB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ2RyYWcnKSB7IHJldHVybiB9XG5cbiAgICAgIGZpcmVEcm9wRXZlbnRzKGludGVyYWN0aW9uLCBpbnRlcmFjdGlvbi5kcm9wU3RhdGUuZXZlbnRzKVxuXG4gICAgICBzY29wZS5maXJlKCdhY3Rpb25zL2Ryb3A6bW92ZScsIHsgaW50ZXJhY3Rpb24sIGRyYWdFdmVudCB9KVxuICAgICAgaW50ZXJhY3Rpb24uZHJvcFN0YXRlLmV2ZW50cyA9IHt9XG4gICAgfSxcblxuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLWVuZCc6ICh7IGludGVyYWN0aW9uLCBpRXZlbnQ6IGRyYWdFdmVudCB9OiBJbnRlcmFjdC5Eb1BoYXNlQXJnPCdkcmFnJywgSW50ZXJhY3QuRXZlbnRQaGFzZT4sIHNjb3BlKSA9PiB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ2RyYWcnKSB7IHJldHVybiB9XG5cbiAgICAgIGZpcmVEcm9wRXZlbnRzKGludGVyYWN0aW9uLCBpbnRlcmFjdGlvbi5kcm9wU3RhdGUuZXZlbnRzKVxuICAgICAgc2NvcGUuZmlyZSgnYWN0aW9ucy9kcm9wOmVuZCcsIHsgaW50ZXJhY3Rpb24sIGRyYWdFdmVudCB9KVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOnN0b3AnOiAoeyBpbnRlcmFjdGlvbiB9KSA9PiB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ2RyYWcnKSB7IHJldHVybiB9XG5cbiAgICAgIGNvbnN0IHsgZHJvcFN0YXRlIH0gPSBpbnRlcmFjdGlvblxuXG4gICAgICBpZiAoZHJvcFN0YXRlKSB7XG4gICAgICAgIGRyb3BTdGF0ZS5hY3RpdmVEcm9wcyA9IG51bGxcbiAgICAgICAgZHJvcFN0YXRlLmV2ZW50cyA9IG51bGxcbiAgICAgICAgZHJvcFN0YXRlLmN1ci5kcm9wem9uZSA9IG51bGxcbiAgICAgICAgZHJvcFN0YXRlLmN1ci5lbGVtZW50ID0gbnVsbFxuICAgICAgICBkcm9wU3RhdGUucHJldi5kcm9wem9uZSA9IG51bGxcbiAgICAgICAgZHJvcFN0YXRlLnByZXYuZWxlbWVudCA9IG51bGxcbiAgICAgICAgZHJvcFN0YXRlLnJlamVjdGVkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICB9LFxuICBnZXRBY3RpdmVEcm9wcyxcbiAgZ2V0RHJvcCxcbiAgZ2V0RHJvcEV2ZW50cyxcbiAgZmlyZURyb3BFdmVudHMsXG4gIGRlZmF1bHRzOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gICAgYWNjZXB0IDogbnVsbCxcbiAgICBvdmVybGFwOiAncG9pbnRlcicsXG4gIH0gYXMgSW50ZXJhY3QuRHJvcHpvbmVPcHRpb25zLFxufVxuXG5leHBvcnQgZGVmYXVsdCBkcm9wXG4iLCJpbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pbmRleCdcblxuZXhwb3J0IHR5cGUgR2VzdHVyYWJsZU1ldGhvZCA9IEludGVyYWN0LkFjdGlvbk1ldGhvZDxJbnRlcmFjdC5HZXN0dXJhYmxlT3B0aW9ucz5cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgICBnZXN0dXJlPzoge1xuICAgICAgYW5nbGU6IG51bWJlciAgICAgICAgICAgLy8gYW5nbGUgZnJvbSBmaXJzdCB0byBzZWNvbmQgdG91Y2hcbiAgICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICAgIHNjYWxlOiBudW1iZXIgICAgICAgICAgIC8vIGdlc3R1cmUuZGlzdGFuY2UgLyBnZXN0dXJlLnN0YXJ0RGlzdGFuY2VcbiAgICAgIHN0YXJ0QW5nbGU6IG51bWJlciAgICAgIC8vIGFuZ2xlIG9mIGxpbmUgam9pbmluZyB0d28gdG91Y2hlc1xuICAgICAgc3RhcnREaXN0YW5jZTogbnVtYmVyICAgLy8gZGlzdGFuY2UgYmV0d2VlbiB0d28gdG91Y2hlcyBvZiB0b3VjaFN0YXJ0XG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlIHtcbiAgICBnZXN0dXJhYmxlOiBHZXN0dXJhYmxlTWV0aG9kXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvZGVmYXVsdE9wdGlvbnMnIHtcbiAgaW50ZXJmYWNlIEFjdGlvbkRlZmF1bHRzIHtcbiAgICBnZXN0dXJlOiBJbnRlcmFjdC5HZXN0dXJhYmxlT3B0aW9uc1xuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJyB7XG4gIGludGVyZmFjZSBBY3Rpb25NYXAge1xuICAgIGdlc3R1cmU/OiB0eXBlb2YgZ2VzdHVyZVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VzdHVyZUV2ZW50IGV4dGVuZHMgSW50ZXJhY3QuSW50ZXJhY3RFdmVudDwnZ2VzdHVyZSc+IHtcbiAgZGlzdGFuY2U6IG51bWJlclxuICBhbmdsZTogbnVtYmVyXG4gIGRhOiBudW1iZXIgLy8gYW5nbGUgY2hhbmdlXG4gIHNjYWxlOiBudW1iZXIgLy8gcmF0aW8gb2YgZGlzdGFuY2Ugc3RhcnQgdG8gY3VycmVudCBldmVudFxuICBkczogbnVtYmVyIC8vIHNjYWxlIGNoYW5nZVxuICBib3g6IEludGVyYWN0LlJlY3QgLy8gZW5jbG9zaW5nIGJveCBvZiBhbGwgcG9pbnRzXG4gIHRvdWNoZXM6IEludGVyYWN0LlBvaW50ZXJUeXBlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlU2lnbmFsQXJnIGV4dGVuZHMgSW50ZXJhY3QuRG9QaGFzZUFyZzwnZ2VzdHVyZScsIEludGVyYWN0LkV2ZW50UGhhc2U+IHtcbiAgaUV2ZW50OiBHZXN0dXJlRXZlbnRcbiAgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uPCdnZXN0dXJlJz5cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zLFxuICAgIEludGVyYWN0YWJsZSxcbiAgICBkZWZhdWx0cyxcbiAgfSA9IHNjb3BlXG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGludGVyYWN0KGVsZW1lbnQpLmdlc3R1cmFibGUoe1xuICAgKiAgICAgb25zdGFydDogZnVuY3Rpb24gKGV2ZW50KSB7fSxcbiAgICogICAgIG9ubW92ZSA6IGZ1bmN0aW9uIChldmVudCkge30sXG4gICAqICAgICBvbmVuZCAgOiBmdW5jdGlvbiAoZXZlbnQpIHt9LFxuICAgKlxuICAgKiAgICAgLy8gbGltaXQgbXVsdGlwbGUgZ2VzdHVyZXMuXG4gICAqICAgICAvLyBTZWUgdGhlIGV4cGxhbmF0aW9uIGluIHtAbGluayBJbnRlcmFjdGFibGUuZHJhZ2dhYmxlfSBleGFtcGxlXG4gICAqICAgICBtYXg6IEluZmluaXR5LFxuICAgKiAgICAgbWF4UGVyRWxlbWVudDogMSxcbiAgICogfSlcbiAgICpcbiAgICogdmFyIGlzR2VzdHVyZWFibGUgPSBpbnRlcmFjdChlbGVtZW50KS5nZXN0dXJhYmxlKClcbiAgICogYGBgXG4gICAqXG4gICAqIEdldHMgb3Igc2V0cyB3aGV0aGVyIG11bHRpdG91Y2ggZ2VzdHVyZXMgY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgdGFyZ2V0XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IG9iamVjdH0gW29wdGlvbnNdIHRydWUvZmFsc2Ugb3IgQW4gb2JqZWN0IHdpdGggZXZlbnRcbiAgICogbGlzdGVuZXJzIHRvIGJlIGZpcmVkIG9uIGdlc3R1cmUgZXZlbnRzIChtYWtlcyB0aGUgSW50ZXJhY3RhYmxlIGdlc3R1cmFibGUpXG4gICAqIEByZXR1cm4ge2Jvb2xlYW4gfCBJbnRlcmFjdGFibGV9IEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgY2FuIGJlIHRoZVxuICAgKiB0YXJnZXQgb2YgZ2VzdHVyZSBldmVudHMsIG9yIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBJbnRlcmFjdGFibGUucHJvdG90eXBlLmdlc3R1cmFibGUgPSBmdW5jdGlvbiAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBvcHRpb25zOiBJbnRlcmFjdC5HZXN0dXJhYmxlT3B0aW9ucyB8IGJvb2xlYW4pIHtcbiAgICBpZiAodXRpbHMuaXMub2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZ2VzdHVyZS5lbmFibGVkID0gb3B0aW9ucy5lbmFibGVkICE9PSBmYWxzZVxuICAgICAgdGhpcy5zZXRQZXJBY3Rpb24oJ2dlc3R1cmUnLCBvcHRpb25zKVxuICAgICAgdGhpcy5zZXRPbkV2ZW50cygnZ2VzdHVyZScsIG9wdGlvbnMpXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzLmJvb2wob3B0aW9ucykpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5nZXN0dXJlLmVuYWJsZWQgPSBvcHRpb25zXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXN0dXJlIGFzIEludGVyYWN0Lk9wdGlvbnNcbiAgfSBhcyBHZXN0dXJhYmxlTWV0aG9kXG5cbiAgYWN0aW9ucy5tYXAuZ2VzdHVyZSA9IGdlc3R1cmVcbiAgYWN0aW9ucy5tZXRob2REaWN0Lmdlc3R1cmUgPSAnZ2VzdHVyYWJsZSdcblxuICBkZWZhdWx0cy5hY3Rpb25zLmdlc3R1cmUgPSBnZXN0dXJlLmRlZmF1bHRzXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUdlc3R1cmVQcm9wcyAoeyBpbnRlcmFjdGlvbiwgaUV2ZW50LCBwaGFzZSB9OiBHZXN0dXJlU2lnbmFsQXJnKSB7XG4gIGlmIChpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lICE9PSAnZ2VzdHVyZScpIHsgcmV0dXJuIH1cblxuICBjb25zdCBwb2ludGVycyA9IGludGVyYWN0aW9uLnBvaW50ZXJzLm1hcChwID0+IHAucG9pbnRlcilcbiAgY29uc3Qgc3RhcnRpbmcgPSBwaGFzZSA9PT0gJ3N0YXJ0J1xuICBjb25zdCBlbmRpbmcgPSBwaGFzZSA9PT0gJ2VuZCdcbiAgY29uc3QgZGVsdGFTb3VyY2UgPSBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUub3B0aW9ucy5kZWx0YVNvdXJjZVxuXG4gIGlFdmVudC50b3VjaGVzID0gW3BvaW50ZXJzWzBdLCBwb2ludGVyc1sxXV1cblxuICBpZiAoc3RhcnRpbmcpIHtcbiAgICBpRXZlbnQuZGlzdGFuY2UgPSB1dGlscy5wb2ludGVyLnRvdWNoRGlzdGFuY2UocG9pbnRlcnMsIGRlbHRhU291cmNlKVxuICAgIGlFdmVudC5ib3ggICAgICA9IHV0aWxzLnBvaW50ZXIudG91Y2hCQm94KHBvaW50ZXJzKVxuICAgIGlFdmVudC5zY2FsZSAgICA9IDFcbiAgICBpRXZlbnQuZHMgICAgICAgPSAwXG4gICAgaUV2ZW50LmFuZ2xlICAgID0gdXRpbHMucG9pbnRlci50b3VjaEFuZ2xlKHBvaW50ZXJzLCBkZWx0YVNvdXJjZSlcbiAgICBpRXZlbnQuZGEgICAgICAgPSAwXG5cbiAgICBpbnRlcmFjdGlvbi5nZXN0dXJlLnN0YXJ0RGlzdGFuY2UgPSBpRXZlbnQuZGlzdGFuY2VcbiAgICBpbnRlcmFjdGlvbi5nZXN0dXJlLnN0YXJ0QW5nbGUgPSBpRXZlbnQuYW5nbGVcbiAgfVxuICBlbHNlIGlmIChlbmRpbmcpIHtcbiAgICBjb25zdCBwcmV2RXZlbnQgPSBpbnRlcmFjdGlvbi5wcmV2RXZlbnQgYXMgR2VzdHVyZUV2ZW50XG5cbiAgICBpRXZlbnQuZGlzdGFuY2UgPSBwcmV2RXZlbnQuZGlzdGFuY2VcbiAgICBpRXZlbnQuYm94ICAgICAgPSBwcmV2RXZlbnQuYm94XG4gICAgaUV2ZW50LnNjYWxlICAgID0gcHJldkV2ZW50LnNjYWxlXG4gICAgaUV2ZW50LmRzICAgICAgID0gMFxuICAgIGlFdmVudC5hbmdsZSAgICA9IHByZXZFdmVudC5hbmdsZVxuICAgIGlFdmVudC5kYSAgICAgICA9IDBcbiAgfVxuICBlbHNlIHtcbiAgICBpRXZlbnQuZGlzdGFuY2UgPSB1dGlscy5wb2ludGVyLnRvdWNoRGlzdGFuY2UocG9pbnRlcnMsIGRlbHRhU291cmNlKVxuICAgIGlFdmVudC5ib3ggICAgICA9IHV0aWxzLnBvaW50ZXIudG91Y2hCQm94KHBvaW50ZXJzKVxuICAgIGlFdmVudC5zY2FsZSAgICA9IGlFdmVudC5kaXN0YW5jZSAvIGludGVyYWN0aW9uLmdlc3R1cmUuc3RhcnREaXN0YW5jZVxuICAgIGlFdmVudC5hbmdsZSAgICA9IHV0aWxzLnBvaW50ZXIudG91Y2hBbmdsZShwb2ludGVycywgZGVsdGFTb3VyY2UpXG5cbiAgICBpRXZlbnQuZHMgPSBpRXZlbnQuc2NhbGUgLSBpbnRlcmFjdGlvbi5nZXN0dXJlLnNjYWxlXG4gICAgaUV2ZW50LmRhID0gaUV2ZW50LmFuZ2xlIC0gaW50ZXJhY3Rpb24uZ2VzdHVyZS5hbmdsZVxuICB9XG5cbiAgaW50ZXJhY3Rpb24uZ2VzdHVyZS5kaXN0YW5jZSA9IGlFdmVudC5kaXN0YW5jZVxuICBpbnRlcmFjdGlvbi5nZXN0dXJlLmFuZ2xlID0gaUV2ZW50LmFuZ2xlXG5cbiAgaWYgKHV0aWxzLmlzLm51bWJlcihpRXZlbnQuc2NhbGUpICYmXG4gICAgICBpRXZlbnQuc2NhbGUgIT09IEluZmluaXR5ICYmXG4gICAgICAhaXNOYU4oaUV2ZW50LnNjYWxlKSkge1xuICAgIGludGVyYWN0aW9uLmdlc3R1cmUuc2NhbGUgPSBpRXZlbnQuc2NhbGVcbiAgfVxufVxuXG5jb25zdCBnZXN0dXJlOiBJbnRlcmFjdC5QbHVnaW4gPSB7XG4gIGlkOiAnYWN0aW9ucy9nZXN0dXJlJyxcbiAgYmVmb3JlOiBbJ2FjdGlvbnMvZHJhZycsICdhY3Rpb25zL3Jlc2l6ZSddLFxuICBpbnN0YWxsLFxuICBsaXN0ZW5lcnM6IHtcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1zdGFydCc6IHVwZGF0ZUdlc3R1cmVQcm9wcyxcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1tb3ZlJzogdXBkYXRlR2VzdHVyZVByb3BzLFxuICAgICdpbnRlcmFjdGlvbnM6YWN0aW9uLWVuZCc6IHVwZGF0ZUdlc3R1cmVQcm9wcyxcblxuICAgICdpbnRlcmFjdGlvbnM6bmV3JzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgaW50ZXJhY3Rpb24uZ2VzdHVyZSA9IHtcbiAgICAgICAgYW5nbGU6IDAsXG4gICAgICAgIGRpc3RhbmNlOiAwLFxuICAgICAgICBzY2FsZTogMSxcbiAgICAgICAgc3RhcnRBbmdsZTogMCxcbiAgICAgICAgc3RhcnREaXN0YW5jZTogMCxcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJ2F1dG8tc3RhcnQ6Y2hlY2snOiBhcmcgPT4ge1xuICAgICAgaWYgKGFyZy5pbnRlcmFjdGlvbi5wb2ludGVycy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ2VzdHVyZU9wdGlvbnMgPSBhcmcuaW50ZXJhY3RhYmxlLm9wdGlvbnMuZ2VzdHVyZVxuXG4gICAgICBpZiAoIShnZXN0dXJlT3B0aW9ucyAmJiBnZXN0dXJlT3B0aW9ucy5lbmFibGVkKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGFyZy5hY3Rpb24gPSB7IG5hbWU6ICdnZXN0dXJlJyB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gIH0sXG5cbiAgZGVmYXVsdHM6IHtcbiAgfSxcblxuICBnZXRDdXJzb3IgKCkge1xuICAgIHJldHVybiAnJ1xuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBnZXN0dXJlXG4iLCJpbXBvcnQgeyBJbnRlcmFjdGlvbiB9IGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nXG5pbXBvcnQgU2NvcGUgZnJvbSAnQGludGVyYWN0anMvY29yZS9zY29wZSdcbmltcG9ydCAqIGFzIGRvbSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcbmltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaXMnXG5cbmV4cG9ydCB0eXBlIEVkZ2VOYW1lID0gJ3RvcCcgfCAnbGVmdCcgfCAnYm90dG9tJyB8ICdyaWdodCdcblxuZXhwb3J0IHR5cGUgUmVzaXphYmxlTWV0aG9kID0gSW50ZXJhY3QuQWN0aW9uTWV0aG9kPEludGVyYWN0LlJlc2l6YWJsZU9wdGlvbnM+XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlIHtcbiAgICByZXNpemFibGU6IFJlc2l6YWJsZU1ldGhvZFxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGlvbiB7XG4gICAgcmVzaXplQXhlczogJ3gnIHwgJ3knIHwgJ3h5J1xuICAgIHJlc2l6ZVN0YXJ0QXNwZWN0UmF0aW86IG51bWJlclxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJyB7XG4gIGludGVyZmFjZSBBY3Rpb25EZWZhdWx0cyB7XG4gICAgcmVzaXplOiBJbnRlcmFjdC5SZXNpemFibGVPcHRpb25zXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIEFjdGlvbk1hcCB7XG4gICAgcmVzaXplPzogdHlwZW9mIHJlc2l6ZVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXplRXZlbnQ8UCBleHRlbmRzIEludGVyYWN0LkV2ZW50UGhhc2UgPSBJbnRlcmFjdC5FdmVudFBoYXNlPiBleHRlbmRzIEludGVyYWN0LkludGVyYWN0RXZlbnQ8J3Jlc2l6ZScsIFA+IHtcbiAgZGVsdGFSZWN0PzogSW50ZXJhY3QuRnVsbFJlY3RcbiAgZWRnZXM/OiBJbnRlcmFjdC5BY3Rpb25Qcm9wc1snZWRnZXMnXVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgY29uc3Qge1xuICAgIGFjdGlvbnMsXG4gICAgYnJvd3NlcixcbiAgICAvKiogQGxlbmRzIEludGVyYWN0YWJsZSAqL1xuICAgIEludGVyYWN0YWJsZSwgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1zaGFkb3dlZC12YXJpYWJsZVxuICAgIGRlZmF1bHRzLFxuICB9ID0gc2NvcGVcblxuICAvLyBMZXNzIFByZWNpc2lvbiB3aXRoIHRvdWNoIGlucHV0XG5cbiAgcmVzaXplLmN1cnNvcnMgPSBpbml0Q3Vyc29ycyhicm93c2VyKVxuICByZXNpemUuZGVmYXVsdE1hcmdpbiA9IGJyb3dzZXIuc3VwcG9ydHNUb3VjaCB8fCBicm93c2VyLnN1cHBvcnRzUG9pbnRlckV2ZW50ID8gMjAgOiAxMFxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBpbnRlcmFjdChlbGVtZW50KS5yZXNpemFibGUoe1xuICAgKiAgIG9uc3RhcnQ6IGZ1bmN0aW9uIChldmVudCkge30sXG4gICAqICAgb25tb3ZlIDogZnVuY3Rpb24gKGV2ZW50KSB7fSxcbiAgICogICBvbmVuZCAgOiBmdW5jdGlvbiAoZXZlbnQpIHt9LFxuICAgKlxuICAgKiAgIGVkZ2VzOiB7XG4gICAqICAgICB0b3AgICA6IHRydWUsICAgICAgIC8vIFVzZSBwb2ludGVyIGNvb3JkcyB0byBjaGVjayBmb3IgcmVzaXplLlxuICAgKiAgICAgbGVmdCAgOiBmYWxzZSwgICAgICAvLyBEaXNhYmxlIHJlc2l6aW5nIGZyb20gbGVmdCBlZGdlLlxuICAgKiAgICAgYm90dG9tOiAnLnJlc2l6ZS1zJywvLyBSZXNpemUgaWYgcG9pbnRlciB0YXJnZXQgbWF0Y2hlcyBzZWxlY3RvclxuICAgKiAgICAgcmlnaHQgOiBoYW5kbGVFbCAgICAvLyBSZXNpemUgaWYgcG9pbnRlciB0YXJnZXQgaXMgdGhlIGdpdmVuIEVsZW1lbnRcbiAgICogICB9LFxuICAgKlxuICAgKiAgICAgLy8gV2lkdGggYW5kIGhlaWdodCBjYW4gYmUgYWRqdXN0ZWQgaW5kZXBlbmRlbnRseS4gV2hlbiBgdHJ1ZWAsIHdpZHRoIGFuZFxuICAgKiAgICAgLy8gaGVpZ2h0IGFyZSBhZGp1c3RlZCBhdCBhIDE6MSByYXRpby5cbiAgICogICAgIHNxdWFyZTogZmFsc2UsXG4gICAqXG4gICAqICAgICAvLyBXaWR0aCBhbmQgaGVpZ2h0IGNhbiBiZSBhZGp1c3RlZCBpbmRlcGVuZGVudGx5LiBXaGVuIGB0cnVlYCwgd2lkdGggYW5kXG4gICAqICAgICAvLyBoZWlnaHQgbWFpbnRhaW4gdGhlIGFzcGVjdCByYXRpbyB0aGV5IGhhZCB3aGVuIHJlc2l6aW5nIHN0YXJ0ZWQuXG4gICAqICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICpcbiAgICogICAvLyBhIHZhbHVlIG9mICdub25lJyB3aWxsIGxpbWl0IHRoZSByZXNpemUgcmVjdCB0byBhIG1pbmltdW0gb2YgMHgwXG4gICAqICAgLy8gJ25lZ2F0ZScgd2lsbCBhbGxvdyB0aGUgcmVjdCB0byBoYXZlIG5lZ2F0aXZlIHdpZHRoL2hlaWdodFxuICAgKiAgIC8vICdyZXBvc2l0aW9uJyB3aWxsIGtlZXAgdGhlIHdpZHRoL2hlaWdodCBwb3NpdGl2ZSBieSBzd2FwcGluZ1xuICAgKiAgIC8vIHRoZSB0b3AgYW5kIGJvdHRvbSBlZGdlcyBhbmQvb3Igc3dhcHBpbmcgdGhlIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzXG4gICAqICAgaW52ZXJ0OiAnbm9uZScgfHwgJ25lZ2F0ZScgfHwgJ3JlcG9zaXRpb24nXG4gICAqXG4gICAqICAgLy8gbGltaXQgbXVsdGlwbGUgcmVzaXplcy5cbiAgICogICAvLyBTZWUgdGhlIGV4cGxhbmF0aW9uIGluIHRoZSB7QGxpbmsgSW50ZXJhY3RhYmxlLmRyYWdnYWJsZX0gZXhhbXBsZVxuICAgKiAgIG1heDogSW5maW5pdHksXG4gICAqICAgbWF4UGVyRWxlbWVudDogMSxcbiAgICogfSlcbiAgICpcbiAgICogdmFyIGlzUmVzaXplYWJsZSA9IGludGVyYWN0KGVsZW1lbnQpLnJlc2l6YWJsZSgpXG4gICAqIGBgYFxuICAgKlxuICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciByZXNpemUgYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIG9uIHRoZSB0YXJnZXRcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFuIHwgb2JqZWN0fSBbb3B0aW9uc10gdHJ1ZS9mYWxzZSBvciBBbiBvYmplY3Qgd2l0aCBldmVudFxuICAgKiBsaXN0ZW5lcnMgdG8gYmUgZmlyZWQgb24gcmVzaXplIGV2ZW50cyAob2JqZWN0IG1ha2VzIHRoZSBJbnRlcmFjdGFibGVcbiAgICogcmVzaXphYmxlKVxuICAgKiBAcmV0dXJuIHtib29sZWFuIHwgSW50ZXJhY3RhYmxlfSBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGlzIGNhbiBiZSB0aGVcbiAgICogdGFyZ2V0IG9mIHJlc2l6ZSBlbGVtZW50cywgb3IgdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUucmVzaXphYmxlID0gZnVuY3Rpb24gKHRoaXM6IEludGVyYWN0LkludGVyYWN0YWJsZSwgb3B0aW9uczogSW50ZXJhY3QuUmVzaXphYmxlT3B0aW9ucyB8IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gcmVzaXphYmxlKHRoaXMsIG9wdGlvbnMsIHNjb3BlKVxuICB9IGFzIFJlc2l6YWJsZU1ldGhvZFxuXG4gIGFjdGlvbnMubWFwLnJlc2l6ZSA9IHJlc2l6ZVxuICBhY3Rpb25zLm1ldGhvZERpY3QucmVzaXplID0gJ3Jlc2l6YWJsZSdcblxuICBkZWZhdWx0cy5hY3Rpb25zLnJlc2l6ZSA9IHJlc2l6ZS5kZWZhdWx0c1xufVxuXG5mdW5jdGlvbiByZXNpemVDaGVja2VyIChhcmcpIHtcbiAgY29uc3QgeyBpbnRlcmFjdGlvbiwgaW50ZXJhY3RhYmxlLCBlbGVtZW50LCByZWN0LCBidXR0b25zIH0gPSBhcmdcblxuICBpZiAoIXJlY3QpIHsgcmV0dXJuIHVuZGVmaW5lZCB9XG5cbiAgY29uc3QgcGFnZSA9IGV4dGVuZCh7fSwgaW50ZXJhY3Rpb24uY29vcmRzLmN1ci5wYWdlKVxuICBjb25zdCByZXNpemVPcHRpb25zID0gaW50ZXJhY3RhYmxlLm9wdGlvbnMucmVzaXplXG5cbiAgaWYgKFxuICAgICEocmVzaXplT3B0aW9ucyAmJiByZXNpemVPcHRpb25zLmVuYWJsZWQpIHx8XG4gICAgLy8gY2hlY2sgbW91c2VCdXR0b24gc2V0dGluZyBpZiB0aGUgcG9pbnRlciBpcyBkb3duXG4gICAgKGludGVyYWN0aW9uLnBvaW50ZXJJc0Rvd24gJiZcbiAgICAgL21vdXNlfHBvaW50ZXIvLnRlc3QoaW50ZXJhY3Rpb24ucG9pbnRlclR5cGUpICYmXG4gICAoYnV0dG9ucyAmIHJlc2l6ZU9wdGlvbnMubW91c2VCdXR0b25zKSA9PT0gMClcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gaWYgdXNpbmcgcmVzaXplLmVkZ2VzXG4gIGlmIChpcy5vYmplY3QocmVzaXplT3B0aW9ucy5lZGdlcykpIHtcbiAgICBjb25zdCByZXNpemVFZGdlcyA9IHtcbiAgICAgIGxlZnQ6IGZhbHNlLFxuICAgICAgcmlnaHQ6IGZhbHNlLFxuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlZGdlIGluIHJlc2l6ZUVkZ2VzKSB7XG4gICAgICByZXNpemVFZGdlc1tlZGdlXSA9IGNoZWNrUmVzaXplRWRnZShlZGdlLFxuICAgICAgICByZXNpemVPcHRpb25zLmVkZ2VzW2VkZ2VdLFxuICAgICAgICBwYWdlLFxuICAgICAgICBpbnRlcmFjdGlvbi5fbGF0ZXN0UG9pbnRlci5ldmVudFRhcmdldCxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcmVjdCxcbiAgICAgICAgcmVzaXplT3B0aW9ucy5tYXJnaW4gfHwgcmVzaXplLmRlZmF1bHRNYXJnaW4pXG4gICAgfVxuXG4gICAgcmVzaXplRWRnZXMubGVmdCA9IHJlc2l6ZUVkZ2VzLmxlZnQgJiYgIXJlc2l6ZUVkZ2VzLnJpZ2h0XG4gICAgcmVzaXplRWRnZXMudG9wICA9IHJlc2l6ZUVkZ2VzLnRvcCAgJiYgIXJlc2l6ZUVkZ2VzLmJvdHRvbVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2VzLmxlZnQgfHwgcmVzaXplRWRnZXMucmlnaHQgfHwgcmVzaXplRWRnZXMudG9wIHx8IHJlc2l6ZUVkZ2VzLmJvdHRvbSkge1xuICAgICAgYXJnLmFjdGlvbiA9IHtcbiAgICAgICAgbmFtZTogJ3Jlc2l6ZScsXG4gICAgICAgIGVkZ2VzOiByZXNpemVFZGdlcyxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgY29uc3QgcmlnaHQgID0gcmVzaXplT3B0aW9ucy5heGlzICE9PSAneScgJiYgcGFnZS54ID4gKHJlY3QucmlnaHQgIC0gcmVzaXplLmRlZmF1bHRNYXJnaW4pXG4gICAgY29uc3QgYm90dG9tID0gcmVzaXplT3B0aW9ucy5heGlzICE9PSAneCcgJiYgcGFnZS55ID4gKHJlY3QuYm90dG9tIC0gcmVzaXplLmRlZmF1bHRNYXJnaW4pXG5cbiAgICBpZiAocmlnaHQgfHwgYm90dG9tKSB7XG4gICAgICBhcmcuYWN0aW9uID0ge1xuICAgICAgICBuYW1lOiAncmVzaXplJyxcbiAgICAgICAgYXhlczogKHJpZ2h0ID8gJ3gnIDogJycpICsgKGJvdHRvbSA/ICd5JyA6ICcnKSxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJnLmFjdGlvbiA/IGZhbHNlIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHJlc2l6YWJsZSAoaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIG9wdGlvbnM6IEludGVyYWN0Lk9yQm9vbGVhbjxJbnRlcmFjdC5SZXNpemFibGVPcHRpb25zPiB8IGJvb2xlYW4sIHNjb3BlOiBTY29wZSkge1xuICBpZiAoaXMub2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgaW50ZXJhY3RhYmxlLm9wdGlvbnMucmVzaXplLmVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZWQgIT09IGZhbHNlXG4gICAgaW50ZXJhY3RhYmxlLnNldFBlckFjdGlvbigncmVzaXplJywgb3B0aW9ucylcbiAgICBpbnRlcmFjdGFibGUuc2V0T25FdmVudHMoJ3Jlc2l6ZScsIG9wdGlvbnMpXG5cbiAgICBpZiAoaXMuc3RyaW5nKG9wdGlvbnMuYXhpcykgJiYgL154JHxeeSR8Xnh5JC8udGVzdChvcHRpb25zLmF4aXMpKSB7XG4gICAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5yZXNpemUuYXhpcyA9IG9wdGlvbnMuYXhpc1xuICAgIH1cbiAgICBlbHNlIGlmIChvcHRpb25zLmF4aXMgPT09IG51bGwpIHtcbiAgICAgIGludGVyYWN0YWJsZS5vcHRpb25zLnJlc2l6ZS5heGlzID0gc2NvcGUuZGVmYXVsdHMuYWN0aW9ucy5yZXNpemUuYXhpc1xuICAgIH1cblxuICAgIGlmIChpcy5ib29sKG9wdGlvbnMucHJlc2VydmVBc3BlY3RSYXRpbykpIHtcbiAgICAgIGludGVyYWN0YWJsZS5vcHRpb25zLnJlc2l6ZS5wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb3B0aW9ucy5wcmVzZXJ2ZUFzcGVjdFJhdGlvXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzLmJvb2wob3B0aW9ucy5zcXVhcmUpKSB7XG4gICAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5yZXNpemUuc3F1YXJlID0gb3B0aW9ucy5zcXVhcmVcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJhY3RhYmxlXG4gIH1cbiAgaWYgKGlzLmJvb2wob3B0aW9ucykpIHtcbiAgICBpbnRlcmFjdGFibGUub3B0aW9ucy5yZXNpemUuZW5hYmxlZCA9IG9wdGlvbnNcblxuICAgIHJldHVybiBpbnRlcmFjdGFibGVcbiAgfVxuICByZXR1cm4gaW50ZXJhY3RhYmxlLm9wdGlvbnMucmVzaXplXG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVzaXplRWRnZSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbiAgcGFnZTogSW50ZXJhY3QuUG9pbnQsXG4gIGVsZW1lbnQ6IE5vZGUsXG4gIGludGVyYWN0YWJsZUVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsXG4gIHJlY3Q6IEludGVyYWN0LlJlY3QsXG4gIG1hcmdpbjogbnVtYmVyLFxuKSB7XG4gIC8vIGZhbHNlLCAnJywgdW5kZWZpbmVkLCBudWxsXG4gIGlmICghdmFsdWUpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvLyB0cnVlIHZhbHVlLCB1c2UgcG9pbnRlciBjb29yZHMgYW5kIGVsZW1lbnQgcmVjdFxuICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAvLyBpZiBkaW1lbnNpb25zIGFyZSBuZWdhdGl2ZSwgXCJzd2l0Y2hcIiBlZGdlc1xuICAgIGNvbnN0IHdpZHRoICA9IGlzLm51bWJlcihyZWN0LndpZHRoKSA/IHJlY3Qud2lkdGggIDogcmVjdC5yaWdodCAgLSByZWN0LmxlZnRcbiAgICBjb25zdCBoZWlnaHQgPSBpcy5udW1iZXIocmVjdC5oZWlnaHQpID8gcmVjdC5oZWlnaHQgOiByZWN0LmJvdHRvbSAtIHJlY3QudG9wXG5cbiAgICAvLyBkb24ndCB1c2UgbWFyZ2luIGdyZWF0ZXIgdGhhbiBoYWxmIHRoZSByZWxldmVudCBkaW1lbnNpb25cbiAgICBtYXJnaW4gPSBNYXRoLm1pbihtYXJnaW4sIChuYW1lID09PSAnbGVmdCcgfHwgbmFtZSA9PT0gJ3JpZ2h0JyA/IHdpZHRoIDogaGVpZ2h0KSAvIDIpXG5cbiAgICBpZiAod2lkdGggPCAwKSB7XG4gICAgICBpZiAgICAgIChuYW1lID09PSAnbGVmdCcpICB7IG5hbWUgPSAncmlnaHQnIH1cbiAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdyaWdodCcpIHsgbmFtZSA9ICdsZWZ0JyAgfVxuICAgIH1cbiAgICBpZiAoaGVpZ2h0IDwgMCkge1xuICAgICAgaWYgICAgICAobmFtZSA9PT0gJ3RvcCcpICAgIHsgbmFtZSA9ICdib3R0b20nIH1cbiAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdib3R0b20nKSB7IG5hbWUgPSAndG9wJyAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICdsZWZ0JykgeyByZXR1cm4gcGFnZS54IDwgKCh3aWR0aCAgPj0gMCA/IHJlY3QubGVmdCA6IHJlY3QucmlnaHQpICsgbWFyZ2luKSB9XG4gICAgaWYgKG5hbWUgPT09ICd0b3AnKSB7IHJldHVybiBwYWdlLnkgPCAoKGhlaWdodCA+PSAwID8gcmVjdC50b3AgOiByZWN0LmJvdHRvbSkgKyBtYXJnaW4pIH1cblxuICAgIGlmIChuYW1lID09PSAncmlnaHQnKSB7IHJldHVybiBwYWdlLnggPiAoKHdpZHRoICA+PSAwID8gcmVjdC5yaWdodCA6IHJlY3QubGVmdCkgLSBtYXJnaW4pIH1cbiAgICBpZiAobmFtZSA9PT0gJ2JvdHRvbScpIHsgcmV0dXJuIHBhZ2UueSA+ICgoaGVpZ2h0ID49IDAgPyByZWN0LmJvdHRvbSA6IHJlY3QudG9wKSAtIG1hcmdpbikgfVxuICB9XG5cbiAgLy8gdGhlIHJlbWFpbmluZyBjaGVja3MgcmVxdWlyZSBhbiBlbGVtZW50XG4gIGlmICghaXMuZWxlbWVudChlbGVtZW50KSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIHJldHVybiBpcy5lbGVtZW50KHZhbHVlKVxuICAvLyB0aGUgdmFsdWUgaXMgYW4gZWxlbWVudCB0byB1c2UgYXMgYSByZXNpemUgaGFuZGxlXG4gICAgPyB2YWx1ZSA9PT0gZWxlbWVudFxuICAgIC8vIG90aGVyd2lzZSBjaGVjayBpZiBlbGVtZW50IG1hdGNoZXMgdmFsdWUgYXMgc2VsZWN0b3JcbiAgICA6IGRvbS5tYXRjaGVzVXBUbyhlbGVtZW50LCB2YWx1ZSwgaW50ZXJhY3RhYmxlRWxlbWVudClcbn1cblxuZnVuY3Rpb24gaW5pdEN1cnNvcnMgKGJyb3dzZXI6IHR5cGVvZiBpbXBvcnQgKCdAaW50ZXJhY3Rqcy91dGlscy9icm93c2VyJykuZGVmYXVsdCkge1xuICByZXR1cm4gKGJyb3dzZXIuaXNJZTkgPyB7XG4gICAgeCA6ICdlLXJlc2l6ZScsXG4gICAgeSA6ICdzLXJlc2l6ZScsXG4gICAgeHk6ICdzZS1yZXNpemUnLFxuXG4gICAgdG9wICAgICAgICA6ICduLXJlc2l6ZScsXG4gICAgbGVmdCAgICAgICA6ICd3LXJlc2l6ZScsXG4gICAgYm90dG9tICAgICA6ICdzLXJlc2l6ZScsXG4gICAgcmlnaHQgICAgICA6ICdlLXJlc2l6ZScsXG4gICAgdG9wbGVmdCAgICA6ICdzZS1yZXNpemUnLFxuICAgIGJvdHRvbXJpZ2h0OiAnc2UtcmVzaXplJyxcbiAgICB0b3ByaWdodCAgIDogJ25lLXJlc2l6ZScsXG4gICAgYm90dG9tbGVmdCA6ICduZS1yZXNpemUnLFxuICB9IDoge1xuICAgIHggOiAnZXctcmVzaXplJyxcbiAgICB5IDogJ25zLXJlc2l6ZScsXG4gICAgeHk6ICdud3NlLXJlc2l6ZScsXG5cbiAgICB0b3AgICAgICAgIDogJ25zLXJlc2l6ZScsXG4gICAgbGVmdCAgICAgICA6ICdldy1yZXNpemUnLFxuICAgIGJvdHRvbSAgICAgOiAnbnMtcmVzaXplJyxcbiAgICByaWdodCAgICAgIDogJ2V3LXJlc2l6ZScsXG4gICAgdG9wbGVmdCAgICA6ICdud3NlLXJlc2l6ZScsXG4gICAgYm90dG9tcmlnaHQ6ICdud3NlLXJlc2l6ZScsXG4gICAgdG9wcmlnaHQgICA6ICduZXN3LXJlc2l6ZScsXG4gICAgYm90dG9tbGVmdCA6ICduZXN3LXJlc2l6ZScsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHN0YXJ0ICh7IGlFdmVudCwgaW50ZXJhY3Rpb24gfTogeyBpRXZlbnQ6IEludGVyYWN0LkludGVyYWN0RXZlbnQ8YW55LCBhbnk+LCBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24gfSkge1xuICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ3Jlc2l6ZScgfHwgIWludGVyYWN0aW9uLnByZXBhcmVkLmVkZ2VzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCByZXNpemVFdmVudCA9IGlFdmVudCBhcyBSZXNpemVFdmVudFxuICBjb25zdCByZWN0ID0gaW50ZXJhY3Rpb24ucmVjdFxuXG4gIGludGVyYWN0aW9uLl9yZWN0cyA9IHtcbiAgICBzdGFydDogZXh0ZW5kKHt9LCByZWN0KSxcbiAgICBjb3JyZWN0ZWQ6IGV4dGVuZCh7fSwgcmVjdCksXG4gICAgcHJldmlvdXM6IGV4dGVuZCh7fSwgcmVjdCksXG4gICAgZGVsdGE6IHtcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodCA6IDAsXG4gICAgICB3aWR0aCA6IDAsXG4gICAgICB0b3AgOiAwLFxuICAgICAgYm90dG9tOiAwLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgIH0sXG4gIH1cblxuICByZXNpemVFdmVudC5lZGdlcyA9IGludGVyYWN0aW9uLnByZXBhcmVkLmVkZ2VzXG4gIHJlc2l6ZUV2ZW50LnJlY3QgPSBpbnRlcmFjdGlvbi5fcmVjdHMuY29ycmVjdGVkXG4gIHJlc2l6ZUV2ZW50LmRlbHRhUmVjdCA9IGludGVyYWN0aW9uLl9yZWN0cy5kZWx0YVxufVxuXG5mdW5jdGlvbiBtb3ZlICh7IGlFdmVudCwgaW50ZXJhY3Rpb24gfTogeyBpRXZlbnQ6IEludGVyYWN0LkludGVyYWN0RXZlbnQ8YW55LCBhbnk+LCBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24gfSkge1xuICBpZiAoaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSAhPT0gJ3Jlc2l6ZScgfHwgIWludGVyYWN0aW9uLnByZXBhcmVkLmVkZ2VzKSB7IHJldHVybiB9XG5cbiAgY29uc3QgcmVzaXplRXZlbnQgPSBpRXZlbnQgYXMgUmVzaXplRXZlbnRcbiAgY29uc3QgcmVzaXplT3B0aW9ucyA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZS5vcHRpb25zLnJlc2l6ZVxuICBjb25zdCBpbnZlcnQgPSByZXNpemVPcHRpb25zLmludmVydFxuICBjb25zdCBpbnZlcnRpYmxlID0gaW52ZXJ0ID09PSAncmVwb3NpdGlvbicgfHwgaW52ZXJ0ID09PSAnbmVnYXRlJ1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgY29uc3QgY3VycmVudCA9IGludGVyYWN0aW9uLnJlY3RcbiAgY29uc3QgeyBzdGFydDogc3RhcnRSZWN0LCBjb3JyZWN0ZWQsIGRlbHRhOiBkZWx0YVJlY3QsIHByZXZpb3VzIH0gPSBpbnRlcmFjdGlvbi5fcmVjdHNcblxuICBleHRlbmQocHJldmlvdXMsIGNvcnJlY3RlZClcblxuICBpZiAoaW52ZXJ0aWJsZSkge1xuICAgIC8vIGlmIGludmVydGlibGUsIGNvcHkgdGhlIGN1cnJlbnQgcmVjdFxuICAgIGV4dGVuZChjb3JyZWN0ZWQsIGN1cnJlbnQpXG5cbiAgICBpZiAoaW52ZXJ0ID09PSAncmVwb3NpdGlvbicpIHtcbiAgICAgIC8vIHN3YXAgZWRnZSB2YWx1ZXMgaWYgbmVjZXNzYXJ5IHRvIGtlZXAgd2lkdGgvaGVpZ2h0IHBvc2l0aXZlXG4gICAgICBpZiAoY29ycmVjdGVkLnRvcCA+IGNvcnJlY3RlZC5ib3R0b20pIHtcbiAgICAgICAgY29uc3Qgc3dhcCA9IGNvcnJlY3RlZC50b3BcblxuICAgICAgICBjb3JyZWN0ZWQudG9wID0gY29ycmVjdGVkLmJvdHRvbVxuICAgICAgICBjb3JyZWN0ZWQuYm90dG9tID0gc3dhcFxuICAgICAgfVxuICAgICAgaWYgKGNvcnJlY3RlZC5sZWZ0ID4gY29ycmVjdGVkLnJpZ2h0KSB7XG4gICAgICAgIGNvbnN0IHN3YXAgPSBjb3JyZWN0ZWQubGVmdFxuXG4gICAgICAgIGNvcnJlY3RlZC5sZWZ0ID0gY29ycmVjdGVkLnJpZ2h0XG4gICAgICAgIGNvcnJlY3RlZC5yaWdodCA9IHN3YXBcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gaWYgbm90IGludmVydGlibGUsIHJlc3RyaWN0IHRvIG1pbmltdW0gb2YgMHgwIHJlY3RcbiAgICBjb3JyZWN0ZWQudG9wICAgID0gTWF0aC5taW4oY3VycmVudC50b3AsIHN0YXJ0UmVjdC5ib3R0b20pXG4gICAgY29ycmVjdGVkLmJvdHRvbSA9IE1hdGgubWF4KGN1cnJlbnQuYm90dG9tLCBzdGFydFJlY3QudG9wKVxuICAgIGNvcnJlY3RlZC5sZWZ0ICAgPSBNYXRoLm1pbihjdXJyZW50LmxlZnQsIHN0YXJ0UmVjdC5yaWdodClcbiAgICBjb3JyZWN0ZWQucmlnaHQgID0gTWF0aC5tYXgoY3VycmVudC5yaWdodCwgc3RhcnRSZWN0LmxlZnQpXG4gIH1cblxuICBjb3JyZWN0ZWQud2lkdGggID0gY29ycmVjdGVkLnJpZ2h0ICAtIGNvcnJlY3RlZC5sZWZ0XG4gIGNvcnJlY3RlZC5oZWlnaHQgPSBjb3JyZWN0ZWQuYm90dG9tIC0gY29ycmVjdGVkLnRvcFxuXG4gIGZvciAoY29uc3QgZWRnZSBpbiBjb3JyZWN0ZWQpIHtcbiAgICBkZWx0YVJlY3RbZWRnZV0gPSBjb3JyZWN0ZWRbZWRnZV0gLSBwcmV2aW91c1tlZGdlXVxuICB9XG5cbiAgcmVzaXplRXZlbnQuZWRnZXMgPSBpbnRlcmFjdGlvbi5wcmVwYXJlZC5lZGdlc1xuICByZXNpemVFdmVudC5yZWN0ID0gY29ycmVjdGVkXG4gIHJlc2l6ZUV2ZW50LmRlbHRhUmVjdCA9IGRlbHRhUmVjdFxufVxuXG5mdW5jdGlvbiBlbmQgKHsgaUV2ZW50LCBpbnRlcmFjdGlvbiB9OiB7IGlFdmVudDogSW50ZXJhY3QuSW50ZXJhY3RFdmVudDxhbnksIGFueT4sIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiB9KSB7XG4gIGlmIChpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lICE9PSAncmVzaXplJyB8fCAhaW50ZXJhY3Rpb24ucHJlcGFyZWQuZWRnZXMpIHsgcmV0dXJuIH1cblxuICBjb25zdCByZXNpemVFdmVudCA9IGlFdmVudCBhcyBSZXNpemVFdmVudFxuXG4gIHJlc2l6ZUV2ZW50LmVkZ2VzID0gaW50ZXJhY3Rpb24ucHJlcGFyZWQuZWRnZXNcbiAgcmVzaXplRXZlbnQucmVjdCA9IGludGVyYWN0aW9uLl9yZWN0cy5jb3JyZWN0ZWRcbiAgcmVzaXplRXZlbnQuZGVsdGFSZWN0ID0gaW50ZXJhY3Rpb24uX3JlY3RzLmRlbHRhXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUV2ZW50QXhlcyAoeyBpRXZlbnQsIGludGVyYWN0aW9uIH06IHsgaUV2ZW50OiBJbnRlcmFjdC5JbnRlcmFjdEV2ZW50PGFueSwgYW55PiwgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uIH0pIHtcbiAgaWYgKGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgIT09ICdyZXNpemUnIHx8ICFpbnRlcmFjdGlvbi5yZXNpemVBeGVzKSB7IHJldHVybiB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZS5vcHRpb25zXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gaUV2ZW50IGFzIFJlc2l6ZUV2ZW50XG5cbiAgaWYgKG9wdGlvbnMucmVzaXplLnNxdWFyZSkge1xuICAgIGlmIChpbnRlcmFjdGlvbi5yZXNpemVBeGVzID09PSAneScpIHtcbiAgICAgIHJlc2l6ZUV2ZW50LmRlbHRhLnggPSByZXNpemVFdmVudC5kZWx0YS55XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmVzaXplRXZlbnQuZGVsdGEueSA9IHJlc2l6ZUV2ZW50LmRlbHRhLnhcbiAgICB9XG4gICAgcmVzaXplRXZlbnQuYXhlcyA9ICd4eSdcbiAgfVxuICBlbHNlIHtcbiAgICByZXNpemVFdmVudC5heGVzID0gaW50ZXJhY3Rpb24ucmVzaXplQXhlc1xuXG4gICAgaWYgKGludGVyYWN0aW9uLnJlc2l6ZUF4ZXMgPT09ICd4Jykge1xuICAgICAgcmVzaXplRXZlbnQuZGVsdGEueSA9IDBcbiAgICB9XG4gICAgZWxzZSBpZiAoaW50ZXJhY3Rpb24ucmVzaXplQXhlcyA9PT0gJ3knKSB7XG4gICAgICByZXNpemVFdmVudC5kZWx0YS54ID0gMFxuICAgIH1cbiAgfVxufVxuXG5jb25zdCByZXNpemU6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdhY3Rpb25zL3Jlc2l6ZScsXG4gIGJlZm9yZTogWydhY3Rpb25zL2RyYWcnXSxcbiAgaW5zdGFsbCxcbiAgbGlzdGVuZXJzOiB7XG4gICAgJ2ludGVyYWN0aW9uczpuZXcnOiAoeyBpbnRlcmFjdGlvbiB9KSA9PiB7XG4gICAgICBpbnRlcmFjdGlvbi5yZXNpemVBeGVzID0gJ3h5J1xuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1zdGFydCc6IGFyZyA9PiB7XG4gICAgICBzdGFydChhcmcpXG4gICAgICB1cGRhdGVFdmVudEF4ZXMoYXJnKVxuICAgIH0sXG4gICAgJ2ludGVyYWN0aW9uczphY3Rpb24tbW92ZSc6IGFyZyA9PiB7XG4gICAgICBtb3ZlKGFyZylcbiAgICAgIHVwZGF0ZUV2ZW50QXhlcyhhcmcpXG4gICAgfSxcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1lbmQnOiBlbmQsXG4gICAgJ2F1dG8tc3RhcnQ6Y2hlY2snOiByZXNpemVDaGVja2VyLFxuICB9LFxuXG4gIGRlZmF1bHRzOiB7XG4gICAgc3F1YXJlOiBmYWxzZSxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICBheGlzOiAneHknLFxuXG4gICAgLy8gdXNlIGRlZmF1bHQgbWFyZ2luXG4gICAgbWFyZ2luOiBOYU4sXG5cbiAgICAvLyBvYmplY3Qgd2l0aCBwcm9wcyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20gd2hpY2ggYXJlXG4gICAgLy8gdHJ1ZS9mYWxzZSB2YWx1ZXMgdG8gcmVzaXplIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGF0IGVkZ2UsXG4gICAgLy8gQ1NTIHNlbGVjdG9ycyB0byBtYXRjaCB0aGUgaGFuZGxlcyBmb3IgZWFjaCBkaXJlY3Rpb25cbiAgICAvLyBvciB0aGUgRWxlbWVudHMgZm9yIGVhY2ggaGFuZGxlXG4gICAgZWRnZXM6IG51bGwsXG5cbiAgICAvLyBhIHZhbHVlIG9mICdub25lJyB3aWxsIGxpbWl0IHRoZSByZXNpemUgcmVjdCB0byBhIG1pbmltdW0gb2YgMHgwXG4gICAgLy8gJ25lZ2F0ZScgd2lsbCBhbG93IHRoZSByZWN0IHRvIGhhdmUgbmVnYXRpdmUgd2lkdGgvaGVpZ2h0XG4gICAgLy8gJ3JlcG9zaXRpb24nIHdpbGwga2VlcCB0aGUgd2lkdGgvaGVpZ2h0IHBvc2l0aXZlIGJ5IHN3YXBwaW5nXG4gICAgLy8gdGhlIHRvcCBhbmQgYm90dG9tIGVkZ2VzIGFuZC9vciBzd2FwcGluZyB0aGUgbGVmdCBhbmQgcmlnaHQgZWRnZXNcbiAgICBpbnZlcnQ6ICdub25lJyxcbiAgfSBhcyBJbnRlcmFjdC5SZXNpemFibGVPcHRpb25zLFxuXG4gIGN1cnNvcnM6IG51bGwgYXMgUmV0dXJuVHlwZTx0eXBlb2YgaW5pdEN1cnNvcnM+LFxuXG4gIGdldEN1cnNvciAoeyBlZGdlcywgYXhpcywgbmFtZSB9OiBJbnRlcmFjdC5BY3Rpb25Qcm9wcykge1xuICAgIGNvbnN0IGN1cnNvcnMgPSByZXNpemUuY3Vyc29yc1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IG51bGxcblxuICAgIGlmIChheGlzKSB7XG4gICAgICByZXN1bHQgPSBjdXJzb3JzW25hbWUgKyBheGlzXVxuICAgIH1cbiAgICBlbHNlIGlmIChlZGdlcykge1xuICAgICAgbGV0IGN1cnNvcktleSA9ICcnXG5cbiAgICAgIGZvciAoY29uc3QgZWRnZSBvZiBbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddKSB7XG4gICAgICAgIGlmIChlZGdlc1tlZGdlXSkge1xuICAgICAgICAgIGN1cnNvcktleSArPSBlZGdlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gY3Vyc29yc1tjdXJzb3JLZXldXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9LFxuXG4gIGRlZmF1bHRNYXJnaW46IG51bGwgYXMgbnVtYmVyLFxufVxuXG5leHBvcnQgZGVmYXVsdCByZXNpemVcbiIsImltcG9ydCBTY29wZSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJ1xuaW1wb3J0IGRyYWcgZnJvbSAnLi9kcmFnJ1xuaW1wb3J0IGRyb3AgZnJvbSAnLi9kcm9wL2luZGV4J1xuaW1wb3J0IGdlc3R1cmUgZnJvbSAnLi9nZXN0dXJlJ1xuaW1wb3J0IHJlc2l6ZSBmcm9tICcuL3Jlc2l6ZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ2FjdGlvbnMnLFxuICBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgICBzY29wZS51c2VQbHVnaW4oZ2VzdHVyZSlcbiAgICBzY29wZS51c2VQbHVnaW4ocmVzaXplKVxuICAgIHNjb3BlLnVzZVBsdWdpbihkcmFnKVxuICAgIHNjb3BlLnVzZVBsdWdpbihkcm9wKVxuICB9LFxufVxuXG5leHBvcnQge1xuICBnZXN0dXJlLFxuICByZXNpemUsXG4gIGRyYWcsXG4gIGRyb3AsXG59XG4iLCJleHBvcnQgdHlwZSBBcnJhbmdlRXZlbnQgPSB7fVxuZXhwb3J0IHR5cGUgQXJyYW5nZU1vZGUgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCB7fVxuIiwiaW1wb3J0ICogYXMgZG9tVXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZG9tVXRpbHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCByYWYgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmFmJ1xuaW1wb3J0IHsgZ2V0U3RyaW5nT3B0aW9uUmVzdWx0IH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmVjdCdcbmltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3dpbmRvdydcblxudHlwZSBTY29wZSA9IGltcG9ydCAoJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnKS5TY29wZVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgU2NvcGUge1xuICAgIGF1dG9TY3JvbGw6IHR5cGVvZiBhdXRvU2Nyb2xsXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgICBhdXRvU2Nyb2xsPzogdHlwZW9mIGF1dG9TY3JvbGxcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9kZWZhdWx0T3B0aW9ucycge1xuICBpbnRlcmZhY2UgUGVyQWN0aW9uRGVmYXVsdHMge1xuICAgIGF1dG9TY3JvbGw/OiBBdXRvU2Nyb2xsT3B0aW9uc1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1Njcm9sbE9wdGlvbnMge1xuICBjb250YWluZXI/OiBXaW5kb3cgfCBIVE1MRWxlbWVudFxuICBtYXJnaW4/OiBudW1iZXJcbiAgZGlzdGFuY2U/OiBudW1iZXJcbiAgaW50ZXJ2YWw/OiBudW1iZXJcbiAgc3BlZWQ/OiBudW1iZXJcbiAgZW5hYmxlZD86IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IFNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBkZWZhdWx0cyxcbiAgICBhY3Rpb25zLFxuICB9ID0gc2NvcGVcblxuICBzY29wZS5hdXRvU2Nyb2xsID0gYXV0b1Njcm9sbFxuICBhdXRvU2Nyb2xsLm5vdyA9ICgpID0+IHNjb3BlLm5vdygpXG5cbiAgYWN0aW9ucy5waGFzZWxlc3NUeXBlcy5hdXRvc2Nyb2xsID0gdHJ1ZVxuICBkZWZhdWx0cy5wZXJBY3Rpb24uYXV0b1Njcm9sbCA9IGF1dG9TY3JvbGwuZGVmYXVsdHNcbn1cblxuY29uc3QgYXV0b1Njcm9sbCA9IHtcbiAgZGVmYXVsdHM6IHtcbiAgICBlbmFibGVkICA6IGZhbHNlLFxuICAgIG1hcmdpbiAgIDogNjAsXG5cbiAgICAvLyB0aGUgaXRlbSB0aGF0IGlzIHNjcm9sbGVkIChXaW5kb3cgb3IgSFRNTEVsZW1lbnQpXG4gICAgY29udGFpbmVyOiBudWxsIGFzIEF1dG9TY3JvbGxPcHRpb25zWydjb250YWluZXInXSxcblxuICAgIC8vIHRoZSBzY3JvbGwgc3BlZWQgaW4gcGl4ZWxzIHBlciBzZWNvbmRcbiAgICBzcGVlZCAgICA6IDMwMCxcbiAgfSBhcyBBdXRvU2Nyb2xsT3B0aW9ucyxcblxuICBub3c6IERhdGUubm93LFxuXG4gIGludGVyYWN0aW9uOiBudWxsIGFzIEludGVyYWN0LkludGVyYWN0aW9uLFxuICBpOiAwLCAvLyB0aGUgaGFuZGxlIHJldHVybmVkIGJ5IHdpbmRvdy5zZXRJbnRlcnZhbFxuXG4gIC8vIERpcmVjdGlvbiBlYWNoIHB1bHNlIGlzIHRvIHNjcm9sbCBpblxuICB4OiAwLFxuICB5OiAwLFxuXG4gIGlzU2Nyb2xsaW5nOiBmYWxzZSxcbiAgcHJldlRpbWU6IDAsXG4gIG1hcmdpbjogMCxcbiAgc3BlZWQ6IDAsXG5cbiAgc3RhcnQgKGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbikge1xuICAgIGF1dG9TY3JvbGwuaXNTY3JvbGxpbmcgPSB0cnVlXG4gICAgcmFmLmNhbmNlbChhdXRvU2Nyb2xsLmkpXG5cbiAgICBpbnRlcmFjdGlvbi5hdXRvU2Nyb2xsID0gYXV0b1Njcm9sbFxuICAgIGF1dG9TY3JvbGwuaW50ZXJhY3Rpb24gPSBpbnRlcmFjdGlvblxuICAgIGF1dG9TY3JvbGwucHJldlRpbWUgPSBhdXRvU2Nyb2xsLm5vdygpXG4gICAgYXV0b1Njcm9sbC5pID0gcmFmLnJlcXVlc3QoYXV0b1Njcm9sbC5zY3JvbGwpXG4gIH0sXG5cbiAgc3RvcCAoKSB7XG4gICAgYXV0b1Njcm9sbC5pc1Njcm9sbGluZyA9IGZhbHNlXG4gICAgaWYgKGF1dG9TY3JvbGwuaW50ZXJhY3Rpb24pIHtcbiAgICAgIGF1dG9TY3JvbGwuaW50ZXJhY3Rpb24uYXV0b1Njcm9sbCA9IG51bGxcbiAgICB9XG4gICAgcmFmLmNhbmNlbChhdXRvU2Nyb2xsLmkpXG4gIH0sXG5cbiAgLy8gc2Nyb2xsIHRoZSB3aW5kb3cgYnkgdGhlIHZhbHVlcyBpbiBzY3JvbGwueC95XG4gIHNjcm9sbCAoKSB7XG4gICAgY29uc3QgeyBpbnRlcmFjdGlvbiB9ID0gYXV0b1Njcm9sbFxuICAgIGNvbnN0IHsgaW50ZXJhY3RhYmxlLCBlbGVtZW50IH0gPSBpbnRlcmFjdGlvblxuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lXG4gICAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0YWJsZS5vcHRpb25zW2FjdGlvbk5hbWVdLmF1dG9TY3JvbGxcbiAgICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXIob3B0aW9ucy5jb250YWluZXIsIGludGVyYWN0YWJsZSwgZWxlbWVudClcbiAgICBjb25zdCBub3cgPSBhdXRvU2Nyb2xsLm5vdygpXG4gICAgLy8gY2hhbmdlIGluIHRpbWUgaW4gc2Vjb25kc1xuICAgIGNvbnN0IGR0ID0gKG5vdyAtIGF1dG9TY3JvbGwucHJldlRpbWUpIC8gMTAwMFxuICAgIC8vIGRpc3BsYWNlbWVudFxuICAgIGNvbnN0IHMgPSBvcHRpb25zLnNwZWVkICogZHRcblxuICAgIGlmIChzID49IDEpIHtcbiAgICAgIGNvbnN0IHNjcm9sbEJ5ID0ge1xuICAgICAgICB4OiBhdXRvU2Nyb2xsLnggKiBzLFxuICAgICAgICB5OiBhdXRvU2Nyb2xsLnkgKiBzLFxuICAgICAgfVxuXG4gICAgICBpZiAoc2Nyb2xsQnkueCB8fCBzY3JvbGxCeS55KSB7XG4gICAgICAgIGNvbnN0IHByZXZTY3JvbGwgPSBnZXRTY3JvbGwoY29udGFpbmVyKVxuXG4gICAgICAgIGlmIChpcy53aW5kb3coY29udGFpbmVyKSkge1xuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxCeShzY3JvbGxCeS54LCBzY3JvbGxCeS55KVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxMZWZ0ICs9IHNjcm9sbEJ5LnhcbiAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wICArPSBzY3JvbGxCeS55XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJTY3JvbGwgPSBnZXRTY3JvbGwoY29udGFpbmVyKVxuICAgICAgICBjb25zdCBkZWx0YSA9IHtcbiAgICAgICAgICB4OiBjdXJTY3JvbGwueCAtIHByZXZTY3JvbGwueCxcbiAgICAgICAgICB5OiBjdXJTY3JvbGwueSAtIHByZXZTY3JvbGwueSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWx0YS54IHx8IGRlbHRhLnkpIHtcbiAgICAgICAgICBpbnRlcmFjdGFibGUuZmlyZSh7XG4gICAgICAgICAgICB0eXBlOiAnYXV0b3Njcm9sbCcsXG4gICAgICAgICAgICB0YXJnZXQ6IGVsZW1lbnQsXG4gICAgICAgICAgICBpbnRlcmFjdGFibGUsXG4gICAgICAgICAgICBkZWx0YSxcbiAgICAgICAgICAgIGludGVyYWN0aW9uLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXV0b1Njcm9sbC5wcmV2VGltZSA9IG5vd1xuICAgIH1cblxuICAgIGlmIChhdXRvU2Nyb2xsLmlzU2Nyb2xsaW5nKSB7XG4gICAgICByYWYuY2FuY2VsKGF1dG9TY3JvbGwuaSlcbiAgICAgIGF1dG9TY3JvbGwuaSA9IHJhZi5yZXF1ZXN0KGF1dG9TY3JvbGwuc2Nyb2xsKVxuICAgIH1cbiAgfSxcbiAgY2hlY2sgKGludGVyYWN0YWJsZTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBhY3Rpb25OYW1lOiBJbnRlcmFjdC5BY3Rpb25OYW1lKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0YWJsZS5vcHRpb25zXG5cbiAgICByZXR1cm4gb3B0aW9uc1thY3Rpb25OYW1lXS5hdXRvU2Nyb2xsICYmIG9wdGlvbnNbYWN0aW9uTmFtZV0uYXV0b1Njcm9sbC5lbmFibGVkXG4gIH0sXG4gIG9uSW50ZXJhY3Rpb25Nb3ZlPFQgZXh0ZW5kcyBJbnRlcmFjdC5BY3Rpb25OYW1lPiAoeyBpbnRlcmFjdGlvbiwgcG9pbnRlciB9OiB7IGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbjxUPiwgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUgfSkge1xuICAgIGlmICghKGludGVyYWN0aW9uLmludGVyYWN0aW5nKCkgJiZcbiAgICAgICAgICBhdXRvU2Nyb2xsLmNoZWNrKGludGVyYWN0aW9uLmludGVyYWN0YWJsZSwgaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSkpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW50ZXJhY3Rpb24uc2ltdWxhdGlvbikge1xuICAgICAgYXV0b1Njcm9sbC54ID0gYXV0b1Njcm9sbC55ID0gMFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHRvcFxuICAgIGxldCByaWdodFxuICAgIGxldCBib3R0b21cbiAgICBsZXQgbGVmdFxuXG4gICAgY29uc3QgeyBpbnRlcmFjdGFibGUsIGVsZW1lbnQgfSA9IGludGVyYWN0aW9uXG4gICAgY29uc3QgYWN0aW9uTmFtZSA9IGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWVcbiAgICBjb25zdCBvcHRpb25zID0gaW50ZXJhY3RhYmxlLm9wdGlvbnNbYWN0aW9uTmFtZV0uYXV0b1Njcm9sbFxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lcihvcHRpb25zLmNvbnRhaW5lciwgaW50ZXJhY3RhYmxlLCBlbGVtZW50KVxuXG4gICAgaWYgKGlzLndpbmRvdyhjb250YWluZXIpKSB7XG4gICAgICBsZWZ0ICAgPSBwb2ludGVyLmNsaWVudFggPCBhdXRvU2Nyb2xsLm1hcmdpblxuICAgICAgdG9wICAgID0gcG9pbnRlci5jbGllbnRZIDwgYXV0b1Njcm9sbC5tYXJnaW5cbiAgICAgIHJpZ2h0ICA9IHBvaW50ZXIuY2xpZW50WCA+IGNvbnRhaW5lci5pbm5lcldpZHRoICAtIGF1dG9TY3JvbGwubWFyZ2luXG4gICAgICBib3R0b20gPSBwb2ludGVyLmNsaWVudFkgPiBjb250YWluZXIuaW5uZXJIZWlnaHQgLSBhdXRvU2Nyb2xsLm1hcmdpblxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBkb21VdGlscy5nZXRFbGVtZW50Q2xpZW50UmVjdChjb250YWluZXIpXG5cbiAgICAgIGxlZnQgICA9IHBvaW50ZXIuY2xpZW50WCA8IHJlY3QubGVmdCAgICsgYXV0b1Njcm9sbC5tYXJnaW5cbiAgICAgIHRvcCAgICA9IHBvaW50ZXIuY2xpZW50WSA8IHJlY3QudG9wICAgICsgYXV0b1Njcm9sbC5tYXJnaW5cbiAgICAgIHJpZ2h0ICA9IHBvaW50ZXIuY2xpZW50WCA+IHJlY3QucmlnaHQgIC0gYXV0b1Njcm9sbC5tYXJnaW5cbiAgICAgIGJvdHRvbSA9IHBvaW50ZXIuY2xpZW50WSA+IHJlY3QuYm90dG9tIC0gYXV0b1Njcm9sbC5tYXJnaW5cbiAgICB9XG5cbiAgICBhdXRvU2Nyb2xsLnggPSAocmlnaHQgPyAxIDogbGVmdCA/IC0xIDogMClcbiAgICBhdXRvU2Nyb2xsLnkgPSAoYm90dG9tID8gMSA6ICB0b3AgPyAtMSA6IDApXG5cbiAgICBpZiAoIWF1dG9TY3JvbGwuaXNTY3JvbGxpbmcpIHtcbiAgICAgIC8vIHNldCB0aGUgYXV0b1Njcm9sbCBwcm9wZXJ0aWVzIHRvIHRob3NlIG9mIHRoZSB0YXJnZXRcbiAgICAgIGF1dG9TY3JvbGwubWFyZ2luID0gb3B0aW9ucy5tYXJnaW5cbiAgICAgIGF1dG9TY3JvbGwuc3BlZWQgID0gb3B0aW9ucy5zcGVlZFxuXG4gICAgICBhdXRvU2Nyb2xsLnN0YXJ0KGludGVyYWN0aW9uKVxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRhaW5lciAodmFsdWU6IGFueSwgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQpIHtcbiAgcmV0dXJuIChpcy5zdHJpbmcodmFsdWUpID8gZ2V0U3RyaW5nT3B0aW9uUmVzdWx0KHZhbHVlLCBpbnRlcmFjdGFibGUsIGVsZW1lbnQpIDogdmFsdWUpIHx8IGdldFdpbmRvdyhlbGVtZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsIChjb250YWluZXI6IGFueSkge1xuICBpZiAoaXMud2luZG93KGNvbnRhaW5lcikpIHsgY29udGFpbmVyID0gd2luZG93LmRvY3VtZW50LmJvZHkgfVxuXG4gIHJldHVybiB7IHg6IGNvbnRhaW5lci5zY3JvbGxMZWZ0LCB5OiBjb250YWluZXIuc2Nyb2xsVG9wIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcm9sbFNpemUgKGNvbnRhaW5lcjogYW55KSB7XG4gIGlmIChpcy53aW5kb3coY29udGFpbmVyKSkgeyBjb250YWluZXIgPSB3aW5kb3cuZG9jdW1lbnQuYm9keSB9XG5cbiAgcmV0dXJuIHsgeDogY29udGFpbmVyLnNjcm9sbFdpZHRoLCB5OiBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcm9sbFNpemVEZWx0YTxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gKHsgaW50ZXJhY3Rpb24sIGVsZW1lbnQgfToge1xuICBpbnRlcmFjdGlvbjogUGFydGlhbDxJbnRlcmFjdC5JbnRlcmFjdGlvbjxUPj5cbiAgZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudFxufSwgZnVuYzogYW55KSB7XG4gIGNvbnN0IHNjcm9sbE9wdGlvbnMgPSBpbnRlcmFjdGlvbiAmJiBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUub3B0aW9uc1tpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lXS5hdXRvU2Nyb2xsXG5cbiAgaWYgKCFzY3JvbGxPcHRpb25zIHx8ICFzY3JvbGxPcHRpb25zLmVuYWJsZWQpIHtcbiAgICBmdW5jKClcbiAgICByZXR1cm4geyB4OiAwLCB5OiAwIH1cbiAgfVxuXG4gIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGdldENvbnRhaW5lcihcbiAgICBzY3JvbGxPcHRpb25zLmNvbnRhaW5lcixcbiAgICBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUsXG4gICAgZWxlbWVudCxcbiAgKVxuXG4gIGNvbnN0IHByZXZTaXplID0gZ2V0U2Nyb2xsKHNjcm9sbENvbnRhaW5lcilcbiAgZnVuYygpXG4gIGNvbnN0IGN1clNpemUgPSBnZXRTY3JvbGwoc2Nyb2xsQ29udGFpbmVyKVxuXG4gIHJldHVybiB7XG4gICAgeDogY3VyU2l6ZS54IC0gcHJldlNpemUueCxcbiAgICB5OiBjdXJTaXplLnkgLSBwcmV2U2l6ZS55LFxuICB9XG59XG5cbmNvbnN0IGF1dG9TY3JvbGxQbHVnaW46IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdhdXRvLXNjcm9sbCcsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdpbnRlcmFjdGlvbnM6bmV3JzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgaW50ZXJhY3Rpb24uYXV0b1Njcm9sbCA9IG51bGxcbiAgICB9LFxuXG4gICAgJ2ludGVyYWN0aW9uczpkZXN0cm95JzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgaW50ZXJhY3Rpb24uYXV0b1Njcm9sbCA9IG51bGxcbiAgICAgIGF1dG9TY3JvbGwuc3RvcCgpXG4gICAgICBpZiAoYXV0b1Njcm9sbC5pbnRlcmFjdGlvbikge1xuICAgICAgICBhdXRvU2Nyb2xsLmludGVyYWN0aW9uID0gbnVsbFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOnN0b3AnOiBhdXRvU2Nyb2xsLnN0b3AsXG5cbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1tb3ZlJzogKGFyZzogYW55KSA9PiBhdXRvU2Nyb2xsLm9uSW50ZXJhY3Rpb25Nb3ZlKGFyZyksXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGF1dG9TY3JvbGxQbHVnaW5cbiIsImltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaW5kZXgnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RhYmxlJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGFibGUge1xuICAgIGdldEFjdGlvbjogKFxuICAgICAgdGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLFxuICAgICAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsXG4gICAgICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSxcbiAgICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbixcbiAgICAgIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsXG4gICAgKSA9PiBJbnRlcmFjdC5BY3Rpb25Qcm9wcyB8IG51bGxcbiAgICBzdHlsZUN1cnNvcjogdHlwZW9mIHN0eWxlQ3Vyc29yXG4gICAgYWN0aW9uQ2hlY2tlcjogdHlwZW9mIGFjdGlvbkNoZWNrZXJcbiAgICBpZ25vcmVGcm9tOiB7XG4gICAgICAoLi4uYXJnczogYW55W10pOiBJbnRlcmFjdGFibGVcbiAgICAgICgpOiBib29sZWFuXG4gICAgfVxuICAgIGFsbG93RnJvbToge1xuICAgICAgKC4uLmFyZ3M6IGFueVtdKTogSW50ZXJhY3RhYmxlXG4gICAgICAoKTogYm9vbGVhblxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgY29uc3Qge1xuICAgIC8qKiBAbGVuZHMgSW50ZXJhY3RhYmxlICovXG4gICAgSW50ZXJhY3RhYmxlLCAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gIH0gPSBzY29wZVxuXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUuZ2V0QWN0aW9uID0gZnVuY3Rpb24gZ2V0QWN0aW9uIChcbiAgICB0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsXG4gICAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsXG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsXG4gICAgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uLFxuICAgIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsXG4gICk6IEludGVyYWN0LkFjdGlvblByb3BzIHtcbiAgICBjb25zdCBhY3Rpb24gPSBkZWZhdWx0QWN0aW9uQ2hlY2tlcih0aGlzLCBldmVudCwgaW50ZXJhY3Rpb24sIGVsZW1lbnQsIHNjb3BlKVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hY3Rpb25DaGVja2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFjdGlvbkNoZWNrZXIocG9pbnRlciwgZXZlbnQsIGFjdGlvbiwgdGhpcywgZWxlbWVudCwgaW50ZXJhY3Rpb24pXG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGludGVyYWN0KGVsZW1lbnQsIHsgaWdub3JlRnJvbTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vLWFjdGlvbicpIH0pXG4gICAqIC8vIG9yXG4gICAqIGludGVyYWN0KGVsZW1lbnQpLmlnbm9yZUZyb20oJ2lucHV0LCB0ZXh0YXJlYSwgYScpXG4gICAqIGBgYFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBJZiB0aGUgdGFyZ2V0IG9mIHRoZSBgbW91c2Vkb3duYCwgYHBvaW50ZXJkb3duYCBvciBgdG91Y2hzdGFydGAgZXZlbnQgb3IgYW55XG4gICAqIG9mIGl0J3MgcGFyZW50cyBtYXRjaCB0aGUgZ2l2ZW4gQ1NTIHNlbGVjdG9yIG9yIEVsZW1lbnQsIG5vXG4gICAqIGRyYWcvcmVzaXplL2dlc3R1cmUgaXMgc3RhcnRlZC5cbiAgICpcbiAgICogRG9uJ3QgdXNlIHRoaXMgbWV0aG9kLiBJbnN0ZWFkIHNldCB0aGUgYGlnbm9yZUZyb21gIG9wdGlvbiBmb3IgZWFjaCBhY3Rpb25cbiAgICogb3IgZm9yIGBwb2ludGVyRXZlbnRzYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpbnRlcmFjdCh0YXJnZXR0KVxuICAgKiAgIC5kcmFnZ2FibGUoe1xuICAgKiAgICAgaWdub3JlRnJvbTogJ2lucHV0LCB0ZXh0YXJlYSwgYVtocmVmXScnLFxuICAgKiAgIH0pXG4gICAqICAgLnBvaW50ZXJFdmVudHMoe1xuICAgKiAgICAgaWdub3JlRnJvbTogJ1tuby1wb2ludGVyXScsXG4gICAqICAgfSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFbGVtZW50IHwgbnVsbH0gW25ld1ZhbHVlXSBhIENTUyBzZWxlY3RvciBzdHJpbmcsIGFuXG4gICAqIEVsZW1lbnQgb3IgYG51bGxgIHRvIG5vdCBpZ25vcmUgYW55IGVsZW1lbnRzXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IEVsZW1lbnQgfCBvYmplY3R9IFRoZSBjdXJyZW50IGlnbm9yZUZyb20gdmFsdWUgb3IgdGhpc1xuICAgKiBJbnRlcmFjdGFibGVcbiAgICovXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUuaWdub3JlRnJvbSA9IHdhcm5PbmNlKGZ1bmN0aW9uICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIG5ld1ZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhY2tDb21wYXRPcHRpb24oJ2lnbm9yZUZyb20nLCBuZXdWYWx1ZSlcbiAgfSwgJ0ludGVyYWN0YWJsZS5pZ25vcmVGcm9tKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIEludGVyYWN0YmxlLmRyYWdnYWJsZSh7aWdub3JlRnJvbTogbmV3VmFsdWV9KS4nKVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKlxuICAgKiBBIGRyYWcvcmVzaXplL2dlc3R1cmUgaXMgc3RhcnRlZCBvbmx5IElmIHRoZSB0YXJnZXQgb2YgdGhlIGBtb3VzZWRvd25gLFxuICAgKiBgcG9pbnRlcmRvd25gIG9yIGB0b3VjaHN0YXJ0YCBldmVudCBvciBhbnkgb2YgaXQncyBwYXJlbnRzIG1hdGNoIHRoZSBnaXZlblxuICAgKiBDU1Mgc2VsZWN0b3Igb3IgRWxlbWVudC5cbiAgICpcbiAgICogRG9uJ3QgdXNlIHRoaXMgbWV0aG9kLiBJbnN0ZWFkIHNldCB0aGUgYGFsbG93RnJvbWAgb3B0aW9uIGZvciBlYWNoIGFjdGlvblxuICAgKiBvciBmb3IgYHBvaW50ZXJFdmVudHNgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGludGVyYWN0KHRhcmdldHQpXG4gICAqICAgLnJlc2l6YWJsZSh7XG4gICAqICAgICBhbGxvd0Zyb206ICcucmVzaXplLWhhbmRsZScsXG4gICAqICAgLnBvaW50ZXJFdmVudHMoe1xuICAgKiAgICAgYWxsb3dGcm9tOiAnLmhhbmRsZScsLFxuICAgKiAgIH0pXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgRWxlbWVudCB8IG51bGx9IFtuZXdWYWx1ZV0gYSBDU1Mgc2VsZWN0b3Igc3RyaW5nLCBhblxuICAgKiBFbGVtZW50IG9yIGBudWxsYCB0byBhbGxvdyBmcm9tIGFueSBlbGVtZW50XG4gICAqIEByZXR1cm4ge3N0cmluZyB8IEVsZW1lbnQgfCBvYmplY3R9IFRoZSBjdXJyZW50IGFsbG93RnJvbSB2YWx1ZSBvciB0aGlzXG4gICAqIEludGVyYWN0YWJsZVxuICAgKi9cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5hbGxvd0Zyb20gPSB3YXJuT25jZShmdW5jdGlvbiAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBuZXdWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9iYWNrQ29tcGF0T3B0aW9uKCdhbGxvd0Zyb20nLCBuZXdWYWx1ZSlcbiAgfSwgJ0ludGVyYWN0YWJsZS5hbGxvd0Zyb20oKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgSW50ZXJhY3RibGUuZHJhZ2dhYmxlKHthbGxvd0Zyb206IG5ld1ZhbHVlfSkuJylcblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QoJy5yZXNpemUtZHJhZycpXG4gICAqICAgLnJlc2l6YWJsZSh0cnVlKVxuICAgKiAgIC5kcmFnZ2FibGUodHJ1ZSlcbiAgICogICAuYWN0aW9uQ2hlY2tlcihmdW5jdGlvbiAocG9pbnRlciwgZXZlbnQsIGFjdGlvbiwgaW50ZXJhY3RhYmxlLCBlbGVtZW50LCBpbnRlcmFjdGlvbikge1xuICAgKlxuICAgKiAgIGlmIChpbnRlcmFjdC5tYXRjaGVzU2VsZWN0b3IoZXZlbnQudGFyZ2V0LCAnLmRyYWctaGFuZGxlJykpIHtcbiAgICogICAgIC8vIGZvcmNlIGRyYWcgd2l0aCBoYW5kbGUgdGFyZ2V0XG4gICAqICAgICBhY3Rpb24ubmFtZSA9IGRyYWdcbiAgICogICB9XG4gICAqICAgZWxzZSB7XG4gICAqICAgICAvLyByZXNpemUgZnJvbSB0aGUgdG9wIGFuZCByaWdodCBlZGdlc1xuICAgKiAgICAgYWN0aW9uLm5hbWUgID0gJ3Jlc2l6ZSdcbiAgICogICAgIGFjdGlvbi5lZGdlcyA9IHsgdG9wOiB0cnVlLCByaWdodDogdHJ1ZSB9XG4gICAqICAgfVxuICAgKlxuICAgKiAgIHJldHVybiBhY3Rpb25cbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqIFJldHVybnMgb3Igc2V0cyB0aGUgZnVuY3Rpb24gdXNlZCB0byBjaGVjayBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIG9uXG4gICAqIHBvaW50ZXJEb3duXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24gfCBudWxsfSBbY2hlY2tlcl0gQSBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIHBvaW50ZXIgZXZlbnQsXG4gICAqIGRlZmF1bHRBY3Rpb24gc3RyaW5nLCBpbnRlcmFjdGFibGUsIGVsZW1lbnQgYW5kIGludGVyYWN0aW9uIGFzIHBhcmFtZXRlcnNcbiAgICogYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggbmFtZSBwcm9wZXJ0eSAnZHJhZycgJ3Jlc2l6ZScgb3IgJ2dlc3R1cmUnIGFuZFxuICAgKiBvcHRpb25hbGx5IGFuIGBlZGdlc2Agb2JqZWN0IHdpdGggYm9vbGVhbiAndG9wJywgJ2xlZnQnLCAnYm90dG9tJyBhbmQgcmlnaHRcbiAgICogcHJvcHMuXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9uIHwgSW50ZXJhY3RhYmxlfSBUaGUgY2hlY2tlciBmdW5jdGlvbiBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5hY3Rpb25DaGVja2VyID0gYWN0aW9uQ2hlY2tlclxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgd2hldGhlciB0aGUgdGhlIGN1cnNvciBzaG91bGQgYmUgY2hhbmdlZCBkZXBlbmRpbmcgb24gdGhlXG4gICAqIGFjdGlvbiB0aGF0IHdvdWxkIGJlIHBlcmZvcm1lZCBpZiB0aGUgbW91c2Ugd2VyZSBwcmVzc2VkIGFuZCBkcmFnZ2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtuZXdWYWx1ZV1cbiAgICogQHJldHVybiB7Ym9vbGVhbiB8IEludGVyYWN0YWJsZX0gVGhlIGN1cnJlbnQgc2V0dGluZyBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5zdHlsZUN1cnNvciA9IHN0eWxlQ3Vyc29yXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBY3Rpb25DaGVja2VyIChcbiAgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsXG4gIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLFxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24sXG4gIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsXG4gIHNjb3BlOiBJbnRlcmFjdC5TY29wZSxcbikge1xuICBjb25zdCByZWN0ID0gaW50ZXJhY3RhYmxlLmdldFJlY3QoZWxlbWVudClcbiAgY29uc3QgYnV0dG9ucyA9IChldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b25zIHx8ICh7XG4gICAgMDogMSxcbiAgICAxOiA0LFxuICAgIDM6IDgsXG4gICAgNDogMTYsXG4gIH0pWyhldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b24gYXMgMCB8IDEgfCAzIHwgNF1cbiAgY29uc3QgYXJnID0ge1xuICAgIGFjdGlvbjogbnVsbCxcbiAgICBpbnRlcmFjdGFibGUsXG4gICAgaW50ZXJhY3Rpb24sXG4gICAgZWxlbWVudCxcbiAgICByZWN0LFxuICAgIGJ1dHRvbnMsXG4gIH1cblxuICBzY29wZS5maXJlKCdhdXRvLXN0YXJ0OmNoZWNrJywgYXJnKVxuXG4gIHJldHVybiBhcmcuYWN0aW9uXG59XG5cbmZ1bmN0aW9uIHN0eWxlQ3Vyc29yICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUpOiBib29sZWFuXG5mdW5jdGlvbiBzdHlsZUN1cnNvciAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBuZXdWYWx1ZTogYm9vbGVhbik6IHR5cGVvZiB0aGlzXG5mdW5jdGlvbiBzdHlsZUN1cnNvciAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBuZXdWYWx1ZT86IGJvb2xlYW4pIHtcbiAgaWYgKGlzLmJvb2wobmV3VmFsdWUpKSB7XG4gICAgdGhpcy5vcHRpb25zLnN0eWxlQ3Vyc29yID0gbmV3VmFsdWVcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBpZiAobmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLnN0eWxlQ3Vyc29yXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdHlsZUN1cnNvclxufVxuXG5mdW5jdGlvbiBhY3Rpb25DaGVja2VyICh0aGlzOiBJbnRlcmFjdC5JbnRlcmFjdGFibGUsIGNoZWNrZXI6IGFueSkge1xuICBpZiAoaXMuZnVuYyhjaGVja2VyKSkge1xuICAgIHRoaXMub3B0aW9ucy5hY3Rpb25DaGVja2VyID0gY2hlY2tlclxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGlmIChjaGVja2VyID09PSBudWxsKSB7XG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hY3Rpb25DaGVja2VyXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmV0dXJuIHRoaXMub3B0aW9ucy5hY3Rpb25DaGVja2VyXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdhdXRvLXN0YXJ0L2ludGVyYWN0YWJsZU1ldGhvZHMnLFxuICBpbnN0YWxsLFxufVxuIiwiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaW5kZXgnXG5pbXBvcnQgSW50ZXJhY3RhYmxlTWV0aG9kcyBmcm9tICcuL0ludGVyYWN0YWJsZU1ldGhvZHMnXG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0U3RhdGljJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdFN0YXRpYyB7XG4gICAgbWF4SW50ZXJhY3Rpb25zOiAobmV3VmFsdWU6IGFueSkgPT4gYW55XG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIFNjb3BlIHtcbiAgICBhdXRvU3RhcnQ6IEF1dG9TdGFydFxuICAgIG1heEludGVyYWN0aW9uczogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcbiAgfVxuXG4gIGludGVyZmFjZSBTaWduYWxBcmdzIHtcbiAgICAnYXV0b1N0YXJ0OmJlZm9yZS1zdGFydCc6IEludGVyYWN0LlNpZ25hbEFyZ3NbJ2ludGVyYWN0aW9uczptb3ZlJ11cbiAgICAnYXV0b1N0YXJ0OnByZXBhcmVkJzogeyBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24gfVxuICAgICdhdXRvLXN0YXJ0OmNoZWNrJzogQ2hlY2tTaWduYWxBcmdcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9kZWZhdWx0T3B0aW9ucycge1xuICBpbnRlcmZhY2UgQmFzZURlZmF1bHRzIHtcbiAgICBhY3Rpb25DaGVja2VyPzogYW55XG4gICAgY3Vyc29yQ2hlY2tlcj86IGFueVxuICAgIHN0eWxlQ3Vyc29yPzogYW55XG4gIH1cblxuICBpbnRlcmZhY2UgUGVyQWN0aW9uRGVmYXVsdHMge1xuICAgIG1hbnVhbFN0YXJ0PzogYm9vbGVhblxuICAgIG1heD86IG51bWJlclxuICAgIG1heFBlckVsZW1lbnQ/OiBudW1iZXJcbiAgICBhbGxvd0Zyb20/OiBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50XG4gICAgaWdub3JlRnJvbT86IHN0cmluZyB8IEludGVyYWN0LkVsZW1lbnRcbiAgICBjdXJzb3JDaGVja2VyPzogSW50ZXJhY3QuQ3Vyc29yQ2hlY2tlclxuXG4gICAgLy8gb25seSBhbGxvdyBsZWZ0IGJ1dHRvbiBieSBkZWZhdWx0XG4gICAgLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Nb3VzZUV2ZW50L2J1dHRvbnMjUmV0dXJuX3ZhbHVlXG4gICAgbW91c2VCdXR0b25zPzogMCB8IDEgfCAyIHwgNCB8IDE2XG4gIH1cbn1cblxuaW50ZXJmYWNlIENoZWNrU2lnbmFsQXJnIHtcbiAgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdC5JbnRlcmFjdGFibGVcbiAgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uXG4gIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnRcbiAgYWN0aW9uOiBJbnRlcmFjdC5BY3Rpb25Qcm9wc1xuICBidXR0b25zOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvU3RhcnQge1xuICAvLyBBbGxvdyB0aGlzIG1hbnkgaW50ZXJhY3Rpb25zIHRvIGhhcHBlbiBzaW11bHRhbmVvdXNseVxuICBtYXhJbnRlcmFjdGlvbnM6IG51bWJlclxuICB3aXRoaW5JbnRlcmFjdGlvbkxpbWl0OiB0eXBlb2Ygd2l0aGluSW50ZXJhY3Rpb25MaW1pdFxuICBjdXJzb3JFbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBJbnRlcmFjdC5TY29wZSkge1xuICBjb25zdCB7XG4gICAgaW50ZXJhY3RTdGF0aWM6IGludGVyYWN0LFxuICAgIGRlZmF1bHRzLFxuICB9ID0gc2NvcGVcblxuICBzY29wZS51c2VQbHVnaW4oSW50ZXJhY3RhYmxlTWV0aG9kcylcblxuICBkZWZhdWx0cy5iYXNlLmFjdGlvbkNoZWNrZXIgPSBudWxsXG4gIGRlZmF1bHRzLmJhc2Uuc3R5bGVDdXJzb3IgPSB0cnVlXG5cbiAgdXRpbHMuZXh0ZW5kKGRlZmF1bHRzLnBlckFjdGlvbiwge1xuICAgIG1hbnVhbFN0YXJ0OiBmYWxzZSxcbiAgICBtYXg6IEluZmluaXR5LFxuICAgIG1heFBlckVsZW1lbnQ6IDEsXG4gICAgYWxsb3dGcm9tOiAgbnVsbCxcbiAgICBpZ25vcmVGcm9tOiBudWxsLFxuXG4gICAgLy8gb25seSBhbGxvdyBsZWZ0IGJ1dHRvbiBieSBkZWZhdWx0XG4gICAgLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Nb3VzZUV2ZW50L2J1dHRvbnMjUmV0dXJuX3ZhbHVlXG4gICAgbW91c2VCdXR0b25zOiAxLFxuICB9KVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgaW50ZXJhY3Rpb25zIGFsbG93ZWQuICBCeVxuICAgKiBkZWZhdWx0IG9ubHkgMSBpbnRlcmFjdGlvbiBpcyBhbGxvd2VkIGF0IGEgdGltZSAoZm9yIGJhY2t3YXJkc1xuICAgKiBjb21wYXRpYmlsaXR5KS4gVG8gYWxsb3cgbXVsdGlwbGUgaW50ZXJhY3Rpb25zIG9uIHRoZSBzYW1lIEludGVyYWN0YWJsZXMgYW5kXG4gICAqIGVsZW1lbnRzLCB5b3UgbmVlZCB0byBlbmFibGUgaXQgaW4gdGhlIGRyYWdnYWJsZSwgcmVzaXphYmxlIGFuZCBnZXN0dXJhYmxlXG4gICAqIGAnbWF4J2AgYW5kIGAnbWF4UGVyRWxlbWVudCdgIG9wdGlvbnMuXG4gICAqXG4gICAqIEBhbGlhcyBtb2R1bGU6aW50ZXJhY3QubWF4SW50ZXJhY3Rpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbmV3VmFsdWVdIEFueSBudW1iZXIuIG5ld1ZhbHVlIDw9IDAgbWVhbnMgbm8gaW50ZXJhY3Rpb25zLlxuICAgKi9cbiAgaW50ZXJhY3QubWF4SW50ZXJhY3Rpb25zID0gbmV3VmFsdWUgPT4gbWF4SW50ZXJhY3Rpb25zKG5ld1ZhbHVlLCBzY29wZSlcblxuICBzY29wZS5hdXRvU3RhcnQgPSB7XG4gICAgLy8gQWxsb3cgdGhpcyBtYW55IGludGVyYWN0aW9ucyB0byBoYXBwZW4gc2ltdWx0YW5lb3VzbHlcbiAgICBtYXhJbnRlcmFjdGlvbnM6IEluZmluaXR5LFxuICAgIHdpdGhpbkludGVyYWN0aW9uTGltaXQsXG4gICAgY3Vyc29yRWxlbWVudDogbnVsbCxcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlT25Eb3duICh7IGludGVyYWN0aW9uLCBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQgfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOmRvd24nXSwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGlmIChpbnRlcmFjdGlvbi5pbnRlcmFjdGluZygpKSB7IHJldHVybiB9XG5cbiAgY29uc3QgYWN0aW9uSW5mbyA9IGdldEFjdGlvbkluZm8oaW50ZXJhY3Rpb24sIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgc2NvcGUpXG4gIHByZXBhcmUoaW50ZXJhY3Rpb24sIGFjdGlvbkluZm8sIHNjb3BlKVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlT25Nb3ZlICh7IGludGVyYWN0aW9uLCBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQgfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOm1vdmUnXSwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGlmIChpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJyB8fFxuICAgICAgaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93biB8fFxuICAgICAgaW50ZXJhY3Rpb24uaW50ZXJhY3RpbmcoKSkgeyByZXR1cm4gfVxuXG4gIGNvbnN0IGFjdGlvbkluZm8gPSBnZXRBY3Rpb25JbmZvKGludGVyYWN0aW9uLCBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQgYXMgSW50ZXJhY3QuRWxlbWVudCwgc2NvcGUpXG4gIHByZXBhcmUoaW50ZXJhY3Rpb24sIGFjdGlvbkluZm8sIHNjb3BlKVxufVxuXG5mdW5jdGlvbiBzdGFydE9uTW92ZSAoYXJnOiBJbnRlcmFjdC5TaWduYWxBcmdzWydpbnRlcmFjdGlvbnM6bW92ZSddLCBzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgY29uc3QgeyBpbnRlcmFjdGlvbiB9ID0gYXJnXG5cbiAgaWYgKCFpbnRlcmFjdGlvbi5wb2ludGVySXNEb3duIHx8XG4gICAgICBpbnRlcmFjdGlvbi5pbnRlcmFjdGluZygpIHx8XG4gICAgICAhaW50ZXJhY3Rpb24ucG9pbnRlcldhc01vdmVkIHx8XG4gICAgICAhaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc2NvcGUuZmlyZSgnYXV0b1N0YXJ0OmJlZm9yZS1zdGFydCcsIGFyZylcblxuICBjb25zdCB7IGludGVyYWN0YWJsZSB9ID0gaW50ZXJhY3Rpb25cbiAgY29uc3QgYWN0aW9uTmFtZSA9IGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWVcblxuICBpZiAoYWN0aW9uTmFtZSAmJiBpbnRlcmFjdGFibGUpIHtcbiAgICAvLyBjaGVjayBtYW51YWxTdGFydCBhbmQgaW50ZXJhY3Rpb24gbGltaXRcbiAgICBpZiAoaW50ZXJhY3RhYmxlLm9wdGlvbnNbYWN0aW9uTmFtZV0ubWFudWFsU3RhcnQgfHxcbiAgICAgICAgIXdpdGhpbkludGVyYWN0aW9uTGltaXQoaW50ZXJhY3RhYmxlLCBpbnRlcmFjdGlvbi5lbGVtZW50LCBpbnRlcmFjdGlvbi5wcmVwYXJlZCwgc2NvcGUpKSB7XG4gICAgICBpbnRlcmFjdGlvbi5zdG9wKClcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpbnRlcmFjdGlvbi5zdGFydChpbnRlcmFjdGlvbi5wcmVwYXJlZCwgaW50ZXJhY3RhYmxlLCBpbnRlcmFjdGlvbi5lbGVtZW50KVxuICAgICAgc2V0SW50ZXJhY3Rpb25DdXJzb3IoaW50ZXJhY3Rpb24sIHNjb3BlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhckN1cnNvck9uU3RvcCAoeyBpbnRlcmFjdGlvbiB9OiB7IGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbiB9LCBzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgY29uc3QgeyBpbnRlcmFjdGFibGUgfSA9IGludGVyYWN0aW9uXG5cbiAgaWYgKGludGVyYWN0YWJsZSAmJiBpbnRlcmFjdGFibGUub3B0aW9ucy5zdHlsZUN1cnNvcikge1xuICAgIHNldEN1cnNvcihpbnRlcmFjdGlvbi5lbGVtZW50LCAnJywgc2NvcGUpXG4gIH1cbn1cblxuLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgaW50ZXJhY3RhYmxlIHN1cHBvcnRzIHRoZSBhY3Rpb24uXG4vLyBJZiBzbywgcmV0dXJuIHRoZSB2YWxpZGF0ZWQgYWN0aW9uLiBPdGhlcndpc2UsIHJldHVybiBudWxsXG5mdW5jdGlvbiB2YWxpZGF0ZUFjdGlvbjxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gKFxuICBhY3Rpb246IEludGVyYWN0LkFjdGlvblByb3BzPFQ+LFxuICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSxcbiAgZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCxcbiAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LFxuICBzY29wZTogSW50ZXJhY3QuU2NvcGUsXG4pIHtcbiAgaWYgKGludGVyYWN0YWJsZS50ZXN0SWdub3JlQWxsb3coaW50ZXJhY3RhYmxlLm9wdGlvbnNbYWN0aW9uLm5hbWVdLCBlbGVtZW50LCBldmVudFRhcmdldCkgJiZcbiAgICAgIGludGVyYWN0YWJsZS5vcHRpb25zW2FjdGlvbi5uYW1lXS5lbmFibGVkICYmXG4gICAgICB3aXRoaW5JbnRlcmFjdGlvbkxpbWl0KGludGVyYWN0YWJsZSwgZWxlbWVudCwgYWN0aW9uLCBzY29wZSkpIHtcbiAgICByZXR1cm4gYWN0aW9uXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU1hdGNoZXMgKFxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24sXG4gIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLFxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSxcbiAgbWF0Y2hlczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlW10sXG4gIG1hdGNoRWxlbWVudHM6IEludGVyYWN0LkVsZW1lbnRbXSxcbiAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LFxuICBzY29wZTogSW50ZXJhY3QuU2NvcGUsXG4pIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG1hdGNoZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV1cbiAgICBjb25zdCBtYXRjaEVsZW1lbnQgPSBtYXRjaEVsZW1lbnRzW2ldXG4gICAgY29uc3QgbWF0Y2hBY3Rpb24gPSBtYXRjaC5nZXRBY3Rpb24ocG9pbnRlciwgZXZlbnQsIGludGVyYWN0aW9uLCBtYXRjaEVsZW1lbnQpXG5cbiAgICBpZiAoIW1hdGNoQWN0aW9uKSB7IGNvbnRpbnVlIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHZhbGlkYXRlQWN0aW9uKFxuICAgICAgbWF0Y2hBY3Rpb24sXG4gICAgICBtYXRjaCxcbiAgICAgIG1hdGNoRWxlbWVudCxcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgc2NvcGUpXG5cbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGludGVyYWN0YWJsZTogbWF0Y2gsXG4gICAgICAgIGVsZW1lbnQ6IG1hdGNoRWxlbWVudCxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBhY3Rpb246IG51bGwsIGludGVyYWN0YWJsZTogbnVsbCwgZWxlbWVudDogbnVsbCB9XG59XG5cbmZ1bmN0aW9uIGdldEFjdGlvbkluZm8gKFxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24sXG4gIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLFxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSxcbiAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LFxuICBzY29wZTogSW50ZXJhY3QuU2NvcGUsXG4pIHtcbiAgbGV0IG1hdGNoZXM6IEludGVyYWN0LkludGVyYWN0YWJsZVtdID0gW11cbiAgbGV0IG1hdGNoRWxlbWVudHM6IEludGVyYWN0LkVsZW1lbnRbXSA9IFtdXG5cbiAgbGV0IGVsZW1lbnQgPSBldmVudFRhcmdldCBhcyBJbnRlcmFjdC5FbGVtZW50XG5cbiAgZnVuY3Rpb24gcHVzaE1hdGNoZXMgKGludGVyYWN0YWJsZTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlKSB7XG4gICAgbWF0Y2hlcy5wdXNoKGludGVyYWN0YWJsZSlcbiAgICBtYXRjaEVsZW1lbnRzLnB1c2goZWxlbWVudClcbiAgfVxuXG4gIHdoaWxlICh1dGlscy5pcy5lbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgbWF0Y2hlcyA9IFtdXG4gICAgbWF0Y2hFbGVtZW50cyA9IFtdXG5cbiAgICBzY29wZS5pbnRlcmFjdGFibGVzLmZvckVhY2hNYXRjaChlbGVtZW50LCBwdXNoTWF0Y2hlcylcblxuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB2YWxpZGF0ZU1hdGNoZXMoaW50ZXJhY3Rpb24sIHBvaW50ZXIsIGV2ZW50LCBtYXRjaGVzLCBtYXRjaEVsZW1lbnRzLCBldmVudFRhcmdldCwgc2NvcGUpXG5cbiAgICBpZiAoYWN0aW9uSW5mby5hY3Rpb24gJiZcbiAgICAgICFhY3Rpb25JbmZvLmludGVyYWN0YWJsZS5vcHRpb25zW2FjdGlvbkluZm8uYWN0aW9uLm5hbWVdLm1hbnVhbFN0YXJ0KSB7XG4gICAgICByZXR1cm4gYWN0aW9uSW5mb1xuICAgIH1cblxuICAgIGVsZW1lbnQgPSB1dGlscy5kb20ucGFyZW50Tm9kZShlbGVtZW50KSBhcyBJbnRlcmFjdC5FbGVtZW50XG4gIH1cblxuICByZXR1cm4geyBhY3Rpb246IG51bGwsIGludGVyYWN0YWJsZTogbnVsbCwgZWxlbWVudDogbnVsbCB9XG59XG5cbmZ1bmN0aW9uIHByZXBhcmUgKFxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24sXG4gIHsgYWN0aW9uLCBpbnRlcmFjdGFibGUsIGVsZW1lbnQgfToge1xuICAgIGFjdGlvbjogSW50ZXJhY3QuQWN0aW9uUHJvcHNcbiAgICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZVxuICAgIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnRcbiAgfSxcbiAgc2NvcGU6IEludGVyYWN0LlNjb3BlLFxuKSB7XG4gIGFjdGlvbiA9IGFjdGlvbiB8fCB7IG5hbWU6IG51bGwgfVxuXG4gIGludGVyYWN0aW9uLmludGVyYWN0YWJsZSA9IGludGVyYWN0YWJsZVxuICBpbnRlcmFjdGlvbi5lbGVtZW50ID0gZWxlbWVudFxuICB1dGlscy5jb3B5QWN0aW9uKGludGVyYWN0aW9uLnByZXBhcmVkLCBhY3Rpb24pXG5cbiAgaW50ZXJhY3Rpb24ucmVjdCA9IGludGVyYWN0YWJsZSAmJiBhY3Rpb24ubmFtZVxuICAgID8gaW50ZXJhY3RhYmxlLmdldFJlY3QoZWxlbWVudClcbiAgICA6IG51bGxcblxuICBzZXRJbnRlcmFjdGlvbkN1cnNvcihpbnRlcmFjdGlvbiwgc2NvcGUpXG5cbiAgc2NvcGUuZmlyZSgnYXV0b1N0YXJ0OnByZXBhcmVkJywgeyBpbnRlcmFjdGlvbiB9KVxufVxuXG5mdW5jdGlvbiB3aXRoaW5JbnRlcmFjdGlvbkxpbWl0PFQgZXh0ZW5kcyBJbnRlcmFjdC5BY3Rpb25OYW1lPiAoXG4gIGludGVyYWN0YWJsZTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLFxuICBlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50LFxuICBhY3Rpb246IEludGVyYWN0LkFjdGlvblByb3BzPFQ+LFxuICBzY29wZTogSW50ZXJhY3QuU2NvcGUsXG4pIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0YWJsZS5vcHRpb25zXG4gIGNvbnN0IG1heEFjdGlvbnMgPSBvcHRpb25zW2FjdGlvbi5uYW1lXS5tYXhcbiAgY29uc3QgbWF4UGVyRWxlbWVudCA9IG9wdGlvbnNbYWN0aW9uLm5hbWVdLm1heFBlckVsZW1lbnRcbiAgY29uc3QgYXV0b1N0YXJ0TWF4ID0gc2NvcGUuYXV0b1N0YXJ0Lm1heEludGVyYWN0aW9uc1xuICBsZXQgYWN0aXZlSW50ZXJhY3Rpb25zID0gMFxuICBsZXQgaW50ZXJhY3RhYmxlQ291bnQgPSAwXG4gIGxldCBlbGVtZW50Q291bnQgPSAwXG5cbiAgLy8gbm8gYWN0aW9ucyBpZiBhbnkgb2YgdGhlc2UgdmFsdWVzID09IDBcbiAgaWYgKCEobWF4QWN0aW9ucyAmJiBtYXhQZXJFbGVtZW50ICYmIGF1dG9TdGFydE1heCkpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBmb3IgKGNvbnN0IGludGVyYWN0aW9uIG9mIHNjb3BlLmludGVyYWN0aW9ucy5saXN0KSB7XG4gICAgY29uc3Qgb3RoZXJBY3Rpb24gPSBpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lXG5cbiAgICBpZiAoIWludGVyYWN0aW9uLmludGVyYWN0aW5nKCkpIHsgY29udGludWUgfVxuXG4gICAgYWN0aXZlSW50ZXJhY3Rpb25zKytcblxuICAgIGlmIChhY3RpdmVJbnRlcmFjdGlvbnMgPj0gYXV0b1N0YXJ0TWF4KSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlICE9PSBpbnRlcmFjdGFibGUpIHsgY29udGludWUgfVxuXG4gICAgaW50ZXJhY3RhYmxlQ291bnQgKz0gb3RoZXJBY3Rpb24gPT09IGFjdGlvbi5uYW1lID8gMSA6IDBcblxuICAgIGlmIChpbnRlcmFjdGFibGVDb3VudCA+PSBtYXhBY3Rpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJhY3Rpb24uZWxlbWVudCA9PT0gZWxlbWVudCkge1xuICAgICAgZWxlbWVudENvdW50KytcblxuICAgICAgaWYgKG90aGVyQWN0aW9uID09PSBhY3Rpb24ubmFtZSAmJiBlbGVtZW50Q291bnQgPj0gbWF4UGVyRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXV0b1N0YXJ0TWF4ID4gMFxufVxuXG5mdW5jdGlvbiBtYXhJbnRlcmFjdGlvbnMgKG5ld1ZhbHVlOiBhbnksIHNjb3BlOiBJbnRlcmFjdC5TY29wZSkge1xuICBpZiAodXRpbHMuaXMubnVtYmVyKG5ld1ZhbHVlKSkge1xuICAgIHNjb3BlLmF1dG9TdGFydC5tYXhJbnRlcmFjdGlvbnMgPSBuZXdWYWx1ZVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHJldHVybiBzY29wZS5hdXRvU3RhcnQubWF4SW50ZXJhY3Rpb25zXG59XG5cbmZ1bmN0aW9uIHNldEN1cnNvciAoZWxlbWVudDogSW50ZXJhY3QuRWxlbWVudCwgY3Vyc29yOiBzdHJpbmcsIHNjb3BlOiBJbnRlcmFjdC5TY29wZSkge1xuICBjb25zdCB7IGN1cnNvckVsZW1lbnQ6IHByZXZDdXJzb3JFbGVtZW50IH0gPSBzY29wZS5hdXRvU3RhcnRcblxuICBpZiAocHJldkN1cnNvckVsZW1lbnQgJiYgcHJldkN1cnNvckVsZW1lbnQgIT09IGVsZW1lbnQpIHtcbiAgICBwcmV2Q3Vyc29yRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnJ1xuICB9XG5cbiAgZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSBjdXJzb3JcbiAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSBjdXJzb3JcbiAgc2NvcGUuYXV0b1N0YXJ0LmN1cnNvckVsZW1lbnQgPSBjdXJzb3IgPyBlbGVtZW50IDogbnVsbFxufVxuXG5mdW5jdGlvbiBzZXRJbnRlcmFjdGlvbkN1cnNvcjxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gKGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbjxUPiwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGNvbnN0IHsgaW50ZXJhY3RhYmxlLCBlbGVtZW50LCBwcmVwYXJlZCB9ID0gaW50ZXJhY3Rpb25cblxuICBpZiAoIShpbnRlcmFjdGlvbi5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyAmJiBpbnRlcmFjdGFibGUgJiYgaW50ZXJhY3RhYmxlLm9wdGlvbnMuc3R5bGVDdXJzb3IpKSB7XG4gICAgLy8gY2xlYXIgcHJldmlvdXMgdGFyZ2V0IGVsZW1lbnQgY3Vyc29yXG4gICAgaWYgKHNjb3BlLmF1dG9TdGFydC5jdXJzb3JFbGVtZW50KSB7XG4gICAgICBzZXRDdXJzb3Ioc2NvcGUuYXV0b1N0YXJ0LmN1cnNvckVsZW1lbnQsICcnLCBzY29wZSlcbiAgICB9XG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBjdXJzb3IgPSAnJ1xuXG4gIGlmIChwcmVwYXJlZC5uYW1lKSB7XG4gICAgY29uc3QgY3Vyc29yQ2hlY2tlcjogSW50ZXJhY3QuQ3Vyc29yQ2hlY2tlciA9IGludGVyYWN0YWJsZS5vcHRpb25zW3ByZXBhcmVkLm5hbWVdLmN1cnNvckNoZWNrZXJcblxuICAgIGlmICh1dGlscy5pcy5mdW5jKGN1cnNvckNoZWNrZXIpKSB7XG4gICAgICBjdXJzb3IgPSBjdXJzb3JDaGVja2VyKHByZXBhcmVkLCBpbnRlcmFjdGFibGUsIGVsZW1lbnQsIGludGVyYWN0aW9uLl9pbnRlcmFjdGluZylcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjdXJzb3IgPSBzY29wZS5hY3Rpb25zLm1hcFtwcmVwYXJlZC5uYW1lXS5nZXRDdXJzb3IocHJlcGFyZWQpXG4gICAgfVxuICB9XG5cbiAgc2V0Q3Vyc29yKGludGVyYWN0aW9uLmVsZW1lbnQsIGN1cnNvciB8fCAnJywgc2NvcGUpXG59XG5cbmNvbnN0IGF1dG9TdGFydDogSW50ZXJhY3QuUGx1Z2luID0ge1xuICBpZDogJ2F1dG8tc3RhcnQvYmFzZScsXG4gIGJlZm9yZTogWydhY3Rpb25zJywgJ2FjdGlvbnMvZHJhZycsICdhY3Rpb25zL3Jlc2l6ZScsICdhY3Rpb25zL2dlc3R1cmUnXSxcbiAgaW5zdGFsbCxcbiAgbGlzdGVuZXJzOiB7XG4gICAgJ2ludGVyYWN0aW9uczpkb3duJzogcHJlcGFyZU9uRG93bixcbiAgICAnaW50ZXJhY3Rpb25zOm1vdmUnOiAoYXJnLCBzY29wZSkgPT4ge1xuICAgICAgcHJlcGFyZU9uTW92ZShhcmcsIHNjb3BlKVxuICAgICAgc3RhcnRPbk1vdmUoYXJnLCBzY29wZSlcbiAgICB9LFxuICAgICdpbnRlcmFjdGlvbnM6c3RvcCc6IGNsZWFyQ3Vyc29yT25TdG9wLFxuICB9LFxuICBtYXhJbnRlcmFjdGlvbnMsXG4gIHdpdGhpbkludGVyYWN0aW9uTGltaXQsXG4gIHZhbGlkYXRlQWN0aW9uLFxufSBhcyBJbnRlcmFjdC5QbHVnaW5cblxuZXhwb3J0IGRlZmF1bHQgYXV0b1N0YXJ0XG4iLCJpbXBvcnQgeyBwYXJlbnROb2RlIH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZG9tVXRpbHMnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCBhdXRvU3RhcnQgZnJvbSAnLi9iYXNlJ1xuXG5mdW5jdGlvbiBiZWZvcmVTdGFydCAoeyBpbnRlcmFjdGlvbiwgZXZlbnRUYXJnZXQsIGR4LCBkeSB9OiBJbnRlcmFjdC5TaWduYWxBcmdzWydpbnRlcmFjdGlvbnM6bW92ZSddLCBzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgaWYgKGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgIT09ICdkcmFnJykgeyByZXR1cm4gfVxuXG4gIC8vIGNoZWNrIGlmIGEgZHJhZyBpcyBpbiB0aGUgY29ycmVjdCBheGlzXG4gIGNvbnN0IGFic1ggPSBNYXRoLmFicyhkeClcbiAgY29uc3QgYWJzWSA9IE1hdGguYWJzKGR5KVxuICBjb25zdCB0YXJnZXRPcHRpb25zID0gaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJhZ1xuICBjb25zdCBzdGFydEF4aXMgPSB0YXJnZXRPcHRpb25zLnN0YXJ0QXhpc1xuICBjb25zdCBjdXJyZW50QXhpcyA9IChhYnNYID4gYWJzWSA/ICd4JyA6IGFic1ggPCBhYnNZID8gJ3knIDogJ3h5JylcblxuICBpbnRlcmFjdGlvbi5wcmVwYXJlZC5heGlzID0gdGFyZ2V0T3B0aW9ucy5sb2NrQXhpcyA9PT0gJ3N0YXJ0J1xuICAgID8gY3VycmVudEF4aXNbMF0gIGFzICd4JyB8ICd5JyAvLyBhbHdheXMgbG9jayB0byBvbmUgYXhpcyBldmVuIGlmIGN1cnJlbnRBeGlzID09PSAneHknXG4gICAgOiB0YXJnZXRPcHRpb25zLmxvY2tBeGlzXG5cbiAgLy8gaWYgdGhlIG1vdmVtZW50IGlzbid0IGluIHRoZSBzdGFydEF4aXMgb2YgdGhlIGludGVyYWN0YWJsZVxuICBpZiAoY3VycmVudEF4aXMgIT09ICd4eScgJiYgc3RhcnRBeGlzICE9PSAneHknICYmIHN0YXJ0QXhpcyAhPT0gY3VycmVudEF4aXMpIHtcbiAgICAvLyBjYW5jZWwgdGhlIHByZXBhcmVkIGFjdGlvblxuICAgIGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgPSBudWxsXG5cbiAgICAvLyB0aGVuIHRyeSB0byBnZXQgYSBkcmFnIGZyb20gYW5vdGhlciBpbmVyYWN0YWJsZVxuICAgIGxldCBlbGVtZW50ID0gZXZlbnRUYXJnZXQgYXMgSW50ZXJhY3QuRWxlbWVudFxuXG4gICAgY29uc3QgZ2V0RHJhZ2dhYmxlID0gZnVuY3Rpb24gKGludGVyYWN0YWJsZTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlKTogSW50ZXJhY3QuSW50ZXJhY3RhYmxlIHwgdm9pZCB7XG4gICAgICBpZiAoaW50ZXJhY3RhYmxlID09PSBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUpIHsgcmV0dXJuIH1cblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZS5vcHRpb25zLmRyYWdcblxuICAgICAgaWYgKCFvcHRpb25zLm1hbnVhbFN0YXJ0ICYmXG4gICAgICAgICAgaW50ZXJhY3RhYmxlLnRlc3RJZ25vcmVBbGxvdyhvcHRpb25zLCBlbGVtZW50LCBldmVudFRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gaW50ZXJhY3RhYmxlLmdldEFjdGlvbihcbiAgICAgICAgICBpbnRlcmFjdGlvbi5kb3duUG9pbnRlciwgaW50ZXJhY3Rpb24uZG93bkV2ZW50LCBpbnRlcmFjdGlvbiwgZWxlbWVudClcblxuICAgICAgICBpZiAoYWN0aW9uICYmXG4gICAgICAgICAgICBhY3Rpb24ubmFtZSA9PT0gJ2RyYWcnICYmXG4gICAgICAgICAgICBjaGVja1N0YXJ0QXhpcyhjdXJyZW50QXhpcywgaW50ZXJhY3RhYmxlKSAmJlxuICAgICAgICAgICAgYXV0b1N0YXJ0LnZhbGlkYXRlQWN0aW9uKGFjdGlvbiwgaW50ZXJhY3RhYmxlLCBlbGVtZW50LCBldmVudFRhcmdldCwgc2NvcGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGludGVyYWN0YWJsZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgYWxsIGludGVyYWN0YWJsZXNcbiAgICB3aGlsZSAoaXMuZWxlbWVudChlbGVtZW50KSkge1xuICAgICAgY29uc3QgaW50ZXJhY3RhYmxlID0gc2NvcGUuaW50ZXJhY3RhYmxlcy5mb3JFYWNoTWF0Y2goZWxlbWVudCwgZ2V0RHJhZ2dhYmxlKVxuXG4gICAgICBpZiAoaW50ZXJhY3RhYmxlKSB7XG4gICAgICAgIGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgPSAnZHJhZydcbiAgICAgICAgaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlID0gaW50ZXJhY3RhYmxlXG4gICAgICAgIGludGVyYWN0aW9uLmVsZW1lbnQgPSBlbGVtZW50XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGVsZW1lbnQgPSBwYXJlbnROb2RlKGVsZW1lbnQpIGFzIEludGVyYWN0LkVsZW1lbnRcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tTdGFydEF4aXMgKHN0YXJ0QXhpczogc3RyaW5nLCBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZSkge1xuICBpZiAoIWludGVyYWN0YWJsZSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IHRoaXNBeGlzID0gaW50ZXJhY3RhYmxlLm9wdGlvbnMuZHJhZy5zdGFydEF4aXNcblxuICByZXR1cm4gKHN0YXJ0QXhpcyA9PT0gJ3h5JyB8fCB0aGlzQXhpcyA9PT0gJ3h5JyB8fCB0aGlzQXhpcyA9PT0gc3RhcnRBeGlzKVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAnYXV0by1zdGFydC9kcmFnQXhpcycsXG4gIGxpc3RlbmVyczogeyAnYXV0b1N0YXJ0OmJlZm9yZS1zdGFydCc6IGJlZm9yZVN0YXJ0IH0sXG59XG4iLCJpbXBvcnQgYmFzZVBsdWdpbiBmcm9tICcuL2Jhc2UnXG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJyB7XG4gIGludGVyZmFjZSBQZXJBY3Rpb25EZWZhdWx0cyB7XG4gICAgaG9sZD86IG51bWJlclxuICAgIGRlbGF5PzogbnVtYmVyXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgICBhdXRvU3RhcnRIb2xkVGltZXI/OiBhbnlcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgY29uc3Qge1xuICAgIGRlZmF1bHRzLFxuICB9ID0gc2NvcGVcblxuICBzY29wZS51c2VQbHVnaW4oYmFzZVBsdWdpbilcblxuICBkZWZhdWx0cy5wZXJBY3Rpb24uaG9sZCA9IDBcbiAgZGVmYXVsdHMucGVyQWN0aW9uLmRlbGF5ID0gMFxufVxuXG5mdW5jdGlvbiBnZXRIb2xkRHVyYXRpb24gKGludGVyYWN0aW9uKSB7XG4gIGNvbnN0IGFjdGlvbk5hbWUgPSBpbnRlcmFjdGlvbi5wcmVwYXJlZCAmJiBpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lXG5cbiAgaWYgKCFhY3Rpb25OYW1lKSB7IHJldHVybiBudWxsIH1cblxuICBjb25zdCBvcHRpb25zID0gaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlLm9wdGlvbnNcblxuICByZXR1cm4gb3B0aW9uc1thY3Rpb25OYW1lXS5ob2xkIHx8IG9wdGlvbnNbYWN0aW9uTmFtZV0uZGVsYXlcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ2F1dG8tc3RhcnQvaG9sZCcsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdpbnRlcmFjdGlvbnM6bmV3JzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgaW50ZXJhY3Rpb24uYXV0b1N0YXJ0SG9sZFRpbWVyID0gbnVsbFxuICAgIH0sXG5cbiAgICAnYXV0b1N0YXJ0OnByZXBhcmVkJzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgY29uc3QgaG9sZCA9IGdldEhvbGREdXJhdGlvbihpbnRlcmFjdGlvbilcblxuICAgICAgaWYgKGhvbGQgPiAwKSB7XG4gICAgICAgIGludGVyYWN0aW9uLmF1dG9TdGFydEhvbGRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGludGVyYWN0aW9uLnN0YXJ0KGludGVyYWN0aW9uLnByZXBhcmVkLCBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUsIGludGVyYWN0aW9uLmVsZW1lbnQpXG4gICAgICAgIH0sIGhvbGQpXG4gICAgICB9XG4gICAgfSxcblxuICAgICdpbnRlcmFjdGlvbnM6bW92ZSc6ICh7IGludGVyYWN0aW9uLCBkdXBsaWNhdGUgfSkgPT4ge1xuICAgICAgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJXYXNNb3ZlZCAmJiAhZHVwbGljYXRlKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChpbnRlcmFjdGlvbi5hdXRvU3RhcnRIb2xkVGltZXIpXG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIHByZXZlbnQgcmVndWxhciBkb3duLT5tb3ZlIGF1dG9TdGFydFxuICAgICdhdXRvU3RhcnQ6YmVmb3JlLXN0YXJ0JzogKHsgaW50ZXJhY3Rpb24gfSkgPT4ge1xuICAgICAgY29uc3QgaG9sZCA9IGdldEhvbGREdXJhdGlvbihpbnRlcmFjdGlvbilcblxuICAgICAgaWYgKGhvbGQgPiAwKSB7XG4gICAgICAgIGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgPSBudWxsXG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgZ2V0SG9sZER1cmF0aW9uLFxufVxuIiwiaW1wb3J0IGF1dG9TdGFydCBmcm9tICcuL2Jhc2UnXG5pbXBvcnQgZHJhZ0F4aXMgZnJvbSAnLi9kcmFnQXhpcydcbmltcG9ydCBob2xkIGZyb20gJy4vaG9sZCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ2F1dG8tc3RhcnQnLFxuICBpbnN0YWxsIChzY29wZSkge1xuICAgIHNjb3BlLnVzZVBsdWdpbihhdXRvU3RhcnQpXG4gICAgc2NvcGUudXNlUGx1Z2luKGhvbGQpXG4gICAgc2NvcGUudXNlUGx1Z2luKGRyYWdBeGlzKVxuICB9LFxufVxuXG5leHBvcnQge1xuICBhdXRvU3RhcnQsXG4gIGhvbGQsXG4gIGRyYWdBeGlzLFxufVxuIiwiZXhwb3J0IGRlZmF1bHQge31cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGdsb2JhbCBwcm9jZXNzICovXG5pbXBvcnQgZG9tT2JqZWN0cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21PYmplY3RzJ1xuaW1wb3J0IHsgcGFyZW50Tm9kZSB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbVV0aWxzJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCB3aW4gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvd2luZG93J1xuaW1wb3J0IHZpc3VhbGl6ZXIgZnJvbSAnLi92aXN1YWxpemVyJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgU2NvcGUge1xuICAgIGxvZ2dlcjogTG9nZ2VyXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RTdGF0aWMnIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0U3RhdGljIHtcbiAgICB2aXNpYWxpemVyOiB0eXBlb2YgdmlzdWFsaXplclxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJyB7XG4gIGludGVyZmFjZSBCYXNlRGVmYXVsdHMge1xuICAgIGRldlRvb2xzPzogRGV2VG9vbHNPcHRpb25zXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RhYmxlJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGFibGUge1xuICAgIGRldlRvb2xzPzogSW50ZXJhY3QuT3B0aW9uTWV0aG9kPERldlRvb2xzT3B0aW9ucz5cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldlRvb2xzT3B0aW9ucyB7XG4gIGlnbm9yZTogeyBbUCBpbiBrZXlvZiB0eXBlb2YgQ2hlY2tOYW1lXT86IGJvb2xlYW4gfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIGxvZzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2sge1xuICBuYW1lOiBDaGVja05hbWVcbiAgdGV4dDogc3RyaW5nXG4gIHBlcmZvcm06IChpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24pID0+IGJvb2xlYW5cbiAgZ2V0SW5mbzogKGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbikgPT4gYW55W11cbn1cblxuZW51bSBDaGVja05hbWUge1xuICB0b3VjaEFjdGlvbiA9ICd0b3VjaEFjdGlvbicsXG4gIGJveFNpemluZyA9ICdib3hTaXppbmcnLFxuICBub0xpc3RlbmVycyA9ICdub0xpc3RlbmVycycsXG59XG5cbmNvbnN0IHByZWZpeCAgPSAnW2ludGVyYWN0LmpzXSAnXG5jb25zdCBsaW5rcyA9IHtcbiAgdG91Y2hBY3Rpb246ICdodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdG91Y2gtYWN0aW9uJyxcbiAgYm94U2l6aW5nOiAnaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JveC1zaXppbmcnLFxufVxuXG5jb25zdCBpc1Byb2R1Y3Rpb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IEludGVyYWN0LlNjb3BlLCB7IGxvZ2dlciB9OiB7IGxvZ2dlcj86IExvZ2dlciB9ID0ge30pIHtcbiAgY29uc3Qge1xuICAgIEludGVyYWN0YWJsZSxcbiAgICBkZWZhdWx0cyxcbiAgfSA9IHNjb3BlXG5cbiAgc2NvcGUubG9nZ2VyID0gbG9nZ2VyIHx8IGNvbnNvbGVcblxuICBkZWZhdWx0cy5iYXNlLmRldlRvb2xzID0ge1xuICAgIGlnbm9yZToge30sXG4gIH1cblxuICBJbnRlcmFjdGFibGUucHJvdG90eXBlLmRldlRvb2xzID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBvYmplY3QpIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgZXh0ZW5kKHRoaXMub3B0aW9ucy5kZXZUb29scywgb3B0aW9ucylcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kZXZUb29sc1xuICB9XG59XG5cbmNvbnN0IGNoZWNrczogQ2hlY2tbXSA9IFtcbiAge1xuICAgIG5hbWU6IENoZWNrTmFtZS50b3VjaEFjdGlvbixcbiAgICBwZXJmb3JtICh7IGVsZW1lbnQgfSkge1xuICAgICAgcmV0dXJuICFwYXJlbnRIYXNTdHlsZShlbGVtZW50LCAndG91Y2hBY3Rpb24nLCAvcGFuLXxwaW5jaHxub25lLylcbiAgICB9LFxuICAgIGdldEluZm8gKHsgZWxlbWVudCB9KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBsaW5rcy50b3VjaEFjdGlvbixcbiAgICAgIF1cbiAgICB9LFxuICAgIHRleHQ6ICdDb25zaWRlciBhZGRpbmcgQ1NTIFwidG91Y2gtYWN0aW9uOiBub25lXCIgdG8gdGhpcyBlbGVtZW50XFxuJyxcbiAgfSxcblxuICB7XG4gICAgbmFtZTogQ2hlY2tOYW1lLmJveFNpemluZyxcbiAgICBwZXJmb3JtIChpbnRlcmFjdGlvbikge1xuICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBpbnRlcmFjdGlvblxuXG4gICAgICByZXR1cm4gaW50ZXJhY3Rpb24ucHJlcGFyZWQubmFtZSA9PT0gJ3Jlc2l6ZScgJiZcbiAgICAgICAgZWxlbWVudCBpbnN0YW5jZW9mIGRvbU9iamVjdHMuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgIWhhc1N0eWxlKGVsZW1lbnQsICdib3hTaXppbmcnLCAvYm9yZGVyLWJveC8pXG4gICAgfSxcbiAgICB0ZXh0OiAnQ29uc2lkZXIgYWRkaW5nIENTUyBcImJveC1zaXppbmc6IGJvcmRlci1ib3hcIiB0byB0aGlzIHJlc2l6YWJsZSBlbGVtZW50JyxcbiAgICBnZXRJbmZvICh7IGVsZW1lbnQgfSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgbGlua3MuYm94U2l6aW5nLFxuICAgICAgXVxuICAgIH0sXG4gIH0sXG5cbiAge1xuICAgIG5hbWU6IENoZWNrTmFtZS5ub0xpc3RlbmVycyxcbiAgICBwZXJmb3JtIChpbnRlcmFjdGlvbikge1xuICAgICAgY29uc3QgYWN0aW9uTmFtZSA9IGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWVcbiAgICAgIGNvbnN0IG1vdmVMaXN0ZW5lcnMgPSBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUuZXZlbnRzLnR5cGVzW2Ake2FjdGlvbk5hbWV9bW92ZWBdIHx8IFtdXG5cbiAgICAgIHJldHVybiAhbW92ZUxpc3RlbmVycy5sZW5ndGhcbiAgICB9LFxuICAgIGdldEluZm8gKGludGVyYWN0aW9uKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lLFxuICAgICAgICBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUsXG4gICAgICBdXG4gICAgfSxcbiAgICB0ZXh0OiAnVGhlcmUgYXJlIG5vIGxpc3RlbmVycyBzZXQgZm9yIHRoaXMgYWN0aW9uJyxcbiAgfSxcbl1cblxuZnVuY3Rpb24gaGFzU3R5bGUgKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwcm9wOiBrZXlvZiBDU1NTdHlsZURlY2xhcmF0aW9uLCBzdHlsZVJlOiBSZWdFeHApIHtcbiAgcmV0dXJuIHN0eWxlUmUudGVzdChlbGVtZW50LnN0eWxlW3Byb3BdIHx8IHdpbi53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVtwcm9wXSlcbn1cblxuZnVuY3Rpb24gcGFyZW50SGFzU3R5bGUgKGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsIHByb3A6IGtleW9mIENTU1N0eWxlRGVjbGFyYXRpb24sIHN0eWxlUmU6IFJlZ0V4cCkge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudCBhcyBIVE1MRWxlbWVudFxuXG4gIHdoaWxlIChpcy5lbGVtZW50KHBhcmVudCkpIHtcbiAgICBpZiAoaGFzU3R5bGUocGFyZW50LCBwcm9wLCBzdHlsZVJlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBwYXJlbnQgPSBwYXJlbnROb2RlKHBhcmVudCkgYXMgSFRNTEVsZW1lbnRcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpZCA9ICdkZXYtdG9vbHMnXG5jb25zdCBkZWZhdWx0RXhwb3J0OiBJbnRlcmFjdC5QbHVnaW4gPSBpc1Byb2R1Y3Rpb25cbiAgPyB7IGlkLCBpbnN0YWxsOiAoKSA9PiB7fSB9XG4gIDoge1xuICAgIGlkLFxuICAgIGluc3RhbGwsXG4gICAgbGlzdGVuZXJzOiB7XG4gICAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1zdGFydCc6ICh7IGludGVyYWN0aW9uIH0sIHNjb3BlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgY2hlY2tzKSB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZSAmJiBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUub3B0aW9uc1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShvcHRpb25zICYmIG9wdGlvbnMuZGV2VG9vbHMgJiYgb3B0aW9ucy5kZXZUb29scy5pZ25vcmVbY2hlY2submFtZV0pICYmXG4gICAgICAgICAgICBjaGVjay5wZXJmb3JtKGludGVyYWN0aW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2NvcGUubG9nZ2VyLndhcm4ocHJlZml4ICsgY2hlY2sudGV4dCwgLi4uY2hlY2suZ2V0SW5mbyhpbnRlcmFjdGlvbikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgY2hlY2tzLFxuICAgIENoZWNrTmFtZSxcbiAgICBsaW5rcyxcbiAgICBwcmVmaXgsXG4gIH1cblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdEV4cG9ydFxuIiwiaW1wb3J0IGNsb25lIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2Nsb25lJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgKiBhcyByZWN0VXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmVjdCdcbmltcG9ydCB7IE1vZGlmaWVyLCBNb2RpZmllckFyZywgTW9kaWZpZXJTdGF0ZSB9IGZyb20gJy4vYmFzZSdcblxuZXhwb3J0IGludGVyZmFjZSBNb2RpZmljYXRpb25SZXN1bHQge1xuICBkZWx0YTogSW50ZXJhY3QuUG9pbnRcbiAgcmVjdERlbHRhOiBJbnRlcmFjdC5SZWN0XG4gIGNvb3JkczogSW50ZXJhY3QuUG9pbnRcbiAgcmVjdDogSW50ZXJhY3QuRnVsbFJlY3RcbiAgZXZlbnRQcm9wczogYW55W11cbiAgY2hhbmdlZDogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWV0aG9kQXJnIHtcbiAgcGhhc2U6IEludGVyYWN0LkV2ZW50UGhhc2VcbiAgcGFnZUNvb3Jkcz86IEludGVyYWN0LlBvaW50XG4gIHJlY3Q/OiBJbnRlcmFjdC5GdWxsUmVjdFxuICBjb29yZHM/OiBJbnRlcmFjdC5Qb2ludFxuICBwcmVFbmQ/OiBib29sZWFuXG4gIHNraXBNb2RpZmllcnM/OiBudW1iZXJcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kaWZpY2F0aW9uIHtcbiAgc3RhdGVzOiBNb2RpZmllclN0YXRlW10gPSBbXVxuICBzdGFydE9mZnNldDogSW50ZXJhY3QuUmVjdCA9IHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwIH1cbiAgc3RhcnREZWx0YTogSW50ZXJhY3QuUG9pbnQgPSBudWxsXG4gIHJlc3VsdD86IE1vZGlmaWNhdGlvblJlc3VsdCA9IG51bGxcbiAgZW5kUmVzdWx0PzogSW50ZXJhY3QuUG9pbnQgPSBudWxsXG4gIGVkZ2VzOiBJbnRlcmFjdC5FZGdlT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yIChyZWFkb25seSBpbnRlcmFjdGlvbjogUmVhZG9ubHk8SW50ZXJhY3QuSW50ZXJhY3Rpb24+KSB7XG4gICAgdGhpcy5yZXN1bHQgPSBjcmVhdGVSZXN1bHQoKVxuICB9XG5cbiAgc3RhcnQgKFxuICAgIHsgcGhhc2UgfTogTWV0aG9kQXJnLFxuICAgIHBhZ2VDb29yZHM6IEludGVyYWN0LlBvaW50LFxuICApIHtcbiAgICBjb25zdCB7IGludGVyYWN0aW9uIH0gPSB0aGlzXG4gICAgY29uc3QgbW9kaWZpZXJMaXN0ID0gZ2V0TW9kaWZpZXJMaXN0KGludGVyYWN0aW9uKVxuICAgIHRoaXMucHJlcGFyZVN0YXRlcyhtb2RpZmllckxpc3QpXG5cbiAgICB0aGlzLmVkZ2VzID0gZXh0ZW5kKHt9LCBpbnRlcmFjdGlvbi5lZGdlcylcbiAgICB0aGlzLnN0YXJ0T2Zmc2V0ID0gZ2V0UmVjdE9mZnNldChpbnRlcmFjdGlvbi5yZWN0LCBwYWdlQ29vcmRzKVxuICAgIHRoaXMuc3RhcnREZWx0YSA9IHsgeDogMCwgeTogMCB9XG5cbiAgICBjb25zdCBhcmc6IE1ldGhvZEFyZyA9IHtcbiAgICAgIHBoYXNlLFxuICAgICAgcGFnZUNvb3JkcyxcbiAgICAgIHByZUVuZDogZmFsc2UsXG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQgPSBjcmVhdGVSZXN1bHQoKVxuICAgIHRoaXMuc3RhcnRBbGwoYXJnKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZXN1bHQgPSB0aGlzLnNldEFsbChhcmcpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmaWxsQXJnIChhcmc6IFBhcnRpYWw8TW9kaWZpZXJBcmc+KSB7XG4gICAgY29uc3QgeyBpbnRlcmFjdGlvbiB9ID0gdGhpc1xuXG4gICAgYXJnLmludGVyYWN0aW9uID0gaW50ZXJhY3Rpb25cbiAgICBhcmcuaW50ZXJhY3RhYmxlID0gaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlXG4gICAgYXJnLmVsZW1lbnQgPSBpbnRlcmFjdGlvbi5lbGVtZW50XG4gICAgYXJnLnJlY3QgPSBhcmcucmVjdCB8fCBpbnRlcmFjdGlvbi5yZWN0XG4gICAgYXJnLmVkZ2VzID0gdGhpcy5lZGdlc1xuICAgIGFyZy5zdGFydE9mZnNldCA9IHRoaXMuc3RhcnRPZmZzZXRcbiAgfVxuXG4gIHN0YXJ0QWxsIChhcmc6IE1ldGhvZEFyZyAmIFBhcnRpYWw8TW9kaWZpZXJBcmc+KSB7XG4gICAgdGhpcy5maWxsQXJnKGFyZylcblxuICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgdGhpcy5zdGF0ZXMpIHtcbiAgICAgIGlmIChzdGF0ZS5tZXRob2RzLnN0YXJ0KSB7XG4gICAgICAgIGFyZy5zdGF0ZSA9IHN0YXRlXG4gICAgICAgIHN0YXRlLm1ldGhvZHMuc3RhcnQoYXJnIGFzIE1vZGlmaWVyQXJnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEFsbCAoYXJnOiBNZXRob2RBcmcgJiBQYXJ0aWFsPE1vZGlmaWVyQXJnPik6IE1vZGlmaWNhdGlvblJlc3VsdCB7XG4gICAgdGhpcy5maWxsQXJnKGFyZylcblxuICAgIGNvbnN0IHtcbiAgICAgIHBoYXNlLFxuICAgICAgcHJlRW5kLFxuICAgICAgc2tpcE1vZGlmaWVycyxcbiAgICAgIHJlY3Q6IHVubW9kaWZpZWRSZWN0LFxuICAgIH0gPSBhcmdcblxuICAgIGFyZy5jb29yZHMgPSBleHRlbmQoe30sIGFyZy5wYWdlQ29vcmRzKVxuICAgIGFyZy5yZWN0ID0gZXh0ZW5kKHt9LCB1bm1vZGlmaWVkUmVjdClcblxuICAgIGNvbnN0IHN0YXRlcyA9IHNraXBNb2RpZmllcnNcbiAgICAgID8gdGhpcy5zdGF0ZXMuc2xpY2Uoc2tpcE1vZGlmaWVycylcbiAgICAgIDogdGhpcy5zdGF0ZXNcblxuICAgIGNvbnN0IG5ld1Jlc3VsdCA9IGNyZWF0ZVJlc3VsdChhcmcuY29vcmRzLCBhcmcucmVjdClcblxuICAgIGZvciAoY29uc3Qgc3RhdGUgb2Ygc3RhdGVzKSB7XG4gICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHN0YXRlXG4gICAgICBjb25zdCBsYXN0TW9kaWZpZXJDb29yZHMgPSBleHRlbmQoe30sIGFyZy5jb29yZHMpXG4gICAgICBsZXQgcmV0dXJuVmFsdWUgPSBudWxsXG5cbiAgICAgIGlmIChzdGF0ZS5tZXRob2RzLnNldCAmJiB0aGlzLnNob3VsZERvKG9wdGlvbnMsIHByZUVuZCwgcGhhc2UpKSB7XG4gICAgICAgIGFyZy5zdGF0ZSA9IHN0YXRlXG4gICAgICAgIHJldHVyblZhbHVlID0gc3RhdGUubWV0aG9kcy5zZXQoYXJnIGFzIE1vZGlmaWVyQXJnKVxuXG4gICAgICAgIHJlY3RVdGlscy5hZGRFZGdlcyh0aGlzLmludGVyYWN0aW9uLmVkZ2VzLCBhcmcucmVjdCwgeyB4OiBhcmcuY29vcmRzLnggLSBsYXN0TW9kaWZpZXJDb29yZHMueCwgeTogYXJnLmNvb3Jkcy55IC0gbGFzdE1vZGlmaWVyQ29vcmRzLnkgfSlcbiAgICAgIH1cblxuICAgICAgbmV3UmVzdWx0LmV2ZW50UHJvcHMucHVzaChyZXR1cm5WYWx1ZSlcbiAgICB9XG5cbiAgICBuZXdSZXN1bHQuZGVsdGEueCA9IGFyZy5jb29yZHMueCAtIGFyZy5wYWdlQ29vcmRzLnhcbiAgICBuZXdSZXN1bHQuZGVsdGEueSA9IGFyZy5jb29yZHMueSAtIGFyZy5wYWdlQ29vcmRzLnlcblxuICAgIG5ld1Jlc3VsdC5yZWN0RGVsdGEubGVmdCAgID0gYXJnLnJlY3QubGVmdCAtIHVubW9kaWZpZWRSZWN0LmxlZnRcbiAgICBuZXdSZXN1bHQucmVjdERlbHRhLnJpZ2h0ICA9IGFyZy5yZWN0LnJpZ2h0IC0gdW5tb2RpZmllZFJlY3QucmlnaHRcbiAgICBuZXdSZXN1bHQucmVjdERlbHRhLnRvcCAgICA9IGFyZy5yZWN0LnRvcCAtIHVubW9kaWZpZWRSZWN0LnRvcFxuICAgIG5ld1Jlc3VsdC5yZWN0RGVsdGEuYm90dG9tID0gYXJnLnJlY3QuYm90dG9tIC0gdW5tb2RpZmllZFJlY3QuYm90dG9tXG5cbiAgICBjb25zdCBwcmV2Q29vcmRzID0gdGhpcy5yZXN1bHQuY29vcmRzXG4gICAgY29uc3QgcHJldlJlY3QgPSB0aGlzLnJlc3VsdC5yZWN0XG5cbiAgICBpZiAocHJldkNvb3JkcyAmJiBwcmV2UmVjdCkge1xuICAgICAgY29uc3QgcmVjdENoYW5nZWQgPSBuZXdSZXN1bHQucmVjdC5sZWZ0ICE9PSBwcmV2UmVjdC5sZWZ0IHx8XG4gICAgICAgIG5ld1Jlc3VsdC5yZWN0LnJpZ2h0ICE9PSBwcmV2UmVjdC5yaWdodCB8fFxuICAgICAgICBuZXdSZXN1bHQucmVjdC50b3AgIT09IHByZXZSZWN0LnRvcCB8fFxuICAgICAgICBuZXdSZXN1bHQucmVjdC5ib3R0b20gIT09IHByZXZSZWN0LmJvdHRvbVxuXG4gICAgICBuZXdSZXN1bHQuY2hhbmdlZCA9IHJlY3RDaGFuZ2VkIHx8XG4gICAgICAgIHByZXZDb29yZHMueCAhPT0gbmV3UmVzdWx0LmNvb3Jkcy54IHx8XG4gICAgICAgIHByZXZDb29yZHMueSAhPT0gbmV3UmVzdWx0LmNvb3Jkcy55XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jlc3VsdFxuICB9XG5cbiAgYXBwbHlUb0ludGVyYWN0aW9uIChhcmc6IHsgcGhhc2U6IEludGVyYWN0LkV2ZW50UGhhc2UsIHJlY3Q/OiBJbnRlcmFjdC5SZWN0IH0pIHtcbiAgICBjb25zdCB7IGludGVyYWN0aW9uIH0gPSB0aGlzXG4gICAgY29uc3QgeyBwaGFzZSB9ID0gYXJnXG4gICAgY29uc3QgY3VyQ29vcmRzID0gaW50ZXJhY3Rpb24uY29vcmRzLmN1clxuICAgIGNvbnN0IHN0YXJ0Q29vcmRzID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0XG4gICAgY29uc3QgeyByZXN1bHQsIHN0YXJ0RGVsdGEgfSA9IHRoaXNcbiAgICBjb25zdCBjdXJEZWx0YSA9IHJlc3VsdC5kZWx0YVxuXG4gICAgaWYgKHBoYXNlID09PSAnc3RhcnQnKSB7XG4gICAgICBleHRlbmQodGhpcy5zdGFydERlbHRhLCByZXN1bHQuZGVsdGEpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbY29vcmRzU2V0LCBkZWx0YV0gb2YgW1tzdGFydENvb3Jkcywgc3RhcnREZWx0YV0sIFtjdXJDb29yZHMsIGN1ckRlbHRhXV0gYXMgY29uc3QpIHtcbiAgICAgIGNvb3Jkc1NldC5wYWdlLnggICArPSBkZWx0YS54XG4gICAgICBjb29yZHNTZXQucGFnZS55ICAgKz0gZGVsdGEueVxuICAgICAgY29vcmRzU2V0LmNsaWVudC54ICs9IGRlbHRhLnhcbiAgICAgIGNvb3Jkc1NldC5jbGllbnQueSArPSBkZWx0YS55XG4gICAgfVxuXG4gICAgY29uc3QgeyByZWN0RGVsdGEgfSA9IHRoaXMucmVzdWx0XG4gICAgY29uc3QgcmVjdCA9IGFyZy5yZWN0IHx8IGludGVyYWN0aW9uLnJlY3RcblxuICAgIHJlY3QubGVmdCAgICs9IHJlY3REZWx0YS5sZWZ0XG4gICAgcmVjdC5yaWdodCAgKz0gcmVjdERlbHRhLnJpZ2h0XG4gICAgcmVjdC50b3AgICAgKz0gcmVjdERlbHRhLnRvcFxuICAgIHJlY3QuYm90dG9tICs9IHJlY3REZWx0YS5ib3R0b21cblxuICAgIHJlY3Qud2lkdGggPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0XG4gICAgcmVjdC5oZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wXG4gIH1cblxuICBzZXRBbmRBcHBseSAoYXJnOiBQYXJ0aWFsPEludGVyYWN0LkRvQW55UGhhc2VBcmc+ICYge1xuICAgIHBoYXNlOiBJbnRlcmFjdC5FdmVudFBoYXNlXG4gICAgcHJlRW5kPzogYm9vbGVhblxuICAgIHNraXBNb2RpZmllcnM/OiBudW1iZXJcbiAgICBtb2RpZmllZENvb3Jkcz86IEludGVyYWN0LlBvaW50XG4gIH0pOiB2b2lkIHwgZmFsc2Uge1xuICAgIGNvbnN0IHsgaW50ZXJhY3Rpb24gfSA9IHRoaXNcbiAgICBjb25zdCB7IHBoYXNlLCBwcmVFbmQsIHNraXBNb2RpZmllcnMgfSA9IGFyZ1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZXRBbGwoe1xuICAgICAgcHJlRW5kLFxuICAgICAgcGhhc2UsXG4gICAgICBwYWdlQ29vcmRzOiBhcmcubW9kaWZpZWRDb29yZHMgfHwgaW50ZXJhY3Rpb24uY29vcmRzLmN1ci5wYWdlLFxuICAgIH0pXG5cbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdFxuXG4gICAgLy8gZG9uJ3QgZmlyZSBhbiBhY3Rpb24gbW92ZSBpZiBhIG1vZGlmaWVyIHdvdWxkIGtlZXAgdGhlIGV2ZW50IGluIHRoZSBzYW1lXG4gICAgLy8gY29yZGluYXRlcyBhcyBiZWZvcmVcbiAgICBpZiAoIXJlc3VsdC5jaGFuZ2VkICYmICghc2tpcE1vZGlmaWVycyB8fCBza2lwTW9kaWZpZXJzIDwgdGhpcy5zdGF0ZXMubGVuZ3RoKSAmJiBpbnRlcmFjdGlvbi5pbnRlcmFjdGluZygpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoYXJnLm1vZGlmaWVkQ29vcmRzKSB7XG4gICAgICBjb25zdCB7IHBhZ2UgfSA9IGludGVyYWN0aW9uLmNvb3Jkcy5jdXJcbiAgICAgIGNvbnN0IGFkanVzdG1lbnQgPSB7XG4gICAgICAgIHg6IGFyZy5tb2RpZmllZENvb3Jkcy54IC0gcGFnZS54LFxuICAgICAgICB5OiBhcmcubW9kaWZpZWRDb29yZHMueSAtIHBhZ2UueSxcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LmNvb3Jkcy54ICs9IGFkanVzdG1lbnQueFxuICAgICAgcmVzdWx0LmNvb3Jkcy55ICs9IGFkanVzdG1lbnQueVxuICAgICAgcmVzdWx0LmRlbHRhLnggKz0gYWRqdXN0bWVudC54XG4gICAgICByZXN1bHQuZGVsdGEueSArPSBhZGp1c3RtZW50LnlcbiAgICB9XG5cbiAgICB0aGlzLmFwcGx5VG9JbnRlcmFjdGlvbihhcmcpXG4gIH1cblxuICBiZWZvcmVFbmQgKGFyZzogT21pdDxJbnRlcmFjdC5Eb0FueVBoYXNlQXJnLCAnaUV2ZW50Jz4gJiB7IHN0YXRlPzogTW9kaWZpZXJTdGF0ZSB9KTogdm9pZCB8IGZhbHNlIHtcbiAgICBjb25zdCB7IGludGVyYWN0aW9uLCBldmVudCB9ID0gYXJnXG4gICAgY29uc3Qgc3RhdGVzID0gdGhpcy5zdGF0ZXNcblxuICAgIGlmICghc3RhdGVzIHx8ICFzdGF0ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgZG9QcmVlbmQgPSBmYWxzZVxuXG4gICAgZm9yIChjb25zdCBzdGF0ZSBvZiBzdGF0ZXMpIHtcbiAgICAgIGFyZy5zdGF0ZSA9IHN0YXRlXG4gICAgICBjb25zdCB7IG9wdGlvbnMsIG1ldGhvZHMgfSA9IHN0YXRlXG5cbiAgICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gbWV0aG9kcy5iZWZvcmVFbmQgJiYgbWV0aG9kcy5iZWZvcmVFbmQoYXJnIGFzIHVua25vd24gYXMgTW9kaWZpZXJBcmcpXG5cbiAgICAgIGlmIChlbmRQb3NpdGlvbikge1xuICAgICAgICB0aGlzLmVuZFJlc3VsdCA9IGVuZFBvc2l0aW9uXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBkb1ByZWVuZCA9IGRvUHJlZW5kIHx8ICghZG9QcmVlbmQgJiYgdGhpcy5zaG91bGREbyhvcHRpb25zLCB0cnVlLCBhcmcucGhhc2UsIHRydWUpKVxuICAgIH1cblxuICAgIGlmIChkb1ByZWVuZCkge1xuICAgICAgLy8gdHJpZ2dlciBhIGZpbmFsIG1vZGlmaWVkIG1vdmUgYmVmb3JlIGVuZGluZ1xuICAgICAgaW50ZXJhY3Rpb24ubW92ZSh7IGV2ZW50LCBwcmVFbmQ6IHRydWUgfSlcbiAgICB9XG4gIH1cblxuICBzdG9wIChhcmc6IHsgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uIH0pIHtcbiAgICBjb25zdCB7IGludGVyYWN0aW9uIH0gPSBhcmdcblxuICAgIGlmICghdGhpcy5zdGF0ZXMgfHwgIXRoaXMuc3RhdGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgbW9kaWZpZXJBcmc6IFBhcnRpYWw8TW9kaWZpZXJBcmc+ID0gZXh0ZW5kKHtcbiAgICAgIHN0YXRlczogdGhpcy5zdGF0ZXMsXG4gICAgICBpbnRlcmFjdGFibGU6IGludGVyYWN0aW9uLmludGVyYWN0YWJsZSxcbiAgICAgIGVsZW1lbnQ6IGludGVyYWN0aW9uLmVsZW1lbnQsXG4gICAgICByZWN0OiBudWxsLFxuICAgIH0sIGFyZylcblxuICAgIHRoaXMuZmlsbEFyZyhtb2RpZmllckFyZylcblxuICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgdGhpcy5zdGF0ZXMpIHtcbiAgICAgIG1vZGlmaWVyQXJnLnN0YXRlID0gc3RhdGVcblxuICAgICAgaWYgKHN0YXRlLm1ldGhvZHMuc3RvcCkgeyBzdGF0ZS5tZXRob2RzLnN0b3AobW9kaWZpZXJBcmcgYXMgTW9kaWZpZXJBcmcpIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlcyA9IG51bGxcbiAgICB0aGlzLmVuZFJlc3VsdCA9IG51bGxcbiAgfVxuXG4gIHByZXBhcmVTdGF0ZXMgKG1vZGlmaWVyTGlzdDogTW9kaWZpZXJbXSkge1xuICAgIHRoaXMuc3RhdGVzID0gW11cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtb2RpZmllckxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB7IG9wdGlvbnMsIG1ldGhvZHMsIG5hbWUgfSA9IG1vZGlmaWVyTGlzdFtpbmRleF1cblxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5lbmFibGVkID09PSBmYWxzZSkgeyBjb250aW51ZSB9XG5cbiAgICAgIHRoaXMuc3RhdGVzLnB1c2goe1xuICAgICAgICBvcHRpb25zLFxuICAgICAgICBtZXRob2RzLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVzXG4gIH1cblxuICByZXN0b3JlSW50ZXJhY3Rpb25Db29yZHMgKHsgaW50ZXJhY3Rpb246IHsgY29vcmRzLCByZWN0LCBtb2RpZmljYXRpb24gfSB9OiB7IGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbiB9KSB7XG4gICAgaWYgKCFtb2RpZmljYXRpb24ucmVzdWx0KSB7IHJldHVybiB9XG5cbiAgICBjb25zdCB7IHN0YXJ0RGVsdGEgfSA9IG1vZGlmaWNhdGlvblxuICAgIGNvbnN0IHsgZGVsdGE6IGN1ckRlbHRhLCByZWN0RGVsdGEgfSA9IG1vZGlmaWNhdGlvbi5yZXN1bHRcblxuICAgIGNvbnN0IGNvb3Jkc0FuZERlbHRhcyA9IFtcbiAgICAgIFtjb29yZHMuc3RhcnQsIHN0YXJ0RGVsdGFdLFxuICAgICAgW2Nvb3Jkcy5jdXIsIGN1ckRlbHRhXSxcbiAgICBdXG5cbiAgICBmb3IgKGNvbnN0IFtjb29yZHNTZXQsIGRlbHRhXSBvZiBjb29yZHNBbmREZWx0YXMgYXMgYW55KSB7XG4gICAgICBjb29yZHNTZXQucGFnZS54IC09IGRlbHRhLnhcbiAgICAgIGNvb3Jkc1NldC5wYWdlLnkgLT0gZGVsdGEueVxuICAgICAgY29vcmRzU2V0LmNsaWVudC54IC09IGRlbHRhLnhcbiAgICAgIGNvb3Jkc1NldC5jbGllbnQueSAtPSBkZWx0YS55XG4gICAgfVxuXG4gICAgcmVjdC5sZWZ0IC09IHJlY3REZWx0YS5sZWZ0XG4gICAgcmVjdC5yaWdodCAtPSByZWN0RGVsdGEucmlnaHRcbiAgICByZWN0LnRvcCAtPSByZWN0RGVsdGEudG9wXG4gICAgcmVjdC5ib3R0b20gLT0gcmVjdERlbHRhLmJvdHRvbVxuICB9XG5cbiAgc2hvdWxkRG8gKG9wdGlvbnMsIHByZUVuZD86IGJvb2xlYW4sIHBoYXNlPzogc3RyaW5nLCByZXF1aXJlRW5kT25seT86IGJvb2xlYW4pIHtcbiAgICBpZiAoXG4gICAgICAvLyBpZ25vcmUgZGlzYWJsZWQgbW9kaWZpZXJzXG4gICAgICAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmFibGVkID09PSBmYWxzZSkgfHxcbiAgICAgIC8vIGNoZWNrIGlmIHdlIHJlcXVpcmUgZW5kT25seSBvcHRpb24gdG8gZmlyZSBtb3ZlIGJlZm9yZSBlbmRcbiAgICAgIChyZXF1aXJlRW5kT25seSAmJiAhb3B0aW9ucy5lbmRPbmx5KSB8fFxuICAgICAgLy8gZG9uJ3QgYXBwbHkgZW5kT25seSBtb2RpZmllcnMgd2hlbiBub3QgZW5kaW5nXG4gICAgICAob3B0aW9ucy5lbmRPbmx5ICYmICFwcmVFbmQpIHx8XG4gICAgICAvLyBjaGVjayBpZiBtb2RpZmllciBzaG91bGQgcnVuIGJlIGFwcGxpZWQgb24gc3RhcnRcbiAgICAgIChwaGFzZSA9PT0gJ3N0YXJ0JyAmJiAhb3B0aW9ucy5zZXRTdGFydClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb3B5RnJvbSAob3RoZXI6IE1vZGlmaWNhdGlvbikge1xuICAgIHRoaXMuc3RhcnRPZmZzZXQgPSBvdGhlci5zdGFydE9mZnNldFxuICAgIHRoaXMuc3RhcnREZWx0YSA9IG90aGVyLnN0YXJ0RGVsdGFcbiAgICB0aGlzLmVkZ2VzID0gb3RoZXIuZWRnZXNcbiAgICB0aGlzLnN0YXRlcyA9IG90aGVyLnN0YXRlcy5tYXAocyA9PiBjbG9uZShzKSBhcyBNb2RpZmllclN0YXRlKVxuICAgIHRoaXMucmVzdWx0ID0gY3JlYXRlUmVzdWx0KGV4dGVuZCh7fSwgb3RoZXIucmVzdWx0LmNvb3JkcyksIGV4dGVuZCh7fSwgb3RoZXIucmVzdWx0LnJlY3QpKVxuICB9XG5cbiAgZGVzdHJveSAoKSB7XG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMpIHtcbiAgICAgIHRoaXNbcHJvcF0gPSBudWxsXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlc3VsdCAoY29vcmRzPzogSW50ZXJhY3QuUG9pbnQsIHJlY3Q/OiBJbnRlcmFjdC5GdWxsUmVjdCk6IE1vZGlmaWNhdGlvblJlc3VsdCB7XG4gIHJldHVybiB7XG4gICAgcmVjdCxcbiAgICBjb29yZHMsXG4gICAgZGVsdGE6IHsgeDogMCwgeTogMCB9LFxuICAgIHJlY3REZWx0YToge1xuICAgICAgbGVmdCAgOiAwLFxuICAgICAgcmlnaHQgOiAwLFxuICAgICAgdG9wICAgOiAwLFxuICAgICAgYm90dG9tOiAwLFxuICAgIH0sXG4gICAgZXZlbnRQcm9wczogW10sXG4gICAgY2hhbmdlZDogdHJ1ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRNb2RpZmllckxpc3QgKGludGVyYWN0aW9uKSB7XG4gIGNvbnN0IGFjdGlvbk9wdGlvbnMgPSBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUub3B0aW9uc1tpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lXVxuICBjb25zdCBhY3Rpb25Nb2RpZmllcnMgPSBhY3Rpb25PcHRpb25zLm1vZGlmaWVyc1xuXG4gIGlmIChhY3Rpb25Nb2RpZmllcnMgJiYgYWN0aW9uTW9kaWZpZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiBhY3Rpb25Nb2RpZmllcnMuZmlsdGVyKFxuICAgICAgbW9kaWZpZXIgPT4gIW1vZGlmaWVyLm9wdGlvbnMgfHwgbW9kaWZpZXIub3B0aW9ucy5lbmFibGVkICE9PSBmYWxzZSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gWydzbmFwJywgJ3NuYXBTaXplJywgJ3NuYXBFZGdlcycsICdyZXN0cmljdCcsICdyZXN0cmljdEVkZ2VzJywgJ3Jlc3RyaWN0U2l6ZSddXG4gICAgLm1hcCh0eXBlID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhY3Rpb25PcHRpb25zW3R5cGVdXG5cbiAgICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuZW5hYmxlZCAmJiB7XG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIG1ldGhvZHM6IG9wdGlvbnMuX21ldGhvZHMsXG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKG0gPT4gISFtKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVjdE9mZnNldCAocmVjdCwgY29vcmRzKSB7XG4gIHJldHVybiByZWN0XG4gICAgPyB7XG4gICAgICBsZWZ0ICA6IGNvb3Jkcy54IC0gcmVjdC5sZWZ0LFxuICAgICAgdG9wICAgOiBjb29yZHMueSAtIHJlY3QudG9wLFxuICAgICAgcmlnaHQgOiByZWN0LnJpZ2h0ICAtIGNvb3Jkcy54LFxuICAgICAgYm90dG9tOiByZWN0LmJvdHRvbSAtIGNvb3Jkcy55LFxuICAgIH1cbiAgICA6IHtcbiAgICAgIGxlZnQgIDogMCxcbiAgICAgIHRvcCAgIDogMCxcbiAgICAgIHJpZ2h0IDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICB9XG59XG4iLCJpbXBvcnQgTW9kaWZpY2F0aW9uIGZyb20gJy4vTW9kaWZpY2F0aW9uJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGlvbicge1xuICBpbnRlcmZhY2UgSW50ZXJhY3Rpb24ge1xuICAgIG1vZGlmaWNhdGlvbj86IE1vZGlmaWNhdGlvblxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0RXZlbnQnIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0RXZlbnQge1xuICAgIG1vZGlmaWVycz86IEFycmF5PHtcbiAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgfT5cbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9kZWZhdWx0T3B0aW9ucycge1xuICBpbnRlcmZhY2UgUGVyQWN0aW9uRGVmYXVsdHMge1xuICAgIG1vZGlmaWVycz86IE1vZGlmaWVyW11cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmaWVyPFxuICBEZWZhdWx0cyA9IGFueSxcbiAgU3RhdGUgZXh0ZW5kcyBNb2RpZmllclN0YXRlID0gYW55LFxuICBOYW1lIGV4dGVuZHMgc3RyaW5nID0gYW55XG4+IHtcbiAgb3B0aW9ucz86IERlZmF1bHRzXG4gIG1ldGhvZHM6IHtcbiAgICBzdGFydD86IChhcmc6IE1vZGlmaWVyQXJnPFN0YXRlPikgPT4gdm9pZFxuICAgIHNldDogKGFyZzogTW9kaWZpZXJBcmc8U3RhdGU+KSA9PiB2b2lkXG4gICAgYmVmb3JlRW5kPzogKGFyZzogTW9kaWZpZXJBcmc8U3RhdGU+KSA9PiBJbnRlcmFjdC5Qb2ludCB8IHZvaWRcbiAgICBzdG9wPzogKGFyZzogTW9kaWZpZXJBcmc8U3RhdGU+KSA9PiB2b2lkXG4gIH1cbiAgbmFtZT86IE5hbWVcbn1cblxuZXhwb3J0IHR5cGUgTW9kaWZpZXJTdGF0ZTxcbiAgRGVmYXVsdHMgPSB7fSxcbiAgU3RhdGVQcm9wcyBleHRlbmRzIHsgW3Byb3A6IHN0cmluZ106IGFueSB9ID0ge30sXG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmcgPSBhbnlcbj4gPSB7XG4gIG9wdGlvbnM6IERlZmF1bHRzXG4gIG1ldGhvZHM/OiBNb2RpZmllcjxEZWZhdWx0cz5bJ21ldGhvZHMnXVxuICBpbmRleD86IG51bWJlclxuICBuYW1lPzogTmFtZVxufSAmIFN0YXRlUHJvcHNcblxuZXhwb3J0IGludGVyZmFjZSBNb2RpZmllckFyZzxTdGF0ZSBleHRlbmRzIE1vZGlmaWVyU3RhdGUgPSBNb2RpZmllclN0YXRlPiB7XG4gIGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvblxuICBpbnRlcmFjdGFibGU6IEludGVyYWN0LkludGVyYWN0YWJsZVxuICBwaGFzZTogSW50ZXJhY3QuRXZlbnRQaGFzZVxuICByZWN0OiBJbnRlcmFjdC5GdWxsUmVjdFxuICBlZGdlczogSW50ZXJhY3QuRWRnZU9wdGlvbnNcbiAgc3RhdGU/OiBTdGF0ZVxuICBlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50XG4gIHBhZ2VDb29yZHM/OiBJbnRlcmFjdC5Qb2ludFxuICBwcmV2Q29vcmRzPzogSW50ZXJhY3QuUG9pbnRcbiAgcHJldlJlY3Q/OiBJbnRlcmFjdC5GdWxsUmVjdFxuICBjb29yZHM/OiBJbnRlcmFjdC5Qb2ludFxuICBzdGFydE9mZnNldD86IEludGVyYWN0LlJlY3RcbiAgcHJlRW5kPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmaWVyTW9kdWxlPFxuICBEZWZhdWx0cyBleHRlbmRzIHsgZW5hYmxlZD86IGJvb2xlYW4gfSxcbiAgU3RhdGUgZXh0ZW5kcyBNb2RpZmllclN0YXRlLFxuPiB7XG4gIGRlZmF1bHRzPzogRGVmYXVsdHNcbiAgc3RhcnQ/IChhcmc6IE1vZGlmaWVyQXJnPFN0YXRlPik6IHZvaWRcbiAgc2V0PyAoYXJnOiBNb2RpZmllckFyZzxTdGF0ZT4pOiBhbnlcbiAgYmVmb3JlRW5kPyAoYXJnOiBNb2RpZmllckFyZzxTdGF0ZT4pOiBJbnRlcmFjdC5Qb2ludCB8IHZvaWRcbiAgc3RvcD8gKGFyZzogTW9kaWZpZXJBcmc8U3RhdGU+KTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmaWVyRnVuY3Rpb24gPFxuICBEZWZhdWx0cyBleHRlbmRzIHsgZW5hYmxlZD86IGJvb2xlYW4gfSxcbiAgU3RhdGUgZXh0ZW5kcyBNb2RpZmllclN0YXRlLFxuICBOYW1lIGV4dGVuZHMgc3RyaW5nLFxuPiB7XG4gIChfb3B0aW9ucz86IFBhcnRpYWw8RGVmYXVsdHM+KTogTW9kaWZpZXI8RGVmYXVsdHMsIFN0YXRlLCBOYW1lPlxuICBfZGVmYXVsdHM6IERlZmF1bHRzXG4gIF9tZXRob2RzOiBNb2RpZmllck1vZHVsZTxEZWZhdWx0cywgU3RhdGU+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTW9kaWZpZXI8XG4gIERlZmF1bHRzIGV4dGVuZHMgeyBlbmFibGVkPzogYm9vbGVhbiB9LFxuICBTdGF0ZSBleHRlbmRzIE1vZGlmaWVyU3RhdGUsXG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmdcbj4gKFxuICBtb2R1bGU6IE1vZGlmaWVyTW9kdWxlPERlZmF1bHRzLCBTdGF0ZT4sXG4gIG5hbWU/OiBOYW1lLFxuKSB7XG4gIGNvbnN0IHsgZGVmYXVsdHMgfSA9IG1vZHVsZVxuICBjb25zdCBtZXRob2RzID0ge1xuICAgIHN0YXJ0OiBtb2R1bGUuc3RhcnQsXG4gICAgc2V0OiBtb2R1bGUuc2V0LFxuICAgIGJlZm9yZUVuZDogbW9kdWxlLmJlZm9yZUVuZCxcbiAgICBzdG9wOiBtb2R1bGUuc3RvcCxcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVyID0gKF9vcHRpb25zPzogUGFydGlhbDxEZWZhdWx0cz4pID0+IHtcbiAgICBjb25zdCBvcHRpb25zOiBEZWZhdWx0cyA9IChfb3B0aW9ucyB8fCB7fSkgYXMgRGVmYXVsdHNcblxuICAgIG9wdGlvbnMuZW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlZCAhPT0gZmFsc2VcblxuICAgIC8vIGFkZCBtaXNzaW5nIGRlZmF1bHRzIHRvIG9wdGlvbnNcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gZGVmYXVsdHMpIHtcbiAgICAgIGlmICghKHByb3AgaW4gb3B0aW9ucykpIHtcbiAgICAgICAgb3B0aW9uc1twcm9wXSA9IGRlZmF1bHRzW3Byb3BdXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbTogTW9kaWZpZXI8RGVmYXVsdHMsIFN0YXRlLCBOYW1lPiA9IHsgb3B0aW9ucywgbWV0aG9kcywgbmFtZSB9XG5cbiAgICByZXR1cm4gbVxuICB9XG5cbiAgaWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZm9yIGJhY2t3cmFkcyBjb21wYXRpYmlsaXR5XG4gICAgbW9kaWZpZXIuX2RlZmF1bHRzID0gZGVmYXVsdHNcbiAgICBtb2RpZmllci5fbWV0aG9kcyA9IG1ldGhvZHNcbiAgfVxuXG4gIHJldHVybiBtb2RpZmllclxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRXZlbnRNb2RpZmllcnMgKHsgaUV2ZW50LCBpbnRlcmFjdGlvbjogeyBtb2RpZmljYXRpb246IHsgcmVzdWx0IH0gfSB9OiB7XG4gIGlFdmVudDogSW50ZXJhY3QuSW50ZXJhY3RFdmVudDxJbnRlcmFjdC5BY3Rpb25OYW1lLCBJbnRlcmFjdC5FdmVudFBoYXNlPlxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb25cbn0pIHtcbiAgaWYgKHJlc3VsdCkge1xuICAgIGlFdmVudC5tb2RpZmllcnMgPSByZXN1bHQuZXZlbnRQcm9wc1xuICB9XG59XG5cbmNvbnN0IG1vZGlmaWVyc0Jhc2U6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdtb2RpZmllcnMvYmFzZScsXG4gIGluc3RhbGw6IHNjb3BlID0+IHtcbiAgICBzY29wZS5kZWZhdWx0cy5wZXJBY3Rpb24ubW9kaWZpZXJzID0gW11cbiAgfSxcbiAgbGlzdGVuZXJzOiB7XG4gICAgJ2ludGVyYWN0aW9uczpuZXcnOiAoeyBpbnRlcmFjdGlvbiB9KSA9PiB7XG4gICAgICBpbnRlcmFjdGlvbi5tb2RpZmljYXRpb24gPSBuZXcgTW9kaWZpY2F0aW9uKGludGVyYWN0aW9uKVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tc3RhcnQnOiBhcmcgPT4ge1xuICAgICAgY29uc3QgeyBtb2RpZmljYXRpb24gfSA9IGFyZy5pbnRlcmFjdGlvblxuXG4gICAgICBtb2RpZmljYXRpb24uc3RhcnQoYXJnLCBhcmcuaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LnBhZ2UpXG4gICAgICBhcmcuaW50ZXJhY3Rpb24uZWRnZXMgPSBtb2RpZmljYXRpb24uZWRnZXNcbiAgICAgIG1vZGlmaWNhdGlvbi5hcHBseVRvSW50ZXJhY3Rpb24oYXJnKVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tbW92ZSc6IGFyZyA9PiBhcmcuaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uLnNldEFuZEFwcGx5KGFyZyksXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tZW5kJzogYXJnID0+IGFyZy5pbnRlcmFjdGlvbi5tb2RpZmljYXRpb24uYmVmb3JlRW5kKGFyZyksXG5cbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1zdGFydCc6IGFkZEV2ZW50TW9kaWZpZXJzLFxuICAgICdpbnRlcmFjdGlvbnM6YWN0aW9uLW1vdmUnOiBhZGRFdmVudE1vZGlmaWVycyxcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1lbmQnOiBhZGRFdmVudE1vZGlmaWVycyxcblxuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLXN0YXJ0JzogYXJnID0+IGFyZy5pbnRlcmFjdGlvbi5tb2RpZmljYXRpb24ucmVzdG9yZUludGVyYWN0aW9uQ29vcmRzKGFyZyksXG4gICAgJ2ludGVyYWN0aW9uczphZnRlci1hY3Rpb24tbW92ZSc6IGFyZyA9PiBhcmcuaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uLnJlc3RvcmVJbnRlcmFjdGlvbkNvb3JkcyhhcmcpLFxuXG4gICAgJ2ludGVyYWN0aW9uczpzdG9wJzogYXJnID0+IGFyZy5pbnRlcmFjdGlvbi5tb2RpZmljYXRpb24uc3RvcChhcmcpLFxuICB9LFxuICBiZWZvcmU6IFsnYWN0aW9ucycsICdhY3Rpb24vZHJhZycsICdhY3Rpb25zL3Jlc2l6ZScsICdhY3Rpb25zL2dlc3R1cmUnXSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgbW9kaWZpZXJzQmFzZVxuIiwiaW1wb3J0IHsgX1Byb3h5TWV0aG9kcyB9IGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nXG5pbXBvcnQgKiBhcyByZWN0VXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmVjdCdcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgICBvZmZzZXRCeT86IHR5cGVvZiBvZmZzZXRCeVxuICAgIG9mZnNldDoge1xuICAgICAgdG90YWw6IEludGVyYWN0LlBvaW50XG4gICAgICBwZW5kaW5nOiBJbnRlcmFjdC5Qb2ludFxuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgZW51bSBfUHJveHlNZXRob2RzIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgb2Zmc2V0QnkgPSAnJ1xuICB9XG59XG5cbihfUHJveHlNZXRob2RzIGFzIGFueSkub2Zmc2V0QnkgPSAnJ1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkVG90YWwgKGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbikge1xuICBpZiAoIWludGVyYWN0aW9uLnBvaW50ZXJJc0Rvd24pIHsgcmV0dXJuIH1cblxuICBhZGRUb0Nvb3JkcyhpbnRlcmFjdGlvbi5jb29yZHMuY3VyLCBpbnRlcmFjdGlvbi5vZmZzZXQudG90YWwpXG5cbiAgaW50ZXJhY3Rpb24ub2Zmc2V0LnBlbmRpbmcueCA9IDBcbiAgaW50ZXJhY3Rpb24ub2Zmc2V0LnBlbmRpbmcueSA9IDBcbn1cblxuZnVuY3Rpb24gYmVmb3JlQWN0aW9uICh7IGludGVyYWN0aW9uIH06IHsgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uIH0pIHtcbiAgYXBwbHlQZW5kaW5nKGludGVyYWN0aW9uKVxufVxuXG5mdW5jdGlvbiBiZWZvcmVFbmQgKHsgaW50ZXJhY3Rpb24gfTogeyBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24gfSk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgY29uc3QgaGFkUGVuZGluZyA9IGFwcGx5UGVuZGluZyhpbnRlcmFjdGlvbilcblxuICBpZiAoIWhhZFBlbmRpbmcpIHsgcmV0dXJuIH1cblxuICBpbnRlcmFjdGlvbi5tb3ZlKHsgb2Zmc2V0OiB0cnVlIH0pXG4gIGludGVyYWN0aW9uLmVuZCgpXG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGVuZCAoeyBpbnRlcmFjdGlvbiB9OiB7IGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbiB9KSB7XG4gIGludGVyYWN0aW9uLm9mZnNldC50b3RhbC54ID0gMFxuICBpbnRlcmFjdGlvbi5vZmZzZXQudG90YWwueSA9IDBcbiAgaW50ZXJhY3Rpb24ub2Zmc2V0LnBlbmRpbmcueCA9IDBcbiAgaW50ZXJhY3Rpb24ub2Zmc2V0LnBlbmRpbmcueSA9IDBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGVuZGluZyAoaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uKSB7XG4gIGlmICghaGFzUGVuZGluZyhpbnRlcmFjdGlvbikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGVuZGluZyB9ID0gaW50ZXJhY3Rpb24ub2Zmc2V0XG5cbiAgYWRkVG9Db29yZHMoaW50ZXJhY3Rpb24uY29vcmRzLmN1ciwgcGVuZGluZylcbiAgYWRkVG9Db29yZHMoaW50ZXJhY3Rpb24uY29vcmRzLmRlbHRhLCBwZW5kaW5nKVxuICByZWN0VXRpbHMuYWRkRWRnZXMoaW50ZXJhY3Rpb24uZWRnZXMsIGludGVyYWN0aW9uLnJlY3QsIHBlbmRpbmcpXG5cbiAgcGVuZGluZy54ID0gMFxuICBwZW5kaW5nLnkgPSAwXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gb2Zmc2V0QnkgKHRoaXM6IEludGVyYWN0LkludGVyYWN0aW9uLCB7IHgsIHkgfTogSW50ZXJhY3QuUG9pbnQpIHtcbiAgdGhpcy5vZmZzZXQucGVuZGluZy54ICs9IHhcbiAgdGhpcy5vZmZzZXQucGVuZGluZy55ICs9IHlcblxuICB0aGlzLm9mZnNldC50b3RhbC54ICs9IHhcbiAgdGhpcy5vZmZzZXQudG90YWwueSArPSB5XG59XG5cbmZ1bmN0aW9uIGFkZFRvQ29vcmRzICh7IHBhZ2UsIGNsaWVudCB9LCB7IHgsIHkgfTogSW50ZXJhY3QuUG9pbnQpIHtcbiAgcGFnZS54ICs9IHhcbiAgcGFnZS55ICs9IHlcbiAgY2xpZW50LnggKz0geFxuICBjbGllbnQueSArPSB5XG59XG5cbmZ1bmN0aW9uIGhhc1BlbmRpbmcgKGludGVyYWN0aW9uKSB7XG4gIHJldHVybiAhIShpbnRlcmFjdGlvbi5vZmZzZXQucGVuZGluZy54IHx8IGludGVyYWN0aW9uLm9mZnNldC5wZW5kaW5nLnkpXG59XG5cbmNvbnN0IG9mZnNldDogSW50ZXJhY3QuUGx1Z2luID0ge1xuICBpZDogJ29mZnNldCcsXG4gIGluc3RhbGwgKHNjb3BlKSB7XG4gICAgc2NvcGUuSW50ZXJhY3Rpb24ucHJvdG90eXBlLm9mZnNldEJ5ID0gb2Zmc2V0QnlcbiAgfSxcbiAgbGlzdGVuZXJzOiB7XG4gICAgJ2ludGVyYWN0aW9uczpuZXcnOiAoeyBpbnRlcmFjdGlvbiB9KSA9PiB7XG4gICAgICBpbnRlcmFjdGlvbi5vZmZzZXQgPSB7XG4gICAgICAgIHRvdGFsOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgcGVuZGluZzogeyB4OiAwLCB5OiAwIH0sXG4gICAgICB9XG4gICAgfSxcbiAgICAnaW50ZXJhY3Rpb25zOnVwZGF0ZS1wb2ludGVyJzogKHsgaW50ZXJhY3Rpb24gfSkgPT4gYWRkVG90YWwoaW50ZXJhY3Rpb24pLFxuICAgICdpbnRlcmFjdGlvbnM6YmVmb3JlLWFjdGlvbi1zdGFydCc6IGJlZm9yZUFjdGlvbixcbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tbW92ZSc6IGJlZm9yZUFjdGlvbixcbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tZW5kJzogYmVmb3JlRW5kLFxuICAgICdpbnRlcmFjdGlvbnM6c3RvcCc6IGVuZCxcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgb2Zmc2V0XG4iLCJpbXBvcnQgTW9kaWZpY2F0aW9uIGZyb20gJ0BpbnRlcmFjdGpzL21vZGlmaWVycy9Nb2RpZmljYXRpb24nXG5pbXBvcnQgKiBhcyBtb2RpZmllcnMgZnJvbSAnQGludGVyYWN0anMvbW9kaWZpZXJzL2Jhc2UnXG5pbXBvcnQgb2Zmc2V0IGZyb20gJ0BpbnRlcmFjdGpzL29mZnNldC9pbmRleCdcbmltcG9ydCAqIGFzIGRvbSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcbmltcG9ydCBoeXBvdCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9oeXBvdCdcbmltcG9ydCAqIGFzIGlzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2lzJ1xuaW1wb3J0IHsgY29weUNvb3JkcyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3BvaW50ZXJVdGlscydcbmltcG9ydCByYWYgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmFmJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdEV2ZW50JyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgaW50ZXJmYWNlIFBoYXNlTWFwIHtcbiAgICByZXN1bWU/OiB0cnVlXG4gICAgaW5lcnRpYXN0YXJ0PzogdHJ1ZVxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGlvbiB7XG4gICAgaW5lcnRpYT86IEluZXJ0aWFTdGF0ZVxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJyB7XG4gIGludGVyZmFjZSBQZXJBY3Rpb25EZWZhdWx0cyB7XG4gICAgaW5lcnRpYT86IHtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICByZXNpc3RhbmNlPzogbnVtYmVyICAgICAgICAvLyB0aGUgbGFtYmRhIGluIGV4cG9uZW50aWFsIGRlY2F5XG4gICAgICBtaW5TcGVlZD86IG51bWJlciAgICAgICAgICAvLyB0YXJnZXQgc3BlZWQgbXVzdCBiZSBhYm92ZSB0aGlzIGZvciBpbmVydGlhIHRvIHN0YXJ0XG4gICAgICBlbmRTcGVlZD86IG51bWJlciAgICAgICAgICAvLyB0aGUgc3BlZWQgYXQgd2hpY2ggaW5lcnRpYSBpcyBzbG93IGVub3VnaCB0byBzdG9wXG4gICAgICBhbGxvd1Jlc3VtZT86IHRydWUgICAgICAgICAvLyBhbGxvdyByZXN1bWluZyBhbiBhY3Rpb24gaW4gaW5lcnRpYSBwaGFzZVxuICAgICAgc21vb3RoRW5kRHVyYXRpb24/OiBudW1iZXIgLy8gYW5pbWF0ZSB0byBzbmFwL3Jlc3RyaWN0IGVuZE9ubHkgaWYgdGhlcmUncyBubyBpbmVydGlhXG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJyB7XG4gIGludGVyZmFjZSBTaWduYWxBcmdzIHtcbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24taW5lcnRpYXN0YXJ0JzogT21pdDxJbnRlcmFjdC5Eb1BoYXNlQXJnPEludGVyYWN0LkFjdGlvbk5hbWUsICdpbmVydGlhc3RhcnQnPiwgJ2lFdmVudCc+XG4gICAgJ2ludGVyYWN0aW9uczphY3Rpb24taW5lcnRpYXN0YXJ0JzogSW50ZXJhY3QuRG9QaGFzZUFyZzxJbnRlcmFjdC5BY3Rpb25OYW1lLCAnaW5lcnRpYXN0YXJ0Jz5cbiAgICAnaW50ZXJhY3Rpb25zOmFmdGVyLWFjdGlvbi1pbmVydGlhc3RhcnQnOiBJbnRlcmFjdC5Eb1BoYXNlQXJnPEludGVyYWN0LkFjdGlvbk5hbWUsICdpbmVydGlhc3RhcnQnPlxuICAgICdpbnRlcmFjdGlvbnM6YmVmb3JlLWFjdGlvbi1yZXN1bWUnOiBPbWl0PEludGVyYWN0LkRvUGhhc2VBcmc8SW50ZXJhY3QuQWN0aW9uTmFtZSwgJ3Jlc3VtZSc+LCAnaUV2ZW50Jz5cbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1yZXN1bWUnOiBJbnRlcmFjdC5Eb1BoYXNlQXJnPEludGVyYWN0LkFjdGlvbk5hbWUsICdyZXN1bWUnPlxuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLXJlc3VtZSc6IEludGVyYWN0LkRvUGhhc2VBcmc8SW50ZXJhY3QuQWN0aW9uTmFtZSwgJ3Jlc3VtZSc+XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBkZWZhdWx0cyxcbiAgfSA9IHNjb3BlXG5cbiAgc2NvcGUudXNlUGx1Z2luKG9mZnNldClcbiAgc2NvcGUudXNlUGx1Z2luKG1vZGlmaWVycy5kZWZhdWx0KVxuICBzY29wZS5hY3Rpb25zLnBoYXNlcy5pbmVydGlhc3RhcnQgPSB0cnVlXG4gIHNjb3BlLmFjdGlvbnMucGhhc2VzLnJlc3VtZSA9IHRydWVcblxuICBkZWZhdWx0cy5wZXJBY3Rpb24uaW5lcnRpYSA9IHtcbiAgICBlbmFibGVkICAgICAgICAgIDogZmFsc2UsXG4gICAgcmVzaXN0YW5jZSAgICAgICA6IDEwLCAgICAvLyB0aGUgbGFtYmRhIGluIGV4cG9uZW50aWFsIGRlY2F5XG4gICAgbWluU3BlZWQgICAgICAgICA6IDEwMCwgICAvLyB0YXJnZXQgc3BlZWQgbXVzdCBiZSBhYm92ZSB0aGlzIGZvciBpbmVydGlhIHRvIHN0YXJ0XG4gICAgZW5kU3BlZWQgICAgICAgICA6IDEwLCAgICAvLyB0aGUgc3BlZWQgYXQgd2hpY2ggaW5lcnRpYSBpcyBzbG93IGVub3VnaCB0byBzdG9wXG4gICAgYWxsb3dSZXN1bWUgICAgICA6IHRydWUsICAvLyBhbGxvdyByZXN1bWluZyBhbiBhY3Rpb24gaW4gaW5lcnRpYSBwaGFzZVxuICAgIHNtb290aEVuZER1cmF0aW9uOiAzMDAsICAgLy8gYW5pbWF0ZSB0byBzbmFwL3Jlc3RyaWN0IGVuZE9ubHkgaWYgdGhlcmUncyBubyBpbmVydGlhXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluZXJ0aWFTdGF0ZSB7XG4gIGFjdGl2ZSA9IGZhbHNlXG4gIGlzTW9kaWZpZWQgPSBmYWxzZVxuICBzbW9vdGhFbmQgPSBmYWxzZVxuICBhbGxvd1Jlc3VtZSA9IGZhbHNlXG5cbiAgbW9kaWZpY2F0aW9uOiBNb2RpZmljYXRpb24gPSBudWxsXG4gIG1vZGlmaWVyQ291bnQgPSAwXG4gIG1vZGlmaWVyQXJnOiBtb2RpZmllcnMuTW9kaWZpZXJBcmcgPSBudWxsXG5cbiAgc3RhcnRDb29yZHM6IEludGVyYWN0LlBvaW50ID0gbnVsbFxuICB0MCA9IDBcbiAgdjAgPSAwXG5cbiAgdGUgPSAwXG4gIHRhcmdldE9mZnNldDogSW50ZXJhY3QuUG9pbnQgPSBudWxsXG4gIG1vZGlmaWVkT2Zmc2V0OiBJbnRlcmFjdC5Qb2ludCA9IG51bGxcbiAgY3VycmVudE9mZnNldDogSW50ZXJhY3QuUG9pbnQgPSBudWxsXG5cbiAgbGFtYmRhX3YwPyA9IDAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2VcbiAgb25lX3ZlX3YwPyA9IDAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2VcbiAgdGltZW91dDogbnVtYmVyID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yIChcbiAgICBwcml2YXRlIHJlYWRvbmx5IGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbixcbiAgKSB7fVxuXG4gIHN0YXJ0IChldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSkge1xuICAgIGNvbnN0IHsgaW50ZXJhY3Rpb24gfSA9IHRoaXNcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0T3B0aW9ucyhpbnRlcmFjdGlvbilcblxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsaWVudDogdmVsb2NpdHlDbGllbnQgfSA9IGludGVyYWN0aW9uLmNvb3Jkcy52ZWxvY2l0eVxuICAgIGNvbnN0IHBvaW50ZXJTcGVlZCA9IGh5cG90KHZlbG9jaXR5Q2xpZW50LngsIHZlbG9jaXR5Q2xpZW50LnkpXG4gICAgY29uc3QgbW9kaWZpY2F0aW9uID0gdGhpcy5tb2RpZmljYXRpb24gfHwgKHRoaXMubW9kaWZpY2F0aW9uID0gbmV3IE1vZGlmaWNhdGlvbihpbnRlcmFjdGlvbikpXG5cbiAgICBtb2RpZmljYXRpb24uY29weUZyb20oaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uKVxuXG4gICAgdGhpcy50MCA9IGludGVyYWN0aW9uLl9ub3coKVxuICAgIHRoaXMuYWxsb3dSZXN1bWUgPSBvcHRpb25zLmFsbG93UmVzdW1lXG4gICAgdGhpcy52MCA9IHBvaW50ZXJTcGVlZFxuICAgIHRoaXMuY3VycmVudE9mZnNldCA9IHsgeDogMCwgeTogMCB9XG4gICAgdGhpcy5zdGFydENvb3JkcyA9IGludGVyYWN0aW9uLmNvb3Jkcy5jdXIucGFnZVxuXG4gICAgdGhpcy5tb2RpZmllckFyZyA9IHtcbiAgICAgIGludGVyYWN0aW9uLFxuICAgICAgaW50ZXJhY3RhYmxlOiBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUsXG4gICAgICBlbGVtZW50OiBpbnRlcmFjdGlvbi5lbGVtZW50LFxuICAgICAgcmVjdDogaW50ZXJhY3Rpb24ucmVjdCxcbiAgICAgIGVkZ2VzOiBpbnRlcmFjdGlvbi5lZGdlcyxcbiAgICAgIHBhZ2VDb29yZHM6IHRoaXMuc3RhcnRDb29yZHMsXG4gICAgICBwcmVFbmQ6IHRydWUsXG4gICAgICBwaGFzZTogJ2luZXJ0aWFzdGFydCcsXG4gICAgfVxuXG4gICAgY29uc3QgdGhyb3duID0gKFxuICAgICAgKHRoaXMudDAgLSBpbnRlcmFjdGlvbi5jb29yZHMuY3VyLnRpbWVTdGFtcCkgPCA1MCAmJlxuICAgICAgcG9pbnRlclNwZWVkID4gb3B0aW9ucy5taW5TcGVlZCAmJlxuICAgICAgcG9pbnRlclNwZWVkID4gb3B0aW9ucy5lbmRTcGVlZFxuICAgIClcblxuICAgIGlmICh0aHJvd24pIHtcbiAgICAgIHRoaXMuc3RhcnRJbmVydGlhKClcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kaWZpY2F0aW9uLnJlc3VsdCA9IG1vZGlmaWNhdGlvbi5zZXRBbGwodGhpcy5tb2RpZmllckFyZylcblxuICAgICAgaWYgKCFtb2RpZmljYXRpb24ucmVzdWx0LmNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhcnRTbW9vdGhFbmQoKVxuICAgIH1cblxuICAgIC8vIGZvcmNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VcbiAgICBpbnRlcmFjdGlvbi5tb2RpZmljYXRpb24ucmVzdWx0LnJlY3QgPSBudWxsXG5cbiAgICAvLyBicmluZyBpbmVydGlhc3RhcnQgZXZlbnQgdG8gdGhlIHRhcmdldCBjb29yZHNcbiAgICBpbnRlcmFjdGlvbi5vZmZzZXRCeSh0aGlzLnRhcmdldE9mZnNldClcbiAgICBpbnRlcmFjdGlvbi5fZG9QaGFzZSh7XG4gICAgICBpbnRlcmFjdGlvbixcbiAgICAgIGV2ZW50LFxuICAgICAgcGhhc2U6ICdpbmVydGlhc3RhcnQnLFxuICAgIH0pXG4gICAgaW50ZXJhY3Rpb24ub2Zmc2V0QnkoeyB4OiAtdGhpcy50YXJnZXRPZmZzZXQueCwgeTogLXRoaXMudGFyZ2V0T2Zmc2V0LnkgfSlcbiAgICAvLyBmb3JjZSBtb2RpZmljYXRpb24gY2hhbmdlXG4gICAgaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uLnJlc3VsdC5yZWN0ID0gbnVsbFxuXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlXG4gICAgaW50ZXJhY3Rpb24uc2ltdWxhdGlvbiA9IHRoaXNcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBzdGFydEluZXJ0aWEgKCkge1xuICAgIGNvbnN0IHN0YXJ0VmVsb2NpdHkgPSB0aGlzLmludGVyYWN0aW9uLmNvb3Jkcy52ZWxvY2l0eS5jbGllbnRcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmludGVyYWN0aW9uKVxuICAgIGNvbnN0IGxhbWJkYSA9IG9wdGlvbnMucmVzaXN0YW5jZVxuICAgIGNvbnN0IGluZXJ0aWFEdXIgPSAtTWF0aC5sb2cob3B0aW9ucy5lbmRTcGVlZCAvIHRoaXMudjApIC8gbGFtYmRhXG5cbiAgICB0aGlzLnRhcmdldE9mZnNldCA9IHtcbiAgICAgIHg6IChzdGFydFZlbG9jaXR5LnggLSBpbmVydGlhRHVyKSAvIGxhbWJkYSxcbiAgICAgIHk6IChzdGFydFZlbG9jaXR5LnkgLSBpbmVydGlhRHVyKSAvIGxhbWJkYSxcbiAgICB9XG5cbiAgICB0aGlzLnRlID0gaW5lcnRpYUR1clxuICAgIHRoaXMubGFtYmRhX3YwID0gbGFtYmRhIC8gdGhpcy52MFxuICAgIHRoaXMub25lX3ZlX3YwID0gMSAtIG9wdGlvbnMuZW5kU3BlZWQgLyB0aGlzLnYwXG5cbiAgICBjb25zdCB7IG1vZGlmaWNhdGlvbiwgbW9kaWZpZXJBcmcgfSA9IHRoaXNcblxuICAgIG1vZGlmaWVyQXJnLnBhZ2VDb29yZHMgPSB7XG4gICAgICB4OiB0aGlzLnN0YXJ0Q29vcmRzLnggKyB0aGlzLnRhcmdldE9mZnNldC54LFxuICAgICAgeTogdGhpcy5zdGFydENvb3Jkcy55ICsgdGhpcy50YXJnZXRPZmZzZXQueSxcbiAgICB9XG5cbiAgICBtb2RpZmljYXRpb24ucmVzdWx0ID0gbW9kaWZpY2F0aW9uLnNldEFsbChtb2RpZmllckFyZylcblxuICAgIGlmIChtb2RpZmljYXRpb24ucmVzdWx0LmNoYW5nZWQpIHtcbiAgICAgIHRoaXMuaXNNb2RpZmllZCA9IHRydWVcbiAgICAgIHRoaXMubW9kaWZpZWRPZmZzZXQgPSB7XG4gICAgICAgIHg6IHRoaXMudGFyZ2V0T2Zmc2V0LnggKyBtb2RpZmljYXRpb24ucmVzdWx0LmRlbHRhLngsXG4gICAgICAgIHk6IHRoaXMudGFyZ2V0T2Zmc2V0LnkgKyBtb2RpZmljYXRpb24ucmVzdWx0LmRlbHRhLnksXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50aW1lb3V0ID0gcmFmLnJlcXVlc3QoKCkgPT4gdGhpcy5pbmVydGlhVGljaygpKVxuICB9XG5cbiAgc3RhcnRTbW9vdGhFbmQgKCkge1xuICAgIHRoaXMuc21vb3RoRW5kID0gdHJ1ZVxuICAgIHRoaXMuaXNNb2RpZmllZCA9IHRydWVcbiAgICB0aGlzLnRhcmdldE9mZnNldCA9IHtcbiAgICAgIHg6IHRoaXMubW9kaWZpY2F0aW9uLnJlc3VsdC5kZWx0YS54LFxuICAgICAgeTogdGhpcy5tb2RpZmljYXRpb24ucmVzdWx0LmRlbHRhLnksXG4gICAgfVxuXG4gICAgdGhpcy50aW1lb3V0ID0gcmFmLnJlcXVlc3QoKCkgPT4gdGhpcy5zbW9vdGhFbmRUaWNrKCkpXG4gIH1cblxuICBpbmVydGlhVGljayAoKSB7XG4gICAgY29uc3QgeyBpbnRlcmFjdGlvbiB9ID0gdGhpc1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRPcHRpb25zKGludGVyYWN0aW9uKVxuICAgIGNvbnN0IGxhbWJkYSA9IG9wdGlvbnMucmVzaXN0YW5jZVxuICAgIGNvbnN0IHQgPSAoaW50ZXJhY3Rpb24uX25vdygpIC0gdGhpcy50MCkgLyAxMDAwXG5cbiAgICBpZiAodCA8IHRoaXMudGUpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gIDEgLSAoTWF0aC5leHAoLWxhbWJkYSAqIHQpIC0gdGhpcy5sYW1iZGFfdjApIC8gdGhpcy5vbmVfdmVfdjBcbiAgICAgIGxldCBuZXdPZmZzZXQ6IEludGVyYWN0LlBvaW50XG5cbiAgICAgIGlmICh0aGlzLmlzTW9kaWZpZWQpIHtcbiAgICAgICAgbmV3T2Zmc2V0ID0gZ2V0UXVhZHJhdGljQ3VydmVQb2ludChcbiAgICAgICAgICAwLCAwLFxuICAgICAgICAgIHRoaXMudGFyZ2V0T2Zmc2V0LngsIHRoaXMudGFyZ2V0T2Zmc2V0LnksXG4gICAgICAgICAgdGhpcy5tb2RpZmllZE9mZnNldC54LCB0aGlzLm1vZGlmaWVkT2Zmc2V0LnksXG4gICAgICAgICAgcHJvZ3Jlc3MsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBuZXdPZmZzZXQgPSB7XG4gICAgICAgICAgeDogdGhpcy50YXJnZXRPZmZzZXQueCAqIHByb2dyZXNzLFxuICAgICAgICAgIHk6IHRoaXMudGFyZ2V0T2Zmc2V0LnkgKiBwcm9ncmVzcyxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWx0YSA9IHsgeDogbmV3T2Zmc2V0LnggLSB0aGlzLmN1cnJlbnRPZmZzZXQueCwgeTogbmV3T2Zmc2V0LnkgLSB0aGlzLmN1cnJlbnRPZmZzZXQueSB9XG5cbiAgICAgIHRoaXMuY3VycmVudE9mZnNldC54ICs9IGRlbHRhLnhcbiAgICAgIHRoaXMuY3VycmVudE9mZnNldC55ICs9IGRlbHRhLnlcblxuICAgICAgaW50ZXJhY3Rpb24ub2Zmc2V0QnkoZGVsdGEpXG4gICAgICBpbnRlcmFjdGlvbi5tb3ZlKClcblxuICAgICAgdGhpcy50aW1lb3V0ID0gcmFmLnJlcXVlc3QoKCkgPT4gdGhpcy5pbmVydGlhVGljaygpKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGludGVyYWN0aW9uLm9mZnNldEJ5KHtcbiAgICAgICAgeDogdGhpcy5tb2RpZmllZE9mZnNldC54IC0gdGhpcy5jdXJyZW50T2Zmc2V0LngsXG4gICAgICAgIHk6IHRoaXMubW9kaWZpZWRPZmZzZXQueSAtIHRoaXMuY3VycmVudE9mZnNldC55LFxuICAgICAgfSlcblxuICAgICAgdGhpcy5lbmQoKVxuICAgIH1cbiAgfVxuXG4gIHNtb290aEVuZFRpY2sgKCkge1xuICAgIGNvbnN0IHsgaW50ZXJhY3Rpb24gfSA9IHRoaXNcbiAgICBjb25zdCB0ID0gaW50ZXJhY3Rpb24uX25vdygpIC0gdGhpcy50MFxuICAgIGNvbnN0IHsgc21vb3RoRW5kRHVyYXRpb246IGR1cmF0aW9uIH0gPSBnZXRPcHRpb25zKGludGVyYWN0aW9uKVxuXG4gICAgaWYgKHQgPCBkdXJhdGlvbikge1xuICAgICAgY29uc3QgbmV3T2Zmc2V0ID0ge1xuICAgICAgICB4OiBlYXNlT3V0UXVhZCh0LCAwLCB0aGlzLnRhcmdldE9mZnNldC54LCBkdXJhdGlvbiksXG4gICAgICAgIHk6IGVhc2VPdXRRdWFkKHQsIDAsIHRoaXMudGFyZ2V0T2Zmc2V0LnksIGR1cmF0aW9uKSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbHRhID0ge1xuICAgICAgICB4OiBuZXdPZmZzZXQueCAtIHRoaXMuY3VycmVudE9mZnNldC54LFxuICAgICAgICB5OiBuZXdPZmZzZXQueSAtIHRoaXMuY3VycmVudE9mZnNldC55LFxuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRPZmZzZXQueCArPSBkZWx0YS54XG4gICAgICB0aGlzLmN1cnJlbnRPZmZzZXQueSArPSBkZWx0YS55XG5cbiAgICAgIGludGVyYWN0aW9uLm9mZnNldEJ5KGRlbHRhKVxuICAgICAgaW50ZXJhY3Rpb24ubW92ZSh7IHNraXBNb2RpZmllcnM6IHRoaXMubW9kaWZpZXJDb3VudCB9KVxuXG4gICAgICB0aGlzLnRpbWVvdXQgPSByYWYucmVxdWVzdCgoKSA9PiB0aGlzLnNtb290aEVuZFRpY2soKSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpbnRlcmFjdGlvbi5vZmZzZXRCeSh7XG4gICAgICAgIHg6IHRoaXMudGFyZ2V0T2Zmc2V0LnggLSB0aGlzLmN1cnJlbnRPZmZzZXQueCxcbiAgICAgICAgeTogdGhpcy50YXJnZXRPZmZzZXQueSAtIHRoaXMuY3VycmVudE9mZnNldC55LFxuICAgICAgfSlcblxuICAgICAgdGhpcy5lbmQoKVxuICAgIH1cbiAgfVxuXG4gIHJlc3VtZSAoeyBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQgfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOmRvd24nXSkge1xuICAgIGNvbnN0IHsgaW50ZXJhY3Rpb24gfSA9IHRoaXNcblxuICAgIC8vIHVuZG8gaW5lcnRpYSBjaGFuZ2VzIHRvIGludGVyYWN0aW9uIGNvb3Jkc1xuICAgIGludGVyYWN0aW9uLm9mZnNldEJ5KHtcbiAgICAgIHg6IC10aGlzLmN1cnJlbnRPZmZzZXQueCxcbiAgICAgIHk6IC10aGlzLmN1cnJlbnRPZmZzZXQueSxcbiAgICB9KVxuXG4gICAgLy8gdXBkYXRlIHBvaW50ZXIgYXQgcG9pbnRlciBkb3duIHBvc2l0aW9uXG4gICAgaW50ZXJhY3Rpb24udXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIHRydWUpXG5cbiAgICAvLyBmaXJlIHJlc3VtZSBzaWduYWxzIGFuZCBldmVudFxuICAgIGludGVyYWN0aW9uLl9kb1BoYXNlKHtcbiAgICAgIGludGVyYWN0aW9uLFxuICAgICAgZXZlbnQsXG4gICAgICBwaGFzZTogJ3Jlc3VtZScsXG4gICAgfSlcbiAgICBjb3B5Q29vcmRzKGludGVyYWN0aW9uLmNvb3Jkcy5wcmV2LCBpbnRlcmFjdGlvbi5jb29yZHMuY3VyKVxuXG4gICAgdGhpcy5zdG9wKClcbiAgfVxuXG4gIGVuZCAoKSB7XG4gICAgdGhpcy5pbnRlcmFjdGlvbi5tb3ZlKClcbiAgICB0aGlzLmludGVyYWN0aW9uLmVuZCgpXG4gICAgdGhpcy5zdG9wKClcbiAgfVxuXG4gIHN0b3AgKCkge1xuICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zbW9vdGhFbmQgPSBmYWxzZVxuICAgIHRoaXMuaW50ZXJhY3Rpb24uc2ltdWxhdGlvbiA9IG51bGxcbiAgICByYWYuY2FuY2VsKHRoaXMudGltZW91dClcbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydCAoeyBpbnRlcmFjdGlvbiwgZXZlbnQgfTogSW50ZXJhY3QuRG9QaGFzZUFyZzxJbnRlcmFjdC5BY3Rpb25OYW1lLCAnZW5kJz4pIHtcbiAgaWYgKCFpbnRlcmFjdGlvbi5faW50ZXJhY3RpbmcgfHwgaW50ZXJhY3Rpb24uc2ltdWxhdGlvbikge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBzdGFydGVkID0gaW50ZXJhY3Rpb24uaW5lcnRpYS5zdGFydChldmVudClcblxuICAvLyBwcmV2ZW50IGFjdGlvbiBlbmQgaWYgaW5lcnRpYSBvciBzbW9vdGhFbmRcbiAgcmV0dXJuIHN0YXJ0ZWQgPyBmYWxzZSA6IG51bGxcbn1cblxuLy8gQ2hlY2sgaWYgdGhlIGRvd24gZXZlbnQgaGl0cyB0aGUgY3VycmVudCBpbmVydGlhIHRhcmdldFxuLy8gY29udHJvbCBzaG91bGQgYmUgcmV0dXJuIHRvIHRoZSB1c2VyXG5mdW5jdGlvbiByZXN1bWUgKGFyZzogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOmRvd24nXSkge1xuICBjb25zdCB7IGludGVyYWN0aW9uLCBldmVudFRhcmdldCB9ID0gYXJnXG4gIGNvbnN0IHN0YXRlID0gaW50ZXJhY3Rpb24uaW5lcnRpYVxuXG4gIGlmICghc3RhdGUuYWN0aXZlKSB7IHJldHVybiB9XG5cbiAgbGV0IGVsZW1lbnQgPSBldmVudFRhcmdldCBhcyBOb2RlXG5cbiAgLy8gY2xpbWIgdXAgdGhlIERPTSB0cmVlIGZyb20gdGhlIGV2ZW50IHRhcmdldFxuICB3aGlsZSAoaXMuZWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIGlmIGludGVyYWN0aW9uIGVsZW1lbnQgaXMgdGhlIGN1cnJlbnQgaW5lcnRpYSB0YXJnZXQgZWxlbWVudFxuICAgIGlmIChlbGVtZW50ID09PSBpbnRlcmFjdGlvbi5lbGVtZW50KSB7XG4gICAgICBzdGF0ZS5yZXN1bWUoYXJnKVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gZG9tLnBhcmVudE5vZGUoZWxlbWVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9wICh7IGludGVyYWN0aW9uIH06IHsgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uIH0pIHtcbiAgY29uc3Qgc3RhdGUgPSBpbnRlcmFjdGlvbi5pbmVydGlhXG5cbiAgaWYgKHN0YXRlLmFjdGl2ZSkge1xuICAgIHN0YXRlLnN0b3AoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnMgKHsgaW50ZXJhY3RhYmxlLCBwcmVwYXJlZCB9OiBJbnRlcmFjdC5JbnRlcmFjdGlvbikge1xuICByZXR1cm4gaW50ZXJhY3RhYmxlICYmXG4gICAgaW50ZXJhY3RhYmxlLm9wdGlvbnMgJiZcbiAgICBwcmVwYXJlZC5uYW1lICYmXG4gICAgaW50ZXJhY3RhYmxlLm9wdGlvbnNbcHJlcGFyZWQubmFtZV0uaW5lcnRpYVxufVxuXG5jb25zdCBpbmVydGlhOiBJbnRlcmFjdC5QbHVnaW4gPSB7XG4gIGlkOiAnaW5lcnRpYScsXG4gIGJlZm9yZTogWydtb2RpZmllcnMvYmFzZSddLFxuICBpbnN0YWxsLFxuICBsaXN0ZW5lcnM6IHtcbiAgICAnaW50ZXJhY3Rpb25zOm5ldyc6ICh7IGludGVyYWN0aW9uIH0pID0+IHtcbiAgICAgIGludGVyYWN0aW9uLmluZXJ0aWEgPSBuZXcgSW5lcnRpYVN0YXRlKGludGVyYWN0aW9uKVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tZW5kJzogc3RhcnQsXG4gICAgJ2ludGVyYWN0aW9uczpkb3duJzogcmVzdW1lLFxuICAgICdpbnRlcmFjdGlvbnM6c3RvcCc6IHN0b3AsXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24tcmVzdW1lJzogYXJnID0+IHtcbiAgICAgIGNvbnN0IHsgbW9kaWZpY2F0aW9uIH0gPSBhcmcuaW50ZXJhY3Rpb25cblxuICAgICAgbW9kaWZpY2F0aW9uLnN0b3AoYXJnKVxuICAgICAgbW9kaWZpY2F0aW9uLnN0YXJ0KGFyZywgYXJnLmludGVyYWN0aW9uLmNvb3Jkcy5jdXIucGFnZSlcbiAgICAgIG1vZGlmaWNhdGlvbi5hcHBseVRvSW50ZXJhY3Rpb24oYXJnKVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3Rpb25zOmJlZm9yZS1hY3Rpb24taW5lcnRpYXN0YXJ0JzogYXJnID0+IGFyZy5pbnRlcmFjdGlvbi5tb2RpZmljYXRpb24uc2V0QW5kQXBwbHkoYXJnKSxcbiAgICAnaW50ZXJhY3Rpb25zOmFjdGlvbi1yZXN1bWUnOiBtb2RpZmllcnMuYWRkRXZlbnRNb2RpZmllcnMsXG4gICAgJ2ludGVyYWN0aW9uczphY3Rpb24taW5lcnRpYXN0YXJ0JzogbW9kaWZpZXJzLmFkZEV2ZW50TW9kaWZpZXJzLFxuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLWluZXJ0aWFzdGFydCc6IGFyZyA9PiBhcmcuaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uLnJlc3RvcmVJbnRlcmFjdGlvbkNvb3JkcyhhcmcpLFxuICAgICdpbnRlcmFjdGlvbnM6YWZ0ZXItYWN0aW9uLXJlc3VtZSc6IGFyZyA9PiBhcmcuaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uLnJlc3RvcmVJbnRlcmFjdGlvbkNvb3JkcyhhcmcpLFxuICB9LFxufVxuXG4vLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81NjM0NTI4LzIyODA4ODhcbmZ1bmN0aW9uIF9nZXRRQmV6aWVyVmFsdWUgKHQ6IG51bWJlciwgcDE6IG51bWJlciwgcDI6IG51bWJlciwgcDM6IG51bWJlcikge1xuICBjb25zdCBpVCA9IDEgLSB0XG4gIHJldHVybiBpVCAqIGlUICogcDEgKyAyICogaVQgKiB0ICogcDIgKyB0ICogdCAqIHAzXG59XG5cbmZ1bmN0aW9uIGdldFF1YWRyYXRpY0N1cnZlUG9pbnQgKFxuICBzdGFydFg6IG51bWJlciwgc3RhcnRZOiBudW1iZXIsIGNwWDogbnVtYmVyLCBjcFk6IG51bWJlciwgZW5kWDogbnVtYmVyLCBlbmRZOiBudW1iZXIsIHBvc2l0aW9uOiBudW1iZXIpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiAgX2dldFFCZXppZXJWYWx1ZShwb3NpdGlvbiwgc3RhcnRYLCBjcFgsIGVuZFgpLFxuICAgIHk6ICBfZ2V0UUJlemllclZhbHVlKHBvc2l0aW9uLCBzdGFydFksIGNwWSwgZW5kWSksXG4gIH1cbn1cblxuLy8gaHR0cDovL2dpem1hLmNvbS9lYXNpbmcvXG5mdW5jdGlvbiBlYXNlT3V0UXVhZCAodDogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlciwgZDogbnVtYmVyKSB7XG4gIHQgLz0gZFxuICByZXR1cm4gLWMgKiB0ICogKHQgLSAyKSArIGJcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW5lcnRpYVxuIiwiaW1wb3J0ICdAaW50ZXJhY3Rqcy90eXBlcy9pbmRleCdcbmltcG9ydCBTY29wZSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJ1xuXG5jb25zdCBzY29wZSA9IG5ldyBTY29wZSgpXG5cbmNvbnN0IGludGVyYWN0ID0gc2NvcGUuaW50ZXJhY3RTdGF0aWNcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJhY3RcblxuZXhwb3J0IGNvbnN0IGluaXQgPSAod2luOiBXaW5kb3cpID0+IHNjb3BlLmluaXQod2luKVxuXG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcgJiYgISF3aW5kb3cpIHtcbiAgaW5pdCh3aW5kb3cpXG59XG4iLCJleHBvcnQgZGVmYXVsdCB7fVxuIiwiZXhwb3J0IGRlZmF1bHQge31cbiIsImV4cG9ydCB0eXBlIEdyaWRPcHRpb25zID0gKFBhcnRpYWw8SW50ZXJhY3QuUmVjdD4gfCBJbnRlcmFjdC5Qb2ludCkgJiB7XG4gIHJhbmdlPzogbnVtYmVyXG4gIGxpbWl0cz86IEludGVyYWN0LlJlY3RcbiAgb2Zmc2V0PzogSW50ZXJhY3QuUG9pbnRcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGdyaWQ6IEdyaWRPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGNvb3JkRmllbGRzID0gKFtcbiAgICBbJ3gnLCAneSddLFxuICAgIFsnbGVmdCcsICd0b3AnXSxcbiAgICBbJ3JpZ2h0JywgJ2JvdHRvbSddLFxuICAgIFsnd2lkdGgnLCAnaGVpZ2h0J10sXG4gIF0gYXMgY29uc3QpLmZpbHRlcigoW3hGaWVsZCwgeUZpZWxkXSkgPT4geEZpZWxkIGluIGdyaWQgfHwgeUZpZWxkIGluIGdyaWQpXG5cbiAgY29uc3QgZ3JpZEZ1bmM6IEludGVyYWN0LlNuYXBGdW5jdGlvbiAmIHtcbiAgICBncmlkOiB0eXBlb2YgZ3JpZFxuICAgIGNvb3JkRmllbGRzOiB0eXBlb2YgY29vcmRGaWVsZHNcbiAgfSA9ICh4LCB5KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcmFuZ2UsXG4gICAgICBsaW1pdHMgPSB7XG4gICAgICAgIGxlZnQgIDogLUluZmluaXR5LFxuICAgICAgICByaWdodCA6ICBJbmZpbml0eSxcbiAgICAgICAgdG9wICAgOiAtSW5maW5pdHksXG4gICAgICAgIGJvdHRvbTogIEluZmluaXR5LFxuICAgICAgfSxcbiAgICAgIG9mZnNldCA9IHsgeDogMCwgeTogMCB9LFxuICAgIH0gPSBncmlkXG5cbiAgICBjb25zdCByZXN1bHQ6IEludGVyYWN0LlNuYXBUYXJnZXQgJiB7XG4gICAgICBncmlkOiB0eXBlb2YgZ3JpZFxuICAgIH0gPSB7IHJhbmdlLCBncmlkLCB4OiBudWxsIGFzIG51bWJlciwgeTogbnVsbCBhcyBudW1iZXIgfVxuXG4gICAgZm9yIChjb25zdCBbeEZpZWxkLCB5RmllbGRdIG9mIGNvb3JkRmllbGRzKSB7XG4gICAgICBjb25zdCBncmlkeCA9IE1hdGgucm91bmQoKHggLSBvZmZzZXQueCkgLyAoZ3JpZCBhcyBhbnkpW3hGaWVsZF0pXG4gICAgICBjb25zdCBncmlkeSA9IE1hdGgucm91bmQoKHkgLSBvZmZzZXQueSkgLyAoZ3JpZCBhcyBhbnkpW3lGaWVsZF0pXG5cbiAgICAgIHJlc3VsdFt4RmllbGRdID0gTWF0aC5tYXgobGltaXRzLmxlZnQsIE1hdGgubWluKGxpbWl0cy5yaWdodCwgZ3JpZHggKiAoZ3JpZCBhcyBhbnkpW3hGaWVsZF0gKyBvZmZzZXQueCkpXG4gICAgICByZXN1bHRbeUZpZWxkXSA9IE1hdGgubWF4KGxpbWl0cy50b3AsIE1hdGgubWluKGxpbWl0cy5ib3R0b20sIGdyaWR5ICogKGdyaWQgYXMgYW55KVt5RmllbGRdICsgb2Zmc2V0LnkpKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdyaWRGdW5jLmdyaWQgPSBncmlkXG4gIGdyaWRGdW5jLmNvb3JkRmllbGRzID0gY29vcmRGaWVsZHNcblxuICByZXR1cm4gZ3JpZEZ1bmNcbn1cbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgZWRnZVRhcmdldCB9IGZyb20gJy4vZWRnZVRhcmdldCdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnRzJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBncmlkIH0gZnJvbSAnLi9ncmlkJ1xuIiwiaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgKiBhcyBhbGxTbmFwcGVycyBmcm9tICcuL2FsbCdcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RTdGF0aWMnIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0U3RhdGljIHtcbiAgICBzbmFwcGVyczogdHlwZW9mIGFsbFNuYXBwZXJzXG4gICAgY3JlYXRlU25hcEdyaWQ6IHR5cGVvZiBhbGxTbmFwcGVycy5ncmlkXG4gIH1cbn1cblxuY29uc3Qgc25hcHBlcnNQbHVnaW46IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdzbmFwcGVycycsXG4gIGluc3RhbGwgKHNjb3BlKSB7XG4gICAgY29uc3QgeyBpbnRlcmFjdFN0YXRpYzogaW50ZXJhY3QgfSA9IHNjb3BlXG5cbiAgICBpbnRlcmFjdC5zbmFwcGVycyA9IGV4dGVuZChpbnRlcmFjdC5zbmFwcGVycyB8fCB7fSwgYWxsU25hcHBlcnMpXG4gICAgaW50ZXJhY3QuY3JlYXRlU25hcEdyaWQgPSBpbnRlcmFjdC5zbmFwcGVycy5ncmlkXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNuYXBwZXJzUGx1Z2luXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vKipcbiAqIEBtb2R1bGUgbW9kaWZpZXJzL2FzcGVjdFJhdGlvXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIG1vZHVsZSBmb3JjZXMgZWxlbWVudHMgdG8gYmUgcmVzaXplZCB3aXRoIGEgc3BlY2lmaWVkIGR4L2R5IHJhdGlvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbnRlcmFjdCh0YXJnZXQpLnJlc2l6YWJsZSh7XG4gKiAgIG1vZGlmaWVyczogW1xuICogICAgIGludGVyYWN0Lm1vZGlmaWVycy5zbmFwU2l6ZSh7XG4gKiAgICAgICB0YXJnZXRzOiBbIGludGVyYWN0LmNyZWF0ZVNuYXBHcmlkKHsgeDogMjAsIHk6IDIwIH0pIF0sXG4gKiAgICAgfSksXG4gKiAgICAgaW50ZXJhY3QuYXNwZWN0UmF0aW8oeyByYXRpbzogJ3ByZXNlcnZlJyB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICovXG5cbmltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0IHsgYWRkRWRnZXMgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9yZWN0J1xuaW1wb3J0IHsgTW9kaWZpZXIsIE1vZGlmaWVyTW9kdWxlLCBNb2RpZmllclN0YXRlIH0gZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IE1vZGlmaWNhdGlvbiBmcm9tICcuL01vZGlmaWNhdGlvbidcbmltcG9ydCB7IG1ha2VNb2RpZmllciB9IGZyb20gJy4vYmFzZSdcblxuZXhwb3J0IGludGVyZmFjZSBBc3BlY3RSYXRpb09wdGlvbnMge1xuICByYXRpbz86IG51bWJlciB8ICdwcmVzZXJ2ZSdcbiAgZXF1YWxEZWx0YT86IGJvb2xlYW5cbiAgbW9kaWZpZXJzPzogTW9kaWZpZXJbXVxuICBlbmFibGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBBc3BlY3RSYXRpb1N0YXRlID0gTW9kaWZpZXJTdGF0ZTxBc3BlY3RSYXRpb09wdGlvbnMsIHtcbiAgc3RhcnRDb29yZHM6IEludGVyYWN0LlBvaW50XG4gIHN0YXJ0UmVjdDogSW50ZXJhY3QuUmVjdFxuICBsaW5rZWRFZGdlczogSW50ZXJhY3QuRWRnZU9wdGlvbnNcbiAgcmF0aW86IG51bWJlclxuICBlcXVhbERlbHRhOiBib29sZWFuXG4gIHhJc1ByaW1hcnlBeGlzOiBib29sZWFuXG4gIGVkZ2VTaWduOiAxIHwgLTFcbiAgc3ViTW9kaWZpY2F0aW9uOiBNb2RpZmljYXRpb25cbn0+XG5cbmNvbnN0IGFzcGVjdFJhdGlvOiBNb2RpZmllck1vZHVsZTxBc3BlY3RSYXRpb09wdGlvbnMsIEFzcGVjdFJhdGlvU3RhdGU+ID0ge1xuICBzdGFydCAoYXJnKSB7XG4gICAgY29uc3QgeyBzdGF0ZSwgcmVjdCwgZWRnZXM6IG9yaWdpbmFsRWRnZXMsIHBhZ2VDb29yZHM6IGNvb3JkcyB9ID0gYXJnXG4gICAgbGV0IHsgcmF0aW8gfSA9IHN0YXRlLm9wdGlvbnNcbiAgICBjb25zdCB7IGVxdWFsRGVsdGEsIG1vZGlmaWVycyB9ID0gc3RhdGUub3B0aW9uc1xuXG4gICAgaWYgKHJhdGlvID09PSAncHJlc2VydmUnKSB7XG4gICAgICByYXRpbyA9IHJlY3Qud2lkdGggLyByZWN0LmhlaWdodFxuICAgIH1cblxuICAgIHN0YXRlLnN0YXJ0Q29vcmRzID0gZXh0ZW5kKHt9LCBjb29yZHMpXG4gICAgc3RhdGUuc3RhcnRSZWN0ID0gZXh0ZW5kKHt9LCByZWN0KVxuICAgIHN0YXRlLnJhdGlvID0gcmF0aW9cbiAgICBzdGF0ZS5lcXVhbERlbHRhID0gZXF1YWxEZWx0YVxuXG4gICAgY29uc3QgbGlua2VkRWRnZXMgPSBzdGF0ZS5saW5rZWRFZGdlcyA9IHtcbiAgICAgIHRvcCAgIDogb3JpZ2luYWxFZGdlcy50b3AgICAgfHwgKG9yaWdpbmFsRWRnZXMubGVmdCAgICYmICFvcmlnaW5hbEVkZ2VzLmJvdHRvbSksXG4gICAgICBsZWZ0ICA6IG9yaWdpbmFsRWRnZXMubGVmdCAgIHx8IChvcmlnaW5hbEVkZ2VzLnRvcCAgICAmJiAhb3JpZ2luYWxFZGdlcy5yaWdodCksXG4gICAgICBib3R0b206IG9yaWdpbmFsRWRnZXMuYm90dG9tIHx8IChvcmlnaW5hbEVkZ2VzLnJpZ2h0ICAmJiAhb3JpZ2luYWxFZGdlcy50b3ApLFxuICAgICAgcmlnaHQgOiBvcmlnaW5hbEVkZ2VzLnJpZ2h0ICB8fCAob3JpZ2luYWxFZGdlcy5ib3R0b20gJiYgIW9yaWdpbmFsRWRnZXMubGVmdCksXG4gICAgfVxuXG4gICAgc3RhdGUueElzUHJpbWFyeUF4aXMgPSAhIShvcmlnaW5hbEVkZ2VzLmxlZnQgfHwgb3JpZ2luYWxFZGdlcy5yaWdodClcblxuICAgIGlmIChzdGF0ZS5lcXVhbERlbHRhKSB7XG4gICAgICBzdGF0ZS5lZGdlU2lnbiA9IChsaW5rZWRFZGdlcy5sZWZ0ID8gMSA6IC0xKSAqIChsaW5rZWRFZGdlcy50b3AgPyAxIDogLTEpIGFzIDEgfCAtMVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kYXJ5RWRnZSA9IHN0YXRlLnhJc1ByaW1hcnlBeGlzID8gbGlua2VkRWRnZXMudG9wIDogbGlua2VkRWRnZXMubGVmdFxuICAgICAgc3RhdGUuZWRnZVNpZ24gPSBuZWdhdGl2ZVNlY29uZGFyeUVkZ2UgPyAtMSA6IDFcbiAgICB9XG5cbiAgICBleHRlbmQoYXJnLmVkZ2VzLCBsaW5rZWRFZGdlcylcblxuICAgIGlmICghbW9kaWZpZXJzIHx8ICFtb2RpZmllcnMubGVuZ3RoKSB7IHJldHVybiB9XG5cbiAgICBjb25zdCBzdWJNb2RpZmljYXRpb24gPSBuZXcgTW9kaWZpY2F0aW9uKGFyZy5pbnRlcmFjdGlvbilcblxuICAgIHN1Yk1vZGlmaWNhdGlvbi5jb3B5RnJvbShhcmcuaW50ZXJhY3Rpb24ubW9kaWZpY2F0aW9uKVxuICAgIHN1Yk1vZGlmaWNhdGlvbi5wcmVwYXJlU3RhdGVzKG1vZGlmaWVycylcblxuICAgIHN0YXRlLnN1Yk1vZGlmaWNhdGlvbiA9IHN1Yk1vZGlmaWNhdGlvblxuICAgIHN1Yk1vZGlmaWNhdGlvbi5zdGFydEFsbCh7IC4uLmFyZyB9KVxuICB9LFxuXG4gIHNldCAoYXJnKSB7XG4gICAgY29uc3QgeyBzdGF0ZSwgcmVjdCwgY29vcmRzIH0gPSBhcmdcbiAgICBjb25zdCBpbml0aWFsQ29vcmRzID0gZXh0ZW5kKHt9LCBjb29yZHMpXG4gICAgY29uc3QgYXNwZWN0TWV0aG9kID0gc3RhdGUuZXF1YWxEZWx0YSA/IHNldEVxdWFsRGVsdGEgOiBzZXRSYXRpb1xuXG4gICAgYXNwZWN0TWV0aG9kKHN0YXRlLCBzdGF0ZS54SXNQcmltYXJ5QXhpcywgY29vcmRzLCByZWN0KVxuXG4gICAgaWYgKCFzdGF0ZS5zdWJNb2RpZmljYXRpb24pIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgY29uc3QgY29ycmVjdGVkUmVjdCA9IGV4dGVuZCh7fSwgcmVjdClcblxuICAgIGFkZEVkZ2VzKHN0YXRlLmxpbmtlZEVkZ2VzLCBjb3JyZWN0ZWRSZWN0LCB7IHg6IGNvb3Jkcy54IC0gaW5pdGlhbENvb3Jkcy54LCB5OiBjb29yZHMueSAtIGluaXRpYWxDb29yZHMueSB9KVxuXG4gICAgY29uc3QgcmVzdWx0ID0gc3RhdGUuc3ViTW9kaWZpY2F0aW9uLnNldEFsbCh7XG4gICAgICAuLi5hcmcsXG4gICAgICByZWN0OiBjb3JyZWN0ZWRSZWN0LFxuICAgICAgZWRnZXM6IHN0YXRlLmxpbmtlZEVkZ2VzLFxuICAgICAgcGFnZUNvb3JkczogY29vcmRzLFxuICAgICAgcHJldkNvb3JkczogY29vcmRzLFxuICAgICAgcHJldlJlY3Q6IGNvcnJlY3RlZFJlY3QsXG4gICAgfSlcblxuICAgIGNvbnN0IHsgZGVsdGEgfSA9IHJlc3VsdFxuXG4gICAgaWYgKHJlc3VsdC5jaGFuZ2VkKSB7XG4gICAgICBjb25zdCB4SXNDcml0aWNhbEF4aXMgPSBNYXRoLmFicyhkZWx0YS54KSA+IE1hdGguYWJzKGRlbHRhLnkpXG5cbiAgICAgIC8vIGRvIGFzcGVjdCBtb2RpZmljYXRpb24gYWdhaW4gd2l0aCBjcml0aWNhbCBlZGdlIGF4aXMgYXMgcHJpbWFyeVxuICAgICAgYXNwZWN0TWV0aG9kKHN0YXRlLCB4SXNDcml0aWNhbEF4aXMsIHJlc3VsdC5jb29yZHMsIHJlc3VsdC5yZWN0KVxuICAgICAgZXh0ZW5kKGNvb3JkcywgcmVzdWx0LmNvb3JkcylcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmV2ZW50UHJvcHNcbiAgfSxcblxuICBkZWZhdWx0czoge1xuICAgIHJhdGlvOiAncHJlc2VydmUnLFxuICAgIGVxdWFsRGVsdGE6IGZhbHNlLFxuICAgIG1vZGlmaWVyczogW10sXG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH0sXG59XG5cbmZ1bmN0aW9uIHNldEVxdWFsRGVsdGEgKHsgc3RhcnRDb29yZHMsIGVkZ2VTaWduIH06IEFzcGVjdFJhdGlvU3RhdGUsIHhJc1ByaW1hcnlBeGlzOiBib29sZWFuLCBjb29yZHM6IEludGVyYWN0LlBvaW50KSB7XG4gIGlmICh4SXNQcmltYXJ5QXhpcykge1xuICAgIGNvb3Jkcy55ID0gc3RhcnRDb29yZHMueSArIChjb29yZHMueCAtIHN0YXJ0Q29vcmRzLngpICogZWRnZVNpZ25cbiAgfVxuICBlbHNlIHtcbiAgICBjb29yZHMueCA9IHN0YXJ0Q29vcmRzLnggKyAoY29vcmRzLnkgLSBzdGFydENvb3Jkcy55KSAqIGVkZ2VTaWduXG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmF0aW8gKHsgc3RhcnRSZWN0LCBzdGFydENvb3JkcywgcmF0aW8sIGVkZ2VTaWduIH06IEFzcGVjdFJhdGlvU3RhdGUsIHhJc1ByaW1hcnlBeGlzOiBib29sZWFuLCBjb29yZHM6IEludGVyYWN0LlBvaW50LCByZWN0OiBJbnRlcmFjdC5SZWN0KSB7XG4gIGlmICh4SXNQcmltYXJ5QXhpcykge1xuICAgIGNvbnN0IG5ld0hlaWdodCA9IHJlY3Qud2lkdGggLyByYXRpb1xuXG4gICAgY29vcmRzLnkgPSBzdGFydENvb3Jkcy55ICsgKG5ld0hlaWdodCAtIHN0YXJ0UmVjdC5oZWlnaHQpICogZWRnZVNpZ25cbiAgfVxuICBlbHNlIHtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHJlY3QuaGVpZ2h0ICogcmF0aW9cblxuICAgIGNvb3Jkcy54ID0gc3RhcnRDb29yZHMueCArIChuZXdXaWR0aCAtIHN0YXJ0UmVjdC53aWR0aCkgKiBlZGdlU2lnblxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ha2VNb2RpZmllcihhc3BlY3RSYXRpbywgJ2FzcGVjdFJhdGlvJylcbmV4cG9ydCB7IGFzcGVjdFJhdGlvIH1cbiIsImltcG9ydCB7IE1vZGlmaWVyRnVuY3Rpb24gfSBmcm9tICcuL2Jhc2UnXG5cbmNvbnN0IGF2b2lkID0gKCgpID0+IHtcbn0pIGFzIHVua25vd24gYXMgTW9kaWZpZXJGdW5jdGlvbjxhbnksIGFueSwgJ2F2b2lkJz5cblxuYXZvaWQuX2RlZmF1bHRzID0ge31cblxuZXhwb3J0IGRlZmF1bHQgYXZvaWRcbiIsImltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgaXMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaXMnXG5pbXBvcnQgKiBhcyByZWN0VXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcmVjdCdcbmltcG9ydCB7IG1ha2VNb2RpZmllciwgTW9kaWZpZXJBcmcsIE1vZGlmaWVyTW9kdWxlLCBNb2RpZmllclN0YXRlIH0gZnJvbSAnLi4vYmFzZSdcblxuZXhwb3J0IGludGVyZmFjZSBSZXN0cmljdE9wdGlvbnMge1xuICAvLyB3aGVyZSB0byBkcmFnIG92ZXJcbiAgcmVzdHJpY3Rpb246IEludGVyYWN0LlJlY3RSZXNvbHZhYmxlPFtudW1iZXIsIG51bWJlciwgSW50ZXJhY3QuSW50ZXJhY3Rpb25dPlxuICAvLyB3aGF0IHBhcnQgb2Ygc2VsZiBpcyBhbGxvd2VkIHRvIGRyYWcgb3ZlclxuICBlbGVtZW50UmVjdDogSW50ZXJhY3QuUmVjdFxuICBvZmZzZXQ6IEludGVyYWN0LlJlY3RcbiAgLy8gcmVzdHJpY3QganVzdCBiZWZvcmUgdGhlIGVuZCBkcmFnXG4gIGVuZE9ubHk6IGJvb2xlYW5cbiAgZW5hYmxlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUmVzdHJpY3RTdGF0ZSA9IE1vZGlmaWVyU3RhdGU8UmVzdHJpY3RPcHRpb25zLCB7XG4gIG9mZnNldDogSW50ZXJhY3QuUmVjdFxufT5cblxuZnVuY3Rpb24gc3RhcnQgKHsgcmVjdCwgc3RhcnRPZmZzZXQsIHN0YXRlLCBpbnRlcmFjdGlvbiwgcGFnZUNvb3JkcyB9OiBNb2RpZmllckFyZzxSZXN0cmljdFN0YXRlPikge1xuICBjb25zdCB7IG9wdGlvbnMgfSA9IHN0YXRlXG4gIGNvbnN0IHsgZWxlbWVudFJlY3QgfSA9IG9wdGlvbnNcbiAgY29uc3Qgb2Zmc2V0OiBJbnRlcmFjdC5SZWN0ID0gZXh0ZW5kKHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gIH0sIG9wdGlvbnMub2Zmc2V0IHx8IHt9KVxuXG4gIGlmIChyZWN0ICYmIGVsZW1lbnRSZWN0KSB7XG4gICAgY29uc3QgcmVzdHJpY3Rpb24gPSBnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5yZXN0cmljdGlvbiwgaW50ZXJhY3Rpb24sIHBhZ2VDb29yZHMpXG5cbiAgICBpZiAocmVzdHJpY3Rpb24pIHtcbiAgICAgIGNvbnN0IHdpZHRoRGlmZiA9IChyZXN0cmljdGlvbi5yaWdodCAtIHJlc3RyaWN0aW9uLmxlZnQpIC0gcmVjdC53aWR0aFxuICAgICAgY29uc3QgaGVpZ2h0RGlmZiA9IChyZXN0cmljdGlvbi5ib3R0b20gLSByZXN0cmljdGlvbi50b3ApIC0gcmVjdC5oZWlnaHRcblxuICAgICAgaWYgKHdpZHRoRGlmZiA8IDApIHtcbiAgICAgICAgb2Zmc2V0LmxlZnQgKz0gd2lkdGhEaWZmXG4gICAgICAgIG9mZnNldC5yaWdodCArPSB3aWR0aERpZmZcbiAgICAgIH1cbiAgICAgIGlmIChoZWlnaHREaWZmIDwgMCkge1xuICAgICAgICBvZmZzZXQudG9wICs9IGhlaWdodERpZmZcbiAgICAgICAgb2Zmc2V0LmJvdHRvbSArPSBoZWlnaHREaWZmXG4gICAgICB9XG4gICAgfVxuXG4gICAgb2Zmc2V0LmxlZnQgKz0gc3RhcnRPZmZzZXQubGVmdCAtIChyZWN0LndpZHRoICAqIGVsZW1lbnRSZWN0LmxlZnQpXG4gICAgb2Zmc2V0LnRvcCAgKz0gc3RhcnRPZmZzZXQudG9wICAtIChyZWN0LmhlaWdodCAqIGVsZW1lbnRSZWN0LnRvcClcblxuICAgIG9mZnNldC5yaWdodCAgKz0gc3RhcnRPZmZzZXQucmlnaHQgIC0gKHJlY3Qud2lkdGggICogKDEgLSBlbGVtZW50UmVjdC5yaWdodCkpXG4gICAgb2Zmc2V0LmJvdHRvbSArPSBzdGFydE9mZnNldC5ib3R0b20gLSAocmVjdC5oZWlnaHQgKiAoMSAtIGVsZW1lbnRSZWN0LmJvdHRvbSkpXG4gIH1cblxuICBzdGF0ZS5vZmZzZXQgPSBvZmZzZXRcbn1cblxuZnVuY3Rpb24gc2V0ICh7IGNvb3JkcywgaW50ZXJhY3Rpb24sIHN0YXRlIH06IE1vZGlmaWVyQXJnPFJlc3RyaWN0U3RhdGU+KSB7XG4gIGNvbnN0IHsgb3B0aW9ucywgb2Zmc2V0IH0gPSBzdGF0ZVxuXG4gIGNvbnN0IHJlc3RyaWN0aW9uID0gZ2V0UmVzdHJpY3Rpb25SZWN0KG9wdGlvbnMucmVzdHJpY3Rpb24sIGludGVyYWN0aW9uLCBjb29yZHMpXG5cbiAgaWYgKCFyZXN0cmljdGlvbikgeyByZXR1cm4gfVxuXG4gIGNvbnN0IHJlY3QgPSByZWN0VXRpbHMueHl3aFRvVGxicihyZXN0cmljdGlvbilcblxuICBjb29yZHMueCA9IE1hdGgubWF4KE1hdGgubWluKHJlY3QucmlnaHQgIC0gb2Zmc2V0LnJpZ2h0LCBjb29yZHMueCksIHJlY3QubGVmdCArIG9mZnNldC5sZWZ0KVxuICBjb29yZHMueSA9IE1hdGgubWF4KE1hdGgubWluKHJlY3QuYm90dG9tIC0gb2Zmc2V0LmJvdHRvbSwgY29vcmRzLnkpLCByZWN0LnRvcCAgKyBvZmZzZXQudG9wKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzdHJpY3Rpb25SZWN0IChcbiAgdmFsdWU6IEludGVyYWN0LlJlY3RSZXNvbHZhYmxlPFtudW1iZXIsIG51bWJlciwgSW50ZXJhY3QuSW50ZXJhY3Rpb25dPixcbiAgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uLFxuICBjb29yZHM/OiBJbnRlcmFjdC5Qb2ludCxcbikge1xuICBpZiAoaXMuZnVuYyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gcmVjdFV0aWxzLnJlc29sdmVSZWN0TGlrZSh2YWx1ZSwgaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlLCBpbnRlcmFjdGlvbi5lbGVtZW50LCBbY29vcmRzLngsIGNvb3Jkcy55LCBpbnRlcmFjdGlvbl0pXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlY3RVdGlscy5yZXNvbHZlUmVjdExpa2UodmFsdWUsIGludGVyYWN0aW9uLmludGVyYWN0YWJsZSwgaW50ZXJhY3Rpb24uZWxlbWVudClcbiAgfVxufVxuXG5jb25zdCBkZWZhdWx0czogUmVzdHJpY3RPcHRpb25zID0ge1xuICByZXN0cmljdGlvbjogbnVsbCxcbiAgZWxlbWVudFJlY3Q6IG51bGwsXG4gIG9mZnNldDogbnVsbCxcbiAgZW5kT25seTogZmFsc2UsXG4gIGVuYWJsZWQ6IGZhbHNlLFxufVxuXG5jb25zdCByZXN0cmljdDogTW9kaWZpZXJNb2R1bGU8UmVzdHJpY3RPcHRpb25zLCBSZXN0cmljdFN0YXRlPiA9IHtcbiAgc3RhcnQsXG4gIHNldCxcbiAgZGVmYXVsdHMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ha2VNb2RpZmllcihyZXN0cmljdCwgJ3Jlc3RyaWN0JylcbmV4cG9ydCB7IHJlc3RyaWN0IH1cbiIsIi8vIFRoaXMgbW9kdWxlIGFkZHMgdGhlIG9wdGlvbnMucmVzaXplLnJlc3RyaWN0RWRnZXMgc2V0dGluZyB3aGljaCBzZXRzIG1pbiBhbmRcbi8vIG1heCBmb3IgdGhlIHRvcCwgbGVmdCwgYm90dG9tIGFuZCByaWdodCBlZGdlcyBvZiB0aGUgdGFyZ2V0IGJlaW5nIHJlc2l6ZWQuXG4vL1xuLy8gaW50ZXJhY3QodGFyZ2V0KS5yZXNpemUoe1xuLy8gICBlZGdlczogeyB0b3A6IHRydWUsIGxlZnQ6IHRydWUgfSxcbi8vICAgcmVzdHJpY3RFZGdlczoge1xuLy8gICAgIGlubmVyOiB7IHRvcDogMjAwLCBsZWZ0OiAyMDAsIHJpZ2h0OiA0MDAsIGJvdHRvbTogNDAwIH0sXG4vLyAgICAgb3V0ZXI6IHsgdG9wOiAgIDAsIGxlZnQ6ICAgMCwgcmlnaHQ6IDYwMCwgYm90dG9tOiA2MDAgfSxcbi8vICAgfSxcbi8vIH0pXG5cbmltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgcmVjdFV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3JlY3QnXG5pbXBvcnQgeyBtYWtlTW9kaWZpZXIsIE1vZGlmaWVyQXJnLCBNb2RpZmllclN0YXRlIH0gZnJvbSAnLi4vYmFzZSdcbmltcG9ydCB7IGdldFJlc3RyaWN0aW9uUmVjdCwgUmVzdHJpY3RPcHRpb25zIH0gZnJvbSAnLi9wb2ludGVyJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RyaWN0RWRnZXNPcHRpb25zIHtcbiAgaW5uZXI6IFJlc3RyaWN0T3B0aW9uc1sncmVzdHJpY3Rpb24nXVxuICBvdXRlcjogUmVzdHJpY3RPcHRpb25zWydyZXN0cmljdGlvbiddXG4gIG9mZnNldD86IFJlc3RyaWN0T3B0aW9uc1snb2Zmc2V0J11cbiAgZW5kT25seTogYm9vbGVhblxuICBlbmFibGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBSZXN0cmljdEVkZ2VzU3RhdGUgPSBNb2RpZmllclN0YXRlPFJlc3RyaWN0RWRnZXNPcHRpb25zLCB7XG4gIGlubmVyOiBJbnRlcmFjdC5SZWN0XG4gIG91dGVyOiBJbnRlcmFjdC5SZWN0XG4gIG9mZnNldDogUmVzdHJpY3RFZGdlc09wdGlvbnNbJ29mZnNldCddXG59PlxuXG5jb25zdCBub0lubmVyID0geyB0b3A6ICtJbmZpbml0eSwgbGVmdDogK0luZmluaXR5LCBib3R0b206IC1JbmZpbml0eSwgcmlnaHQ6IC1JbmZpbml0eSB9XG5jb25zdCBub091dGVyID0geyB0b3A6IC1JbmZpbml0eSwgbGVmdDogLUluZmluaXR5LCBib3R0b206ICtJbmZpbml0eSwgcmlnaHQ6ICtJbmZpbml0eSB9XG5cbmZ1bmN0aW9uIHN0YXJ0ICh7IGludGVyYWN0aW9uLCBzdGFydE9mZnNldCwgc3RhdGUgfTogTW9kaWZpZXJBcmc8UmVzdHJpY3RFZGdlc1N0YXRlPikge1xuICBjb25zdCB7IG9wdGlvbnMgfSA9IHN0YXRlXG4gIGxldCBvZmZzZXRcblxuICBpZiAob3B0aW9ucykge1xuICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5vZmZzZXQsIGludGVyYWN0aW9uLCBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZSlcblxuICAgIG9mZnNldCA9IHJlY3RVdGlscy5yZWN0VG9YWShvZmZzZXRSZWN0KVxuICB9XG5cbiAgb2Zmc2V0ID0gb2Zmc2V0IHx8IHsgeDogMCwgeTogMCB9XG5cbiAgc3RhdGUub2Zmc2V0ID0ge1xuICAgIHRvcDogICAgb2Zmc2V0LnkgKyBzdGFydE9mZnNldC50b3AsXG4gICAgbGVmdDogICBvZmZzZXQueCArIHN0YXJ0T2Zmc2V0LmxlZnQsXG4gICAgYm90dG9tOiBvZmZzZXQueSAtIHN0YXJ0T2Zmc2V0LmJvdHRvbSxcbiAgICByaWdodDogIG9mZnNldC54IC0gc3RhcnRPZmZzZXQucmlnaHQsXG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0ICh7IGNvb3JkcywgZWRnZXMsIGludGVyYWN0aW9uLCBzdGF0ZSB9OiBNb2RpZmllckFyZzxSZXN0cmljdEVkZ2VzU3RhdGU+KSB7XG4gIGNvbnN0IHsgb2Zmc2V0LCBvcHRpb25zIH0gPSBzdGF0ZVxuXG4gIGlmICghZWRnZXMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHBhZ2UgPSBleHRlbmQoe30sIGNvb3JkcylcbiAgY29uc3QgaW5uZXIgPSBnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5pbm5lciwgaW50ZXJhY3Rpb24sIHBhZ2UpIHx8IHt9IGFzIEludGVyYWN0LlJlY3RcbiAgY29uc3Qgb3V0ZXIgPSBnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5vdXRlciwgaW50ZXJhY3Rpb24sIHBhZ2UpIHx8IHt9IGFzIEludGVyYWN0LlJlY3RcblxuICBmaXhSZWN0KGlubmVyLCBub0lubmVyKVxuICBmaXhSZWN0KG91dGVyLCBub091dGVyKVxuXG4gIGlmIChlZGdlcy50b3ApIHtcbiAgICBjb29yZHMueSA9IE1hdGgubWluKE1hdGgubWF4KG91dGVyLnRvcCAgICArIG9mZnNldC50b3AsICAgIHBhZ2UueSksIGlubmVyLnRvcCAgICArIG9mZnNldC50b3ApXG4gIH1cbiAgZWxzZSBpZiAoZWRnZXMuYm90dG9tKSB7XG4gICAgY29vcmRzLnkgPSBNYXRoLm1heChNYXRoLm1pbihvdXRlci5ib3R0b20gKyBvZmZzZXQuYm90dG9tLCBwYWdlLnkpLCBpbm5lci5ib3R0b20gKyBvZmZzZXQuYm90dG9tKVxuICB9XG4gIGlmIChlZGdlcy5sZWZ0KSB7XG4gICAgY29vcmRzLnggPSBNYXRoLm1pbihNYXRoLm1heChvdXRlci5sZWZ0ICAgKyBvZmZzZXQubGVmdCwgICBwYWdlLngpLCBpbm5lci5sZWZ0ICAgKyBvZmZzZXQubGVmdClcbiAgfVxuICBlbHNlIGlmIChlZGdlcy5yaWdodCkge1xuICAgIGNvb3Jkcy54ID0gTWF0aC5tYXgoTWF0aC5taW4ob3V0ZXIucmlnaHQgICsgb2Zmc2V0LnJpZ2h0LCAgcGFnZS54KSwgaW5uZXIucmlnaHQgICsgb2Zmc2V0LnJpZ2h0KVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpeFJlY3QgKHJlY3QsIGRlZmF1bHRzKSB7XG4gIGZvciAoY29uc3QgZWRnZSBvZiBbJ3RvcCcsICdsZWZ0JywgJ2JvdHRvbScsICdyaWdodCddKSB7XG4gICAgaWYgKCEoZWRnZSBpbiByZWN0KSkge1xuICAgICAgcmVjdFtlZGdlXSA9IGRlZmF1bHRzW2VkZ2VdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlY3Rcbn1cblxuY29uc3QgZGVmYXVsdHM6IFJlc3RyaWN0RWRnZXNPcHRpb25zID0ge1xuICBpbm5lcjogbnVsbCxcbiAgb3V0ZXI6IG51bGwsXG4gIG9mZnNldDogbnVsbCxcbiAgZW5kT25seTogZmFsc2UsXG4gIGVuYWJsZWQ6IGZhbHNlLFxufVxuXG5jb25zdCByZXN0cmljdEVkZ2VzID0ge1xuICBub0lubmVyLFxuICBub091dGVyLFxuICBzdGFydCxcbiAgc2V0LFxuICBkZWZhdWx0cyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFrZU1vZGlmaWVyKHJlc3RyaWN0RWRnZXMsICdyZXN0cmljdEVkZ2VzJylcbmV4cG9ydCB7IHJlc3RyaWN0RWRnZXMgfVxuIiwiaW1wb3J0IGV4dGVuZCBmcm9tICcuLi8uLi91dGlscy9leHRlbmQnXG5pbXBvcnQgeyBtYWtlTW9kaWZpZXIgfSBmcm9tICcuLi9iYXNlJ1xuaW1wb3J0IHsgcmVzdHJpY3QgfSBmcm9tICcuL3BvaW50ZXInXG5cbmNvbnN0IGRlZmF1bHRzID0gZXh0ZW5kKHtcbiAgZ2V0IGVsZW1lbnRSZWN0ICgpIHtcbiAgICByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMSwgcmlnaHQ6IDEgfVxuICB9LFxuICBzZXQgZWxlbWVudFJlY3QgKF8pIHt9LFxufSwgcmVzdHJpY3QuZGVmYXVsdHMpXG5cbmNvbnN0IHJlc3RyaWN0UmVjdCA9IHtcbiAgc3RhcnQ6IHJlc3RyaWN0LnN0YXJ0LFxuICBzZXQ6IHJlc3RyaWN0LnNldCxcbiAgZGVmYXVsdHMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ha2VNb2RpZmllcihyZXN0cmljdFJlY3QsICdyZXN0cmljdFJlY3QnKVxuZXhwb3J0IHsgcmVzdHJpY3RSZWN0IH1cbiIsImltcG9ydCBleHRlbmQgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXh0ZW5kJ1xuaW1wb3J0ICogYXMgcmVjdFV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3JlY3QnXG5pbXBvcnQgeyBtYWtlTW9kaWZpZXIsIE1vZGlmaWVyQXJnLCBNb2RpZmllclN0YXRlIH0gZnJvbSAnLi4vYmFzZSdcbmltcG9ydCB7IHJlc3RyaWN0RWRnZXMsIFJlc3RyaWN0RWRnZXNTdGF0ZSB9IGZyb20gJy4vZWRnZXMnXG5pbXBvcnQgeyBnZXRSZXN0cmljdGlvblJlY3QsIFJlc3RyaWN0T3B0aW9ucyB9IGZyb20gJy4vcG9pbnRlcidcblxuY29uc3Qgbm9NaW4gPSB7IHdpZHRoOiAtSW5maW5pdHksIGhlaWdodDogLUluZmluaXR5IH1cbmNvbnN0IG5vTWF4ID0geyB3aWR0aDogK0luZmluaXR5LCBoZWlnaHQ6ICtJbmZpbml0eSB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdHJpY3RTaXplT3B0aW9ucyB7XG4gIG1pbj86IEludGVyYWN0LlNpemUgfCBJbnRlcmFjdC5Qb2ludCB8IFJlc3RyaWN0T3B0aW9uc1sncmVzdHJpY3Rpb24nXVxuICBtYXg/OiBJbnRlcmFjdC5TaXplIHwgSW50ZXJhY3QuUG9pbnQgfCBSZXN0cmljdE9wdGlvbnNbJ3Jlc3RyaWN0aW9uJ11cbiAgZW5kT25seTogYm9vbGVhblxuICBlbmFibGVkPzogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBzdGFydCAoYXJnOiBNb2RpZmllckFyZzxSZXN0cmljdEVkZ2VzU3RhdGU+KSB7XG4gIHJldHVybiByZXN0cmljdEVkZ2VzLnN0YXJ0KGFyZylcbn1cblxuZXhwb3J0IHR5cGUgUmVzdHJpY3RTaXplU3RhdGUgPVxuICBSZXN0cmljdEVkZ2VzU3RhdGUgJiBNb2RpZmllclN0YXRlPFJlc3RyaWN0U2l6ZU9wdGlvbnMgJiB7IGlubmVyOiBJbnRlcmFjdC5SZWN0LCBvdXRlcjogSW50ZXJhY3QuUmVjdCB9LCB7XG4gICAgbWluOiBJbnRlcmFjdC5SZWN0XG4gICAgbWF4OiBJbnRlcmFjdC5SZWN0XG4gIH0+XG5cbmZ1bmN0aW9uIHNldCAoYXJnOiBNb2RpZmllckFyZzxSZXN0cmljdFNpemVTdGF0ZT4pIHtcbiAgY29uc3QgeyBpbnRlcmFjdGlvbiwgc3RhdGUsIHJlY3QsIGVkZ2VzIH0gPSBhcmdcbiAgY29uc3QgeyBvcHRpb25zIH0gPSBzdGF0ZVxuXG4gIGlmICghZWRnZXMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG1pblNpemUgPSByZWN0VXRpbHMudGxiclRvWHl3aChnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5taW4gYXMgYW55LCBpbnRlcmFjdGlvbiwgYXJnLmNvb3JkcykpIHx8IG5vTWluXG4gIGNvbnN0IG1heFNpemUgPSByZWN0VXRpbHMudGxiclRvWHl3aChnZXRSZXN0cmljdGlvblJlY3Qob3B0aW9ucy5tYXggYXMgYW55LCBpbnRlcmFjdGlvbiwgYXJnLmNvb3JkcykpIHx8IG5vTWF4XG5cbiAgc3RhdGUub3B0aW9ucyA9IHtcbiAgICBlbmRPbmx5OiBvcHRpb25zLmVuZE9ubHksXG4gICAgaW5uZXI6IGV4dGVuZCh7fSwgcmVzdHJpY3RFZGdlcy5ub0lubmVyKSxcbiAgICBvdXRlcjogZXh0ZW5kKHt9LCByZXN0cmljdEVkZ2VzLm5vT3V0ZXIpLFxuICB9XG5cbiAgaWYgKGVkZ2VzLnRvcCkge1xuICAgIHN0YXRlLm9wdGlvbnMuaW5uZXIudG9wID0gcmVjdC5ib3R0b20gLSBtaW5TaXplLmhlaWdodFxuICAgIHN0YXRlLm9wdGlvbnMub3V0ZXIudG9wID0gcmVjdC5ib3R0b20gLSBtYXhTaXplLmhlaWdodFxuICB9XG4gIGVsc2UgaWYgKGVkZ2VzLmJvdHRvbSkge1xuICAgIHN0YXRlLm9wdGlvbnMuaW5uZXIuYm90dG9tID0gcmVjdC50b3AgKyBtaW5TaXplLmhlaWdodFxuICAgIHN0YXRlLm9wdGlvbnMub3V0ZXIuYm90dG9tID0gcmVjdC50b3AgKyBtYXhTaXplLmhlaWdodFxuICB9XG4gIGlmIChlZGdlcy5sZWZ0KSB7XG4gICAgc3RhdGUub3B0aW9ucy5pbm5lci5sZWZ0ID0gcmVjdC5yaWdodCAtIG1pblNpemUud2lkdGhcbiAgICBzdGF0ZS5vcHRpb25zLm91dGVyLmxlZnQgPSByZWN0LnJpZ2h0IC0gbWF4U2l6ZS53aWR0aFxuICB9XG4gIGVsc2UgaWYgKGVkZ2VzLnJpZ2h0KSB7XG4gICAgc3RhdGUub3B0aW9ucy5pbm5lci5yaWdodCA9IHJlY3QubGVmdCArIG1pblNpemUud2lkdGhcbiAgICBzdGF0ZS5vcHRpb25zLm91dGVyLnJpZ2h0ID0gcmVjdC5sZWZ0ICsgbWF4U2l6ZS53aWR0aFxuICB9XG5cbiAgcmVzdHJpY3RFZGdlcy5zZXQoYXJnKVxuXG4gIHN0YXRlLm9wdGlvbnMgPSBvcHRpb25zXG59XG5cbmNvbnN0IGRlZmF1bHRzOiBSZXN0cmljdFNpemVPcHRpb25zID0ge1xuICBtaW46IG51bGwsXG4gIG1heDogbnVsbCxcbiAgZW5kT25seTogZmFsc2UsXG4gIGVuYWJsZWQ6IGZhbHNlLFxufVxuXG5jb25zdCByZXN0cmljdFNpemUgPSB7XG4gIHN0YXJ0LFxuICBzZXQsXG4gIGRlZmF1bHRzLFxufVxuXG5leHBvcnQgZGVmYXVsdCBtYWtlTW9kaWZpZXIocmVzdHJpY3RTaXplLCAncmVzdHJpY3RTaXplJylcbmV4cG9ydCB7IHJlc3RyaWN0U2l6ZSB9XG4iLCJpbXBvcnQgeyBNb2RpZmllckZ1bmN0aW9uIH0gZnJvbSAnLi9iYXNlJ1xuXG5jb25zdCBydWJiZXJiYW5kID0gKCgpID0+IHtcbn0pIGFzIHVua25vd24gYXMgTW9kaWZpZXJGdW5jdGlvbjxhbnksIGFueSwgJ3J1YmJlcmJhbmQnPlxuXG5ydWJiZXJiYW5kLl9kZWZhdWx0cyA9IHt9XG5cbmV4cG9ydCBkZWZhdWx0IHJ1YmJlcmJhbmRcbiIsImltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2luZGV4J1xuaW1wb3J0IHsgbWFrZU1vZGlmaWVyLCBNb2RpZmllckFyZywgTW9kaWZpZXJTdGF0ZSB9IGZyb20gJy4uL2Jhc2UnXG5cbmV4cG9ydCBpbnRlcmZhY2UgT2Zmc2V0IHtcbiAgeDogbnVtYmVyXG4gIHk6IG51bWJlclxuICBpbmRleDogbnVtYmVyXG4gIHJlbGF0aXZlUG9pbnQ/OiBJbnRlcmFjdC5Qb2ludFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBQb3NpdGlvbiB7XG4gIHg/OiBudW1iZXJcbiAgeT86IG51bWJlclxuICByYW5nZT86IG51bWJlclxuICBvZmZzZXQ/OiBPZmZzZXRcbiAgW2luZGV4OiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgU25hcEZ1bmN0aW9uID0gKFxuICB4OiBudW1iZXIsXG4gIHk6IG51bWJlcixcbiAgaW50ZXJhY3Rpb246IEludGVyYWN0LkludGVyYWN0aW9uLFxuICBvZmZzZXQ6IE9mZnNldCxcbiAgaW5kZXg6IG51bWJlclxuKSA9PiBTbmFwUG9zaXRpb25cbmV4cG9ydCB0eXBlIFNuYXBUYXJnZXQgPSBTbmFwUG9zaXRpb24gfCBTbmFwRnVuY3Rpb25cbmV4cG9ydCBpbnRlcmZhY2UgU25hcE9wdGlvbnMge1xuICB0YXJnZXRzOiBTbmFwVGFyZ2V0W11cbiAgLy8gdGFyZ2V0IHJhbmdlXG4gIHJhbmdlOiBudW1iZXJcbiAgLy8gc2VsZiBwb2ludHMgZm9yIHNuYXBwaW5nLiBbMCwwXSA9IHRvcCBsZWZ0LCBbMSwxXSA9IGJvdHRvbSByaWdodFxuICByZWxhdGl2ZVBvaW50czogSW50ZXJhY3QuUG9pbnRbXVxuICAvLyBzdGFydENvb3JkcyA9IG9mZnNldCBzbmFwcGluZyBmcm9tIGRyYWcgc3RhcnQgcGFnZSBwb3NpdGlvblxuICBvZmZzZXQ6IEludGVyYWN0LlBvaW50IHwgSW50ZXJhY3QuUmVjdFJlc29sdmFibGU8W0ludGVyYWN0LkludGVyYWN0aW9uXT4gfCAnc3RhcnRDb29yZHMnXG4gIG9mZnNldFdpdGhPcmlnaW4/OiBib29sZWFuXG4gIG9yaWdpbjogSW50ZXJhY3QuUmVjdFJlc29sdmFibGU8W0ludGVyYWN0LkVsZW1lbnRdPiB8IEludGVyYWN0LlBvaW50XG4gIGVuZE9ubHk/OiBib29sZWFuXG4gIGVuYWJsZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFNuYXBTdGF0ZSA9IE1vZGlmaWVyU3RhdGU8U25hcE9wdGlvbnMsIHtcbiAgb2Zmc2V0cz86IE9mZnNldFtdXG4gIGNsb3Nlc3Q/OiBhbnlcbiAgdGFyZ2V0RmllbGRzPzogc3RyaW5nW11bXVxufT5cblxuZnVuY3Rpb24gc3RhcnQgKGFyZzogTW9kaWZpZXJBcmc8U25hcFN0YXRlPikge1xuICBjb25zdCB7IGludGVyYWN0aW9uLCBpbnRlcmFjdGFibGUsIGVsZW1lbnQsIHJlY3QsIHN0YXRlLCBzdGFydE9mZnNldCB9ID0gYXJnXG4gIGNvbnN0IHsgb3B0aW9ucyB9ID0gc3RhdGVcbiAgY29uc3Qgb3JpZ2luID0gb3B0aW9ucy5vZmZzZXRXaXRoT3JpZ2luXG4gICAgPyBnZXRPcmlnaW4oYXJnKVxuICAgIDogeyB4OiAwLCB5OiAwIH1cblxuICBsZXQgc25hcE9mZnNldDogSW50ZXJhY3QuUG9pbnRcblxuICBpZiAob3B0aW9ucy5vZmZzZXQgPT09ICdzdGFydENvb3JkcycpIHtcbiAgICBzbmFwT2Zmc2V0ID0ge1xuICAgICAgeDogaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LnBhZ2UueCxcbiAgICAgIHk6IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5wYWdlLnksXG4gICAgfVxuICB9XG4gIGVsc2UgIHtcbiAgICBjb25zdCBvZmZzZXRSZWN0ID0gdXRpbHMucmVjdC5yZXNvbHZlUmVjdExpa2Uob3B0aW9ucy5vZmZzZXQgYXMgYW55LCBpbnRlcmFjdGFibGUsIGVsZW1lbnQsIFtpbnRlcmFjdGlvbl0pXG5cbiAgICBzbmFwT2Zmc2V0ID0gdXRpbHMucmVjdC5yZWN0VG9YWShvZmZzZXRSZWN0KSB8fCB7IHg6IDAsIHk6IDAgfVxuICAgIHNuYXBPZmZzZXQueCArPSBvcmlnaW4ueFxuICAgIHNuYXBPZmZzZXQueSArPSBvcmlnaW4ueVxuICB9XG5cbiAgY29uc3QgeyByZWxhdGl2ZVBvaW50cyB9ID0gb3B0aW9uc1xuXG4gIHN0YXRlLm9mZnNldHMgPSByZWN0ICYmIHJlbGF0aXZlUG9pbnRzICYmIHJlbGF0aXZlUG9pbnRzLmxlbmd0aFxuICAgID8gIHJlbGF0aXZlUG9pbnRzLm1hcCgocmVsYXRpdmVQb2ludCwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHJlbGF0aXZlUG9pbnQsXG4gICAgICB4OiBzdGFydE9mZnNldC5sZWZ0IC0gKHJlY3Qud2lkdGggICogcmVsYXRpdmVQb2ludC54KSArIHNuYXBPZmZzZXQueCxcbiAgICAgIHk6IHN0YXJ0T2Zmc2V0LnRvcCAgLSAocmVjdC5oZWlnaHQgKiByZWxhdGl2ZVBvaW50LnkpICsgc25hcE9mZnNldC55LFxuICAgIH0pKVxuICAgIDogW3V0aWxzLmV4dGVuZCh7XG4gICAgICBpbmRleDogMCxcbiAgICAgIHJlbGF0aXZlUG9pbnQ6IG51bGwsXG4gICAgfSwgc25hcE9mZnNldCldXG59XG5cbmZ1bmN0aW9uIHNldCAoYXJnOiBNb2RpZmllckFyZzxTbmFwU3RhdGU+KSB7XG4gIGNvbnN0IHsgaW50ZXJhY3Rpb24sIGNvb3Jkcywgc3RhdGUgfSA9IGFyZ1xuICBjb25zdCB7IG9wdGlvbnMsIG9mZnNldHMgfSA9IHN0YXRlXG5cbiAgY29uc3Qgb3JpZ2luID0gdXRpbHMuZ2V0T3JpZ2luWFkoaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlLCBpbnRlcmFjdGlvbi5lbGVtZW50LCBpbnRlcmFjdGlvbi5wcmVwYXJlZC5uYW1lKVxuICBjb25zdCBwYWdlID0gdXRpbHMuZXh0ZW5kKHt9LCBjb29yZHMpXG4gIGNvbnN0IHRhcmdldHMgPSBbXVxuXG4gIGlmICghb3B0aW9ucy5vZmZzZXRXaXRoT3JpZ2luKSB7XG4gICAgcGFnZS54IC09IG9yaWdpbi54XG4gICAgcGFnZS55IC09IG9yaWdpbi55XG4gIH1cblxuICBmb3IgKGNvbnN0IG9mZnNldCBvZiBvZmZzZXRzKSB7XG4gICAgY29uc3QgcmVsYXRpdmVYID0gcGFnZS54IC0gb2Zmc2V0LnhcbiAgICBjb25zdCByZWxhdGl2ZVkgPSBwYWdlLnkgLSBvZmZzZXQueVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwLCBsZW4gPSBvcHRpb25zLnRhcmdldHMubGVuZ3RoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuICAgICAgY29uc3Qgc25hcFRhcmdldCA9IG9wdGlvbnMudGFyZ2V0c1tpbmRleF1cbiAgICAgIGxldCB0YXJnZXRcblxuICAgICAgaWYgKHV0aWxzLmlzLmZ1bmMoc25hcFRhcmdldCkpIHtcbiAgICAgICAgdGFyZ2V0ID0gc25hcFRhcmdldChyZWxhdGl2ZVgsIHJlbGF0aXZlWSwgaW50ZXJhY3Rpb24sIG9mZnNldCwgaW5kZXgpXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0ID0gc25hcFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAoIXRhcmdldCkgeyBjb250aW51ZSB9XG5cbiAgICAgIHRhcmdldHMucHVzaCh7XG4gICAgICAgIHg6ICh1dGlscy5pcy5udW1iZXIodGFyZ2V0LngpID8gdGFyZ2V0LnggOiByZWxhdGl2ZVgpICsgb2Zmc2V0LngsXG4gICAgICAgIHk6ICh1dGlscy5pcy5udW1iZXIodGFyZ2V0LnkpID8gdGFyZ2V0LnkgOiByZWxhdGl2ZVkpICsgb2Zmc2V0LnksXG5cbiAgICAgICAgcmFuZ2U6IHV0aWxzLmlzLm51bWJlcih0YXJnZXQucmFuZ2UpID8gdGFyZ2V0LnJhbmdlIDogb3B0aW9ucy5yYW5nZSxcbiAgICAgICAgc291cmNlOiBzbmFwVGFyZ2V0LFxuICAgICAgICBpbmRleCxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjbG9zZXN0ID0ge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBpblJhbmdlOiBmYWxzZSxcbiAgICBkaXN0YW5jZTogMCxcbiAgICByYW5nZTogMCxcbiAgICBkZWx0YTogeyB4OiAwLCB5OiAwIH0sXG4gIH1cblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB0YXJnZXQucmFuZ2VcbiAgICBjb25zdCBkeCA9IHRhcmdldC54IC0gcGFnZS54XG4gICAgY29uc3QgZHkgPSB0YXJnZXQueSAtIHBhZ2UueVxuICAgIGNvbnN0IGRpc3RhbmNlID0gdXRpbHMuaHlwb3QoZHgsIGR5KVxuICAgIGxldCBpblJhbmdlID0gZGlzdGFuY2UgPD0gcmFuZ2VcblxuICAgIC8vIEluZmluaXRlIHRhcmdldHMgY291bnQgYXMgYmVpbmcgb3V0IG9mIHJhbmdlXG4gICAgLy8gY29tcGFyZWQgdG8gbm9uIGluZmluaXRlIG9uZXMgdGhhdCBhcmUgaW4gcmFuZ2VcbiAgICBpZiAocmFuZ2UgPT09IEluZmluaXR5ICYmIGNsb3Nlc3QuaW5SYW5nZSAmJiBjbG9zZXN0LnJhbmdlICE9PSBJbmZpbml0eSkge1xuICAgICAgaW5SYW5nZSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCFjbG9zZXN0LnRhcmdldCB8fCAoaW5SYW5nZVxuICAgICAgLy8gaXMgdGhlIGNsb3Nlc3QgdGFyZ2V0IGluIHJhbmdlP1xuICAgICAgPyAoY2xvc2VzdC5pblJhbmdlICYmIHJhbmdlICE9PSBJbmZpbml0eVxuICAgICAgICAvLyB0aGUgcG9pbnRlciBpcyByZWxhdGl2ZWx5IGRlZXBlciBpbiB0aGlzIHRhcmdldFxuICAgICAgICA/IGRpc3RhbmNlIC8gcmFuZ2UgPCBjbG9zZXN0LmRpc3RhbmNlIC8gY2xvc2VzdC5yYW5nZVxuICAgICAgICAvLyB0aGlzIHRhcmdldCBoYXMgSW5maW5pdGUgcmFuZ2UgYW5kIHRoZSBjbG9zZXN0IGRvZXNuJ3RcbiAgICAgICAgOiAocmFuZ2UgPT09IEluZmluaXR5ICYmIGNsb3Nlc3QucmFuZ2UgIT09IEluZmluaXR5KSB8fFxuICAgICAgICAgIC8vIE9SIHRoaXMgdGFyZ2V0IGlzIGNsb3NlciB0aGF0IHRoZSBwcmV2aW91cyBjbG9zZXN0XG4gICAgICAgICAgZGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKVxuICAgICAgLy8gVGhlIG90aGVyIGlzIG5vdCBpbiByYW5nZSBhbmQgdGhlIHBvaW50ZXIgaXMgY2xvc2VyIHRvIHRoaXMgdGFyZ2V0XG4gICAgICA6ICghY2xvc2VzdC5pblJhbmdlICYmIGRpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkpKSB7XG4gICAgICBjbG9zZXN0LnRhcmdldCA9IHRhcmdldFxuICAgICAgY2xvc2VzdC5kaXN0YW5jZSA9IGRpc3RhbmNlXG4gICAgICBjbG9zZXN0LnJhbmdlID0gcmFuZ2VcbiAgICAgIGNsb3Nlc3QuaW5SYW5nZSA9IGluUmFuZ2VcbiAgICAgIGNsb3Nlc3QuZGVsdGEueCA9IGR4XG4gICAgICBjbG9zZXN0LmRlbHRhLnkgPSBkeVxuICAgIH1cbiAgfVxuXG4gIGlmIChjbG9zZXN0LmluUmFuZ2UpIHtcbiAgICBjb29yZHMueCA9IGNsb3Nlc3QudGFyZ2V0LnhcbiAgICBjb29yZHMueSA9IGNsb3Nlc3QudGFyZ2V0LnlcbiAgfVxuXG4gIHN0YXRlLmNsb3Nlc3QgPSBjbG9zZXN0XG4gIHJldHVybiBjbG9zZXN0XG59XG5cbmZ1bmN0aW9uIGdldE9yaWdpbiAoYXJnOiBQYXJ0aWFsPE1vZGlmaWVyQXJnPFNuYXBTdGF0ZT4+KSB7XG4gIGNvbnN0IHsgZWxlbWVudCB9ID0gYXJnLmludGVyYWN0aW9uXG4gIGNvbnN0IG9wdGlvbnNPcmlnaW4gPSB1dGlscy5yZWN0LnJlY3RUb1hZKFxuICAgIHV0aWxzLnJlY3QucmVzb2x2ZVJlY3RMaWtlKGFyZy5zdGF0ZS5vcHRpb25zLm9yaWdpbiBhcyBhbnksIG51bGwsIG51bGwsIFtlbGVtZW50XSksXG4gIClcbiAgY29uc3Qgb3JpZ2luID0gb3B0aW9uc09yaWdpbiB8fCB1dGlscy5nZXRPcmlnaW5YWShcbiAgICBhcmcuaW50ZXJhY3RhYmxlLFxuICAgIGVsZW1lbnQsXG4gICAgYXJnLmludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUsXG4gIClcblxuICByZXR1cm4gb3JpZ2luXG59XG5cbmNvbnN0IGRlZmF1bHRzOiBTbmFwT3B0aW9ucyA9IHtcbiAgcmFuZ2UgIDogSW5maW5pdHksXG4gIHRhcmdldHM6IG51bGwsXG4gIG9mZnNldDogbnVsbCxcbiAgb2Zmc2V0V2l0aE9yaWdpbjogdHJ1ZSxcbiAgb3JpZ2luOiBudWxsLFxuICByZWxhdGl2ZVBvaW50czogbnVsbCxcbiAgZW5kT25seTogZmFsc2UsXG4gIGVuYWJsZWQ6IGZhbHNlLFxufVxuY29uc3Qgc25hcCA9IHtcbiAgc3RhcnQsXG4gIHNldCxcbiAgZGVmYXVsdHMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ha2VNb2RpZmllcihzbmFwLCAnc25hcCcpXG5leHBvcnQgeyBzbmFwIH1cbiIsIi8vIFRoaXMgbW9kdWxlIGFsbG93cyBzbmFwcGluZyBvZiB0aGUgc2l6ZSBvZiB0YXJnZXRzIGR1cmluZyByZXNpemVcbi8vIGludGVyYWN0aW9ucy5cblxuaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCB7IG1ha2VNb2RpZmllciwgTW9kaWZpZXJBcmcgfSBmcm9tICcuLi9iYXNlJ1xuaW1wb3J0IHsgc25hcCwgU25hcE9wdGlvbnMsIFNuYXBTdGF0ZSB9IGZyb20gJy4vcG9pbnRlcidcblxuZXhwb3J0IHR5cGUgU25hcFNpemVPcHRpb25zID0gUGljazxcblNuYXBPcHRpb25zLFxuJ3RhcmdldHMnIHwgJ29mZnNldCcgfCAnZW5kT25seScgfCAncmFuZ2UnIHwgJ2VuYWJsZWQnXG4+XG5cbmZ1bmN0aW9uIHN0YXJ0IChhcmc6IE1vZGlmaWVyQXJnPFNuYXBTdGF0ZT4pIHtcbiAgY29uc3QgeyBzdGF0ZSwgZWRnZXMgfSA9IGFyZ1xuICBjb25zdCB7IG9wdGlvbnMgfSA9IHN0YXRlXG5cbiAgaWYgKCFlZGdlcykgeyByZXR1cm4gbnVsbCB9XG5cbiAgYXJnLnN0YXRlID0ge1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIHRhcmdldHM6IG51bGwsXG4gICAgICByZWxhdGl2ZVBvaW50czogW3tcbiAgICAgICAgeDogZWRnZXMubGVmdCA/IDAgOiAxLFxuICAgICAgICB5OiBlZGdlcy50b3AgPyAwIDogMSxcbiAgICAgIH1dLFxuICAgICAgb2Zmc2V0OiBvcHRpb25zLm9mZnNldCB8fCAnc2VsZicsXG4gICAgICBvcmlnaW46IHsgeDogMCwgeTogMCB9LFxuICAgICAgcmFuZ2U6IG9wdGlvbnMucmFuZ2UsXG4gICAgfSxcbiAgfVxuXG4gIHN0YXRlLnRhcmdldEZpZWxkcyA9IHN0YXRlLnRhcmdldEZpZWxkcyB8fCBbXG4gICAgWyd3aWR0aCcsICdoZWlnaHQnXSxcbiAgICBbJ3gnLCAneSddLFxuICBdXG5cbiAgc25hcC5zdGFydChhcmcpXG4gIHN0YXRlLm9mZnNldHMgPSBhcmcuc3RhdGUub2Zmc2V0c1xuXG4gIGFyZy5zdGF0ZSA9IHN0YXRlXG59XG5cbmZ1bmN0aW9uIHNldCAoYXJnKSB7XG4gIGNvbnN0IHsgaW50ZXJhY3Rpb24sIHN0YXRlLCBjb29yZHMgfSA9IGFyZ1xuICBjb25zdCB7IG9wdGlvbnMsIG9mZnNldHMgfSA9IHN0YXRlXG4gIGNvbnN0IHJlbGF0aXZlID0ge1xuICAgIHg6IGNvb3Jkcy54IC0gb2Zmc2V0c1swXS54LFxuICAgIHk6IGNvb3Jkcy55IC0gb2Zmc2V0c1swXS55LFxuICB9XG5cbiAgc3RhdGUub3B0aW9ucyA9IGV4dGVuZCh7fSwgb3B0aW9ucylcbiAgc3RhdGUub3B0aW9ucy50YXJnZXRzID0gW11cblxuICBmb3IgKGNvbnN0IHNuYXBUYXJnZXQgb2YgKG9wdGlvbnMudGFyZ2V0cyB8fCBbXSkpIHtcbiAgICBsZXQgdGFyZ2V0XG5cbiAgICBpZiAoaXMuZnVuYyhzbmFwVGFyZ2V0KSkge1xuICAgICAgdGFyZ2V0ID0gc25hcFRhcmdldChyZWxhdGl2ZS54LCByZWxhdGl2ZS55LCBpbnRlcmFjdGlvbilcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0YXJnZXQgPSBzbmFwVGFyZ2V0XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQpIHsgY29udGludWUgfVxuXG4gICAgZm9yIChjb25zdCBbeEZpZWxkLCB5RmllbGRdIG9mIHN0YXRlLnRhcmdldEZpZWxkcykge1xuICAgICAgaWYgKHhGaWVsZCBpbiB0YXJnZXQgfHwgeUZpZWxkIGluIHRhcmdldCkge1xuICAgICAgICB0YXJnZXQueCA9IHRhcmdldFt4RmllbGRdXG4gICAgICAgIHRhcmdldC55ID0gdGFyZ2V0W3lGaWVsZF1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRlLm9wdGlvbnMudGFyZ2V0cy5wdXNoKHRhcmdldClcbiAgfVxuXG4gIGNvbnN0IHJldHVyblZhbHVlID0gc25hcC5zZXQoYXJnKVxuXG4gIHN0YXRlLm9wdGlvbnMgPSBvcHRpb25zXG5cbiAgcmV0dXJuIHJldHVyblZhbHVlXG59XG5cbmNvbnN0IGRlZmF1bHRzOiBTbmFwU2l6ZU9wdGlvbnMgPSB7XG4gIHJhbmdlOiBJbmZpbml0eSxcbiAgdGFyZ2V0czogbnVsbCxcbiAgb2Zmc2V0OiBudWxsLFxuICBlbmRPbmx5OiBmYWxzZSxcbiAgZW5hYmxlZDogZmFsc2UsXG59XG5cbmNvbnN0IHNuYXBTaXplID0ge1xuICBzdGFydCxcbiAgc2V0LFxuICBkZWZhdWx0cyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFrZU1vZGlmaWVyKHNuYXBTaXplLCAnc25hcFNpemUnKVxuZXhwb3J0IHsgc25hcFNpemUgfVxuIiwiLyoqXG4gKiBAbW9kdWxlIG1vZGlmaWVycy9zbmFwRWRnZXNcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgbW9kdWxlIGFsbG93cyBzbmFwcGluZyBvZiB0aGUgZWRnZXMgb2YgdGFyZ2V0cyBkdXJpbmcgcmVzaXplXG4gKiBpbnRlcmFjdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGludGVyYWN0KHRhcmdldCkucmVzaXphYmxlKHtcbiAqICAgc25hcEVkZ2VzOiB7XG4gKiAgICAgdGFyZ2V0czogW2ludGVyYWN0LnNuYXBwZXJzLmdyaWQoeyB4OiAxMDAsIHk6IDUwIH0pXSxcbiAqICAgfSxcbiAqIH0pXG4gKlxuICogaW50ZXJhY3QodGFyZ2V0KS5yZXNpemFibGUoe1xuICogICBzbmFwRWRnZXM6IHtcbiAqICAgICB0YXJnZXRzOiBbXG4gKiAgICAgICBpbnRlcmFjdC5zbmFwcGVycy5ncmlkKHtcbiAqICAgICAgICB0b3A6IDUwLFxuICogICAgICAgIGxlZnQ6IDUwLFxuICogICAgICAgIGJvdHRvbTogMTAwLFxuICogICAgICAgIHJpZ2h0OiAxMDAsXG4gKiAgICAgICB9KSxcbiAqICAgICBdLFxuICogICB9LFxuICogfSlcbiAqL1xuXG5pbXBvcnQgY2xvbmUgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvY2xvbmUnXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZCdcbmltcG9ydCB7IG1ha2VNb2RpZmllciwgTW9kaWZpZXJBcmcsIE1vZGlmaWVyTW9kdWxlIH0gZnJvbSAnLi4vYmFzZSdcbmltcG9ydCB7IFNuYXBPcHRpb25zLCBTbmFwU3RhdGUgfSBmcm9tICcuL3BvaW50ZXInXG5pbXBvcnQgeyBzbmFwU2l6ZSB9IGZyb20gJy4vc2l6ZSdcblxuZXhwb3J0IHR5cGUgU25hcEVkZ2VzT3B0aW9ucyA9IFBpY2s8U25hcE9wdGlvbnMsICd0YXJnZXRzJyB8ICdyYW5nZScgfCAnb2Zmc2V0JyB8ICdlbmRPbmx5JyB8ICdlbmFibGVkJz5cblxuZnVuY3Rpb24gc3RhcnQgKGFyZzogTW9kaWZpZXJBcmc8U25hcFN0YXRlPikge1xuICBjb25zdCB7IGVkZ2VzIH0gPSBhcmdcblxuICBpZiAoIWVkZ2VzKSB7IHJldHVybiBudWxsIH1cblxuICBhcmcuc3RhdGUudGFyZ2V0RmllbGRzID0gYXJnLnN0YXRlLnRhcmdldEZpZWxkcyB8fCBbXG4gICAgW2VkZ2VzLmxlZnQgPyAnbGVmdCcgOiAncmlnaHQnLCBlZGdlcy50b3AgPyAndG9wJyA6ICdib3R0b20nXSxcbiAgXVxuXG4gIHJldHVybiBzbmFwU2l6ZS5zdGFydChhcmcpXG59XG5cbmNvbnN0IHNuYXBFZGdlczogTW9kaWZpZXJNb2R1bGU8U25hcEVkZ2VzT3B0aW9ucywgU25hcFN0YXRlPiA9IHtcbiAgc3RhcnQsXG4gIHNldDogc25hcFNpemUuc2V0LFxuICBkZWZhdWx0czogZXh0ZW5kKFxuICAgIGNsb25lKHNuYXBTaXplLmRlZmF1bHRzKSxcbiAgICB7XG4gICAgICB0YXJnZXRzOiBudWxsLFxuICAgICAgcmFuZ2U6IG51bGwsXG4gICAgICBvZmZzZXQ6IHsgeDogMCwgeTogMCB9LFxuICAgIH0gYXMgY29uc3QsXG4gICksXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ha2VNb2RpZmllcihzbmFwRWRnZXMsICdzbmFwRWRnZXMnKVxuZXhwb3J0IHsgc25hcEVkZ2VzIH1cbiIsImltcG9ydCB7IE1vZGlmaWVyRnVuY3Rpb24gfSBmcm9tICcuL2Jhc2UnXG5cbmNvbnN0IHNwcmluZyA9ICgoKSA9PiB7XG59KSBhcyB1bmtub3duIGFzIE1vZGlmaWVyRnVuY3Rpb248YW55LCBhbnksICdzcHJpbmcnPlxuXG5zcHJpbmcuX2RlZmF1bHRzID0ge31cblxuZXhwb3J0IGRlZmF1bHQgc3ByaW5nXG4iLCJpbXBvcnQgeyBNb2RpZmllckZ1bmN0aW9uIH0gZnJvbSAnLi9iYXNlJ1xuXG5jb25zdCB0cmFuc2Zvcm0gPSAoKCkgPT4ge1xufSkgYXMgdW5rbm93biBhcyBNb2RpZmllckZ1bmN0aW9uPGFueSwgYW55LCAndHJhbnNmb3JtJz5cblxudHJhbnNmb3JtLl9kZWZhdWx0cyA9IHt9XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zZm9ybVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1leHRyYW5lb3VzLWltcG9ydCAqL1xuaW1wb3J0IGFzcGVjdFJhdGlvIGZyb20gJy4vYXNwZWN0UmF0aW8nXG5pbXBvcnQgYXZvaWQgZnJvbSAnLi9hdm9pZCdcbmltcG9ydCByZXN0cmljdEVkZ2VzIGZyb20gJy4vcmVzdHJpY3QvZWRnZXMnXG5pbXBvcnQgcmVzdHJpY3QgZnJvbSAnLi9yZXN0cmljdC9wb2ludGVyJ1xuaW1wb3J0IHJlc3RyaWN0UmVjdCBmcm9tICcuL3Jlc3RyaWN0L3JlY3QnXG5pbXBvcnQgcmVzdHJpY3RTaXplIGZyb20gJy4vcmVzdHJpY3Qvc2l6ZSdcbmltcG9ydCBydWJiZXJiYW5kIGZyb20gJy4vcnViYmVyYmFuZCdcbmltcG9ydCBzbmFwRWRnZXMgZnJvbSAnLi9zbmFwL2VkZ2VzJ1xuaW1wb3J0IHNuYXAgZnJvbSAnLi9zbmFwL3BvaW50ZXInXG5pbXBvcnQgc25hcFNpemUgZnJvbSAnLi9zbmFwL3NpemUnXG5cbmltcG9ydCBzcHJpbmcgZnJvbSAnLi9zcHJpbmcnXG5pbXBvcnQgdHJhbnNmb3JtIGZyb20gJy4vdHJhbnNmb3JtJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFzcGVjdFJhdGlvLFxuICByZXN0cmljdEVkZ2VzLFxuICByZXN0cmljdCxcbiAgcmVzdHJpY3RSZWN0LFxuICByZXN0cmljdFNpemUsXG4gIHNuYXBFZGdlcyxcbiAgc25hcCxcbiAgc25hcFNpemUsXG5cbiAgc3ByaW5nLFxuICBhdm9pZCxcbiAgdHJhbnNmb3JtLFxuICBydWJiZXJiYW5kLFxufVxuIiwiaW1wb3J0IHNuYXBwZXJzIGZyb20gJ0BpbnRlcmFjdGpzL3NuYXBwZXJzL2luZGV4J1xuaW1wb3J0IGFsbCBmcm9tICcuL2FsbCdcbmltcG9ydCBiYXNlIGZyb20gJy4vYmFzZSdcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RTdGF0aWMnIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0U3RhdGljIHtcbiAgICBtb2RpZmllcnM6IHR5cGVvZiBhbGxcbiAgfVxufVxuXG5jb25zdCBtb2RpZmllcnM6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdtb2RpZmllcnMnLFxuICBpbnN0YWxsIChzY29wZSkge1xuICAgIGNvbnN0IHsgaW50ZXJhY3RTdGF0aWM6IGludGVyYWN0IH0gPSBzY29wZVxuXG4gICAgc2NvcGUudXNlUGx1Z2luKGJhc2UpXG4gICAgc2NvcGUudXNlUGx1Z2luKHNuYXBwZXJzKVxuXG4gICAgaW50ZXJhY3QubW9kaWZpZXJzID0gYWxsXG5cbiAgICAvLyBmb3IgYmFja3dyYWRzIGNvbXBhdGliaWxpdHlcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gYWxsKSB7XG4gICAgICBjb25zdCB7IF9kZWZhdWx0cywgX21ldGhvZHMgfSA9IGFsbFt0eXBlIGFzIGtleW9mIHR5cGVvZiBhbGxdXG5cbiAgICAgIDsoX2RlZmF1bHRzIGFzIGFueSkuX21ldGhvZHMgPSBfbWV0aG9kc1xuICAgICAgOyhzY29wZS5kZWZhdWx0cy5wZXJBY3Rpb24gYXMgYW55KVt0eXBlXSA9IF9kZWZhdWx0c1xuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgbW9kaWZpZXJzXG4iLCJpbXBvcnQgQmFzZUV2ZW50IGZyb20gJy4uL2NvcmUvQmFzZUV2ZW50J1xuaW1wb3J0ICogYXMgcG9pbnRlclV0aWxzIGZyb20gJy4uL3V0aWxzL3BvaW50ZXJVdGlscydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9pbnRlckV2ZW50PFQgZXh0ZW5kcyBzdHJpbmcgPSBhbnk+IGV4dGVuZHMgQmFzZUV2ZW50IHtcbiAgdHlwZTogVFxuICBvcmlnaW5hbEV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlXG4gIHBvaW50ZXJJZDogbnVtYmVyXG4gIHBvaW50ZXJUeXBlOiBzdHJpbmdcbiAgZG91YmxlOiBib29sZWFuXG4gIHBhZ2VYOiBudW1iZXJcbiAgcGFnZVk6IG51bWJlclxuICBjbGllbnRYOiBudW1iZXJcbiAgY2xpZW50WTogbnVtYmVyXG4gIGR0OiBudW1iZXJcbiAgZXZlbnRhYmxlOiBhbnlcbiAgW2tleTogc3RyaW5nXTogYW55XG5cbiAgLyoqICovXG4gIGNvbnN0cnVjdG9yIChcbiAgICB0eXBlOiBULFxuICAgIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlIHwgUG9pbnRlckV2ZW50PGFueT4sXG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsXG4gICAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LFxuICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbixcbiAgICB0aW1lU3RhbXA6IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIoaW50ZXJhY3Rpb24pXG4gICAgcG9pbnRlclV0aWxzLnBvaW50ZXJFeHRlbmQodGhpcywgZXZlbnQpXG5cbiAgICBpZiAoZXZlbnQgIT09IHBvaW50ZXIpIHtcbiAgICAgIHBvaW50ZXJVdGlscy5wb2ludGVyRXh0ZW5kKHRoaXMsIHBvaW50ZXIpXG4gICAgfVxuXG4gICAgdGhpcy50aW1lU3RhbXAgICAgID0gdGltZVN0YW1wXG4gICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gZXZlbnRcbiAgICB0aGlzLnR5cGUgICAgICAgICAgPSB0eXBlXG4gICAgdGhpcy5wb2ludGVySWQgICAgID0gcG9pbnRlclV0aWxzLmdldFBvaW50ZXJJZChwb2ludGVyKVxuICAgIHRoaXMucG9pbnRlclR5cGUgICA9IHBvaW50ZXJVdGlscy5nZXRQb2ludGVyVHlwZShwb2ludGVyKVxuICAgIHRoaXMudGFyZ2V0ICAgICAgICA9IGV2ZW50VGFyZ2V0XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbFxuXG4gICAgaWYgKHR5cGUgPT09ICd0YXAnKSB7XG4gICAgICBjb25zdCBwb2ludGVySW5kZXggPSBpbnRlcmFjdGlvbi5nZXRQb2ludGVySW5kZXgocG9pbnRlcilcbiAgICAgIHRoaXMuZHQgPSB0aGlzLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uZG93blRpbWVcblxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnRhcFRpbWVcblxuICAgICAgdGhpcy5kb3VibGUgPSAhIShpbnRlcmFjdGlvbi5wcmV2VGFwICYmXG4gICAgICAgIGludGVyYWN0aW9uLnByZXZUYXAudHlwZSAhPT0gJ2RvdWJsZXRhcCcgJiZcbiAgICAgICAgaW50ZXJhY3Rpb24ucHJldlRhcC50YXJnZXQgPT09IHRoaXMudGFyZ2V0ICYmXG4gICAgICAgIGludGVydmFsIDwgNTAwKVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlID09PSAnZG91YmxldGFwJykge1xuICAgICAgdGhpcy5kdCA9IChwb2ludGVyIGFzIFBvaW50ZXJFdmVudDwndGFwJz4pLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnRhcFRpbWVcbiAgICB9XG4gIH1cblxuICBfc3VidHJhY3RPcmlnaW4gKHsgeDogb3JpZ2luWCwgeTogb3JpZ2luWSB9OiBJbnRlcmFjdC5Qb2ludCkge1xuICAgIHRoaXMucGFnZVggICAtPSBvcmlnaW5YXG4gICAgdGhpcy5wYWdlWSAgIC09IG9yaWdpbllcbiAgICB0aGlzLmNsaWVudFggLT0gb3JpZ2luWFxuICAgIHRoaXMuY2xpZW50WSAtPSBvcmlnaW5ZXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgX2FkZE9yaWdpbiAoeyB4OiBvcmlnaW5YLCB5OiBvcmlnaW5ZIH06IEludGVyYWN0LlBvaW50KSB7XG4gICAgdGhpcy5wYWdlWCAgICs9IG9yaWdpblhcbiAgICB0aGlzLnBhZ2VZICAgKz0gb3JpZ2luWVxuICAgIHRoaXMuY2xpZW50WCArPSBvcmlnaW5YXG4gICAgdGhpcy5jbGllbnRZICs9IG9yaWdpbllcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUHJldmVudCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhlIG9yaWdpbmFsIEV2ZW50XG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdCAoKSB7XG4gICAgdGhpcy5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5leHBvcnQgeyBQb2ludGVyRXZlbnQgfVxuIiwiaW1wb3J0IEV2ZW50YWJsZSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0V2ZW50YWJsZSdcbmltcG9ydCBJbnRlcmFjdGlvbiBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJ1xuaW1wb3J0IHsgUGVyQWN0aW9uRGVmYXVsdHMgfSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IFNjb3BlIGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pbmRleCdcbmltcG9ydCBQb2ludGVyRXZlbnQgZnJvbSAnLi9Qb2ludGVyRXZlbnQnXG5cbmV4cG9ydCB0eXBlIEV2ZW50VGFyZ2V0TGlzdCA9IEFycmF5PHtcbiAgbm9kZTogTm9kZVxuICBldmVudGFibGU6IEV2ZW50YWJsZVxuICBwcm9wczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxufT5cblxuZXhwb3J0IGludGVyZmFjZSBQb2ludGVyRXZlbnRPcHRpb25zIGV4dGVuZHMgUGVyQWN0aW9uRGVmYXVsdHMge1xuICBlbmFibGVkPzogdW5kZWZpbmVkIC8vIG5vdCB1c2VkXG4gIGhvbGREdXJhdGlvbj86IG51bWJlclxuICBpZ25vcmVGcm9tPzogYW55XG4gIGFsbG93RnJvbT86IGFueVxuICBvcmlnaW4/OiBJbnRlcmFjdC5Qb2ludCB8IHN0cmluZyB8IEludGVyYWN0LkVsZW1lbnRcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIFNjb3BlIHtcbiAgICBwb2ludGVyRXZlbnRzOiB0eXBlb2YgcG9pbnRlckV2ZW50c1xuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGlvbiB7XG4gICAgcHJldlRhcD86IFBvaW50ZXJFdmVudDxzdHJpbmc+XG4gICAgdGFwVGltZT86IG51bWJlclxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL1BvaW50ZXJJbmZvJyB7XG4gIGludGVyZmFjZSBQb2ludGVySW5mbyB7XG4gICAgaG9sZD86IHtcbiAgICAgIGR1cmF0aW9uOiBudW1iZXJcbiAgICAgIHRpbWVvdXQ6IGFueVxuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9kZWZhdWx0T3B0aW9ucycge1xuICBpbnRlcmZhY2UgQWN0aW9uRGVmYXVsdHMge1xuICAgIHBvaW50ZXJFdmVudHM6IEludGVyYWN0Lk9wdGlvbnNcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgU2lnbmFsQXJncyB7XG4gICAgJ3BvaW50ZXJFdmVudHM6bmV3JzogeyBwb2ludGVyRXZlbnQ6IFBvaW50ZXJFdmVudDxhbnk+IH1cbiAgICAncG9pbnRlckV2ZW50czpmaXJlZCc6IHtcbiAgICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvblxuICAgICAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUgfCBQb2ludGVyRXZlbnQ8YW55PlxuICAgICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUgfCBQb2ludGVyRXZlbnQ8YW55PlxuICAgICAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0XG4gICAgICBwb2ludGVyRXZlbnQ6IFBvaW50ZXJFdmVudDxhbnk+XG4gICAgICB0YXJnZXRzPzogRXZlbnRUYXJnZXRMaXN0XG4gICAgICB0eXBlOiBzdHJpbmdcbiAgICB9XG4gICAgJ3BvaW50ZXJFdmVudHM6Y29sbGVjdC10YXJnZXRzJzoge1xuICAgICAgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uXG4gICAgICBwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZSB8IFBvaW50ZXJFdmVudDxhbnk+XG4gICAgICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSB8IFBvaW50ZXJFdmVudDxhbnk+XG4gICAgICBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXRcbiAgICAgIHRhcmdldHM/OiBFdmVudFRhcmdldExpc3RcbiAgICAgIHR5cGU6IHN0cmluZ1xuICAgICAgcGF0aDogTm9kZVtdXG4gICAgICBub2RlOiBudWxsXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGRlZmF1bHRzOiBQb2ludGVyRXZlbnRPcHRpb25zID0ge1xuICBob2xkRHVyYXRpb246IDYwMCxcbiAgaWdub3JlRnJvbSAgOiBudWxsLFxuICBhbGxvd0Zyb20gICA6IG51bGwsXG4gIG9yaWdpbiAgICAgIDogeyB4OiAwLCB5OiAwIH0sXG59XG5cbmNvbnN0IHBvaW50ZXJFdmVudHMgPSB7XG4gIGlkOiAncG9pbnRlci1ldmVudHMvYmFzZScsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdpbnRlcmFjdGlvbnM6bmV3JzogYWRkSW50ZXJhY3Rpb25Qcm9wcyxcbiAgICAnaW50ZXJhY3Rpb25zOnVwZGF0ZS1wb2ludGVyJzogYWRkSG9sZEluZm8sXG4gICAgJ2ludGVyYWN0aW9uczptb3ZlJzogbW92ZUFuZENsZWFySG9sZCxcbiAgICAnaW50ZXJhY3Rpb25zOmRvd24nOiAoYXJnLCBzY29wZSkgPT4ge1xuICAgICAgZG93bkFuZFN0YXJ0SG9sZChhcmcsIHNjb3BlKVxuICAgICAgZmlyZShhcmcsIHNjb3BlKVxuICAgIH0sXG4gICAgJ2ludGVyYWN0aW9uczp1cCc6IChhcmcsIHNjb3BlKSA9PiB7XG4gICAgICBjbGVhckhvbGQoYXJnKVxuICAgICAgZmlyZShhcmcsIHNjb3BlKVxuICAgICAgdGFwQWZ0ZXJVcChhcmcsIHNjb3BlKVxuICAgIH0sXG4gICAgJ2ludGVyYWN0aW9uczpjYW5jZWwnOiAoYXJnLCBzY29wZSkgPT4ge1xuICAgICAgY2xlYXJIb2xkKGFyZylcbiAgICAgIGZpcmUoYXJnLCBzY29wZSlcbiAgICB9LFxuICB9LFxuICBQb2ludGVyRXZlbnQsXG4gIGZpcmUsXG4gIGNvbGxlY3RFdmVudFRhcmdldHMsXG4gIGRlZmF1bHRzLFxuICB0eXBlczoge1xuICAgIGRvd246IHRydWUsXG4gICAgbW92ZTogdHJ1ZSxcbiAgICB1cDogdHJ1ZSxcbiAgICBjYW5jZWw6IHRydWUsXG4gICAgdGFwOiB0cnVlLFxuICAgIGRvdWJsZXRhcDogdHJ1ZSxcbiAgICBob2xkOiB0cnVlLFxuICB9IGFzIHsgW3R5cGU6IHN0cmluZ106IHRydWUgfSxcbn1cblxuZnVuY3Rpb24gZmlyZTxUIGV4dGVuZHMgc3RyaW5nPiAoXG4gIGFyZzoge1xuICAgIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlIHwgUG9pbnRlckV2ZW50PGFueT5cbiAgICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSB8IFBvaW50ZXJFdmVudDxhbnk+XG4gICAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0XG4gICAgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uXG4gICAgdHlwZTogVFxuICAgIHRhcmdldHM/OiBFdmVudFRhcmdldExpc3RcbiAgfSxcbiAgc2NvcGU6IEludGVyYWN0LlNjb3BlLFxuKSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlcmFjdGlvbixcbiAgICBwb2ludGVyLFxuICAgIGV2ZW50LFxuICAgIGV2ZW50VGFyZ2V0LFxuICAgIHR5cGUsXG4gICAgdGFyZ2V0cyA9IGNvbGxlY3RFdmVudFRhcmdldHMoYXJnLCBzY29wZSksXG4gIH0gPSBhcmdcblxuICBjb25zdCBwb2ludGVyRXZlbnQgPSBuZXcgUG9pbnRlckV2ZW50KHR5cGUsIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgaW50ZXJhY3Rpb24sIHNjb3BlLm5vdygpKVxuXG4gIHNjb3BlLmZpcmUoJ3BvaW50ZXJFdmVudHM6bmV3JywgeyBwb2ludGVyRXZlbnQgfSlcblxuICBjb25zdCBzaWduYWxBcmcgPSB7XG4gICAgaW50ZXJhY3Rpb24sXG4gICAgcG9pbnRlcixcbiAgICBldmVudCxcbiAgICBldmVudFRhcmdldCxcbiAgICB0YXJnZXRzLFxuICAgIHR5cGUsXG4gICAgcG9pbnRlckV2ZW50LFxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXJnZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGFyZ2V0c1tpXVxuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRhcmdldC5wcm9wcyB8fCB7fSkge1xuICAgICAgKHBvaW50ZXJFdmVudCBhcyBhbnkpW3Byb3BdID0gdGFyZ2V0LnByb3BzW3Byb3BdXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luID0gdXRpbHMuZ2V0T3JpZ2luWFkodGFyZ2V0LmV2ZW50YWJsZSwgdGFyZ2V0Lm5vZGUpXG5cbiAgICBwb2ludGVyRXZlbnQuX3N1YnRyYWN0T3JpZ2luKG9yaWdpbilcbiAgICBwb2ludGVyRXZlbnQuZXZlbnRhYmxlID0gdGFyZ2V0LmV2ZW50YWJsZVxuICAgIHBvaW50ZXJFdmVudC5jdXJyZW50VGFyZ2V0ID0gdGFyZ2V0Lm5vZGVcblxuICAgIHRhcmdldC5ldmVudGFibGUuZmlyZShwb2ludGVyRXZlbnQpXG5cbiAgICBwb2ludGVyRXZlbnQuX2FkZE9yaWdpbihvcmlnaW4pXG5cbiAgICBpZiAocG9pbnRlckV2ZW50LmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCB8fFxuICAgICAgICAocG9pbnRlckV2ZW50LnByb3BhZ2F0aW9uU3RvcHBlZCAmJlxuICAgICAgICAgICAgKGkgKyAxKSA8IHRhcmdldHMubGVuZ3RoICYmIHRhcmdldHNbaSArIDFdLm5vZGUgIT09IHBvaW50ZXJFdmVudC5jdXJyZW50VGFyZ2V0KSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzY29wZS5maXJlKCdwb2ludGVyRXZlbnRzOmZpcmVkJywgc2lnbmFsQXJnKVxuXG4gIGlmICh0eXBlID09PSAndGFwJykge1xuICAgIC8vIGlmIHBvaW50ZXJFdmVudCBzaG91bGQgbWFrZSBhIGRvdWJsZSB0YXAsIGNyZWF0ZSBhbmQgZmlyZSBhIGRvdWJsZXRhcFxuICAgIC8vIFBvaW50ZXJFdmVudCBhbmQgdXNlIHRoYXQgYXMgdGhlIHByZXZUYXBcbiAgICBjb25zdCBwcmV2VGFwID0gcG9pbnRlckV2ZW50LmRvdWJsZVxuICAgICAgPyBmaXJlKHtcbiAgICAgICAgaW50ZXJhY3Rpb24sXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBldmVudFRhcmdldCxcbiAgICAgICAgdHlwZTogJ2RvdWJsZXRhcCcsXG4gICAgICB9LCBzY29wZSlcbiAgICAgIDogcG9pbnRlckV2ZW50XG5cbiAgICBpbnRlcmFjdGlvbi5wcmV2VGFwID0gcHJldlRhcFxuICAgIGludGVyYWN0aW9uLnRhcFRpbWUgPSBwcmV2VGFwLnRpbWVTdGFtcFxuICB9XG5cbiAgcmV0dXJuIHBvaW50ZXJFdmVudFxufVxuXG5mdW5jdGlvbiBjb2xsZWN0RXZlbnRUYXJnZXRzPFQgZXh0ZW5kcyBzdHJpbmc+ICh7IGludGVyYWN0aW9uLCBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIHR5cGUgfToge1xuICBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb25cbiAgcG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUgfCBQb2ludGVyRXZlbnQ8YW55PlxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSB8IFBvaW50ZXJFdmVudDxhbnk+XG4gIGV2ZW50VGFyZ2V0OiBJbnRlcmFjdC5FdmVudFRhcmdldFxuICB0eXBlOiBUXG59LCBzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgY29uc3QgcG9pbnRlckluZGV4ID0gaW50ZXJhY3Rpb24uZ2V0UG9pbnRlckluZGV4KHBvaW50ZXIpXG4gIGNvbnN0IHBvaW50ZXJJbmZvID0gaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XVxuXG4gIC8vIGRvIG5vdCBmaXJlIGEgdGFwIGV2ZW50IGlmIHRoZSBwb2ludGVyIHdhcyBtb3ZlZCBiZWZvcmUgYmVpbmcgbGlmdGVkXG4gIGlmICh0eXBlID09PSAndGFwJyAmJiAoaW50ZXJhY3Rpb24ucG9pbnRlcldhc01vdmVkIHx8XG4gICAgICAvLyBvciBpZiB0aGUgcG9pbnRlcnVwIHRhcmdldCBpcyBkaWZmZXJlbnQgdG8gdGhlIHBvaW50ZXJkb3duIHRhcmdldFxuICAgICAgIShwb2ludGVySW5mbyAmJiBwb2ludGVySW5mby5kb3duVGFyZ2V0ID09PSBldmVudFRhcmdldCkpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBjb25zdCBwYXRoID0gdXRpbHMuZG9tLmdldFBhdGgoZXZlbnRUYXJnZXQgYXMgSW50ZXJhY3QuRWxlbWVudCB8IERvY3VtZW50KVxuICBjb25zdCBzaWduYWxBcmcgPSB7XG4gICAgaW50ZXJhY3Rpb24sXG4gICAgcG9pbnRlcixcbiAgICBldmVudCxcbiAgICBldmVudFRhcmdldCxcbiAgICB0eXBlLFxuICAgIHBhdGgsXG4gICAgdGFyZ2V0czogW10gYXMgRXZlbnRUYXJnZXRMaXN0LFxuICAgIG5vZGU6IG51bGwsXG4gIH1cblxuICBmb3IgKGNvbnN0IG5vZGUgb2YgcGF0aCkge1xuICAgIHNpZ25hbEFyZy5ub2RlID0gbm9kZVxuXG4gICAgc2NvcGUuZmlyZSgncG9pbnRlckV2ZW50czpjb2xsZWN0LXRhcmdldHMnLCBzaWduYWxBcmcpXG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ2hvbGQnKSB7XG4gICAgc2lnbmFsQXJnLnRhcmdldHMgPSBzaWduYWxBcmcudGFyZ2V0cy5maWx0ZXIodGFyZ2V0ID0+XG4gICAgICB0YXJnZXQuZXZlbnRhYmxlLm9wdGlvbnMuaG9sZER1cmF0aW9uID09PSBpbnRlcmFjdGlvbi5wb2ludGVyc1twb2ludGVySW5kZXhdLmhvbGQuZHVyYXRpb24pXG4gIH1cblxuICByZXR1cm4gc2lnbmFsQXJnLnRhcmdldHNcbn1cblxuZnVuY3Rpb24gYWRkSW50ZXJhY3Rpb25Qcm9wcyAoeyBpbnRlcmFjdGlvbiB9KSB7XG4gIGludGVyYWN0aW9uLnByZXZUYXAgPSBudWxsICAgLy8gdGhlIG1vc3QgcmVjZW50IHRhcCBldmVudCBvbiB0aGlzIGludGVyYWN0aW9uXG4gIGludGVyYWN0aW9uLnRhcFRpbWUgPSAwICAgICAvLyB0aW1lIG9mIHRoZSBtb3N0IHJlY2VudCB0YXAgZXZlbnRcbn1cblxuZnVuY3Rpb24gYWRkSG9sZEluZm8gKHsgZG93biwgcG9pbnRlckluZm8gfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOnVwZGF0ZS1wb2ludGVyJ10pIHtcbiAgaWYgKCFkb3duICYmIHBvaW50ZXJJbmZvLmhvbGQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBvaW50ZXJJbmZvLmhvbGQgPSB7IGR1cmF0aW9uOiBJbmZpbml0eSwgdGltZW91dDogbnVsbCB9XG59XG5cbmZ1bmN0aW9uIGNsZWFySG9sZCAoeyBpbnRlcmFjdGlvbiwgcG9pbnRlckluZGV4IH0pIHtcbiAgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uaG9sZCkge1xuICAgIGNsZWFyVGltZW91dChpbnRlcmFjdGlvbi5wb2ludGVyc1twb2ludGVySW5kZXhdLmhvbGQudGltZW91dClcbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlQW5kQ2xlYXJIb2xkIChcbiAgeyBpbnRlcmFjdGlvbiwgcG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LCBkdXBsaWNhdGUgfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOm1vdmUnXSxcbiAgc2NvcGU6IEludGVyYWN0LlNjb3BlLFxuKSB7XG4gIGNvbnN0IHBvaW50ZXJJbmRleCA9IGludGVyYWN0aW9uLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gIGlmICghZHVwbGljYXRlICYmICghaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93biB8fCBpbnRlcmFjdGlvbi5wb2ludGVyV2FzTW92ZWQpKSB7XG4gICAgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJJc0Rvd24pIHtcbiAgICAgIGNsZWFyVGltZW91dChpbnRlcmFjdGlvbi5wb2ludGVyc1twb2ludGVySW5kZXhdLmhvbGQudGltZW91dClcbiAgICB9XG5cbiAgICBmaXJlKHtcbiAgICAgIGludGVyYWN0aW9uLFxuICAgICAgcG9pbnRlcixcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQ6IGV2ZW50VGFyZ2V0IGFzIEludGVyYWN0LkVsZW1lbnQsXG4gICAgICB0eXBlOiAnbW92ZScsXG4gICAgfSwgc2NvcGUpXG4gIH1cbn1cblxuZnVuY3Rpb24gZG93bkFuZFN0YXJ0SG9sZCAoeyBpbnRlcmFjdGlvbiwgcG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LCBwb2ludGVySW5kZXggfTogSW50ZXJhY3QuU2lnbmFsQXJnc1snaW50ZXJhY3Rpb25zOmRvd24nXSwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGNvbnN0IHRpbWVyID0gaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XS5ob2xkXG4gIGNvbnN0IHBhdGggPSB1dGlscy5kb20uZ2V0UGF0aChldmVudFRhcmdldCBhcyBJbnRlcmFjdC5FbGVtZW50IHwgRG9jdW1lbnQpXG4gIGNvbnN0IHNpZ25hbEFyZyA9IHtcbiAgICBpbnRlcmFjdGlvbixcbiAgICBwb2ludGVyLFxuICAgIGV2ZW50LFxuICAgIGV2ZW50VGFyZ2V0LFxuICAgIHR5cGU6ICdob2xkJyxcbiAgICB0YXJnZXRzOiBbXSBhcyBFdmVudFRhcmdldExpc3QsXG4gICAgcGF0aCxcbiAgICBub2RlOiBudWxsLFxuICB9XG5cbiAgZm9yIChjb25zdCBub2RlIG9mIHBhdGgpIHtcbiAgICBzaWduYWxBcmcubm9kZSA9IG5vZGVcblxuICAgIHNjb3BlLmZpcmUoJ3BvaW50ZXJFdmVudHM6Y29sbGVjdC10YXJnZXRzJywgc2lnbmFsQXJnKVxuICB9XG5cbiAgaWYgKCFzaWduYWxBcmcudGFyZ2V0cy5sZW5ndGgpIHsgcmV0dXJuIH1cblxuICBsZXQgbWluRHVyYXRpb24gPSBJbmZpbml0eVxuXG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHNpZ25hbEFyZy50YXJnZXRzKSB7XG4gICAgY29uc3QgaG9sZER1cmF0aW9uID0gdGFyZ2V0LmV2ZW50YWJsZS5vcHRpb25zLmhvbGREdXJhdGlvblxuXG4gICAgaWYgKGhvbGREdXJhdGlvbiA8IG1pbkR1cmF0aW9uKSB7XG4gICAgICBtaW5EdXJhdGlvbiA9IGhvbGREdXJhdGlvblxuICAgIH1cbiAgfVxuXG4gIHRpbWVyLmR1cmF0aW9uID0gbWluRHVyYXRpb25cbiAgdGltZXIudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGZpcmUoe1xuICAgICAgaW50ZXJhY3Rpb24sXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIHBvaW50ZXIsXG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdob2xkJyxcbiAgICB9LCBzY29wZSlcbiAgfSwgbWluRHVyYXRpb24pXG59XG5cbmZ1bmN0aW9uIHRhcEFmdGVyVXAgKHsgaW50ZXJhY3Rpb24sIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCB9OiBJbnRlcmFjdC5TaWduYWxBcmdzWydpbnRlcmFjdGlvbnM6dXAnXSwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGlmICghaW50ZXJhY3Rpb24ucG9pbnRlcldhc01vdmVkKSB7XG4gICAgZmlyZSh7IGludGVyYWN0aW9uLCBldmVudFRhcmdldCwgcG9pbnRlciwgZXZlbnQsIHR5cGU6ICd0YXAnIH0sIHNjb3BlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBTY29wZSkge1xuICBzY29wZS5wb2ludGVyRXZlbnRzID0gcG9pbnRlckV2ZW50c1xuICBzY29wZS5kZWZhdWx0cy5hY3Rpb25zLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzLmRlZmF1bHRzXG4gIHV0aWxzLmV4dGVuZChzY29wZS5hY3Rpb25zLnBoYXNlbGVzc1R5cGVzLCBwb2ludGVyRXZlbnRzLnR5cGVzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBwb2ludGVyRXZlbnRzXG4iLCJpbXBvcnQgeyBMaXN0ZW5lck1hcCB9IGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnXG5pbXBvcnQgUG9pbnRlckV2ZW50IGZyb20gJy4vUG9pbnRlckV2ZW50J1xuaW1wb3J0IGJhc2VQbHVnaW4gZnJvbSAnLi9iYXNlJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGlvbicge1xuICBpbnRlcmZhY2UgSW50ZXJhY3Rpb24ge1xuICAgIGhvbGRJbnRlcnZhbEhhbmRsZT86IGFueVxuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9wb2ludGVyLWV2ZW50cy9Qb2ludGVyRXZlbnQnIHtcbiAgaW50ZXJmYWNlIFBvaW50ZXJFdmVudDxUIGV4dGVuZHMgc3RyaW5nID0gYW55PiB7XG4gICAgY291bnQ/OiBudW1iZXJcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvcG9pbnRlci1ldmVudHMvYmFzZScge1xuICBpbnRlcmZhY2UgUG9pbnRlckV2ZW50T3B0aW9ucyB7XG4gICAgaG9sZFJlcGVhdEludGVydmFsPzogbnVtYmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIHNjb3BlLnVzZVBsdWdpbihiYXNlUGx1Z2luKVxuXG4gIGNvbnN0IHtcbiAgICBwb2ludGVyRXZlbnRzLFxuICB9ID0gc2NvcGVcblxuICAvLyBkb24ndCByZXBlYXQgYnkgZGVmYXVsdFxuICBwb2ludGVyRXZlbnRzLmRlZmF1bHRzLmhvbGRSZXBlYXRJbnRlcnZhbCA9IDBcbiAgcG9pbnRlckV2ZW50cy50eXBlcy5ob2xkcmVwZWF0ID0gc2NvcGUuYWN0aW9ucy5waGFzZWxlc3NUeXBlcy5ob2xkcmVwZWF0ID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBvbk5ldyAoeyBwb2ludGVyRXZlbnQgfTogeyBwb2ludGVyRXZlbnQ6IFBvaW50ZXJFdmVudDxhbnk+IH0pIHtcbiAgaWYgKHBvaW50ZXJFdmVudC50eXBlICE9PSAnaG9sZCcpIHsgcmV0dXJuIH1cblxuICBwb2ludGVyRXZlbnQuY291bnQgPSAocG9pbnRlckV2ZW50LmNvdW50IHx8IDApICsgMVxufVxuXG5mdW5jdGlvbiBvbkZpcmVkIChcbiAgeyBpbnRlcmFjdGlvbiwgcG9pbnRlckV2ZW50LCBldmVudFRhcmdldCwgdGFyZ2V0cyB9OiBJbnRlcmFjdC5TaWduYWxBcmdzWydwb2ludGVyRXZlbnRzOmZpcmVkJ10sXG4gIHNjb3BlOiBJbnRlcmFjdC5TY29wZSxcbikge1xuICBpZiAocG9pbnRlckV2ZW50LnR5cGUgIT09ICdob2xkJyB8fCAhdGFyZ2V0cy5sZW5ndGgpIHsgcmV0dXJuIH1cblxuICAvLyBnZXQgdGhlIHJlcGVhdCBpbnRlcnZhbCBmcm9tIHRoZSBmaXJzdCBldmVudGFibGVcbiAgY29uc3QgaW50ZXJ2YWwgPSB0YXJnZXRzWzBdLmV2ZW50YWJsZS5vcHRpb25zLmhvbGRSZXBlYXRJbnRlcnZhbFxuXG4gIC8vIGRvbid0IHJlcGVhdCBpZiB0aGUgaW50ZXJ2YWwgaXMgMCBvciBsZXNzXG4gIGlmIChpbnRlcnZhbCA8PSAwKSB7IHJldHVybiB9XG5cbiAgLy8gc2V0IGEgdGltZW91dCB0byBmaXJlIHRoZSBob2xkcmVwZWF0IGV2ZW50XG4gIGludGVyYWN0aW9uLmhvbGRJbnRlcnZhbEhhbmRsZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHNjb3BlLnBvaW50ZXJFdmVudHMuZmlyZSh7XG4gICAgICBpbnRlcmFjdGlvbixcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgdHlwZTogJ2hvbGQnLFxuICAgICAgcG9pbnRlcjogcG9pbnRlckV2ZW50LFxuICAgICAgZXZlbnQ6IHBvaW50ZXJFdmVudCxcbiAgICB9LCBzY29wZSlcbiAgfSwgaW50ZXJ2YWwpXG59XG5cbmZ1bmN0aW9uIGVuZEhvbGRSZXBlYXQgKHsgaW50ZXJhY3Rpb24gfTogeyBpbnRlcmFjdGlvbjogSW50ZXJhY3QuSW50ZXJhY3Rpb24gfSkge1xuICAvLyBzZXQgdGhlIGludGVyYWN0aW9uJ3MgaG9sZFN0b3BUaW1lIHByb3BlcnR5XG4gIC8vIHRvIHN0b3AgZnVydGhlciBob2xkUmVwZWF0IGV2ZW50c1xuICBpZiAoaW50ZXJhY3Rpb24uaG9sZEludGVydmFsSGFuZGxlKSB7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcmFjdGlvbi5ob2xkSW50ZXJ2YWxIYW5kbGUpXG4gICAgaW50ZXJhY3Rpb24uaG9sZEludGVydmFsSGFuZGxlID0gbnVsbFxuICB9XG59XG5cbmNvbnN0IGhvbGRSZXBlYXQ6IEludGVyYWN0LlBsdWdpbiA9IHtcbiAgaWQ6ICdwb2ludGVyLWV2ZW50cy9ob2xkUmVwZWF0JyxcbiAgaW5zdGFsbCxcbiAgbGlzdGVuZXJzOiBbJ21vdmUnLCAndXAnLCAnY2FuY2VsJywgJ2VuZGFsbCddLnJlZHVjZShcbiAgICAoYWNjLCBlbmRlclR5cGVzKSA9PiB7XG4gICAgICAoYWNjIGFzIGFueSlbYHBvaW50ZXJFdmVudHM6JHtlbmRlclR5cGVzfWBdID0gZW5kSG9sZFJlcGVhdFxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAge1xuICAgICAgJ3BvaW50ZXJFdmVudHM6bmV3Jzogb25OZXcsXG4gICAgICAncG9pbnRlckV2ZW50czpmaXJlZCc6IG9uRmlyZWQsXG4gICAgfSBhcyBMaXN0ZW5lck1hcCxcbiAgKSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgaG9sZFJlcGVhdFxuIiwiaW1wb3J0IFNjb3BlIGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZCdcblxudHlwZSBJbnRlcmFjdGFibGUgPSBpbXBvcnQgKCdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScpLmRlZmF1bHRcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RhYmxlJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGFibGUge1xuICAgIHBvaW50ZXJFdmVudHM6IHR5cGVvZiBwb2ludGVyRXZlbnRzTWV0aG9kXG4gICAgX19iYWNrQ29tcGF0T3B0aW9uOiAob3B0aW9uTmFtZTogc3RyaW5nLCBuZXdWYWx1ZTogYW55KSA9PiBhbnlcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgY29uc3QgeyBJbnRlcmFjdGFibGUgfSA9IHNjb3BlXG5cbiAgSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5wb2ludGVyRXZlbnRzID0gcG9pbnRlckV2ZW50c01ldGhvZFxuXG4gIGNvbnN0IF9fYmFja0NvbXBhdE9wdGlvbiA9IEludGVyYWN0YWJsZS5wcm90b3R5cGUuX2JhY2tDb21wYXRPcHRpb25cblxuICBJbnRlcmFjdGFibGUucHJvdG90eXBlLl9iYWNrQ29tcGF0T3B0aW9uID0gZnVuY3Rpb24gKG9wdGlvbk5hbWUsIG5ld1ZhbHVlKSB7XG4gICAgY29uc3QgcmV0ID0gX19iYWNrQ29tcGF0T3B0aW9uLmNhbGwodGhpcywgb3B0aW9uTmFtZSwgbmV3VmFsdWUpXG5cbiAgICBpZiAocmV0ID09PSB0aGlzKSB7XG4gICAgICB0aGlzLmV2ZW50cy5vcHRpb25zW29wdGlvbk5hbWVdID0gbmV3VmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9pbnRlckV2ZW50c01ldGhvZCAodGhpczogSW50ZXJhY3QuSW50ZXJhY3RhYmxlLCBvcHRpb25zOiBhbnkpIHtcbiAgZXh0ZW5kKHRoaXMuZXZlbnRzLm9wdGlvbnMsIG9wdGlvbnMpXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuY29uc3QgcGx1Z2luOiBJbnRlcmFjdC5QbHVnaW4gPSB7XG4gIGlkOiAncG9pbnRlci1ldmVudHMvaW50ZXJhY3RhYmxlVGFyZ2V0cycsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgICdwb2ludGVyRXZlbnRzOmNvbGxlY3QtdGFyZ2V0cyc6ICh7XG4gICAgICB0YXJnZXRzLFxuICAgICAgbm9kZSxcbiAgICAgIHR5cGUsXG4gICAgICBldmVudFRhcmdldCxcbiAgICB9LCBzY29wZSkgPT4ge1xuICAgICAgc2NvcGUuaW50ZXJhY3RhYmxlcy5mb3JFYWNoTWF0Y2gobm9kZSwgKGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50YWJsZSA9IGludGVyYWN0YWJsZS5ldmVudHNcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGV2ZW50YWJsZS5vcHRpb25zXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50YWJsZS50eXBlc1t0eXBlXSAmJlxuICAgICAgICAgIGV2ZW50YWJsZS50eXBlc1t0eXBlXS5sZW5ndGggJiZcbiAgICAgICAgaW50ZXJhY3RhYmxlLnRlc3RJZ25vcmVBbGxvdyhvcHRpb25zLCBub2RlLCBldmVudFRhcmdldCkpIHtcbiAgICAgICAgICB0YXJnZXRzLnB1c2goe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGV2ZW50YWJsZSxcbiAgICAgICAgICAgIHByb3BzOiB7IGludGVyYWN0YWJsZSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcblxuICAgICdpbnRlcmFjdGFibGU6bmV3JzogKHsgaW50ZXJhY3RhYmxlIH0pID0+IHtcbiAgICAgIGludGVyYWN0YWJsZS5ldmVudHMuZ2V0UmVjdCA9IGZ1bmN0aW9uIChlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpbnRlcmFjdGFibGUuZ2V0UmVjdChlbGVtZW50KVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnaW50ZXJhY3RhYmxlOnNldCc6ICh7IGludGVyYWN0YWJsZSwgb3B0aW9ucyB9LCBzY29wZSkgPT4ge1xuICAgICAgZXh0ZW5kKGludGVyYWN0YWJsZS5ldmVudHMub3B0aW9ucywgc2NvcGUucG9pbnRlckV2ZW50cy5kZWZhdWx0cylcbiAgICAgIGV4dGVuZChpbnRlcmFjdGFibGUuZXZlbnRzLm9wdGlvbnMsIG9wdGlvbnMucG9pbnRlckV2ZW50cyB8fCB7fSlcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBwbHVnaW5cbiIsImltcG9ydCAqIGFzIHBvaW50ZXJFdmVudHMgZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IGhvbGRSZXBlYXQgZnJvbSAnLi9ob2xkUmVwZWF0J1xuaW1wb3J0IGludGVyYWN0YWJsZVRhcmdldHMgZnJvbSAnLi9pbnRlcmFjdGFibGVUYXJnZXRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAncG9pbnRlci1ldmVudHMnLFxuICBpbnN0YWxsIChzY29wZTogSW50ZXJhY3QuU2NvcGUpIHtcbiAgICBzY29wZS51c2VQbHVnaW4ocG9pbnRlckV2ZW50cylcbiAgICBzY29wZS51c2VQbHVnaW4oaG9sZFJlcGVhdClcbiAgICBzY29wZS51c2VQbHVnaW4oaW50ZXJhY3RhYmxlVGFyZ2V0cylcbiAgfSxcbn1cblxuZXhwb3J0IHtcbiAgcG9pbnRlckV2ZW50cyxcbiAgaG9sZFJlcGVhdCxcbiAgaW50ZXJhY3RhYmxlVGFyZ2V0cyxcbn1cbiIsImltcG9ydCBJbnRlcmFjdGFibGUgZnJvbSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGFibGUnXG5pbXBvcnQgeyBBY3Rpb25Qcm9wcywgSW50ZXJhY3Rpb24gfSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJ1xuaW1wb3J0IFNjb3BlIGZyb20gJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnXG5pbXBvcnQgeyBhcnIsIGV4dGVuZCwgaXMsIHBvaW50ZXIgYXMgcG9pbnRlclV0aWxzLCByZWN0IGFzIHJlY3RVdGlscywgd2luIH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaW5kZXgnXG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlIHtcbiAgICByZWZsb3c6IChhY3Rpb246IEFjdGlvblByb3BzKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiByZWZsb3c+XG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3Rpb24nIHtcbiAgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgICBfcmVmbG93UHJvbWlzZTogUHJvbWlzZTx2b2lkPlxuICAgIF9yZWZsb3dSZXNvbHZlOiAoKSA9PiB2b2lkXG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvSW50ZXJhY3RFdmVudCcge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gIGludGVyZmFjZSBQaGFzZU1hcCB7XG4gICAgcmVmbG93PzogdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgY29uc3Qge1xuICAgIC8qKiBAbGVuZHMgSW50ZXJhY3RhYmxlICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuICAgIEludGVyYWN0YWJsZSxcbiAgfSA9IHNjb3BlXG5cbiAgc2NvcGUuYWN0aW9ucy5waGFzZXMucmVmbG93ID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBpbnRlcmFjdGFibGUgPSBpbnRlcmFjdCh0YXJnZXQpXG4gICAqIGNvbnN0IGRyYWcgPSB7IG5hbWU6IGRyYWcsIGF4aXM6ICd4JyB9XG4gICAqIGNvbnN0IHJlc2l6ZSA9IHsgbmFtZTogcmVzaXplLCBlZGdlczogeyBsZWZ0OiB0cnVlLCBib3R0b206IHRydWUgfVxuICAgKlxuICAgKiBpbnRlcmFjdGFibGUucmVmbG93KGRyYWcpXG4gICAqIGludGVyYWN0YWJsZS5yZWZsb3cocmVzaXplKVxuICAgKiBgYGBcbiAgICpcbiAgICogU3RhcnQgYW4gYWN0aW9uIHNlcXVlbmNlIHRvIHJlLWFwcGx5IG1vZGlmaWVycywgY2hlY2sgZHJvcHMsIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHsgT2JqZWN0IH0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gYmVnaW5cbiAgICogQHBhcmFtIHsgc3RyaW5nIH0gYWN0aW9uLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGFjdGlvblxuICAgKiBAcmV0dXJucyB7IFByb21pc2UgfSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgYEludGVyYWN0YWJsZWAgd2hlbiBhY3Rpb25zIG9uIGFsbCB0YXJnZXRzIGhhdmUgZW5kZWRcbiAgICovXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUucmVmbG93ID0gZnVuY3Rpb24gKGFjdGlvbikge1xuICAgIHJldHVybiByZWZsb3codGhpcywgYWN0aW9uLCBzY29wZSlcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZsb3c8VCBleHRlbmRzIEludGVyYWN0LkFjdGlvbk5hbWU+IChpbnRlcmFjdGFibGU6IEludGVyYWN0YWJsZSwgYWN0aW9uOiBBY3Rpb25Qcm9wczxUPiwgc2NvcGU6IFNjb3BlKTogUHJvbWlzZTxJbnRlcmFjdGFibGU+IHtcbiAgY29uc3QgZWxlbWVudHMgPSAoaXMuc3RyaW5nKGludGVyYWN0YWJsZS50YXJnZXQpXG4gICAgPyBhcnIuZnJvbShpbnRlcmFjdGFibGUuX2NvbnRleHQucXVlcnlTZWxlY3RvckFsbChpbnRlcmFjdGFibGUudGFyZ2V0KSlcbiAgICA6IFtpbnRlcmFjdGFibGUudGFyZ2V0XSkgYXMgSW50ZXJhY3QuRWxlbWVudFtdXG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIHZhcmlhYmxlLW5hbWVcbiAgY29uc3QgUHJvbWlzZSA9ICh3aW4ud2luZG93IGFzIGFueSkuUHJvbWlzZVxuICBjb25zdCBwcm9taXNlczogQXJyYXk8UHJvbWlzZTxudWxsPj4gfCBudWxsID0gUHJvbWlzZSA/IFtdIDogbnVsbFxuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgIGNvbnN0IHJlY3QgPSBpbnRlcmFjdGFibGUuZ2V0UmVjdChlbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudClcblxuICAgIGlmICghcmVjdCkgeyBicmVhayB9XG5cbiAgICBjb25zdCBydW5uaW5nSW50ZXJhY3Rpb24gPSBhcnIuZmluZChcbiAgICAgIHNjb3BlLmludGVyYWN0aW9ucy5saXN0LFxuICAgICAgKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb24uaW50ZXJhY3RpbmcoKSAmJlxuICAgICAgICAgIGludGVyYWN0aW9uLmludGVyYWN0YWJsZSA9PT0gaW50ZXJhY3RhYmxlICYmXG4gICAgICAgICAgaW50ZXJhY3Rpb24uZWxlbWVudCA9PT0gZWxlbWVudCAmJlxuICAgICAgICAgIGludGVyYWN0aW9uLnByZXBhcmVkLm5hbWUgPT09IGFjdGlvbi5uYW1lXG4gICAgICB9KVxuICAgIGxldCByZWZsb3dQcm9taXNlOiBQcm9taXNlPG51bGw+XG5cbiAgICBpZiAocnVubmluZ0ludGVyYWN0aW9uKSB7XG4gICAgICBydW5uaW5nSW50ZXJhY3Rpb24ubW92ZSgpXG5cbiAgICAgIGlmIChwcm9taXNlcykge1xuICAgICAgICByZWZsb3dQcm9taXNlID0gcnVubmluZ0ludGVyYWN0aW9uLl9yZWZsb3dQcm9taXNlIHx8IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICAgICAgICBydW5uaW5nSW50ZXJhY3Rpb24uX3JlZmxvd1Jlc29sdmUgPSByZXNvbHZlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgeHl3aCA9IHJlY3RVdGlscy50bGJyVG9YeXdoKHJlY3QpXG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHBhZ2UgICAgIDogeyB4OiB4eXdoLngsIHk6IHh5d2gueSB9LFxuICAgICAgICBjbGllbnQgICA6IHsgeDogeHl3aC54LCB5OiB4eXdoLnkgfSxcbiAgICAgICAgdGltZVN0YW1wOiBzY29wZS5ub3coKSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXZlbnQgPSBwb2ludGVyVXRpbHMuY29vcmRzVG9FdmVudChjb29yZHMpXG4gICAgICByZWZsb3dQcm9taXNlID0gc3RhcnRSZWZsb3c8VD4oc2NvcGUsIGludGVyYWN0YWJsZSwgZWxlbWVudCwgYWN0aW9uLCBldmVudClcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZXMpIHtcbiAgICAgIHByb21pc2VzLnB1c2gocmVmbG93UHJvbWlzZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZXMgJiYgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4gaW50ZXJhY3RhYmxlKVxufVxuXG5mdW5jdGlvbiBzdGFydFJlZmxvdzxUIGV4dGVuZHMgSW50ZXJhY3QuQWN0aW9uTmFtZT4gKHNjb3BlOiBTY29wZSwgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGUsIGVsZW1lbnQ6IEludGVyYWN0LkVsZW1lbnQsIGFjdGlvbjogQWN0aW9uUHJvcHM8VD4sIGV2ZW50OiBhbnkpIHtcbiAgY29uc3QgaW50ZXJhY3Rpb24gPSBzY29wZS5pbnRlcmFjdGlvbnMubmV3KHsgcG9pbnRlclR5cGU6ICdyZWZsb3cnIH0pXG4gIGNvbnN0IHNpZ25hbEFyZyA9IHtcbiAgICBpbnRlcmFjdGlvbixcbiAgICBldmVudCxcbiAgICBwb2ludGVyOiBldmVudCxcbiAgICBldmVudFRhcmdldDogZWxlbWVudCxcbiAgICBwaGFzZTogJ3JlZmxvdycsXG4gIH0gYXMgY29uc3RcblxuICBpbnRlcmFjdGlvbi5pbnRlcmFjdGFibGUgPSBpbnRlcmFjdGFibGVcbiAgaW50ZXJhY3Rpb24uZWxlbWVudCA9IGVsZW1lbnRcbiAgaW50ZXJhY3Rpb24ucHJlcGFyZWQgPSBleHRlbmQoe30sIGFjdGlvbilcbiAgaW50ZXJhY3Rpb24ucHJldkV2ZW50ID0gZXZlbnRcbiAgaW50ZXJhY3Rpb24udXBkYXRlUG9pbnRlcihldmVudCwgZXZlbnQsIGVsZW1lbnQsIHRydWUpXG5cbiAgaW50ZXJhY3Rpb24uX2RvUGhhc2Uoc2lnbmFsQXJnKVxuXG4gIGNvbnN0IHJlZmxvd1Byb21pc2UgPSAod2luLndpbmRvdyBhcyB1bmtub3duIGFzIGFueSkuUHJvbWlzZVxuICAgID8gbmV3ICh3aW4ud2luZG93IGFzIHVua25vd24gYXMgYW55KS5Qcm9taXNlKChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICAgIGludGVyYWN0aW9uLl9yZWZsb3dSZXNvbHZlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgOiBudWxsXG5cbiAgaW50ZXJhY3Rpb24uX3JlZmxvd1Byb21pc2UgPSByZWZsb3dQcm9taXNlXG4gIGludGVyYWN0aW9uLnN0YXJ0KGFjdGlvbiwgaW50ZXJhY3RhYmxlLCBlbGVtZW50KVxuXG4gIGlmIChpbnRlcmFjdGlvbi5faW50ZXJhY3RpbmcpIHtcbiAgICBpbnRlcmFjdGlvbi5tb3ZlKHNpZ25hbEFyZylcbiAgICBpbnRlcmFjdGlvbi5lbmQoZXZlbnQpXG4gIH1cbiAgZWxzZSB7XG4gICAgaW50ZXJhY3Rpb24uc3RvcCgpXG4gIH1cblxuICBpbnRlcmFjdGlvbi5yZW1vdmVQb2ludGVyKGV2ZW50LCBldmVudClcbiAgaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93biA9IGZhbHNlXG5cbiAgcmV0dXJuIHJlZmxvd1Byb21pc2Vcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ3JlZmxvdycsXG4gIGluc3RhbGwsXG4gIGxpc3RlbmVyczoge1xuICAgIC8vIHJlbW92ZSBjb21wbGV0ZWQgcmVmbG93IGludGVyYWN0aW9uc1xuICAgICdpbnRlcmFjdGlvbnM6c3RvcCc6ICh7IGludGVyYWN0aW9uIH0sIHNjb3BlKSA9PiB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucG9pbnRlclR5cGUgPT09ICdyZWZsb3cnKSB7XG4gICAgICAgIGlmIChpbnRlcmFjdGlvbi5fcmVmbG93UmVzb2x2ZSkge1xuICAgICAgICAgIGludGVyYWN0aW9uLl9yZWZsb3dSZXNvbHZlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGFyci5yZW1vdmUoc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QsIGludGVyYWN0aW9uKVxuICAgICAgfVxuICAgIH0sXG4gIH0sXG59IGFzIEludGVyYWN0LlBsdWdpblxuIiwiZXhwb3J0IGRlZmF1bHQge31cbiIsImV4cG9ydCBjb25zdCBleGNoYW5nZSA9IHt9XG4iLCJpbXBvcnQgJ0BpbnRlcmFjdGpzL3R5cGVzJ1xuXG5pbXBvcnQgYWN0aW9ucyBmcm9tICdAaW50ZXJhY3Rqcy9hY3Rpb25zJ1xuXG5pbXBvcnQgYXJyYW5nZSBmcm9tICdAaW50ZXJhY3Rqcy9hcnJhbmdlJ1xuaW1wb3J0IGF1dG9TY3JvbGwgZnJvbSAnQGludGVyYWN0anMvYXV0by1zY3JvbGwnXG5pbXBvcnQgYXV0b1N0YXJ0IGZyb20gJ0BpbnRlcmFjdGpzL2F1dG8tc3RhcnQnXG5cbmltcG9ydCBjbG9uZSBmcm9tICdAaW50ZXJhY3Rqcy9jbG9uZSdcblxuaW1wb3J0IGNvbXBvbmVudHMgZnJvbSAnQGludGVyYWN0anMvY29tcG9uZW50cydcbmltcG9ydCBpbnRlcmFjdGFibGVQcmV2ZW50RGVmYXVsdCBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL2ludGVyYWN0YWJsZVByZXZlbnREZWZhdWx0J1xuaW1wb3J0IGRldlRvb2xzIGZyb20gJ0BpbnRlcmFjdGpzL2Rldi10b29scydcbmltcG9ydCAqIGFzIGZlZWRiYWNrIGZyb20gJ0BpbnRlcmFjdGpzL2ZlZWRiYWNrJ1xuaW1wb3J0IGluZXJ0aWEgZnJvbSAnQGludGVyYWN0anMvaW5lcnRpYSdcbmltcG9ydCBpbnRlcmFjdCBmcm9tICdAaW50ZXJhY3Rqcy9pbnRlcmFjdCdcbmltcG9ydCBtb2RpZmllcnMgZnJvbSAnQGludGVyYWN0anMvbW9kaWZpZXJzL2luZGV4J1xuaW1wb3J0IG11bHRpVGFyZ2V0IGZyb20gJ0BpbnRlcmFjdGpzL211bHRpLXRhcmdldCdcbmltcG9ydCBvZmZzZXQgZnJvbSAnQGludGVyYWN0anMvb2Zmc2V0J1xuaW1wb3J0IHBvaW50ZXJFdmVudHMgZnJvbSAnQGludGVyYWN0anMvcG9pbnRlci1ldmVudHMnXG5pbXBvcnQgcmVmbG93IGZyb20gJ0BpbnRlcmFjdGpzL3JlZmxvdydcblxuaW1wb3J0ICogYXMgZGlzcGxhY2UgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZGlzcGxhY2UnXG5pbXBvcnQgeyBleGNoYW5nZSB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4Y2hhbmdlJ1xuaW1wb3J0ICogYXMgcG9pbnRlclV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL3BvaW50ZXJVdGlscydcbmltcG9ydCAqIGFzIHZ1ZUNvbXBvbmVudHMgZnJvbSAnQGludGVyYWN0anMvdnVlJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdFN0YXRpYycge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RTdGF0aWMge1xuICAgIF9fdXRpbHM6IHtcbiAgICAgIGV4Y2hhbmdlOiB0eXBlb2YgZXhjaGFuZ2VcbiAgICAgIGRpc3BsYWNlOiB0eXBlb2YgZGlzcGxhY2VcbiAgICAgIHBvaW50ZXI6IHR5cGVvZiBwb2ludGVyVXRpbHNcbiAgICB9XG4gICAgZmVlZGJhY2s6IHR5cGVvZiBmZWVkYmFja1xuICAgIHZ1ZToge1xuICAgICAgY29tcG9uZW50czogdHlwZW9mIHZ1ZUNvbXBvbmVudHNcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJhY3QudXNlKG11bHRpVGFyZ2V0KVxuXG5pbnRlcmFjdC51c2UoaW50ZXJhY3RhYmxlUHJldmVudERlZmF1bHQpXG5cbmludGVyYWN0LnVzZShvZmZzZXQpXG5cbi8vIGludGVyYWN0aW9uIGVsZW1lbnQgY2xvbmluZ1xuaW50ZXJhY3QudXNlKGNsb25lKVxuXG4vLyBzb3J0YWJsZSBhbmQgc3dhcHBhYmxlXG5pbnRlcmFjdC51c2UoYXJyYW5nZSlcblxuLy8gcG9pbnRlckV2ZW50c1xuaW50ZXJhY3QudXNlKHBvaW50ZXJFdmVudHMpXG5cbi8vIGluZXJ0aWFcbmludGVyYWN0LnVzZShpbmVydGlhKVxuXG4vLyBzbmFwLCByZXNpemUsIGV0Yy5cbmludGVyYWN0LnVzZShtb2RpZmllcnMpXG5cbi8vIGF1dG9TdGFydCwgaG9sZFxuaW50ZXJhY3QudXNlKGF1dG9TdGFydClcblxuLy8gZHJhZyBhbmQgZHJvcCwgcmVzaXplLCBnZXN0dXJlXG5pbnRlcmFjdC51c2UoYWN0aW9ucylcblxuLy8gYXV0b1Njcm9sbFxuaW50ZXJhY3QudXNlKGF1dG9TY3JvbGwpXG5cbi8vIHJlZmxvd1xuaW50ZXJhY3QudXNlKHJlZmxvdylcblxuaW50ZXJhY3QuZmVlZGJhY2sgPSBmZWVkYmFja1xuXG5pbnRlcmFjdC51c2UoY29tcG9uZW50cylcblxuaW50ZXJhY3QudnVlID0ge1xuICBjb21wb25lbnRzOiB2dWVDb21wb25lbnRzLFxufVxuXG5pbnRlcmFjdC5fX3V0aWxzID0ge1xuICBleGNoYW5nZSxcbiAgZGlzcGxhY2UsXG4gIHBvaW50ZXI6IHBvaW50ZXJVdGlscyxcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBpbnRlcmFjdC51c2UoZGV2VG9vbHMpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGludGVyYWN0XG4iLCJpbXBvcnQgaW50ZXJhY3QgZnJvbSAnQGludGVyYWN0anMvaW50ZXJhY3Rqcy9pbmRleCdcblxuaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmICEhbW9kdWxlKSB7XG4gIHRyeSB7IG1vZHVsZS5leHBvcnRzID0gaW50ZXJhY3QgfVxuICBjYXRjaCB7fVxufVxuXG4oaW50ZXJhY3QgYXMgYW55KS5kZWZhdWx0ID0gaW50ZXJhY3RcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJhY3RcbiIsIlxucmV0dXJuIF8kaW5kZXhfODU7XG5cbn0pO1xuIl19

(function(n){window.$rql={api:{register:function(t,i){i?(this[i]||(this[i]={}),this[i]=n.extend(this[i],t)):$rql.api=n.extend(this,t)}},bool:function(n){return n&&n!="false"?!0:!1},debug:document.cookie&&document.cookie.indexOf("debug=1")>-1,debugOnError:!1,delegateAll:function(t){for(var i in t)n.isFunction(t[i])&&(t[i]=n.proxy(t[i],t))},error:function(t){$log&&$log.error(t);$rql.debugOnError;$rql.debug&&n.error(t)},getErrorMessage:function(n){return n&&n.statusText?n.statusText:n?$rql.i18n.strings.Error+": "+n:$rql.i18n.strings.Error},isEvent:function(n){return n&&$rql.isObject(n)&&n.currentTarget},isNull:function(){for(var n=0;n<arguments.length;n++)if(arguments[n])return arguments[n]},isElement:function(){for(var n=0;n<arguments.length;n++)if(arguments[n]&&arguments[n].length>0)return arguments[n]},isObject:function(n){return typeof n=="object"},isString:function(n){return typeof n=="string"},isUndefined:function(n){return typeof n=="undefined"},nameOf:function(n,t){var i=0;for(var r in n)if(i++==t)return r},newId:function(){return"r"+(new Date).valueOf()+Math.floor(Math.random()*1e5)},safeHtmlDecode:function(n){if(n&&typeof n=="string"){n=n.replace(/</g,"&lt;");n=n.replace(/>/g,"&gt;");window.$rql.htmlDecodingTextarea||(window.$rql.htmlDecodingTextarea=document.createElement("textarea"));var t=window.$rql.htmlDecodingTextarea;t.innerHTML=n;n=t.textContent;t.textContent=""}return n},javascriptStringDecode:function(n){var t=n;return t=t.replaceAll("\\u0026","&"),t=t.replaceAll("\\u0027","'"),t=t.replaceAll("\\u003c","<"),t.replaceAll("\\u003e",">")},sanitizeValue:function(n){return n?n.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi,""):n},htmlDecode:function(t){return n("<div/>").html(t).text().replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi,"")},htmlEncode:function(t){return n("<a/>").text(t).html()},htmlEscape:function(n){return n&&typeof n=="string"?n.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):n},htmlUnescape:function(n){return n.replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")},escapeQuotes:function(n){return n.replace(/'/g,"\\'").replace(/"/g,'\\"')},coalesce:function(){for(var n=0;n<arguments.length;n++)if(!this.isUndefined(arguments[n])&&arguments[n]!=null)return arguments[n]},getPropertyValuesAsArray:function(n){var t=null,i;if(n){t=[];for(i in n)n.hasOwnProperty(i)&&n[i]!=null&&t.push(n[i])}return t&&t.length!=0?t:null}};n.fn.rql=function(n,t){if(""+n==n){var r=arguments,i=$rql.ui.controls[n];this.each(function(){i?$rql.ui.create(n,this,t):i||$rql.error($f("Invalid control or method: {0}",n))})}return this}})(jQuery);
(function(n){n.extend(Array.prototype,{add:function(n){return this[this.length]=n,this},addRange:function(n){for(var t=0;t<n.length;t++)this[this.length]=n[t];return this},any:function(n){for(var t=0;t<this.length;t++)if(n(this[t]))return!0;return!1},all:function(n){for(var t=0;t<this.length;t++)if(!n(this[t]))return!1;return!0},each:function(n){for(var t=0;t<this.length;t++)n(this[t])},clean:function(n){for(var t=0;t<this.length;t++)this[t]==n&&(this.splice(t,1),t--);return this},contains:function(n){for(var t=0;t<this.length;t++)if(this[t]===n)return!0;return!1},copy:function(n){for(var t,u,r=[],i=0;i<this.length;i++)t=this[i],u=n?n(t):!0,u&&r.push(typeof t=="Array"?t.copy():t);return r},distinct:function(){for(var n=[],t=0;t<this.length;t++)n.contains(this[t])||(n[n.length]=this[t]);return n},first:function(n){if(n){for(var t=0;t<this.length;t++)if(n(this[t]))return this[t]}else if(this.length>0)return this[0];return null},init:function(n,t){t||(t=this.length);for(var i=0;i<t;i++)this[i]=n;return this},insertAt:function(n,t){return this.splice(n,0,t),this},last:function(n){if(n){for(var t=this.length-1;t>=0;t--)if(n(this[t]))return this[t]}else if(this.length>0)return this[this.length-1];return null},remove:function(t){var f,r,i,u;if(n.isFunction(t))for(f=[],i=0;i<this.length;i++)t(this[i])&&this.splice(i--,1);else for(r=Array.isArray(t)?t:[t],i=0;i<r.length;i++)u=this.indexOf(r[i]),u>=0&&this.splice(u,1);return this},removeAt:function(n){this.splice(n,1)},select:function(n){for(var i=[],t=0;t<this.length;t++)i.add(n(this[t]));return i},where:function(n){for(var i=[],t=0;t<this.length;t++)n(this[t])&&Array.add(i,this[t]);return i},findIndexByKey:function(n,t){if(n!=null)for(var i=0;i<this.length;i++)if(this[i]&&this[i][n]==t)return i;return-1},findIndexBy:function(n){if(n){for(var t=0;t<this.length;t++)if(n(this[t]))return t}else if(this.length>0)return 0;return-1},findByKey:function(n,t){var i=this.findIndexByKey(n,t);return i!=-1?this[i]:null},max:function(n){for(var i,t=null,r=0;r<this.length;r++)i=n(this[r]),(t===null||typeof i=="number"&&i>t)&&(t=i);return t},min:function(n){for(var i,t=null,r=0;r<this.length;r++)i=n(this[r]),(t===null||typeof i=="number"&&i<t)&&(t=i);return t},maxValue:function(){return Math.max.apply(Math,this)},ofType:function(n){for(var i=[],t=0;t<this.length;t++)this[t]instanceof n&&Array.add(i,this[t]);return i},equals:function(n){if(!n||this.length!==n.length)return!1;for(var t=0,i=this.length;t<i;t++)if(this[t]instanceof Array&&n[t]instanceof Array){if(!this[t].equals(n[t]))return!1}else if(this[t]!==n[t])return!1;return!0},move:function(n,t){if(t>=this.length)for(var i=t-this.length+1;i--;)this.push(undefined);return this.splice(t,0,this.splice(n,1)[0]),this},diff:function(n){return this.filter(function(t){return n.indexOf(t)<0})},toObject:function(){for(var t={},n=0;n<this.length;n++)t[this[n]]=n;return t}});Array.prototype.indexOf||(Array.prototype.indexOf=function(n){for(var t=0;t<this.length;t++)if(this[t]==n)return t;return-1})})(jQuery);
(function(n){var u=Sys.CultureInfo.CurrentCulture.dateTimeFormat,f=window.$rql.api={dataTypes:{Boolean:{fromJson:function(n){return $rql.bool(n)},format:function(n,t){var i=$rql.i18n.strings[n?"Yes":"No"];return t?$f(t,i):i},toJson:function(n){return n},isValid:function(){return!0}},Currency:{fromJson:function(n){return n==0?0:n?parseFloat(n):null},format:function(n,t){return n==0?t?t.replace(new RegExp("\\{(.)+\\}","gm"),"0.00"):"0.00":$f(t?t:"{0:n2}",n)},parse:function(n){return Number.parseLocale(n)},toJson:function(n){return n.format()},isValid:function(){return!0}},Date:{fromJson:function(n){return n?Date.parseInvariant(n,"MM/dd/yyyy")||Date.parseInvariant(n,"yyyy-MM-dd")||null:null},format:function(n,t){return $f(t?$rql.api.dataTypes.adjustFormat(t):$rql.i18n.dateFormat,n)},parse:function(n){return Date.parseLocale(n)},toJson:function(n){return luxon.DateTime.fromJSDate(n).toFormat("yyyy-MM-dd")},toJson2:function(n){return luxon.DateTime.fromJSDate(n).toFormat("MM/dd/yyyy")},isValid:function(n,t){return n?t?window.luxon.DateTime.fromFormat(n,"MM/dd/yyyy",{locale:"en-US"}).isValid||window.luxon.DateTime.fromFormat(n,"yyyy-MM-dd",{locale:"en-US"}).isValid:window.luxon.DateTime.fromFormat(n,u.ShortDatePattern,{locale:Sys.CultureInfo.CurrentCulture.name}).isValid:!1},formatPattern:function(){return $rql.i18n.datePattern}},DateTime:{fromJson:function(n){return n?new Date(n):null},format:function(n,t){return $f(t?$rql.api.dataTypes.adjustFormat(t):$rql.i18n.dateTimeFormat,n)},parse:function(n){if(Sys.CultureInfo.CurrentCulture.name=="es-MX"&&n){var t=luxon.DateTime.fromFormat(n,$rql.i18n.dateTimePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).toJSDate();if(t.toString()==="Invalid Date")n=n.replace(". m.",".m.");else return t}return luxon.DateTime.fromFormat(n,$rql.i18n.dateTimePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).toJSDate()},toJson:function(n){return $f("{0:s}",n)},isValid:function(n){return n?luxon.DateTime.fromISO(n).isValid?!0:$rql.api.isValidDateTime(n):!1},formatPattern:function(){return $rql.i18n.dateTimePattern}},Integer:{fromJson:function(n){return n||n===0?parseInt(n):null},format:function(n,t){return $f(t?t:"{0:n0}",n)},parse:function(n){return Number.parseLocale(n)},toJson:function(n){return n.format()},isValid:function(n){return!n||!isNaN(parseFloat(n))}},Number:{fromJson:function(n){return n||n===0?parseFloat(n):null},format:function(n,t){var i,u,r;if(n!=null&&t&&t.indexOf(";")!=-1&&(i=t.replace(/\s/g,"").match(/{0:([^;}]+?);([^;}]+?);([^;}]+?)}/),i&&(u=n>0?i[1]:n<0?i[2]:i[3],u&&(r=u.match(/(\+|\-)?0(.0+)?/),r)))){var f=r[1],e=r[2],o="{0:n"+(e?e.length-1:"0")+"}";return(f?f:"")+$f(o,n>=0?n:-n)}return $f(t?t:"{0:n2}",n)},parse:function(n){return Number.parseLocale(n)},toJson:function(n){return n.format()},isValid:function(n){return!n||!isNaN(parseFloat(n))}},String:{fromJson:function(n){return n},format:function(n,t){return t?$f(t,n):n},toJson:function(n){return n},isValid:function(){return!0}},RichText:{fromJson:function(n){return n},format:function(n,t){return t?$f(t,n):n},toJson:function(n){return n},isValid:function(){return!0}},Time:{fromJson:function(n){var t=Date.parseInvariant(n,"hh:mm tt");return t||(t=Date.parseInvariant(n,"HH:mm")),t},format:function(n,t){return $f(t?t:$rql.i18n.timeFormat,n)},parse:function(n){return Date.parseLocale(n)},toJson:function(n){return String.format("{0:hh:mm tt}",n)},isValid:function(n){return n?/((?:A|P)\.?M\.?)/i.test(n)?luxon.DateTime.fromFormat(n,"h:mm a",{locale:"en"}).isValid:luxon.DateTime.fromFormat(n,$rql.i18n.timePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).isValid:!1},formatPattern:function(){return $rql.i18n.timePattern}},Timestamp:{fromJson:function(n){return n?new Date(parseInt(n)):null},format:function(n,t){return $f(t?t:$rql.i18n.dateTimeFormat,n)},parse:function(n){if(Sys.CultureInfo.CurrentCulture.name=="es-MX"&&n){var t=luxon.DateTime.fromFormat(n,$rql.i18n.dateTimePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).toJSDate();if(t.toString()==="Invalid Date")n=n.replace(". m.",".m.");else return t}return luxon.DateTime.fromFormat(n,$rql.i18n.dateTimePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).toJSDate()},toJson:function(n){return n.valueOf()},isValid:function(t){return t?n.isNumeric(t)?luxon.DateTime.fromMillis(parseInt(t)).isValid:$rql.api.isValidDateTime(t):!1},formatPattern:function(){return $rql.i18n.dateTimePattern}},Binary:{fromJson:function(n){return n},format:function(n,t){return t?$f(t,n):n},toJson:function(n){return n},isValid:function(){return!0}},HRef:{fromJson:function(n){return n},format:function(n,t){return t?$f(t,n):n},toJson:function(n){return n},isValid:function(){return!0}},PhoneNumber:{fromJson:function(n){return n},format:function(n,t){return t?$f(t,n):n},toJson:function(n){return n},isValid:function(){return!0}},Chips:{fromJson:function(n){return n},format:function(n){return n},toJson:function(n){return n},isValid:function(){return!0}},isNumeric:function(n){return n=="Integer"||n=="Number"||n==$rql.api.dataTypes.Integer||n==$rql.api.dataTypes.Number},isDateTime:function(n){return n==="Date"||n==="DateTime"||n==="Time"||n==="Timestamp"},adjustFormat:function(n){return!n||n.length===0?n:n.length>2&&n.substring(0,3)==="{0:"?n:"{0:"+n+"}"}},extend:function(t,i){i?(this[i]||(this[i]={}),this[i]=n.extend(this[i],t)):$rql.api=n.extend(this,t)},showPage:function(n){var r=$rql.api.listPages(),u,t,i,f;for(u in r)if((t=r[u]).Views)for(i=0;i<t.Views.length;i++)f=t.Views[i],n==f.Id&&$rql.api.navigate(t.Url)},getStoreIdFromUrl:function(n){var t=n?n.match(/\/a\/([^\/&#]+)/):null;return t?t[1]:null},getUrlParams:function(n){var t,f=/\+/g,e=/([^&=]+)=?([^&]*)/g,i=function(n){return decodeURIComponent(n.replace(f," "))},r=n.indexOf("?"),u=[];if(r!=-1)for(query=n.substring(r+1);t=e.exec(query);)u.push(i(t[1])+"="+i(t[2]));return u},getUrlParamsAsString:function(n){var t=n.indexOf("?");return t!=-1?n.substring(t):""},isAccessCodeUser:function(){return document.cookie.indexOf("CMXACAUTH")>-1},isLoginTokenUser:function(){return document.cookie.indexOf("CMXTAUTH")>-1},toNumber:function(n,t){return n?isNaN(n)?t:+n:t},isValidDateTime:function(n){return luxon.DateTime.fromFormat(n,$rql.i18n.dateTimePattern.replace("tt","a"),{locale:Sys.CultureInfo.CurrentCulture.name}).isValid}},t=f.dataTypes,r=["=:0","!=:0","<<:2","-<<:1","-<<=:1",">>+:1",">>+=:1","d","+d","-d","w","+w","-w","m","+m","-m","q","+q","-q","q1","q2","q3","q4","y","+y","-y"],i;for(t.Boolean.operators=["1:-1","0:-1"],t.String.operators=t.Binary.operators=t.HRef.operators=["*:1","!*:1","=:0","!=:0","*=:1","!*=:1","=*:1","!=*:1",">:1","!>:1","<:1","!<:1",">=:1","!>=:1","<=:1","!<=:1","<<:2","?:-1","!?:-1"],t.Integer.operators=t.Number.operators=t.Currency.operators=t.Time.operators=["=:0","!=:0",">:1","!>:1","<:1","!<:1",">=:1","!>=:1","<=:1","!<=:1","<<:2","?:-1","!?:-1"],i=7;i<r.length;i++)r[i]+=":-1";for(i=1;i<13;i++)r.add("m"+i+":-1");r.addRange(["?:-1","!?:-1"]);t.Date.operators=t.DateTime.operators=t.Timestamp.operators=r;t.PhoneNumber.operators=t.String.operators;t.Number.usesWesternArabicDigits=(Number(123).toLocaleString().match(/[123]/g)||[]).length===3;RequirementsLive={Web:{PresentationManager:{Instance:{showPage:$rql.api.showPage}}}};window.LaunchReport=function(n,t,i){var u=document.createElement("div"),s,e;u.style.display="none";document.body.appendChild(u);var f=document.location.hostname,r="reports",o="";i?r=i:/-dev$/.test(f.split(".",1)[0])?r+="-dev":f=="opex.compliancemetrix.com"||/-qa$/.test(f.split(".",1)[0])?r+="-qa":/-uat$/.test(f.split(".",1)[0])&&(r+="-uat");r+=".compliancemetrix.com";s=document.cookie.split(";");e=null;Array.forEach(s,function(n){if(n){var n=n.trim();n&&n.indexOf("CMXAUTH=")>-1&&(e=n.replace("CMXAUTH=",""));n&&n.toLowerCase().indexOf("language=")>-1&&(o=n.toLowerCase().replace("language=",""))}});u.innerHTML=$f('<form method="post" action="https://{0}/Authorization.aspx"><input name="ticket" value="{4}" type="hidden" /><input name="username" value="{1}" type="hidden" /><input name="page" value="{2}.aspx" type="hidden" /><input name="domainname" value="{3}" type="hidden" /><input name="language" value="{5}" type="hidden" /><\/form>',r,n,t,f,e,o);u.childNodes[0].submit();document.body.removeChild(u)};window.waitfor=function(n,t,i,r,u,f,e){while(n()!==t){if(r++,e&&r>e){console.log("waifor() aborted after exceeding "+e+" attempts.  Source: "+u);return}setTimeout(function(){waitfor(n,t,i,r,u,f,e)},i);return}if(f)return f()};window.copyToClipboard=function(t){var i=n("<input>");n("body").append(i);i.val(n(t).val()).select();document.execCommand("copy");i.remove()}})(jQuery);
(function(n){function r(i){for(var e=0,u,o,f;e<t.callbacks.length;){for(u=t.callbacks[e],o=!0,f=0;f<u.components.length;f++)u.components[f].test(i)?(u.components[f].status="loaded",delete u.components[f].resources):o=!1;o?(n.isFunction(u.callback)&&window.setTimeout(u.callback,0),t.callbacks.removeAt(e)):e++}t.callbacks.length>0?window.setTimeout(function(){r(i)},t.timeoutDelay):t.timeoutId=null}var t={callbacks:[],timeoutDelay:333},i=window.$rql.api.require=function(n,u,f){var e,p,l,a,s,v,h,c,y,o;for(Array.isArray(n)||(n=[n]),p={components:[],callback:u},l=!0,a=0;a<n.length;a++)if(e=i.components[n[a]]){if(p.components.add(e),e.preLoad&&e.preLoad()&&(e.status=null,e.__resources&&e.__resources.length>0)){for(e.resources=[],o=0;o<e.__resources.length;o++)e.resources.push(e.__resources[o]);if(e.__handled_resources&&e.__handled_resources.length>0)for(o=0;o<e.__handled_resources.length;o++)delete handled_resources[e.__handled_resources[o]]}if(e.status)e.test(f)||(l=!1);else{for(e.status="loading",e.__resources=[],e.__handled_resources=[],e.init&&e.init.call(e),s=0;s<e.resources.length;s++)if(e.__resources.push(e.resources[s]),v=e.resources[s].startsWith("http")||e.resources[s].startsWith("[")?e.resources[s]:$rql.api.baseUrl.pathname+e.resources[s],e.extensions&&e.extensions.length>0){for(h=[],h.push(v),h.push(function(){}),c=0;c<e.extensions.length;c++)y=e.extensions[c].startsWith("http")?e.extensions[c]:$rql.api.baseUrl.pathname+e.extensions[c],y=y.replace(/\/plugins.ver\//,"/plugins.ver/"+$rql.api.version+"/"),h.push(y),h.push(function(){});for(o=0;o<h.length;o++)e.__handled_resources.push(h[o]);toast.apply(this,h)}else toast(v),e.__handled_resources.push(v);l=!1}}return l||(t.callbacks.add(p),t.timeoutId||(t.timeoutId=window.setTimeout(function(){r(f)},t.timeoutDelay))),l};i.components={gmap:{name:"gmap",resources:["js/libs/markerclusterer.js"],test:function(){return window.google&&window.google.maps}},fullcalendar:{name:"fullcalendar",resources:["js/libs/rrule-tz.js","3/js/libs/fullcalendar/main.min.css","3/js/libs/fullcalendar/main.min.js"],extensions:["3/js/libs/fullcalendar/locales-all.min.js"],test:function(){return window.moment!=null&&window.FullCalendar!=null&&window.rrule!=null}},calendar:{name:"calendar",resources:["js/libs/fullcalendar.min.js"],extensions:["js/libs/i18n/fullcalendar/locale-all.js","js/libs/rrule-tz.js"],test:function(){return typeof moment!="undefined"&&typeof n.fullCalendar!="undefined"}},charts:{name:"charts",resources:["js/libs/highcharts_5_0_3/highcharts.js"],extensions:["js/libs/highcharts_5_0_3/highcharts-more.js","js/libs/highcharts_5_0_3/highcharts-3d.js","js/libs/highcharts_5_0_3/modules/exporting.js","js/libs/highcharts_5_0_3/modules/no-data-to-display.js","js/libs/highcharts_5_0_3/modules/funnel.js","js/libs/highcharts_5_0_3/modules/solid-gauge.js","js/libs/highcharts_5_0_3/themes/rql-highcharts-theme.js"],test:function(t){if(window.Highcharts&&window.Highcharts.defaultOptions&&window.Highcharts.ZAxis&&window.Highcharts.defaultOptions.plotOptions&&window.Highcharts.defaultOptions.plotOptions.gauge&&window.Highcharts.defaultOptions.plotOptions.funnel&&window.Highcharts.defaultOptions.plotOptions.solidgauge&&window.Highcharts.theme&&window.Highcharts.defaultOptions.exporting&&window.Highcharts.defaultOptions.noData){var i=Sys.CultureInfo.CurrentCulture.numberFormat;return window.Highcharts.setOptions({lang:{decimalPoint:i.NumberDecimalSeparator,thousandsSep:i.NumberGroupSeparator,downloadPNG:$rql.i18n.strings.DownloadChartPNG,downloadJPEG:$rql.i18n.strings.DownloadChartJPEG,downloadPDF:$rql.i18n.strings.DownloadChartPDF,downloadSVG:$rql.i18n.strings.DownloadChartSVG,exportButtonTitle:$rql.i18n.strings.ExportChartBtnTitle,contextButtonTitle:$rql.i18n.strings.ExportChartBtnTitle,printButtonTitle:$rql.i18n.strings.PrintChartBtnTitle,printChart:$rql.i18n.strings.PrintChartBtnTitle,noData:$rql.i18n.strings.NoChartData,loading:$rql.i18n.strings.Loading}}),window.Highcharts.defaultOptions.credits&&(window.Highcharts.defaultOptions.credits.enabled=!1),window.Highcharts.defaultOptions.exporting&&($rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS||$rql.api.embeddedView)?window.Highcharts.defaultOptions.exporting.enabled=!1:(window.Highcharts.defaultOptions.exporting.enabled=!0,window.Highcharts.defaultOptions.exporting.url="/rql/Export/ExportHighchart")),setTimeout(function(){n(window).trigger("highchartsloaded",t)},50),!0}return!1},preLoad:function(){return window.Highcharts&&window.Highcharts.ganttChart?(window.Highcharts=null,!0):!1}},highchartsEditor:{name:"highchartsEditor",resources:["js/libs/highcharts_5_0_3/highcharts.js","js/libs/highcharts_5_0_3/highcharts-editor.min.css"],extensions:["js/libs/highcharts_5_0_3/highcharts-3d.js","js/libs/highcharts_5_0_3/highcharts-more.js","js/libs/highcharts_5_0_3/modules/funnel.js","js/libs/highcharts_5_0_3/modules/solid-gauge.js","js/libs/highcharts_5_0_3/modules/data.js","js/libs/highcharts_5_0_3/themes/rql-highcharts-theme.js","js/libs/highcharts_5_0_3/modules/exporting.js","js/libs/highcharts_5_0_3/modules/no-data-to-display.js","js/libs/highcharts_5_0_3/highcharts-editor.js"],test:function(){return window.Highcharts&&window.Highcharts.defaultOptions&&window.Highcharts.ZAxis&&window.Highcharts.defaultOptions.exporting&&window.Highcharts.defaultOptions.plotOptions&&window.Highcharts.defaultOptions.plotOptions.gauge&&window.Highcharts.defaultOptions.plotOptions.funnel&&window.Highcharts.defaultOptions.plotOptions.solidgauge&&window.Highcharts.theme&&window.Highcharts.defaultOptions.noData&&window.highed&&window.highed.ModalEditor?!0:!1}},ganttChart:{name:"ganttChart",resources:["js/libs/highcharts_5_0_3/highcharts-gantt.src.js"],test:function(){return window.Highcharts&&window.Highcharts.chart&&window.Highcharts.ganttChart?!0:!1},preLoad:function(){return window.Highcharts&&!window.Highcharts.ganttChart?(window.Highcharts=null,!0):!1}},keyLines:{name:"keyLines",resources:["js/libs/keylines_4_0_2/js/keylines.js","js/libs/keylines_4_0_2/css/keylines.css"],extensions:["js/libs/keylines_4_0_2/map/leaflet.css","js/libs/keylines_4_0_2/map/leaflet.js"],test:function(){return window.KeyLines?!0:!1}},scrolling:{name:"scrolling",resources:["js/libs/jquery.nicescroll.min.js"],test:function(){return $rql.api.uiVersion>2?!1:n("html").niceScroll!=="undefined"?!0:!1}},textEditor:{name:"textEditor",resources:["plugins/ckeditor/ckeditor.js"],test:function(){return typeof CKEDITOR!="undefined"?!0:!1}},fileDownload:{name:"fileDownload",resources:["js/libs/jquery.filedownload.js"],test:function(){return typeof n.fileDownload!="undefined"?!0:!1}},phoneUtils:{name:"phoneUtils",resources:["fabric/js/libs/phone-utils.js"],test:function(){return typeof intlTelInputUtils!="undefined"}},select2:{name:"select2",resources:["js/libs/select2/select2.full.js","js/libs/select2/select2.css"],extensions:["js/libs/select2/i18n/ar.js","js/libs/select2/i18n/bg.js","js/libs/select2/i18n/cs.js","js/libs/select2/i18n/da.js","js/libs/select2/i18n/de.js","js/libs/select2/i18n/el.js","js/libs/select2/i18n/en.js","js/libs/select2/i18n/es.js","js/libs/select2/i18n/fi.js","js/libs/select2/i18n/fr.js","js/libs/select2/i18n/hi.js","js/libs/select2/i18n/hu.js","js/libs/select2/i18n/id.js","js/libs/select2/i18n/it.js","js/libs/select2/i18n/ja.js","js/libs/select2/i18n/ko.js","js/libs/select2/i18n/nl.js","js/libs/select2/i18n/pl.js","js/libs/select2/i18n/pt-PT.js","js/libs/select2/i18n/pt-BR.js","js/libs/select2/i18n/ro.js","js/libs/select2/i18n/ru.js","js/libs/select2/i18n/sk.js","js/libs/select2/i18n/sr-Cyrl.js","js/libs/select2/i18n/sv.js","js/libs/select2/i18n/th.js","js/libs/select2/i18n/tr.js","js/libs/select2/i18n/uk.js","js/libs/select2/i18n/vi.js","js/libs/select2/i18n/zh-CN.js","js/libs/select2/i18n/zh-TW.js"],test:function(){return jQuery().select2!=="undefined"}},placesAutocomplete:{name:"placesAutocomplete",resources:[],init:function(){this.resources.length===0&&$rql.api.googleJavaScriptApiKey&&this.resources.push("[js]https://maps.googleapis.com/maps/api/js?libraries=places&key="+$rql.api.googleJavaScriptApiKey)},test:function(){return $rql.api.googleJavaScriptApiKey?window.google&&window.google.maps&&window.google.maps.places&&window.google.maps.places.Autocomplete:!0}},recaptcha:{name:"recaptcha",resources:[],init:function(){this.resources.length===0&&this.resources.push("[js]https://www.google.com/recaptcha/enterprise.js?render=explicit")},test:function(){return window.grecaptcha&&window.grecaptcha.enterprise&&window.grecaptcha.enterprise.render}},pblBuilders:{name:"pblBuilders",resources:["js/libs/angular.min.js","js/libs/jquery.splitter.js"],extensions:["plugins.ver/pblbuilders/pblbuilders-complete.css","plugins.ver/pblbuilders/pblbuilders-complete.js"],test:function(){return!!window.angular&&!!window.pblbuilders_loaded}},pblBuilders3:{name:"pblBuilders3",resources:["js/libs/angular.min.js","js/libs/jquery.splitter.js"],extensions:["plugins.ver/pblbuilders/pblbuilders-complete-3.css","plugins.ver/pblbuilders/pblbuilders-complete-3.js"],test:function(){return!!window.angular&&!!window.pblbuilders_loaded}},xpathBuilder:{name:"xpathBuilder",resources:["plugins/xpathbuilder/xpathbuilder.css","plugins/xpathbuilder/jquery.shorten.js","plugins/xpathbuilder/jquery.caret.js","plugins/xpathbuilder/jquery.popupoverlay.js","plugins/xpathbuilder/xpath.operators.js","plugins/xpathbuilder/xpath.boolean.funcs.js","plugins/xpathbuilder/xpath.nodeset.funcs.js","plugins/xpathbuilder/xpath.number.funcs.js","plugins/xpathbuilder/xpath.string.funcs.js","plugins/xpathbuilder/xmlutils.js","js/libs/jquery.splitter.js","js/libs/vkBeautify.js"],test:function(){return jQuery().split!=="undefined"&&jQuery().select2!=="undefined"&&typeof XmlUtils!="undefined"&&typeof vkbeautify!="undefined"&&jQuery().shorten!=="undefined"&&jQuery().caret2!=="undefined"&&jQuery().popup!=="undefined"&&window.xpathHelper&&window.xpathHelper.operatorsTest()===!0&&window.xpathHelper.booleanFuncsTest()===!0&&window.xpathHelper.nodesetFuncsTest()===!0&&window.xpathHelper.numberFuncsTest()===!0&&window.xpathHelper.stringFuncsTest()===!0}},barcodeReader:{name:"barcodeReader",resources:["js/libs/quagga.min.js"],test:function(){return typeof Quagga!="undefined"?!0:!1}}};i.unload=function(n){if(this.components&&this.components[n]){var t="";this.components[n].__handled_resources.map(function(n){typeof n=="string"&&(n.endsWith(".js")?t=$f("script[src='{0}']",n):n.endsWith(".css")&&(t=$f("link[href='{0}']",n)));t!==""&&document.querySelector(t)&&document.querySelector(t).remove();t=""})}}})(jQuery);jQuery.fn.extend({loadFiles:function(n,t){function i(u){var e,f;n.length>u?(e="script",n[u].endsWith("css")&&(e="text"),f=document.createElement(e==="text"?"link":"script"),e==="script"?(f.setAttribute("type","text/javascript"),f.setAttribute("src",n[u]),f.src=f.src.replace("/a/","/")):(f.setAttribute("rel","stylesheet"),f.setAttribute("href",n[u]),f.href=f.href.replace("/a/","/")),r.appendChild(f),u=u+1,f.onload=function(){i(u)}):t&&t()}n.length||(n=[]);var r=document.head||document.getElementsByTagName("head")[0];i(0)}});
(function(n){var i="KEY:",t=window.$rql.events={globalHandlers:new Sys.EventHandlerList,off:function(n,t){this.on(n,t,!0)},offKey:function(n,i,r){t.on(n,i,r)},on:function(i,r,u){var e=(u?"remove":"add")+"Handler",f;if(typeof i=="string"&&n.isFunction(r))t.globalHandlers[e](i,r);else if(typeof i=="object")for(f in i)n.isFunction(i[f])&&t.globalHandlers[e](f,i[f])},onKey:function(n,r,u){if(typeof n=="string")t.on(i+n,r,u);else if(typeof n=="object")for(var f in n)t.on(i+f,n[f],u)},trigger:function(n,i){var r=t.globalHandlers.getHandler(n);r&&r(i)},oneOn:function(n,i){t.on("one-"+n,i)},oneOff:function(n,i){t.off("one-"+n,i)},triggerOne:function(n){var i,r;n="one-"+n;i=t.globalHandlers.getHandler(n);i&&(r=t.globalHandlers._getEvent(n,!1),r.length=0,i())}},r=!1,u,f=n(window).width(),e=n(window).height();n(window).on({resize:function(){var t,i,o;if($rql.api.isMobileOS)$rql.api.offline?($rql.api.isAndroid||$rql.api.isIOS)&&$rql.events.trigger("resize"):(t=n(document.activeElement),!r&&(t.is("body")||t.length==0)&&$rql.events.trigger("resize")),r=!1;else{if(n.browser.msie&&n.browser.version==8){if(i=n(window).width(),o=n(window).height(),f==i&&e==o)return;f=i;e=o}$rql.events.triggerOne("resize");u&&window.clearTimeout(u);u=window.setTimeout(function(){$rql.events.trigger("resize")},250)}},keydown:function(n){var r=[],u=String.fromCharCode(n.which);n.altKey&&r.add("ALT");n.ctrlKey&&r.add("CTRL");n.shiftKey&&r.add("SHIFT");u&&r.add(u);t.trigger(i+r.join("+"))},orientationchange:function(){var t=n(document.activeElement),i;f=n(window).width();e=n(window).height();i=!t.is("body")&&t.length>0;r=$rql.api.isAndroid||$rql.api.isKindle||$rql.api.uiMode==="mobile"?i:!1;Math.abs(parseInt(window.orientation,10))==90?n("body").addClass("landscape"):n("body").removeClass("landscape");$rql.api.offline&&$rql.api.isAndroid&&webview?webview.hideSoftKeyboard():t.blur();n(window).resize()}})})(jQuery);
(function(n){var t=window.$rql.http={browser:{localStorage:localStorage&&localStorage.getItem&&localStorage.setItem,sessionStorage:sessionStorage&&sessionStorage.getItem&&sessionStorage.setItem},get:function(n,t,i){var r=jQuery.ajax({type:"GET",url:n,contentType:"application/json",dataType:"json"});return r.context=i,r},getCookie:function(n){return t.getCookies()[n]},getCookies:function(){var n={};return Array.forEach(document.cookie.split(";"),function(t){var i=t.indexOf("=");n[t.substring(0,i).trim()]=t.substring(i+1)}),n},onError:function(n,t,i){$rql.error($f("The server returned {0}: {1}",n.status,i));$rql.ui.error($rql.i18n.strings.RequestError)},post:function(t,i,r){var f=jQuery.ajax({type:"POST",url:t,contentType:"application/json",data:i?n.toJson(i):null,dataType:"json"}),u,e;return f.context=r,u=new n.Deferred,e=u.promise(),f.then(function(n){n&&n.MaintenanceModeUrl?(console.log("Done: "+n.MaintenanceModeUrl),window.location.href=n.MaintenanceModeUrl):u.resolve.apply(null,arguments)},function(n){n&&n.MaintenanceModeUrl?(console.log("Failed: "+n.MaintenanceModeUrl),window.location.href=n.MaintenanceModeUrl):u.reject.apply(null,arguments)}),e},postFormData:function(t,i,r){var u=n(document.createElement("form")).attr({method:"post",action:t}),f,e;r&&u.attr("target",r);for(f in i)i.hasOwnProperty(f)&&(e=i[f],n(document.createElement("input")).attr({type:"hidden",name:f,value:e}).appendTo(u));u.appendTo(document.body);u.submit()},setCookie:function(n,t,i){var r=n+"="+t;i&&(r+=$f(" expires={0};",i.toUTCString()));r+=" ;path=/rql/";$rql.api.offline||$rql.api.local_dev||$rql.api.debugbuild||(r+=";secure;");document.cookie=r},isValidUrl:function(n){var t;try{t=new URL(n)}catch(i){return!1}return t.protocol==="http:"||t.protocol==="https:"},uri:function(n){return function(t,i,r,u){n.href=t?t:window.history.location?window.history.location.href:document.location.href;u={};for(i in n)try{""+n[i]===n[i]&&(u[i]=n[i])}catch(f){}return r="/",i="pathname",u[i]=(u[i][0]!=r?r+u[i]:u[i]).toLowerCase(),u.path=u.pathname+u.search+u.hash,u}}(document.createElement("a"))}})(jQuery);
(function(n){var t=function(n,t){var i=t.name,u=i,r=i.indexOf("-");r>-1&&(u=i.substr(r+1,i.length-r-1),i=i.substr(0,r),n=n[i]?n[i]:n[i]={});i=u.replaceAll("-","");n[i]||(n[i]=t.value)};n.fn.attrs=function(){var r={},u=this[0],n,i,f;if(u){for(n=0;n<u.attributes.length;n++)t(r,u.attributes[n]);if(arguments&&arguments.length>0)for(n=0;n<arguments.length;n++)i=arguments[n],f=this.parents("["+i+"]").attr(i),f&&t(r,{name:i,value:f})}return r}})(jQuery);
(function(n){var t=window.$rql.ui={inputTypes:["button","checkboxlist","checkbox","textinput","dropdownlookup","lookup","file","list","listgrid","listenhanced","listcustom","listtable","photo","report","signature","geolocation","temperature","tempprobe","timer","richtext","bulklist","lookupinplace","pagebuilder","workbookbuilder","xpathbuilder","textboxsearch","currency","radiobuttonlist","dropdownlist","dropdownmultiselect","dropdownselect","label","placeinput","progressbar","time","barcode","comparer","chipsinput","captcha","scheduler","schedulerresults"],mediaBreakpoints:["xs","sm","md","lg","xl"],cancel:function(n){return n.stopPropagation(),n.preventDefault(),!1},confirm:function(n,t,i,r){window.confirm(n)?i():r&&r()},controlKey:"rql.ui.control",controls:{},create:function(i,r,u){var f=t.get(r);return f||(f=new t.controls[i](n(r),u)),f},div:function(t,i,r){for(var e,u=t instanceof Array?t:[t],f=0;f<u.length;f++)e=u[f],n("#"+e).length==0&&n($f("<div id='{0}' {1}><\/div>",e,r?"":"style='display: none;'")).appendTo(i?i:"body");return n("#"+u.join(",#"))},dispose:function(i){n(i).find("[rql-control]").each(function(){var n=t.get(this);n&&(!$rql.ui._omitRenderPlaceholders&&n.$&&n.$.after($f("<div style='min-height:{0}px' rql-role='renderPlaceholder'><\/div>",n.$[0].scrollHeight)),n.dispose())})},error:function(n,t,i,r,u){n=$rql.ui.htmlToText(n);alert($rql.getErrorMessage(n));u&&u()},get:function(i,r){if(i)return r==="upload"&&n(i).closest('[rql-type="ListTable"]').length>0?n(i).closest('[rql-type="ListTable"]').data("rql.ui.control"):n.data(n(i)[0],t.controlKey)},findViewById:function(t,i){if(t){var r=n("div[rql-view='"+t+"']",i);if(r&&r.length==1)return this.get(r)}return null},findOwnerViewId:function(t){return t?n(t).closest("[rql-view]").attr("rql-view"):null},info:function(n){alert(n)},success:function(n){alert(n)},isDesktop:function(){return $rql.api.uiVersion>2?this.checkMediaBreakpoint("lg","greater"):$rql.api.uiMode=="desktop"},isMobile:function(){return $rql.api.uiVersion>2?this.checkMediaBreakpoint("sm","lesser"):$rql.api.uiMode==="mobile"},isTablet:function(){return $rql.api.uiVersion>2?this.checkMediaBreakpoint("md","lesser"):$rql.api.uiMode==="tablet"},isTabletOnly:function(){return $rql.api.uiVersion>2?this.checkMediaBreakpoint("md","lesser")&&!this.checkMediaBreakpoint("xs","lesser"):$rql.api.uiMode==="tablet"},showFlatModals:function(){return $rql.api.uiVersion>2&&$rql.ui.isMobile()},resized:function(){this._mediaBreakpoint=null},replaceHtmlContent:function(i,r,u){u&&n("body").css("min-height",n("body").height()+"px");var f=!!$rql.ui._omitRenderPlaceholders;$rql.ui._omitRenderPlaceholders=!0;try{t.dispose(i);n(i).html(r)}finally{$rql.ui._omitRenderPlaceholders=f}},updateHtmlContent:function(t,i,r){var c=["panels","label","block","inline-block"],o,s,e;if(i!==""){var f=n(i).find("[rql-type]").toArray(),h=n(r).find("[rql-type]").toArray(),u=[];for(n(h).each(function(t,i){var r=n(i).attr("rql-id2")||n(i).attr("rql-id")||n(i).attr("rql-groupid"),o,e;if(!r||n(i).attr("rql-type")==="block"&&n(i).find("[rql-type]").length>0)return!0;o=f.where(function(t){return n(t).attr("rql-id2")===r||n(t).attr("rql-id")===r||n(t).attr("rql-groupid")===r});o.length>0?((n(i).html()!==n(o[0]).html()||c.contains(n(i).attr("rql-type")))&&u.push({controlId:r.replaceAll("'","\\'"),element:i,op:"change"}),f.remove(o)):(e="",t>0&&(e=n(f[t-1]).attr("rql-id2")||n(f[t-1]).attr("rql-id")||n(f[t-1]).attr("rql-groupid"),!e&&u.length>0&&(e=u[u.length-1].controlId)),u.push({controlId:r,element:i,op:"add",previousId:e}))}),n(f).each(function(t,i){var r=n(i).attr("rql-id2")||n(i).attr("rql-id")||n(i).attr("rql-groupid");h.any(function(t){return n(t).attr("rql-id2")===r||n(t).attr("rql-id")===r||n(t).attr("rql-groupid")===r})||u.push({controlId:r,op:"delete"})}),o=u.slice().sort(function(n,t){return n.controlId<t.controlId?-1:n.controlId>t.controlId?1:0}),s=!1,e=0;e<o.length-1;e++)if(o[e+1].controlId===o[e].controlId){s=!0;break}return s?(this.replaceHtmlContent(t,r),!1):(u.each(function(i){var u="",f=n(i.element).wrap("<div/>").parent().html(),r,e;i.op==="change"||i.op==="delete"?u=i.controlId:i.op==="add"&&(u=i.previousId||"");r=t.find($f("[rql-groupid='{0}']",u));r.length===0&&(r=t.find($f("[rql-id2='{0}']",u)));r.length===0&&(r=t.find($f("[rql-id='{0}']",u)));(r.length>0||i.op==="add"&&i.previousId==="")&&(i.op==="change"?(e=r[0].scrollHeight,f=n(f).filter("[rql-type]").css({"min-height":e+"px"}),r.replaceWith(n(f).wrap("<div/>").parent().html())):i.op==="delete"?r.remove():i.op==="add"&&(i.previousId===""?t.first("[rql-type]").before(f):r.after(f)))}),!0)}return this.replaceHtmlContent(t,r),!1},replaceHtml:function(t,i){if(t){var r=n(t);r.length!=0&&($rql.ui.dispose(r),r.replaceWith(i))}},cancelAnimationFrame:function(n){return(window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.clearTimeout)(n)},requestAnimationFrame:function(n){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(n){window.setTimeout(n,1e3/12)})(n)},warn:function(n){alert(n)},htmlToText:function(t){return n.type(t)==="null"||n.type(t)==="undefined"?"":(n.type(t)!=="string"&&(t=t.toString()),n.trim(t.replace(/(\s*<!--(.|\r|\n)*?-->\s*)/g,"").replace(/(\s*<(|\/)\w+?.*?>\s*)+/g," ").replace(/\s+/g," ")))},ellipses:function(n,t){return n&&t>=3&&n.length>t?n.substring(0,t-3)+"...":n},trimWords:function(n,t,i){if(n&&t>=3&&n.length>t){var r=t-3;for(i==null&&(i=t>=30?t-20:t);r>i&&n.charAt(r-1).match(/\S/);)r--;while(r>i&&n.charAt(r-1).match(/\s/))r--;n=n.substring(0,r)+"..."}return n},getNavigatorIndex:function(n,t,i){return t=="+"?n++:t=="++"?n=i:t=="-"?n--:n=t=="--"?0:parseInt(t)-1,n<0||isNaN(n)?n=0:n>i&&(n=i),n},focusElement:function(t){var i=n(t),u=i.is(":visible"),f=i.is(":disabled"),r;u&&!f&&($rql.api.uiMode=="mobile"&&$rql.api.uiVersion<=2&&(r=n(".mobile-header:visible").length>0?n(".mobile-header:visible").height():0,n("body").animate({scrollTop:i.offset().top-(r+30)},100)),i.focus())},decorateArrayItems:function(n){var i,t;if(n&&n.length!=0)for(i=0;i<n.length;i++)t=n[i],t.Index=i,t.First=i==0,t.Last=i+1==n.length,t.ui=t.ui||{},t.ui.index=i,t.ui.first=i==0,t.ui.last=i+1==n.length,t.ui.alternate=i%2==1,t.ui.uiStyle=t.UiStyle},startScrolling:function(){n("body").css({"overflow-y":"","margin-right":"","padding-right":"",position:"",width:"",height:""})},stopScrolling:function(t){var i=["overflow-y: hidden"],r=$rql.ui.getScrollbarWidth();r>0&&i.push("padding-right: "+r+"px !important");$rql.api.isIOS&&(i.push("width: 100vw"),i.push("height: 100vh"),n("body").hasClass("modal-open")&&!t&&i.push("position: fixed"));n("body").css("cssText",i.join(";"))},sumOfParentsPropValues:function(t,i){for(var u=0,f=t.parents(),r=0;r<f.length;r++)u+=parseInt(n(f[r]).css(i).replace("px",""));return u},sumOfPropValues:function(t,i){for(var r,f,e=0,o=i.split(","),u=0;u<t.length;u++)for(r=0;r<o.length;r++)f=parseInt(n(t[u]).css(o[r]).replace("px","")),isNaN(f)||(e+=f);return e},replaceNewLinesWithLineBreaks:function(n){return n?n.replace(/\r?\n/g,"<br/>"):n},replaceDoubleNewLinesWithLineBreaks:function(n){return n?n.replace(/\r\n/g,"\n").replace(/(\n){2}/g,"<br/>"):n},getClassesByPrefix:function(n,t){var r,u,i;if(n&&n.className&&t){for(r=n.className.split(/\s+/),u=[],i=0;i<r.length;i++)r[i].indexOf(t)==0&&u.push(r[i]);if(u.length!=0)return u.join(" ")}return""},scrollIntoViewIfOut:function(t,i){var r=this;setTimeout(function(){var e;if(t&&i){var f=n(t),h=n(i),o=f.outerHeight(),c=h.innerHeight(),u=f.offset(),s=h.offset();u!=null&&s!=null&&(u.top<s.top||o>c?r.scrollToTop(f[0],0):u.top+o>s.top+c?f.scrollintoview():$rql.api.uiMode==="mobile"&&(e=n("[rql-role='mobile-workbookbar']:visible").height()+n(".mobile-header:visible").height(),u.top+o>window.scrollY+window.innerHeight?f.scrollintoview():(u.top>window.scrollY-e||u.top<window.scrollY+e)&&r.scrollToTop(null,u.top-e)))}},0)},scrollToTop:function(t,i,r){var f=i||0,u;if(!t){n(window).scrollTop(i);return}u=n(t);u.animate({scrollTop:u.length>0&&r?u.offset().top-f:f},100)},applyContainerOverlay:function(n){return!n||n.length===0?n:(n.attr("disabled","disabled").addClass("position-relative"),n.applyOverlay(!0,null,"<div><i class='fas fa-spinner fa-lg fa-spin' style='color: #000'><\/i><\/div>",{position:"absolute",background:"transparent",top:"0",left:"0",width:n.outerWidth(),height:n.outerHeight(),display:"flex","align-items":"center","justify-content":"center"}),n)},removeContainerOverlay:function(n){return!n||n.length===0?n:(n.removeAttr("disabled").removeClass("position-relative"),n.applyOverlay(!1),n)},raiseAboveBackdrop:function(t){if(t&&t.length>0){var r=t[0].getBoundingClientRect(),i=$rql.ui.elementsFromPoint(r.left,r.top);i=n(i).filter(":not(#toast-container)");i.length>0&&i[0].className.contains("modal-backdrop")&&(n(".modal-backdrop").css({"z-index":"1"}),n(".mm-page").addClass("pos-static"))}},showModal:function(t,i){if(t&&t.length===1)if($rql.api.uiVersion>2)this.showModalFabric(t,i);else{if($rql.api.isIOS&&t.closest("div[rql-viewtype]").attr("rql-viewtype")==="Workbook"){var r=n("<div style='display:none'><\/div>").insertAfter(t);t.detach().appendTo("body");t.on("hidden.bs.modal",function(){t.detach().insertBefore(r);r.remove()})}if(i){if(i.onShown)t.on("shown",i.onShown);if(i.onHidden)t.on("hidden",i.onHidden)}t.modal()}},showModalFabric:function(t,i){var l=this,r,f,u,c;if(t&&t.length===1){if(this.showFlatModals()){this.showFlatModal(t,i);return}r=t.closest("[rql-layout-id]");f=r.length>0&&r.css("position")==="fixed";t.on("shown.bs.modal",function(){var u=t.find(".modal-body"),e,o;$rql.ui.raiseAboveBackdrop(u);$rql.ui.stopScrolling();n(document).height(window.innerHeight);t.off("shown.bs.modal");f&&(e=r[0].getBoundingClientRect().width,o=r[0].getBoundingClientRect().height,r.applyOverlay(!0,null,"<div/>"));i&&i.onShown&&i.onShown()}).on("hidden.bs.modal",function(){n(".mm-page").removeClass("pos-static");$rql.ui.startScrolling();var t=n(".modal.show:visible").first();t.length>0&&(n("body").addClass("modal-open"),$rql.ui.raiseAboveBackdrop(t),$rql.ui.stopScrolling());f&&r.applyOverlay(!1);i&&i.onHidden&&i.onHidden()});if(u={},t.attr("rql-disable-close")&&(u.backdrop="static"),t.attr("rql-modal-width")){var e=t.attr("rql-modal-width")||"",o=e.contains("px"),s=o?e:parseInt(e)+"%",h=o?"95%":"none";this.isTabletOnly()&&(s=h="95%");c=t.find(".modal-dialog");c.css({width:s,"max-width":h});t.modal(u).css({width:"100%",margin:"auto"})}else t.modal(u)}},showFlatModal:function(t,i){var r,u;if(t&&t.length!==0){i&&t.data("events",i);t.data("verticalScrollPosition",n(window).scrollTop());$rql.events.on("flatModalShown",$rql.ui.onFlatModalShown);$rql.events.on("flatModalClosed",$rql.ui.onFlatModalClosed);t.removeClass("modal fade").addClass("fixed-modal");t.find(".modal-body").addClass("px-2");r=t.find('[data-dismiss="modal"], [rql-role="dismissModal"]');r.length===0&&t.attr("rql-disable-close")!=="yes"&&t.find($f("#{0}_dismissModal",t.attr("rql-id")||t.attr("id"))).length===0&&(u=n("<a/>",{id:$f("{0}_dismissModal",t.attr("rql-id")||t.attr("id")),"class":"btn-floating btn-default interact-draggable"}).html("<i class='fas fa-times'/>"),u.appendTo(t),r=u);r.on("click",function(){t.hide();$rql.ui.onFlatModalClosed(t)});t.show();$rql.ui.onFlatModalShown(t)}},onFlatModalShown:function(t){n("body").addClass("modal-open");$rql.ui.stopScrolling();t&&t.data("events")&&t.data("events").onShown&&t.data("events").onShown();$rql.events.off("flatModalShown",$rql.ui.onFlatModalShown)},onFlatModalClosed:function(t){n("body").removeClass("modal-open");$rql.ui.startScrolling();t&&(t.data("verticalScrollPosition")&&(n(window).scrollTop(t.data("verticalScrollPosition")),t.removeData("verticalScrollPosition")),t.data("events")&&t.data("events").onHidden&&t.data("events").onHidden());$rql.events.off("flatModalClosed",$rql.ui.onFlatModalClosed)},showToast:function(t,i){var r,f,u,e;if(i&&t&&t.length!==0&&(r=t.find($f("[rql-id='{0}']",i)),r.length===0&&i.indexOf("$i$")>-1&&(f=i.substr(i.lastIndexOf("$i$")+3),r=t.find($f("[rql-id='{0}']",f))),r.length>0))try{u=JSON.parse(r.find("code").html());e=n.extend({},u.ToastOptions);toastr[u.ToastType](u.Text,u.Header,e)}catch(o){console.log($f("Error parsing config for toast control.  Id={0}\r\nError: {1}",i,o))}},calcImageDimensions:function(n,t){var i={width:n.width,height:n.height},r,u;return(n.width>t.width||n.height>t.height)&&(r=n.width/n.height,u=t.width/t.height,r>u?(i.width=t.width,i.height=Math.round(i.width/r)):(i.height=t.height,i.width=Math.round(i.height*r))),i},showRedirectDialog:function(t,i,r,u){var s,f,h,e,c,o;if(!t||isNaN(t)||!i){r&&r();return}t=Math.ceil(Math.abs(t));f=n($rql.ui.templates("sso-redirect-dialog").render({header:$rql.i18n.strings.PageRedirection,okLabel:$rql.i18n.strings.Ok,message1:$f($rql.i18n.strings.CountdownMessage1,"<span id='redirectCountdown'><\/span>"),message2:$f($rql.i18n.strings.CountdownMessage2,$rql.i18n.strings.Ok)}));h=u>2?"hidden.bs.modal":"hidden";f.on(h,function(){e&&clearTimeout(e);s&&clearTimeout(s);r()});n("body").append(f);n("#redirectCountdown").html(t);c=t===0?3e3:1e3;o=t;t===0?window.location=i:(f.modal("show"),e=setInterval(function(){o-=1;o<=0?(clearInterval(e),f.find(".modal-body").html($rql.i18n.strings.RedirectMessage),s=setTimeout(function(){window.location=i},c)):f.find("#redirectCountdown").html(o)},1e3))},debounce:function(n,t,i){var r;return function(){function e(){i||n.apply(u,f);r=null}var u=this,f=arguments;r?clearTimeout(r):i&&n.apply(u,f);r=setTimeout(e,t||100)}},navigateWithFormCompletionCheck:function(t,i,r){var u={forms:[],queues:[]};n(window).triggerHandler("beforeunload",u);u.forms&&u.forms.length||u.queues&&u.queues.length?$rql.ui.confirm($rql.i18n.strings.UnsavedChangesConfirmation,$rql.i18n.strings.Confirmation,function(){var i;if(u.forms&&u.forms.length)for(i=0;i<u.forms.length;i++)r&&(u.forms[i].config.skipCompletionCheck=!0),u.forms[i].config.SheetControl&&u.forms[i].config.SheetControl.closeAll();if(u.queues&&u.queues.length)for(i=0;i<u.queues.length;i++)n(window).off("beforeunload."+u.queues[i].config.Id,u.queues[i].checkUnsavedChanges),u.queues[i].config.skipCompletionCheck=!0;t&&setTimeout(t,0)},function(){i&&setTimeout(i,0)}):t&&t()},cssAsInt:function(n,t){var r=n.css(t),i=parseInt(r);return i?i:0},positionSpinner:function(n,t){if(n&&t&&n.length===1&&t.length===1){var i=parseInt(Math.max(n.innerHeight()-6,n.height())),r=i+"px",u=n.position(),f=parseInt(u.left)+$rql.ui.cssAsInt(n,"margin-left")+$rql.ui.cssAsInt(n,"border-left")+n.innerWidth(),e=parseInt(f-i),o=parseInt(u.top+(n.outerHeight(!0)-i)/2);t.css({top:o+"px",left:e+"px","font-size":r,width:r,height:r})}},selectRange:function(n,t,i){var r,u;if(n.length!==0)if(r=n[0],r)r.setSelectionRange?(r.focus(),r.setSelectionRange(t,i)):r.createTextRange?(u=r.createTextRange(),u.collapse(!0),u.moveEnd("character",i),u.moveStart("character",t),u.select()):r.selectionStart&&(r.selectionStart=t,r.selectionEnd=i);else return},rgb2hex:function(n){return n=n.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i),n&&n.length===4?"#"+("0"+parseInt(n[1],10).toString(16)).slice(-2)+("0"+parseInt(n[2],10).toString(16)).slice(-2)+("0"+parseInt(n[3],10).toString(16)).slice(-2):""},isElementInView:function(t,i){var r=n(window).scrollTop(),f=r+n(window).height(),u=n(t).offset().top,e=u+n(t).height();return i===!0?r<u&&f>e:u<=f&&e>=r},isElementInFullView:function(t){var i=n(window).scrollTop(),u=i+n(window).height()-20,r=n(t).offset().top,f=r+n(t).height();return i<r&&u>f},isParentPositionOf:function(t,i){var r=!1;return t.parents().each(function(){if(n(this).css("position")===i)return r=!0,!1}),r},supportedMediaBreakpoints:function(){return this.mediaBreakpoints},checkMediaBreakpoint:function(n,t){var i=this.getMediaBreakpoint();switch(t){case"equal":return i===n;case"greater":return this.mediaBreakpoints.indexOf(i)>=this.mediaBreakpoints.indexOf(n);case"lesser":return this.mediaBreakpoints.indexOf(i)<=this.mediaBreakpoints.indexOf(n);default:return!1}},getMediaBreakpoint:function(){var i=window.outerWidth,r,t;return(i!==$rql.ui._windowWidth&&($rql.ui._windowWidth=i,$rql.ui._mediaBreakpoint=null),$rql.ui._mediaBreakpoint)?$rql.ui._mediaBreakpoint:(r=n("#mqDetector > span"),t="",r.each(function(i,r){if(n(r).is(":visible"))return t=n(r).attr("data-breakpoint"),!1}),$rql.ui._mediaBreakpoint=t,t)},getTextWidth:function(t){var u=n("body").css("font-size"),f=n("body").css("font-family"),e=n("body").css("font-weight"),o=$rql.ui.getTextWidth.canvas||($rql.ui.getTextWidth.canvas=document.createElement("canvas")),i=o.getContext("2d"),r;return i.font=e+" "+u+" "+f,r=i.measureText(t),Math.ceil(r.width)},getTextWidthPercent:function(n,t,i){var r=this.getTextWidth(n)+(t||0);return(i===0&&(i=document.body.offsetWidth),r>=i||i===0)?100:r/(i/100)},getTextLineHeight:function(t){return t[0]?parseInt(window.getComputedStyle(t[0]).lineHeight):parseInt(n("body").css("line-height"))},isTextTruncated:function(n){if(n.length===0)return!1;var t=$rql.ui.getTextLineHeight(n),i=$rql.ui.getTextWidth(n.text())/n.width(),r=i*t;return r>n.height()},elementsFromPoint:function(n,t){for(var r=[],f=[],i,e,u;(i=document.elementFromPoint(n,t))&&r.indexOf(i)===-1&&i!=null;)r.push(i),f.push({value:i.style.getPropertyValue("pointer-events"),priority:i.style.getPropertyPriority("pointer-events")}),i.style.setProperty("pointer-events","none","important");for(e=f.length;u=f[--e];)r[e].style.setProperty("pointer-events",u.value?u.value:"",u.priority);return r},setContainerOverflow:function(n){if(!n)return null;var t=n.parents(".table-responsive, .overflow-hide");return t.addClass("overflow-visible"),n.scrollintoview(),t},restoreContainerOverflow:function(n){n&&n.removeClass("overflow-visible")},getQsetButtonActiveStyle:function(n){return $rql.api.uiVersion<=2?"active":n.hasClass("btn-secondary")?"btn-outline-secondary":n.hasClass("btn-default")?"btn-outline-default":n.hasClass("btn-success")?"btn-outline-success":n.hasClass("btn-danger")?"btn-outline-danger":n.hasClass("btn-warning")?"btn-outline-warning":n.hasClass("btn-info")?"btn-outline-info":"btn-primary"},isVisibleInContainer:function(n,t,i,r){if(!n||!t)return!1;if(t.length===0)return!0;if(n.length===0)return!1;var e=!1,o=!1,u=t[0].getBoundingClientRect(),f=n[0].getBoundingClientRect();return(r?(o=f.bottom>u.top&&f.top<u.bottom,e=f.right>u.left&&f.left<u.right):(o=f.top>=u.top&&f.bottom<=u.bottom,e=f.left>=u.left&&f.right<=u.right),i==="vertical")?o:i==="horizontal"?e:i==="both"?e&&o:!1},isVisibleInViewport:function(n){if(n){var t=n.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}},hasVerticalScrollbar:function(n){if(n&&n.length!==0)return n[0].clientHeight<n[0].scrollHeight},hasHorizontalScrollbar:function(n){if(n&&n.length!==0)return n[0].clientWidth<n[0].scrollWidth},renderSelect2:function(t,i,r,u){var f={theme:"material",dropdownCssClass:"select2-container-material-dropdown",width:"100%",minimumResultsForSearch:-1};if($rql.api.isUWP&&(f.dropdownAutoWidth=!0),i||(i={}),(i.showSearch||t.find("select.rql-select2").hasClass("show-search"))&&delete f.minimumResultsForSearch,n.extend(i,f),u)u.select2(i);else{if(t.find("select.rql-select2").data("select2"))return;t.find("select.rql-select2").select2(i)}t.find(".select2-selection__arrow").html("<icon class='fas fa-caret-down'><\/i>")},setInputFilter:function(n,t){["input","keydown","keyup","mousedown","mouseup","select","contextmenu","drop"].forEach(function(i){n.addEventListener(i,function(){t(this.value)?(this.oldValue=this.value,this.oldSelectionStart=this.selectionStart,this.oldSelectionEnd=this.selectionEnd):this.hasOwnProperty("oldValue")&&(this.value=this.oldValue,this.setSelectionRange(this.oldSelectionStart,this.oldSelectionEnd))})})},parseInlineStyle:function(t){var e,u,f,i,r,o;if(!t)return{};for(e={},u=t.split(";"),u=u.filter(function(n){return n!==(undefined||"")}),f=0;f<u.length;f++)i=u[f].split(/:(?!\/\/)/g),i[1]=n.trim(i[1]).replace("url(","").replace(")",""),o=i[0],i[0].indexOf("-")>=0?(r=i[0].split("-"),r=r[0]+r[1].charAt(0).toUpperCase()+r[1].slice(1)):r=i[0],e[n.trim(r)]={originalName:o,value:i[1]};return e},parseUiStyle:function(t,i){var f,r;if(t){var u=[],e=[],o=[],s=[],h="",c="";for(i&&t[Object.keys(i)[0]]?u=t[Object.keys(i)[0]].split(" "):t.UiStyle&&(u=t.UiStyle.split(" ")),f=0;f<u.length;f++)u[f].startsWith("~~")?(r=u[f].substr(2),r.startsWith("[")&&r.endsWith("]")?h=r.replace(/[\[\]]/g,""):e.push(r)):u[f].startsWith("~")?(r=u[f].substr(1),r.startsWith("[")&&r.endsWith("]")?c=r.replace(/[\[\]]/g,""):o.push(r)):s.push(u[f]);i?(i[Object.keys(i)[0]]=s.join(" "),i[Object.keys(i)[1]]=o.join(" "),i[Object.keys(i)[2]]=e.join(" "),i[Object.keys(i)[3]]=c,i[Object.keys(i)[4]]=h,n.extend(!0,t,i)):(t.ControlUiStyle=e.join(" "),t.WrapperUiStyle=o.join(" "),t.ControlStyleProp=h,t.WrapperStyleProp=c,t.UiStyle=s.join(" "))}},getScrollbarWidth:function(){var i,t,u,r;return document.body.scrollHeight<n(window).height()?0:(i=document.createElement("p"),i.style.width="100%",i.style.height="200px",t=document.createElement("div"),t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(i),document.body.appendChild(t),u=i.offsetWidth,t.style.overflow="scroll",r=i.offsetWidth,u==r&&(r=t.clientWidth),document.body.removeChild(t),u-r)},nextTempUiId:function(){return!t._currentTempUiId||t._currentTempUiId>16777215?t._currentTempUiId=1:t._currentTempUiId++,"tui_"+t._currentTempUiId.toString(16)},i18nSelect2:function(n){if(!n)return"en";var t=n.slice(0,2).toLowerCase();return t.startsWith("pt")||t.startsWith("zh")||t.startsWith("sr")?n:t}}})(jQuery);
/*!
 * jQuery scrollintoview() plugin and :scrollable selector filter
 * http://erraticdev.blogspot.ie/2011/02/jquery-scroll-into-view-plugin-with.html
 * Version 1.8 (14 Jul 2011)
 * Requires jQuery 1.4 or newer
 *
 * Copyright (c) 2011 Robert Koritnik
 * Licensed under the terms of the MIT license
 * http://www.opensource.org/licenses/mit-license.php
 */
(function(n){var t={vertical:{x:!1,y:!0},horizontal:{x:!0,y:!1},both:{x:!0,y:!0},x:{x:!0,y:!1},y:{x:!1,y:!0}},f={duration:"fast",direction:"both"},i=/^(?:html)$/i,e=function(t,i){i=i||(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(t,null):t.currentStyle);var u=document.defaultView&&document.defaultView.getComputedStyle?!0:!1,r={top:parseFloat(u?i.borderTopWidth:n.css(t,"borderTopWidth"))||0,left:parseFloat(u?i.borderLeftWidth:n.css(t,"borderLeftWidth"))||0,bottom:parseFloat(u?i.borderBottomWidth:n.css(t,"borderBottomWidth"))||0,right:parseFloat(u?i.borderRightWidth:n.css(t,"borderRightWidth"))||0};return{top:r.top,left:r.left,bottom:r.bottom,right:r.right,vertical:r.top+r.bottom,horizontal:r.left+r.right}},u=function(t){var u=n(window),r=i.test(t[0].nodeName);return{border:r?{top:0,left:0,bottom:0,right:0}:e(t[0]),scroll:{top:(r?u:t).scrollTop(),left:(r?u:t).scrollLeft()},scrollbar:{right:r?0:t.innerWidth()-t[0].clientWidth,bottom:r?0:t.innerHeight()-t[0].clientHeight},rect:function(){var n=t[0].getBoundingClientRect();return{top:r?0:n.top,left:r?0:n.left,bottom:r?t[0].clientHeight:n.bottom,right:r?t[0].clientWidth:n.right}}()}},r;n.fn.extend({scrollintoview:function(r){var c,l,s;if(this.length!==0){if($rql.api.offline||$rql.ui.isMobile()){this[0].scrollIntoView();return}if(r=n.extend({},f,r),r.direction=t[typeof r.direction=="string"&&r.direction.toLowerCase()]||t.both,c="",r.direction.x===!0&&(c="horizontal"),r.direction.y===!0&&(c=c?"both":"vertical"),l=this.eq(0),s=l.closest(":scrollable("+c+")"),s.length>0){s=s.eq(0);var e={e:u(l),s:u(s)},o={top:e.e.rect.top-(e.s.rect.top+e.s.border.top),bottom:e.s.rect.bottom-e.s.border.bottom-e.s.scrollbar.bottom-e.e.rect.bottom,left:e.e.rect.left-(e.s.rect.left+e.s.border.left),right:e.s.rect.right-e.s.border.right-e.s.scrollbar.right-e.e.rect.right},h={};r.direction.y===!0&&(o.top<0?h.scrollTop=e.s.scroll.top+o.top:o.top>0&&o.bottom<0&&(h.scrollTop=e.s.scroll.top+Math.min(o.top,-o.bottom)));r.direction.x===!0&&(o.left<0?h.scrollLeft=e.s.scroll.left+o.left:o.left>0&&o.right<0&&(h.scrollLeft=e.s.scroll.left+Math.min(o.left,-o.right)));n.isEmptyObject(h)?n.isFunction(r.complete)&&r.complete.call(s[0]):(i.test(s[0].nodeName)&&(s=n("html,body")),s.animate(h,r.duration).eq(0).queue(function(t){n.isFunction(r.complete)&&r.complete.call(s[0]);t()}))}return this}}});r={auto:!0,scroll:!0,visible:!1,hidden:!1};n.extend(n.expr[":"],{scrollable:function(n,u,f){var s=t[typeof f[3]=="string"&&f[3].toLowerCase()]||t.both,h=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(n,null):n.currentStyle,e={x:r[h.overflowX.toLowerCase()]||!1,y:r[h.overflowY.toLowerCase()]||!1,isRoot:i.test(n.nodeName)},o;return!e.x&&!e.y&&!e.isRoot?!1:(o={height:{scroll:n.scrollHeight,client:n.clientHeight},width:{scroll:n.scrollWidth,client:n.clientWidth},scrollableX:function(){return(e.x||e.isRoot)&&this.width.scroll>this.width.client},scrollableY:function(){return(e.y||e.isRoot)&&this.height.scroll>this.height.client}},s.y&&o.scrollableY()||s.x&&o.scrollableX())}})})(jQuery);$.fn.applyOverlay=function(n,t,i,r,u){var f=$(this);return n=n===undefined?!0:!!n,f.each(function(f,e){var s=$(e),o;if(n&&s.find(".js-loading-overlay").length===0){if(o=$(i).addClass("js-loading-overlay"),t!==undefined&&o.addClass(t),s.append(o).addClass("js-loading"),r&&o.css(r),u)o.on("click",u);o.show()}else n||s.removeClass("js-loading").find(".js-loading-overlay").remove()}),this};
/*!
 * jQuery doTimeout: Like setTimeout, but better! - v1.0 - 3/3/2010
 * http://benalman.com/projects/jquery-dotimeout-plugin/
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($){function r(t){function h(){t?o.removeData(t):u&&delete n[u]}function a(){r.id=setTimeout(function(){r.fn()},s)}var c=this,o,r={},v=t?$.fn:$,f=arguments,l=4,u=f[1],s=f[2],e=f[3];if(typeof u!="string"&&(l--,u=t=0,s=f[1],e=f[2]),t?(o=c.eq(0),o.data(t,r=o.data(t)||{})):u&&(r=n[u]||(n[u]={})),r.id&&clearTimeout(r.id),delete r.id,e)r.fn=function(n){typeof e=="string"&&(e=v[e]);e.apply(c,i.call(f,l))===!0&&!n?a():h()},a();else{if(r.fn)return s===undefined?h():r.fn(s===!1),!0;h()}}var n={},t="doTimeout",i=Array.prototype.slice;$[t]=function(){return r.apply(window,[0].concat(i.call(arguments)))};$.fn[t]=function(){var n=i.call(arguments),u=r.apply(this,[t+n[0]].concat(n));return typeof n[0]=="number"||typeof n[1]=="number"?this:u}})(jQuery);
(function(n){n.fn.collision=function(t,i){return(t=typeof t!="undefined"?t:!0,i=n.extend({my:"left top",at:"right top",collide:"flip"},i),n.browser.msie&&parseInt(n.browser.version,10)<=8)?this:(this.each(function(){var h,r,f,e,o;n(this).removeClass("pull-right");h=n(this).offset().left+n(this).outerWidth();r=n(window).height()-n("footer").height()-n(this).offset().top-50;t==!0?h>n(window).width()?n(this).addClass("pull-right"):h<0&&n(this).css({left:0,right:"auto"}):(i.positionTo=i.positionTo?i.positionTo:n(this).parent(),n(this).position({of:i.positionTo,my:i.my,at:i.at,collision:i.collide}),r=n(window).height()-n("footer").height()-n(this).offset().top-50,r<0&&(n(this).position({of:i.positionTo,my:"right bottom",at:"left bottom",collision:i.collide}),r=n(window).height()-n("footer").height()-n(this).offset().top-50,r<0&&n(this).position({of:i.positionTo,my:"right bottom",at:"left bottom",collision:"flipfit"})));var u=n(this).children('[rql-role="dropdown-more"]').hide(),s=u.children("ul"),c=!1;if(u.length>0){for(s.children("li").insertBefore(u),f=n(this).children('li[rql-role!="dropdown-more"]'),e=0;e<f.length;e++)if(o=n(f[e]),o.position().top>r&&f.length>1){if(e==f.length-1&&!c)continue;o.detach().appendTo(s).is(".dropdown")&&o.toggleClass("dropdown dropdown-submenu");c=!0}else o.find(".show-left").removeClass("show-left");c&&(s.find("li.dropdown-submenu").addClass("show-left"),s.find("> li.active").length?u.addClass("active"):u.removeClass("active"),u.show());n(this).find(".dropdown > .dropdown-menu").css({top:"",left:"",right:""})}}),this)}})(jQuery);
(function(n){Date.max=function(n,t){return n>t?n:t};Date.min=function(n,t){return n<t?n:t};n.extend(Date.prototype,{add2:function(n,t,i,r,u){return n=parseInt(n),t=parseInt(t),i=parseInt(i),r=parseInt(r),u=parseInt(u),new Date(this.getFullYear()+n,this.getMonth()+t,this.getDate()+i,this.getHours()+r,this.getMinutes()+u)},addDays:function(n){return this.add2(0,0,n,0,0)},addMonths:function(n){return this.add2(0,n,0,0,0)},addYears:function(n){return this.add2(n,0,0,0,0)},addHours:function(n){return this.add2(0,0,0,n,0)},addMinutes:function(n){return this.add2(0,0,0,0,n)},clearTime:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate())},equals:function(n){return this.toString()==n.toString()},stdTimezoneOffset:function(){var n=new Date(this.getFullYear(),0,1),t=new Date(this.getFullYear(),6,1);return Math.max(n.getTimezoneOffset(),t.getTimezoneOffset())},isDstObserved:function(){return this.getTimezoneOffset()<this.stdTimezoneOffset()},getDst:function(){var n={enabled:!1,supported:!1},t=this.getFullYear(),i=new Date(t,0,1,0,0,0,0).getTimezoneOffset(),r=new Date(t,6,1,0,0,0,0).getTimezoneOffset();return i===r?n.supported=n.enabled=!1:(n.enabled=this.isDstObserved(),n.supported=!0),n},getTimeZone:function(){var t=$rql.TimeZone.current(),r,n;if(t)return t.Id!=="UTC"&&(t.dstEnabled=(new Date).getTimezoneOffset()!==new Date((new Date).getFullYear(),0,1,0,0,0,0).getTimezoneOffset()),t;var u=$rql.i18n.timeZones,f=-this.getTimezoneOffset(),i=this.getDst();if(u)for(r=0;r<u.length;r++)if(n=u[r],n.dstEnabled=n.Dst&&i.enabled,n)if(i.enabled){if(n.Dst&&n.DstOffset==f)return n}else if(i.supported&&n.Dst&&n.Offset==f||!i.supported&&!n.Dst&&n.Offset==f)return n;return $rql.i18n.timeZones[0]},getTimeZoneId:function(){return/\((.+)\)/.exec((new Date).toString())[1]},getQuarter:function(){return Math.floor(this.getMonth()/3)},getTotalDays:function(){return this.valueOf()/864e5},getTotalMonths:function(){return(this.getFullYear()-1970)*12+this.getMonth()+1},isDst:function(){return this.getDst().enabled},subtract:function(n){return new Date(this.valueOf()-n.valueOf())},toUTC:function(){return this.addMinutes(-this.getTimeZone().Offset)},fromiCalendarDate:function(n){var t=n.substr(0,4),i=parseInt(n.substr(4,2),10)-1,r=n.substr(6,2),u=n.substr(9,2),f=n.substr(11,2),e=n.substr(13,2);return new Date(t,i,r,u,f,e)}})})(jQuery);
(function(n){window.JSON||(window.JSON={});n.fromJson=function(n,t){return typeof t=="undefined"&&(t=null),window.JSON.parse(n,t)};n.toJson=function(n,t,i){return typeof t=="undefined"&&(t=null),typeof i=="undefined"&&(i=null),window.JSON.stringify(n,t,i)}})(jQuery);
(function(n,t){window.$log={level:"info",levels:{all:0,debug:1,info:2,warn:3,error:4,off:5},debug:function(n,i){$log.canLog("debug")&&t.log($log.format("DEBUG",n,i))},info:function(n,i){$log.canLog("info")&&t.log($log.format("INFO",n,i))},warn:function(n,i){$log.canLog("warn")&&t.log($log.format("WARN",n,i))},error:function(n,i){$log.canLog("error")&&t.log($log.format("ERROR",n,i))},canLog:function(n){return t&&t.log&&$log.levels[n]>=$log.levels[$log.level]},format:function(n,t,i){var r=arguments.callee.caller.name,u=$f("{0:yyyy-MM-dd HH:mm:ss.fff} | {1} | {2} | {3}",new Date,n,r?r:"?",window.$rql?this.formatMessage(t,i):t);return typeof t=="string"?u:[u,t]},formatMessage:function(n,t){return typeof n=="string"?t&&t.statusText?n+="\n"+t.statusText:n:n&&n.statusText?n.statusText:void 0}}})(jQuery,window.console);
(function(n){n.fn.selection=function(n,t){var r,i;if(this.length>0)return r=this.first(),n=="*"&&(n=0,t=r.val().length),typeof n=="number"?(t=typeof t=="number"?t:n,this[0].setSelectionRange?this[0].setSelectionRange(n,t):this[0].createTextRange&&(i=this[0].createTextRange(),i.collapse(!0),i.moveEnd("character",t),i.moveStart("character",n),i.select()),this):(this[0].type!="number"&&this[0].setSelectionRange?(n=this[0].selectionStart,t=this[0].selectionEnd):document.selection&&document.selection.createRange&&(i=document.selection.createRange(),n=0-i.duplicate().moveStart("character",-1e5),t=n+i.text.length),{begin:n,end:t})}})(jQuery);
(function(n){var t=/^[\s]+|[\s]+$/g;window.$f=String.localeFormat;n.extend(String.prototype,{isEmpty:function(n){return typeof n=="string"&&n.trim()?!1:!0},contains:function(n){return this.indexOf(n)>-1},countOf:function(n){for(var i=0,t=0;t<this.length;t++)this[t]==n&&i++;return i},decode:function(){var n;try{n=atob(this)}catch(t){n=this}return n},encode:function(){var n;try{n=btoa(this)}catch(t){n=this}return n},isEncoded:function(){return/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/gi.test(this)},isNumber:function(){return!isNaN(parseFloat(this))},isInteger:function(){if(this.valueOf()==="-")return!1;for(var t=0;t<this.length;t++)if(this[t]!=="-"&&!n.isNumeric(this[t]))return!1;return!0},matchExact:function(n){var t=this.match(n);return t!=null&&this==t[0]},replaceAll:function(n,t){return this.split(n).join(t)},replaceArray:function(n,t){var r=this;for(i=0;i<n.length;i++)r=r.replace(n[i],t);return r},replaceAt:function(n,t){return this.substr(0,n)+t+this.substr(n+t.length)},replaceString:function(n,t){return this.replace(n,function(){return t})},splitAndTrim:function(n){for(var t,r=[],u=this.split(n),i=0;i<u.length;i++)t=u[i],t&&(t=t.trim())>""&&r.add(t);return r},trimmer:function(){return this.replace(t,"")},trimChar:function(n){var t=this;return(Array.isArray(n)&&n.contains(t.charAt(0))||!Array.isArray(n)&&t.charAt(0)===n)&&(t=t.substring(1)),(Array.isArray(n)&&n.contains(t.charAt(t.length-1))||!Array.isArray(n)&&t.charAt(t.length-1)===n)&&(t=t.substring(0,t.length-1)),t},trimEndChar:function(n){return!Array.isArray(n)&&this[this.length-1]===n||Array.isArray(n)&&n.contains(this[this.length-1])?this.substr(0,this.length-1):this.substr(0)},trimEndCharAll:function(n){for(var t=this,i=t.length-1;t.length>0&&i>0;)if(Array.isArray(n)&&n.contains(t[i])||!Array.isArray(n)&&n===t[i])t=t.substr(0,i--);else break;return t.substr(0)},hashCode:function(){var n=0,t,i,r;if(this.length===0)return n;for(t=0,r=this.length;t<r;t++)i=this.charCodeAt(t),n=(n<<5)-n+i|0;return n},toProperCase:function(){return this.charAt(0).toUpperCase()+this.slice(1)},endsWith:function(n){return this.indexOf(n,this.length-n.length)!==-1},toBool:function(){if(this.length===0)return!1;var n=this.toLowerCase(),t=function(){switch(!1){case n!=="true":return!0;case n!=="false":return!1;case n!=="yes":return!0}}();if(typeof t=="boolean")return t},toDate:function(n){n=n.replace("mm","ii");var v=this.replace(/[^a-zA-Z0-9]/g,"-"),y=n.toLowerCase().replace(/[^a-zA-Z0-9]/g,"-"),t=y.split("-"),i=v.split("-"),e=t.indexOf("mm")>-1?t.indexOf("mm"):t.indexOf("m"),o=t.indexOf("dd")>-1?t.indexOf("dd"):t.indexOf("d"),s=t.indexOf("yyyy")>-1?t.indexOf("yyyy"):t.indexOf("yy"),h=this.indexOf(":")>-1,f=minutesIndex=secondsIndex=-1;h&&(f=t.indexOf("hh")>-1?t.indexOf("hh"):t.indexOf("h"),minutesIndex=t.indexOf("ii"),secondsIndex=t.indexOf("ss"));var r=new Date,c=s>-1?i[s]:r.getFullYear(),l=e>-1?i[e]-1:r.getMonth()-1,a=o>-1?i[o]:r.getDate();if(h){var u=f>-1?i[f]:r.getHours(),p=minutesIndex>-1?i[minutesIndex]:r.getMinutes(),w=secondsIndex>-1?i[secondsIndex]:r.getSeconds();return(i[i.length-1]==="PM"||i[i.length-1]==="pm")&&parseInt(u)<12&&(u=parseInt(u)+12),new Date(c,l,a,u,p,w)}return new Date(c,l,a)},parseOptions:function(){for(var i=/(\w+)\[(.*?)\]/gi,r=/(.*?):([^,]*),?/gi,u=[],n=i.exec(this);n!=null;){for(var o=n[1],f=[],e=n[2],t=r.exec(e);t!=null;)f.push({param:t[1].toLowerCase().trim(),value:t[2]}),t=r.exec(e);u.push({config:o.toLowerCase().trim(),options:f});n=i.exec(this)}return u},parseOptionsAsObject:function(n,t){for(var s=/([\w-]+)\[(.*?)\]/gi,h=/(.*?):([^,]*),?/gi,e={},f=s.exec(this),i,o,r,c,u;f!==null;){for(i=f[1],o=f[2],n&&(i=i.toLowerCase()),e[i]={},r=h.exec(o);r!==null;)c=r[1].toLowerCase().trim(),u=r[2].trim(),t&&u.toBool()!==undefined&&(u=u.toBool()),e[i][c]=u,r=h.exec(o);f=s.exec(this)}return e}})})(jQuery);
(function(n){function r(i){if(t||((t={baseUrl:$rql.api.baseUrl,hasDataExtentions:!0,$i18n:$rql.i18n,$strings:$rql.i18n.strings,$user:$rql.api.user,offline:$rql.api.offline})[$rql.api.uiMode]=!0),i){if(!i.hasDataExtentions)return n.extend(i,t)}else return t;return i}var t,u="script[type='text/template'][name='{0}']",i={};n.extend($rql.ui,{partials:function(){var t={},n;if(arguments)for(n=0;n<arguments.length;n++)t[arguments[n]]=$rql.ui.templates(arguments[n]).html;return t},render:function(n,t,i){return Mustache.to_html(n,r(t),i)},template:function(t){var i=n($f(u,this.name=t));i.length==0?$rql.error($f("Template '{0}' is not defined.",t)):this.html=i.html()},templateCache:i,templates:function(n){return i[n]?i[n]:i[n]=new $rql.ui.template(n)}});$rql.ui.template.prototype={appendTo:function(n,t,i){return n.append(this.render(t,i))},prependTo:function(n,t,i){return n.prepend(this.render(t,i))},render:function(n,t,i){return Mustache.to_html(this.html,r(n),t,i)}}})(jQuery);
(function(){function u(){for(var f,t,i,r,e=["US"],u=0;u<e.length;u++){for(f=e[u],t=[],t.push(n.All[0]),i=0;i<n.All.length;i++)r=n.All[i],r.Groups&&r.Groups.indexOf(f)!==-1&&t.push(r);n[f]=t}}var n=window.$rql.TimeZones=window.$rql.TimeZones||{};n.All=[{Id:"UTC",Iana:"Etc/UTC",Name:"(UTC) Coordinated Universal Time"},{Id:"Aleutian Standard Time",Iana:"America/Adak",Name:"(UTC-10:00) Aleutian Islands"},{Id:"Hawaiian Standard Time",Iana:"Pacific/Honolulu",Name:"(UTC-10:00) Hawaii",Groups:["US"]},{Id:"Alaskan Standard Time",Iana:"America/Anchorage",Name:"(UTC-09:00) Alaska",Groups:["US"]},{Id:"Pacific Standard Time (Mexico)",Iana:"America/Tijuana",Name:"(UTC-08:00) Baja California"},{Id:"Pacific Standard Time",Iana:"America/Los_Angeles",Name:"(UTC-08:00) Pacific Time (US & Canada)",Groups:["US"]},{Id:"US Mountain Standard Time",Iana:"America/Phoenix",Name:"(UTC-07:00) Arizona",Groups:["US"]},{Id:"Mountain Standard Time (Mexico)",Iana:"America/Chihuahua",Name:"(UTC-07:00) Chihuahua, La Paz, Mazatlan"},{Id:"Mountain Standard Time",Iana:"America/Denver",Name:"(UTC-07:00) Mountain Time (US & Canada)",Groups:["US"]},{Id:"Yukon Standard Time",Iana:"America/Whitehorse",Name:"(UTC-07:00) Yukon"},{Id:"Central America Standard Time",Iana:"America/Guatemala",Name:"(UTC-06:00) Central America"},{Id:"Central Standard Time",Iana:"America/Chicago",Name:"(UTC-06:00) Central Time (US & Canada)",Groups:["US"]},{Id:"Easter Island Standard Time",Iana:"Pacific/Easter",Name:"(UTC-06:00) Easter Island"},{Id:"Central Standard Time (Mexico)",Iana:"America/Mexico_City",Name:"(UTC-06:00) Guadalajara, Mexico City, Monterrey"},{Id:"Canada Central Standard Time",Iana:"America/Regina",Name:"(UTC-06:00) Saskatchewan"},{Id:"SA Pacific Standard Time",Iana:"America/Bogota",Name:"(UTC-05:00) Bogota, Lima, Quito, Rio Branco"},{Id:"Eastern Standard Time (Mexico)",Iana:"America/Cancun",Name:"(UTC-05:00) Chetumal"},{Id:"Eastern Standard Time",Iana:"America/New_York",Name:"(UTC-05:00) Eastern Time (US & Canada)",Groups:["US"]},{Id:"Haiti Standard Time",Iana:"America/Port-au-Prince",Name:"(UTC-05:00) Haiti"},{Id:"Cuba Standard Time",Iana:"America/Havana",Name:"(UTC-05:00) Havana"},{Id:"US Eastern Standard Time",Iana:"America/Indiana/Indianapolis",Name:"(UTC-05:00) Indiana (East)"},{Id:"Turks And Caicos Standard Time",Iana:"America/Grand_Turk",Name:"(UTC-05:00) Turks and Caicos"},{Id:"Paraguay Standard Time",Iana:"America/Asuncion",Name:"(UTC-04:00) Asuncion"},{Id:"Atlantic Standard Time",Iana:"America/Halifax",Name:"(UTC-04:00) Atlantic Time (Canada)"},{Id:"Venezuela Standard Time",Iana:"America/Caracas",Name:"(UTC-04:00) Caracas"},{Id:"Central Brazilian Standard Time",Iana:"America/Cuiaba",Name:"(UTC-04:00) Cuiaba"},{Id:"SA Western Standard Time",Iana:"America/La_Paz",Name:"(UTC-04:00) Georgetown, La Paz, Manaus, San Juan"},{Id:"Pacific SA Standard Time",Iana:"America/Santiago",Name:"(UTC-04:00) Santiago"},{Id:"Newfoundland Standard Time",Iana:"America/St_Johns",Name:"(UTC-03:30) Newfoundland"},{Id:"Tocantins Standard Time",Iana:"America/Araguaina",Name:"(UTC-03:00) Araguaina"},{Id:"E. South America Standard Time",Iana:"America/Sao_Paulo",Name:"(UTC-03:00) Brasilia"},{Id:"SA Eastern Standard Time",Iana:"America/Cayenne",Name:"(UTC-03:00) Cayenne, Fortaleza"},{Id:"Argentina Standard Time",Iana:"America/Argentina/Buenos_Aires",Iana2:"America/Buenos_Aires",Name:"(UTC-03:00) City of Buenos Aires"},{Id:"Greenland Standard Time",Iana:"America/Nuuk",Iana2:"America/Godthab",Name:"(UTC-03:00) Greenland"},{Id:"Montevideo Standard Time",Iana:"America/Montevideo",Name:"(UTC-03:00) Montevideo"},{Id:"Magallanes Standard Time",Iana:"America/Punta_Arenas",Name:"(UTC-03:00) Punta Arenas"},{Id:"Saint Pierre Standard Time",Iana:"America/Miquelon",Name:"(UTC-03:00) Saint Pierre and Miquelon"},{Id:"Bahia Standard Time",Iana:"America/Bahia",Name:"(UTC-03:00) Salvador"},{Id:"Azores Standard Time",Iana:"Atlantic/Azores",Name:"(UTC-01:00) Azores"},{Id:"Cape Verde Standard Time",Iana:"Atlantic/Cape_Verde",Name:"(UTC-01:00) Cabo Verde Is."},{Id:"GMT Standard Time",Iana:"Europe/London",Name:"(UTC+00:00) Dublin, Edinburgh, Lisbon, London"},{Id:"Greenwich Standard Time",Iana:"Atlantic/Reykjavik",Name:"(UTC+00:00) Monrovia, Reykjavik"},{Id:"Sao Tome Standard Time",Iana:"Africa/Sao_Tome",Name:"(UTC+00:00) Sao Tome"},{Id:"Morocco Standard Time",Iana:"Africa/Casablanca",Name:"(UTC+01:00) Casablanca"},{Id:"W. Europe Standard Time",Iana:"Europe/Berlin",Name:"(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"},{Id:"Central Europe Standard Time",Iana:"Europe/Budapest",Name:"(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague"},{Id:"Romance Standard Time",Iana:"Europe/Paris",Name:"(UTC+01:00) Brussels, Copenhagen, Madrid, Paris"},{Id:"Central European Standard Time",Iana:"Europe/Warsaw",Name:"(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb"},{Id:"W. Central Africa Standard Time",Iana:"Africa/Lagos",Name:"(UTC+01:00) West Central Africa"},{Id:"GTB Standard Time",Iana:"Europe/Bucharest",Name:"(UTC+02:00) Athens, Bucharest"},{Id:"Middle East Standard Time",Iana:"Asia/Beirut",Name:"(UTC+02:00) Beirut"},{Id:"Egypt Standard Time",Iana:"Africa/Cairo",Name:"(UTC+02:00) Cairo"},{Id:"E. Europe Standard Time",Iana:"Europe/Chisinau",Name:"(UTC+02:00) Chisinau"},{Id:"Syria Standard Time",Iana:"Asia/Damascus",Name:"(UTC+02:00) Damascus"},{Id:"West Bank Standard Time",Iana:"Asia/Hebron",Name:"(UTC+02:00) Gaza, Hebron"},{Id:"South Africa Standard Time",Iana:"Africa/Johannesburg",Name:"(UTC+02:00) Harare, Pretoria"},{Id:"FLE Standard Time",Iana:"Europe/Kiev",Iana2:"Europe/Kyiv",Name:"(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius"},{Id:"Israel Standard Time",Iana:"Asia/Jerusalem",Name:"(UTC+02:00) Jerusalem"},{Id:"Kaliningrad Standard Time",Iana:"Europe/Kaliningrad",Name:"(UTC+02:00) Kaliningrad"},{Id:"South Sudan Standard Time",Iana:"Africa/Juba",Name:"(UTC+02:00) Juba"},{Id:"Sudan Standard Time",Iana:"Africa/Khartoum",Name:"(UTC+02:00) Khartoum"},{Id:"Libya Standard Time",Iana:"Africa/Tripoli",Name:"(UTC+02:00) Tripoli"},{Id:"Namibia Standard Time",Iana:"Africa/Windhoek",Name:"(UTC+02:00) Windhoek"},{Id:"Jordan Standard Time",Iana:"Asia/Amman",Name:"(UTC+03:00) Amman"},{Id:"Arabic Standard Time",Iana:"Asia/Baghdad",Name:"(UTC+03:00) Baghdad"},{Id:"Turkey Standard Time",Iana:"Europe/Istanbul",Name:"(UTC+03:00) Istanbul"},{Id:"Arab Standard Time",Iana:"Asia/Riyadh",Name:"(UTC+03:00) Kuwait, Riyadh"},{Id:"Belarus Standard Time",Iana:"Europe/Minsk",Name:"(UTC+03:00) Minsk"},{Id:"Russian Standard Time",Iana:"Europe/Moscow",Name:"(UTC+03:00) Moscow, St. Petersburg"},{Id:"E. Africa Standard Time",Iana:"Africa/Nairobi",Name:"(UTC+03:00) Nairobi"},{Id:"Iran Standard Time",Iana:"Asia/Tehran",Name:"(UTC+03:30) Tehran"},{Id:"Arabian Standard Time",Iana:"Asia/Dubai",Name:"(UTC+04:00) Abu Dhabi, Muscat"},{Id:"Astrakhan Standard Time",Iana:"Europe/Astrakhan",Name:"(UTC+04:00) Astrakhan, Ulyanovsk"},{Id:"Azerbaijan Standard Time",Iana:"Asia/Baku",Name:"(UTC+04:00) Baku"},{Id:"Russia Time Zone 3",Iana:"Europe/Samara",Name:"(UTC+04:00) Izhevsk, Samara"},{Id:"Mauritius Standard Time",Iana:"Indian/Mauritius",Name:"(UTC+04:00) Port Louis"},{Id:"Saratov Standard Time",Iana:"Europe/Saratov",Name:"(UTC+04:00) Saratov"},{Id:"Georgian Standard Time",Iana:"Asia/Tbilisi",Name:"(UTC+04:00) Tbilisi"},{Id:"Volgograd Standard Time",Iana:"Europe/Volgograd",Name:"(UTC+04:00) Volgograd"},{Id:"Caucasus Standard Time",Iana:"Asia/Yerevan",Name:"(UTC+04:00) Yerevan"},{Id:"Afghanistan Standard Time",Iana:"Asia/Kabul",Name:"(UTC+04:30) Kabul"},{Id:"West Asia Standard Time",Iana:"Asia/Tashkent",Name:"(UTC+05:00) Ashgabat, Tashkent"},{Id:"Ekaterinburg Standard Time",Iana:"Asia/Yekaterinburg",Name:"(UTC+05:00) Ekaterinburg"},{Id:"Pakistan Standard Time",Iana:"Asia/Karachi",Name:"(UTC+05:00) Islamabad, Karachi"},{Id:"Qyzylorda Standard Time",Iana:"Asia/Qyzylorda",Name:"(UTC+05:00) Qyzylorda"},{Id:"India Standard Time",Iana:"Asia/Kolkata",Name:"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi"},{Id:"Sri Lanka Standard Time",Iana:"Asia/Colombo",Name:"(UTC+05:30) Sri Jayawardenepura"},{Id:"Nepal Standard Time",Iana:"Asia/Kathmandu",Name:"(UTC+05:45) Kathmandu"},{Id:"Central Asia Standard Time",Iana:"Asia/Almaty",Name:"(UTC+06:00) Astana"},{Id:"Bangladesh Standard Time",Iana:"Asia/Dhaka",Name:"(UTC+06:00) Dhaka"},{Id:"Omsk Standard Time",Iana:"Asia/Omsk",Name:"(UTC+06:00) Omsk"},{Id:"Myanmar Standard Time",Iana:"Asia/Yangon",Name:"(UTC+06:30) Yangon (Rangoon)"},{Id:"SE Asia Standard Time",Iana:"Asia/Bangkok",Name:"(UTC+07:00) Bangkok, Hanoi, Jakarta"},{Id:"Altai Standard Time",Iana:"Asia/Barnaul",Name:"(UTC+07:00) Barnaul, Gorno-Altaysk"},{Id:"W. Mongolia Standard Time",Iana:"Asia/Hovd",Name:"(UTC+07:00) Hovd"},{Id:"North Asia Standard Time",Iana:"Asia/Krasnoyarsk",Name:"(UTC+07:00) Krasnoyarsk"},{Id:"N. Central Asia Standard Time",Iana:"Asia/Novosibirsk",Name:"(UTC+07:00) Novosibirsk"},{Id:"Tomsk Standard Time",Iana:"Asia/Tomsk",Name:"(UTC+07:00) Tomsk"},{Id:"China Standard Time",Iana:"Asia/Shanghai",Name:"(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi"},{Id:"Malaysian Standard Time",Iana:"Asia/Kuala_Lumpur",Iana2:"Asia/Kuching",Name:"(UTC+08:00) Kuala Lumpur"},{Id:"North Asia East Standard Time",Iana:"Asia/Irkutsk",Name:"(UTC+08:00) Irkutsk"},{Id:"Singapore Standard Time",Iana:"Asia/Singapore",Name:"(UTC+08:00) Singapore"},{Id:"W. Australia Standard Time",Iana:"Australia/Perth",Name:"(UTC+08:00) Perth"},{Id:"Taipei Standard Time",Iana:"Asia/Taipei",Name:"(UTC+08:00) Taipei"},{Id:"Ulaanbaatar Standard Time",Iana:"Asia/Ulaanbaatar",Name:"(UTC+08:00) Ulaanbaatar"},{Id:"Aus Central W. Standard Time",Iana:"Australia/Eucla",Name:"(UTC+08:45) Eucla"},{Id:"Transbaikal Standard Time",Iana:"Asia/Chita",Name:"(UTC+09:00) Chita"},{Id:"Tokyo Standard Time",Iana:"Asia/Tokyo",Name:"(UTC+09:00) Osaka, Sapporo, Tokyo"},{Id:"North Korea Standard Time",Iana:"Asia/Pyongyang",Name:"(UTC+09:00) Pyongyang"},{Id:"Korea Standard Time",Iana:"Asia/Seoul",Name:"(UTC+09:00) Seoul"},{Id:"Yakutsk Standard Time",Iana:"Asia/Yakutsk",Name:"(UTC+09:00) Yakutsk"},{Id:"Cen. Australia Standard Time",Iana:"Australia/Adelaide",Name:"(UTC+09:30) Adelaide"},{Id:"AUS Central Standard Time",Iana:"Australia/Darwin",Name:"(UTC+09:30) Darwin"},{Id:"E. Australia Standard Time",Iana:"Australia/Brisbane",Name:"(UTC+10:00) Brisbane"},{Id:"AUS Eastern Standard Time",Iana:"Australia/Sydney",Name:"(UTC+10:00) Canberra, Melbourne, Sydney"},{Id:"West Pacific Standard Time",Iana:"Pacific/Port_Moresby",Name:"(UTC+10:00) Guam, Port Moresby"},{Id:"Tasmania Standard Time",Iana:"Australia/Hobart",Name:"(UTC+10:00) Hobart"},{Id:"Vladivostok Standard Time",Iana:"Asia/Vladivostok",Name:"(UTC+10:00) Vladivostok"},{Id:"Lord Howe Standard Time",Iana:"Australia/Lord_Howe",Name:"(UTC+10:30) Lord Howe Island"},{Id:"Bougainville Standard Time",Iana:"Pacific/Bougainville",Name:"(UTC+11:00) Bougainville Island"},{Id:"Russia Time Zone 10",Iana:"Asia/Srednekolymsk",Name:"(UTC+11:00) Chokurdakh"},{Id:"Magadan Standard Time",Iana:"Asia/Magadan",Name:"(UTC+11:00) Magadan"},{Id:"Norfolk Standard Time",Iana:"Pacific/Norfolk",Name:"(UTC+11:00) Norfolk Island"},{Id:"Sakhalin Standard Time",Iana:"Asia/Sakhalin",Name:"(UTC+11:00) Sakhalin"},{Id:"Central Pacific Standard Time",Iana:"Pacific/Guadalcanal",Name:"(UTC+11:00) Solomon Is., New Caledonia"},{Id:"Russia Time Zone 11",Iana:"Asia/Kamchatka",Name:"(UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky"},{Id:"New Zealand Standard Time",Iana:"Pacific/Auckland",Name:"(UTC+12:00) Auckland, Wellington"},{Id:"Fiji Standard Time",Iana:"Pacific/Fiji",Name:"(UTC+12:00) Fiji"},{Id:"Kamchatka Standard Time",Iana:"Asia/Kamchatka",Name:"(UTC+12:00) Petropavlovsk-Kamchatsky - Old"},{Id:"Chatham Islands Standard Time",Iana:"Pacific/Chatham",Name:"(UTC+12:45) Chatham Islands"},{Id:"Tonga Standard Time",Iana:"Pacific/Tongatapu",Name:"(UTC+13:00) Nuku'alofa"},{Id:"Samoa Standard Time",Iana:"Pacific/Apia",Name:"(UTC+13:00) Samoa"},{Id:"Line Islands Standard Time",Iana:"Pacific/Kiritimati",Name:"(UTC+14:00) Kiritimati Island"},{Id:"UTC-11",Iana:"Etc/GMT+11",Name:"(UTC-11:00) Coordinated Universal Time-11"}];n.Legacy=[{Id:"UTC",Name:"Coordinated Universal Time",Offset:0,DstOffset:0,StdId:"UTC"},{Id:"NST",Name:"Newfoundland Standard Time",Offset:-210,DstOffset:-150,StdId:"Newfoundland Standard Time"},{Id:"AST",Name:"Atlantic Standard Time",Offset:-240,DstOffset:-180,StdId:"Atlantic Standard Time"},{Id:"EST",Name:"Eastern Time",Offset:-300,DstOffset:-240,StdId:"Eastern Standard Time"},{Id:"CST",Name:"Central Time",Offset:-360,DstOffset:-300,StdId:"Central Standard Time"},{Id:"MST",Name:"Mountain Time",Offset:-420,DstOffset:-360,StdId:"Mountain Standard Time"},{Id:"Arizona",Name:"Arizona Time",Offset:-420,DstOffset:-420,StdId:"US Mountain Standard Time"},{Id:"PST",Name:"Pacific Time",Offset:-480,DstOffset:-420,StdId:"Pacific Standard Time"},{Id:"AKST",Name:"Alaskan Standard Time",Offset:-540,DstOffset:-480,StdId:"Alaskan Standard Time"},{Id:"HAST",Name:"Hawaiian Standard Time",Offset:-600,DstOffset:-600,StdId:"Hawaiian Standard Time"},{Id:"CCST",Name:"Canada Central Standard Time",Offset:-360,DstOffset:-360,StdId:"Canada Central Standard Time"},{Id:"SAPST",Name:"SA Pacific Standard Time",Offset:-300,DstOffset:-300,StdId:"SA Pacific Standard Time"},{Id:"ChinaST",Name:"China Standard Time",Offset:480,DstOffset:480,StdId:"China Standard Time"},{Id:"CENST",Name:"Central European Standard Time",Offset:60,DstOffset:120,StdId:"Central European Standard Time"},{Id:"KRST",Name:"Korea Standard Time",Offset:540,DstOffset:540,StdId:"Korea Standard Time"}];n.resolve=function(t){return n.hasOwnProperty(t)?n[t]:n.All};u();var i=null,r=!1,t=window.$rql.TimeZone=function(n,t,i,r){this.Id=n;this.Name=t;this.Offset=i;this.DstOffset=r;this.Dst=r!==i};t.prototype.format=function(n){n=n?n:t.LongTimeZoneFormat;var i=this.Offset,r=$f("{0}{1}:{2}",i>=0?"+":"-",Math.floor(Math.abs(i/60)).localeFormat("d2"),Math.abs(i%60).localeFormat("d2"));return $f(n,r,this.Id,this.Name)};t.ensureKnownTimeZoneId=function(t,i){var r,u;return!t||!i?null:(r=t.findByKey("Id",i),r||(u=n.Legacy.findByKey("Id",i),u&&(i=u.StdId,r=t.findByKey("Id",i))),r?i:null)};t.tryConvertToLegacy=function(t){if(t){var i=n.Legacy.findByKey("StdId",t);if(i&&i.Id)return i.Id}return t};t.current=function(){var t,u,o,f,e;if(!r){t=null;try{u=(new Intl.DateTimeFormat).resolvedOptions().timeZone;u&&(t=n.All.findByKey("Iana",u)||n.All.findByKey("Iana2",u)||n.All.findByKey("Id",u));t||(o=/\((.+?)\)/.exec((new Date).toString()),o&&(f=o[1],t=n.All.findByKey("Iana",f)||n.All.findByKey("Iana2",f)||n.All.findByKey("Id",f),!t&&u&&(t={Id:u,Name:u})))}catch(h){console.log("Failed to determine a time zone.");console.log(h)}if(t){var s=(new Date).getFullYear(),c=-new Date(s,0,1,0,0,0,0).getTimezoneOffset(),l=-new Date(s,6,1,0,0,0,0).getTimezoneOffset();i=new $rql.TimeZone(t.Id,t.Name,c,l)}else e=n.All.findByKey("Id","UTC"),e&&(i=new $rql.TimeZone(e.Id,e.Name,0,0));r=!0}return i}})(jQuery);
(function(n){Type.registerNamespace("$rql.ui.controls");var i=["input[type=text]:visible:not(:disabled),input[type=number]:visible:not(:disabled),textarea:visible:not(:disabled),:input:visible:not(button,:disabled,.unfocusable),button[type=button].lookup-field:visible:not(:disabled),input[type=checkbox].custom-control-input",":input:visible:not(button,.unfocusable)",":input:visible:not(button,.unfocusable)"],t=$rql.ui.controls.view=function(i,r){t.initializeBase(this,[i,r]);$rql.delegateAll(this);this.$=n(this.element=i).attr("rql-control","yes");(this.elementId=this.$.attr("id"))||this.$.attr("id",this.elementId=$rql.newId());this.$.length&&n.data(this.$[0],$rql.ui.controlKey,this);r&&(this.$.parent("[rql-groupcontrols]").length>0||this.$.parents("[rql-groupcontainer]").length>0)&&(r.RenderAsGroup=!0);this.$.find("div[rql-role=listgrid-header]").remove();this.parseFooterOptions(r);r&&r.lookupUiStyle?$rql.ui.parseUiStyle(r,{lookupUiStyle:"",WrapperUiStyle:"",ControlUiStyle:"",WrapperStyleProp:"",ControlStyleProp:""}):$rql.ui.parseUiStyle(r);this.$&&r&&r.ControlUiStyle!==""&&(this.$.addClass(r.ControlUiStyle),delete r.ControlUiStyle);this.$&&r&&r.ControlStyleProp!==""&&(this.$.prop({style:r.ControlStyleProp}),delete r.ControlStyleProp);r&&r.CustomCssStyle&&(this.addCustomCssStyle(r.Id,r.CustomCssStyle),delete r.CustomCssStyle);this.initialize(r)};t.prototype={disable:function(n,t){return this.enabled&&(this.showOverlay(n,t).enabled=!1),this},dispose:function(){return this.onDispose&&this.onDispose(),this.disposeChildren().$.remove(),$log.debug("Disposed view component:"),$log.debug(this),this},disposeChildren:function(){return $rql.ui&&$rql.ui.dispose(this.$),this},enable:function(){return this.enabled||(this.hideOverlay().enabled=!0),this},enabled:!0,error:function(n){var t,i;$log.error(n);t=$rql.isNull(this.config,{});t.error=n;i=null;n.responseText&&n.responseText!==""||n.status===500||n.status===401||n.status===403||n.status===404?(t.isConnectivityError=undefined,n.responseText&&n.responseText.indexOf("The requested content is not available for the current user.")!==-1&&n.context&&n.context.ViewName&&n.context.ViewName!==""&&(window.viewAccessDictionary||(window.viewAccessDictionary={}),window.viewAccessDictionary[n.context.ViewName]||(window.viewAccessDictionary[n.context.ViewName]=0),window.viewAccessDictionary[n.context.ViewName]++<1&&$rql.api.reload()),this.isUnauthorizedAccessResponse(n)&&(i=this.renderUnauthorizedAccessMessage())):n.status!==515&&(t.isConnectivityError=!0);n.status===515?$rql.ui.error($rql.i18n.strings.SessionInvalidatedByLimits,$rql.i18n.strings.Error,null,null,function(){window.location.reload()}):(this.enable().disposeChildren().$.html(i||$rql.ui.templates("view-error").render(t)),this.widgetize())},isUnauthorizedAccessResponse:function(n){return n&&n.status===500&&(n.statusText==="UnauthorizedAccessException"||n.responseText&&n.responseText.indexOf("UnauthorizedAccessException")!==-1)},renderUnauthorizedAccessMessage:function(){return $rql.ui.templates("unauthorized-access").render({})},focus:function(t,r,u){var l=t?n(t):this.$,h,e,c=function(){$rql.api.uiVersion>2&&n("nav#main-nav.mm-menu_opened").data("mmenu")&&(n(".mm-page").removeClass("mm-slideout"),n("nav#main-nav").removeClass("mm-menu_opened"),window.setTimeout(function(){n(".mm-page").addClass("mm-slideout")},200))},o,s,f;if(this.config.InlineNext&&this.config.InlineNext.toLowerCase()==="top")$rql.ui.get("#rql").top();else{for(o=0;o<i.length;o++)for(h=l.find(i[o]),s=0;s<h.length;s++){if(f=n(h[s]),n(f).siblings(".btn").is("[rql-role='datepicker']")){n(f).on("focusin",function(){n(this).siblings("[rql-role='datepicker']").addClass("btn-focus")});n(f).on("focusout",function(){n(this).siblings("[rql-role='datepicker']").removeClass("btn-focus")})}if(r)if(f.val())e||(e=f);else return $rql.ui.focusElement(f),u&&(u.element=f),c(),this;else return $rql.ui.focusElement(f),u&&(u.element=f),c(),this}e&&($rql.ui.focusElement(e),u&&(u.element=e),c())}return this},focusOnMobile:!1,getViewSetting:function(t,i,r){var e=$rql.http.browser,f=r?t:$f("{0}:{1}",this.config.Id,t),u=i?e.localStorage?localStorage.getItem(f):$rql.http.getCookie(f):e.sessionStorage?sessionStorage.getItem(f):$rql.http.getCookie(f);try{u&&(u[0]=="{"||u[0]=="[")&&(u=n.fromJson(u))}catch(o){$log.error($f("Error deserializing view setting key {0},value {1}",f,u),o)}return u},hasEventHandler:function(n){return this.get_events().getHandler(n)!=null},hide:function(){return this.$.hide(),this},hideModals:function(t,i,r,u){var p=$rql.api.uiVersion>2,v,o,s,h,c,e,f,l,y,a;return p?(v=n("body"),o=n(document),u&&this.$.attr("rql-view")&&(o=this.$),r&&(this.config.IsEmbed&&this.config.Form&&this.config.Form.ModalId?(s=this.config.Form.ModalId,h=this.config.Form.$ModalElement,c=this.config.Form.$):(s=this.ModalId,h=this.$ModalElement)),e=i&&i.currentTarget?n(i.currentTarget).parents("div.modal, div.fixed-modal"):o.find("div.modal, div.fixed-modal"),e.length>0&&(e.modal("hide"),$rql.ui.showFlatModals()&&(e.hide(),$rql.events.trigger("flatModalClosed",e))),r&&(this.ModalId=s,this.$ModalElement=h,this.$ModalParent=c,this.config.IsEmbed&&this.config.Form&&c&&(this.config.Form.ModalId=s,this.config.Form.$ModalElement=h)),u||(f=o.find("div.modal-backdrop.show"),f.length>0&&(f.remove(),this.$.closest("div[rql-layout-id]").find("div.js-loading-overlay").remove())),v.removeClass("modal-open"),l=n(".picker--opened.picker--focused"),l.length>0&&(y=l.attr("id"),a=n($f("[aria-owns='{0}']",y)).data("pickadate"),a&&a.close())):(n(document).find("div[rql-role='modal']").modal("hide"),n(document).find("div[rql-role='confirm-dialog']").modal("hide"),f=n(document).find("div.modal-backdrop.in"),f.is(":visible")&&!t&&this.stepBack(),f.hide()),$rql.ui.startScrolling(),this},closeSelectDropdowns:function(){if(!($rql.api.uiVersion<=2)){var t=n(".select2-container.select2-container--open");t.length>0&&t.siblings("select.select2-hidden-accessible").select2("close")}},stepBack:function(){window.history.go(-1)},hideOverlay:function(){return this.clearLoaderTimeout(),this.$.find("div[rql-role='overlay']:not([editing])").hide(),this.findLoader().remove(),n("body").hasClass("modal-open")||$rql.ui.startScrolling(),this},isDesktop:function(){return $rql.ui.isDesktop()},isMobile:function(){return $rql.ui.isMobile()},isTablet:function(){return $rql.ui.isTablet()},isVisible:function(){return this.$.is(":visible")},notifyDisabled:function(){$rql.ui.info($rql.i18n.strings.Unavailable)},off:function(n,t){this.on(n,t,!0);return this},on:function(t,i,r){var f=(r?"remove":"add")+"Handler",e,u;if(typeof t=="string"&&n.isFunction(i))this.get_events()[f](t,i);else if(typeof t=="object"){e=this.get_events();for(u in t)n.isFunction(t[u])&&e[f](u,t[u])}return this},onChange:function(){return},onSubmit:function(){return!1},onValueChanged:function(n){this.raise("valueChanged",n)},post:function(n,t,i){return $rql.http.post(this.config.serviceUrl+n,t,i)},raise:function(n,t){var i=this.get_events().getHandler(n);return i&&i(t),this},raiseAction:function(t){var u=n(t.currentTarget).attr("rql-action"),i,r,f;if(u)if(i=n(t.target).attr("rql-action"),i||(i=n(t.target).parents("[rql-action]").attr("rql-action")),u===i){if((i==="create"||i==="new"||i==="newandexecute"||i==="newandpublish")&&(r=n(t.currentTarget).attr("rql-confirm"),r)){f=this;$rql.ui.confirm(r,$rql.i18n.strings.Confirmation,function(){f.raise(i,t)},null);return}$log.debug("Triggering action: "+i);this.raise(i,t)}else n.noop()},raiseInputAction:function(n){n.which==13&&this.raiseAction(n)},isActionEvent:function(t,i){var r=t&&t.currentTarget?n(t.currentTarget).attrs():null,u=r&&r.rql?r.rql.action:null;return i&&i==u},setPageTitle:function(n){return document.title=$f("{0} - {1}",n,$rql.api.site),this},setViewSetting:function(t,i,r,u){var e=$rql.http.browser,f=u?t:$f("{0}:{1}",this.config.Id,t),i=$rql.isString(i)?i:n.toJson(i);r?e.localStorage?localStorage.setItem(f,i):$rql.http.setCookie(f,i,(new Date).addYears(1)):e.sessionStorage?sessionStorage.setItem(f,i):$rql.http.setCookie(f,i)},removeViewSetting:function(t,i,r){var e=$rql.http.browser,f=r?t:$f("{0}:{1}",this.config.Id,t),u=$rql.isString(u)?u:n.toJson(u);i?e.localStorage?localStorage.removeItem(f):$rql.http.setCookie(f,u,(new Date).addYears(-1)):e.sessionStorage?sessionStorage.removeItem(f):$rql.http.setCookie(f,u,(new Date).addYears(-1))},scrollTo:function(t){var u=this,r=t?n(t):u.$,i;return i=r.hasClass("form-control")?r[0]:r.find(".form-control").length>0?r.find(".form-control").first()[0]:r[0],i&&($rql.api.offline||$rql.ui.isMobile()?(n(i).scrollintoview(),i.focus()):n("html").animate({scrollTop:n(i).offset().top},600,null,function(){i.focus()})),u},show:function(n){if(this.$.show(),this.render)if(n==="page-change"&&this.rendered&&this.config&&this.config.RefreshOnPageChange===!1)this instanceof $rql.ui.controls.form&&this.config.skipCompletionCheck&&(this.config.skipCompletionCheck=!1);else if(n){var t=this;setTimeout(function(){t.render.call(t,n)},0)}else setTimeout(this.render,0);return this},initiateDisable:function(n,t,i){t?this.disable(!0,i||(this.page&&this.page.app?this.page.app.$:null)):n&&(n.disableTimeout=setTimeout(this.disable,1500))},clearDisableTimeout:function(n){return n&&clearTimeout(n),this},showOverlay:function(t,i,r,u){var f,e;return document.activeElement&&document.activeElement.blur(),f=this.$.find("div[rql-role='overlay']"),f.length==0&&(f=this.$.append($rql.ui.templates("view-overlay").render()).find("[rql-role='overlay']")),i=i||this.$,f=f.not("[editing]"),this.isMobile()||this.isTablet()||$rql.api.offline?f.width(n(window).width()).height(window.scrollHeight).show().position({of:n(window),my:"left top",at:"left top"}):n(window).scrollTop()!==0&&(f.css("position")==="fixed"||r==="fixed")?f.width(i.width()).height(i.height()).show().position({of:n(window),my:"left top",at:"left top"}):f.width(i.width()).height(i.height()).show().position({of:i,my:"left top",at:"left top"}),r&&f.css({position:r}),(f.css("position")==="fixed"||r==="fixed")&&(e={top:"0",left:"0",bottom:"0",right:"0",height:"",width:""},f.css(e),f.css("z-index","")),t?(f.addClass("transparent-overlay"),$rql.api.uiVersion<=2&&n(".modal-backdrop:visible").length>0&&f.css("z-index","10002"),u&&(this.loaderTimeout=setTimeout(n.proxy(this.showLoader,this,i),1e3))):f.removeClass("transparent-overlay"),f.widgetize(),this},showLoader:function(t,i){if(!this.loaderDisabled){this.clearLoaderTimeout();var r=this.findLoader();r.length==0&&(r=n($f("<div rql-role='loader' style='position: {0}; z-index: 10001'/>",i?i:"absolute")).appendTo(this.$));this.isMobile()||this.isTablet()||!t?r.position({of:n(window)}):r.position({of:t});this.$.widgetize()}},findLoader:function(){return n("div[rql-role='loader']")},clearLoaderTimeout:function(){this.loaderTimeout&&(clearTimeout(this.loaderTimeout),this.loaderTimeout=null)},toggle:function(){return this[this.$.is(":visible")?"hide":"show"](),this},updateTimestamp:function(){return this.$.attr("rql-timestamp",(new Date).valueOf()),this},clearEvents:function(){var r=this,i=this.get_events()._list,n,t;for(n in i)if(n!=="change")for(t=0;t<i[n].length;t++)r.off(n,i[n][t])},registerBlockingActivityStart:function(){this.config.Form&&this.config.Form.processBlockingActivityStart&&this.config.Form.processBlockingActivityStart()},registerBlockingActivityStop:function(){this.config.Form&&this.config.Form.processBlockingActivityStop&&this.config.Form.processBlockingActivityStop()},parseFooterOptions:function(n){var t,i;n&&n.FooterOptions&&n.FooterOptions!==""&&(n.FooterOptions.isEncoded()&&(n.FooterOptions=n.FooterOptions.decode()),t=n.FooterOptions.parseOptionsAsObject(!0,!0),t&&(t.footer&&(t.footer.showastooltip||t.footer.showasmodaltooltip)&&(n.FooterShowAsTooltip=!0,n.FooterTooltipTrigger=t.footer.trigger&&t.footer.trigger!==""?t.footer.trigger:"hover focus",n.FooterTooltipPlacement=t.footer.placement&&t.footer.placement!==""?t.footer.placement:"bottom",t.footer.containercss&&t.footer.containercss!==""&&(n.FooterTooltipContainerCss=t.footer.containercss),t.footer.tooltiphtml&&t.footer.tooltiphtml!==""&&(n.FooterTooltipHtml=t.footer.tooltiphtml),t.footer.showasmodaltooltip&&(n.TooltipShowAsModal=!0,n.FooterTooltipTrigger="click",n.TooltipModalHeader=t.footer.modalheader||"",t.footer.modalstyle?(i=["info","warn","danger","error","success"],n.TooltipModalStyle=i.contains(t.footer.modalstyle)?t.footer.modalstyle==="danger"?"error":t.footer.modalstyle:"info"):n.TooltipModalStyle="info",n.Footer=escape(n.Footer))),t.optionsfooter&&t.optionsfooter.showasdescription&&(n.OptionsFooterShowAsDescription=!0),delete n.FooterOptions))},widgetize:function(t,i){var e=this,r,f,u;if(this.$){if(!this.widgetized){this.$.on("blur","[rql-action-blur]:input",this.raiseAction).on("change","select[rql-action]",this.raiseAction).on("click","button[rql-action],[rql-action]:not(:input),input[rql-action]:checkbox,input[rql-action]:radio",this.raiseAction).on("valueChange","input[type=text],input[type=checkbox]",this.onValueChanged).on("keydown","input[type=text][rql-action],input[type=number][rql-action],textarea[rql-action]",this.raiseInputAction).on("submit","form",this.onSubmit).on("change","input[type='file']",this.onChange);this.$.css("min-height","");this.widgetized=!0}if(this.$.widgetize(),$rql.api.uiVersion>2){if(n(".tooltip").remove(),r=this.$.find("select.mdb-select"),r.length>0){r.off();r.material_select("destroy");r.material_select();r.not("[multiple]").each(function(){var t=n(this),i=':contains("'+t.children(":selected").text()+'")';t.siblings("ul.select-dropdown").children(i).eq(0).addClass("active selected")});r.off("shown.rql.select hidden.rql.select");r.on("shown.rql.select",function(){e.$parentContainers=$rql.ui.setContainerOverflow(n(this))}).on("hidden.rql.select",function(){$rql.ui.restoreContainerOverflow(e.$parentContainers)})}f={};this.config&&this.config.Options&&(u=typeof this.config.Options=="string"?this.config.Options.parseOptionsAsObject(!1,!0):this.config.Options,u&&u.DropdownMenu&&u.DropdownMenu.showsearch&&(u.DropdownMenu.showsearch===!0||typeof u.DropdownMenu.showsearch=="string"&&Boolean.parse(u.DropdownMenu.showsearch))&&(f.showSearch=!0));$rql.ui.renderSelect2(this.$,f,"widgetize()")}}if(this.onWidgetize)this.onWidgetize(t);else if(this.onRendered)this.onRendered(i);return this},isMobileOS:function(){return $rql.api.isMobileOS||window.webview},isFabric:function(){return $rql.api.uiVersion>2},addCustomCssStyle:function(t,i){n(document.head).find($f("style[id='{0}']",t)).length===0&&n($f("<style id='{0}'>",t)).text(i).appendTo(document.head)},serializeBrowserArguments:function(){return window.location.search.slice(1)},serializeArgumentValues:function(n){var arguments=null,r,i,u,t;if(n)for(r=Object.getOwnPropertyNames(n),i=0;i<r.length;i++)u=r[i],t=n[u],t!==null&&t!==undefined&&t!==""&&(arguments=(arguments?arguments+"&":"")+u+"="+t);return arguments},combineArguments:function(n){var i=null,t;if(n&&n.length!==0)for(t=0;t<n.length;t++)n[t]&&(i=(i?i+"&":"")+n[t]);return i},updateSheetButtons:function(n,t,i){var h,e,u,f,o,s,r;if(n&&n.length!==0&&n[0].isSheetVisible()){for(i||(i={}),i.ViewArguments=t,h=function(n){var i={},t=/^RQL\.Sheet\.(.+?)\.(.+?)\.(.+?)$/g.exec(n);return t&&t.length===4&&(i.appId=t[1],i.viewId=t[2],i.updateProp=t[3]),i},r=0;r<n.length;r++)n[r].initializeUpdateProps();if(e=!1,t)for(u in t)if(Object.prototype.hasOwnProperty.call(t,u)&&u.startsWith("RQL.Sheet")){if(u==="RQL.Sheet.Visible"&&t[u].toBool()===!1){e=!0;n[0].toggleButtonsVisibility(!1);break}f=h(u);f.appId&&f.viewId&&f.updateProp&&(o=n.first(function(n){return n.config.Id===$f("{0}.{1}",f.appId,f.viewId)}),o&&(o.config.UpdatableProps[f.updateProp]=t[u]))}if(!e){for(s=[],r=0;r<n.length;r++)s.push(new Promise(function(t){n[r].refresh(t,i)}));Promise.all(s).then(function(){n[0].hideShowSheet(n)})}}},openRightSheetView:function(t,i){var u=n("div.sheet-right[rql-role='page-container'] > div.side-sheet.sheet-right"),r;if(u.length>0&&(r=u.find($f("div[rql-view-id='{0}']",i)).data("rql.ui.control"),r)){r.closeAll();r.onOpenSheet(t)}},setPartialUpdate:function(t){if(t){var u=n(t),i,r;u.closest("[rql-update-container-id]").length>0?(r=u.closest("[rql-update-container-id]"),i=r.attr("rql-update-container-id")):u.closest("[rql-refresh-container]").length>0&&(r=u.closest("[rql-refresh-container]"),i=r.attr("rql-refresh-container"));i&&(r.closest("[rql-item]").length>0&&(i=$f("{0}#{1}",r.closest("[rql-item]").closest("[rql-item]").attr("rql-item"),i)),this.PartialUpdateContainerId=i)}},getPartialUpdateContainer:function(n){var t,i,r,u;if(this.PartialUpdateContainerId)return i=!1,this.PartialUpdateContainerId.indexOf("#")>-1?(r=this.PartialUpdateContainerId.substr(0,this.PartialUpdateContainerId.indexOf("#")),u=this.PartialUpdateContainerId.substr(this.PartialUpdateContainerId.indexOf("#")+1),t=$f("div[rql-item='{0}'] [rql-refresh-container='{1}']",r,u),i=!0):t=$f("[rql-refresh-container='{0}']",this.PartialUpdateContainerId),{LocatorStr:t,$Container:n.find(t),IsInList:i}},applyPartialUpdateOverlay:function(n,t){if(n){var i=this.getPartialUpdateContainer(t);$rql.ui.applyContainerOverlay(i.$Container)}},getPartialUpdateContent:function(t,i,r){var u=this.processRawContent(t,r);return n(u).find(i).html()},processRawContent:function(n,t){if(n)return t?this.decodeItemData(n):n},decodeItemData:function(t){var s=this,o=function(n){return n.isEncoded()?$rql.safeHtmlDecode(window.atobUTF8(n)):n},e=function(t){if(n(t).attr("rql-type").startsWith("List")){var r="",u=n(t).children("code"),i=JSON.parse(u.html());if(i&&i.ListData&&i.ListData.Items&&i.ListData.Items.length>0)return n(i.ListData.Items).each(function(t,i){var u=o(i.RawHtml);n(u).find("[rql-type]").each(function(n,t){u+=e(t.outerHTML)});r+=u}),r}else return t},u=n(t),r=[],i,f;for(u.find("[rql-type]").each(function(t,i){var u=n(i).attr("rql-uniqueid"),f=e(i.outerHTML);r.push({id:u,html:f})}),i=0;i<r.length;i++)u.find($f("[rql-uniqueid='{0}']",r[i].id)).replaceWith(r[i].html);return f="",u.each(function(t,i){f+=n(i).wrap("<div/>").parent().html()}),f},process_input:function(t,i,r,u){var b=$rql.ui.inputTypes,h=n(t),o,c,y,s,p,a,w,v;try{if(h.prop("rql-widgetized")!=="true"){if(h.attr("rql-type")==="inline-block"&&n(t).parent("[rql-groupid]"))return n(t).parent("[rql-groupid]").append(t),n(t).prevAll("div.clear.block").remove(),null;if(o=h.children("code"),o.length===0&&(c=document.getElementById(h.attr("id")),c&&c.parentNode.tagName.toLowerCase()==="code"&&(o=n(c))),o.length===0)return null;var l=o.attr("json"),f=JSON.parse(l?l:o.html()),k=h.attrs(),e=(f.Mode=k.rql.type).toLowerCase();if(l&&(f.Value=o.html()),u)for(y=(f.ContextName||"")+f.Id,s=0;s<u.length;s++)if(p=u[s].substr(0,u[s].indexOf("=")),a=u[s].substr(u[s].indexOf("=")+1),p===y&&a!==f.Value){f.Value=a;break}if(f.ResetControls&&i&&i.controlResetter&&i.controlResetter.register(f.ContextName,f.Id,f.ResetControls),b.contains(e)){if(f.Form=i,f.WidgetEvents=r,(e==="file"||e==="photo")&&(i.uploaderId&&i.$.find($f('[name="Uploader{0}"]',i.uploaderId)).length!==0||i.$.append($f('<iframe name="Uploader{0}" src="javascript:false;" class="hide" style="display:none; width:0; height:0; border: 0"><\/iframe>',i.uploaderId=(new Date).valueOf().toString())),f.uploaderId=i.uploaderId),e==="report"?e="file":e==="photo"&&$rql.api.uiVersion>2&&$rql.api.html5GetMediaSupported&&!this.isMobileOS()&&(e="camera"),w=$rql.isNull($rql.ui.controls[e],$rql.ui.controls[e+"Input"]),h.prop("rql-widgetized","true"),o.remove(),v=new w(t,f),r)v.on(r[e]).on(r["*"]);return v}}}catch(d){$log.warn($f("Error creating input control: {0}\r\n{1}",n(t).html(),d))}}};t.registerClass("$rql.ui.controls.view",Sys.Component)})(jQuery);
(function(n){var i=null,t={delay:{s:"[rql-display-delay]",h:function(){var t=n(this),i=t.hide().attr("rql-display-delay");self.setTimeout(function(){t.show()},i?i:1e3)}},dropdown:{s:"[data-toggle='dropdown']",onClick:function(t,r){var f=n(r.currentTarget),u=null,c,h;if(f.attr("rql-dropdown")?(u=f.attr("rql-dropdown")==="sibling"?f.parent().find(".dropdown-menu"):n(f.attr("rql-dropdown")),u.length===0&&(u=n(".dropdown",n(t).parent().parent())),u.length===0&&f.attr("rql-target")&&(u=f.parents("body").find(f.attr("rql-target")))):u=f.parent(),f.attr("rql-role")==="quickfilter-toggle"){var a=f.closest("th"),v=a.outerWidth(),p=a.outerHeight(),y={"min-width":v+"px","max-width":"15vw",overflow:"auto","max-height":"50vh"};u.css(y)}else{var l=!1,s=".open.open-dropdown",e="open open-dropdown",o=u.hasClass("dropdown-submenu");i!==null&&o&&u.closest(i).length==0?l=!0:i===null||o||i[0]==u[0]||(l=!0);l?(i.removeClass(e),i.find(s).removeClass(e),i.parents(s).removeClass(e)):o&&u.siblings(s).removeClass(e).find(s).removeClass(e);$rql.api.uiVersion>2?u.removeClass(e):u.toggleClass(e);c=u.hasClass("open");c&&!o?(i=u,i.children("ul.dropdown-menu").collision()):c&&o?(h=u.parents('[rql-role="dropdown-more"]').length?"bottom":"top",u.children("ul.dropdown-menu").collision(!1,{my:u.parents('[rql-role="more"]').length?"right "+h:"left "+h,at:u.parents('[rql-role="more"]').length?"left "+h:"right "+h})):o||(i=null);c||u.find(s).removeClass(e);n.browser&&n.browser.msie&&n.browser.version==8&&n("body").css("margin-bottom",parseInt(Math.random()*10)+"px")}r.stopImmediatePropagation()},resize:function(){n("body").find(".open.open-dropdown").removeClass("open open-dropdown")}},focus:{onFocus:function(t){n(t.currentTarget).selection("*")},s:"input:text:visible,textarea:visible"},input:{s:"input[rql-type]",h:function(){var t;switch((t=n(this)).attr("rql-type")){case"Integer":case"Number":t.rql("numericInput");break;case"Date":case"DateTime":case"Time":case"Timestamp":t.rql("temporalInput");break;case"text":t.attr("rql-explicit-mask")&&t.rql("maskedInput")}}},banner:{s:"[rql-type='Banner']",h:function(){n(this).rql("banner")}},editingridlookupinplace:{s:"div[rql-type='EditInGridLookupInPlace']",h:function(){var t,r,i;try{if(t=n(this),t.prop("rql-widgetized")!="true")return r=t.find("> code"),i=JSON.parse(r.html()),t.prop("rql-widgetized","true"),r.remove(),i.EditInGrid=!0,i.DoNotCollectValues=!0,new $rql.ui.controls.lookupinplace(this,i)}catch(u){$log.warn($f("Error creating editingridlookupinplace control: {0}",u))}}},editingridtextboxsearch:{s:"div[rql-type='EditInGridTextBoxSearch']",h:function(){var t,r,i;try{if(t=n(this),t.prop("rql-widgetized")!="true")return r=t.find("> code"),i=JSON.parse(r.html()),t.prop("rql-widgetized","true"),r.remove(),i.EditInGrid=!0,i.DoNotCollectValues=!0,new $rql.ui.controls.textboxsearch(this,i)}catch(u){$log.warn($f("Error creating editingridtextboxsearch control: {0}",u))}}},editingridcurrency:{s:"div[rql-type='EditInGridCurrency']",h:function(){var t,i,r;try{if(t=n(this),t.prop("rql-widgetized")!="true")return i=t.find("> code"),r=JSON.parse(i.html()),t.prop("rql-widgetized","true"),i.remove(),r.EditInGrid=!0,new $rql.ui.controls.currency(this,r)}catch(u){$log.warn($f("Error creating editingridcurrency control: {0}",u))}}},editingridtemperature:{s:"div[rql-type='EditInGridTemperature']",h:function(){var t,i,r;try{if(t=n(this),t.prop("rql-widgetized")!="true")return i=t.find("> code"),r=JSON.parse(i.html()),t.prop("rql-widgetized","true"),i.remove(),r.EditInGrid=!0,new $rql.ui.controls.temperatureInput(this,r)}catch(u){$log.warn($f("Error creating editingridtemperature control: {0}",u))}}},editingridchips:{s:"div[rql-type='EditInGridChips']",h:function(){var t,i,r;try{if(t=n(this),t.prop("rql-widgetized")!="true")return i=t.find("> code"),r=JSON.parse(i.html()),t.prop("rql-widgetized","true"),i.remove(),r.EditInGrid=!0,new $rql.ui.controls.chipsinput(this,r)}catch(u){$log.warn($f("Error creating editingridchips control: {0}",u))}}},loader:{frame:1,rate:5,steps:{desktop:["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen"],mobile:["one","two","three","four","five","six","seven","eight"]},stepFormat:{desktop:'<i class="icon-loader-step opacity"><\/i>',mobile:'<i class="small-loader icon-small-loader-step opacity"><\/i>'},opacities:{desktop:[0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4],mobile:[0,1,1,1,1,2,3,4]},renderFrame:function(){for(var i=this.steps[$rql.api.uiMode],t=this.opacities[$rql.api.uiMode],u=this.stepFormat[$rql.api.uiMode],r=[],n=0;n<i.length;n++)r[n]=u.replace("step",i[n]).replace("opacity",t[n]>0?"opacity-"+t[n]:"current");return t.unshift(t.pop()),r.join("")},rotateAll:function(){if(t.loader.frame%t.loader.rate==0){var i=n(t.loader.s);if(i.length>0)i.html(t.loader.renderFrame()),t.loader.frame=1;else{$rql.ui.cancelAnimationFrame(t.loader.requestId);t.loader.requestId=null;return}}else t.loader.frame++;t.loader.requestId=$rql.ui.requestAnimationFrame(t.loader.rotateAll)},s:"div[rql-role='loader']",h:function(){t.loader.requestId||(t.loader.requestId=$rql.ui.requestAnimationFrame(t.loader.rotateAll))}},modal:{s:"div[rql-role='modal']",h:function(){var t=n(this),r=t.attr("rql-modal-hide")==null?!0:!1;if($rql.api.uiVersion<=2||$rql.api.uiVersion==null){var u=t.attr("rql-modal-width")||"",f=u.contains("px"),e="",i=parseInt(u)+(f?30:0);isNaN(i)||(e=$f("margin-left: -{1}{2}; width: {0}{2}; {3}",i,i/2,f?"px":"%",t.attr("style")));t.attr("style",e);r&&t.modal("show")}else r&&$rql.ui.showModalFabric(t)},onDismiss:function(t){n(t.currentTarget).closest(".modal").modal("hide")}},optionGroup:{onClick:function(t){var r=n(this).closest("div[rql-role='option-group']"),f=r.attr("rql-class"),i,e,u;if(r.find("[rql-role='option'], label[rql-toggle]").removeClass(f),n(this).addClass(f),n(this).attr("optionGroup")?(i=n(this).parents("ul").siblings($f("label[optionGroup='{0}']",n(this).attr("optionGroup"))),i.addClass(f),i.attr("displaytextselected")&&(i.attr("displaytextselected")==="Text"?i.find("[rql-role='optionGroupText']").text(n(t.currentTarget).find("span.value").text()):i.attr("displaytextselected")==="Value"&&i.find("[rql-role='optionGroupText']").text(n(t.currentTarget).find(">input").attr("rql-value"))),t&&$rql.api.uiVersion>2&&t.stopPropagation()):r.find("label[rql-toggle]").length>0&&r.find("label[rql-toggle]").each(function(t,i){var r=n(i);r.attr("displaytextunselected")&&r.attr("displaytextunselected").length>0?r.find("[rql-role='optionGroupText']").text(r.attr("displaytextunselected")):r.find("[rql-role='optionGroupText']").text($rql.i18n.strings.More)}),n(t.currentTarget).siblings("[rql-role='optionGroup-dropdown']:visible").addClass("hide"),$rql.api.uiVersion>2&&(e=n(t.currentTarget).attr("for"),e&&(u=n(t.currentTarget).siblings("#"+n.escapeSelector(e)),u.length>0))){var o=u.attr("rql-id"),h=u.attr("rql-value"),s=n($f("[rql-id='{0}'][rql-value='{1}']:visible",o,h));s.length>1&&(n($f("[rql-id='{0}']:checked",o)).attr("checked",!1),s.attr("checked",!0))}},s:"[rql-role='option']"},pointer:{s:"a[href='#'],a:not([href])",h:function(){n(this).addClass("pointer").attr("href",null)}},scrollHorizontal:{s:'[rql-role="scroll"]:not([disabled]):eq(0)',sOnClick:'[rql-role="scroll"]:not([disabled])',h:function(){var t=n(this).attrs(),r=n(t.rql.container),u=r.children(t.rql.children),f=t.rql.space?parseInt(t.rql.space):0,i=0;u.each(function(){i+=n(this).outerWidth()+f;n(this).css("padding-right")&&n(this).last()&&(i+=parseInt(n(this).css("padding-right"),10))});r.width(i).attr("rql-width",i)},onClick:function(){var t=n(this),e=t.attrs(),o=e.rql.direction,s=e.rql.scroll,i=n(e.rql.container),r=i.parent().width()-i.attr("rql-width"),h=isNaN(parseInt(i.css("left"),10))?0:parseInt(i.css("left"),10),u=h+parseInt(o=="left"?s:-s,10),f;r<=0&&(f=t.parent().find('[rql-role="scroll"]'),f.length<2&&(f=t.closest('[rql-role="tab-navigation"]').find('[rql-role="scroll"]')),f.filter("[disabled]").removeAttr("disabled"));o=="left"&&u>0?(u=0,t.attr("disabled","disabled")):o=="right"&&(u<=r||r>=0)&&(u=r>=0?0:r,t.attr("disabled","disabled"));i.css("left",u)},resize:function(){n('[rql-role="scroll"][disabled]').removeAttr("disabled")}},themeInject:{s:"[rql-role='themeinjector']",h:function(){n(this).rql("themeInjector",{prefix:n(this).attr("rql-prefix"),template:n(this).attr("rql-template")})}},toggle:{onClick:function(t){var r,o;if(!t.ctrlKey&&!t.shiftKey){var i=n(this).attrs(),u=$rql.isNull(i.rql.relative,"default"),s=n(t.currentTarget),f=i.rql.toggle.split(","),e=i.rql.class.split(",");if(f.length===e.length&&f.length>1)for(r=0;r<f.length;r++)(u==="default"?n(f[r]):u==="this"?n(t.currentTarget):n(t.currentTarget)[i.rql.relative](f[r])).toggleClass(e[r]);else(u==="default"?n(i.rql.toggle):u==="this"?n(t.currentTarget):n(t.currentTarget)[i.rql.relative](i.rql.toggle)).toggleClass(i.rql["class"]);t.stopPropagation();o=this;u==="default"&&n(i.rql.toggle).is("ul.dropdown-menu")&&n(this).parent().is(".with-option-dropdown")&&(n(i.rql.toggle).hasClass("hide")?n(this).parent().removeClass("dropup"):setTimeout(function(){$rql.ui.isElementInFullView(n(i.rql.toggle))||n(o).parent().addClass("dropup")},200));$rql.api.uiVersion===2&&$rql.ui.isMobile()&&n(this).parents("ul").siblings("[data-toggle='dropdown']").length>0&&n(this).parents("ul").siblings("[data-toggle='dropdown']").trigger("click")}},s:"[rql-toggle]"},toggleGroup:{groups:{},onClick:function(){var i=n(this).attrs(),r=t.toggleGroup.groups[i.rql.togglegroup];n(r.selector).removeClass(r.classes).addClass(i.rql["class"])},s:"[rql-toggle-group]",h:function(){var r=n(this).attrs(),i=n(this).attr("rql-toggle-group");i=t.toggleGroup.groups[i]?t.toggleGroup.groups[i]:t.toggleGroup.groups[i]={classes:""};i.selector=i.selector||r.rql.selector;i.classes+=" "+r.rql["class"]}},tooltip:{s:"[rql-tooltip]",h:function(){var i=n(this).attr("rql-tooltip"),r="",u=n(this).parent().attr("rql-stackedicon"),t=u?n(this).parent():n(this),o=$rql.api.isMobileOS&&$rql.api.uiVersion>2,f,e;if(u&&(t=n(this).parent()),i)if(r=n(this).attr("data-placement")?n(this).attr("data-placement"):"bottom",i&&n(this).attr("rql-modal-tooltip")){t.removeAttr("rql-tooltip");f=t.attr("rql-modal-tooltip-style");e=t.attr("rql-modal-tooltip-header");n(this).find("i").addClass("pointer").on("click",function(){$rql.ui[f]($rql.htmlDecode(unescape(i)),e,null,null,null,!0)})}else r&&i&&(t.removeAttr("rql-tooltip"),t.attr({"data-html":"true","data-placement":r,title:i.trimmer(),"data-trigger":o?"click":n(this).attr("data-trigger")?n(this).attr("data-trigger"):"hover"}).tooltip())}},icon:{s:"[rql-icon]",h:function(){if(n(this).attr("icon-props")){for(var f=this,i=n(this).attr("icon-props"),r=/(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?/g,u={},t=r.exec(i);t!=null;)t.length===3&&(u[t[1]]=t[2]),t=r.exec(i);n(this).children("i").attr(u);window.toast($rql.api.baseUrl.pathname+"fabric/js/libs/fontawesome-all.js",function(){window.FontAwesome.dom.i2svg({node:f})})}}}},r;t.loader.opacities.tablet=t.loader.opacities.desktop;t.loader.stepFormat.tablet=t.loader.stepFormat.desktop;t.loader.steps.tablet=t.loader.steps.desktop;r=function(){var r,i;for(r in t)i=t[r],i&&i.s&&i.h&&n(this).find(i.s).each(i.h)};n.fn.widgetize=function(){var n=new Date;return this.each(r)};$rql.events.on("resize",t.dropdown.resize);$rql.events.on("resize",t.scrollHorizontal.resize);n(document).on("click",t.dropdown.s,function(n){t.dropdown.onClick(this,n)}).on("click",t.optionGroup.s,t.optionGroup.onClick).on("click",t.toggleGroup.s,t.toggleGroup.onClick).on("click",t.toggle.s,t.toggle.onClick).on("click","[rql-role='dismissModal']",t.modal.onDismiss).on("click",t.scrollHorizontal.sOnClick,t.scrollHorizontal.onClick);n.browser&&n.browser.msie&&n.browser.version==8&&function(t){n(".dropdown-menu li").live("mousemove",function(){t.css("margin-bottom",parseInt(Math.random()*10)+"px")});n(".dropdown-toggle").live("mouseup",function(){t.css("margin-bottom",parseInt(Math.random()*10)+"px")})}(n("body"))})(jQuery);
(function(n){var t=$rql.ui.controls.monitormanager=function(i){t.initializeBase(this,i);this.initialize(i);n.extend(this,{minInterval:3,defaultInterval:5},i)};t.prototype={dispose:function(){this.disposing||(this.disposing=!0,this.clearMonitorTimeout(),this.monitors=null,t.callBaseMethod(this,"dispose"))},on:function(n,t){return this.get_events().addHandler(n,t),this},off:function(n,t){return this.get_events().removeHandler(n,t),this},start:function(n){this.monitors=n;this.restart()},restart:function(){this.clearMonitorTimeout();this.monitors!=null&&this.monitors.length!=0&&(this.initIntervals(),this.createMonitorTimeout())},suspend:function(){this.clearMonitorTimeout()},initIntervals:function(){for(var n,i=new Date,t=0;t<this.monitors.length;t++)n=this.monitors[t],n.Interval||(n.Interval=this.defaultInterval),n.Interval<this.minInterval&&(n.Interval=this.minInterval),this.setCheckAt(n,i)},setCheckAt:function(n,t){n.CheckAt=new Date(t.getTime()+n.Interval*1e3)},clearMonitorTimeout:function(){this.monitorTimeoutId&&(clearTimeout(this.monitorTimeoutId),this.monitorTimeoutId=null)},createMonitorTimeout:function(){var t,i,r,u;if(this.monitorTimeoutId==null&&this.monitors&&this.monitors.length!=0){for(t=null,i=0;i<this.monitors.length;i++)r=this.monitors[i],(t==null||r.CheckAt<t)&&(t=r.CheckAt);u=t!=null?t-(new Date).getTime():0;this.monitorTimeoutId=setTimeout(n.proxy(this.requestStates,this),u>1e3?u:1e3)}},requestStates:function(){var u,t,i,r,f,e;if(this.monitorTimeoutId&&this.monitors){for(this.clearMonitorTimeout(),u=new Date,t=[],i=0;i<this.monitors.length;i++)r=this.monitors[i],r.CheckAt<=u&&(t.push(r.Id),this.setCheckAt(r,u));t.length!=0?(f={StoreId:this.storeId,ViewName:this.viewName,MonitorIds:t,Context:this.context,AppName:this.appName},e=n.proxy(this.onStatesResponse,this),$rql.http.post($rql.api.baseUrl.pathname+"workbook/monitors",f,f).done(e).fail(e)):this.createMonitorTimeout()}},onStatesResponse:function(n,t){if(t==="error")this.failed||(this.failed=!0,this.createMonitorTimeout());else if(this.failed=!1,n){if(!n.Action){this.createMonitorTimeout();return}var i=this.get_events().getHandler("action");i&&i({action:n.Action,navigateUrl:n.NavigateUrl})}else this.createMonitorTimeout()}};t.registerClass("$rql.ui.controls.monitormanager",Sys.Component)})(jQuery);
(function(){Type.registerNamespace("$rql.ui");var n=$rql.ui.controlresetter=function(){this.directIds={};this.reverseIds={}};n.prototype={clear:function(){this.directIds={};this.reverseIds={}},register:function(n,t,i){if(t){var r,u=i.split(/\s*,\s*/);if(n)for(t=n+t,r=0;r<u.length;r++)u[r]=n+u[r];for(this.directIds[t]=u,r=0;r<u.length;r++)this.reverseIds[u[r]]=t}},apply:function(n,t){var e,r,o,u,f,i;if(this.directIds&&n&&(e=this.parseUpdates(n),e.length!==0&&(r=this.getControlIdsToReset(e),r.length!==0)))for(o=this.findControlIdsWithValuesToReset(r,t),this.clearUpdatesFromControlUpdates(n,r),u=0;u<o.length;u++)f=o[u]+"=",f.indexOf("$i$")===0?(i=this.parseControlValuePair(f),i&&i.listContext&&n.push(i.listContext+"__reset_"+i.inListContextId+"=")):n.push("__reset_"+f)},parseUpdates:function(n){for(var u,t,r=[],i=0;i<n.length;i++)u=n[i],t=this.parseControlValuePair(u),t&&t.hasValue&&r.push(t);return r},parseControlValuePair:function(n){var t=n.match(/^((\$i\$\w+\$\w+\$i\$)*)(__([a-z]+)_)?(\w+).*?=\s*(.?)/),i;return t?(i={listContext:t[1],inListContextId:t[5],controlId:t[1]+t[5],controlType:t[4]},i.hasValue=t[6]&&!(i.controlType==="lookup"&&t[6]==="|"),i):null},getControlIdsToReset:function(n){for(var r=[],i,u,t=0;t<n.length;t++)i=n[t],this.directIds.hasOwnProperty(i.controlId)&&(r=r.concat(this.directIds[i.controlId]));for(t=0;t<n.length;t++)i=n[t],r.indexOf(i.controlId)===-1&&!this.directIds.hasOwnProperty(i.controlId)&&this.reverseIds.hasOwnProperty(i.controlId)&&(u=this.reverseIds[i.controlId],r.indexOf(u)===-1&&r.push(u));return r},findControlIdsWithValuesToReset:function(n,t){var u=[],r,i,f,e,o;if(n&&n.length!==0&&t){if(t.data&&t.data.length!==0)for(i=0;i<t.data.length;i++)f=this.parseControlValuePair(t.data[i]),f&&f.hasValue&&(r=f.controlId,n.indexOf(r)!==-1&&u.indexOf(r)===-1&&u.push(r));if(t.dict)for(e=Object.getOwnPropertyNames(t.dict),i=0;i<e.length;i++)o=e[i].match(/^((\$i\$\w+\$\w+\$i\$)*(\w+))/),o&&t.dict[e[i]]&&(r=o[1],n.indexOf(r)!==-1&&u.indexOf(r)===-1&&u.push(r))}return u},clearUpdatesFromControlUpdates:function(n,t){var i,u,r;if(n&&n.length!==0&&t&&t.length!==0)for(i=0;i<n.length;)u=n[i],r=this.parseControlValuePair(u),r&&t.indexOf(r.controlId)!==-1?n.splice(i,1):i++}}})(jQuery);
(function(n){window.$rql.server={request:function(t,i){var u=n.ajax({type:"POST",url:"/rql/uiapi/"+t,contentType:"application/json",dataType:"json",data:i?n.toJson(i):null}),r=new n.Deferred,f=r.promise();return u.done(function(n){r.resolve(n)}).fail(function(n){console.error($f("$rql.server.request failed. Url: {0}. Status: {1}. Error: {2}",t,n.status,n.statusText));r.reject(n.status,n.statusText)}),f}}})(jQuery);
(function(n){var r=Sys.CultureInfo.CurrentCulture,e=Sys.CultureInfo.InvariantCulture,i=$rql.TimeZone,t=$rql.i18n={},u,f;for(t.strings={Academy:"CMX1 Academy",Acquire:"Acquire",Acquiring:"Acquiring",ActiveTimers:"Active Timers",Add:"Add",AddProperty:"Add Property",AddTag:"Add New Department",AddValue:"Add Value",AllRightsReserved:"All rights reserved",And:"And",AppliedFilter:"Applied filter(s):",Apply:"Apply",ApplyFilter:"Apply Filter",ArrangeColumns:"Manage columns",AttachApplicationLogs:"Attach application logs",AuthenticationFailed:"Invalid user name or password",AutoFill:"Auto Fill",AutoFillDialogHeader:"Copy From:",AutoFillRepeat:"Repeat Auto Fill",Back:"Back",BackToTop:"Back to top",BasedOn:"Based on",BetweenValuesSeparator:"and",Blank:"(blank)",Browse:"Browse",Build:"Build",BulkListAll:"All",BulkListAllExcept:"All except:",BulkSelectLimitExceeded:"The selection threshold of {0} items has been reached. Please apply filters to limit the number of records.",BulkUpdateCompleted:"Bulk update completed.",BulkUpdateError:"There was an error submitting bulk update.",BulkUpdateNotScheduled:"No records were selected to schedule bulk update.",BulkUpdateScheduled:"Bulk update has been scheduled.",Calendar:"Calendar",Camera:"Camera",CameraNotDetected:"No camera was detected.",Cancel:"Cancel",Capture:"Capture",ChangeMode:"Change Queue Mode",ChangeQueueDensity:"Change Queue Density",ChangesSaved:"Changes have been saved.",Chart:"Chart",ChooseDevice:"Choose your device",ChooseLanguage:"Choose your preferred language",ChooseTheme:"Choose your preferred theme",Clear:"Clear",ClearAll:"Clear All",ClearValues:"Clear Values",Close:"Close",ColumnMapping:"Column Mapping",CompletionMessage:"You have completed <b>{0}<\/b>.",Configure:"Configure",Confirmation:"Confirmation",ConfirmLogout:"Are you sure you want to logout?",Console:"Console",CopyLink:"Copy Link",CountdownMessage1:"You will be redirected in {0} seconds.",CountdownMessage2:"Click {0} to stay on the page.",CreateNew:"Create new",DataPageSummaryFormat:"{0:n0} - {1:n0} of {2:n0}",DataPagePartialSummaryFormat:"{0:n0} - {1:n0}",Day:"Day",Delete:"Delete",DeletePermanentlyConfirm:"Are you sure you want to permanently delete this item?",DeletedLookup:"Object was deleted.",Desktop:"Desktop",DeveloperConsole:"Developer Console",DevicePreference:"Devices",DevTools:"Developer Tools",DisableEmailNotification:"Disable Email Notification",Dismiss:"Dismiss",Done:"Done",Download:"Download",DownloadChartJPEG:"Download JPEG image",DownloadChartPDF:"Download PDF document",DownloadChartPNG:"Download PNG image",DownloadChartSVG:"Download SVG vector image",DownloadOfflineClient:"Download Offline Client",DownloadOfflineClientAndroid:"Offline Client (Android)",DownloadOfflineClientEn:"Offline Client (English)",DownloadOfflineClientEs:"Offline Client (Spanish)",DownloadOfflineClientFr:"Offline Client (French)",DownloadOfflineClientIos:"Offline Client (iOS)",Edit:"Edit",EditableGrid:"Editable Grid",EditFilter:"Edit current filter",EditMode:"Edit Mode",EmptyPage:"There are no views available on this page",EmptyValue:"-",EnableEmailNotification:"Enable Email Notification",EndOfSearchResults:"End of search results",Error:"Error",ExpectedFormat:"Expected format is: {0}",Export:"Export Queue",ExportChartBtnTitle:"Export to raster or vector image",ExportFileDownloaded:"Your file has been downloaded.",ExportFileDownloading:"Please wait while your file is downloading...",ExportLimitExceeded:"The records to be exported exceed the maximum allowed of {0}.  Please apply filters to limit the number of records and try again.",ExportToCsv:"Export to CSV",ExportToRss:"View RSS Feed",ExportToSpreadsheet:"Download Refreshable Web Query",ExportToXlsx:"Export to Excel",FeatureDisabledDueToLowMemory:"This feature is currently disabled due to low memory on the device.",FeatureRequiresInternet:"This feature requires an internet connection.  Please try again after you have a connection.",Feedback:"Feedback",FeedbackErrorResponse:"There was a problem submitting your feedback. Please go try again, or try sending the error logs.",FeedbackRequest:"We appreciate you taking the time to provide us with some feedback.",FeedbackResponse:"Thank you! Your comments are extremely important to us because it helps improve the experience for all users like yourself.",FileSelect:"Select File",FileSize:"file size",FileSizeExceeded:"Max file size exceeded.",FileTypeInvalid:"Invalid file type.",FileUploadError:"The file upload failed.",FileUploading:"Uploading file. Please don't navigate away.",Filter:"Filter",FilteredBy:"Filtered By",FilterName:"Filter Name",Filters:"Filters",Findings:"Finding(s)",Forward:"Forward",Fullscreen:"Fullscreen",Gallery:"Photo Gallery",GalleryHero:"Slide Show",GalleryList:"Details",GalleryThumbnails:"Thumbnails",GenerateReport:"Generate Report",GeneratingReport:"Generating report",GoogleChart:"Google Chart",GoogleMap:"Google Map",Grid:"Grid",GuideMe:"Guide Me",HeatMap:"Heat Map",HideDeletedTags:"Hide Deleted Departments",Home:"Home",Hour:"Hour",Initializing:"Initializing",InvalidData:"Invalid Data",Language:"Language",LanguagePreference:"Languages",LargeSpacing:"Large spacing",ListAdd:"add",ListCollapseSelected:"collapse selected",ListDown:"down",ListExpandSelected:"expand selected",ListInsert:"insert",ListRemove:"remove",ListRemoveConfirm:"Removing {0} item(s), do you wish to proceed?",ListRemoveTitle:"Remove Item(s)",ListRemoveWarning:"Please select at least one item to remove.",ListReOrder:"re-order",ListReOrderConfirm:"You are currently in re-order mode.  Do you wish to continue?",ListSaveOrder:"Save Order",ListUp:"up",Loading:"Loading",Location:"Location",Login:"Sign In",Logout:"Sign Out",LongTextLess:"[less]",LongTextMore:"[more]",MakeDefaultFilter:"Make this the default filter",ManageFilters:"Manage filters",Map:"Map",MarkerClustererMap:"Marker Clusterer Map",MediumSpacing:"Medium spacing",Menu:"Menu",Minute:"Minute",Mobile:"Mobile",Month:"Month",More:"More",MyAccount:"My account",Name:"Name",New:"New",Next:"Next",NextFinding:"Next Finding",No:"No",NoCanvas:"Unfortunately, your browser is currently unsupported by our web application. We are sorry for the inconvenience.",NoChanges:"There are no changes to save.",NoChartData:"No data to display",NoData:"There are no matching records",NoDefaultFilter:"Do not use a default filter",NoFile:"No file attached.",NoFindingNotes:"[no notes]",NoFindingsMessage:"There are no findings.",NoStore:"Please navigate to a store before using this feature.",NoTimers:"There are no running timers.",NoValue:"(No Value)",Now:"Now",NoWorkbookSearchResults:"Your search - <b>{0}<\/b> - did not match any topics",Of:"of",OfflineClient:"Offline Client",Ok:"Ok",Open:"Open",Options:"Options",Or:"Or",Overwrite:"Overwrite",PageNotFound:"The requested page is not available.",PageRedirection:"Page Redirection",Password:"Password",PermissionError:"Permission denied, can not access your location",PhoneExtension:"Ext",PleaseInstall:"Please install",Plugin:"Plugin",Points:"Points",PointsSummaryFormat:"{0} of {1}",Policies:"Policies",PositionError:"Opps! There was a problem acquiring your position",Preferences:"Preferences",Previous:"Previous",PrintChartBtnTitle:"Print the chart",Property:"Property",QueryTextTooShort:"Please enter a query at least three characters long.",QueueCollapseAllRows:"Collapse All Rows",QueueExpandAllRows:"Expand All Rows",QuickFilters:"Quick Filters",QuickReport:"Export to PDF",RecordNavigatorSummaryFormat:"{0:n0} of {1:n0}",RedirectMessage:"Redirecting...",Refresh:"Refresh",Rename:"Rename",RepeatFindingLabel:"Finding is a Repeat",RepeatLabel:"Repeat",RepeatsHeader:"Prior Audit Observation(s)",RepeatsInstruction:"(Check all that were repeated)",Reporting:"Reporting",RepublishEntities:"Republish entities",RequestError:"Oops! There was a problem processing your request.",RequiredField:"Required Field",RequiredValueMessage:'Please enter a value for "{0}".',ResetAndClose:"Reset and Close",ResetTopic:"Reset",ResetTopicConfirm:"Are you sure you want to reset?",Restore:"Restore",Retake:"Retake",RetryConnection:"Retry Connection",ReturnToForm:"Return to form",RunLookupUpdates:"Run lookup updates",RunPropagators:"Run propagators",RunWorkbook:"Run workboook",Save:"Save",SaveAndBack:"Save & Back",SaveAndNew:"Save & New",SaveAndNext:"Save & Next",SaveAppliedFilter:"Save Applied Filter",SaveAs:"Save as",SaveChanges:"Are you sure you want to save?",SavedAt:"Auto saved",SavedFilter:"Saved Filter(s)",SaveFilter:"Save current filter as&hellip;",Scan:"Scan",Search:"Search",SearchMenu:"Search the Menu",Second:"Second",SeeDetails:"See Details",SelectAll:"Select All",SelectItem:"(select)",SelectNone:"(none)",SelectSpacing:"Select spacing",SessionInvalidatedByLimits:"<p><b>Warning: Your work may be lost!<\/b><\/p>Your current session has ended because your credentials have been used to log in from another location.  Please sign in again to start a new session.",SessionInvalidatedPageMessage:"Your current session has ended because your credentials have been used to log in from another location.  Please sign in again to start a new session.",SessionInvalidatedPageTitle:"Session Invalidated",Share:"Share",Show:"Show",ShowAll:"Show All",ShowDeletedTags:"Show Deleted Departments",ShowLess:"Show Less",ShowNext:"Show Next {0}",ShowPrevious:"Show Previous {0}",SmallSpacing:"Small spacing",Sort:"Sort",SortAscending:"Sort ascending",SortDescending:"Sort descending",Start:"Start",Stop:"Stop",StoreUpdated:"Your request has been processed. Please be aware that workflow requests may take extra time to complete.",Submit:"Submit",Subscribe:"Subscribe to Notifications",SubscribeEmail:"Subscribe by Email",SubscribeRss:"Subscribe by RSS",SubscribeSms:"Subscribe by SMS",SupportTeam:"Support Team",Synchronize:"Synchronize",Synchronizing:"Synchronization is in progress",Tablet:"Tablet",TagManagerTitle:"Department Management",Template:"Template",TemplateItemLess:"[less]",TemplateItemMore:"[more]",ThemeDark:"Dark",ThemeLight:"Light",ThemePreference:"Themes",ThemeVibrant:"Vibrant",Time:"Time",TimeOutError:"Request timed out, please try again",Today:"Today",Type:"Type",UnauthorizedAccess:"Unauthorized access.",Unavailable:"Sorry, the feature is unavailable at this time.",UnderMaintenance:"Site Currently Under Maintenance.",UnknownSize:"(Size Unknown)",UnsavedChanges:"There are unsaved changes.",UnsavedChangesConfirmation:"There are unsaved changes. Do you want to leave the page?",Update:"Update",UpdateAll:"Update All",Updated:"Updated",Use:"Use",UseByDefault:"Use by default",UseDeviceLanguage:"Use my device/browser language",UserName:"User Name",ValidationError:"One or more fields below requires a value or has an invalid value.",ValueCountMismatch:"The current count of form values does not match the expected count.",Values:"Value(s)",View:"View",ViewConnectivityError:"<p><b>Oops!<\/b> It looks like you have lost your connection.<\/p><p>Please check your connection and try <a rql-action='refreshConnectionError'>refreshing the page in your browser<\/a>. If the problem continues, please contact your site administrator.<\/p>",ViewerOptions:"Viewer Options",ViewError:"We apologize for the inconvenience. It appears there was an error processing your request. You can try to <a href='javascript:window.location.reload(true);'>refresh<\/a> this page and/or <a href='http://status.cmx1.com/' target='_blank'>check our status page<\/a>. If you want to log this incident, please <a href='http://support.compliancemetrix.com/' target='_blank'>report this to our support team<\/a>.",ViewMode:"View Mode",ViewStore:"View Store XML",WebcamInUse:"Your webcam may be already in use. Close other video streams and try again.",WeightedHeatMap:"Weighted Heat Map",Year:"Year",Yes:"Yes"},t.operators={"?":"is empty","!?":"is not empty","*":"contains","!*":"does not contain","=":"equals","!=":"does not equal","*=":"begins with","!*=":"does not begin with","=*":"ends with","!=*":"does not end with",">":"greater than","!>":"is not greater than",">=":"greater than or equal to","!>=":"is not greater than or equal to","<":"less than","!<":"is not less than","<=":"less than or equal to","!<=":"is not less than or equal to","<<":"is between","0":"no","1":"yes",d:"is today","+d":"is tomorrow","-d":"is yesterday",w:"this week","+w":"next week","-w":"last week",m:"this month","+m":"next month","-m":"last month",q:"this quarter","+q":"next quarter","-q":"last quarter",q1:"first quarter",q2:"second quarter",q3:"third quarter",q4:"fourth quarter",y:"this year","+y":"next year","-y":"last year","-<<":"is before",">>+":"is after","-<<=":"is on or before",">>+=":"is on or after"},u=0;u<r.dateTimeFormat.MonthNames.length;u++)f=r.dateTimeFormat.MonthNames[u],f&&(t.operators["m"+(u+1)]="in "+f);t.datePattern=r.dateTimeFormat.ShortDatePattern;t.dateFormat=$f("{{0:{0}}}",t.datePattern);t.dateOrder="mmddyy";t.dateTimePattern=$f("{0} {1}",r.dateTimeFormat.ShortDatePattern,r.dateTimeFormat.ShortTimePattern);t.dateTimeFormat=$f("{{0:{0}}}",t.dateTimePattern);t.timePattern=r.dateTimeFormat.ShortTimePattern;t.timeFormat=$f("{{0:{0}}}",t.timePattern);t.timeWheels="hhiiA";t.timeZones=n.extend([new i("UTC","Coordinated Universal Time",0,0),new i("NST","Newfoundland Standard Time",-210,-150),new i("AST","Atlantic Standard Time",-240,-180),new i("EST","Eastern Time",-300,-240),new i("CST","Central Time",-360,-300),new i("MST","Mountain Time",-420,-360),new i("Arizona","Arizona Time",-420,-420),new i("PST","Pacific Time",-480,-420),new i("AKST","Alaskan Standard Time",-540,-480),new i("HAST","Hawaiian Standard Time",-600,-600),new i("CCST","Canada Central Standard Time",-360,-360),new i("SAPST","SA Pacific Standard Time",-300,-300),new i("ChinaST","China Standard Time",480,480),new i("CENST","Central European Standard Time",60,120),new i("KRST","Korea Standard Time",540,540)],{LongFormat:"(UTC{0}) {2}",ShortFormat:"(UTC{0}) {1}"});t.isRtlLanguage=!1;t.dirAttr=""})(jQuery);
(function(n){var t=$rql.ui.controls.multiview=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(){this.on({pageNavigate:this.onPageNavigate})},listPagesAsArray:function(){return this.config.pages},findPageAndViewByViewId:function(n){var o,r,t,u,f,i,e;if(n)for(o=n.toLowerCase(),r=this.listPagesAsArray(),t=0;t<r.length;t++)for(u=r[t],f=u.Views,i=0;i<f.length;i++)if(e=f[i],e.NormalizedId==o)return{page:u,view:e};return null},switchPage:function(){},onPageNavigate:function(t){var e,o,f,i,s;if(t.stopPropagation(),e=n(t.currentTarget).attrs().rql,o=e?e.data:null,o){if(i=o.toLowerCase(),i==="_first"||i==="_previous"||i==="_next"||i==="_last"){var u=this.listPagesAsArray(),h=u&&this.page?u.findIndexByKey("Url",this.page.Url):-1,r=-1;i==="_first"?r=0:i==="_previous"?r=h-1:i==="_next"?r=h+1:i==="_last"&&(r=u.length-1);f=r>=0&&r<u.length?u[r]:null}else s=this.findPageAndViewByViewId(i),f=s?s.page:null;f&&this.switchPage(f)}}};t.registerClass("$rql.ui.controls.multiview",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},r=/\//g,t=$rql.ui.controls.app=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(r){t.callBaseMethod(this,"initialize");this.config=n.extend({pages:[],serviceUrl:$rql.api.baseUrl.pathname+"core/"},i,r);this.on("page",this.onPage).$.on("click","[rql-url]",this.onNavigate);this.on({navigateToFinding:this.onNavigateToFinding})},changePage:function(t){return t.control?t.control.renderPageTitle():(n.extend(t,{SheetButtons:this.config.SheetButtons,SheetButtonDefs:this.config.SheetButtonDefs}),$rql.ui.templates("page").appendTo(this.$content,t),this.$.closest('[rql-role="content-row"]').parent().find($f('[rql-role="title-placeholder"] [rql-page-url="{0}"]',t.Url)).remove(),t.appViewIds=this.appViewIds,t.app=this,t.SideNav=this.config.SideNav,t.control=new $rql.ui.controls.page(this.$.find($f("[rql-page='{0}']",t.Url)),t),t.control.app=this),(this.page=t).control.show("page-change"),$rql.api.pageChanged(t),$rql.api.uiVersion>2&&(this.toggleAppNav(!0),t.Views.Main.length>0&&t.control.resetPageTitle(t.Views.Main[0])),this.setTitle().raise("pageChanged",t)},switchPage:function(n){n&&(this.page&&this.page.control.hide(),this.changePage(n))},buildListOfAppViewIds:function(){var u=this.config,t,n,i,r;for(this.appViewIds=[],t=0;t<u.pages.length;t++)if(n=u.pages[t],n&&n.Views)for(i=0;i<n.Views.length;i++)r=n.Views[i].NormalizedId,r&&this.appViewIds.push(r)},resetUI:function(n){return n=n?(n+"").toLowerCase():"",(feature=$rql.isNull(this.navbar,this.$navbar))&&(n&&n.indexOf("contextbar")>-1?feature.hide():feature.show()),$rql.api.resetUI(n)},navigate:function(t){var i=this;$rql.ui.navigateWithFormCompletionCheck(function(){var r=n(t.currentTarget).attr("rql-url"),u;if(r){(u=i.config.pages[$rql.http.uri(r).path])&&i.switchPage(u);$rql.ui.get("#rql").onNavigate(t);i.navbar&&($rql.api.uiVersion>2&&i.navbar.updateTheme(""),i.navbar.$.find(".open.open-dropdown").removeClass("open open-dropdown"))}},null,!0)},onNavigate:function(n){var r=this,t,i;n.stopPropagation();n.preventDefault();$rql.api.offline&&this.page&&this.page.Views&&this.page.Views.Main&&this.page.Views.Main.length>0&&this.page.Views.Main[0].Type==="Workbook"?(t=this.page.Views.Main[0].control,i=new Promise(function(n){t.refresh({onlyIfChanged:!0,promiseResolve:n})}),i.then(function(t){console.log(t);r.navigate(n)})):this.navigate(n)},onNavigateToFinding:function(t){var r,e,u,i,o,f;if(t.stopPropagation(),r=n(t.target).attrs().rql,r&&(e=r.argument,u=r.finding,e&&u)){for(i=null,o=e.split(/[,|]/),f=0;f<o.length;f++)if(i=this.findPageAndViewByViewId(n.trim(o[f])),i!=null)break;i&&(i.view.control?i.view.control.pendingFindingId=u:i.view.pendingFindingId=u,this.switchPage(i.page))}},onPages:function(t){var i=this.config,u=$rql.api.pendingAppAction&&$rql.api.pendingAppAction.storeId===this.config.StoreId?$rql.api.pendingAppAction:null,s,h,e,c;if($rql.api.pendingAppAction=null,!t.response||t.response.IsEmpty)this.enable().disposeChildren().$.html($rql.ui.templates("page-not-found").render(i));else if(i.pages.length===0)this.error();else{var r=$rql.http.uri(),o=t.menu,l=t.response.Scope,f=null;if(r.hash&&(r.hash=decodeURIComponent(r.hash),r.hash.indexOf("(*")!=-1&&r.hash.indexOf("*)")!=-1&&(f=r.hash.substring(r.hash.indexOf("(*")),f=f.substring(2,f.length-2),r.hash=r.hash.substring(0,r.hash.indexOf("(*")),r.path=r.pathname+r.hash)),this.buildListOfAppViewIds(),typeof t.response.DefaultPage=="number"?i.defaultPage=i.pages[t.response.DefaultPage]:(s=null,u&&(u.action==="firsttab"||u.action==="previoustab"||u.action==="nexttab"||u.action==="lasttab")&&(s=this.determinePageAfterTabChangeAction(u.pageUrl,u.action)),i.defaultPage=s?s:$rql.isNull(r.hash?i.pages[r.path]:null,i.defaultPage)),i.defaultPage.Default=!0,i.defaultPage.HashParams=f,i.SinglePage=i.pages.length<2,i.Title=$rql.coalesce(l.Title,o[0].title),i.SinglePage&&(i.HidePageTitle=this.getCombinedFeatures(i.pages[0].Views).toLowerCase().contains("pagetitle"),i.HidePageTitle&&this.$.closest("div[rql-page]").addClass("border-none")),t.response&&t.response.SideNav&&(i.SideNav=!0),this.$.addClass(l.UiStyle).html($rql.ui.templates("app").render(i)),this.$content=this.$.find($f("[rql-role='app-content']")),$rql.http.uri().href!=$rql.http.uri(i.defaultPage.Url).href&&window.history.replaceState(null,null,i.defaultPage.Url),n.extend(o.root,{home:!1,scope:!0}),h=o.root,h.selectedNavTitle=i.defaultPage.Title,e={items:o,root:h,isAppNav:!0,Id:this.config.Id},this.menuModel=e,this.changePage(i.defaultPage).widgetize(),$rql.api.uiVersion>2?t.response&&t.response.SideNav?(t.response.Layouts&&(c=t.response.Layouts.findByKey("Id","Content"),c&&c.SideGroupHeader&&delete e.root.appTitle),n.noop()):this.navbar=new $rql.ui.controls.responsivemenu(this.$.find("[rql-role='app-nav']"),e).on("rendered",this.setTitle).show():($rql.api.isAccessCodeUser()&&(h.items=null),this.navbar=new $rql.ui.controls.navbar(this.$.find("[rql-role='app-nav']"),e).on("rendered",this.setTitle).show()),this.navbar)this.on("pageChanged",this.navbar.onPageChanged)}},processTabChangeAction:function(n,t){t?$rql.api.pendingAppAction={action:n,storeId:this.config.StoreId,pageUrl:this.page.Url}:this.switchPage(this.determinePageAfterTabChangeAction(this.page?this.page.Url:null,n))},determinePageAfterTabChangeAction:function(n,t){var u,r,i;return n&&t&&this.config.pages&&(u=this.config.pages,r=u.findIndexByKey("Url",n),r===-1&&(r=0),i=-1,t==="firsttab"?i=0:t==="previoustab"?i=r-1:t==="nexttab"?i=r+1:t==="lasttab"&&(i=u.length-1),i!==r&&i>=0&&i<u.length)?u[i]:null},getCombinedFeatures:function(n){var i="",t;if(n)for(t=0;t<n.length;t++)$rql.isUndefined(n[t].Features)||(i+=n[t].Features+" ");return i},onPageCreated:function(t,i){var u=this.config,f=i&&i.Activators&&i.Activators.length==1;n.extend(t,{Context:{StoreId:u.Id},Key:t.Key.replace(r,"_")});u.pages.add(u.pages[t.Url=$f("{0}{1}",u.baseUrl,f?"":"#"+t.Key).toLowerCase()]=t);u.defaultPage||(u.defaultPage=t)},render:function(){if($log.debug("Rendering app "+this.config.Id),this.rendered&&this.page){var n=this.page.control;this.setTitle().raise("pageChanged",this.page);n&&n.show()}else $rql.api.listPages({StoreId:this.config.Id,Arguments:$rql.api.getUrlParamsAsString(this.config.baseUrl)},this.onPages,this.onPageCreated),this.rendered=!0;this.isMobile()&&$rql.ui.get("#rql").top()},refresh:function(){$log.debug("rql.app.refresh");this.page&&this.page.control&&this.page.control.refresh()},setTitle:function(){var t=this.config.Title,n=this.$.find("[rql-role='app-title']");return n.length===0&&this.page&&this.page.control?n=this.page.control.$pageTitlePlaceholder.find($f("[rql-page-url='{0}'] [rql-role='title'] > span",this.page.control.config.Url)):this.$.find('[rql-role="page-title-container"] [rql-role="title"] > span').html(t),n.html(t),n.parents("[rql-role='app-title-wrapper']").show(),this.setRefs(),this.setPageTitle(t)},setRefs:function(){this.$timersCount=this.$.find("span[rql-role='timers-count']");this.$timersMonitor=this.$.find("div[rql-role='timers-monitor']")},callMethodOnActivePage:function(n){this.page&&this.page.control&&this.page.control[n]&&this.page.control[n]()},onPageHidden:function(){this.callMethodOnActivePage("onPageHidden")},toggleAppNav:function(n){this.config.SideNav||(n?this.$.find("[rql-role='app-nav']").show():this.$.find("[rql-role='app-nav']").hide())},toggleAppTitle:function(n){var t=this.$.find("[rql-role='app-title-wrapper']");t.length===0&&(t=this.$.closest('[rql-role="content-row"]').parent().find('[rql-role="title-placeholder"]'));n?t.show():t.hide()},setAppNavbarTheme:function(n){n&&this.navbar&&!this.config.SideNav&&this.navbar.updateTheme(n)}};t.registerClass("$rql.ui.controls.app",$rql.ui.controls.multiview)})(jQuery);
(function(n){function t(t){return n.extend({items:[],leaf:!1,key:"",root:!1,title:"",top:!1,parentKey:"",relative:!0},t)}var r=/[^a-z0-9|]+/gi,i=$rql.ui.controls.core=function(n,t){i.initializeBase(this,[n,t])};i.prototype={back:function(){window.history.length===1?$rql.api.offline?$rql.api.home():window.close():window.history.go(-1)},bindEvents:function(){var t=this.config;$log.debug("Enabling history API");history.emulate&&history.redirect("/",t.baseUrl.pathname);n(window).on("popstate",this.onHistoryStateChanged);this.on({back:this.back,changeLocale:this.changeLocale,changeTheme:this.changeTheme,changeUX:this.changeUX,drawer:this.header.toggleDrawer,home:this.home,fullscreen:this.toggleFullscreen,logout:this.logout,"new":this.createStore,create:this.createStore,newandexecute:this.createStore,newandpublish:this.createStore,newornavigate:this.createStore,createornavigate:this.createStore,policies:this.policies,store:this.onUpdateStore,startScrolling:this.onStartScrolling,stopScrolling:this.onStopScrolling,synchronize:this.synchronize,top:this.top,refreshConnectionError:this.refreshConnectionError,activatezendesk:this.onActivateZendesk,hideRqlCookieNotice:this.hideRqlCookieNotice,openTableauWindow:this.openTableauWindow});this.$.on("click","[rql-url]",this.onNavigate);this.$.on("shown",".modal",this.onStopScrolling);this.$.on("hidden",".modal",this.onStartScrolling);if(t.isIOS)this.$.on("keydown",this.onIOSKeydown);return this.isMobile()&&this.hideAddressBar(),this.bindInteractions(),this},bindMenuEvents:function(n){n.on("click","[rql-url]",this.onNavigate);n.on("click","[rql-action=logout]",this.logout);n.on("click","[rql-action=store]",this.onUpdateStore);n.on("click","[rql-action=activatezendesk]",this.onActivateZendesk)},changeLocale:function(t){var i=$rql.isEvent(t),r=i?n(t.currentTarget).attr("rql-data"):t;typeof r=="string"&&(this.setCookie("language",r),i?this.home():window.location.reload())},changePage:function(t){if(t.control)t.control.renderPageTitle&&t.control.renderPageTitle(),t.Views&&t.Views.Main&&t.Views.Main.length>0&&t.control.resetPageTitle(t.Views.Main[0]);else{$log.debug("Creating page "+t.Url);n.extend(t,{SheetButtons:this.SheetButtons,SheetButtonDefs:this.SheetButtonDefs});$rql.ui.templates("page").appendTo(this.$content,t);t.control=new $rql.ui.controls.page(this.$.find($f("[rql-page='{0}']",t.PageId?t.PageId:t.Url)),t);this.on("pageChanged",t.control.onPageChange)}$log.debug("Changing page to "+t.Url);this.setPageTitle(t.Title);(this.page=t).control.show();this.page.control.ReturnUrl=t.Url;this.page.control.config.ContextHasChanged=!0;this.raise("pageChanged",t);$log.debug("Changed page to "+t.Url);this.closeMobileSheet()},pageChanged:function(t){if(this.pagepath&&this.pagepath.pageChanged(t),$rql.api.uiVersion>2&&this.config.user.ide){var i=window.history.location||document.location,r=this.getStoreId($rql.http.uri(i.href));n("#systemMenuDeveloper a[rql-action='store']")[r?"removeClass":"addClass"]("disabled")}},changeTheme:function(t){var i=n(t.currentTarget).attr("rql-data");i&&(this.setCookie("theme",i),this.home())},changeUX:function(t){var i=n(t.currentTarget).attr("rql-mode");i&&i!=this.config.uiMode&&(this.setCookie("UX",i),window.location.reload())},cleanUp:function(){var r=n(($rql.api.uiVersion>2?"#rql-content":"#rql > div[rql-role='content']")+" > div[rql-page]:not([rql-page='404'])"),t,i,u;if(r.length>this.config.maxPages){for(t=null,i=0;i<r.length;i++)if(u=n(r[i]),!u.is(":visible")){t=u;break}t&&this.deletePage(this.config.pages[t.attr("rql-page")])}return window.setTimeout(this.cleanUp,this.config.cleanUpInterval),this},configureApi:function(){for(var t=["back","changeLocale","createStore","disable","drillDown","enable","home","listPages","navigate","navigateToStore","onNavigate","updateStore","profile","reload","resetUI","setCookie","top","sendGA4Event","pageChanged","updateHelpSuggestions","clearHelpSuggestions","trackOutboundLink","instantionateKeyLines","workbookDeepUrl","openTableauWindow","setOfflineAppState","getOfflineAppState","trackFirstDownload","onLinkClicked"],i=["baseUrl","offline","site","uiMode","user","version","isIOS","isIPhone11","isIOS11","isAndroid","isKindle","isMacOS","isBrowser","debug","debugbuild","isMobileOS","isUWP","local_dev","uiVersion","googleJavaScriptApiKey","dtpickerMode","html5GetMediaSupported","dialCodes","coBranding","coBrandingPrimaryColor","coBrandingSecondaryColor","embeddedView","cookieNotice","antiforgeryToken","antiforgeryXsrfToken","enableViewsAbovePageFilters","disableQueueExcelExportCellsLimit"],n=0;n<t.length;n++)$rql.api[t[n]]=this[t[n]];for(n=0;n<i.length;n++)$rql.api[i[n]]=this.config[i[n]];return this},instantionateKeyLines:function(n){console.log("instantionated");$rql.api.require("keyLines",n)&&n()},createCorePages:function(){var n=this.config,e=n.menuUrl=n.baseUrl.pathname+"menu",f=["Feedback","Login","Policies","Profile","Preferences","CultureInfo","Academy"],t,u;for(n.pages[e]={control:this.menu,Title:$rql.i18n.strings.Menu,Url:e},t=0;t<f.length;t++){var i=f[t].toLowerCase(),r=$rql.i18n.strings[f[t]],o=n.baseUrl.pathname+i;i==="cultureinfo"&&(r="Culture Info");i==="academy"&&(r="");n.pages[o]={Title:r,Url:o,Views:[{Id:i,Title:r,Type:"Form",StoreId:i}]}}return u=n.pages["/rql/profile"],u&&(u.Scope=!0,u.Views[0].Type="App"),this},createDialogs:function(){$log.debug("Creating dialogs");var t=$rql.ui.templates("dialog");return Array.forEach(["info","warn","error","success","confirm"],function(i){var r={type:i};r[i]=!0;t.appendTo(this.$,r);$rql.ui[i]=function(t,r,u,f,e,o,s){var h=n($f("[rql-role='{0}-dialog']",i));if(h.off("click","[rql-action='yes']"),h.off("click","[rql-action='no']"),h.off("click","[rql-action]"),h.find("[rql-role='modal-header']").html(r?r:"&nbsp;").end().find("[rql-role='modal-body']").html($log.formatMessage(t)).end(),h.find('[rql-role="default-modal-footer"]')[o?"hide":"show"](),$rql.api.uiVersion>2){n(document.body).append(h);h.on("shown.bs.modal",function(){$rql.ui.stopScrolling(s);h.off("shown.bs.modal")}).on("hidden.bs.modal",function(){$rql.ui.startScrolling();h.off("hidden.bs.modal");n.isFunction(e)&&e()})}if(h.modal("show"),n.isFunction(u))h.on("click","[rql-action='yes']",u);if(n.isFunction(f))h.on("click","[rql-action='no']",f);if(n.isFunction(e))h.on("click","[rql-action]",e)}},this),this},createLayout:function(t){var i=this.config,e=i.coreFeatures=["header","navbar","content","menu","footer","fullscreen","pagepath"],o,h=window.history.location||document.location,c=this.getStoreId($rql.http.uri(h.href)),s,f,r,u;for(i.Year=(new Date).getFullYear(),i.OfflineClientDownloadUrlViewId="",c||(i.DisableStoreViewActions=!0),n.extend(t.root,{home:!0,scope:!1}),$log.debug("Creating core layout"),i.OS!==""&&n("body").addClass(i.OS),$rql.api.uiVersion>2?n("body").addClass(i.browser+" "+(i.isMobileOS?"mobile":"desktop")):n("body").addClass(i.browser+" "+i.uiMode),i.isIOS&&(n("body").addClass("iOS"+i.isIOS),i.OfflineClientDownloadUrlViewId="ios",i.useappstoreofflineclientdownload&&(i.OfflineClientDownloadUrlViewId="iosappstore")),i.isAndroid&&(i.OfflineClientDownloadUrlViewId="android"),$rql.api.offline&&(window.navigator.userAgent.match(/android/i)&&n("body").addClass("offline-android"),window.navigator.userAgent.match(/iPad|iPhone/i)&&n("body").addClass("offline-ios")),i.uiMode!="desktop"&&window.orientation&&n("body").toggleClass("landscape",Math.abs(parseInt(window.orientation,10))==90),this.$.html($rql.ui.templates("core").render(i)+(i.isFooterHidden?"":$rql.ui.templates("core-footer").render(i))),this.$.find("> footer").length===0&&this.$.find("> [rql-role='content']").addClass("no-footer"),$rql.api.embeddedView&&$rql.api.uiVersion>2&&i.isAndroid&&(s=this.$.find("header[rql-role='header']").removeClass("align-items-center"),s.find("div[rql-role='navbar-container']").removeClass("align-items-center")),$log.debug("Creating layout controls"),this.$fullscreenAwareFeatures=n([]),f=0;f<e.length;f++)if(r=e[f],u=this.$.find($f("[rql-role='{0}']",r)),u[0]){if(o=$rql.ui.controls[r])this.on("pageChanged",(this[r]=new o(u[0],r=="menu"||r=="navbar"?{items:t,root:t.root}:null)).onPageChanged);else this["$"+r]=u;this.$fullscreenAwareFeatures=this.$fullscreenAwareFeatures.add(u)}return this.pagepath&&this.pagepath.widgetize(),this.$404=this.$.find("[rql-page='404']"),e.remove(["content","menu","fullscreen"]),this},createQueueItemContext:function(n,t,i){var u,s,e,h;if(n&&t){var o=$rql.ui.findViewById(n,i),r=o&&o.createRequest?o.config:null,f=r?r.DataPage:null;if(f&&f.Keys&&(u=f.Keys.indexOf(t),u!=-1)){if(s=f.Items[u].Values[0].Text,r.BreadcrumbColumn)for(e=0;e<r.DataPage.Properties.length;e++)if(r.DataPage.Properties[e].Name==r.BreadcrumbColumn){h=f.Items[u];s=h.Values[e].Text;break}return u=f.PageIndex*f.PageSize+u,{navigationItemName:s,queueTitle:r.Title,queueName:r.Id,storeId:t,recordNum:u+1,index:u,count:r.Count,isFirst:u==0,isLast:u+1==r.Count,queueRequest:o.createRequest(),allowTabRecords:r.AllowTabRecords}}}return null},createStore:function(t,i,r,u,f){var c=(new Date).getTimeZone(),e=n.extend({TimeZone:c.Id,TimeZoneOffset:c.dstEnabled?c.DstOffset:c.Offset,TimeZoneDaylightSaving:(new Date).isDstObserved(),Context:this.context},r),l,a=this,s,o,h;return(l=$rql.isEvent(t))?(s=t,o=n(s.currentTarget).attrs(),s.ctrlKey||s.shiftKey||!o.rql.appname||(e.AppName=o.rql.appname,o.rql.context&&(e.Context={StoreId:o.rql.context}),e.AppName.contains("?")?(h=e.AppName.split("?")).length==2&&(e.AppName=h[0],e.Arguments=h[1]):o.href&&o.href.contains("?")&&(h=o.href.split("?")).length==2&&(e.Arguments=h[1]),e.Arguments&&(e.Arguments=e.Arguments.replace(/&?rqlaction=[^&]*/,"").replace(/^&/,"")),i=o.rql.action)):(e.AppName=t,e.Context={StoreId:r.Context?r.Context.StoreId:$rql.api.getStoreIdFromUrl($rql.http.uri().pathname)}),u||(u=this.onCreateStore),this.disable().post(i,e,e).done(function(i){if(i){var r=$rql.http.uri(i.StoreId).pathname.split("/").map(function(n){return n==="p"?"a":n}).join("/");n(t.currentTarget).attr("rql-url",r)}$rql.api.enable();f&&f.apply(undefined,arguments);u.apply(undefined,arguments)}).fail(this.error),l?$rql.ui.cancel(s):!0},deletePage:function(n){if(n&&n.control){n.control.getPageTitle()&&n.control.getPageTitle().remove();n.control.dispose();try{delete n.control}catch(t){n.control=undefined}}},drillDown:function(n){window.history.pushState({drillDownArgs:n},null,$rql.http.uri().pathname);this.onHistoryStateChanged()},error:function(n){$log.error(n);this.enable();$rql.ui.error(n,$rql.i18n.strings.Error)},getStoreId:function(n){if(n.pathname.contains("/a/")||this.isKnownStoreId(n.pathname))return n.pathname.splitAndTrim("/").last()},hideAddressBar:function(){$log.debug("hiding scrollbar");var i=window,n=document,t=1;n.body&&(t=i.pageYOffset||n.compatMode==="CSS1Compat"&&n.documentElement.scrollTop||n.body.scrollTop||0);setTimeout(function(){t<20&&i.scrollTo(0,t===1?0:1)},1e3)},home:function(){if(this.config.baseUrl.href==this.uri.href)window.location.reload();else{var n=this.config[this.config.redirectUrl?"redirectUrl":"baseUrl"].href;window.location.href!=n?window.location.href=n:window.location.reload()}},initialize:function(t){var r,f,u,e,o,s;if($log.debug("Starting RQL"),i.callBaseMethod(this,"initialize"),r=this.config=n.extend({maxPages:4,cleanUpInterval:5e3,cookiePath:t.baseUrl.pathname,pages:{},serviceUrl:t.baseUrl.pathname+"core/",site:document.location.host},t),timeZone=(new Date).getTimeZone(),$rql.api.debugbuild=t.debugbuild,$rql.api.offline=t.offline,$rql.api.local_dev=t.local_dev,$rql.http.setCookie("tz",timeZone?timeZone.Id:""),$rql.http.setCookie("tzo",-(new Date).getTimezoneOffset()),$rql.http.setCookie("dst",(new Date).isDstObserved()),r[t.uiMode]=!0,this.initDirAttr(),document.documentMode<9){document.body.innerHTML="";document.write("<div class='well well-danger'><h3>"+$rql.i18n.strings.NoCanvas+"<\/h3><\/div>");throw new Error($rql.i18n.strings.NoCanvas);}!(navigator.userAgent.match(/Trident/)&&!navigator.userAgent.match(/MSIE/))||(f=n.browser.version,n.browser={msie:!0,version:f});n.browser.msie&&(r.baseUrl=$rql.http.uri(r.baseUrl.href),r.ie=!0);n.browser.majorVersion=parseInt(n.browser.version);r.browser=r.uiVersion>2?n.browser.chrome?"chrome":n.browser.name:n.browser.safari?"safari":$rql.nameOf(n.browser,0);r.browser==="firefox"&&(r.browser="mozilla");r.browser&&r.browser!=="unknown"&&toast($f("{0}css/{1}.css",r.baseUrl.pathname,r.browser));r.isIOS=parseFloat((""+(/CPU.*OS ([0-9_]{1,7})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||!1;r.isIPhone11=!1;r.isIOS?(u=this.iosVersion(),r.isIOS11=u?u[0]>=11:!1,e=navigator.platform==="iPhone"||navigator.userAgent.includes("iPhone"),r.isIOS11&&e&&(r.isIPhone11=!0)):r.isIOS11=!1;o=navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;!r.isIOS&&o&&(r.isIOS=13);r.isBrowser=r.browser&&r.browser!=="unknown";r.isAndroid=window.navigator.userAgent.match(/android/i);r.isKindle=window.navigator.userAgent.match(/silk|KFAPWI/i);r.isMacOS=window.navigator.userAgent.match(/macintosh/i);r.isMobileOS=r.isIOS||r.isAndroid||r.isKindle||r.isUWP;r.isWindows=window.navigator.userAgent.match(/Win/i);r.isUWP=window.webview&&window.webview.toString()==="UwpWebViewExtensions";r.OfflineClientAvailable=(r.isWindows||r.isMobileOS)&&!r.disableofflinedownload;r.OS="";r.isIOS?r.OS="ios":r.isAndroid?r.OS="android":r.isKindle?r.OS="kindle":r.isMacOS?r.OS="macos":r.isWindows&&(r.OS="windows");r.html5GetMediaSupported=navigator.mediaDevices&&typeof navigator.mediaDevices.getUserMedia!="undefined";r.isMobileOS&&(r.maxPages=1);$rql.debug&&toast($f("{0}css/debug.css",r.baseUrl.pathname));$log.debug("Requesting pages");r.uiVersion>2&&(r.coBrandingPrimaryColor||r.coBrandingSecondaryColor?r.coBranding==="Default"&&delete r.coBrandingSecondaryColor:delete r.coBranding);window.location.href.indexOf("/g/")>-1&&(this.config.user.anonymous=!0);this.configureApi().listPages(this.config.user.anonymous?{StoreId:this.getStoreId($rql.http.uri())}:null,this.render,this.onPageCreated);s=$rql.ui.i18nSelect2(n("html").attr("lang"));window.toast($f("{0}{1}{2}.js",$rql.api.baseUrl.pathname,"js/libs/select2/i18n/",s));r.uiVersion>2&&(n.mmenu&&n.mmenu.i18n({Search:$rql.i18n.strings.SearchMenu}),n(document).click(function(t){n(t.target).closest("[data-original-title]").length===0&&n(".tooltip").tooltip("hide");n(t.target).closest(".flexMenu-popup").length||n(".flexMenu-popup").is(":visible")&&n(".flexMenu-popup").hide()}))},initDirAttr:function(){try{var n=(Sys.CultureInfo.CurrentCulture.name||"en").toLowerCase();$rql.i18n.isRtlLanguage=n.indexOf("ar")===0;$rql.i18n.dirAttr=$rql.i18n.isRtlLanguage?'dir="rtl"':""}catch(t){$log.warn(t)}},iosVersion:function(){if(/iP(hone|od|ad)/.test(navigator.platform)){var n=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3]||0,10)]}return undefined},isHome:function(){var t=this.config.baseUrl.pathname.replace(/^\/|\/$/g,""),i,n;return(t+="/"+t,i=$rql.http.uri(window.history.location).pathname,n=$rql.http.uri(i!=this.config.baseUrl.pathname?window.history.location||document.location:document.location),n.href.indexOf(t,n.href.length-t.length)!==-1)?!0:n.pathname==this.config.baseUrl.pathname||n.pathname+"/"==this.config.baseUrl.pathname},isKnownStoreId:function(n){var t=n.splitAndTrim("/").last();return t=="profile"?!0:!1},listPages:function(n,t,i){if(arguments.length===3)this.post("pages",n,{created:i,done:t}).done(this.onListPages).fail(this.onListPagesFailed);else return this.config.pages},listPagesAsArray:function(){var i=[],n=this.config.pages;for(var t in n)n.hasOwnProperty(t)&&n[t].Views&&i.push(n[t]);return i},openTableauWindow:function(n,t){this.post("tableauLink",{ViewPath:n,Options:t}).done(function(n){if(n&&n.Url&&n.Url.length){var t=window.open(n.Url,"_blank");t.focus()}})},onIOSKeydown:function(n){(n.key==="Tab"||n.keyCode===9)&&n.preventDefault()},logout:function(){if($rql.api.embeddedView&&$rql.api.uiVersion>2){if(n("nav#main-nav").data("mmenu").close(),$rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){window.webkit.messageHandlers.nativeBridge.postMessage("logout");return}this.post("NativeLogout");return}var t=this;$rql.ui.navigateWithFormCompletionCheck(function(){$rql.ui.confirm($rql.i18n.strings.ConfirmLogout,$rql.i18n.strings.Confirmation,function(){if(n(window).off("beforeunload"),t.setCookie("language","","Thu, 01-Jan-1970 00:00:01 GMT"),$rql.api.isLoginTokenUser()){var r=atob(unescape(decodeURIComponent($rql.http.getCookie("CMXTAUTH")))),u=n.map(r.split(";"),n.trim),i=u[5];t.post("logout").done(function(){t.home();i&&i.length>0&&(window.location.href=i)})}else t.post("logout").done(function(){if(t.home(),$rql.api.offline&&$rql.api.isAndroid)window.open("","_self",""),window.close();else{var n=t.config.providerLogoutUrl;n&&n.length>0&&(window.location.href=n)}});t.cleanSessionStorage()})})},cleanSessionStorage:function(){$rql.http.browser.sessionStorage&&sessionStorage.clear()},navigate:function(t,i,r){var f,u,e;if(t)try{if(n.browser.msie&&n.browser.majorVersion==8)window.location.href=t;else if(f=$rql.http.uri(),u=$rql.http.uri(t.toLowerCase()),f.href!=u.href){f.pathname==u.pathname&&u.href.indexOf("?")!=-1&&(e=this.config.pages[f.pathname],e&&e.control&&e.Scope&&(this.deletePage(e),this.page=null,delete this.config.pages[f.pathname]));$log.debug("Navigating to "+u.href);window.history[(i?"replace":"push")+"State"](r,null,u.href);this.onHistoryStateChanged(null,r)}return!0}catch(o){$log.debug($f("Error navigating to {0}: {1}",u.href,o));$rql.error(o)}},navigateToStore:function(n,t,i){this.navigate(this.config.baseUrl.pathname+"a/"+n,null,i)},switchPage:function(n){n&&this.navigate(n.Url)},onCreateStore:function(n,t,i){var o,r,arguments,f,u,e;if(this.enable(),n.StoreId){if(this.pagepath&&this.pagepath.setPageState(n.StoreId,"new"),n.ContextStoreId&&(o={queueItemContext:{storeId:n.ContextStoreId}}),r=i&&i.context?i.context.Arguments:null,r&&(!n.StoreExists||r.toLocaleLowerCase().indexOf("navigatestoreid")!==-1)){for(arguments=[],f=i.context.Arguments.split("&"),u=0;u<f.length;u++)f[u].toLowerCase().indexOf("persist")!==-1&&arguments.push(f[u]);r=arguments.join("&")}n.StoreExists&&(e=this.config.baseUrl.pathname+"a/"+n.StoreId,this.config.pages[e]&&(this.deletePage(this.config.pages[e]),delete this.config.pages[e]));this.navigateToStore(n.StoreId+(r?"?"+r:""),null,o)}},onHistoryStateChanged:function(t){var i=this.uri=$rql.http.uri(),f=this.config,c=i.search!=""&&i.search.indexOf("persist.")!=-1,r=f.pages[c?i.pathname+i.search:i.pathname],l,e=t&&!$rql.isObject(t),u,o,s,h;if(window.isNavigatingBack=t!=null&&t.type==="popstate",window.isNavigatingBack&&this.cleanupCKEditorMaximizeStyles(),this.clearHelpSuggestions(),!f.user.anonymous&&(i.pathname.indexOf("/rql/login")!=-1||i.pathname.indexOf("/rql/p/login")!=-1||i.pathname.indexOf("/rql/p/aloginvloginviewactivator")!=-1)){f.defaultPage&&this.navigate(this.config.defaultPage.Url,!0);return}if(f.user.anonymous&&(i.pathname.indexOf("/rql/profile")!=-1||i.pathname.indexOf("/rql/preferences")!=-1||i.pathname.indexOf("/rql/academy")!=-1||i.pathname.indexOf("/rql/cultureinfo")!=-1||i.pathname.indexOf("/rql/feedback")!=-1)){f.defaultPage&&this.navigate(this.config.defaultPage.Url,!0);return}if(n.browser.msie&&n.browser.majorVersion<10){if(!this.page&&!r&&document.location.href.indexOf("/#/")==-1)return;if(f.user.anonymous&e===!1)return}if(u=window.history&&window.history.state?window.history.state.drillDownArgs:null,u||!this.page||!r||this.page!=r||document.location.href.indexOf("?")!=-1&&(document.location.href.indexOf("?")==-1||document.location.href.indexOf("#")==-1)){if(this.page&&this.page.control&&this.page.control.hide(),u?(o=$f("{0}DD:{1}:{2}:{3}",i.pathname,u.target,u.key,u.hash?u.hash.toString():"0"),r=f.pages[o],r||(r=this.config.pages[o]={PageId:o,Title:this.page?this.page.Title:$rql.i18n.strings.Loading,Url:i.pathname,Views:[],DrillDownTarget:u.target,DrillDownContext:u.context,DrillDownPageFiters:u.pageFilters,Context:{StoreId:u.contextStoreId}})):e||(!r&&(l=this.getStoreId(i))?(s=i.pathname.splitAndTrim("/"),h=s[s.length-1],r=this.config.pages[c?i.pathname+i.search:i.pathname]={Title:$rql.i18n.strings.Loading,Url:i.search!=""?i.pathname+i.search:i.pathname,Views:[{Id:h,Type:"App",StoreId:h}],Scope:!0}):r&&r.Url&&r.Url.indexOf(this.config.baseUrl.pathname+"a/")===0&&(r.Url=i.search!=""?i.pathname+i.search:i.pathname)),r)this.config.uiVersion>2&&window.isNavigatingBack&&n("html").css("overflow-y")==="hidden"&&n("html").css("overflow-y",""),this.changePage(r),t&&t.type=="popstate"&&this.pagepath&&this.pagepath.stepBack();else if(this.page&&this.page.control.hide(),this.config.user.anonymous||e)f.redirectUrl=i,this.changePage(f.defaultPage);else{if(f.user.anonymous&e===!1)return;this.config.pages["/rql/a/not-found"]||(this.config.pages["/rql/a/not-found"]={Title:$rql.i18n.strings.Loading,Url:"/rql/a/not-found",Views:[{Id:"not-found",Type:"App",StoreId:"not-found"}],Scope:!0});r=this.config.pages["/rql/a/not-found"];this.changePage(r)}$log.debug("Navigated to "+i.href)}},onNavigate:function(t){if(!t.ctrlKey&&!t.shiftKey){var i=this;$rql.ui.navigateWithFormCompletionCheck(function(){var f=n(t.currentTarget).attrs("rql-url-replace"),e=null,r=$rql.isNull(f.rql.url,f.rql.record),o=$rql.api.getStoreIdFromUrl(r),s=$rql.ui.findOwnerViewId(t.currentTarget),u,h,c,l;s&&i.page&&i.page.control&&(u=$rql.ui.findViewById(s,i.page.control.$),u&&u.config&&u.config.Type=="Queue"&&(i.page.control.config.requireRefresh=!0));o&&i.page.control&&(h=i.createQueueItemContext(s,o,i.page.control.$),h?(e={queueItemContext:h},i.pagepath&&i.pagepath.setPageState(o,e),c=$rql.http.uri(),l=$rql.http.uri(r.toLowerCase()),c.href!=l.href&&i.deletePage(i.config.pages[r])):i.deletePage(i.config.pages[r]));$rql.api.offline&&$rql.api.isAndroid&&n("#rql")[0].scrollIntoView(!0);i.navigate(r,$rql.bool(f.rql.urlreplace),e)&&t.preventDefault()});t.preventDefault();$rql.api.uiVersion>2&&n("nav#main-nav").data("mmenu").close()}},onPageCreated:function(n){var t=this.config;t.pages[n.Url=$f("{0}p{1}",t.baseUrl.pathname,n.Key).toLowerCase()]=n;t.defaultPage||(t.defaultPage=n)},onListPages:function(i,u,f){var s,y=[],ni=y.root=t({root:!0}),vt=["Features","Static","UiStyles"],it,a,rt,o,yt,h,ut,g,pt,wt,nt,ti,ft,et,ot,st,bt,tt,b,ii,ht,e,v,kt,ct,dt,lt,gt,l,at;if(i&&!i.IsEmpty){for(!$rql.api.offline||$rql.api.isUWP||i.Scope||this.checkNetworkConnection(i),a=i.Names,rt=i.LocalizedNames,o=0;o<i.Activators.length;o++){for(yt=o<i.OfflineMenuIndex,s={Title:i.Activators[o],Views:[],PageFilters:[]},n.extend(s.Views,{Main:[],Top:[],Left:[],Right:[],Bottom:[],TopRight:[]}),i.Layouts&&(s.HasCustomLayout=!0,s.Layouts=i.Layouts,i.SideNav=i.Layouts.any(function(n){return n.UseSideNav===!0})),i.Subtitles&&i.Subtitles[o]&&(s.Subtitle=i.Subtitles[o],s.SubtitleUiStyle=i.SubtitleUiStyles[o]),i.CustomLayouts&&i.CustomLayouts[o]&&!i.SideNav&&(s.CustomLayout=i.CustomLayouts[o],s.HasCustomLayout=!0),h=0;h<i.Views[o].length;h++){if(e=i.Views[o][h],e={Id:a[e[0]]+"."+a[e[1]],AppName:a[e[0]],ViewName:a[e[1]],Title:a[e[2]],Type:a[e[3]],StoreId:e[4],Description:a[e[7]],HeaderUiStyle:a[e[8]]},e.NormalizedId=e.Id.toLowerCase(),e.Container=$rql.isNull(i.Containers&&i.Containers[o]?i.Containers[o][h]:null,"Main"),i.DisplayOptions&&i.DisplayOptions[o]&&i.DisplayOptions[o][h]&&(e.DisplayOptions=i.DisplayOptions[o][h].parseOptionsAsObject()),e.DisplayOptions&&e.DisplayOptions.Layout&&(e.DisplayOptions.Layout.leftnav==="true"&&(e.LeftNavLayout=!0),e.DisplayOptions.Layout.search==="true"&&(e.LeftNavSearch=!0)),e.Set=[],i.SetIds&&i.SetIds[o]&&i.SetIds[o][h]){for(ut=!1,g=0;g<s.Views.length;g++){for(pt=0;pt<s.Views[g].Set.length;pt++)if(s.Views[g].SetId==i.SetIds[o][h]){ut=!0;e.SetId=i.SetIds[o][h];s.Views[g].Set.add({Id:e.Id,Label:i.SetButtons&&i.SetButtons[o]&&i.SetButtons[o][h]?i.SetButtons[o][h]:e.Title,Title:e.Title,Description:e.Description,UiStyle:i.SetButtonUiStyles&&i.SetButtonUiStyles[o]&&i.SetButtonUiStyles[o][h]?i.SetButtonUiStyles[o][h]:null,CounterUiStyle:i.SetCounterUiStyles&&i.SetCounterUiStyles[o]&&i.SetCounterUiStyles[o][h]?i.SetCounterUiStyles[o][h]:null,HeaderUiStyle:e.HeaderUiStyle});break}if(ut)break}ut||(s.HasViewSets=!0,e.HasSets=!0,e.SetId=i.SetIds[o][h],e.ActiveSetView=!0,e.Set.add({Id:e.Id,Label:i.SetButtons&&i.SetButtons[o]&&i.SetButtons[o][h]?i.SetButtons[o][h]:e.Title,Title:e.Title,Description:e.Description,UiStyle:i.SetButtonUiStyles&&i.SetButtonUiStyles[o]&&i.SetButtonUiStyles[o][h]?i.SetButtonUiStyles[o][h]:null,CounterUiStyle:i.SetCounterUiStyles&&i.SetCounterUiStyles[o]&&i.SetCounterUiStyles[o][h]?i.SetCounterUiStyles[o][h]:null,HeaderUiStyle:e.HeaderUiStyle}))}for(i.CustomCssStyles&&i.CustomCssStyles[o]&&(e.CustomCssStyle=i.CustomCssStyles[o][h]),i.ViewLocations&&i.ViewLocations[o]&&i.ViewLocations[o][h]&&(wt=i.ViewLocations[o][h],wt==="TopRight"&&(e.Container=wt,e.OtherLocation=!0,s[e.Container]=!0)),nt=0;nt<vt.length;nt++)it=i[vt[nt]],it&&it[o]&&(e[vt[nt]]=it[o][h]);(i.Layouts||s.CustomLayout)&&(i.LayoutIds&&i.LayoutIds[o]&&i.LayoutIds[o][h]?(e.LayoutId=i.LayoutIds[o][h],i.Layouts&&(i.Layouts.any(function(n){return n.Id===e.LayoutId})||(e.LayoutId="Content"),ti=e.LayoutId.toLowerCase(),ti.startsWith("sidenav")&&(ft=i.Layouts.first(function(n){return n.Id===e.LayoutId}),ft&&ft.UiStyle&&(e.LayoutUiStyle=ft.UiStyle)))):e.LayoutId=s.CustomLayout?"":"Content",e.OtherLocation||(e.Container="Custom"),e.LayoutId==="Content"&&i.ShowDrilldown&&i.ShowDrilldown[o]&&(e.HasDrilldown=!0));i.ThemeStyles&&i.ThemeStyles[o]&&i.ThemeStyles[o][h]&&(e.ThemeStyle=i.ThemeStyles[o][h].toLowerCase());e.Type=="PageFilter"?(a[i.Views[o][h][5]]&&(e.IsCheckboxFilter=a[i.Views[o][h][5]]),a[i.Views[o][h][6]]&&(e.SideFilterFor=a[i.Views[o][h][6]]),s.PageFilters.add(e)):(s.Views.add(e),s.Views[e.Container]&&s.Views[e.Container].add(e),s.UseDefaultContainers=!s.HasCustomLayout&&(s.HasContainers||e.Container!="Main"&&e.Container!=="TopRight"&&!i.SetIds))}if(s.HasPageFilters=s.PageFilters.length!==0,s.HasPageFilters)for(et=0;et<s.PageFilters.length;et++)ot=s.PageFilters[et],ot.IsCheckboxFilter&&(st=ot.SideFilterFor?s.Views.first(function(n){return n.Type==="Queue"&&n.Id===ot.SideFilterFor}):s.Views.first(function(n){return n.Type==="Queue"}),st&&(st.LeftNavLayout=!0,st.HasCheckboxPageFilter=!0,s.UseDefaultContainers=!1,s.HasCheckboxPageFilters=!0));if(i.PageDependencies&&(bt=i.PageDependencies.findByKey("Index",o),bt&&(s.viewDependencies=bt.ViewDependencies)),s.Title[0]=="T"&&(tt=s.Title.replace("T",""),s.Title=i.Tokens[tt],s.Activator=i.ActivatorUrls[tt]?"/"+i.ActivatorUrls[tt].toLowerCase():"/"+a[tt].replace(r,"").toLowerCase()),s&&s.Title){var c=ni,w=s.Title.splitAndTrim("|"),v="",p;for(l=0;l<w.length;l++)i.Layouts&&(b=s.Views.first(function(n){return n.LayoutId==="Content"})),v+="/"+a[w[l]].replace(r,"").toLowerCase(),l<w.length-1?(p=y[v],p?c=p:(c.items.add(p=y[v]=c=t({key:v,title:rt[w[l]],top:c.root,parentKey:c.key,isOffline:yt,viewId:b?b.Id:"",viewHasDrilldown:b?b.HasDrilldown:null})),y.add(p))):(s.Key=$rql.isNull(s.Activator,v),f.context.created(s,i),c.leaf=!1,c.items.add(p=y[v]=t({leaf:!0,key:v,title:s.Title=rt[w[l]],top:c.root,url:s.Url,parentKey:c.key,isOffline:yt,viewId:b?b.Id:"",viewHasDrilldown:b?b.HasDrilldown:null})),c.firstUrl=c.items[0].url,y.add(p))}if(s.HasViewSets)for(ht=0;ht<s.Views.length;ht++)if(e=s.Views[ht],e.SetId&&e.SetId!=ii&&(v=$f("{0}:{1}",s.Key.replaceAll("/","_"),e.SetId),kt=this.getViewSetting(v,!1,!0),kt&&kt==e.Id)){for(ct=0;ct<s.Views.length;ct++)dt=s.Views[ct],dt.SetId==e.SetId&&(dt.ActiveSetView=!1);e.ActiveSetView=!0;ii=e.SetId}}for(lt=0;lt<i.MenuItems.length;lt++){var d=i.MenuItems[lt],k=$rql.isNull(d[2],!1),ri=d[4],ui=d[5],fi=d[6]=="NewWindow";link={Title:d[0],Link:a[d[1]],UiStyle:a[d[3]],IsMenuItem:!0,Action:ri,AppName:ui};link.Link&&(link.OnClick=link.Link.contains("javascript")?!0:!1,link.OnClick&&(link.Link=link.Link.splitAndTrim(":")[1]));var c=ni,w=link.Title.splitAndTrim("|"),v="",p;for(l=0;l<w.length;l++)v+="/"+a[w[l]].replace(r,"").toLowerCase(),l<w.length-1?(p=y[v])?c=p:(c.items.insertAt(k?k-1:c.items.length,p=y[v]=c=t({key:v,title:rt[w[l]],top:c.root,parentKey:c.key})),y.insertAt(k?k-1:y.length,p)):(link.Key=v,f.context.created(link),c.leaf=!1,c.items.insertAt(k?k-1:c.items.length,p=y[v]=t({leaf:!0,key:v,title:link.Title=a[w[l]],top:c.root,url:link.Link,uiStyle:link.UiStyle,usesJs:link.OnClick,parentKey:c.key,relative:!$rql.http.uri(link.Url).pathname.startsWith(this.config.baseUrl.pathname),newtargetwindow:fi,action:link.Action,appName:link.AppName})),y.insertAt(k?k-1:y.length,p))}if($rql.api.uiVersion>2&&(gt=this,i.RightSheetViews&&i.RightSheetViews.length>0)){for(gt.config.HasRightSheet=!0,l=0;l<i.RightSheetViews.length;l++)i.RightSheetViews[l].DisplayOptions&&(at=i.RightSheetViews[l].DisplayOptions.parseOptionsAsObject(),at&&at.SheetButton&&at.SheetButton.contentrefresh==="always"&&(i.RightSheetViews[l].RefreshAlways=!0));gt.config.RightSheetViews=i.RightSheetViews}}f.context.done({menu:y,response:i})},onListPagesFailed:function(n,t,i){var u=this,r;if(n)if(n.status===513)$rql.ui.error($rql.i18n.strings.ViewConnectivityError,$rql.i18n.strings.Error,null,null,function(){rql.api.offline&&($log.debug("redirecting home after refresh on ViewConnectivityError popup"),u.home())});else if(n.status===515)$rql.ui.error($rql.i18n.strings.SessionInvalidatedByLimits,$rql.i18n.strings.Error,null,null,function(){window.location.reload()});else{if(n.status===516)return;if(this.isUnauthorizedAccessResponse(n))this.page&&this.page.Views&&this.page.Views.length!==0&&this.page.Views[0].control?this.page.Views[0].control.$.html(this.renderUnauthorizedAccessMessage()):(r=this.$.find("div[rql-role='startup']"),r.length==1?r.html(this.renderUnauthorizedAccessMessage()):$rql.ui.error($rql.i18n.strings.UnauthorizedAccess,$rql.i18n.strings.Error));else if(n.responseText==""&&window.location.href.indexOf("/g/")>-1)window.location.href="/";else if(n.status!==0||i)$rql.ui.error($rql.i18n.strings.RequestError,$rql.i18n.strings.Error,null,null,function(){window.location.reload()});else return}},onStartScrolling:function(){$rql.ui.startScrolling()},onStopScrolling:function(){$rql.ui.stopScrolling()},onUpdateStore:function(t){var e=window.history.location||document.location,r=this.getStoreId($rql.http.uri(e.href));if(r){var i=n(t.currentTarget).attr("rql-data"),u={},f=this.config.baseUrl.pathname+"ide/store/"+r;i?(u[i]=!0,$rql.http.post(f,u,i).done(this.onUpdatedStore)):window.open(f,"_blank")}else $rql.ui.info($rql.i18n.strings.NoStore)},onUpdatedStore:function(){$rql.ui.info($rql.i18n.strings.StoreUpdated)},policies:function(){this.navigate(this.config.policiesUrl)},updateStore:function(n,t,i){this.post("update",{StoreId:n,StorePath:t,Value:i})},reload:function(n){if(n){window.location.reload();return}var i=$rql.http.uri().pathname,t=this.config.pages[i];if(t&&t.control&&t.Scope){this.deletePage(t);this.page=null;this.onHistoryStateChanged();return}window.location.reload()},render:function(n){var t=this;this.rendered||this.createLayout(n.menu).createDialogs().createCorePages().bindEvents().widgetize(null,{content:n})},onRendered:function(t){var i=this;if($rql.api.offline&&this.config.isIOS?n(document).find('meta[name="viewport"]').attr("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"):this.config.uiMode!="desktop"?n(document).find('meta[name="viewport"]').attr("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"):n(document).find('meta[name="viewport"]').attr("content","width=device-width, initial-scale=1"),window.FastClick&&(this.config.isIOS&&this.config.isIOS>=11||FastClick.attach(document.body)),this.renderHomeHeader(t.content.response?t.content.response.HomeHeader:null),$rql.api.uiVersion>2&&this.renderSheets(t.content.response?t.content.response.RightSheetViews:null),this.isHome())this.navigate(this.config.defaultPage.Url,!0);else this.onHistoryStateChanged(t.content.response.Redirect);this.cleanUp().rendered=!0;this.showRqlCookieNotice();$rql.api.uiVersion>2&&(n("nav#systemMenuUser").mmenu({dropdown:!0,autoHeight:!0,extensions:["theme-white"],onClick:{close:!0,setSelected:!1},setSelected:{hover:!0},counters:!0,wrappers:["bootstrap4"]},{offCanvas:{pageSelector:"#rql"}}),i.bindMenuEvents(n("nav#systemMenuUser")),n("nav#systemMenuDeveloper").mmenu({dropdown:!0,autoHeight:!0,extensions:["theme-white"],onClick:{close:!0,setSelected:!1},setSelected:{hover:!0},counters:!0,wrappers:["bootstrap4"]},{offCanvas:{pageSelector:"#rql"}}),i.bindMenuEvents(n("nav#systemMenuDeveloper")),n("nav#systemHelpMenu").mmenu({dropdown:!0,autoHeight:!0,extensions:["theme-white"],onClick:{close:!0,setSelected:!1},setSelected:{hover:!0},counters:!0,wrappers:["bootstrap4"]},{offCanvas:{pageSelector:"#rql"}}),i.bindMenuEvents(n("nav#systemHelpMenu")))},renderHomeHeader:function(n){if(n){var t=n.match(/^([^.]+)\.([^,]+)(?:,(.+))?$/),i=this.$.find("div[rql-role='home-header']");t&&i.length===1&&(i.show(),this.homeHeaderView={Id:"__home_header",AppName:t[1],ViewName:t[2],Type:"Form",IsInPlace:!0,StoreId:t[3]||"_Local"},this.homeHeaderView.control=new $rql.ui.controls.form(i,this.homeHeaderView),this.homeHeaderView.control.refresh())}},renderSheets:function(n){var r=this,u,i,t,f;if(n)for(this.SheetButtonDefs=n.where(function(n){return n.IsScoped}),this.SheetButtons||(this.SheetButtons=[]),u=this.$.find('[rql-role="right-sheet-icons-container"]'),i=0;i<n.length;i++)t=n[i],r.SheetButtons.any(function(n){return n.config.Id===t.Id})||t.IsScoped||(f=r.$.find($f("[rql-view-id='{0}']",t.Id)),t.$mobileIconsContainer=u,r.SheetButtons.add(new $rql.ui.controls.sheetbutton(f,t)))},resetUI:function(t){var r=this.config.coreFeatures,u,f=this,i;for(this.hideModals().header.hideDrawer(),this.closeSelectDropdowns(),t=t?(t+"").toLowerCase():"",i=0;i<r.length;i++)(u=$rql.isNull(this[r[i]],this["$"+r[i]]))&&(t&&t.indexOf(r[i])>-1?(u.hide(),this.isMobile()&&r[i]=="header"&&(n(".mobile-header").hide(),n('[rql-role="content"]').addClass("margin-tb-none")),u&&$rql.api.uiVersion>2&&r[i]!=="footer"&&(r[i]==="header"&&u.$.parents("[rql-role='nav-row']").addClass("hide"),u.$.remove())):($rql.api.uiVersion<=2||r[i]!=="footer")&&(u.show(f),this.isMobile()&&r[i]=="header"&&(n(".mobile-header").show(),n('[rql-role="content"]').removeClass("margin-tb-none")),$rql.api.uiVersion>2&&r[i]==="header"&&u.$.parents("[rql-role='nav-row']").removeClass("hide")));return this},setCookie:function(n,t,i){var r=$f("{0}={1}; path={2}; expires={3}",n,t,this.config.cookiePath,i);return $rql.api.debugbuild||$rql.api.offline||$rql.api.local_dev||(r+=";secure;"),document.cookie=r,this},checkSyncStatus:function(n){if(n&&n.Idle){var t=this.config,i=this.$.find("[rql-role='offline-status']");this.enable();i.hide();t.synchronizing=!1}else n&&!n.Idle?setTimeout(this.checkSyncStatus,1e3):n||this.post("synchronizer/status").done(this.checkSyncStatus).fail(this.checkSyncStatus)},synchronize:function(){if($rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){$rql.api.uiVersion>2&&(n("nav#main-nav").data("mmenu").close(),n("div[rql-role='overlay']:not([editing])").hide());window.webkit.messageHandlers.nativeBridge.postMessage("synchronize");return}var t=this.config,i=this.$.find("[rql-role='offline-status']");t.synchronizing||(t.synchronizing=!0,$rql.api.uiVersion>2&&setTimeout(function(){n("nav#main-nav").data("mmenu").close();n("div[rql-role='overlay']:not([editing])").hide()},0),this.disable(),i.show().widgetize(),this.post("synchronizer/start"),this.checkSyncStatus({}))},checkForUpdates:function(){if($rql.api.isAndroid||$rql.api.isIOS||$rql.api.embeddedView){if($rql.api.uiVersion>2&&n("nav#main-nav").data("mmenu").close(),$rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){window.webkit.messageHandlers.nativeBridge.postMessage("checkforupdates");return}this.post("updater/checkforupdates")}},toggleFullscreen:function(){this.isFullscreen=!this.isFullscreen;this.$fullscreenAwareFeatures.toggleClass("fullscreen",this.isFullscreen);this.$fullscreen.toggle(this.isFullscreen);$rql.events.trigger("fullscreen")},top:function(){var t=this.isMobile()?1:0,r=window,i=document;this.isMobile()&&i.body&&(t=i.compatMode==="CSS1Compat"||i.body.scrollTop||0);n("html, body").animate({scrollTop:t},333);$rql.events.trigger("backToTop",{scrollToPosition:t})},refreshConnectionError:function(){$log.debug("rql.core.refreshConnectionError");$rql.api.offline&&$rql.api.home()},sendGA4Event:function(n,t){try{typeof gtag!="undefined"&&gtag("event",n,t)}catch(i){$log.warn(i)}},trackOutboundLink:function(n){if(window.navigator&&window.navigator.onLine===!1&&n.indexOf("http")!==-1&&n.indexOf("localhost")===-1&&n.indexOf("127.0.0.1")===-1){alert($rql.i18n.strings.FeatureRequiresInternet);return}},trackFirstDownload:function(n,t){$rql.http.post($rql.api.baseUrl.pathname+"/Artifact/TrackDownload",{Id:n,StoreId:t})},onLinkClicked:function(t,i){var f=!1,e,u,r;t&&(e=n(t).attrs().href,e&&e.contains("/artifact/")&&(f=!0),(f||i)&&(u=n(t).closest('[rql-viewtype="Form"]').length>0?n(t).closest('[rql-viewtype="Form"]').data("rql.ui.control"):null,!u&&n(t).closest('[rql-viewtype="Workbook"]').length>0&&(u=n(t).closest('[rql-viewtype="Workbook"]').data("rql.ui.control"))));i&&(i.isEncoded()&&(i=$rql.safeHtmlDecode(window.atobUTF8(i))),r=JSON.parse(i),r&&r.storeId&&r.updateNode&&$rql.http.post($rql.api.baseUrl.pathname+"/form/UpdateLinkTracking",{StoreId:r.storeId,ContextPath:r.contextPath,NodeName:r.updateNode}).done(function(){u&&u.update()}));f&&(u.suspendCompletionCheck=Date.now())},clearHelpSuggestions:function(){var n=this.config.hwDefaultLabel;this.helpIds!=null&&this.helpIds.length>0&&!(this.helpIds.length===1&&this.helpIds[0]===n)&&(this.helpIds=null,this.updateHelpSuggestions(n))},onActivateZendesk:function(t){t.stopPropagation();t.preventDefault();n("nav#systemHelpMenu").data("mmenu").close();try{typeof zE!="undefined"&&zE.activate({hideOnClose:!0})}catch(i){$log.warn(i)}},updateHelpSuggestions:function(n){var i,r,t;try{typeof zE!="undefined"&&(t&&clearTimeout(t),i=5,r=this,this._updateHelpSuggestions(n)||(t=setInterval(function(){var u=r._updateHelpSuggestions(n);i-=1;(u||i<=0)&&clearInterval(t)},500)))}catch(u){$log.warn(u);t&&clearTimeout(t)}},_updateHelpSuggestions:function(t){try{if(typeof zE.setHelpCenterSuggestions!="undefined"&&zE.setHelpCenterSuggestions&&t){this.helpIds==null&&(this.helpIds=[]);var i=this,r=!1;return n.each(t.split(","),function(){i.helpIds.contains(n.trim(this))||(r=!0,i.helpIds.push(n.trim(this)))}),r&&zE.setHelpCenterSuggestions({url:!0,labels:[this.helpIds.join(",")]}),!0}return!1}catch(u){return $log.warn(u),!1}},showRqlCookieNotice:function(){if($rql.http.getCookie("RqlCookieNoticeDismissed")!=="1"){var t=n("#rqlCookieNotice");t&&(t.show(),n("body").addClass("has-notice"))}},hideRqlCookieNotice:function(){n("#rqlCookieNotice").hide();n("body").removeClass("has-notice");this.setCookie("RqlCookieNoticeDismissed","1",(new Date).addYears(1).toGMTString())},workbookDeepUrl:function(t,i,r){var u=n("[rql-viewtype='Workbook']:visible, [rql-view-type='workbook']:visible").last(),f;return u&&u.length>0?(f=u.data("workbook").getShareUrl(null,null,r),t&&this.setViewSetting("NavigateBackUrl",f,!0,!0),i&&this.setViewSetting("PreserveNavigateBackUrl","true",!0,!0),f):""},setOfflineAppState:function(n){this.config.offlineAppState=n},getOfflineAppState:function(){return this.config.offlineAppState},closeMobileSheet:function(){if(this.$content.parents('[rql-role="page-container"]').hasClass("sheet-open js-loading")){var t=this.$content.closest('[rql-role="page-container"]').find(".side-sheet"),n=t.find('[rql-role="sheet-view-container"]').first().data("rql.ui.control");n&&n.onCloseSheet()}},bindInteractions:function(){$rql.api.uiVersion<3||interact(".interact-draggable").draggable({modifiers:[interact.modifiers.restrictRect({restriction:"body",endOnly:!0})],listeners:{move:this.dragMoveListener}})},dragMoveListener:function(n){var t=n.target,i=(parseFloat(t.getAttribute("data-x"))||0)+n.dx,r=(parseFloat(t.getAttribute("data-y"))||0)+n.dy;t.style.webkitTransform=t.style.transform="translate("+i+"px, "+r+"px)";t.setAttribute("data-x",i);t.setAttribute("data-y",r)},cleanupCKEditorMaximizeStyles:function(){var i,t;try{if(window.CKEDITOR&&n("html").attr("style").indexOf("width: 0px; height: 0px;")>-1)for(i in CKEDITOR.instances)if(t=CKEDITOR.instances[i],t.commands.maximize.state===CKEDITOR.TRISTATE_ON){t.commands.maximize.exec();break}}catch(r){console.log("Error in trying to clean up CKEDITOR")}},checkNetworkConnection:function(n){if(n.Timedout){if($rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){window.webkit.messageHandlers.nativeBridge.postMessage("networktimeout");return}this.post("NativeNetworkStatus",{Timedout:!0})}else{if($rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){window.webkit.messageHandlers.nativeBridge.postMessage("networknormal");return}this.post("NativeNetworkStatus",{Timedout:!1})}}};i.registerClass("$rql.ui.controls.core",$rql.ui.controls.multiview)})(jQuery);
(function(n){var r={ShowFirstItem:!0},t=$rql.ui.controls.gallery=function(n,i){t.initializeBase(this,[n,i])};t.prototype={bindEvents:function(){this.on({navigate:this.navigate,show:this.show,dismiss:this.dismiss})},initialize:function(t){var i=this.config=n.extend({Data:this.prepData(t.Items)},r,t);if(this.bindEvents(),this.widgetize(),i.ShowFirstItem)this.onShow(i.Items[0][0])},navigate:function(t){var i=this.config,u=n(t.currentTarget).attr("rql-argument"),r=i.Data[i.currentId][u];r||(r=u=="Next"?i.Items[0][0]:i.Items[i.Items.length-1][0]);this.onShow(r)},onShow:function(n){for(cfg=this.config,cfg.currentId=n,i=0;i<cfg.Containers.length;i++)this.$.find(cfg.Containers[i]).html($rql.ui.render(cfg.Templates[i],cfg.Data[n].Content));this.raise("shownGallery",this)},prepData:function(n){for(var i={},t=0;t<n.length;t++)i[n[t][0]]={Content:n[t][1],Prev:t-1<0?!1:n[t-1][0],Next:t+1>=n.length?!1:n[t+1][0]};return i},show:function(t){this.onShow(n(t.currentTarget).attr("rql-thumbnail"))},dismiss:function(){n(".modal-backdrop").remove()}};t.registerClass("$rql.ui.controls.gallery",$rql.ui.controls.view)})(jQuery);
(function(n){var t=Sys.CultureInfo.CurrentCulture.dateTimeFormat,u=new Date,f={cc:Sys.CultureInfo.CurrentCulture.dateTimeFormat,dateObj:new Date,input:null,element:null,hourSettings:{Start:t.AMDesignator?1:0,End:t.AMDesignator?12:23,RowLength:6,Steps:1,Hour:!0},minSettings:{Start:0,End:55,RowLength:6,Steps:5},today:new Date,selected:new Date,valSelected:!1},i=$rql.ui.controls.dtpicker=function(n,t){i.initializeBase(this,[n,t])},r;i.prototype={changeMin:function(t){var i=this.config;i.dateObj=i.dateObj.addMinutes(n(t.currentTarget).attr("data-handler")=="plus-min"?1:-1);this.setSelectedDate("time")},changeMonth:function(t){var i=this.config,r=n(t.currentTarget).attr("data-handler")=="next"?1:-1;i.dateObj=i.dateObj.addMonths(r);this.renderCalendar()},changeYear:function(t){var i=this.config,r=n(t.currentTarget).attr("data-handler")=="next"?1:-1;i.dateObj=i.dateObj.addMonths(r*12);this.renderCalendar()},chooseDate:function(t){var i=this.config,r=n(t.currentTarget).attr("dtpicker-date"),u=n(t.currentTarget),f;u.hasClass("empty")&&(f=r<7?1:-1,i.dateObj=i.dateObj.addMonths(f));i.dateObj.setDate(r);this.setSelectedDate(t.currentTarget);u.hasClass("empty")&&this.renderCalendar();i.dateType=="Date"&&this.closePicker()},chooseHour:function(t){var i=this.config,r=Number.parseInvariant(n(t.currentTarget).attr("dtpicker-hour")),u=n('input[name="ampm"]:checked').val();i.hourSettings.End==12?u==="pm"&&r<12?i.dateObj.setHours(r+12):u==="am"&&r===12?i.dateObj.setHours(0):i.dateObj.setHours(r):i.dateObj.setHours(r);this.setSelectedDate(t.currentTarget)},chooseMin:function(t){var i=this.config,r=n(t.currentTarget).attr("dtpicker-min");i.dateObj.setMinutes(r);this.setSelectedDate(t.currentTarget)},getCalendarRows:function(n){for(var e,u,t,r=this.config,f=[],i=n.Start;i<=n.End;i+=n.Steps)t={},(i-n.Start)%n.RowLength==0&&(t.Root=!0),(i+n.Steps-n.Start)%n.RowLength==0&&(t.Leaf=!0),r.dateObj.getMonth()==r.today.getMonth()&&i==r.today.getDate()&&r.dateObj.getFullYear()==r.today.getFullYear()&&(t.Today=!0),i<=0?(e=parseInt(n.LastMonthEnd,10)+i,t.Empty=!0):e=i,t.Date=e,f.push(t);for(u=1;u<n.RowLength-n.LastDay;u+=n.Steps)t={},u==n.RowLength-n.LastDay-1&&(t.Leaf=!0),t.Empty=!0,t.Date=u,f.push(t);return f},getTimeRows:function(n){var o=this.config,f=[],u,r,t,i,e;for(n.Start%2==0?(r="First",u="Last"):(u="First",r="Last"),t=n.Start;t<=n.End;t+=n.Steps)i={},(t-n.Start)%n.RowLength==0&&(i.Root=!0),(t+n.Steps-n.Start)%n.RowLength==0&&(i.Leaf=!0),t%2!=0&&(i[u]=!0),t%2==0&&(i[r]=!0),e=(t<10?"0":"")+t,i.Text=e,i.Value=t,f.push(i);return f},hidePicker:function(t){var i=this.config;t.originalEvent&&t.originalEvent.target&&this.isVisible()&&n(t.originalEvent.target).parents('[rql-role="dtpicker"]').length==0&&!i.element.is(t.originalEvent.target)&&this.closePicker()},closePicker:function(){this.isVisible()&&(this.$.addClass("hide"),$rql.api.dtpickerMode==="Modal"&&this.$.modal("hide"),this.triggerCalcNowAction(),n(this.config.input).blur())},triggerCalcNowAction:function(){var r=this.config,t=n(r.input),i;this.getInputElementValue()!=this.originalValue?(this.originalValue=null,i=t.closest("div.controls").find($f("a[rql-id='__expression__{0}']",r.input.attr("rql-id"))),i.length!==0?i.click():t.trigger("valueChange"),t.trigger("multiselectDtPickerUpdated")):t.trigger("dtPickerCancelled")},getInputElementValue:function(){return this.config&&this.config.input?this.config.input.attr("rql-value"):null},hideMobiScroll:function(){var n=this.config;n.element.mobiscroll("getInst").hide()},initialize:function(i){var r=this.config;this.config=n.extend({dateSettings:{ampmText:t.AMDesignator+"/"+t.PMDesignator,cancelText:$rql.i18n.strings.Cancel,endYear:u.getFullYear()+100,dateFormat:t.ShortDatePattern,dateOrder:$rql.i18n.dateOrder,dayNames:t.DayNames,dayNamesShort:t.ShortestDayNames,dayText:$rql.i18n.strings.Day,hourText:$rql.i18n.strings.Hour,minuteText:$rql.i18n.strings.Minute,monthNames:t.MonthNames,monthNamesShort:t.AbbreviatedMonthNames,monthText:$rql.i18n.strings.Month,nowText:$rql.i18n.strings.Now,todayText:u.localeFormat(t.LongDatePattern),secText:$rql.i18n.strings.Second,setText:$rql.i18n.strings.Ok,showNow:!0,timeFormat:t.ShortTimePattern,timeText:$rql.i18n.strings.Time,timeWheels:$rql.i18n.timeWheels,timeZones:$rql.i18n.timeZones,yearText:$rql.i18n.strings.Year},datePatterns:{Date:$rql.i18n.datePattern,Time:$rql.i18n.timePattern,DateTime:$rql.i18n.dateTimePattern,Timestamp:$rql.i18n.dateTimePattern}},f,i);this.widgetize()},onRendered:function(){if(!this.isDesktop()){this.pickers={};n(document).on("click",".dwo",n.proxy(this.hideMobiScroll,this));n(document).on("click",".dwb-n",n.proxy(this.selectNow,this))}},movePicker:function(){var t=this.config,i;t.dateObj=t.valSelected?this.setDateObj():new Date;this.renderCalendar();t.timeZoneVisible&&t.timeZones&&(i=$rql.ui.render('{{#TimeZones}} <option value="{{Id}}">{{Name}}<\/option> {{/TimeZones}}',{TimeZones:t.timeZones}),n('[rql-role="dtpicker-timezones"] > select').html(i));t.valSelected?this.setSelected():(this.$.find(".selected").removeClass("selected"),t.timeZoneVisible&&this.selectTimeZone());$rql.api.dtpickerMode!=="Modal"&&t.element.parent().after(this.$);switch(t.dateType){case"Date":n('[rql-role="dtpicker-cal"]').removeClass("hide");n('[rql-role="dtpicker-time"], [rql-role="dtpicker-timezones"]').addClass("hide");n('[rql-role="dtpicker"] .pair').removeClass("pair");this.$.removeClass("time").addClass("date");break;case"Time":n('[rql-role="dtpicker-cal"], [rql-role="dtpicker-timezones"]').addClass("hide");n('[rql-role="dtpicker-time"]').removeClass("hide");n('[rql-role="dtpicker"] .pair').removeClass("pair");this.$.removeClass("date").addClass("time");break;case"DateTime":case"Timestamp":n('[rql-role="dtpicker-cal"], [rql-role="dtpicker-time"]').removeClass("hide");n('[rql-role="dtpicker-timezones"]').toggleClass("hide",!t.timeZoneVisible);n('[rql-role="dtpicker-cal"] > div, [rql-role="dtpicker-time"] > div').addClass("pair");this.$.addClass("date time")}this.$.removeClass("hide")},onClick:function(){var n=this.config;n.selected=n.dateObj=this.setDateObj();n.valSelected=n.input.attr("rql-value")||n.defaultDateObj?!0:!1;this.render()},onCloseMobiScroll:function(){$rql.ui.startScrolling()},onFocusIn:function(){var t=this.config;t.dateObj=this.setDateObj();n.mobiscroll.i18n.currentCulture=t.dateSettings;t.element.mobiscroll().mobiscroll({preset:t.dateType=="Timestamp"?"datetime":t.dateType.toLowerCase(),lang:"currentCulture",onShow:this.renderMobile,onClose:this.onCloseMobiScroll,onSelect:this.updateInputMobile});t.element.mobiscroll().mobiscroll("setDate",t.dateObj);this.pickers[t.element[0].id]={dateType:t.dateType};t.element.mobiscroll("getInst").show()},render:function(){var i=this.config;if(this.rendered=this.$.length===0||n('[rql-role="dtpicker-cal"]').length===0?!1:!0,this.rendered)this.movePicker(),$rql.api.dtpickerMode==="Modal"&&this.$.removeAttr("style");else{if(this.$=n($rql.ui.templates("dtpicker").render({AMPM:i.hourSettings.End>12?!1:!0,AMDesignator:t.AMDesignator,PMDesignator:t.PMDesignator,Date:i.dateType=="Date"||i.dateType=="DateTime"||i.dateType=="Timestamp"?!0:!1,Time:i.dateType=="Time"||i.dateType=="DateTime"||i.dateType=="Timestamp"?!0:!1,ShowTimeZones:i.timeZoneVisible,TimeZones:i.timeZones,TimeStamp:i.dateType=="Timestamp"?!0:!1,Month:i.dateSettings.monthNames[i.dateObj.getMonth()],Year:i.dateObj.getFullYear(),dateSettings:i.dateSettings,Dates:this.getCalendarRows(this.setCalendar()),Hours:this.getTimeRows(i.hourSettings,"hour"),Minutes:this.getTimeRows(i.minSettings,"min"),Modal:$rql.api.dtpickerMode==="Modal"},{"dtpicker-cal":$rql.ui.templates("dtpicker-cal").html,"dtpicker-time":$rql.ui.templates("dtpicker-time").html,"dtpicker-timezone":$rql.ui.templates("dtpicker-timezone").html})),$rql.api.dtpickerMode!=="Modal"?this.$.insertAfter(i.element.parent()):n("body").append(this.$),this.onRender&&this.onRender(),this.rendered=!0,$rql.api.dtpickerMode!=="Modal")n("html, body").on("click",n.proxy(this.hidePicker,this));i.valSelected?this.setSelected():i.timeZoneVisible&&this.selectTimeZone()}this.setActions();this.$.removeClass("hide");$rql.api.dtpickerMode==="Modal"&&this.showAsModal()},renderCalendar:function(){var t=this.config;n('[rql-role="dtpicker-cal"]').html($rql.ui.templates("dtpicker-cal").render({Month:t.dateSettings.monthNames[t.dateObj.getMonth()],Year:t.dateObj.getFullYear(),dateSettings:t.dateSettings,Dates:this.getCalendarRows(this.setCalendar())}))},renderMobile:function(){var t=this.config,i=this.pickers[t.input[0].id].dateType;if(t.timeZoneVisible){n(".dw.dwbg").append($rql.ui.templates("dtpicker-timezone").render({ShowTimeZones:!0,TimeZones:t.timeZones}));n('[rql-role="dtpicker-timezones"]').removeClass("hide");n(".dw.dwbg").on("change",'[rql-action="setTimeZone"]',n.proxy(this.setTimeZone,this));this.selectTimeZone(n(t.input).attr("rql-timezone"))}$rql.ui.stopScrolling()},reposition:function(){var i=11,t=this.config.input.offset(),r=this.$.height(),u=t.top-n(window).scrollTop();u+this.config.input.height()+i+r>=n(window).height()-20?this.$.offset({top:t.top-i-r,left:t.left}):this.$.removeAttr("style")},selectNow:function(){var n=this.config;n.element.mobiscroll().mobiscroll("setDate",new Date);this.updateInputMobile((new Date).format(n.datePatterns[n.dateType]));this.hideMobiScroll()},setActions:function(){this.$.off();this.$.on("click",'[rql-action="changeMonth"]',n.proxy(this.changeMonth,this));this.$.on("click",'[rql-action="changeYear"]',n.proxy(this.changeYear,this));this.$.on("click",'[rql-action="today"]',n.proxy(this.setToday,this));this.$.on("click",'[rql-action="now"]',n.proxy(this.setNow,this));this.$.on("click",'[rql-action="chooseDate"]',n.proxy(this.chooseDate,this));this.$.on("click",'[rql-action="chooseHour"]',n.proxy(this.chooseHour,this));this.$.on("click",'[rql-action="chooseMin"]',n.proxy(this.chooseMin,this));this.$.on("click",'[rql-action="changeMin"]',n.proxy(this.changeMin,this));this.$.on("click",'[rql-action="setAmPm"]',n.proxy(this.setAmPm,this));this.$.on("change",'[rql-action="setTimeZone"]',n.proxy(this.setTimeZone,this));if($rql.api.dtpickerMode==="Modal")this.$.on("click",'[rql-action="closePicker"]',n.proxy(this.closePicker,this));this.$.on("click",function(n){n.stopPropagation()})},setAmPm:function(t){var i=this.config,r=n(t.currentTarget).val(),u=i.dateObj.getHours(),f;r=="am"&&u<12||r=="pm"&&u>=12||(f=r=="am"?-12:12,i.dateObj=i.dateObj.addHours(f),i.selected=i.dateObj,this.updateInput())},setCalendar:function(){var n=this.config,i=new Date(n.dateObj.getFullYear(),n.dateObj.getMonth(),1),r=1-i.getDay(),t=new Date(n.dateObj.getFullYear(),n.dateObj.getMonth()+1,0),u=new Date(n.dateObj.getFullYear(),n.dateObj.getMonth(),0).getDate();return{Type:"Calendar",Start:r,End:t.getDate(),RowLength:7,Steps:1,LastMonthEnd:u,LastDay:t.getDay()}},setDateObj:function(){var n=this.config;return n.defaultDateObj?n.defaultDateObj:n.input.attr("rql-value")&&n.input.attr("rql-value")!=""?new Date($rql.api.dataTypes[n.dateType].fromJson(n.input.attr("rql-value"))):new Date},setNow:function(){var t=this.config,i=new Date;t.dateObj=new Date(t.dateObj.getFullYear(),t.dateObj.getMonth(),t.dateObj.getDate(),i.getHours(),i.getMinutes());this.setSelectedDate("time");t.dateObj.format(t.cc.ShortDatePattern)==i.format(t.cc.ShortDatePattern)&&n('[rql-role="dtpicker-cal"].hide').length==0&&this.setSelectedDate("cal");t.dateType=="Time"&&this.closePicker()},setSelected:function(){var n=this.config;this.setSelectedDate("cal");this.setSelectedDate("time");n.timeZoneVisible&&this.setTimezoneValue()},setSelectedDate:function(t){var i=this.config;switch(t){case"cal":this.renderCalendar();n('[dtpicker-date="'+i.dateObj.getDate()+'"]:not(.empty)').addClass("selected");break;case"time":n('[dtpicker-role="hours"], [dtpicker-role="minutes"]').find(".selected").removeClass("selected");i.hourSettings.End==12?n('[dtpicker-hour="'+(i.dateObj.getHours()>12?i.dateObj.getHours()-12:i.dateObj.getHours())+'"]').addClass("selected"):n('[dtpicker-hour="'+i.dateObj.getHours()+'"]').addClass("selected");n('[dtpicker-min="'+i.dateObj.getMinutes()+'"]').addClass("selected");n('input[name="ampm"]').prop("checked",!1);i.dateObj.getHours()<12?n('input[value="am"]').prop("checked",!0):n('input[value="pm"]').prop("checked",!0);break;default:n("[dtpicker-role]").has(t).find(".selected").removeClass("selected");n(t).addClass("selected")}i.valSelected=!0;i.selected=i.dateObj;this.updateInput()},setTimeZone:function(t){var r=this.config,i=n(t.currentTarget).find("option:selected").val();i=$rql.TimeZone.tryConvertToLegacy(i);r.input.attr("rql-timezone",i)},setTimezoneValue:function(){var t=this.config,i=t.input.attr("rql-timezone"),n;i||(n=t.input.attr("rql-value").split(";"),n.length>1&&(t.input.attr("rql-value",n[0]),t.input.attr("rql-timezone",n[1]),i=n[1]));this.selectTimeZone(i)},selectTimeZone:function(t){var i=this.config;t||(t=(new Date).getTimeZone().Id);t=$rql.TimeZone.ensureKnownTimeZoneId(i.timeZones,t);t&&(n('[rql-action="setTimeZone"]').find('option[value="'+t+'"]').attr("selected",!0),i.input.attr("rql-timezone")||i.input.attr("rql-timezone",$rql.TimeZone.tryConvertToLegacy(t)))},setToday:function(){var t=this.config,i=new Date;t.dateObj=new Date(i.getFullYear(),i.getMonth(),i.getDate(),t.dateObj.getHours(),t.dateObj.getMinutes());this.setSelectedDate("cal");t.dateObj.format(t.cc.ShortTimePattern)==i.format(t.cc.ShortTimePattern)&&n('[rql-role="dtpicker-time"].hide').length==0&&this.setSelectedDate("time");t.dateType=="Date"&&this.closePicker()},show:function(t){t.stopPropagation();var i=this.config;i.element=n(t.currentTarget);this.isDesktop()?(i.input=i.element.siblings("input"),i.dateType=i.input.attr("rql-type"),this.initTimeZones(),this.setDefaultForDateTimes(t,i),this.isVisible()?this.$.addClass("hide"):this.onClick()):(i.element.is("input")||(i.element=i.element.siblings("input").length>0?i.element.siblings("input"):i.element),i.dateType=i.element.attr("rql-type"),i.input=i.element,this.initTimeZones(),this.setDefaultForDateTimes(t,i),this.onFocusIn());this.originalValue=this.getInputElementValue();$rql.api.dtpickerMode!=="Modal"&&this.reposition()},initTimeZones:function(){var n=this.config;n.timeZoneOptions=n.input.attr("rql-timezone-options");n.timeZoneVisible=(n.dateType==="DateTime"||n.dateType==="Timestamp")&&!!n.timeZoneOptions;n.timeZoneVisible&&(n.timeZones=$rql.TimeZones.resolve(n.timeZoneOptions))},setDefaultForDateTimes:function(t,i){var r,u;if(i.dateType==="DateTime"||i.dateType==="Timestamp")if(i.input.attr("rql-value"))delete i.defaultDateObj;else{var f=n(t.currentTarget).closest("[rql-filter-index]").find('[rql-action="selectOperator"]').val(),e="-<<=",o=">>+";switch(f){case"<<":case e:case"-<<":case">>+=":case o:r=n(t.currentTarget).closest("[rql-value-index]").attr("rql-value-index");r=parseInt(r)||0;u=new Date;r===0?f===o||f===e?u.setHours(23,59,59,999):u.setHours(0,0,0,0):r===1&&u.setHours(23,59,59,999);i.defaultDateObj=u}}},updateInput:function(){var n=this.config,u=$rql.api.dataTypes[n.dateType],e=u.toJson(n.dateObj),r,i,f;n.input.attr("rql-value",e);r=!1;n.dateType==="Date"&&(i=n.input.attr("rql-dateformat"),i&&i.length>0&&(n.input.val(u.format(n.dateObj,i)),r=!0));r||(f=n.dateObj.format(n.datePatterns[n.dateType]).replace("AM",t.AMDesignator).replace("PM",t.PMDesignator),n.input.val(f))},updateInputMobile:function(t){var i=this.config,s=i.input[0].id,h=this.pickers[s].dateType,u=$rql.api.dataTypes[h],f=new Date(u.parse(t)),l=u.toJson(f),e=n("input#"+s),o,r,c;e.attr("rql-value",l);o=!1;i.dateType==="Date"&&(r=e.attr("rql-dateformat"),r&&r.length>0&&(e.val(u.format(f,r)),o=!0));o||(c=f.format(i.datePatterns[h]),i.input.val(c));i.timeZoneVisible&&this.setTimezoneValue();this.triggerCalcNowAction()},showAsModal:function(){if(!this.$.attr("style")){var t=n(window).width()/2-this.$.find("[rql-role='dtpicker']").outerWidth()/2;this.$.css({overflow:"hidden","background-color":"transparent",left:"0","margin-left":t.toString()+"px"})}this.$.modal()}};i.registerClass("$rql.ui.controls.dtpicker",$rql.ui.controls.view);n.mobiscroll&&(n.mobiscroll.formatDate=function(n,t){return t.localeFormat(n)});n(document).on("click","[rql-role='datepicker']:not('[disabled]')",function(t){var u,f,o,s,v,e,h;if($rql.api.uiVersion<=2)r||(r=new i),r.show(t);else{if(u=n("input#"+n(t.currentTarget).attr("rql-inputid")),u.length===0&&(u=n(t.currentTarget).siblings("input")),u.length>0&&(f=u.attrs().rql.type,$rql.api.dataTypes.isDateTime(f)))if(f.indexOf("Date")>-1||f==="Timestamp"){if(e=u.data("rql.ui.control").config,!u.attr("rql-value")){var c=n(t.currentTarget).closest('[rql-role="edit-area"]').find('[rql-role="operator"] select').val(),l="-<<=",a=">>+";switch(c){case"<<":case l:case"-<<":case">>+=":case a:o=n(t.currentTarget).siblings("input").attr("rql-value-index");o=parseInt(o)||0;s=new Date;o===0?c===a||c===l?s.setHours(23,59,59,999):s.setHours(0,0,0,0):o===1&&s.setHours(23,59,59,999);v=new moment(s);n.extend(e,{initialDateTime:v.format("YYYY-MM-DDTHH:mm:ss")})}}h=new $rql.ui.controls.datepicker(u,e);h.render()}else f==="Time"&&(e=u.data("rql.ui.control").config,h=new $rql.ui.controls.timepicker(u,e),h.render());t.stopPropagation()}});n(document).on("click",".controls-dtpicker [rql-action='clear']",function(t){n(".controls-dtpicker").has(n(t.currentTarget)).children("input").val("").attr({"rql-value":"","rql-timezone":""})});n.extend({mdbConvertDateFormat:function(n){return n.replaceAll("M","m")}})})(jQuery);
(function(n){var i={removePrefix:["."],removeSuffix:[":before",":"]},t=$rql.ui.controls.themeInjector=function(n,i){t.initializeBase(this,[n,i])};t.prototype={cleanText:function(n){var t=n.replace(this.config.prefix,"");for(prefix=0;prefix<this.config.removePrefix.length;prefix++)t=t.replace(this.config.removePrefix[prefix],"");for(suffix=0;suffix<this.config.removeSuffix.length;suffix++)t=t.replace(this.config.removeSuffix[suffix],"");return t},initialize:function(t){this.config=n.extend({},i,t);this.getRules()},getRules:function(){var u,f,n,t,i,r;try{for(u=[],f=document.styleSheets,n=0;n<f.length;n++)if(t=document.styleSheets[n].cssRules,t)for(i=0;i<t.length;i++)r=t[i].selectorText,r&&r.substring(0,this.config.prefix.length+1)=="."+this.config.prefix&&u.push({Class:this.cleanText(r)});this.config.Classes=u;this.render()}catch(e){$log.error("Error loading css rules",e)}},render:function(){this.rendered||(this.element.html($rql.ui.templates(this.config.template).render({Classes:this.config.Classes})),this.onRender&&this.onRender(),this.rendered=!0,console.log(this.config.Classes))}};t.registerClass("$rql.ui.controls.themeInjector",$rql.ui.controls.view)})(jQuery);
(function(n){Type.registerNamespace("$rql.ui.behaviors");var t=$rql.ui.behaviors.base=function(n,i){t.initializeBase(this,[n,i]);$rql.delegateAll(this);this.initialize(i)};t.prototype={initialize:function(n){t.callBaseMethod(this,"initialize",[n])},dispose:function(){t.callBaseMethod(this,"dispose")},off:function(n,t){this.on(n,t,!0);return this},on:function(t,i,r){var f=(r?"remove":"add")+"Handler",e,u;if(typeof t=="string"&&n.isFunction(i))this.get_events()[f](t,i);else if(typeof t=="object"){e=this.get_events();for(u in t)n.isFunction(t[u])&&e[f](u,t[u])}return this},post:function(n,t,i){return $rql.http.post(this.config.serviceUrl+n,t,i)},raise:function(n,t){var i=this.get_events().getHandler(n);return i&&i(t),this}};t.registerClass("$rql.ui.behaviors.base",Sys.UI.Behavior)})(jQuery);
(function(n){var i={SearchLimit:20,resultsTemplate:$rql.ui.templates("searchinplace-results")},t=$rql.ui.behaviors.searchinplace=function(n,i){t.initializeBase(this,[n,i])};t.specialKeyCodes=[n.ui.keyCode.UP,n.ui.keyCode.DOWN,n.ui.keyCode.ENTER];t.prototype={initialize:function(r){t.callBaseMethod(this,"initialize",[r]);r&&(this.config=n.extend({Messages:{},serviceUrl:$rql.api.baseUrl.pathname},i,r,this.splitViewName(r.View)),this.$=r.$,this.$input=r.$input,this.$toggle=r.$toggle,this.richtextEditor=r.richtextEditor);this.searches=[];this.inputValue=this.getValue();this.attach()},dispose:function(){this.detach();t.callBaseMethod(this,"dispose")},attach:function(){if(this.$input){this.$input.on("keydown",this.onKeyDown);this.$input.on("blur",this.onBlur)}else if(this.richtextEditor){this.richtextEditor.on("key",this.onKeyDown);this.richtextEditor.on("blur",this.onBlur)}if(this.$toggle)this.$toggle.on("click",this.onToggle);this.$results=this.$.find("div[rql-role='searchinplace-results']");this.$results.on("click","table thead th",this.onHeaderRowClick);this.$results.on("click","table tbody tr",this.onRowClick);this.$spinner=this.$.find("[rql-role='spinner']")},detach:function(){this.$input?(this.$input.off("keydown",this.onKeyDown),this.$input.off("blur",this.onBlur),this.$input.closest("div.table-responsive").off("scroll")):this.richtextEditor;this.$toggle&&this.$toggle.off();this.$results.off("click","table tbody tr",this.onRowClick)},getValue:function(){return this.$input?this.$input.val():this.richtextEditor&&this.richtextEditor.editable()?this.richtextEditor.editable().getText():""},updateValue:function(t,i,r,u){this.raise("close",{sender:this,storeId:t,value:i,cancel:!!r,cancelPostback:!!u,currentTarget:this.$[0],stopPropagation:n.noop});this.inputValue=this.getValue();this.valueTouched=!1},sendSearchRequest:function(n){var r=this.searches.findByKey("text",n),t,i;r?this.renderSearchResults(r):(t=this.config,i={AppName:t.AppName,ViewName:t.ViewName,PageIndex:0,PageSize:t.SearchLimit,Context:{StoreId:t.StoreId},Search:n,AccessToken:t.QueueAccessToken,DualModeRequestOnline:t.DualModeRequestOnline},this.pendingSearch={text:n,request:i},this.searches.push(this.pendingSearch),this.showSpinnerWithDelay(),this.post("queue/",i,i).done(this.onSearchResponse))},onSearchResponse:function(n,t,i){var o=i.context,f=this.searches.findByKey("text",o.Search),r,u;if(f){for(f.response=n,r=n.DataPage,this.createPropertyTypes(r),this.createHeaderGroups(r),r.VisibleHeaders=this.filterHiddenItems(r.Headers,r.HiddenProperties),u=0;u<r.Items.length;u++){var e=r.Items[u],s=this.formatValues(e,r,u),h=this.filterHiddenItems(s,r.HiddenProperties);r.Items[u]={Key:r.Keys[u]?r.Keys[u]:u+1,Index:u,Values:e,VisibleValues:h};e[0].First=!0}r.Items.length<r.PageSize&&(r.TotalCount=r.Items.length);this.setResultsSummary(f);this.pendingSearch===f&&this.renderSearchResults(f)}},createPropertyTypes:function(n){var i=new Array(n.Properties.length).fill("String"),r,u,t,f;for(r in n.Types)for(u=n.Types[r],t=0;t<u.length;t++)f=u[t],f<i.length&&(i[f]=r);n.PropertyTypes=i},formatValues:function(n,t){for(var r=new Array(n.length).fill(null),i=0;i<n.length;i++)r[i]=this.tryToFormatValue(n[i],i,t);return r},tryToFormatValue:function(n,t,i){var r;try{if(n!==null&&n!==undefined&&(r=i.PropertyTypes&&t<i.PropertyTypes.length?i.PropertyTypes[t]:null,r&&r!=="String"&&r!=="Binary"&&r!=="HRef")){var u=$rql.api.dataTypes[r],f=i.Formats&&i.Formats[0]?i.Formats[0][$f("{0:D0}",t)]:null;return u.format(u.fromJson(n),f)}}catch(e){$log.error($f("Error formatting a column value: {0}.\n{1}",n,e))}return n},createHeaderGroups:function(n){var t,i;if(n.Headers&&n.Headers.length!==0&&n.Groups&&n.Groups.length!==0&&(t=this.unpackColumnGroups(n),t=this.filterHiddenItems(t,n.HiddenProperties),this.combineColumnGroups(t),t.length>1||t.length===1&&t[0].Title)){if(n.GroupHeaderUiStyles)for(i=0;i<t.length;i++)t[i].GroupHeaderUiStyle=n.GroupHeaderUiStyles[t[i].Title];n.VisibleGroups=t;n.HasVisibleGroups=!0}},unpackColumnGroups:function(t){for(var u,f,i,e=n.map(t.Headers,function(){return{Title:null,Span:1}}),o=Object.getOwnPropertyNames(t.Groups),r=0;r<o.length;r++)for(u=o[r],f=t.Groups[u],i=0;i<f.length;i++)e[f[i]].Title=u;return e},combineColumnGroups:function(n){for(var t=0,i,r;t<n.length-1;)i=n[t],r=n[t+1],i.Title===r.Title||r.Title===null?(i.Span++,n.splice(t+1,1)):t++},filterHiddenItems:function(t,i){return t&&t.length!==0&&i&&i.length!==0?n.map(t,function(n,t){return i.indexOf(t)===-1?n:undefined}):t},onSearchCountResponse:function(n,t,i){var u=i.context,r=this.searches.findByKey("text",u.Search);r&&(r.response.DataPage.TotalCount=n.Count,this.setResultsSummary(r),this.activeSearch===r&&this.$summary.html(r.response.ItemsSummary))},setResultsSummary:function(n){var t=n.response.DataPage,i=t.Items.length,r=t.TotalCount!=null?t.TotalCount:"...";n.response.ItemsSummary=i===0?this.config.Messages.NoSearchResults||$rql.i18n.strings.NoData:$f($rql.i18n.strings.RecordNavigatorSummaryFormat,i,r)},renderSearchResults:function(n){if(this.$results.html(this.config.resultsTemplate.render(n.response)),this.$table=this.$results.find("table"),this.$rows=this.$table.find("> tbody > tr"),this.$summary=this.$results.find("[rql-role='searchinplace-summary']"),this.pendingSearch=null,this.activeSearch=n,this.selectedRowIndex=-1,this.hideSpinner(),$rql.api.uiVersion>2){var t=this.$results.find(".dropdown-menu");t&&(this.$input&&this.$input.parents("table.listgrid-table, table.edit-in-grid").length>0&&(this.$parentContainers=$rql.ui.setContainerOverflow(this.$input.closest("div.table-responsive")),this.positionSearchResults(this.$input,t)),t.show())}n.response.DataPage.TotalCount==null&&this.post("queue/count",n.request,n.request).done(this.onSearchCountResponse)},hideSearchResults:function(){$rql.ui.restoreContainerOverflow(this.$parentContainers);this.activeSearch&&(this.activeSearch=null,this.$results.html(""),this.$table=this.$rows=null);this.clearSearchTimeout()},positionSearchResults:function(t,i){var u=t.outerWidth(),f=t.outerHeight(),e={position:"absolute",top:t.position().top+f+"px",left:t.position().left-n(window).scrollLeft()+"px",width:u+"px",overflow:"auto","max-height":"20vh"},r;i.css(e);r=t.closest("div.table-responsive");r.off("scroll").on("scroll",function(){i.css("left",t.position().left-n(window).scrollLeft()+"px")})},cancelSearch:function(){this.pendingSearch=null;this.clearSearchTimeout();this.hideSearchResults();this.hideSpinner()},isCancelable:function(){return this.activeSearch!=null||this.searchTimeoutId!=null||this.valueTouched},clearSearchTimeout:function(){this.searchTimeoutId&&(window.clearTimeout(this.searchTimeoutId),this.searchTimeoutId=null)},clearFocusOutTimeout:function(){this.focusOutTimeoutId&&(window.clearTimeout(this.focusOutTimeoutId),this.focusOutTimeoutId=null)},getSearchText:function(){var n=this.getValue();return n?n:null},onSearchTimeout:function(){var t=this.getValue(),n;t!==this.inputValue&&(this.valueTouched=!0,this.inputValue=t,n=this.getSearchText(),n!=null?this.sendSearchRequest(n):this.hideSearchResults())},onKeyDown:function(i){var r=i.which?i.which:i.name==="key"&&i.data&&i.data.keyCode?i.data.keyCode:0;this.activeSearch&&n.inArray(r,t.specialKeyCodes)!==-1?(this.cancelEvent(i),r===n.ui.keyCode.UP||r===n.ui.keyCode.DOWN?this.selectRow(this.selectedRowIndex+(r===n.ui.keyCode.UP?-1:1)):r===n.ui.keyCode.ENTER&&(this.setSelectedValue(),this.selectedRowIndex>=0?this.hideSearchResults():this.config.CloseOnEnter&&(this.updateValue(null,null),this.hideSearchResults()))):r===n.ui.keyCode.ESCAPE&&this.isCancelable()?(this.cancelEvent(i),this.cancelSearch(),this.updateValue(null,null,!0)):(this.pressedAt=new Date,this.clearSearchTimeout(),this.searchTimeoutId=window.setTimeout(this.onSearchTimeout,1e3))},cancelEvent:function(n){n.preventDefault?(n.preventDefault(),n.stopPropagation()):n.cancel&&n.cancel()},onToggle:function(){this.activeSearch==null&&(this.clearFocusOutTimeout(),this.cancelSearch(),this.sendSearchRequest(""));this.$input&&this.$input.focus()},selectRow:function(t){this.$rows&&this.$rows.length!==0&&(t=t<0?0:t>=this.$rows.length?this.$rows.length-1:t,t!==this.selectedRowIndex&&(this.selectedRowIndex=t,this.$rows.removeClass("selected").eq(this.selectedRowIndex).addClass("selected"),t===0?this.$table.scrollintoview():t===this.$rows.length-1?this.$summary.scrollintoview():n(this.$rows[this.selectedRowIndex]).scrollintoview()))},setSelectedValue:function(){if(this.$rows&&this.selectedRowIndex>=0&&this.selectedRowIndex<this.$rows.length){var n=this.activeSearch.response.DataPage.Items[this.selectedRowIndex],t=this.activeSearch.response.DataPage.Properties.indexOf(this.config.Field),i=t!==-1?n.Values[t]:"";this.updateValue(n.Key,i)}},onRowClick:function(t){t.stopPropagation();var i=n(t.currentTarget);this.selectedRowIndex=i.index();this.setSelectedValue();this.hideSearchResults()},onHeaderRowClick:function(n){n.stopPropagation();this.clearFocusOutTimeout();this.$input&&this.$input.focus()},onBlur:function(){this.$&&this.$.hasClass("testing-blur-off")||(this.captureFormPostbackCounter(),this.focusOutTimeoutId=window.setTimeout(this.processFocusOut,250))},processFocusOut:function(){if(this.focusOutTimeoutId){this.focusOutTimeoutId=null;var n=this.isCancelable();this.cancelSearch();n&&this.updateValue(null,null,!1,this.isFormPostbackCounterChanged())}},captureFormPostbackCounter:function(){var n=this.config.Form;this.formPostbackCounter=n&&n.getPostbackCounter?n.getPostbackCounter():null},isFormPostbackCounterChanged:function(){var n=this.config.Form,t=n&&n.getPostbackCounter?n.getPostbackCounter():null;return t!==this.formPostbackCounter},showSpinnerWithDelay:function(){this.clearSpinnerTimeout();this.spinnerTimeoutId=window.setTimeout(this.showSpinner,100)},clearSpinnerTimeout:function(){this.spinnerTimeoutId&&(window.clearTimeout(this.spinnerTimeoutId),this.spinnerTimeoutId=null)},showSpinner:function(){var n=this.spinnerTimeoutId!=null;this.clearSpinnerTimeout();n&&(this.initializeSpinner(),this.$spinner.show())},hideSpinner:function(){this.clearSpinnerTimeout();this.$spinner.hide()},initializeSpinner:function(){this.spinnerInitialized||($rql.ui.positionSpinner(this.$input,this.$spinner),this.spinnerInitialized=!0)},splitViewName:function(n){var t=n?n.split("."):null;return t&&t.length===2?{AppName:t[0],ViewName:t[1]}:null}};t.registerClass("$rql.ui.behaviors.searchinplace",$rql.ui.behaviors.base)})(jQuery);
(function(n){var t=$rql.ui.behaviors.mention=function(n,i){t.initializeBase(this,[n,i])};$rql.ui.behaviors.mention.attachBehavior=function(n){var t=n.config;n.mentionBehavior&&n.mentionBehavior.dispose();n.mentionBehavior=new $rql.ui.behaviors.mention(n.$,{$:n.$,$input:(n instanceof $rql.ui.controls.richtext)?null:n.$input,richtextEditor:n instanceof $rql.ui.controls.richtext?t.editor:null,StoreId:t.Form.config.ShadowStoreId||t.Form.config.StoreId,View:t.MentionQueue,Field:t.MentionField,SearchLimit:t.MentionLimit?t.MentionLimit:undefined,QueueAccessToken:t.MentionQueueAccessToken,Messages:{NoSearchResults:t.Messages?t.Messages.NoSearchResults:undefined},DualModeRequestOnline:t.DualModeRequestOnline});n.mentionBehavior.setMentions(t.Mentions)};$rql.ui.behaviors.mention.detachBehavior=function(n){n.mentionBehavior&&n.mentionBehavior.dispose()};t.prototype={initialize:function(n){t.callBaseMethod(this,"initialize",[n]);this.mentions=[]},dispose:function(){t.callBaseMethod(this,"dispose")},findMentionById:function(n){var t=this.mentions.filter(function(t){return t.Id===n});return t.length===1?t[0]:null},findMentionByValue:function(n){var t=this.mentions.filter(function(t){return t.Value===n});return t.length===1?t[0]:null},extractMentionsFromText:function(n){for(var t=[],u=/\[~(.+?)\]/g,r,i;(r=u.exec(n))!==null;)i=r[1],t.indexOf(i)===-1&&t.push(i);return t},getMentions:function(){var t=this.extractMentionsFromText(this.getValue()),n=this.mentions.filter(function(n){return t.indexOf(n.Value)!==-1});return n.length!==0?JSON.stringify(n):null},setMentions:function(n){this.mentions=n?JSON.parse(n):[]},updateValue:function(n,t){if(this.replaceSearchText(t),n&&t){var i=this.findMentionById(n);i?i.Value!==t&&(i.Value=t):this.mentions.push({Id:n,Value:t})}},getSearchText:function(){return this.getSearchContext().text},getSearchContext:function(){var e=null,f=null,r=0,s=0,t=null,i=null,h=null,c,o,u;return this.richtextEditor?(c=this.richtextEditor.getSelection(),c&&(o=c.getRanges(),o&&o.length===1&&(u=o[0],u.startOffset>0&&u.startOffset===u.endOffset&&u.startContainer&&u.startContainer.$&&u.startContainer.$.parentElement&&(h=n(u.startContainer.$.parentElement),r=u.startOffset,s=u.endOffset,f=h.text())))):(f=this.$input.val(),r=this.$input[0].selectionStart,s=this.$input[0].selectionEnd),f&&r>=1&&r===s&&(i=f.lastIndexOf("[~",r-1),i!==-1&&(t=/^\[~([ \w.-]+)\]/.exec(f.substring(i)),t||(t=/^\[~([\w.-]+)/.exec(f.substring(i))),t&&i+t[0].length>=r&&(e=t[1])),e||(i=f.lastIndexOf("@",r-1),i!==-1&&(t=/^@([\w.-]*)/.exec(f.substring(i)),t&&i+t[0].length>=r?e=t[1]:t&&r-i<30&&(t=/^@(([\w\.\-]+[ \xA0]?)+)/.exec(f.substring(i,r+1)),t&&i+t[0].length>=r&&(e=t[1].replace(" "," ").trimEnd()))))),t&&e!=null?{text:e,start:i,end:i+t[0].length,$richtextParagraph:h}:{text:null}},replaceSearchText:function(n){var t,r,o,u;if(n&&(t=this.getSearchContext(),t.text!==null)){var f=this.$input?this.$input.val():t.$richtextParagraph?t.$richtextParagraph.text():"",e=f.substr(0,t.start)+"[~"+n+"]"+f.substr(t.end),i=t.start+n.length+3;if(this.$input)this.$input.val(e),this.$input.focus(),this.$input[0].setSelectionRange(i,i);else if(this.richtextEditor){t.$richtextParagraph.text("");r=new CKEDITOR.dom.text(e);o=new CKEDITOR.dom.element(t.$richtextParagraph[0]);o.append(r);try{u=this.richtextEditor.createRange();u.setStart(r,i);u.setEnd(r,i);this.richtextEditor.getSelection().selectRanges([u]);this.richtextEditor.focus()}catch(s){$log.warn("Mentions. Set cursor position failed.",s)}}}}};t.registerClass("$rql.ui.behaviors.mention",$rql.ui.behaviors.searchinplace)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,Key:$rql.ui.controlKey},t=$rql.ui.controls.fileInput=function(n,i){i.SkipRender||t.initializeBase(this,[n,i])};t.prototype={initialize:function(n){this.prepare(n);this.on({change:this.onChange,clear:this.clear,report:this.onReport,uploading:this.onChange,openFileChooser:this.onOpenFileChooser,track:this.track});this.$.on("click","input[type='file']",this.onFileInputClick);this.$.on("cancel","input[type='file']",this.onFileInputCancel);this.render()},prepare:function(t){var r=this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"form/"},i,t),f,u,e;r[r.Mode]=!0;r.Title||(r.Title=r.Report?$rql.i18n.strings.GenerateReport:$rql.i18n.strings.FileSelect);r.FullId=$f("{0}{1}",r.ContextId,r.Id);r.ElementId=this.elementId;r.AndroidOffline=$rql.api.offline&&$rql.api.isAndroid&&webview;r.iOSOffline=!0&&$rql.api.offline&&$rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers;r.IsAnonymous=$rql.api.user.anonymous;r.IsRequired=!r.Optional&&!r.ReadOnly&&!r.ContextIsReadOnly;r.SizeLimit&&(n.isNumeric(r.SizeLimit)?r.SizeLimitBytes=r.SizeLimit:(f=/^(\d+)\s?(\w*)$/g.exec(r.SizeLimit),f&&f.length>1&&(u=parseInt(f[1]),f.length>2&&(e=f[2].toLowerCase(),e.startsWith("k")?u=u*1024:e.startsWith("m")?u=u*1048576:e.startsWith("g")&&(u=u*1073741824)),r.SizeLimitBytes=u)));r.AllowedExtensions&&(r.ValidExtensions=r.AllowedExtensions.toLowerCase().splitAndTrim(","))},dispose:function(){this.$.off();$rql.events.off({resize:this.onResize});t.callBaseMethod(this,"dispose")},track:function(){$rql.api.sendGA4Event("rql_file_download",{app_name:this.config.Form.config.AppName,file_name:this.config.FileName,file_length:this.config.Length,source:"File Control"});this.config.TrackDownload&&$rql.api.trackFirstDownload(this.config.FileId,this.config.Form.config.StoreId)},clear:function(){var t=this;n.extend(this.config,{Empty:!0,Error:!1,ReadOnly:!1});this.render();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){t.config.Form.enable()}))},onChange:function(t){var u=this.$.find("#uploadForm"),i=this.config,r,f;i.Form.disable();try{if(i.$iframe=n(n.find($f("iframe[name='Uploader{0}']",this.config.Form.uploaderId))),i.$iframe&&i.$iframe.bind("load",this.responseReady),i.AllowedExtensions&&(r=t.currentTarget.value,r&&(f=r.slice(r.lastIndexOf(".")).toLowerCase(),!i.ValidExtensions.contains(f))))return i.Form.enable(),i.Error=!0,i.Errors=[{InvalidFileExtension:!0}],this.render(),!1;u[0].submit();u.hide();this.$.find("#uploadProgress").show()}catch(t){alert(t)}},responseReady:function(){n("ErrorCode",this.config.$iframe.contents()).text()!=""&&(this.config.$iframe.contents().find("ErrorCode").html(""),this.config.Error=!0,this.onUploaded())},onFileInputClick:function(){this.registerBlockingActivityStart()},onFileInputCancel:function(){this.registerBlockingActivityStop()},onOpenFileChooser:function(){var n,t,i;if(this.registerBlockingActivityStart(),$rql.api.offline&&$rql.api.isAndroid&&webview&&webview.uploadFile(this.config.ElementId,this.config.Form?this.config.Form.config.StoreId:null,this.config.SizeLimitBytes,this.config.ImageResolution||null),this.config.iOSOffline){n=this.$.find("#uploadForm");t=this.config;t.Form.disable();n.hide();this.$.find("#uploadProgress").show();i=$f("file|{0}|{1}|{2}|{3}|{4}|{5}|{6}",this.config.ElementId,this.config.Form?this.config.Form.config.StoreId:null,this.config.SizeLimitBytes?this.config.SizeLimitBytes.toString():"",this.config.AllowedExtensions,this.config.ImageResolution,this.config.DefaultFileName,this.config.AllowMultiple);window.webkit.messageHandlers.nativeBridge.postMessage(i);return}},onReport:function(t){var i=this.config,u=i.Form.config,r=this;$rql.isEvent(t)?this.config.Form.refreshWithCustomCallBack($f("[rql-id='{0}']",this.$.attr("rql-id")),"onPostBackReport"):(n.extend(this.config,{Empty:!1,ReadOnly:!1},t),this.render(),this.$.attr("postback")&&this.$.attr("postback")==="true"&&(this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){r.config.Form.enable()})))},onPostBackReport:function(){var t=this.config,n=t.Form.config,i=this;this.$.find("button[rql-action='report']").hide();this.$.find("#uploadProgress").show();this.post("report",{StoreId:n.ShadowStoreId||n.StoreId,ReportId:t.FullId,ViewName:n.ViewName,WorkbookId:n.WorkbookId},null).done(this.onReport)},onUploaded:function(t){var c=["InvalidFileExtension","LimitExceeded","FileTypeInvalid","FileNotAllowed"],u,i,e,f,o,r,s,h;if(this.registerBlockingActivityStop(),u=this,i=this.config,i.$iframe&&i.$iframe.unbind("load",this.responseReady),this.$.find("#uploadProgress").hide(),t&&t.Canceled)this.render(),i.Form.enable();else if(i.AllowMultiple){if(t){if(t.Errors&&t.Errors.length>0){for(i.Errors=[],r=0;r<t.Errors.length;r++)f=t.Errors[r],o={FileName:f.FileName,Length:f.Length},o[f.ErrorType]=!0,i.Errors.push(o);i.Error=!0}if(i.AndroidOffline&&(t.ArtifactResponses=[{ContentType:t.ContentType,Date:t.Date,FileId:t.FileId,FileName:t.FileName,Length:t.Length}]),t.ArtifactResponses&&t.ArtifactResponses.length>0){for(r=0;r<t.ArtifactResponses.length;r++)s=t.ArtifactResponses[r],$rql.api.sendGA4Event("rql_file_upload",{app_name:i.Form.config.AppName,file_name:s.FileName,file_length:s.Length,source:"File Control"});(i.Error||i.Errors)&&(i.Form.MultiFileUploadErrors||(i.Form.MultiFileUploadErrors=[]),i.Form.MultiFileUploadErrors.push({Id:i.Id,Errors:i.Errors}));h=new $rql.ui.components.valueCollection;h.add($f("__file_{0}",i.Id),"MultiFileUpload|"+JSON.stringify({ListControlXPath:i.MultipleListSelect,ListFileControlId:i.MultipleListFileId,ListTextControlId:i.MultipleListFileDescriptionId,ListTextControlValue:i.MultipleListFileDescription,ArtifactResponses:t.ArtifactResponses}));u.triggerOnUpdate();i.Form.update(h,function(){u.config.Form.enable()})}else u.render(),i.Form.enable()}}else{if(t)if(t.Error){for(r=0;r<c.length;r++)delete i[c[r]];i.Error=!0;e={};t.ErrorType&&(e[t.ErrorType]=!0);i.Errors=[e]}else n.extend(i,{Empty:!1,ReadOnly:!1},t),$rql.api.sendGA4Event("rql_file_upload",{app_name:i.Form.config.AppName,file_name:i.FileName,file_length:i.Length,source:"File Control"});this.render();i.Form.enable();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(i.Form.disable(),this.triggerOnUpdate(),i.Form.update(new $rql.ui.components.valueCollection,function(){u.config.Form.enable()}))}},render:function(){var i,t,u,r;this.config.FileName&&(this.config.FileText=null,i=this.config.FileName.split(".").pop(),i=i?i.toLowerCase():i,!i||i=="jpg"||i=="jpeg"||i=="png"||i=="gif"||(this.config.FileText=i.toUpperCase()));t=this.config;t.Size=isNaN(t.Length)?$rql.i18n.strings.UnknownSize:$f("{0:n0} KB",Math.ceil(t.Length/1024));t.Value=t.Empty?null:$f("{0}|{1}|{2}|{3}|{4}|{5}",t.FileName,t.FileId,t.FileId,t.ContentType,t.Length?t.Length.toString():"",t.Date);t.isIOS=$rql.api.isIOS;u=t.Form?t.Form.config.StoreId:null;t.Form&&t.Form.MultiFileUploadErrors&&(r=t.Form.MultiFileUploadErrors.findByKey("Id",t.Id),r&&(t.Error=!0,t.Errors=r.Errors,t.Form.MultiFileUploadErrors.remove(function(n){return n.Id===t.Id})));!t.AllowMultiple||t.MultipleListSelect||t.MultipleListFileId||(t.AllowMultiple=!1);t.AllowMultiple&&(t.Empty=!0);this.parseFileOptions();this.$.empty().append($rql.ui.templates("file").render(n.extend({},t,{StoreId:u}))).show();this.widgetize();$rql.events.on({resize:this.onResize});t.Error&&t.InvalidFileExtension&&(delete t.Error,delete t.InvalidFileExtension)},onRendered:function(){this.resizeByBreakpoint()},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)},onResize:function(){var t=this;n(window).doTimeout("file_resize",250,t.resizeByBreakpoint)},resizeByBreakpoint:function(){var t=this.config,u,i,r,n,f;if(t.FileNameStyles&&t.FileNameStyles.BreakpointStyles){for(u=$rql.ui.supportedMediaBreakpoints(),i="",r=0;r<u.length;r++)if(n=u[r],t.FileNameStyles.BreakpointStyles["style-"+n])if(n=="xs"&&$rql.ui.checkMediaBreakpoint(n,"lesser")){i=t.FileNameStyles.BreakpointStyles["style-"+n];break}else $rql.ui.checkMediaBreakpoint(n,"greater")&&(i=t.FileNameStyles.BreakpointStyles["style-"+n]);i&&(f=this.$.find('[rql-role="filename-container"]'),f.attr("style",i))}},parseFileOptions:function(){var f=this.config,i={ShowDelete:!0,ShowDownload:!0,DeleteHtml:null,DownloadHtml:null},r={},t,e,u,o;if(f.Options&&(t=f.Options.parseOptionsAsObject(!0,!0),t.icons&&(i.ShowDelete&=t.icons.showdelete,i.ShowDownload&=t.icons.showdownload,i.DeleteHtml=t.icons.deletehtml,i.DownloadHtml=t.icons.downloadhtml),t.filename)){for(r.Ellipsis=t.filename.ellipsis,e=Object.keys(t.filename).filter(function(n){return n.indexOf("style")>-1}),r.BreakpointStyles={},u=0;u<e.length;u++)o=e[u],r.BreakpointStyles[o]=t.filename[o];t.filename.containercss&&(r.UiStyle=t.filename.containercss)}n.extend(f,{IconOptions:i,FileNameStyles:r})}};t.registerClass("$rql.ui.controls.fileInput",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.tree=function(n,i){t.initializeBase(this,[n,i])};t.prototype={close:function(n){return this.toggle(n,"hide")},emptyNode:function(n){var t=this.config;this.getNode(n,function(n){n.$toggle.attr("class",t.emptyIcon);n.$tree.empty()})},getNode:function(n,t){var i=this;window.waitfor(function(){return i.$.find($f("[rql-node='{0}']",n)).length},1,100,0,"getNode()",function(){var r=i.$.find($f("[rql-node='{0}']",n)),u=r.attrs();t({id:n,path:u.rql.path,loaded:$rql.bool(u.rql.loaded),open:u.rql.state=="open",state:u.rql.state,$:r,$toggle:r.find("[rql-role=toggle-button]").first(),$label:r.find("[rql-role=label]").first(),$header:r.find("[rql-role=header]").first(),$tree:r.find("[rql-tree]").first()})},20)},getNodeFromEvent:function(t,i){var u=n(t.target).is("i")?n(t.currentTarget):n(t.target),r=u.attrs("rql-node","rql-role"),f=r.rql.role=="label"?r.rql.node:$rql.isNull(r.rql.tree,u.find("[rql-tree]").first().attr("rql-tree"));this.getNode(f,function(n){n.event=t;i(n)})},hideNode:function(n){this.getNode(n,function(n){n.$.hide()})},initialize:function(t){var u=$rql.ui.templates("tree"),i=$rql.api.uiVersion>2,r=this.config=n.extend({id:$rql.isNull(this.$.attr("id"),$rql.newId()),activeClass:"active",closedIcon:i?"fas fa-chevron-down":"icon-plus",emptyIcon:"icon-empty",openIcon:i?"fas fa-chevron-up":"icon-minus",partials:{nodes:u.html},template:u,isFabric:i,randomId:function(){return $rql.newId()}},t);this.$.attr("id",r.id).on("click","[rql-role='label']",this.onClick).on(r.isFabric?"shown.bs.collapse":"shown",this.onShown).on(r.isFabric?"hidden.bs.collapse":"hidden",this.onHidden);this.onInitialize&&this.onInitialize()},onClick:function(n){var t=this;return this.getNodeFromEvent(n,function(n){t.clicked(n);t.select(n)}),this},onHidden:function(n){var t=this;this.getNodeFromEvent(n,function(n){t.onToggle(n).hidden(n)})},onShown:function(n){var t=this;this.getNodeFromEvent(n,function(n){t.onToggle(n).shown(n);n.$.attr("rql-loaded","yes")})},onToggle:function(n){var t=this.config;return n.$toggle.toggleClass(t.closedIcon+" "+t.openIcon),n.$.attr("rql-state",n.open?"closed":"open"),this},open:function(n){return this.toggle(n,"show")},refresh:function(n){return this.getNode(n,function(n){n.$.attr("rql-loaded",null)}),this.close(n)},render:function(){this.widgetize()},onRendered:function(){this.shown({$tree:this.$})},renderNodes:function(n){return this.config.template.render({config:this.config,nodes:n,visible:!0},this.config.partials)},select:function(n){var t=this.config.activeClass,i=this,r=n;return $rql.isString(n)?this.getNode(n,function(n){i.$.find("."+t).removeClass(t);n.$header.addClass(t)}):(this.$.find("."+t).removeClass(t),r.$header.addClass(t)),this},toggle:function(n,t){return this.getNode(n,function(n){t&&t!=(n.open?"hide":"show")||n.$toggle.click()}),this},update:function(n,t){if(arguments.length>1)this.$.find($f("[rql-node='{0}'] [rql-role=label]",n)).first().html(t);else for(n in arguments[0])this.$.find($f("[rql-node='{0}'] [rql-role=label]",n)).first().html(arguments[0][n])}};t.registerClass("$rql.ui.controls.tree",$rql.ui.controls.view)})(jQuery);
(function(n){function i(t,i,u,f,e){var l,y,v;if(t){var h=n(t),o=h.attrs(),c,s,a=!1;if(t.tagName==="BUTTON"&&o.rql.action!=="update")return;if(o&&o.rql&&(o.rql.type==="Place"||o.rql.role==="readonlyvalue"||o.rql.contenttype==="html"))return;(!h.prop("disabled")||h.prop("disabled")&&h.hasClass("js-loading")||o.rql.role==="datepicker"||h.hasClass("dwtd"))&&o&&o.rql&&o.rql.id&&(!o.rql.role||o.rql.role!=="timer")&&(o.rql.type==="Timestamp"?(c=o.rql.id,s=o.rql.value?$rql.api.dataTypes.DateTime.toJson($rql.api.dataTypes.Timestamp.fromJson(o.rql.value))+(o.rql.omittimezone?"":";"+$rql.isNull(o.rql.timezone,(new Date).getTimeZone().Id)):""):o.rql.type==="DateTime"?(c=o.rql.id,s=o.rql.value?o.rql.value+(o.rql.omittimezone?"":";"+$rql.isNull(o.rql.timezone,(new Date).getTimeZone().Id)):""):o.rql.type==="Date"?(c=o.rql.id,s=o.rql.value||""):t.type==="radio"?(c=o.rql.id+"|o",s=h.rqlval(),s&&h.closest("div[rql-role='option-group']").is("[rql-dynamic='Yes']")&&(y=$rql.api.uiVersion>2?h.next("label").find("span"):h.next("span"),l=n.trim(y.text()),l&&(s=s+$f("||t={0}||",l))),a=!0):(c=o.rql.id,(t.options||t.type==="checkbox")&&(c+="|o"),o.rql.explicitmask&&o.rql.type==="text"&&$rql.ui.get(t).stripValue(),s=!e||o.rql.explicitmask||$rql.isUndefined(o.rql.initialvalue)?h.rqlval():o.rql.initialvalue,s&&h.is("select")&&o.rql.dynamic==="Yes"&&(l=n.trim(h.find("option:selected").text()),l&&(s=s+$f("||t={0}||",l)))),r(h)||(i.registerControlId(c),(!a||s)&&(t.options||t.type==="checkbox"?i.add(c,o.rql.isdefault&&f?s+"*":s,a):i.add(c,o.rql.isdefault&&f?"":s,a),i.processControlWithDefault(h,!f&&o.rql.isdefault&&s!=null&&s!==""))),u&&o.rql.value&&(v=$rql.ui.get(t),v&&o.rql.explicitmask&&v.adjustValue()))}}function r(n){return!n||n.length===0?!1:!n.is(":visible")&&n.closest(".d-xs-none, .d-sm-none, .d-md-none, .d-lg-none, .d-xl-none").length>0?!0:!1}function u(t,i,r){var e,s,o,u;if(t&&i)for(e=n(t),s=e.attrs(),o=0;o<i.length;o++){var h=i[o].split("="),c=h[0],f=h[1];if(t.options||t.type==="checkbox"||t.type==="radio")if(c.startsWith("__dropdownLookup"))for(f=f.split("|")[0],u=0;u<t.options.length;u++)n(t.options[u]).removeAttr("selected"),f&&f==t.options[u].value&&(n(t.options[u]).attr("selected",""),n(t.options[u]).prop("selected",!0));else if(c===s.rql.id+"|o")if(t.options)for(u=0;u<t.options.length;u++)n(t.options[u]).removeAttr("selected"),f&&f==t.options[u].value&&(n(t.options[u]).attr("selected",""),n(t.options[u]).prop("selected",!0));else t.type==="radio"?r.$.find($f("input[name='{0}']",s.rql.id)).each(function(){var t=n(this),i=t.attrs();t.removeAttr("checked");f!==""&&i.rql.value===f&&t.attr("checked","checked")}):f=="true"?e.attr("checked","checked"):e.removeAttr("checked")}}function f(n,t,i){var f=[],u,o,e,r;if(n.data.length!==t.data.length){try{$log.info("Loaded values (count='"+t.data.length+"):");console.log(t.data);$log.info("Current values (count='"+n.data.length+"):");console.log(n.data);$log.info("Delta:");o=t.data.filter(function(t){return!n.data.includes(t)});console.log(o)}catch(s){}$log.warn($rql.i18n.strings.ValueCountMismatch)}else if(i==="by-value")for(u=0;u<n.data.length;u++)e=n.data[u],t.data.indexOf(e)===-1&&f.add(e);else for(u=0;u<n.data.length;u++)n.data[u]!==t.data[u]&&f.add(n.data[u]);for(r in n.dict)t.dict[r]!==n.dict[r]&&f.add(r+"="+n.dict[r]);for(r in t.dict)$rql.bool(t.dict[r])&&!n.dict[r]&&(n.isControlIdRegistered(r)?f.add(r+"="):$log.warn($f("A new value of a control was not collected. Control ID: {0}. Old Value: {1}.",r,t.dict[r])));return f}var t=$rql.ui.controls.storeview=function(n,i){t.initializeBase(this,[n,i]);this.controlResetter=$rql.ui.controlresetter?new $rql.ui.controlresetter:null};t.prototype={collectInvalidFields:function(t){t||(t=this.$);var r=this.invalidFields={fields:{},length:0},i=0;t.find(".error input, .error select, .input-error").each(function(){var u=n(this),t=u.attrs();t.rql&&t.rql.id&&(r.fields[i]=t.rql.id);i++});r.length=i},combineResponseErrorMessages:function(n){var t={All:null,Fatal:null,NonFatal:null},r,i;if(n&&n.length!==0)for(r=0;r<n.length;r++)i=n[r],i&&i.Text&&(i.IsFatal?(t.Fatal=t.Fatal?t.Fatal+"\n\n":"",t.Fatal+=i.Text):(t.All=t.All?t.All+"\n\n":"",t.All+=i.Text,t.NonFatal=t.NonFatal?t.NonFatal+"\n\n":"",t.NonFatal+=i.Text));return t},createStoreViewRequest:function(t){var i=this.config,u=(new Date).getTimeZone(),r=n.extend({StoreId:i.StoreId,AppName:i.AppName,ViewName:i.ViewName,TimeZone:u.Id,TimeZoneOffset:u.dstEnabled?u.DstOffset:u.Offset,TimeZoneDaylightSaving:(new Date).isDstObserved(),AntiforgeryXsrfToken:$rql.api.antiforgeryXsrfToken},t),e,f;return i.Context&&i.Context!==i.StoreId&&i.Context.StoreId!=="profile"&&(r.Context=i.Context),this.PageFilterValues&&this.PageFilterValues.length!==0&&(r.PageFilters=this.PageFilterValues),this.DrillDownContext&&(r.DrillDownContext=this.DrillDownContext),e=$f("{0}:RQL_Active_Queue_Sets",i.AppName),f=this.getViewSetting(e,!1,!0),f&&(r.ActiveSets=f),r},collectValues:function(t,r,u,f){var e="#"+this.elementId,o=n(e+" [rql-embed]").add(n(e+" [rql-embed-control]"));return n(e+" form [rql-id]:not('[no-collect]')").each(function(){if(o.length>0)for(var e=0;e<o.length;e++)if(n.contains(o[e],this))return;i(this,t,r,u,f)}),this.raise("collectValues",{excludeDefaults:u,values:t}),this},newValueCollection:function(){return new $rql.ui.components.valueCollection},getViewSettings:function(){$rql.api.user.anonymous&&(this.config.StoreId=$rql.isNull(this.getViewSetting("StoreId"),this.config.StoreId))},getUpdates:function(n,t,i){return $rql.api.getUpdates(n,t,i)},initialize:function(){this.on({refresh:this.refresh,refreshConnectionError:this.refreshConnectionError,optionChanged:this.onImageOptionChanged,customStyleOptionChanged:this.onCustomStyleOptionChanged,showModal:this.onShowModal,popupImage:this.onPopupImage})},dispose:function(){this.disposeMonitorManager();t.callBaseMethod(this,"dispose")},isForm:function(){return this.config&&this.config.Type==="Form"},onBulkSelectionChanged:function(n){this.raise("bulkSelectionChanged",n)},onPageHidden:function(){this.monitorManager&&this.monitorManager.suspend()},onPageShown:function(){this.monitorManager&&this.monitorManager.restart()},manageMonitors:function(n){var t=this.config;t!=null&&t.StoreId&&t.ViewName&&n&&!this.monitorManager&&(this.monitorManager=new $rql.ui.controls.monitormanager({storeId:t.StoreId,viewName:t.ViewName,context:t.Context,appName:t.AppName}).on("action",this.onMonitorAction));this.monitorManager&&this.monitorManager.start(n)},disposeMonitorManager:function(){this.monitorManager&&(this.monitorManager.dispose(),this.monitorManager=null)},onMonitorAction:function(n){n&&(n.action==="Refresh"?this.refresh():n.action==="Reload"?$rql.api.reload():n.action==="Navigate"&&n.navigateUrl&&$rql.api.navigate(n.navigateUrl))},onError:function(n){(n&&n.context&&clearTimeout(n.context.disableTimeout),n&&n.status===0&&n.readyState===0&&n.statusText==="error")||(this.removeControlOverlay&&($rql.ui.removeContainerOverlay(this.removeControlOverlay),delete this.removeControlOverlay),this.enable().error(n))},onCancelChanges:function(n,t){var i=t.rql.updates,f=t.rql.currentTarget,u,r;i||(u=this.values,r=this.newValueCollection(),this.collectValues(r),i=$rql.api.getUpdates(u,r));$rql.api.restoreValue(f,i,this);this.collectValues(this.values=this.newValueCollection(),!0,!0)},hasEmbedFormUpdates:function(){var i,n,t,r;if(this.config.EmbedFormList&&this.config.EmbedFormList.length>0)for(n=0;n<this.config.EmbedFormList.length;n++)if(t=this.config.EmbedFormList[n],t.loadedRaised&&(r=t.getUpdatesInternally(),i=r.length>0||t.hasPendingUpdates,i))break;return i},onImageOptionChanged:function(t,i){var u,f,o,e,r,s,h;try{if(u=t.target.attributes["rql-value"],f={rql:{}},u){if(!i&&this.hasEmbedFormUpdates()&&(f.rql.confirm=$rql.i18n.strings.UnsavedChangesConfirmation),!i&&this.confirmationIsRequired(t,f,this.onImageOptionChanged))return;for(o=n(t.target),e=n(t.currentTarget).find($f("input[rql-id='{0}']",t.currentTarget.attributes["rql-context"].value)).val(u.value).end().find("img"),o.removeClass("opacity-50").addClass("opacity-100"),r=0;r<e.length;r++)(s=e[r])!==t.target&&n(s).removeClass("opacity-100").addClass("opacity-50");(h=t.target.attributes["rql-topic"])&&this.navigateToTopicById?this.navigateToTopicById(h.value):this.save(this.isForm()?null:t)}}catch(c){$log.warn(c)}},onCustomStyleOptionChanged:function(t){var e,f;try{if(e=t.target.attributes["rql-value"],e){var o=n(t.target),i,r,h=$rql.api.uiVersion>2?o.next("label"):o.closest("label"),s=n(t.currentTarget).find($f("input[rql-id='{0}']",t.currentTarget.attributes["rql-context"].value)),u;for(f=0;f<s.length;f++)(u=s[f])!==t.target&&(i=u.attributes["rql-checked-context"].value,r=u.attributes["rql-unchecked-context"].value,$rql.api.uiVersion>2?n(u).next("label").removeClass(i).addClass(r):n(u).closest("label").removeClass(i).addClass(r));i=t.target.attributes["rql-checked-context"].value;r=t.target.attributes["rql-unchecked-context"].value;h.removeClass(r).addClass(i)}}catch(c){$log.warn(c)}},onShowModal:function(t){var r=n(t.currentTarget),u=r.parents("#edit-in-place-dialog").length>0,i=r.attr("href");i&&i.length>1&&(i[0]==="#"&&(i=i.substring(1)),this.showModal(r,i,u));t.stopPropagation();this.config.isFabric&&t.preventDefault()},hideModal:function(){var t="#"+this.ModalId,i=this.$ModalElement,r,n;i&&t&&(r=i.attr("rql-context"),n=this.$.find($f("div[rql-context='{0}']",r)).filter(t),n||(n=i.closest("div").find(t)),n.length===0&&(n=this.$.closest("#mainViewContainer").find("#"+t[0]=="#"?t.substring(1):t)),n&&n.length>0&&n.modal("hide"))},showModal:function(t,i,r,u,f){var s,o,e,h;(r||this.hideModals(!0),t&&i)&&(s=t.attr("rql-context"),o=f&&f.length>0?f.find($f("div[rql-context='{0}']",s)).filter("#"+i):this.$.find($f("div[rql-context='{0}']",s)).filter("#"+i),o.length===0&&(o=t.closest("div").find("#"+i)),o.length===0&&(o=this.$.find("div[rql-role='modal']").filter("#"+i)),o.length===0&&(o=this.$.closest("#mainViewContainer").find("#"+i)),o&&o.length>0&&(e=this,u&&o.css("pointer-events","none"),this.$.closest(".edit-in-place > td > .zindex-overlay").length>0&&(this.$editInPlaceOverlay=this.$.closest(".edit-in-place > td > .zindex-overlay"),this.$editInPlaceOverlay.removeClass("zindex-overlay")),this.ModalId=i,this.$ModalElement=t,$rql.ui.showModal(o,{onShown:function(){$rql.isUndefined(e.PreviousHash)&&(e.PreviousHash=window.location.hash)},onHidden:function(){e.$editInPlaceOverlay&&e.$editInPlaceOverlay.addClass("zindex-overlay");(!$rql.isUndefined(e.PreviousHash)&&window.location.hash!==""&&e.PreviousHash!==window.location.hash&&(Sys.Browser.name!=="Microsoft Internet Explorer"&&Sys.Browser.version!=="9"||Sys.Browser.name==="Microsoft Internet Explorer"&&Sys.Browser.version>"9")||!$rql.isUndefined(e.PreviousHash)&&Sys.Browser.name==="Microsoft Internet Explorer"&&Sys.Browser.version<="9"&&e.PreviousHash!==window.location.hash)&&window.history.go(-1);e.PreviousHash=undefined;e.ModalId=null;e.$ModalElement=null;e.$ModalParent=null}}),h=o.find($f("div[rql-embed][rql-skipWidgetizing='true'][rql-modal-id='{0}']",i)),h.each(function(){n(this).removeAttr("rql-skipWidgetizing").removeAttr("rql-modal-id");e.widgets.embed.h(this,e)})))},confirmationIsRequired:function(t,i,r,u){return i&&i.rql&&i.rql.confirm?(t=n.browser.msie&&parseInt(n.browser.version)===8?n.extend(!0,{},t):t,$rql.ui.confirm($rql.isNull(i.rql.confirm,$rql.i18n.strings.SaveChanges),"",function(){r(t,!0)},u?function(){u(t,i)}:null),t.stopPropagation(),!0):!1},onWidgetize:function(t){var r=this,h=r.config,f,o,u,e,s,i;this.isForm()&&(f=this.$.find("div[rql-role='button-container']"),o=r.$.find("div[rql-role='form'] button[rql-id]:not([rql-position=inline]):not([rql-editable])").filter(function(t,i){return!$rql.ui.isParentPositionOf(n(i),"fixed")&&n(i).parents("[rql-groupcontrols='true']").length===0}),f.append(o),f.children("button[disabled]").remove());u=[];e=[];for(s in this.widgets)i=this.widgets[s],i&&i.s&&i.h&&this.$.find(i.s).each(function(){var n=this,t=i;e.push(new Promise(function(i){var f=t.h(n,r,h.widgetEvents);f&&u.push(f);i("rendered")}))});Promise.all(e).then(function(){r.$.find("a[rel='ChillBox']").has(">img").attr("rql-action","popupImage");n(u).each(function(n,t){if(t.onPageControlsRendered)t.onPageControlsRendered(n,u)});t&&t()})},onPopupImage:function(t){t.stopPropagation();t.preventDefault();var i=n(t.currentTarget);new $rql.ui.controls.gallerypopup({images:[{url:i.attr("href"),title:i.attr("title")}]}).show()},processResponseErrors:function(n){if(n&&n.Errors){var t=this.combineResponseErrorMessages(n.Errors);t&&t.NonFatal&&$rql.ui.error(t.NonFatal,$rql.i18n.strings.Error);t&&t.Fatal&&$log.error(t.Fatal)}},render:function(){this.refresh()},revalidateInvalidFields:function(){var i,t;if(this.invalidFields&&this.invalidFields.length>0){for(i=0;i<this.invalidFields.length;i++)t=n('[rql-id="'+this.invalidFields.fields[i]+'"]'),t.is("input:not(:radio):not(:checkbox)")?$rql.ui.get(t)&&$rql.ui.get(t).validate():t.is("select")?$rql.ui.get(t).validate(t.children(":selected")):t.is(":radio, :checkbox")&&(t.closest(this.config.FormClasses.parent).find(":checked").length>0?$rql.ui.get(t).onValSuccess():$rql.ui.get(t).onValFail());this.invalidFields={}}},setViewSettings:function(){$rql.api.user.anonymous&&this.setViewSetting("StoreId",this.config.StoreId,!0)},unRegisterTimer:function(t){var i,u,f=$rql.api.uiVersion>2,r;this.config.Form===!0||this.config.Form&&this.config.Form.config.IsEmbed?(i=this.config,u=this.$timersCount):(r=this.config.IsEmbed?this.config.Form.page:this.page,i=r.app?r.app.config:r.config,u=this.isMobile()||f||!r.app?this.$timersCount:r.app.$timersCount);i.timers&&i.timers[t]&&(i.timers[t].Active=!1,u&&u.text(n.grep(i.timers,function(n){return n.Active}).length))},hideTimer:function(t){var i,u,o=$rql.api.uiVersion>2,r,f,s,e;this.config.Form===!0||this.config.Form&&this.config.Form.config.IsEmbed?(i=this.config,u=this.$timersMonitor):(r=this.config.IsEmbed?this.config.Form.page:this.page,i=r.app?r.app.config:r.config,u=this.isMobile()||o||!r.app?this.$timersMonitor:r.app.$timersMonitor);i.timers&&i.timers[t]&&(f=i.timers[t].Control,i.timers[t].Hidden=!0,f.$.css("display","none"),f.config.Hidden=!0,s=n.grep(i.timers,function(n){return!n.Hidden}).length,s<=0&&(u.find('ul[rql-role="active-timers"] li:first').css("display","block"),this.isMobile()&&!o&&(e=this.$.find('div[rql-role="mobile-workbookbar"]>a>i.icon-time'),e&&e.removeClass("success"))))},registerTimer:function(t){var i,u,s,e=$rql.api.uiVersion>2,f,r,c,l,a,h,o;this.config.Form===!0||this.config.Form&&this.config.Form.config.IsEmbed?(i=this.config,u=this.$timersMonitor,s=this.$timersCount):(f=this.config.IsEmbed?this.config.Form.page:this.page,i=f.app?f.app.config:f.config,u=this.isMobile()||e||!f.app?this.$timersMonitor:f.app.$timersMonitor,s=this.isMobile()||e||!f.app?this.$timersCount:f.app.$timersCount);i.timers||(i.timers=[]);r=undefined;this.isForm()?i.timers.add(i.timers[r]={Active:!1}):(c=n.extend({},t.config,{IsRunning:!0,IsMonitor:!0,Hidden:!1,Timer:t}),l=this.isMobile()&&!e?u:u.find('ul[rql-role="active-timers"] li:first'),r=t.config.TimerId,i.timers[r]?(l.css("display","none"),h=i.timers[r].Control,i.timers[r].Active=!0,i.timers[r].Hidden=!1,h.initialize(c)):(this.isMobile()&&!e?u.append($f('<div id="monitor_{0}"><\/div>',r)):l.css("display","none").clone().css("display","block").empty().append($f('<div id="monitor_{0}"><\/div>',r)).appendTo('ul[rql-role="active-timers"]'),a=u.find($f('div[id="monitor_{0}"]',r)),h=new $rql.ui.controls.timer(a,c),i.timers.add(i.timers[r]={Active:!0,Control:h,Hidden:!1})),e?u.removeClass("w-0"):u.css("display","block"),s&&s.text(n.grep(i.timers,function(n){return n.Active}).length),this.isMobile()&&!e&&(o=this.$.find('div[rql-role="mobile-workbookbar"]>a').has("i.icon-cog"),o.length>0&&(o.has("i.icon-time").length>0?o.children("i.icon-time").addClass("success"):o.append(' <i class="icon-time success large"><\/i>'))));this.config.TimerTimeout||this.timerTimeout()},timerTimeout:function(){var t,n,i,r;(this.config.Form===!0||this.config.Form&&this.config.Form.config.IsEmbed?t=this.config:(n=this.config.IsEmbed?this.config.Form.page:this.page,t=n.app?n.app.config:n.config),i=t.timers,r=this,this.config.TimerTimeout=null,Object.keys(i).length!==0)&&(this.raise("timerTimeout",{}),this.config.TimerTimeout=setTimeout(function(){r.timerTimeout()},1e3))},disposeTimers:function(){var n,i,t;if(this.config.Form===!0||this.config.Form&&this.config.Form.config.IsEmbed?n=this.config:(i=this.config.IsEmbed?this.config.Form.page:this.page,n=i.app?i.app.config:i.config),n&&n.timers){for(t=0;t<n.timers.length;t++)n.timers[t].Control&&n.timers[t].Control.dispose();n.timers=[]}},validateForm:function(){var t=0,i=this.config.FormClasses.parent,r=this.config.FormClasses.error,u=this.config.FormClasses.valid;return this.$.find("[rql-required]").each(function(){if(n(this).is("input:not(:radio):not(:checkbox), select")){var f=$rql.ui.get(n(this));n(this).is("input:not(:radio):not(:checkbox)")?f.validate()||t++:f.validate(n(this).children(":selected").val())||t++}else n(this).parent(i).find(":checked").length===0?(n(this).parent(i).addClass(r).removeClass(u),t++):n(this).parent(i).removeClass(r).addClass(u)}),n(".error").find("input, select").filter(":eq(0)").focus(),t===0?!0:!1},getControlId:function(n){if(!n)return"";if(n.is("span.select2-selection[role='combobox']"))return n.closest(".md-form").find("select").attr("rql-id");var t=n.attr("rql-id")||n.closest("div[rql-id]").attr("rql-id");return t||(t=n.attr("rql-focusid")||n.closest("div[rql-focusid]").attr("rql-focusid")),t&&t.indexOf("__expression__")===0&&(t=t.substring(14)),t},findControlAndGetNextControlId:function(t,i,r){var f=null,e="currentfocus",u,o;return this.config.InlineNext&&(e=this.config.InlineNext.toLowerCase()),u=i.find("[rql-id='"+t+"']"),u.length===0&&(u=i.find("[rql-focusid='"+t+"']")),u.length!==0&&u.is("div")&&!u.attr("rql-next")&&u.attr("rql-type")&&!u.attr("rql-type").endsWith("Lookup")&&(u=u.find("[rql-next]").filter(":checked"),u.length===0&&(u=u.end())),u.length!==0&&u.is(":radio")&&(u=u.filter(":checked")),u.length!==0?(o=n(u[0]),o.is("select")&&(f=o.find(":checked").attr("rql-next")),f||(f=o.attr("rql-next")),f||(e==="*"?f="*":e==="top"?f=r?"__rql-top__":"*":e==="currentfocus"&&(f=t)),f==="*"&&(f=t+"*")):e&&(e==="*"?f=t+"*":e==="top"?f="__rql-top__":e==="currentfocus"&&(f=t)),f},getNextControlId:function(n){var t=null,i;return n.is("select")&&(t=n.find(":selected").attr("rql-next")),t||(t=n.attr("rql-next")),t||(n.attr("rql-id")||"").indexOf("__expression__")!==0||(n=this.$.find($f("[rql-id='{0}']",n.attr("rql-id").substring(14))),t=n.attr("rql-next")),t==="*"&&(i=n.attr("rql-id")||n.closest("div[rql-controlgroup='yes']").attr("rql-id"),t=i?i+"*":null),t},findFocusableControl:function(t,i,r){var u=null,v,y,e,f,b,o,s,c,l,a;if(t&&i){if(v=t.substr(-1)==="*",v&&(t=t.substr(0,t.length-1)),u=i.find("[rql-id='"+t+"']"),u.length>0&&u.attr("rql-role")!=="hidden-focusable"&&(u=i.find("[rql-id='"+t+"']:visible")),u.length===0&&(u=i.find("[rql-focusid='"+t+"']:visible")),u.length>1&&(u.is(":radio")?(y=u.filter(":checked"),u=y.length>0?y:n(u[0])):u=n(u[0])),u&&v){var h=u.closest("div[rql-controlgroup='yes'],div[rql-id2]"),p=h.hasClass("checkbox-group"),w=!1;if(p)for(e=h.find("input:checkbox"),f=0;f<e.length;f++)if(b=e[f].getAttribute("rql-id"),t===b){f===e.length-1?w=!0:u=n(e[f+1]);break}if((!p||w)&&(o=i.find("[rql-id]").closest("div[rql-controlgroup='yes'],div[rql-id2]"),u=null,o.length!==0&&h.length!==0)){for(s=o.index(h),c=!1;s!==-1&&s<o.length-1&&!c;)l=n(o[s+1]),u=l.is(":focusable")?l:l.find(":focusable"),c=u.closest("div.collapse").length==0||u.closest("div.collapse, div.collapse.show").not(".in").length===1,s++;c||(u=null)}return r?r(u||n([])):u||n([])}if(u)if(u.attr("rql-type")&&u.attr("rql-type")==="DropDownLookup"&&u.find("input[disabled]").length===0)u=window.waitfor(function(){return u.find($rql.api.uiVersion>2?".rql-select2":"select").length},1,100,0,"findFocusableControl()",function(){return r?r(u.find($rql.api.uiVersion>2?".rql-select2":"select")):u.find($rql.api.uiVersion>2?".rql-select2":"select")||n([])},20);else if(!u.is(":focusable"))return(u.find(":focusable").length>0?u=u.find(":focusable"):(a=u.parent().find(":focusable"),a.length>0&&(u=n(a[a.length-1]))),r)?r(u||n([])):u||n([])}return r?r(u||n([])):u||n([])},findControlAndFocus:function(n,t){if(n==="__rql-top__"){$rql.ui.get("#rql").top();return}if(n&&t){var i=this.findFocusableControl(n,t);i.length>0&&(i.first().focus(),i.is(":visible")&&i.is("select")&&i.hasClass("rql-select2")&&i.select2("focus"))}},repositionValidationLabels:function(){var t=this;n(this.$.find("span[rql-role='validation-error']:visible")).each(function(t,i){var u=n(i).parents("div[rql-role='wb-content']").first(),r;n(i).isOnScreen(u,{right:!0})||(r=n(i).closest("div[rql-focusable='yes']").parent(),r&&r.length>0&&(n(i).addClass("help-inline-no-arrow").removeClass("pos-abs"),n(i).wrap("<div class='controls' rql-focusable='yes'><\/div>").parent().appendTo(r)))})},getPanelsStateSettingName:function(){return"Panels_"+this.config.StoreId},savePanelsPostbackState:function(n,t){var f=this.config,u=f.SelectedTag&&f.SelectedTag.SelectedTopic?f.SelectedTag.SelectedTopic.Id:this.config.Type==="Form"?this.config.Id:null,e=this.getPanelsStateSettingName(),i=this.getViewSetting(e),r=u&&i?i[u]:null,o=r?r[n]:null;Array.isArray(t)?(i||(i={}),i[u]=t,this.setViewSetting(e,i)):o!=t&&(o&&t==null?r[n]=undefined:(r||(r={}),r[n]=t,i||(i={}),i[u]=r),this.setViewSetting(e,i))},getSavedPanelsPostbackState:function(n){var t=this.getViewSetting(this.getPanelsStateSettingName()),r=n&&t?t[n]:null,i=$rql.getPropertyValuesAsArray(r);return!i&&t&&(i=[]),i},collectPanels:function(t){var i,r,u;if(t)return this.getSavedPanelsPostbackState(t)||undefined;if(i=this.$.find("div[rql-type='panels']"),i.length===0&&(i=this.$.find("div[rql-type='Accordion']")),i.length!=0){for(r=[],u=0;u<i.length;u++){var o=n(i[u]),f=$rql.ui.get(o),e=f?f.getPostbackState():null;e&&r.push(e)}return r.length!=0?r:undefined}return undefined},getPostbackCounter:function(){return this.postbackCounter||(this.postbackCounter=1),this.postbackCounter},incrementPostbackCounter:function(){return this.postbackCounter?this.postbackCounter++:this.postbackCounter=1,this.postbackCounter},registerCaptcha:function(n){this.captchaControl=n},unregisterCaptcha:function(){this.captchaControl=null},highlightCaptcha:function(){this.captchaControl.highlight()},isCaptchaRequired:function(){return!!this.captchaControl},widgets:{embed:{s:"[rql-embed]",h:function(t,i){var u=n(t).attrs(),o=u.rql.embed,p=u.rql.setid,w=u.rql.skipwidgetizing,f=u.rql.viewtype,b=$rql.isNull(i.config.Views,{}),k=u.rql.embeduid,v,h,c,l,a,s;if(!w&&o&&$rql.ui.controls[f]){if(o.indexOf("{{")!==-1?v=o:(a=o.split("."),h=a[0],c=a[1],l=h+"."+c),i&&i.config.EmbedList)for(s=0;s<i.config.EmbedList.length;s++)if(i.config.EmbedList[s].config.Id===l&&i.config.EmbedList[s].SkipWidgetize)return;var r=new $rql.ui.controls[f](t,{Id:l,AppName:h,ViewName:c,Expression:v,EmbedUId:k,StoreId:u.rql.storeid,Group:u.rql.viewgroup,IsEmbed:!0,SetId:p,WarnOnChanges:u.rql.warnonchanges==="Yes",UseQueueTest:u.rql.usequeuetest==="Yes",CacheResponse:u.rql.postbackrefresh==="No",Context:f==="queue"&&i.config.AppName>""&&i.config.StoreId>""?{AppName:i.config.AppName,StoreId:$rql.isNull(u.rql.storeid,i.config.StoreId),ChainContextId:i.config.ChainContextId?i.config.ChainContextId+","+i.config.StoreId:i.config.StoreId}:null,Form:i,AccessToken:u.rql.queueaccesstoken}),y=i.config.PageFilters,e=b[o];if(r.$.attr("rql-view",r.config.Id),(f==="form"||f==="workbook")&&(r.$.attr("rql-skipWidgetizing","true"),r.config.IsEmbed=!0,r.config.ChainContextId=i.config.ChainContextId?i.config.ChainContextId+","+i.config.StoreId:i.config.StoreId,i.config.Workbook&&(r.config.ContextTopicId=i.config.TopicId,r.config.ContextTagId=i.config.SelectedTag?i.config.SelectedTag.Id:undefined),i.config.EmbedFormList||(i.config.EmbedFormList=[]),r.config.WarnOnChanges&&i.config.EmbedFormList.push(r)),f==="queue"){r.$.attr("rql-skipWidgetizing","true");i.config.EmbedList&&i.config.EmbedList.push(r);i.config.Workbook&&r.config.Context&&(r.config.Context.TopicId=i.config.TopicId,r.config.Context.TagId=i.config.SelectedTag?i.config.SelectedTag.Id:undefined);r.on({viewChange:i.onViewChange,bulkSelectionChanged:i.onBulkSelectionChanged});e&&e.DependsOn&&e.DependsOn.length>0?n.extend(e,{Control:r,Type:f,Embedded:!0}):r.show()}else f==="pagefilter"&&e?(n.extend(e,{Control:r.on({pageFilterReady:i.onPageFilterReady,pageFilterChange:i.onPageFilterChange}),Type:f}),y.add(y[o]=e)):r.show()}}},modal:{s:"div[rql-role='modal'].show",h:function(t){try{var i=n(t);i.prop("rql-widgetized")!=="true"&&(i.prop("rql-widgetized","true"),n(".modal-backdrop").remove(),$rql.ui.showModal(i))}catch(r){$log.warn($f("Error widgetizing modal: {0}\r\n{1}",n(t).html(),r))}}},panels:{s:"[rql-type='panels']",h:function(t,i,r){var f,e,u,o;try{if(f=n(t),f.prop("rql-widgetized")!=="true"&&(f.prop("rql-widgetized","true"),e=f.attr("id"),u=e&&i&&i.config&&i.config.PanelControls?i.config.PanelControls.findByKey("Id",e):null,u&&(o=$rql.api.uiVersion>2&&n(u).attr("Style")==="Accordion"?new $rql.ui.controls.accordion(t,{Data:u,Form:i,WidgetEvents:r}):new $rql.ui.controls.panels(t,{Data:u,Form:i,WidgetEvents:r}),r)))o.on(r.panels).on(r["*"])}catch(s){$log.warn($f("Error creating panels: {0}\r\n{1}",n(t).html(),s))}}},inputs:{types:$rql.ui.inputTypes,s:"div[rql-type],span[rql-type]",h:function(n,t,i){return $rql.ui.controls.view.prototype.process_input(n,t,i)}}},$storeView:function(){return this.$}};t.registerClass("$rql.ui.controls.storeview",$rql.ui.controls.view);$rql.api.collectValue=i;$rql.api.getUpdates=f;$rql.api.restoreValue=u})(jQuery),function(){Type.registerNamespace("$rql.ui.components");var n=$rql.ui.components.valueCollection=function(){this.data=[];this.dict={};this.controlIds={};this.inlineTopicIdsWithDefaults=null};n.prototype={add:function(n,t,i){return n&&(this.registerControlId(n),i?this.dict[n]=t:this.data.add(n+"="+t)),this},registerControlId:function(n){if(n){var t=n.indexOf("|");t>0&&(n=n.substring(0,t));n in this.controlIds||(this.controlIds[n]=null)}},isControlIdRegistered:function(n){if(n){var t=n.indexOf("|");if(t>0&&(n=n.substring(0,t)),this.controlIds.hasOwnProperty(n))return!0}return!1},processControlWithDefault:function(n,t){if(this.inlineTopicIdsWithDefaults&&t){var i=n.closest("div[rql-inline-id]").attr("rql-inline-id");i&&this.inlineTopicIdsWithDefaults.indexOf(i)==-1&&this.inlineTopicIdsWithDefaults.push(i)}}};n.registerClass("$rql.ui.components.valueCollection",Sys.Component)}(jQuery);
(function(n){var t=$rql.ui.controls.form=function(n,i){i.isFabric=$rql.api.uiVersion>2;t.initializeBase(this,[n,i])};t.prototype={cancel:function(t){t&&t.stopPropagation();this.raise("cancelled",{sender:this});this.config.ShadowStoreId=null;var i=n(t.target).attrs();i.rql&&i.rql.argument=="reload"?$rql.api.reload():i.rql&&i.rql.argument=="close"||this.refresh()},collectPageFilterValues:function(){var r=this.config.PageFilters,u,t,i,f;if(r){for(u=[],t=0;t<r.length;t++)i=r[t],i&&i.Control&&(f=i.Control.getFilterValues(),f&&n.merge(u,f));return u}return null},edit:function(n){this.config.ShadowStoreId=null;this.refresh({State:"Edit"});n&&n.stopPropagation()},formatRecordNavigator:function(n){if(n){n.CanNavigatePrevious=n.Index>0;n.CanNavigateNext=n.Index+1<n.Count;n.Summary=$f($rql.i18n.strings.RecordNavigatorSummaryFormat,n.Index+1,n.Count?n.Count:"...");return $rql.ui.templates("form-record-navigator").render(n)}return""},getQueueItemContext:function(){return window.history&&window.history.state?window.history.state.queueItemContext:null},guideMe:function(){var t,i,r;$rql.api.uiVersion>2?(i=this.$.find(".error, .input-error, .input-error-checkbox"),i.length&&(r=i.parents(".collapse"),r.length&&r.filter(":not(.show)").length&&r.collapse("show")),t=i.filter(":visible")[0],n(t).hasClass("input-error-checkbox")&&(t=n(t).parents(".custom-control")[0])):t=this.$.find(".error, .input-error").filter(":visible")[0];this.scrollTo(t)},initialize:function(i){t.callBaseMethod(this,"initialize");var r=this.config=n.extend({FormClasses:$rql.ui.controls.input.formClasses,serviceUrl:$rql.api.baseUrl.pathname+"form/",State:{Default:""},Type:"Form",PageFilters:[],EmbedList:[],EmbedFormList:[]},i);r[r.Type]=!0;r.widgetEvents={"*":{change:this.onInputControlChange},panels:{panelShow:this.onPanelShow}};this.on({cancel:this.cancel,close:this.close,edit:this.edit,guideMe:this.guideMe,save:this.save,update:this.save,dismissmodal:this.hideModal,recordNavigatorMove:this.onRecordNavigatorMove,alertDismiss:this.onAlertDismiss,saveeditingrid:this.onSaveEditInGrid,saveeditingridandexecute:this.onSaveEditInGridAndExecute,saveeditingridtocontext:this.onSaveEditInGridToContext,saveeditingridtocontextandexecute:this.onSaveEditInGridToContextAndExecute,nextControl:this.onNextControl,prevStore:this.requestPrevItem,nextStore:this.requestNextItem});if(this.getViewSettings(),this.isDesktop())this.$.on("keyup",":focus",n.proxy(this.onKeydownFocus,this));this.config.uniqueRqlId=$rql.newId();n(window).on("beforeunload."+this.config.uniqueRqlId,this.checkUnsavedChanges);$rql.events.on({resize:this.onResize})},isInPlaceEditing:function(){return this.config.State&&(this.config.State.EditInPlace||this.config.State.NewInPlace||this.config.State.ViewInPlace||this.config.State.BulkUpdate)},isNextItemAvailable:function(){var n=this.getQueueItemContext();return n&&!n.isLast},onAlertDismiss:function(t){var i=n(t.currentTarget).attrs();$rql.api.updateStore(this.config.StoreId,i.id,i.value)},onInputControlChange:function(n){this.save(n)},onKeydownFocus:function(t){if((t.keyCode||t.which)==9){var i=this.$.find(":focus"),r=n("body").scrollTop()!=0?n("body").scrollTop():n("html").scrollTop(),u=window.innerHeight-i.offset().top+i.height()+r;u<80&&n("html, body").animate({scrollTop:r+i.outerHeight()+35},500)}},canCloseModal:function(){return!this.Action||!this.ModalId?!0:["save","update","validate"].contains(this.Action.toLowerCase())&&!["reload","dismissmodal"].contains(this.pendingAction)},resolvePendingAction:function(t,i,r,u,f,e){var v=this.config,o=this.pendingAction,c=this.pendingActionData,y=this.pendingActionContext,l=this.isInPlaceEditing(),s,h,a,p;if((o!=="openmodal"||u)&&(o!=="opensheet"||c)){if(o!=="toast"&&(this.pendingAction=this.pendingActionData=this.pendingActionContext=null),s=null,h=o?o.indexOf(","):-1,o&&h!==-1&&(s=o.substring(h+1),o=o.substring(0,h)),o==="back"&&l&&(o="close"),o)switch(o.toLowerCase()){case"back":return $rql.api.back(),!0;case"home":return n(window).off("beforeunload."+this.config.uniqueRqlId,this.checkUnsavedChanges),$rql.api.home(),!0;case"reload":return f?this.invalidFields.length===0:(n(window).off("beforeunload."+this.config.uniqueRqlId,this.checkUnsavedChanges),this.page&&this.page.app&&(s==="firsttab"||s==="previoustab"||s==="nexttab"||s==="lasttab")&&this.page.app.processTabChangeAction(s,!0),this.pendingActionSource==="modal"&&delete this.pendingActionSource,$rql.api.reload(this.config.Id==="__home_header"),!0);case"new":return $rql.api.createStore(v.AppName,"new",{replaceState:$rql.bool(t=="Read"&&window.history.state&&window.history.state.SaveOptions),Context:y?{StoreId:y}:null}),!0;case"refresh":if(this.raiseSaved(o,!0),l)return!0;break;case"close":case"next":case"newinplace":return this.raiseSaved(o,!0),this.isMobile()||o!="next"||!v.State.Current||l||this.requestNextItem(),!0;case"changelocale":return n(window).off("beforeunload."+this.config.uniqueRqlId,this.checkUnsavedChanges),$rql.api.changeLocale(c),!0;case"notify":return this.raiseSaved(o,!0),a=this,setTimeout(function(){a.config.ShadowStoreId=undefined;a.refresh()},1),!0;case"navigate":return r==="url"?(n(window).off("beforeunload"),location.href=i):i&&(!r||r==="store")&&(p=$rql.api.baseUrl.pathname+"a/"+i,$rql.api.navigate(p)),!0;case"openmodal":return this.ModalId=u,this.showModal(this.$ModalElement,this.ModalId),!0;case"firsttab":case"previoustab":case"nexttab":case"lasttab":return this.page&&this.page.app&&this.page.app.processTabChangeAction(o,!1),!0;case"dismissmodal":return this.hideModals(!0),this.ModalId=null,this.$ModalElement=null,!1;case"toast":return e&&($rql.ui.showToast(this.$,e),this.pendingAction=this.pendingActionData=this.pendingActionContext=null),!1;case"opensheet":return this.openRightSheetView(null,c),this.pendingAction=this.pendingActionData=null,this.removeControlOverlay&&($rql.ui.removeContainerOverlay(this.removeControlOverlay),delete this.removeControlOverlay),!0}return!1}},onResize:function(){var t=this;this.isVisible()&&n(window).doTimeout("form_resize",250,function(){$rql.events.trigger("containerResized",{});$rql.ui.resized()})},onLoad:function(t,i,r){var f=this,u=this.config,s=r?r.context:{},v,l,y,a,o,h,ft,g,nt,e,w,c,b,k,tt,d;if(this.ClientSideErrors=[],this.resumeSave&&!t.ValidationFailed){var et=this.resumeSave.originalForm,it=this.resumeSave.arguments,ot=n(it[0].currentTarget);ot.attr("rql-external-action-control","");et.save.apply(null,it);delete this.resumeSave}if(r.context.Save&&t.ModalId&&t.ValidationFailed&&(t.ModalId=null),v={control:u.ParentContainer||n(window),top:(u.ParentContainer||n(window)).scrollTop()},window.viewAccessDictionary&&r.context&&r.context.ViewName&&(window.viewAccessDictionary[r.context.ViewName]=0),this.controlResetter&&this.controlResetter.clear(),this.clearDisableTimeout(s.disableTimeout).enable(),t.Locale&&(this.pendingAction="changelocale",this.pendingActionData=t.Locale),t.QueueToSetFilter&&(this.queueToSetFilter=t.QueueToSetFilter,this.filterToSet=t.Filter),t.HelpId&&$rql.api.updateHelpSuggestions(t.HelpId),t.LookupViewName&&(this.config.ViewName=t.LookupViewName),t.SaveEditInGridResponse&&u.EmbedList.length>0)for(ei=0;ei<u.EmbedList.length;ei++)if(u.EmbedList[ei].config.Id==this.pendingEditInGridId){u.EmbedList[ei].refreshEditPage(t.SaveEditInGridResponse);return}if(t.SaveEditInGrid2Response&&u.EmbedList.length>0)for(ei=0;ei<u.EmbedList.length;ei++)if(u.EmbedList[ei].config.Id==this.pendingEditInGridId){u.EmbedList[ei].refreshNestedQueuesFromExternalResponse(t.SaveEditInGrid2Response);return}if(t.ValidationFailed||t.Errors||(s.NewLookupSavedCallBack?s.NewLookupSavedCallBack(this.config.StoreId):s.EditLookupSavedCallBack&&s.EditLookupSavedCallBack(this.config.StoreId)),!t.Data&&!t.ValidationFailed&&(!t.ShadowStoreId||this.Action==="update"&&this.pendingAction=="back")&&this.canCloseModal()&&this.resolvePendingAction(t.State,t.RedirectId,t.RedirectDestinationType)){window.history.state&&window.history.state.SaveOptions&&(window.history.state.SaveOptions=null);return}if((t.ValidationFailed||t.Errors&&t.Errors.length!==0)&&this.pendingAction==="notify"&&this.raiseSaveFailed(),u.Data=u.ShadowStoreId=null,u.ValidationFailed=!1,t.State&&(t.State=="Edit"||t.State=="EditOnly"?window.history.state&&window.history.state.SaveOptions&&(t.State=window.history.state.SaveOptions.State):t.State=="Read"&&window.history.state&&window.history.state.SaveOptions&&window.history.replaceState({},null,$rql.http.uri().pathname),l=u.State?u.State.Current:null,(l=="NewInPlace"||l=="EditInPlace"||l=="ViewInPlace"||l=="BulkUpdate")&&(t.State=l)),y=u.UiStyle,n.extend(u,t),$log.debug($f("Loading form {0}",u.Id)),t.State&&(u.State={Current:t.State},u.State[t.State]=!0),u.ShowButtons=!0,t.ButtonContainer){switch(t.ButtonContainer){case"None":u.ShowButtons=!1;u.ButtonsTop=!0;u.ButtonsBottom=!1;break;case"Bottom":case"BottomRight":case"BottomLeft":u.ButtonsBottom=!0;break;case"TopAndBottom":case"TopAndBottomRight":case"TopAndBottomLeft":u.ButtonsTop=!0;u.ButtonsBottom=!0;break;default:u.ButtonsTop=!0}u.ButtonsLeft=t.ButtonContainer.indexOf("Left")!==-1}if(u.CanGoBack=$rql.bool(u.Context)&&!t.State.contains("InPlace"),u.CanCancel=r.context&&(r.context.State==="EditInPlace"&&t.State==="ReadOnly"||r.context.State==="ViewInPlace"&&this.isMobile()),u.isFabric&&u.UiStyle&&u.UiStyle.contains("HideSaveButtons")&&(u.HideSaveButtons=!0),u.AllowModeSwitch=u.desktop||!u.desktop&&!u.offline,t.Template&&(u.Template=t.Content),u.Template){if(u.Data&&u.Data.Themes)for(a=0;a<u.Data.Themes.length;a++)u.Data.Themes[a].LocalizedTitle=$rql.i18n.strings["Theme"+u.Data.Themes[a].Id];if(u.Template.indexOf("{{>")===-1)u.Content=$rql.ui.render(u.Template,u);else{for(var rt=/\{\{>([\w|-]+)\}\}/g,p=rt.exec(u.Template),ut={};p!=null;)ut[p[1]]=$rql.ui.templates(p[1]).render(),p=rt.exec(u.Template);u.Content=$rql.ui.render(u.Template,u,ut)}}if(o=this.getQueueItemContext(),o&&(u.ContextStoreId=o.storeId,u.AllowTabRecords=o.allowTabRecords,u.FirstRecord=o.isFirst,u.LastRecord=o.isLast,u.RecordLabel=$f("{0} of {1}",o.index+1,o.count)),u.EmbedList&&u.EmbedList.length>0&&!u.SaveAction)for(ei=0;ei<u.EmbedList.length;ei++)u.EmbedList[ei].config.CacheResponse&&(u.EmbedList[ei].Cache=this.$.find($f('[rql-embed="{0}"]',u.EmbedList[ei].config.Id)).detach());if(u.isFabric&&this.$.parents(".modal, .fixed-modal").length===0&&this.hideModals(null,null,!0,this.config.IsEmbed),u.isFabric&&u.Content&&this.PartialUpdateContainerId?(h=this.getPartialUpdateContainer(this.$),h&&h.LocatorStr&&h.$Container.length>0&&(ft=this.getPartialUpdateContent(u.Content,h.LocatorStr,h.IsInList),$rql.ui.replaceHtmlContent(h.$Container,ft,!0)),delete this.PartialUpdateContainerId):$rql.ui.replaceHtmlContent(this.$.addClass(u.UiStyle),$rql.ui.templates("form").render(u,{"form-buttons":$rql.ui.templates("form-buttons").html,"form-record-navigator":this.formatRecordNavigator(u.RecordNavigator)}),!0),delete this.removeControlOverlay,this.$form=this.$.find("form"),u.EmbedList&&u.EmbedList.length>0&&!u.SaveAction)for(ei=0;ei<u.EmbedList.length;ei++)u.EmbedList[ei].config.CacheResponse&&(g=u.EmbedList[ei].Cache.find("[rql-embed]"),g&&g.attr("rql-skipwidgetizing","true"),this.$.find($f('[rql-embed="{0}"]',u.EmbedList[ei].config.Id)).replaceWith(u.EmbedList[ei].Cache),u.EmbedList[ei].SkipWidgetize=!0);if(u.ContainerUiStyle&&this.$.addClass(u.ContainerUiStyle),y&&y!=u.UiStyle&&this.$.removeClass(y),(this.isInPlaceEditing()||this.isNextItemAvailable())&&(!this.isInPlaceEditing()||this.config.ShowSaveAndNext)||(this.$.find("[rql-role='platform-buttons'] button[rql-action='save'][rql-argument='next']").remove(),nt=this.$.find("button[rql-action='save'][rql-argument='next']"),this.$.find("button[rql-action='save'][rql-argument='close']").length==0?nt.attr("rql-argument","close"):nt.remove()),u.EmbedList=u.EmbedList&&u.EmbedList.length>0&&!u.SaveAction?jQuery.grep(u.EmbedList,function(n){return n.SkipWidgetize}):[],u.EmbedFormList=[],u.PageFilters=[],u.ChangedFilters={},u.Views){for(c=[],e=0;e<u.Views.length;e++)vd=u.ViewDependencies[e],c.add(c[u.Views[e]]={ViewId:u.Views[e],DependsOn:vd?vd.select(function(n){return u.Views[n]}):[]});for(e=0;e<c.length;e++){for(b=c[e],k=[],w=0;w<b.DependsOn.length;w++)tt=b.DependsOn[w],k.add(k[tt]=c[tt]);b.DependsOn=k}u.Views=c}u.IsInSheet&&u.ViewTitleContainer&&(d=this.$.find("[rql-role='topic-title']"),u.ViewTitleContainer.addClass(d.attr("rql-title-css")).html(d.html()),d.remove());u.isFabric&&this.config.SheetButtons&&this.updateSheetButtons(this.config.SheetButtons,t.NameValueArguments,{StoreId:this.config.StoreId,AppName:this.config.AppName});this.showOverlay(!0,u.ParentContainer||this.$,u.ParentContainer?null:"fixed");u.isFabric&&r&&r.context&&r.context.State==="EditInPlace"&&this.raise("updated",{sender:this});this.config.IsCustomLookup&&!this.config.HasInvoked&&(this.config.HasInvoked=!0);this.widgetize(function(){try{window.waitfor(function(){return n(".collapsing").length},0,100,0,"form.onLoad()",function(){var o,h,e,i;try{if(f.config.EmbedList.any(function(n){return n instanceof $rql.ui.controls.queue})?f.scrollPosition=v:t.ValidationFailed&&t.InlineNext==="GuideMeTop"?$rql.api.top():v.control.scrollTop(v.top),f.renderPageFilters().collectValues(f.values=f.newValueCollection(),!0,!0,!0),f.ModalId){if(n(".mm-page").removeClass("pos-static"),f.collectInvalidFields(f.$.find("#"+f.ModalId)),f.pendingAction&&f.invalidFields.length===0&&f.resolvePendingAction(t.State,t.RedirectId,null,t.ModalId,t.ValidationFailed)){t.ValidationFailed&&(f.hideModals(!0),f.ModalId=null,f.$ModalElement=null);return}f.showModal(f.$ModalElement,f.ModalId,null,null,f.$ModalParent);f.ModalId&&(o=f.$.find($f("div[rql-context='{0}']",f.$ModalElement.attr("rql-context"))).filter("#"+f.ModalId).find(".error input, .error select, .input-error"),h=f.$.find(".error input, .error select, .input-error").not(o),h.length===0&&f.$.find("[rql-role='validation']").remove())}if(f.pendingAction==="toast"&&(t.ValidationFailed&&r.context&&r.context.Save||f.resolvePendingAction(t.State,null,null,null,(f.pendingActionContext||"")+t.ToastId)),f.pendingAction==="openmodal"&&f.resolvePendingAction(t.State,null,null,t.ModalId),f.pendingAction=null,f.pendingActionData=null,f.loadedRaised?f.raise("reloaded",{sender:f}):(f.loadedRaised=!0,f.raise("loaded",{sender:f})),f.config.IsInPlace)if(u.EmbedList.length>0)for(e=0;e<u.EmbedList.length;e++)u.EmbedList[e].on({loaded:f.config.Resize});else f.raise("resize",{sender:f});u.State.Edit||u.State.EditOnly||u.State.EditInPlace||u.State.New||u.State.NewInPlace||u.State.BulkUpdate?u.firstLoad||$rql.isUndefined(u.firstLoad)?(f.focus(),u.firstLoad=!1):(f.postbackControlId||u.focusedId)&&(i=f,setTimeout(function(){var n=i.findControlAndGetNextControlId(i.postbackControlId,i.$form,u.firstLoad);i.findControlAndFocus(n||u.focusedId,i.$form)},150)):u.firstLoad=!0;u.activeElement=null;u.skipCompletionCheck=!1;n.isFunction(s.callback)&&s.callback(u);f.revalidateInvalidFields();f.processResponseErrors(t);f.setViewSettings();f.manageMonitors(t.Monitors);f.updateTimestamp();f.repositionValidationLabels();f.page&&f.page.config&&f.page.config.Views&&f.page.config.Views.any(function(n){return n.DisplayOptions})&&n(window).resize();u.isFabric&&(f.$.find("[rql-role='button-container'] .btn-group.dropdown").each(function(t,i){n(i).find(".dropdown-menu .dropdown-item").length===0&&n(i).find(".dropdown-toggle, .dropdown-menu").remove()}),f.page&&f.page.app&&f.page.app.sidenav&&(f.page.app.sidenav.onResize(),f.page.app.sidenav.updateViewStatus(t.ViewStatus)),n(".modal:visible").length>0&&!n("body").hasClass("modal-open")?n("body").addClass("modal-open"):n(".modal:visible").length===0&&n("body").hasClass("modal-open")&&n("body").removeClass("modal-open"));n("body").css("min-height","")}finally{f.hideOverlay()}u.IsInSheet&&u.IsMobileSheet===!0&&$rql.ui.stopScrolling()},20)}catch(i){$log.warn($f("Error after widgetize():\r\n{0}",i))}})},onValueChanged:function(n){this.onNextControl(n)},onNextControl:function(t){t&&t.currentTarget&&this.findControlAndFocus(this.getNextControlId(n(t.currentTarget)),this.$form)},onNextItemRequest:function(n){var t,i;if(n&&n.Id&&(t=this.getQueueItemContext(),t)){t.storeId=n.Id;t.index=n.Index;t.isLast=n.IsLast;t.isFirst=n.IsFirst;i=$rql.api.baseUrl.pathname+"a/"+n.Id;$rql.api.navigate(i,!0,{queueItemContext:t});return}this.refresh()},onPageFilterChange:function(n){this.setPageFilter(n.id,!0).renderPageFilters()},onPageFilterReady:function(n){var t=this.config.PageFilters[n.id],i=this.config.ChangedFilters;t&&(i.changed=i[n.id]=!0,this.renderPageFilters(),t.Ready=!0)},onRecordNavigatorMove:function(t){t.preventDefault();t.stopPropagation();this.raise("recordNavigate",{sender:this,move:n(t.currentTarget).attrs().rql.data})},onViewChange:function(n){if(n&&n.groupViewRefresh&&this.config.EmbedList.length>0)for(i=0;i<this.config.EmbedList.length;i++)this.config.EmbedList[i].config.Group==n.groupViewRefresh&&this.config.EmbedList[i].refresh();else n&&n.requiresRefresh&&this.refresh()},onSaveEditInGrid:function(n){this.saveEditInGrid(n,{SaveToContext:!1})},onSaveEditInGridAndExecute:function(n){this.saveEditInGrid(n,{SaveToContext:!1,Execute:!0})},onSaveEditInGridToContext:function(t){var r=n(t.currentTarget),i=r.attrs(),u=i.rql.id,f=i.rql.valuewhenvalid;this.saveEditInGrid(t,{SaveToContext:!0,CallerId:u,CallerValue:f})},onSaveEditInGridToContextAndExecute:function(t){var r=n(t.currentTarget),i=r.attrs(),u=i.rql.id,f=i.rql.valuewhenvalid;this.saveEditInGrid(t,{SaveToContext:!0,Execute:!0,CallerId:u,CallerValue:f})},onAsyncControlsLoaded:function(n){var i=this.$.find("[rql-embed][rql-view-type='queue']"),r,t;i.length>0&&i.filter("[rql-timestamp]").length===i.length&&(r=n&&n.RenderTimeout?n.RenderTimeout:1,this.scrollPosition&&(t=this,setTimeout(function(){t.scrollPosition.control.scrollTop(t.scrollPosition.top);t.scrollPosition=null},r)))},onPanelShow:function(n){var t=this;this.refresh({onlyIfChanged:n.panelLoaded})||n.sender.activatePanel(n.panelId)&&this.widgetize(function(){t.collectValues(t.values=t.newValueCollection(),!0,!0)})},saveEditInGrid:function(t,i,r){var f=this.config,s=n(t.currentTarget),u=s.attrs(),h=u.rql.argument,e=!1,o;if(!r&&u.rql&&u.rql.confirm){o=this;t=n.browser.msie&&parseInt(n.browser.version)===8?n.extend(!0,{},t):t;$rql.ui.confirm(u.rql.confirm,"",function(){o.saveEditInGrid(t,i,!0)},null);return}if(this.pendingAction=u.rql.pendingaction,this.pendingActionData=u.rql.data,this.pendingActionContext=u.rql.context,f.EmbedList.length>0)for(ei=0;ei<f.EmbedList.length;ei++)if(f.EmbedList[ei].config.Id==h){f.EmbedList[ei].onSaveEditPage(i);e=!0}e&&this.resolvePendingAction()},getEditInGridRequest:function(t){var i=this.config,u=n(t.currentTarget),r=u.attrs(),f=r.rql.id,e=r.rql.valuewhenvalid;if(embedId=r.rql.argument,action={SaveToContext:!1,Execute:!1,CallerId:f,CallerValue:e},t.EditInGridAction&&(t.EditInGridAction.indexOf("execute")>-1&&(action.Execute=!0),t.EditInGridAction.indexOf("context")>-1&&(action.SaveToContext=!0),i.EmbedList.length>0))for(ei=0;ei<i.EmbedList.length;ei++)if(i.EmbedList[ei].config.Id==embedId)return i.EmbedList[ei].config.NestedQueueControlList||i.EmbedList[ei].config.NestedQueueTopControl?i.EmbedList[ei].getNestedQueuesExternalRequest(action):i.EmbedList[ei].getRequest(action);return null},raiseSaved:function(n,t){this.raise("saved",{sender:this,action:n,changed:t})},raiseSaveFailed:function(){this.raise("saveFailed",{sender:this,storeId:this.config.StoreId})},refreshWithCustomCallBack:function(n,t){var h=this.values,r=new $rql.ui.components.valueCollection,u=this,f=this.config,i,e,o,s;this.collectValues(r);i=$rql.api.getUpdates(r,h);e=i.length>0;e?(o={Save:!1,State:f.State.New?f.State.Current:"Edit",Updates:i},this.refresh(o,function(){var i=u.$.find(n);$rql.ui.get(i)[t]()})):(s=u.$.find(n),$rql.ui.get(s)[t]())},refreshConnectionError:function(n){$log.debug("rql.form.refreshConnectionError");var t=this;this.refresh(n,null,function(n){if($rql.api.offline)$log.debug("redirecting to home after refresh error."),$rql.api.home();else t.onError(n)})},isBlockedByCaptcha:function(){return this.isCaptchaRequired()?(this.highlightCaptcha(),!0):!1},refresh:function(t,i,r,u){var o,s;$log.debug("rql.form.refresh");o=null;t&&t.$e&&(o=t.$e,t.$e=undefined);this.config.isFabric&&u&&this.setPartialUpdate($rql.isEvent(u));t&&t.Save&&t.State=="New"?window.history.replaceState({SaveOptions:t},null,$rql.http.uri().pathname):!t||t.Save||t.CalculateNow?!t&&window.history.state&&window.history.state.SaveOptions&&(t=window.history.state.SaveOptions):window.history.state&&window.history.state.SaveOptions&&window.history.replaceState(null,null,$rql.http.uri().pathname);var e=this.config,h=$rql.isEvent(t),f=this.createStoreViewRequest(n.extend({callback:i,ShadowStoreId:e.ShadowStoreId,Arguments:e.Arguments},h?null:t));if(this.config.Id=="__home_header"&&(this.config.IsSpecialProcessing=f.IsSpecialProcessing=!0),t&&(t.BulkSelectId&&(e.BulkSelectId=t.BulkSelectId),t.ChainContextId&&(e.ChainContextId=t.ChainContextId),t.ContextTopicId&&(e.ContextTopicId=t.ContextTopicId,e.ContextTagId=t.ContextTagId)),f.ContextTagId=e.ContextTagId,f.ContextTopicId=e.ContextTopicId,f.ChainContextId=e.ChainContextId,f.Arguments=this.combineArguments([f.Arguments,this.serializeBrowserArguments(),this.serializeArgumentValues(this.config.ArgumentValues)]),f.ViewArguments=this.serializeArgumentValues(e.ViewArguments),this.config.SheetControl&&(f.IsSheetContent=!0),this.config.IsCustomLookup&&!this.config.HasInvoked&&this.config.CustomLookupInvokeExecute&&this.config.CustomLookupInvokeExecute!==""&&(f.Invoke="invokecustomlookup="+this.config.CustomLookupInvokeExecute),$log.debug($f("{0} form {1}",f.Save?"Saving":f.Updates?"Updating":"Requesting",this.Id)),s=n(document.activeElement).attrs(),e.focusedId=s&&s.rql?s.rql.id:e.activeElement?e.activeElement:null,o&&(this.postbackControlId=this.getControlId(o)),t&&t.hasOwnProperty("onlyIfChanged")&&(this.prepareRequestUpdates(f),t.onlyIfChanged&&f.Updates==null))return!1;this.rendered?this.initiateDisable(f,!0,e.ParentContainer):(e.ContainerUiStyle=this.$.attr("rql-class"),$rql.api.uiVersion>2&&(e.ShowDropdown=e.ShowSaveAndNext||e.CanGoBack),this.$.removeAttr("rql-class").html($rql.ui.templates("view-loading").render(this.config)).widgetize(),this.rendered=!0);f.PanelStates=this.collectPanels();f.Updates&&f.Updates.length>0&&this.values&&this.controlResetter&&this.controlResetter.apply(f.Updates,this.values);this.incrementPostbackCounter();this.PartialUpdateContainerId&&this.applyPartialUpdateOverlay(this.PartialUpdateContainerId,this.$);this.post("",f,f).done(this.onLoad).fail(r||this.onError);h&&t.stopPropagation();t&&t.CalculateNow&&this.collectInvalidFields()},prepareRequestUpdates:function(n){var r,i,t;this.values&&(r=this.values,i=this.newValueCollection(),this.collectValues(i),t=this.getUpdates(i,r),t&&t.length>0&&(n.Updates=t))},renderPageFilters:function(){var r=this.config,t=r.PageFilters,e=r.Views,s=function(n){return!e[n.ViewId].Ready},u,n,o,i,f;if(t&&t.length>0)for(o=this.collectPageFilterValues(),i=0;i<t.length;i++)if(!t[i].Ready&&!t[i].DependsOn.any(s))return n=t[i].Control,n.PageFilterValues=o,n[n.isVisible()?"refresh":"show"](),this;if(r.ChangedFilters.changed){for(f=0;f<e.length;f++)u=e[f],n=u.Control,u.Type!="pagefilter"&&u.DependsOn.any(function(n){return r.ChangedFilters[n.ViewId]})&&($log.info(u.ViewId),n.PageFilterValues=o,n[n.isVisible()?"refresh":"show"]({refreshTotals:!0}));r.ChangedFilters={}}return this},requestNextItem:function(){var n=this.getQueueItemContext(),t;return n?(t=n.queueRequest,t.CurrentId=n.storeId,t.CurrentIndex=n.index,$rql.http.post($rql.api.baseUrl.pathname+"queue/nextitem",t,null).done(this.onNextItemRequest).fail(this.onNextItemRequest),!0):!1},requestPrevItem:function(){var n=this.getQueueItemContext(),t;return n?(t=n.queueRequest,t.CurrentId=n.storeId,t.CurrentIndex=n.index,$rql.http.post($rql.api.baseUrl.pathname+"queue/previtem",t,null).done(this.onNextItemRequest).fail(this.onNextItemRequest),!0):!1},setPageFilter:function(n,t){var f=this.config,r=f.PageFilters,u=r[n],e=f.ChangedFilters,i;if(u)for(e.changed=e[n]=!0,u.Ready=t,i=0;i<r.length;i++)(u=r[i].DependsOn[n])&&this.setPageFilter(r[i].ViewId,!1);return this},save:function(t,i,r,u,f){var ut,g,nt,e,st,ht,ft,et,v,c,w,b,tt,k,s;if(!this.isBlockedByCaptcha()){var o=this.config,ot=this.values,d=this.newValueCollection(),a=this.newValueCollection(),l=!0,p=$rql.isEvent(t),h,e,it=this;if(t&&p)if(n(t.currentTarget).attr("rql-external-action-control")){var yt=n(t.currentTarget),pt=yt.attr("rql-external-action-control"),rt=this.$.closest("#mainViewContainer").find("[rql-layout-id='Content'] [rql-view]").first();if(rt.length>0&&(ut=rt.attr("rql-viewtype"),ut&&(g=rt.data("rql.ui.control"),g&&(nt=g.$.find($f("[rql-id='{0}']",pt)).first(),nt.length>0)))){if(ut==="Form"){g.resumeSave={originalForm:this,arguments:arguments};nt.click();return}nt.click()}}else if(this.config.IsCustomLookup&&n(t.currentTarget).attr("rql-button-style")==="LookupSelect"&&this.config.onItemSelected){e=n(t.currentTarget).attrs();st=$rql.isNull(e.rql.value,e.rql.valuewhenvalid);this.config.onItemSelected(t,st);return}if(!this.ClientSideErrors||!(this.ClientSideErrors.length>0)||!p||n(t.currentTarget).attr("rql-action")!=="save"){if(this.config.SaveAction=null,this.collectValues(d),!i&&!r&&this.onBeforeSave&&!(t&&t.type==="lookup")){ht=this.onBeforeSave(t);ht.done(function(){it.save(t,!1,!0)});t&&t.stopPropagation();return}if(p?(h=n(t.currentTarget),e=h.attrs()):e={rql:null},p&&!i&&(ft=this.hasEmbedFormUpdates(),ft&&(e.rql.confirm=$rql.i18n.strings.UnsavedChangesConfirmation,e.rql.updates=$rql.api.getUpdates(ot,d),e.rql.currentTarget=t.currentTarget)),i||!this.confirmationIsRequired(t,e,this.save,ft?this.onCancelChanges:null)){if(this.hasSelfSavingControls()&&(!f||!f.selfSavingControlsSaved)&&(et=this.saveSelfSavingControls(),et))return this.initiateDisable(null,!0),et.done(function(){it.save(t,i,r,u,n.extend(f||{},{selfSavingControlsSaved:!0}))}).fail(function(){it.enable()}),t&&t.stopPropagation(),!1;if(v=!1,h){if(v=h.hasClass("btn")||h.is("button"),e.rql.id&&(e.rql.value&&(e.type!="checkbox"||h.is(":checked"))?d.add(e.rql.id,e.rql.value,!0):e.rql.valuewhenvalid&&a.add(e.rql.id,e.rql.valuewhenvalid),v||(o.activeElement=e.rql.id)),this.pendingAction=$rql.isNull(e.rql.pendingaction,e.rql.argument,""),this.Action=e.rql.action,this.pendingAction&&n(t.currentTarget).parents(".modal").length>0&&(this.pendingActionSource="modal"),this.pendingAction&&this.pendingAction.indexOf("editingrid")>-1)if(w=this.pendingAction.splitAndTrim(","),t.EditInGridAction=w[0],w=w.slice(1),this.pendingAction=w.join(","),c=this.getEditInGridRequest(t),c&&c.HasUpdates){if(a.add(e.rql.id,"editingrid"),this.pendingEditInGridId=c.Id,this.pendingAction=="reload"&&o.EmbedList.length>0)for(ei=0;ei<o.EmbedList.length;ei++)if(o.EmbedList[ei].config.Id==this.pendingEditInGridId){if(b=o.EmbedList[ei].config,b.skipCompletionCheck=!0,b.NestedQueueControlList)for(tt=0;tt<b.NestedQueueControlList.length;tt++)b.NestedQueueControlList[tt].control.config.skipCompletionCheck=!0;break}}else this.pendingEditInGridId=null,c=null;this.pendingActionData=$rql.isNull(e.rql.data,e.rql.argument);this.pendingActionContext=e.rql.context;l=e.rql.action==="save";this.config.SaveAction=l&&v;v&&e.rql.action&&this.config.isFabric&&($rql.ui.applyContainerOverlay(h),this.removeControlOverlay=h)}var ct=e&&e.rql&&e.rql.id&&e.rql.redirect==="true"?e.rql.id:null,lt=e&&e.rql&&e.rql.id&&e.rql.openmodal==="true"?e.rql.id:null,at=e&&e.rql&&e.rql.id&&e.rql.toast==="true"?e.rql.id:null,y=this.getUpdates(d,ot),vt=y.length>0||a.data.length>0;return(o.markedAsChanged&&(o.markedAsChanged=!1,vt=!0),k=e&&e.rql&&e.rql.id&&e.rql.id.startsWith("__expression__"),vt||o.ShadowStoreId||k||!o.State.EditInPlace&&this.pendingAction!=="notify"||o.onNewLookupSaved||o.onEditLookupSaved?l||y.length>0||o.ShadowStoreId||k?(s={Save:l,State:o.State.EditInPlace||o.State.NewInPlace||o.State.BulkUpdate||o.State.New&&!k?o.State.Current:l?"Read":"Edit",Updates:o.Form?y:y.addRange(a.data),$e:h,SaveEditInGridRequest:c?c.MultiLevel?null:c:null,SaveEditInGrid2Request:c?c.MultiLevel?c:null:null},l&&ct&&(s.RedirectId=ct+"="+(e.rql.valuewhenvalid!=null?e.rql.valuewhenvalid:e.rql.value)),lt&&(s.ModalId=lt+"="+(e.rql.valuewhenvalid!=null?e.rql.valuewhenvalid:e.rql.value),v&&(this.$ModalElement=h)),l&&at&&(s.ToastId=at+"="+(e.rql.valuewhenvalid!=null?e.rql.valuewhenvalid:e.rql.value)),k&&(s.CalculateNow=!0),o.Form?s.UpdatesWhenValid=a.data:s.Validate=$rql.bool(this.pendingAction),!l&&y.length>0&&(this.hasPendingUpdates=!0),l&&(o.onNewLookupSaved||o.onEditLookupSaved)&&(o.onNewLookupSaved?(s.NewLookupSavedCallBack=o.onNewLookupSaved,s.ClearLookupCallBack=o.onClearLookup):s.EditLookupSavedCallBack=o.onEditLookupSaved),e.rql&&e.rql.invoke&&e.rql.id&&(s.Invoke=e.rql.invoke+"="+e.rql.id),h&&h.closest(".modal.show").length>0&&(s.ValidateModal=h.closest(".modal.show").attr("id"),o.Form&&s.Updates&&a.data.length>0),this.refresh(s,u,null,t)):l&&y.length==0&&(this.cancel(),this.removeControlOverlay&&($rql.ui.removeContainerOverlay(this.removeControlOverlay),delete this.removeControlOverlay)):this.raiseSaved(this.pendingAction,!1),p)?(t.stopPropagation(),!1):this}}}},saveWithPendingAction:function(n){this.pendingAction=n;this.save()},update:function(t,i,r,u,f,e){var o=this,c=function(u){var f=o.newValueCollection(),e=o.collectValues(f).getUpdates(f,o.values,t?t.compareMethod:null);t&&t.data&&e.addRange(t.data);o.refresh({State:o.config.State.Current,Updates:e},i?i(r):n.noop(),null,u)},s,l,h;if(e&&n(e).length>0&&n(e).closest(".select2-container--material.select2-container--open").length>0&&n(e).attr("aria-labelledby")){if(s=n(e).attr("aria-labelledby").match(/^select2-(\w+)-container$/),s&&s.length>1&&(l=s[1],h=this.$.find($f("select#{0}",l)),h.length>0))h.off("select2:close").on("select2:close",c)}else(e||!this.isBlockingActivityActive())&&c(e)},setPostbackControlId:function(t){var i=n(t.currentTarget);this.postbackControlId=this.getControlId(i)},checkUnsavedChanges:function(n,t){if(n.stopPropagation(),!this.suspendCompletionCheck||!(Date.now()-this.suspendCompletionCheck<1e3)){var i=this.config;if(this.isVisible()&&!i.skipCompletionCheck&&i.State&&(i.State.Edit||i.State.EditOnly||i.State.New||i.State.EditInPlace||i.State.NewInPlace||i.State.BulkUpdate)){if(!i.containsSelfSavingControls&&!this.$.find("a:visible:not([rql-id])[rql-action='save'],button:visible[rql-action='save']").length)return;if(this.hasUnsavedChanges())return n.isTrigger?(t&&t.forms.add(this),!1):(n.preventDefault(),$rql.i18n.strings.UnsavedChanges)}}},getUpdatesInternally:function(){var t=this.values,n=this.newValueCollection();return this.collectValues(n,null,!0),this.getUpdates(n,t)},hasUnsavedChanges:function(){return this.config.ShadowStoreId||this.config.markedAsChanged||this.getUpdatesInternally().length>0},registerSelfSavingControlCallback:function(n){this.selfSavingControlCallbacks||(this.selfSavingControlCallbacks=[]);this.selfSavingControlCallbacks.push(n)},unregisterSelfSavingControlCallback:function(n){if(this.selfSavingControlCallbacks){var t=this.selfSavingControlCallbacks.indexOf(n);t>=0&&this.selfSavingControlCallbacks.splice(t,1)}},hasSelfSavingControls:function(){return this.selfSavingControlCallbacks&&this.selfSavingControlCallbacks.length!==0},saveSelfSavingControls:function(){var r,t,i;if(this.hasSelfSavingControls()){for(r=this,t=n.Deferred(),this.pendingSavesOfSelfSavingControls=0,this.savingOfSelfSavingControlsFailed=!1,i=0;i<this.selfSavingControlCallbacks.length;i++)this.pendingSavesOfSelfSavingControls++,this.selfSavingControlCallbacks[i]().done(function(){r.processSelfSavingControlSaveSuccess(t)}).fail(function(){r.processSelfSavingControlSaveFail(t)});return t.promise()}return null},processSelfSavingControlSaveSuccess:function(n){this.processSelfSavingControlSave(n)},processSelfSavingControlSaveFail:function(n){this.savingOfSelfSavingControlsFailed=!0;this.processSelfSavingControlSave(n)},processSelfSavingControlSave:function(n){this.pendingSavesOfSelfSavingControls--;this.pendingSavesOfSelfSavingControls===0&&(this.savingOfSelfSavingControlsFailed?n.reject():n.resolve())},processBlockingActivityStart:function(){this.blockingActivityIsActive=!0},processBlockingActivityStop:function(){this.blockingActivityIsActive=!1},isBlockingActivityActive:function(){return this.blockingActivityIsActive},dispose:function(){n(window).off("beforeunload."+this.config.uniqueRqlId,this.checkUnsavedChanges);t.callBaseMethod(this,"dispose")}};t.registerClass("$rql.ui.controls.form",$rql.ui.controls.storeview)})(jQuery);
(function(n){var t=$rql.ui.controls.header=function(n,i){t.initializeBase(this,[n,i])};t.prototype={hideDrawer:function(){var t=this.$drawer[0]&&this.$drawer[0].style&&this.$drawer[0].style.display=="none";t||this.$drawer.hide();this.isMobile()&&n(this.config.contentSelector).show()},initialize:function(t){if(this.config=n.extend({contentSelector:"[rql-role='menu'] > [rql-page] > *:not([rql-role='view-nav']), [rql-view] > *:not(.mobile-header), [rql-role='footer']"},t),$rql.api.uiVersion<=2)this.$.on("click","a",this.hideDrawer);this.$drawer=this.$.find("[rql-role='drawer']")},showDrawer:function(){this.$drawer.show();n(this.config.contentSelector).hide()},toggleDrawer:function(){this[(this.$drawer.is(":visible")?"hide":"show")+"Drawer"]()}};t.registerClass("$rql.ui.controls.header",$rql.ui.controls.view)})(jQuery);
(function(n){var i=Sys.CultureInfo.CurrentCulture.dateTimeFormat,t=Sys.CultureInfo.CurrentCulture.numberFormat,u=/[0-9]/g,c=t.NumberGroupSeparator.charCodeAt(0)==160||t.NumberGroupSeparator.charCodeAt(0)==32?"\\s":t.NumberGroupSeparator=="."?"\\.":t.NumberGroupSeparator,v=[t.CurrencySymbol,t.NumberGroupSeparator],e=[i.DateSeparator,i.TimeSeparator," "],f=(i.AMDesignator+i.PMDesignator).toLowerCase().split("").distinct().join(""),l=f==""?null:l=new RegExp($f("[{0}]+",f),"gi"),a=new RegExp($f("[0-9\\{0}\\{1}\\s{2}]",i.DateSeparator,i.TimeSeparator,f),"i"),y={Date:{inputRegex:new RegExp($f("[0-9\\{0}]",i.DateSeparator)),mask:$rql.i18n.datePattern},DateTime:{inputRegex:a,mask:$rql.i18n.dateTimePattern},Time:{inputRegex:new RegExp($f("[0-9\\{0}\\s{1}]",i.TimeSeparator,f),"i"),mask:$rql.i18n.timePattern},Timestamp:{inputRegex:a,mask:$rql.i18n.dateTimePattern},Integer:{inputRegex:new RegExp($f("[0-9\\{0}\\{1}{2}]",t.CurrencySymbol,t.NegativeSign,c)),mask:"-99,999"},Number:{inputRegex:new RegExp($f("[0-9\\{0}\\{1}\\{2}{3}]",t.CurrencySymbol,t.NumberDecimalSeparator,t.NegativeSign,c)),mask:"-9,999,999.99"},String:{}},r=$rql.ui.controls.input=function(n,t){r.initializeBase(this,[n,t])},o,s,h;r.regex={email:/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/,number:/^\d+$/,phone:/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/};r.prototype={initialize:function(){var t=this.attrs=this.$.attrs(),i=this.config=n.extend({autoFormatValue:!0,dataType:$rql.api.dataTypes[t.rql.type],formatValue:!0,htmlType:t.type,id:t.rql.id,type:t.rql.type,required:t.rql.required?!0:!1},y[t.rql.type]),u=i.dataType,r=this.$.rqlval(),f;t.rql.mask&&(i.mask=t.rql.mask);t.rql.explicitmask&&(i.explicitmask=t.rql.explicitmask);t.rql.mask||t.rql.explicitmask||!i.mask||!this.$.attr("allow-negative")&&i.mask.startsWith("-")&&(i.mask=i.mask.substring(1));this.setItemsToRemoveOnBlur(t.rql.blurremove);this.onInitialize&&this.onInitialize();u&&r&&!this.$.val()&&($rql.api.isIPhone11&&i.htmlType=="number"&&!i.autoFormatValue&&(r=parseFloat(r).toLocaleString()),this.$.val(i.autoFormatValue?u.format(u.fromJson(r),i.formatString):u.parse(r)),f=this.$.attr("rql-dateformat"),f&&f.length>0&&this.adjustValue());this.$.on({blur:this.onBlur,change:this.onChange,keypress:this.onKeyPress,keydown:this.onKeyDown})},setItemsToRemoveOnBlur:function(n){n&&(this.config.removeitemsRegEx=new RegExp(n,"g"))},onKeyDown:function(n){n.which==13&&this.onBlur&&this.onBlur()}};r.registerClass("$rql.ui.controls.input",$rql.ui.controls.view);o=$rql.ui.controls.numericInput=function(n,t){o.initializeBase(this,[n,t])};o.prototype={onBlur:function(){var r=this.config,e=r.dataType,n=this.$.val(),f=n==="0",i,u;n||f?(n=n.replace(v,""),($rql.api.isAndroid||$rql.api.isUWP||$rql.api.isIPhone11)&&r.htmlType=="number"&&n&&n.length>0&&(n=parseFloat(n).toLocaleString()),r.removeitemsRegEx&&(n=n.replace(r.removeitemsRegEx,"")),i=e.parse(n),$rql.isUndefined(i)||i!==0||(f=!0),isNaN(i)?this.$.val(""):(i||f)&&(r.autoFormatValue?(u=e.format(i,r.formatString),u&&!r.maxSeparators&&(u=u.split(t.NumberGroupSeparator).join("")),this.$.val(u)):this.$.val(i)),this.$.attr("rql-value",i||f?e.toJson(i):"")):this.$.attr("rql-value","")},onInitialize:function(){var n=this.config,i=n.mask,e,r=0,f;if(n.autoFormatValue=n.htmlType!=="number",n.mask){for(i="",f=0;f<n.mask.length;f++)switch(n.mask.charAt(f)){case",":i+=t.NumberGroupSeparator;break;case".":i+=t.NumberDecimalSeparator;break;case"$":i+=t.CurrencySymbol;break;default:i+=n.mask.charAt(f)}n.mask=i;(e=i.indexOf(t.NumberDecimalSeparator))===-1?(n.maxDecimals=0,n.maxDecimalDigits=0):(n.maxDecimals=1,n.maxDecimalDigits=$rql.isNull(i.substr(e+1).match(u),[]).length,r++);r+=n.maxCurrencySymbols=i.countOf(t.CurrencySymbol);r+=n.maxNegativeSymbols=i.countOf(t.NegativeSign);r+=n.maxSeparators=i.countOf(t.NumberGroupSeparator);n.maxIntegerDigits=i.length-n.maxDecimalDigits-r;n.type==="Number"&&(n.formatString="{0:n"+n.maxDecimalDigits+"}")}},onKeyPress:function(n){var i,s,f,h,c;if(!(n.ctrlKey||n.altKey||n.metaKey||n.which<32)){var r=this.config,l=r.mask,o=String.fromCharCode(n.which),e=!1;return r.inputRegex.test(o)&&(i=this.$.val(),s=this.$.selection(),r.htmlType!="number"&&($rql.api.isUWP&&(s.start=this.$[0].selectionStart,s.end=this.$[0].selectionEnd),i=[i.slice(0,s.begin),o,i.slice(s.end)].join("")),($rql.api.isAndroid||$rql.api.isIPhone11)&&r.htmlType=="number"&&i&&i.length>0&&(i=parseFloat(i).toLocaleString()),i.length<=l.length&&(e=i.countOf(t.CurrencySymbol)<=r.maxCurrencySymbols&&i.countOf(t.NumberDecimalSeparator)<=r.maxDecimals&&i.countOf(t.NegativeSign)<=r.maxNegativeSymbols&&i.countOf(t.NumberGroupSeparator)<=r.maxSeparators,e&&(f=i.split(t.NumberDecimalSeparator),($rql.api.isAndroid||$rql.api.isUWP||$rql.api.isIPhone11)&&r.htmlType=="number"?i.length+1<=l.length&&o!=t.NumberDecimalSeparator&&o!=t.NumberGroupSeparator&&o!=t.NegativeSign&&(h=!1,c=!0,f[0]&&(h=$rql.isNull(f[0].match(u),[]).length+1<=r.maxIntegerDigits),f[1]&&(c=$rql.isNull(f[1].match(u),[]).length+1<=r.maxDecimalDigits),e=h||f[1]?h&&!c?!1:h||c:!0):(f[0]&&(e=$rql.isNull(f[0].match(u),[]).length<=r.maxIntegerDigits),e&&f[1]&&(e=$rql.isNull(f[1].match(u),[]).length<=r.maxDecimalDigits))))),e}},adjustValue:function(){this.onBlur()}};o.registerClass("$rql.ui.controls.numericInput",r);s=$rql.ui.controls.maskedInput=function(n,t){s.initializeBase(this,[n,t])};s.prototype={onInitialize:function(){var n=this.config.explicitmask,t=this.config;n&&(this.maskcontrol=t.type=="text"?this.$.mask(n):this.$.numericmask(n))},adjustValue:function(){this.maskcontrol.onblur()},stripValue:function(){this.maskcontrol.onstripValue()}};s.registerClass("$rql.ui.controls.maskedInput",r);h=$rql.ui.controls.temporalInput=function(n,t){h.initializeBase(this,[n,t])};h.prototype={createBuffer:function(){var f="%",t=this.config.mask.replace("tt",this.config.designatorMask),u=[],n="",r;for(t=t.replaceAll(i.DateSeparator,"%"),t+=f,r=0;r<t.length;r++)e.contains(t[r])||t[r]===f?(n!=""&&(["d","h","H","M"].contains(n)&&(n+=n),u.add(n),n=""),u.add(t[r])):n+=t[r];return n!=""&&u.add(n),u.pop(),u.join("").replaceAll(f,i.DateSeparator)},onBlur:function(){var s=this.config.dataType,h=this.$.attr("rql-dateformat"),c=this.$.attr("id"),v,l,r,o;if(this.config.type==="Date"&&h&&h.length>0){v=this.$.attr("rql-value");l=s.fromJson(v);l&&this.$.val(s.format(l,h));return}if(r=this.$.val(),r){for(var u=0,t=this.config.mask.split(""),n=0;u<r.length&&n<t.length;)if(u<r.length){if(r[u].isNumber())e.contains(t[n])?n++:t[n++]=r[u++];else if(r[u]==t[n])n++,u++;else if(t[n]=="t"&&f.contains(r[u].toLowerCase()))t[n++]=r[u++];else if(t[n]=e.contains(t[n])?t[n]:"",n++,e.contains(r[u]))for(o=n;o<t.length;o++)if(t[o]===r[u]){n=o;break}}else t[n]=t[n]==i.DateSeparator?t[n]:"",n++;r=t.join("").replace("tt",i.AMDesignator).replace(/t/g,"").trim().replace("d","").replace("yyyy",(new Date).getFullYear());var a=s.parse(r),y=a!==null&&!isNaN(a.getTime()),p=y?s.toJson(a):"";this.$.attr("rql-value",p);y?$rql.events.trigger("temporalInputValidated",{elementId:c}):$rql.events.trigger("temporalInputError",{elementId:c,value:r,format:this.config.mask})}else this.$.attr("rql-value",""),$rql.events.trigger("temporalInputValidated",{elementId:c})},adjustValue:function(){this.onBlur()},onInitialize:function(){var n=this.config,u,t,r;n.mask&&(n.maxDesignators=n.mask.contains("t")?Math.max(i.AMDesignator.length,i.PMDesignator.length):0,u=n.mask.contains("t")?Math.max(i.AMDesignator.countOf(" "),i.PMDesignator.countOf(" ")):0,n.designatorMask=[].init("t",n.maxDesignators).join(""),n.mask=n.mask.replace(/\//g,i.DateSeparator).replace(/\:/g,i.TimeSeparator),t=n.mask=this.createBuffer(),r=0,r+=n.maxDateSeparators=t.countOf(i.DateSeparator),r+=n.maxTimeSeparators=t.countOf(i.TimeSeparator),r+=n.maxSpaces=t.countOf(" "),n.maxDigits=t.length-n.designatorMask.length-r,n.maxSpaces+=u)},onKeyPress:function(n){var f,e;if(!(n.ctrlKey||n.altKey||n.metaKey||n.which<32)){var r=this.config,c=r.mask,o=String.fromCharCode(n.which),s=!1;if(r.inputRegex.test(o)){var t=this.$.val(),h=this.$.selection(),t=[t.slice(0,h.begin),o,t.slice(h.end)].join("");t.length<=c.length&&(f=!0,$rql.i18n.timePattern.contains("t")&&(e=$rql.isNull(t.match(l),[]),e.length>0&&(f=e[0].trim().length<=r.maxDesignators)),s=t.countOf(i.DateSeparator)<=r.maxDateSeparators&&t.countOf(i.TimeSeparator)<=r.maxTimeSeparators&&t.countOf(" ")<=r.maxSpaces&&$rql.isNull(t.match(u),[]).length<=r.maxDigits&&f)}return s}}};h.registerClass("$rql.ui.controls.temporalInput",r);n.fn.rqlval=function(t){var r,i;if(t)try{return r=$rql.ui.get(this.val(t)),n.isFunction(r.onBlur)&&r.onBlur(),this}catch(u){$log.error("Error setting rql value of field ",u)}else if(this.length)return(i=this.attrs(),["radio","checkbox"].contains(i.type)&&!this[0].checked)?"":(t=i.rql.type==="String"||i.rql.type==="Binary"||i.rql.type==="HRef"?this.val():i.rql.value?i.rql.value:this.val(),$rql.isString(t))?t.trimmer():(t||this.attr("rql-role")!=="multi-select-dropdown"||(t=""),$rql.isUndefined(t)?null:t);return null}})(jQuery);
(function(n){var i=$rql.ui.controls.lookupbase=function(n,t){i.initializeBase(this,[n,t])},t;i.prototype={initialize:function(){this.on({newModalTarget:this.onNewModalTarget,editModalTarget:this.onNewModalTarget})},onNewModalTarget:function(i){var o=this.config,r=n(i.currentTarget),u,f,e;o.LookupTarget=i;u=r.attr("rql-action")==="editModalTarget"?"edit":"new";t||(t=$rql.ui.div("new-lookup-dialog"));t.html($rql.ui.templates("lookup-dialog").render({Title:o.Header,Content:!0}));f=t.find("[rql-role='content']");e=u==="edit"?this.createModalLookupView({Context:{StoreId:r.attr("rql-storeid")},StoreId:r.attr("rql-storeid"),onEditLookupSaved:this.onEditLookupSaved,Arguments:r.attr("rql-arguments")},{resize:this.onModalLookupResize,cancelled:this.onModalLookupCancel},f,u):this.createModalLookupView({StoreId:"_NewLookup",onNewLookupSaved:this.onNewLookupSaved,Arguments:r.attr("rql-arguments")},{resize:this.onModalLookupResize,cancelled:this.onModalLookupCancel},f,u);e&&e.control.refresh({State:"EditInPlace"});t.show().widgetize();$rql.ui.showModal(t.find('[rql-role="modal"]'),{onHidden:function(){t&&t.remove();t=null;var i=n(".modal.show:visible").first();i.length>0&&(n("body").addClass("modal-open"),$rql.ui.raiseAboveBackdrop(i),$rql.ui.stopScrolling())}})},createModalLookupView:function(t,i,r,u){var c=$rql.ui.controls.form,o=this.config.AppName,s=null,h=u==="edit"?this.config.EditView:this.config.NewView,e,f;h&&(e=h.split("."),o=e[0],s=e[1]);u==="edit"&&!this.config.EditView&&t.StoreId&&(t.StoreId=t.StoreId+"_EditLookup");f=n.extend({AppName:o,ViewName:s,Type:"Form",IsInPlace:!0,Resize:i.resize},t);f.control=new c(r,f);f.control.on(i);return f},onNewLookupSaved:function(n){this.closeLookupModal();this.updateValue(n,this.config.LookupTarget)},onEditLookupSaved:function(n){this.closeLookupModal();var t=this.config;t.StoreId=n;t.StoreWasChanged=!0;this.raiseChangeEvent()},onModalLookupCancel:function(){this.closeLookupModal()},onModalLookupResize:function(){},closeLookupModal:function(){t&&(this.config.isFabric?t.find(".modal").modal("hide"):t.hide(),this.hideModals(!0))},updateValue:function(n,t){var i=this.config;i.Empty=n==null||n=="";i.StoreId=n;i.Value="";this.hideModals(!1,t,!1,!0);this.raiseChangeEvent()},clear:function(){var n=this.config;n.Empty=!0;n.StoreId=n.Value="";this.raiseChangeEvent()}};i.registerClass("$rql.ui.controls.lookupbase",$rql.ui.controls.view)})(jQuery);
(function(n){var i=$rql.ui.controls.lookup=function(n,t){t.isFabric=$rql.api.uiVersion>2;i.initializeBase(this,[n,t])},t;i.prototype={initialize:function(t){i.callBaseMethod(this,"initialize");var f=t.SelectView||t.View,u=f.split("."),r=this.config=n.extend({AppName:u[0],RequiredMessage:t.ValidationErrorMessage,serviceUrl:$rql.api.baseUrl.pathname+"form/",ViewName:u[1],ViewStoreId:t.SelectViewStoreId||"_New",iOSMobile:$rql.api.isIOS&&$rql.api.uiVersion>2&&$rql.ui.isMobile()},t);r.Form.on("collectValues",this.onCollectValues);r.Empty=r.Value?!1:!0;this.config.Value&&(this.config.Value=$rql.htmlEncode(this.config.Value));this.config.ReadOnlyValue&&(this.config.ReadOnlyValue=$rql.htmlEncode(this.config.ReadOnlyValue));r.IsModalNewTarget=r.NewTarget=="Modal";this.on({select:this.select,clear:this.clear}).render()},onCollectValues:function(n){var t=this.config;t.ReadOnly||(n.values.add(t.ContextName+"__lookup_"+t.Id,n.excludeDefaults&&t.IsDefault?"":$f("{4}{0}||{1}||{2}||{3}",t.StoreId,t.View,t.Select,t.Value,t.StoreWasChanged?"E||":"")),n.values.processControlWithDefault(this.$,!n.excludeDefaults&&t.IsDefault),t.StoreWasChanged&&delete t.StoreWasChanged)},onDispose:function(){this.config.Form.off("collectValues",this.onCollectValues)},raiseChangeEvent:function(){this.raise("change",{sender:this,type:"lookup",currentTarget:this.$[0],stopPropagation:n.noop})},onItemSelected:function(t,i){t.stopPropagation();t.preventDefault();var r=n(t.currentTarget).attrs();return i||(i=r.href.splitAndTrim("/").last()),this.updateValue(i,t),!1},queueShown:function(i){!this.isMobile()&&i.config.Controls.ShowFilters&&i.editFilters();this.config.iOSMobile&&t&&(i&&i.$.find("[rql-role='queueFixedActionButtons']").hide(),n("html, body").scrollTop(t.offset().top),$rql.api.isIOS>=17&&n("body").hasClass("modal-open")&&n("body").css("position",""))},lookupShown:function(){},render:function(){var n=this.config.ReadOnly||this.config.Disabled?"lookup-readonly":"lookup";return this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly,this.config.RenderAsGroup&&this.config.Disabled&&(this.config.ReadOnly=!0),this.config.StoreId||(this.config.AllowNavigate=!1),this.$.html($rql.ui.templates(n).render(this.config,{"lookup-navigate":$rql.ui.templates("lookup-navigate").html})),this.widgetize(),this},select:function(){var i=this.config,r=this.config.Form.config,e=this.config.Id+".lookup-dialog",o=this.config.Id,f,u;t||(t=$rql.ui.div("lookup-dialog",null,!0));t.html($rql.ui.templates("lookup-dialog").render({Title:i.Header,iOSMobile:i.iOSMobile}));f=t.find("[rql-role='content']");i.IsCustomLookup?(u=i.RqlArguments||"",new $rql.ui.controls.form(f[0],{Id:e,Type:"Form",AppName:i.AppName,StoreId:i.ViewStoreId,Context:{StoreId:i.Form?i.Form.config.StoreId:null,AppName:r.AppName,StorePath:i.ContextStorePath},onItemSelected:this.onItemSelected,ViewName:i.ViewName,Arguments:$rql.safeHtmlDecode(u.startsWith("?")?u.substring(1):u),IsCustomLookup:!0,CustomLookupInvokeExecute:i.SelectViewExecute}).on("loaded",this.lookupShown).show()):new $rql.ui.controls.queue(f[0],{Id:e,LookupId:o,AllowActions:!1,AppName:i.AppName,Context:{StoreId:$rql.isNull(r.ShadowStoreId,r.StoreId),AppName:r.AppName,StorePath:i.ContextStorePath},onItemSelected:this.onItemSelected,PageFilters:null,PageIndex:0,PageSize:0,HideSave:!0,UseDefaultFilter:!0,ViewName:i.ViewName,IsLookup:!0,AccessToken:i.QueueAccessToken,DualModeRequestOnline:i.DualModeRequestOnline,DualModeRequestOnlineArguments:i.DualModeRequestOnlineArguments,Arguments:r.Arguments}).on("loaded",this.queueShown).show();t.widgetize();$rql.ui.showModal(t.find('[rql-role="modal"]'),{onHidden:function(){t&&t.remove();t=null;var i=n(".modal.show:visible").first();i.length>0&&(n("body").addClass("modal-open"),$rql.ui.raiseAboveBackdrop(i),$rql.ui.stopScrolling())}})}};i.registerClass("$rql.ui.controls.lookup",$rql.ui.controls.lookupbase)})(jQuery);
(function(n){var i={RequiredMessage:$rql.i18n.strings.RequiredField,template:$rql.ui.templates("lookupinplace"),readOnlyTemplate:$rql.ui.templates("lookup-readonly"),navigateTemplateHtml:$rql.ui.templates("lookup-navigate").html},t=$rql.ui.controls.lookupinplace=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(r){t.callBaseMethod(this,"initialize");var u=r&&r.View?r.View.split("."):null,f=u&&u.length===2?{AppName:u[0],ViewName:u[1]}:{};if(this.config=n.extend({Messages:{}},i,f,r,this.config),this.config.Value&&(this.config.Value=$rql.htmlEncode(this.config.Value).replace(/\"/g,"&quot;")),this.config.ReadOnlyValue&&(this.config.ReadOnlyValue=$rql.htmlEncode(this.config.ReadOnlyValue)),this.config.Empty=this instanceof $rql.ui.controls.textboxsearch?this.config.Value?!1:!0:this.config.StoreId?!1:!0,this.config.AllowClear=!!(this.config.StoreId||this.config.Value),this.config.AllowNavigate=this.config.AllowNavigate&&!!this.config.StoreId,this.config.ValidationErrorMessage&&(this.config.RequiredMessage=this.config.ValidationErrorMessage),this.config.IsModalNewTarget=this.config.NewTarget=="Modal",!this.config.DoNotCollectValues)this.config.Form.on("collectValues",this.onCollectValues);this.on({clear:this.clear});this.render()},dispose:function(){this.detachSearchInPlace();this.off();this.config.DoNotCollectValues||this.config.Form.off("collectValues",this.onCollectValues);t.callBaseMethod(this,"dispose")},render:function(){var n=this.config.ReadOnly||this.config.Disabled?this.config.readOnlyTemplate:this.config.template;this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly;this.$.html(n.render(this.config,{"lookup-navigate":this.config.navigateTemplateHtml}));this.widgetize()},onRendered:function(){this.$input=this.$.find("input[rql-role='searchinplace-value']");this.$toggle=this.$.find("a[rql-role='lookup-toggle']");this.attachSearchInPlace()},attachSearchInPlace:function(){var n=this.config;if(!(n.ReadOnly||n.Disabled)){this.detachSearchInPlace();this.searchInPlace=new $rql.ui.behaviors.searchinplace(this.$,{$:this.$,$input:this.$input,$toggle:this.$toggle&&this.$toggle.length===1?this.$toggle:undefined,StoreId:n.EditInGrid?n.EditInGridStoreId:n.Form.config.ShadowStoreId||n.Form.config.StoreId,Form:n.Form,View:n.View,QueueAccessToken:n.QueueAccessToken,SearchLimit:n.SearchLimit,Field:n.Field,CloseOnEnter:n.SearchAllowUnresolvedText,Messages:{NoSearchResults:n.Messages.NoSearchResults},DualModeRequestOnline:n.DualModeRequestOnline,DualModeRequestOnlineArguments:n.DualModeRequestOnlineArguments});this.searchInPlace.on("close",this.onSearchClose)}},detachSearchInPlace:function(){this.searchInPlace&&(this.searchInPlace.off("close",this.onSearchClose),this.searchInPlace.dispose(),this.searchInPlace=null)},onCollectValues:function(n){var t=this.config,i;t.ReadOnly||(i=this.$input.val(),!t.StoreId&&i&&t.SearchAllowUnresolvedText?n.values.add(t.ContextName+"__lookup_"+t.Id,n.excludeDefaults&&t.IsDefault?"":$f("U||{0}||{1}",t.Field,i)):n.values.add(t.ContextName+"__lookup_"+t.Id,n.excludeDefaults&&t.IsDefault?"":$f("{0}||{1}||{2}||{3}",t.StoreId,t.View,t.Select,t.Value)),n.values.processControlWithDefault(this.$,!n.excludeDefaults&&t.IsDefault))},raiseChangeEvent:function(){this.config.DoNotCollectValues?this.render():this.raise("change",{sender:this,type:"lookup",currentTarget:this.$[0],stopPropagation:n.noop})},clear:function(){var n=this.config;n.Empty=!0;n.AllowClear=!1;n.StoreId=n.Value="";this.$input.val("");this.raiseChangeEvent()},onSearchClose:function(n){var t=this.config,i;n.storeId?(t.Empty=!n.storeId,t.AllowClear=!0,t.StoreId=n.storeId,this.config.DoNotCollectValues&&(t.Value=$rql.htmlEscape(n.value)),this.raiseChangeEvent()):this.config.DoNotCollectValues||(i=n.value||this.$input.val(),i!==t.Value&&(t.SearchAllowUnresolvedText&&!n.cancel?(t.StoreId="",t.Value=i,t.Empty=!0,t.AllowClear=!!t.Value,this.$input.val()!==i&&this.$input.val(i),this.$input.nextAll("a[rql-role='lookup-navigate']").remove(),t.AllowClear||this.$input.nextAll("a[rql-action='clear']").remove(),t.SearchUnresolvedPostback&&!n.cancelPostback&&this.raiseChangeEvent()):i||n.cancel?this.$input.val(this.config.Value):this.clear()))}};t.registerClass("$rql.ui.controls.lookupinplace",$rql.ui.controls.lookupbase)})(jQuery);
(function(n){var i={template:$rql.ui.templates("textboxsearch"),readOnlyTemplate:$rql.ui.templates("textboxsearch-readonly")},t=$rql.ui.controls.textboxsearch=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(r){$rql.api.uiVersion>2&&(i.readOnlyTemplate=$rql.ui.templates("textboxsearch"));this.config=n.extend({},i,r,{ElementId:this.elementId});this.config.IsDesktop=this.isDesktop();this.config.DoNotCollectValues=!0;this.config.ShowRefreshButton&&$rql.ui.controls.textinput.parseRefreshButtonOptions(this.config);t.callBaseMethod(this,"initialize")},raiseChangeEvent:function(){this.render()}};t.registerClass("$rql.ui.controls.textboxsearch",$rql.ui.controls.lookupinplace)})(jQuery);
(function(n){var i={RequiredMessage:$rql.i18n.strings.RequiredField,template:$rql.ui.templates("currency")},t=$rql.ui.controls.currency=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var f,u,r;for(this.config=n.extend({},i,t),f=this.config.Codes.split(","),this.config.ValidationErrorMessage&&(this.config.RequiredMessage=this.config.ValidationErrorMessage),this.config.Codes=[],u=0;u<f.length;u++)r=f[u].split("|"),this.config.Codes.push({Code:r[0],Label:r[1],Meta:r[2].replace("#","|"),Selected:r[0]==this.config.Code});if(!this.config.EditInGrid)this.config.Form.on("collectValues",this.onCollectValues);this.on({codeChange:this.onCodeChange});this.render()},adjustInputWidth:function(){var n=this.config,t;n.Columns&&(t=$rql.ui.getTextWidthPercent(Array(parseInt(n.Columns)).join("Z"),n.PaddingPixels,this.$[0].offsetWidth),this.$.find(".input-group").css({width:t+"%"}))},render:function(){var n=this.config.template;this.config.ElementId=this.elementId;this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly;this.$.html(n.render(this.config));$rql.events.on("adjustInputWidth",this.adjustInputWidth);this.widgetize()},onRendered:function(){this.$input=this.$.find("input[rql-role='currency']");this.$select=this.$.find("select[rql-role='code']")},onCollectValues:function(n){var t=this.config,i,r;t.ReadOnly||(i=this.$input.rqlval(),r=this.$select.val(),i==""&&(r=""),n.values.add(t.ContextName+"__currency_"+t.Id,n.excludeDefaults&&t.IsDefault?"":$f("{0}|{1}",i,r)))},onCodeChange:function(){var n=this.$select.find("option:selected").attr("meta");n&&$rql.ui.get(this.$input).setItemsToRemoveOnBlur(n)},dispose:function(){this.off();this.config.EditInGrid||this.config.Form.off("collectValues",this.onCollectValues);this.$.off();this.$input&&this.$input.off();t.callBaseMethod(this,"dispose")}};t.registerClass("$rql.ui.controls.currency",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.listbase=function(n,i){t.initializeBase(this,[n,i])};t.prototype={dispose:function(){return this.onDispose&&this.onDispose(),this.disposeChildren().$.remove(),$log.debug("Disposed list component:"),$log.debug(this),this},disposeChildren:function(){var n=this;return $rql.api.uiVersion>2&&this.config.DataModel&&this.config.DataModel.ListBody&&this.config.DataModel.ListBody.Items&&this.config.DataModel.ListBody.Items.each(function(t){n.saveItemState("height-"+t.RqlItemId,n.config.ItemContainer.find($f('[rql-item="{0}"]',t.RqlItemId)).height())}),$rql.ui.dispose(this.$),this},decodeFromBase64:function(n){var t;try{t=atob(n)}catch(i){t=n}return t},decodeFromUnicodeBase64:function(n){var t,i;try{i=atob(n);t=this.fromBinary(i)}catch(r){t=n}return t},fromBinary:function(n){const t=new Uint8Array(n.length);for(let i=0;i<t.length;i++)t[i]=n.charCodeAt(i);const i=new Uint16Array(t.buffer);let r="";for(let n=0;n<i.length;n++)r+=String.fromCharCode(i[n]);return r},decodeHtml:function(n){return n.isEncoded()?$rql.safeHtmlDecode(window.atobUTF8(n)):n},saveItemState:function(n,t){var i=this.config.Form.getViewSetting(this.config.Id);i==null&&(i={});n&&(i[n]=t);this.config.Form.setViewSetting(this.config.Id,i)},getItemState:function(n){var t=this.config.Form.getViewSetting(this.config.Id)||{};return t[n]},extractContextName:function(t){var u="",r,i,e,f;return t&&t.length>0&&(i=t.find("[rql-id2]").addBack().filter("[rql-id2]"),i&&i.length===0?(i=t.find("[rql-id]").addBack().filter("[rql-id]"),r=n(i[0]).attr("rql-id")):r=n(i[0]).attr("rql-id2"),i&&i.length>0?u=r.substr(0,r.lastIndexOf("$i$"))+"$i$":(e=/\"ContextName\"\s?\:\s?\"(.*?)\"/i,f=e.exec(t[0].outerHTML),f&&(u=f[1]))),u},updateForm:function(n,t,i){var r=this.config;r.Form.disable();r.Form.setPostbackControlId&&r.Form.setPostbackControlId(n);r.Form.update(t,function(){r.Form.enable();i&&i()},null,null,null,n)},getFooterOptionsFromConfig:function(t){var r,u,i;if(t.Footer&&t.Footer.length>0){for(r={},u=Object.keys(t).filter(function(n){return n.indexOf("Footer")>-1}),i=0;i<u.length;i++)r[u[i]]=t[u[i]];return t.TooltipShowAsModal&&n.extend(r,{TooltipShowAsModal:!0,TooltipModalHeader:t.TooltipModalHeader,TooltipModalStyle:t.TooltipModalStyle}),r}return{}},process_input:function(n,t){var i=$rql.ui.controls.view.prototype.process_input(n,this.config.Form,this.config.WidgetEvents,this.preReorderRefreshValues);i&&(i.config.ControlIndex=t)},parseListOptions:function(t,i){var u=t.Options.decode(),r={},f;return i&&n.extend(r,i),u&&u.length>0&&(u=u.toLowerCase(),f=u.parseOptions(),f.map(function(n){n.config==="reorder"&&t.CanOrder?n.options.map(function(n){n.param==="orientation"&&n.value==="horizontal"?(delete r.ReOrderOrientationVertical,r.ReOrderOrientationHorizontal=!0):n.param==="placement"&&n.value==="left"?(delete r.ReOrderOptionsPlacedRight,r.ReOrderOptionsPlacedLeft=!0):n.param==="draganddrop"&&n.value==="true"?r.ReOrderDragAndDrop=!0:n.param==="buttoncss"&&(r.ReOrderButtonCss=n.value)}):n.config==="columnheader"?n.options.map(function(n){n.param==="css"&&(r.ColumnHeaderCss=n.value)}):n.config==="headeractions"?n.options.map(function(n){n.param==="showadd"?r.HeaderActionsShowAdd=t.CanAdd!==!1&&n.value==="true":n.param==="showdelete"?r.HeaderActionsShowDelete=t.CanRemove!==!1&&n.value==="true":n.param==="showreorder"?r.HeaderActionsShowReOrder=t.CanOrder!==!1&&n.value==="true":n.param==="buttoncss"&&(r.HeaderActionsButtonCss=n.value)}):n.config==="rowactions"?n.options.map(function(n){n.param==="showadd"?r.RowActionsShowAdd=t.CanAdd!==!1&&n.value==="true":n.param==="showdelete"&&n.value==="false"?r.RowActionsShowDelete=t.CanRemove!==!1&&n.value==="true":n.param==="placement"&&n.value==="left"?(delete r.RowActionsPlacedRight,r.RowActionsPlacedLeft=!0):n.param==="placement"&&n.value==="right"?(delete r.RowActionsPlacedLeft,r.RowActionsPlacedRight=!0):n.param==="showorder"?r.RowActionsShowOrder=t.CanOrder!==!1&&n.value==="true":n.param==="deleteiconhtml"?r.RowActionsDeleteIconHtml=$rql.safeHtmlDecode(n.value):(n.param="buttoncss")?r.RowActionsButtonCss=n.value:n.param==="orientation"&&(n.value==="vertical"||n.value==="verticaltop"||n.value==="verticalbottom"?(r.RowActionsVertical=!0,delete r.RowActionsHorizontal,n.value==="verticaltop"?r.RowActionsVerticalAlignTop=!0:n.value==="verticalbottom"&&(r.RowActionsVerticalAlignBottom=!0)):n.value==="horizontal"&&(r.RowActionsHorizontal=!0,delete r.RowActionsVertical))}):n.config==="itemsummary"&&n.options.map(function(n){n.param==="showalways"&&(r.ItemSummaryShowAlways=Boolean.parse(n.value))})})),r},decorateItems:function(n){if(n)for(var t=0;t<n.length;t++)n[t].IsFirstRow=t===0,n[t].IsLastRow=t===n.length-1},setPostbackControlForActionButtons:function(t){var s,h,l,u,c,a,f,i,r,o;if(this.config.Form&&this.config.Form.setPostbackControlId&&(s=this,t.attrs().rql.data&&(h=t.attrs().rql.data.split("$i$").clean(""),h.length>0))){if(l=h[0],h.length>1&&(u="",s.config.ListData?u=s.config.ListData.Id:s.config.ContextId&&(u=s.config.ContextId.split("$i$").clean(""),u=u[u.length-1]),l=h.first(function(n){return n.startsWith(u)})),c=this.config.Id.replace(/(:|\.|\[|\]|,|=|@|~)/g,"\\$1"),a=l.split("$"),a.length===2&&(c=a[1]),f=n.Event("update"),i=this.$.find($f("div[rql-item={0}]",c)),i.length===0&&(i=this.$.find($f("tr[rql-item={0}]",c))),t.attrs().rql.action==="Insert"&&i.length===0){f.currentTarget=this.$.parent("[rql-id2]")[0];this.config.Form.setPostbackControlId(f);return}if(t.attrs().rql.action==="Delete"){if(r=i.siblings("[rql-item]"),r.length===0){f.currentTarget=this.$.parent("[rql-id2]")[0];this.config.Form.setPostbackControlId(f);return}if(r.length>0){var e=parseInt(i.attrs().rql.itemindex),v=this.$.children("div[rql-item]"),y=!1;isNaN(e)&&(e=i.index(),v=r,y=!0);e===1?i=r.first():e===v.length?i=r.last():y?i=r.eq(e-1):r.each(function(t,r){if(parseInt(n(r).attrs().rql.itemindex)===e-1)return i=n(r),!1})}}o=i.find("[rql-focusid]:visible, [rql-id]:visible");o.length===0&&(o=i.find("[rql-id]:visible, .select2 [role='combobox']:visible"));o.length>0&&(f.currentTarget=o[o.length-1],this.config.Form.setPostbackControlId(f))}},setItemMinHeight:function(){var t=this;this.$.find("div[rql-item]").each(function(i,r){var f="height-"+n(r).attr("rql-item"),u=t.getItemState(f);!isNaN(u)&&u>0&&n(r).css("min-height",u);t.saveItemState(f,null)})},removeItemMinHeight:function(){this.$.find("div[rql-item]").css("min-height","");this.$.parents("div[rql-item]").css("min-height","")}};t.registerClass("$rql.ui.controls.listbase",$rql.ui.controls.view)})(jQuery);
(function(n){function f(t,u,f,e,o){var h=n(u).addClass("accordion-group new-context"),p=h.attr("rql-item"),b=$f("{0}$i${1}${2}$i$",t.ContextId,t.Id,h.attr("rql-item")),c=$f("_{0}_{1}",t.Id,h.attr("rql-item")),k=n(u).children("a"),d=n(u).children("div"),w=t.Expanded,l,a,v,y,s;for(o&&o[c]!=null&&o[c]!==undefined&&(w=!o[c]),l=w||t.IncompleteItems&&t.IncompleteItems.indexOf(p)!==-1,k.wrap('<div class="accordion-heading">').attr(r).toggleClass("collapsed",!l).prepend($f('<i id="{0}_toggle" class="icon-{1} txt-gray-darker">',c,l?"minus":"plus")),d.attr("id",c).attr("class","accordion-body collapse"+(l?" in":"")).css("height",l?"auto":"0"),a=!1,v=0;v<t.ReadOnlyItems.length;v++)if(y=t.ReadOnlyItems[v],y.Id==p){a=y.ItemIsReadOnly;break}t.ReadOnly||t.ContextIsReadOnly||a&&(!e||t.Style!="Discussion"||t.DescendingOrder)&&(!f||t.Style!="Discussion"||!t.DescendingOrder)||(s={AddText:$rql.i18n.strings["List"+(e&&!t.DescendingOrder||f&&t.DescendingOrder?"Add":"Insert")],CanAdd:t.CanAdd,CanRemove:t.CanRemove,AllowOrder:t.AllowOrder,ItemId:b},a&&t.Style=="Discussion"&&(s.CanRemove=!1),t.AddLabel&&e&&(s.AddText=t.AddLabel),t.InsertLabel&&!e&&(s.AddText=t.InsertLabel),t.ColoredButtons&&(s.ColoredButtons=!0),t.Style=="Discussion"&&t.DescendingOrder?h.before(i.render(s)):h.after(i.render(s)))}var r={"class":"accordion-toggle","rql-action":"toggleIcon"},u="icon-plus icon-minus",i=$rql.ui.templates("list-item-buttons"),t=$rql.ui.controls.list=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var e=this,i=this.config=n.extend({CanAdd:!0,CanRemove:!0,Expanded:!0,AllowOrder:!0,AutoCollapse:!0},t),u=i.Form.getViewSetting(this.config.Id),r;for(i.Form.config&&i.Form.config.State.Current=="Read"&&i.Form.isForm()?(u={},this.config.Form.setViewSetting(this.config.Id,u)):this.ensureOpenStateOfIncompleteItems(u,i.IncompleteItems),this.$items=this.$.children("div[rql-item]"),r=0;r<this.$items.length;r++)f(i,this.$items[r],r===0,r+1===this.$items.length,u);this.on({Insert:this.onItemAction,Delete:this.onItemAction,MoveUp:this.onItemAction,MoveDown:this.onItemAction,toggleAllItems:this.onToggleAll,toggleIcon:this.onToggleIcon}).widgetize()},onRendered:function(){this.$listToggleIcon=this.$.find("> span > a > i");this.$itemHeaders=this.$items.children("div.accordion-heading");this.$itemBodies=this.$items.children("div[id].accordion-body");this.ensureStateOfListToggle()},ensureOpenStateOfIncompleteItems:function(n,t){var r,i,u;if(t&&t.length!==0&&n){for(r=!1,i=0;i<t.length;i++)u=$f("_{0}_{1}",this.config.Id,t[i]),n[u]&&(n[u]=!1,r=!0);r&&this.config.Form.setViewSetting(this.config.Id,n)}},ensureStateOfListToggle:function(){var n,t;if(this.$itemBodies.length!==0){for(n=0,t=0;t<this.$itemBodies.length;t++)n=n+(this.isItemCollapsed(this.$itemBodies[t])?1:-1);this.toggleIconClass(this.$listToggleIcon,this.$itemBodies.length!==n)}},updateItemsState:function(n){for(var i=this.config.Form.getViewSetting(this.config.Id)||{},t=0;t<n.length;t++)i[n[t].id]=this.isItemCollapsed(n[t]);this.config.Form.setViewSetting(this.config.Id,i)},isItemCollapsed:function(t){return!n(t).hasClass("in")},saveItemStates:function(){var t=this.config.Form.getViewSetting(this.config.Id),i,u,r,n,f;for(t==null&&(t={}),i={},u=this.$.find("div[id]"),r=0;r<u.length;r++)n=u[r],t[n.id]==null||t[n.id]===undefined?(f=this.config.AutoCollapse?!0:!this.config.Expanded,i[n.id]=f):i[n.id]=t[n.id];return this.config.Form.setViewSetting(this.config.Id,i),this},expandItems:function(n,t){n[(t?"add":"remove")+"Class"]("in").css("height",t?"auto":"0")},toggleIconClass:function(n,t){n.toggleClass("icon-plus",!t).toggleClass("icon-minus",t)},onItemAction:function(t){var i=n(t.currentTarget).attrs(),r;i.rql&&i.rql.data!=null&&(r=new $rql.ui.components.valueCollection,r.add(i.rql.data+"__list_Action",this.config.DescendingOrder&&this.config.Style=="Discussion"?i.rql.action+"_descending":i.rql.action),this.setPostbackControlForActionButtons(n(t.currentTarget)),this.saveItemStates().config.Form.update(r));t.stopPropagation()},onToggleAll:function(t){t.stopPropagation();var r=n(t.currentTarget).children("i"),u=this.$.children("div[rql-empty-item],div[rql-item]"),f=u.children("div.accordion-heading"),e=u.children("div[id].accordion-body"),i=r.hasClass("icon-plus");this.toggleIconClass(r,i);this.toggleIconClass(f.find("i"),i);f.find("a[rql-action='toggleIcon']").toggleClass("collapsed",!i);this.expandItems(e,i);this.updateItemsState(e)},onToggleIcon:function(t){t.stopPropagation();var i=n(t.currentTarget),f=i.closest("div[rql-empty-item],div[rql-item]").children("div[id].accordion-body"),r=i.children("i").hasClass("icon-plus");this.expandItems(f,r);i.toggleClass("collapsed",!r);i.children("i.icon-"+(r?"plus":"minus")).toggleClass(u);this.ensureStateOfListToggle();this.updateItemsState(f)},setPostbackControlForActionButtons:function(t){var o,s,h,r,i,u,f,c,e;if(this.config.Form&&this.config.Form.setPostbackControlId&&t.attrs().rql.data&&(o=t.attrs().rql.data.split("$i$").clean(""),o.length>0)){if(s=this.config.Id,h=o[0].split("$"),h.length===2&&(s=h[1]),r=n.Event("update"),i=this.$.find($f("div[rql-item={0}]",s)),t.attrs().rql.action==="Insert"&&i.length===0){r.currentTarget=this.$.parent("[rql-id2]")[0];this.config.Form.setPostbackControlId(r);return}if(t.attrs().rql.action==="Delete"){if(u=i.siblings("[rql-item]"),u.length===0){r.currentTarget=this.$.parent("[rql-id2]")[0];this.config.Form.setPostbackControlId(r);return}u.length>0&&(f=parseInt(i.attrs().rql.itemindex),c=this.$.children("div[rql-item]"),f===1?i=u.first():f===c.length?i=u.last():u.each(function(t,r){if(parseInt(n(r).attrs().rql.itemindex)===f-1)return i=n(r),!1}))}e=i.find("[rql-focusid]:visible, [rql-id]:visible");e.length>0&&(r.currentTarget=e[e.length-1],this.config.Form.setPostbackControlId(r))}}};t.registerClass("$rql.ui.controls.list",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.listgrid=function(n,i){i.isFabric=$rql.api.uiVersion>2;t.initializeBase(this,[n,i])},i=$rql.ui.templates("list-prompts"),r=$rql.ui.templates("list-grid"),u=$rql.ui.templates("list-grid-header"),f=$rql.ui.templates("list-grid-footer"),e=$rql.ui.templates("list-grid-controls-filler"),o={desktop:5,mobile:3,tablet:3};t.prototype={initialize:function(t){var i,r;if(t.ControlId=t.Id,t.ControlIndex&&(t.Id+="_"+t.ControlIndex),t.Id+="_"+t.Form.config.StoreId,t.ContentId=$f("{0}_{1}",this.$.attr("id"),$rql.newId()),t.stateKey=t.Id+":"+t.Form.config.StoreId+(t.Form.config.SelectedTag&&t.Form.config.SelectedTag.TabId?":"+t.Form.config.SelectedTag.TabId:"")+(t.ContextId?":"+t.ContextId:""),this.$.attr("id",t.ContentId),t.ContextRowId=this.$.closest("[rql-custom]").parent().attr("parent-item-id")?this.$.closest("[rql-custom]").parent().attr("parent-item-id"):t.Id,i=this.config=n.extend({CanAdd:!0,CanRemove:!0,AllowOrder:!0},t),i.childLists=[],this.clearReOrderData(),r=this.getItemState("reorder_onpostback_"+this.config.stateKey),this.saveItemState($f("reorder_{0}",this.config.stateKey),r),this.saveItemState("reorder_onpostback_"+this.config.stateKey,null),this.config.PageSize&&!this.getItemState($f("{0}_pageSize",this.config.Id))&&this.saveItemState($f("{0}_pageSize",this.config.Id),parseInt(this.config.PageSize)),i.isFabric)$rql.events.on("containerResized",this.onRefreshControls);this.parseGridLayout();this.render()},dispose:function(){this.config.isFabric&&this.$.off();this.disableDnDReordering()},render:function(){var i=this,t=this.config,r=t.ListGridSchema.ListGrids,u=t.ListData,f=i.$.parents("td").length===0||t.isFabric;t.ElementId=this.elementId;i.prepareItems(t,u,!0,f,r);i.refresh();t.Form.onBeforeSave=function(){var t=n.Deferred(),i=this.$.find("[rql-role=reorder-in]").toArray(),r=i.any(function(t){return!n(t).hasClass("hide")});return r?$rql.ui.confirm($rql.i18n.strings.ListReOrderConfirm,"",function(){t.resolve()},function(){t.reject()}):t.resolve(),t};this.on({Select:this.onSelect,SelectAll:this.onSelectAll,Insert:this.onItemAction,MoveUp:this.onItemAction,MoveDown:this.onItemAction,MoveTop:this.onItemAction,MoveBottom:this.onItemAction,MoveTo:this.onItemAction,Remove:this.onRemove,RemoveSelected:this.onRemoveSelected,Delete:this.onDelete,DeleteSelected:this.onDelete,Dismiss:this.onDismiss,ChangePage:this.onChangePage,ChangePageSize:this.onChangePageSize,ReOrder:this.onReOrder,SaveReOrder:this.onSaveReOrder,CancelReOrder:this.onCancelReOrder});return this},onRendered:function(){var i=this,t;if(this.config.isFabric&&this.config.$collapsible){this.config.$collapsible.on("shown.bs.collapse hidden.bs.collapse",this.handleCollapseExpand);t=this.getItemState(this.config.Id+this.config.ContextRowId);this.config.$collapsible.collapse(!t||t==="expanded"?"show":"hide");t!=="collapsed"||this.config.$collapsible.hasClass("show")||this.toggleCollapseIcons(this.$.find($f("a[href='#{0}']",this.config.$collapsible.attr("id"))),!0);window.waitfor(function(){return n(".collapsing").length},0,100,0,"listgrid.onRendered()",function(){$rql.api.offline||$rql.events.trigger("adjustInputWidth");i.positionHeaderActionButtons();i.removeItemMinHeight()},20)}this.restoreStates()},onRefreshControls:function(){this.$.is(":visible")&&this.positionHeaderActionButtons()},onItemAction:function(t){var i,v;t.stopPropagation();t.preventDefault();var r=this,y=this.config,o=n(t.currentTarget).attrs(),s=this.config.DescendingOrder,e,c;if(this.dismissPrompt(),o.rql&&o.rql.data!=null){var f=y.DataRows,l=parseInt(o.rql.ordinalindex),u=f.findIndexByKey("RqlItemId",o.rql.itemid),h=!1,a=r.getMainRowsCount(f),p=f[0].IsRowBefore?1:0;switch(o.rql.action){case"MoveDown":c=r.getNextMainRowIndex(u+1);c>0&&a>1&&(e=s?l-1:l+1,r.setMainRowIndex(u,e),c=r.getNextMainRowIndex(u+1),r.setMainRowIndex(c,s?e+1:e-1),h=!0);break;case"MoveUp":u>p&&a>1&&(e=s?l+1:l-1,r.setMainRowIndex(u,e),c=r.getPreviousMainRowIndex(u-1),r.setMainRowIndex(c,s?e-1:e+1),h=!0);break;case"MoveTop":if(u>p&&a>1){for(i=0,y.HasCustomLayout&&f[i].IsRowBefore&&i++;i>=0&&i<u;)r.setMainRowIndex(i,s?parseInt(f[i].ItemIndex)-1:parseInt(f[i].ItemIndex)+1),i=r.getNextMainRowIndex(i+1);r.setMainRowIndex(u,s?f.length:1);h=!0}break;case"MoveBottom":if(u<f.length-1&&a>1){for(i=r.getNextMainRowIndex(u+1);i>=0&&i<f.length;)r.setMainRowIndex(i,s?parseInt(f[i].ItemIndex)+1:parseInt(f[i].ItemIndex)-1),i=r.getNextMainRowIndex(i+1);r.setMainRowIndex(u,s?1:a);h=!0}break;case"MoveTo":e=parseInt(r.$.find(t.currentTarget).val());this.moveItemTo(o.rql.itemid,l,e)&&(h=!0);break;default:h=!1;v=new $rql.ui.components.valueCollection;v.add(o.rql.data+"__list_Action",o.rql.action);this.updateForm(t,v)}this.setPostbackControlForActionButtons(n(t.currentTarget));h&&this.reorderItemsAndRefresh(!0)}},reorderItemsAndRefresh:function(n){var i=this.config,u=i.DataRows,s=this.config.DescendingOrder,f,r,t;if(this.saveReOrderData(u),u.sort(function(n,t){return s?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex}),n){for(f=this,r=new $rql.ui.components.valueCollection,i.Form.collectValues(r),this.preReorderOriginalValues=[],this.preReorderRefreshValues=$rql.api.getUpdates(r,i.Form.values),t=0;t<this.preReorderRefreshValues.length;t++){var e=this.preReorderRefreshValues[t],h=e.substr(0,e.indexOf("=")),o=this.config.Form.values.data.findIndexBy(function(n){return n.substr(0,n.indexOf("="))===h});o>-1&&f.preReorderOriginalValues.push(this.config.Form.values.data[o])}this.refresh()}},moveItemTo:function(n,t,i){var s=this.config,h=this,e=s.DataRows,c=s.DescendingOrder,o=this.getMainRowsCount(e),p=Math.abs(i-t),l=!1,r,a,u,f,v,y;if(o>1&&(r=e.copy(function(n){return h.isMainRow(n)}),a=r.findIndexByKey("RqlItemId",n),i<=0&&(i=1),i>o&&(i=o),i!==t)){for(r.move(a,i-1),u=c?o:1,f=0;f<r.length;f++)v=e.findByKey("RqlItemId",r[f].RqlItemId),v.ItemIndex!==u&&(y=e.findIndexByKey("RqlItemId",r[f].RqlItemId),h.setMainRowIndex(y,u)),c?u--:u++;l=!0}return l},onSelect:function(t){var e=this.config,c=this,u=n(t.currentTarget).attrs(),o=u.rql.data,s=u.rql.contextname,f=n(t.currentTarget).prop("checked"),h=e.DataModel.TableRows,i=h.first(function(n){return n.RqlItemId===o}),r;i&&(f?i.IsSelected=!0:delete i.IsSelected);r=new $rql.ui.components.valueCollection;r.add(s+"__list_Action",$f("Selected_{0}",f?"true":"false"));this.updateForm(t,r);t.stopPropagation()},onSelectAll:function(t){var h=this,e=this.config,r=n(t.currentTarget).prop("checked"),u=e.DataModel.TableRows.where(function(n){return!n.IsRowAfter&&!n.IsRowBefore}),o=n(t.currentTarget).closest("table"),s=o.children("tbody").children("tr").children("td").children("input[rql-action=Select]"),f,i;u.length!==0&&(f=u[0].ContextName,n(s).each(function(t,i){n(i).prop("checked",r)}),i=new $rql.ui.components.valueCollection,i.add(f+"__list_Action",$f("SelectAll_{0}",r?"true":"false")),this.updateForm(t,i),t.stopPropagation())},onDelete:function(t){var i=n(t.currentTarget).attr("rql-action"),u=n(t.currentTarget).attr("rql-data"),r;i!=="DeleteSelected"||this.config.CanSelect||(i="Delete");r=new $rql.ui.components.valueCollection;r.add(u+"__list_Action",i);this.updateForm(t,r);this.setPostbackControlForActionButtons(n(t.currentTarget));t.stopPropagation()},onRemove:function(t){var i=this,r=n(t.currentTarget).attr("rql-data"),f=i.config.DataRows,u=f.where(function(n){return n.IsSelected});i.dismissPrompt(r);u.length===0?$rql.api.uiVersion<=2?i.showPrompt(r,{Id:r,Warning:!0,Title:$rql.i18n.strings.ListRemoveTitle,Message:$rql.i18n.strings.ListRemoveWarning}):$rql.ui.warn($rql.i18n.strings.ListRemoveWarning,$rql.i18n.strings.ListRemoveTitle):$rql.api.uiVersion<=2?i.showPrompt(r,{Id:r,YesNo:!0,Title:$rql.i18n.strings.ListRemoveTitle,Message:$f($rql.i18n.strings.ListRemoveConfirm,u.length)}):$rql.ui.confirm($f($rql.i18n.strings.ListRemoveConfirm,u.length),$rql.i18n.strings.ListRemoveTitle,function(){var r=new $rql.ui.components.valueCollection;n(u).each(function(n,t){r.add(t.ContextName+"__list_Action","Delete")});i.updateForm(t,r)});t.stopPropagation()},onRemoveSelected:function(t){var r=this,u=n(t.currentTarget).attr("rql-data"),f=r.config.DataRows.where(function(n){return n.IsSelected}),i;this.dismissPrompt(u);i=new $rql.ui.components.valueCollection;n(f).each(function(n,t){i.add(t.ContextName+"__list_Action","Delete")});this.updateForm(t,i);t.stopPropagation()},onDismiss:function(t){var i=n(t.currentTarget).attr("rql-data");this.dismissPrompt(i)},onChangePage:function(t){var h;t.stopPropagation();var u=this,r=this.config,f=$f("{0}_pageIndex",r.Id),o=r.Form.getViewSetting(r.Id)||{},i=parseInt(o[f]),l=o[$f("{0}_pageSize",r.Id)],a=u.getMainRowsCount(r.DataRows),c=Math.ceil(a/l)-1,s=n(t.currentTarget),v=s.attrs(),e=$rql.isNull(v.rql.data,s.val());if(e==="+"?i++:e==="++"?i=c:e==="-"?i--:i=e==="--"?0:parseInt(e)-1,i!==NaN&&i!==o[f]&&i>=0&&i<=c)if(h=new $rql.ui.components.valueCollection,r.Form.collectValues(h),r.Form.getUpdates(h,r.Form.values).length>0)if(r.PagingPostback)u.saveItemState(f,i),u.updateForm(t,null,u.refresh);else{$rql.ui.confirm($rql.i18n.strings.UnsavedChangesConfirmation,"",function(){u.saveItemState(f,i);u.refresh()},null);return}else u.saveItemState(f,i),u.refresh();else s.val(parseInt(o[f])+1)},onChangePageSize:function(t){var r=n(t.currentTarget),u=r.attrs(),i=parseInt(u.rql.data),f=this.config.DataModel.ListPager;this.saveItemState($f("{0}_pageSize",this.config.Id),i);n(f.PageSizes).each(function(n,t){t.CurrentPageSize=t.Size===i});this.refresh()},onReOrder:function(n){var u=this.isInReOrderMode(),f=!u,t=this,r=new $rql.ui.components.valueCollection,i;this.config.Form.collectValues(r);i=this.config.Form.getUpdates(r,this.config.Form.values);t.clearReOrderData();i.length>0?(this.saveItemState("reorder_onpostback_"+this.config.stateKey,!0),this.updateForm(n,i)):(t.setReorder(f,!0),t.restoreStates());n.stopPropagation()},onSaveReOrder:function(n){var t=this.config,o=t.DataModel.TableRows,s,u=o.where(function(n){return n.IsDirty}),i,f,e,r;if(this.setReorder(!1,!0),u.length>0){for(i=new $rql.ui.components.valueCollection,f=new $rql.ui.components.valueCollection,t.Form.collectValues(f),e=$rql.api.getUpdates(f,t.Form.values,"by-value"),r=0;r<e.length;r++)i.data.add(e[r]);u.map(function(n){var u=n.ItemIndex,r;t.PreNormalizedItemIndexes&&(r=o.indexOf(n),r>=0&&r<t.PreNormalizedItemIndexes.length&&(u=t.PreNormalizedItemIndexes[r]));s=$f("MoveTo_{0}",u);i.add(n.ContextName+"__list_Action",s);delete n.PreviousItemIndex;delete n.IsDirty});i.add(u[0].ContextName+"__list_Action","MoveToComplete");t.Form.collectValues(t.Form.values=t.Form.newValueCollection(),!0,!0);this.updateForm(n,i)}this.clearReOrderData();n.stopPropagation()},onCancelReOrder:function(n){var t=this.config.DataRows,i=this.config.DescendingOrder;t.map(function(n){n.IsDirty&&(n.ItemIndex=n.PreviousItemIndex,delete n.PreviousItemIndex,delete n.IsDirty)});t.sort(function(n,t){return i?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex});this.clearReOrderData();this.setReorder(!1,!0);this.refresh();n.stopPropagation()},clearReOrderData:function(){this.saveItemState($f("reorder_state_{0}",this.config.stateKey),null)},saveReOrderData:function(n){var i=this,r=this.config,u=$f("reorder_state_{0}",r.stateKey),t=[],f=n.where(function(n){return n.IsDirty===!0});f.map(function(n){var i={RqlItemId:n.RqlItemId,ItemIndex:n.ItemIndex,PreviousItemIndex:n.PreviousItemIndex};t.add(i)});i.saveItemState(u,t)},isInReOrderMode:function(){return this.getItemState("reorder_"+this.config.stateKey)||!1},setReorder:function(n,t){var h=this,i=this.config,c="reorder_"+i.stateKey,u=h.$.find("table#"+i.Id),r=u.find($f("td[rql-role=reorder-header][rql-parentlist={0}]",i.Id)),f=u.find($f("[rql-role=reorder-detail][rql-parentlist={0}]",i.Id)),e=this.$.find($f("[rql-role=reorder_mode_{0}] > [rql-role=reorder-out]",i.Id)),o=this.$.find($f("[rql-role=reorder_mode_{0}] > [rql-role=reorder-in]",i.Id)),s=this.$.find($f("[rql-role=non-reorder-controls][rql-parentlist={0}]",i.Id)),l=this.$.find($f("[rql-role='{0}_ItemMoveHandle']",i.ContentId));n?(f.removeClass("hide"),e.addClass("hide"),o.removeClass("hide"),s.addClass("hide"),r&&r.removeClass("hide")):(f.addClass("hide"),e.removeClass("hide"),o.addClass("hide"),s.removeClass("hide"),r&&r.addClass("hide"));l[n?"show":"hide"]();t&&this.saveItemState(c,n);n?this.enableDnDReordering():this.disableDnDReordering()},enableDnDReordering:function(){this.$sortableListBody||(this.$sortableListBody=this.$.find("table.listgrid-table:first > tbody"),this.$sortableListBody.sortable({axis:"y",handle:$f("div[rql-role='{0}_ItemMoveHandle']",this.config.ContentId),update:this.onReorderUpdate,helper:this.createDnDHelper}))},disableDnDReordering:function(){this.$sortableListBody&&(this.$sortableListBody.sortable("destroy"),this.$sortableListBody=null)},createDnDHelper:function(t,i){return i.children().each(function(){n(this).width(n(this).width()+"px")}),i},onReorderUpdate:function(t,i){var r=n(i.item),f=r.index(),e=f+1,o=r.attrs(),u=o.rql.item,s=this.config.DataRows.findIndexByKey("RqlItemId",u)+1;this.moveItemTo(u,s,e)&&this.reorderItemsAndRefresh(!1)},getNextMainRowIndex:function(n){for(var u=this,i=this.config.DataRows,r=-1,t=n;t<i.length;t++)if(u.isMainRow(i[t])){r=t;break}return r},getPreviousMainRowIndex:function(n){for(var r=this,u=this.config.DataRows,i=-1,t=n;t>=0;t--)if(r.isMainRow(u[t])){i=t;break}return i},setMainRowIndex:function(n,t){var i=this.config.DataRows,f=i[n],u,e,r;for(this.config.HasCustomLayout&&(u=i[n-1],u&&u.ItemIndex===f.ItemIndex-.01&&(u.PreviousItemIndex||(u.PreviousItemIndex=u.ItemIndex),u.ItemIndex=t-.01,u.IsDirty=!0)),f.PreviousItemIndex||(f.PreviousItemIndex=f.ItemIndex),f.ItemIndex=t,f.IsDirty=!0,e=t+.01,r=n+1;r<i.length;r++)if(i[r].ChildList||i[r].ItemRowAfterRawHtml)i[r].PreviousItemIndex||(i[r].PreviousItemIndex=i[r].ItemIndex),i[r].ItemIndex=Math.round(e*100)/100,i[r].IsDirty=!0,e+=.01;else break},refresh:function(){var y=this,n=this.config,w=n.Form.getViewSetting(n.Id)||{},t=n.DataModel,i=n.DataRows,s=typeof w[$f("{0}_pageIndex",n.Id)]!="undefined"?parseInt(w[$f("{0}_pageIndex",n.Id)]):0,v=typeof w[$f("{0}_pageSize",n.Id)]!="undefined"?parseInt(w[$f("{0}_pageSize",n.Id)]):0,c,l,g,a;if(t.TableRows=[],n.PageSize){if(i.length>0){var b,et,k=y.getMainRowsCount(i),nt=Math.ceil(k/v)-1,tt=o[$rql.api.uiMode]-1,it=tt/2,d=s>it?Math.min(s-it,Math.max(nt-tt,0)):0,p=s-d>it?nt:Math.min(d+tt,nt);s>p&&(s=p);b=s*v;et=s*v>k?k:s*v+v;y.saveItemState($f("{0}_pageIndex",n.Id),s);var rt=0,st=et-b,ut=0,h=0;for(c=0;c<i.length;c++){if(l=i[c],b===rt){if(t.TableRows.add(l),l.IsRowBefore&&(l=i[++c],t.TableRows.add(l)),y.isMainRow(l)){for(c===0&&(l.IsFirstRow=!0),n.ListData.GridRows&&c===n.ListData.GridRows.length-1&&(l.IsLastRow=!0),ut++,h=c+1;i[h]&&(i[h].ChildList||i[h].IsRowAfter);)t.TableRows.add(i[h]),h++;c=h-1}}else if(y.isMainRow(l)&&rt++,rt===b){for(h=c+1;i[h]&&(i[h].ChildList||i[h].IsRowAfter);)h++;c=h-1}if(ut===st)break}if(p>0)for(t.ListPager.Pager.ShowPager=!0,t.ListPager.Pager.CanPagePrev=s>d,t.ListPager.Pager.CanPageNext=s<p,t.ListPager.Pager.Pages=[],a=d;a<=p;a++)t.ListPager.Pager.Pages.add({Active:s===a,Page:a+1});else t.ListPager.Pager.ShowPager=!1;t.ListPager.ListSummary=$f($rql.i18n.strings.DataPageSummaryFormat,s*v+1,s*v+ut,k)}}else t.TableRows=i;if(n.PageSize&&i.length===0&&(t.ListPager.Pager.ShowPager=!1,t.ListPager.ShowPageSize=!1,t.ListPager.ShowRecordCount=!1,t.HeaderActionButtons=!1,t.TableHeader=!1),g=this.$.parent().find("div#"+n.ContentId),t.TableHeader&&t.TableHeader.Columns.length>0&&(t.TableHeader.Visible=!0),t.TableRows.length>0&&(t.TableRows.Visible=!0),t.HasCustomLayout=n.HasCustomLayout,t.ReadOnly=n.ReadOnly,this.decorateItems(t.TableRows),this.disableDnDReordering(),g.html(r.render(t,{"list-grid-header":u.html,"list-grid-footer":f.html,"list-grid-controls-filler":e.html})),g.off("select"),n.$collapsible=this.$.find($f("#{0}{1}_collapsible",n.Id,n.isFabric?n.ContextRowId:"")),n.ItemContainer=this.$.find($f("table#{0}",n.Id)),n.isFabric&&this.setItemMinHeight(),g.find("[rql-type]").each(function(n,t){y.process_input(t,n)}),n.Form.collectValues(n.Form.values=n.Form.newValueCollection(),!0,!0),this.preReorderOriginalValues){for(a=0;a<this.preReorderOriginalValues.length;a++){var ft=this.preReorderOriginalValues[a],ht=ft.substr(0,ft.indexOf("=")),ot=this.config.Form.values.data.findIndexBy(function(n){return n.substr(0,n.indexOf("="))===ht});ot>-1&&(this.config.Form.values.data[ot]=ft)}delete this.preReorderRefreshValues;delete this.preReorderOriginalValues}this.widgetize()},restoreStates:function(){var r=this,u=this.config.DataModel.TableRows,f=this.$.find($f("input[rql-data='{0}'][rql-action=SelectAll]",this.config.Id)),e=u.where(function(n){return!n.ChildList&&!n.IsRowBefore&&!n.IsRowAfter}),i,t;f.length>0&&(i=u.where(function(n){return typeof n.IsSelected!="undefined"&&n.IsSelected===!0&&!n.ChildList}).length,n(f[0]).prop("checked",e.length===i),this.config.CanSelect&&(t=this.$.find($f("table#{0} > thead th [rql-action='DeleteSelected']",this.config.Id)),t.length>0&&(t.removeClass("invisible"),t.addClass(i>0?"":"invisible"))));r.isInReOrderMode()&&r.setReorder(!0,!0)},preparePager:function(t,i){var c=this,s=t.Form.getViewSetting(t.Id)||{},e=$f("{0}_pageSize",t.Id),h=typeof s[e]!="undefined"?parseInt(s[e]):t.PageSize,r,o,u,f;c.saveItemState(e,h);r={ListPager:{ShowPageSize:!0,PageSizes:[]},ShowRecordCount:!0};r.ListPager.PageSizes.add({Size:5});r.ListPager.PageSizes.add({Size:10});r.ListPager.PageSizes.add({Size:20});r.ListPager.PageSizes.add({Size:50});o=r.ListPager.PageSizes.findByKey("Size",h);o&&(o.CurrentPageSize=!0);r.ListPager.Pager={ShowPager:!0,Pages:[]};i&&i.PagerLayout&&(u=i.PagerLayout,f=r.ListPager,u.pageSize&&f.ShowPageSize&&(f.PagerSizeButtonCss=u.pageSize.buttonCss,f.PagerSizeContainerCss=u.pageSize.containerCss),u.recordCount&&r.ShowRecordCount&&(f.RecordCountContainerCss=u.recordCount.containerCss),u.pages&&f.Pager.ShowPager&&(f.Pager.PagesButtonCss=u.pages.buttonCss,f.Pager.PagesContainerCss=u.pages.containerCss,f.Pager.PagesInputCss=u.pages.inputCss));n.extend(t.DataModel,r,{ShowFooter:!0})},extractHeader:function(n){var r={},t;if(n&&(!this.isNestedList(n)||this.getConfigFromHtml(n).EmbedStyle!=="Row"))if(t=n.find("div[rql-role=listgrid-header]"),t&&t.length>0){var i=t.attrs(),u=t.text(),f=i.rql.required?!0:!1,e=i.rql.headeruistyle,o=i.rql.headerid,s=i.rql.controlid;r={Id:o,ControlId:s,Text:u,IsRequired:f,UiStyle:e}}else n.attr("rql-no-header")&&(r={Id:n.attr("id"),Text:"",IsRequired:!1,RqlId:n.attr("rql-id")});return r},isNestedList:function(n){return n.find("div[rql-type^='List']").addBack("div[rql-type^='List']").length>0},getRqlContrlTypeOfWrapper:function(n){return n.find("div[rql-type]:first").length>0?n.find("div[rql-type]:first").attrs().rql.type:""},getConfigFromHtml:function(t){var i=t.find("> div > code");return i.length===0&&t.find("code"),i.length>0?n.parseJSON(i.html()):{}},prepareHeaderFooter:function(t,i,r){if(i.HeaderActionButtons={},i.HeaderUiStyle=t.HeaderUiStyle,i.HeaderContentUiStyle=t.HeaderContentUiStyle,i.HeaderTextContentUiStyle=t.HeaderTextContentUiStyle,t.CanRemove&&(i.HeaderActionButtons.CanRemove=t.ReadOnly?!1:t.AllowSelect),t.AllowOrder&&(i.HeaderActionButtons.CanOrder=t.ReadOnly?!1:!0),t.CanAdd&&(i.HeaderActionButtons.CanAdd=t.ReadOnly?!1:!0),i.TableHeader.CanSelect=!t.ReadOnly&&t.AllowSelect===!0,r&&(i.ListHeader={Header:t.Header,AllowCollapse:t.AllowCollapse},t.Optional&&t.Optional!==!1||t.ReadOnly||(i.ListHeader.IsRequired=!0)),t.Footer&&t.Footer.length>0){var u=this.getFooterOptionsFromConfig(t);t.FooterShowAsTooltip?n.extend(i.ListHeader,u):i.ListFooter=u;i.ShowFooter=!0}},prepareItems:function(t,i,r,u,f){var s=this,o={Id:t.Id,ContentId:t.ContentId,ContextRowId:t.ContextRowId,UiStyle:t.UiStyle,ContainerUiStyle:t.ContainerUiStyle,WrapperUiStyle:t.WrapperUiStyle,TableHeader:{Columns:[]},TableRows:[]},v={},e=f.findByKey("Id",t.ControlId),a,g,nt,c,h,p,b,l,d,k,y,w;for(this.normalizeItemIndexes(t,i),t.CanRemove=!t.ReadOnly&&t.CanRemove!==!1,t.CanAdd=!t.ReadOnly&&t.CanAdd!==!1,t.CanOrder=!t.ReadOnly&&t.AllowOrder!==!1,t.CanCollapse=$rql.isUndefined(t.AllowCollapse)||t.AllowCollapse===!0,t.CanAddRemove=t.CanAdd&&t.CanRemove,t.CanSelect=!t.ReadOnly&&t.AllowSelect===!0,a=s.parseListOptions(t,{HeaderActionsShowAdd:t.CanAdd,HeaderActionsShowDelete:t.CanRemove,HeaderActionsShowReOrder:!1,ReOrderOrientationVertical:!0,ReOrderOptionsPlacedRight:!0,RowActionsShowAdd:t.CanAdd,RowActionsShowDelete:t.CanRemove,RowActionsPlacedRight:!0,RowActionsPlacedLeft:!1,RowActionsHorizontal:!0,RowActionsShowOrder:t.CanOrder}),t.ColoredButtons&&(v.ColoredButtons=!0),n.extend(v,t,{AllowChange:t.CanAdd||t.CanRemove||t.CanOrder}),n.extend(v,a),s.$.find("div[rql-role=list-validation]").length>0&&(o.Error=!0,o.ValidationMessage=s.$.find("div[rql-role=list-validation]").text()),s.prepareHeaderFooter(t,o,u),n.extend(o.HeaderActionButtons,a),t.isFabric&&(t.HeaderActionsShowAdd=a.HeaderActionsShowAdd),e.TableLayout&&e.TableLayout.CssClass&&(o.TableLayoutCssClass=e.TableLayout.CssClass),r&&n(i.GridRows).each(function(i,r){t.HasCustomLayout&&o.TableRows.push({Columns:e.ItemLayout.Columns.map(function(n){return{RawHtml:n.Template}})});n(r.GridCells).each(function(i,u){var c,a,h,v,w,l,y;if(u.RawHtml=s.decodeHtml(u.RawHtml),c=n(u.RawHtml),u.Header=s.extractHeader(c),u.First=i===0,a=e.Columns.findIndexBy(function(n){return n.Id===u.Header.Id}),u.Header.Id&&a>-1&&!e.Columns[a].Header&&(e.Columns[a].Header=u.Header),s.isNestedList(c)){var f=s.getConfigFromHtml(c),p=f.ContextId.splitAndTrim("$i$"),b=p[p.length-1].split("$")[1],k=s.getRqlContrlTypeOfWrapper(c);f.EmbedStyle==="Row"&&(h=t.childLists.findByKey("Id",f.Id),h||(h={Id:f.Id,Type:k,GridRows:[]},t.childLists.add(h)),h.GridRows.add({ItemId:b,Html:u.RawHtml}),h.Header=f.Header,h.HeaderUiStyle=f.HeaderUiStyle,v=e.Columns.findIndexBy(function(n){return n.Id===f.Id}),v>-1&&(e.Columns[v].Header={Id:f.Id,Text:f.Header,IsRequired:f.Optional===!1,UiStyle:f.HeaderUiStyle}),f.Optional&&f.Optional!==!1||(h.IsRequired=!0),t.HasCustomLayout||r.GridCells.remove(u))}else t.HasCustomLayout&&(w=u.Header.ControlId?u.Header.ControlId:u.Header.Id,l=s.getCellIndex(e.ItemLayout.Columns,w,e.Columns[i].WrapperId),l.index>-1&&(y=o.TableRows.last(),y.Columns[l.index].RawHtml=s.getTokenizedCellHtml(y.Columns[l.index].RawHtml,l.lookupId,u.RawHtml)))})}),t.HasCustomLayout&&(s.prepareLayoutCells(e),e.HeaderLayout&&(e.HeaderLayout.CssClass&&(o.TableHeader.CssClass=e.HeaderLayout.CssClass),n(e.HeaderLayout.Columns).each(function(n,t){o.TableHeader.Columns.push({RawHtml:t.RawHtml})})),e.FooterLayout&&(o.TableFooter={Columns:[]},n.extend(o.TableFooter,v),n.extend(o.TableFooter,a),e.FooterLayout.CssClass&&(o.TableFooter.CssClass=e.FooterLayout.CssClass),n(e.FooterLayout.Columns).each(function(n,t){o.TableFooter.Columns.push({RawHtml:t.RawHtml})})),e.ItemRowBeforeLayout&&(o.RowBefore={Columns:[]},e.ItemRowBeforeLayout.CssClass&&(o.RowBefore.CssClass=e.ItemRowBeforeLayout.CssClass),n(e.ItemRowBeforeLayout.Columns).each(function(n,t){o.RowBefore.Columns.push({RawHtml:t.RawHtml})})),e.ItemRowAfterLayout&&(o.RowAfter={Columns:[]},e.ItemRowAfterLayout.CssClass&&(o.RowAfter.CssClass=e.ItemRowAfterLayout.CssClass),n(e.ItemRowAfterLayout.Columns).each(function(n,t){o.RowAfter.Columns.push({RawHtml:t.RawHtml})}))),g=0,nt=i.GridRows.map(function(n){return n.GridCells.length}).maxValue(),c=0;c<i.GridRows.length;c++)h=i.GridRows[c],p="",t.HasCustomLayout&&s.isMainRow(h)?(p===""&&(p=s.extractContextName(n(h.GridCells[0].RawHtml))),delete h.GridCells,h.CustomGridCells=o.TableRows[g].Columns,e.ItemLayout.CssClass&&(h.CssClass=e.ItemLayout.CssClass),n(e.ItemLayout.Columns).each(function(n){e.HeaderLayout&&e.HeaderLayout.Columns[n]&&(s.checkLayoutCellForControlsOnForm(e.HeaderLayout.Columns[n]),o.TableHeader.Columns[n].RawHtml=e.HeaderLayout.Columns[n].RawHtml,o.TableHeader.Columns[n].HasCustomHeader=!0);e.ItemRowBeforeLayout&&e.ItemRowBeforeLayout.Columns[n]&&(s.checkLayoutCellForControlsOnForm(e.ItemRowBeforeLayout.Columns[n]),o.RowBefore.Columns[n].RawHtml=e.ItemRowBeforeLayout.Columns[n].RawHtml);e.ItemRowAfterLayout&&e.ItemRowAfterLayout.Columns[n]&&(s.checkLayoutCellForControlsOnForm(e.ItemRowAfterLayout.Columns[n]),o.RowAfter.Columns[n].RawHtml=e.ItemRowAfterLayout.Columns[n].RawHtml);e.FooterLayout&&e.FooterLayout.Columns[n]&&(s.checkLayoutCellForControlsOnForm(e.FooterLayout.Columns[n]),o.TableFooter.Columns[n].RawHtml=e.FooterLayout.Columns[n].RawHtml)})):n(h.GridCells).each(function(t,i){var r=n(i.RawHtml),u,f;p===""&&(p=s.extractContextName(r));u=e.Columns.findByKey("Id",i.Header.Id);u?u.IsVisible=!0:r.hasClass("modal")&&r.attr("rql-id")&&(f=h.GridCells.first(function(){return r.attr("rql-modal-id")===r.attr("rql-id")}),f&&(f.RawHtml+=i.RawHtml,h.GridCells.removeAt(t)))}),h.ContextName=p,h.ListId=t.ControlId,h.Rowspan=1,o.RowBefore&&(l={ItemIndex:h.ItemIndex-.01,Columns:o.RowBefore.Columns,IsRowBefore:!0},n.extend(l,v),n.extend(l,a),o.RowBefore.CssClass&&(l.CssClass=o.RowBefore.CssClass),c===0?i.GridRows.insertAt(0,l):i.GridRows.insertAt(c,l),c++),b=h.ItemIndex,n(t.childLists).each(function(r,u){var f=u.GridRows.where(function(n){return n.ItemId===h.RqlItemId});n(f).each(function(n,f){if(f.Html){b+=h.Rowspan/100;var o={RqlItemId:h.RqlItemId,ItemIndex:b,ChildList:{Id:$f("{0}_{1}",u.Id,$rql.newId()),Header:u.Header,HeaderUiStyle:u.HeaderUiStyle,RowInfo:f.Html,ParentRowItemId:h.RqlItemId}};(u.Type==="List"||u.Type==="ListGrid"&&t.isFabric)&&(o.ChildList.SuppressHeader=!0);a.NestedListWrapperCss&&(o.ChildList.NestedListWrapperCss=a.NestedListWrapperCss);t.HasCustomLayout&&e.ItemLayout.Children&&e.ItemLayout.Children[r]&&(o.ChildList.CssClass=e.ItemLayout.Children[r].CssClass);h.Rowspan++;u.IsRequired&&(o.ChildList.IsRequired=!0);i.GridRows.insertAt(c+1,o);c++}})}),o.RowAfter&&(b+=.01,l={ItemIndex:b,Columns:o.RowAfter.Columns,IsRowAfter:!0},n.extend(l,v),n.extend(l,a),o.RowAfter.CssClass&&(l.CssClass=o.RowAfter.CssClass),i.GridRows.insertAt(c+1,l),c++),g++;if(d=e.Columns.where(function(n){return n.IsVisible&&n.IsVisible===!0}),o.TableHeader.Columns.addRange(d.select(function(n){return n.Header})),k=[],n(i.GridRows).each(function(i,r){if(s.isMainRow(r))if(o.HeaderActionButtons.ContextName=r.ContextName,o.TableHeader.ContextName=r.ContextName,t.HasCustomLayout)n(r.CustomGridCells).each(function(t,r){var u=s.getLayoutIds(r.RawHtml);s.addCustomLayoutColumnToKeep(k,i,t);e.Columns.length>nt?n(u).each(function(n,u){var f=e.Columns.findByKey("Id",u);f&&(e.ItemLayout.Columns[t].IdArray.length===1?s.removeCustomLayoutColumn(k,i,t):(r.RawHtml=r.RawHtml.replace($f("{{{0}}}",u),""),s.getLayoutIds(r.RawHtml).length===0&&s.isEmptyLayoutCell(r.RawHtml)&&s.removeCustomLayoutColumn(k,i,t)))}):u.length>0&&u.map(function(n){r.RawHtml=r.RawHtml.replace($f("{{{0}}}",n),"")})});else for(var u=0;u<d.length;u++)r.GridCells[u]&&r.GridCells[u].Header.Id===d[u].Id||r.GridCells.insertAt(u,{RawHtml:""});else r.ChildList&&(r.ChildList.ParentColumnCount=o.TableHeader.Columns.length);n.extend(r,v)}),t.HasCustomLayout&&i.GridRows.length>0&&(y=s.determineCustomColumnsToRemove(e,k),y.length>0))for(n(i.GridRows).each(function(n,t){!s.isMainRow(t)&&t.ChildList&&(t.ChildList.ParentColumnCount=e.ItemLayout.Columns.length-y.length)});y.length>0;)w=y.last(),s.removeCustomLayoutColumnAtIndex(i.GridRows,w),s.adjustColumns(o.TableHeader.Columns,w),o.RowBefore&&s.adjustColumns(o.RowBefore.Columns,w),o.RowAfter&&s.adjustColumns(o.RowAfter.Columns,w),o.TableFooter&&s.adjustColumns(o.TableFooter.Columns,w),y.removeAt(y.length-1);n.extend(o.TableHeader,v);t.DataRows=i.GridRows;t.DataModel=o;t.PageSize&&s.preparePager(t,e)},normalizeItemIndexes:function(n,t){var u,f,i,r;if(n.ConditionalVisibility){for(u=[],f=!1,i=0;i<t.GridRows.length;i++)r=t.GridRows[i],u.push(r.ItemIndex),i+1!==r.ItemIndex&&(r.ItemIndex=i+1,f=!0);n.PreNormalizedItemIndexes=f?u:undefined}},addCustomLayoutColumnToKeep:function(n,t,i){var r=n.findByKey("rowIndex",t);r||(n.push({rowIndex:t,columns:[]}),r=n.last());r.columns.push(i)},removeCustomLayoutColumn:function(n,t,i){var r=n.findByKey("rowIndex",t);r&&r.columns.remove(i)},determineCustomColumnsToRemove:function(n,t){for(var r=[],i=0;i<n.ItemLayout.Columns.length;i++)t.any(function(n){return n.columns.contains(i)})||r.push(i);return r},removeCustomLayoutColumnAtIndex:function(n,t){n.map(function(n){n.CustomGridCells&&n.CustomGridCells.removeAt(t)})},showPrompt:function(t,r){var u=n("table#"+t);u.before(i.render(r))},dismissPrompt:function(t){if($rql.api.uiVersion<=2){var r=n("table#"+t),i=r.prev("div[rql-role=prompt]");i&&i.remove();this.config.Form.hideOverlay()}},getCellIndex:function(t,i,r){var u={index:-1,lookupId:""};return n(t).each(function(n,t){return t.IdArray.contains(i)?(u.index=n,u.lookupId=i,!1):t.IdArray.contains(r)?(u.index=n,u.lookupId=r,!1):!0}),u},getLayoutIds:function(n){for(var i=/\{([\w]+)\}/g,r=[],t=i.exec(n);t!=null;)r.push(t[1]),t=i.exec(n);return r},parseGridLayout:function(){var u=this,r=this.config,i=r.ListGridSchema.ListGrids.findByKey("Id",r.ControlId),f,t,e,o;if(r.Layout&&r.Layout!=="")try{if(f=this.decodeFromUnicodeBase64(r.Layout),t=n.parseJSON(f),t.breakpoint&&$rql.ui.checkMediaBreakpoint(t.breakpoint,"lesser"))return;r.HasCustomLayout=!0;t.style&&(e="<style id='{1}' type='text/css'>{0}<\/style>",o=$f(e,t.style,r.Id),n($f("head style#{0}",r.Id)).length===0&&n(o).appendTo("head"));t.table&&(i.TableLayout={CssClass:t.table.css});t.header&&(itemsArray=[],n(t.header.columns).each(function(n,t){itemsArray.push({Template:t,IdArray:u.getLayoutIds(t)})}),i.HeaderLayout={Columns:itemsArray},t.header.css&&(i.HeaderLayout.CssClass=t.header.css));t.body&&(t.body.itemRow&&(itemsArray=[],n(t.body.itemRow.columns).each(function(n,t){itemsArray.push({Template:t,IdArray:u.getLayoutIds(t)})}),i.ItemLayout={Columns:itemsArray},t.body.itemRow.css&&(i.ItemLayout.CssClass=t.body.itemRow.css),t.body.children&&(itemsArray=[],n(t.body.children).each(function(n,t){var i={CssClass:t.css};itemsArray.push(i)}),i.ItemLayout.Children=itemsArray)),t.body.itemRowBefore&&(itemsArray=[],n(t.body.itemRowBefore.columns).each(function(n,t){itemsArray.push({Template:t,IdArray:u.getLayoutIds(t)})}),i.ItemRowBeforeLayout={Columns:itemsArray},t.body.itemRowBefore.css&&(i.ItemRowBeforeLayout.CssClass=t.body.itemRowBefore.css)),t.body.itemRowAfter&&(itemsArray=[],n(t.body.itemRowAfter.columns).each(function(n,t){itemsArray.push({Template:t,IdArray:u.getLayoutIds(t)})}),i.ItemRowAfterLayout={Columns:itemsArray},t.body.itemRowAfter.css&&(i.ItemRowAfterLayout.CssClass=t.body.itemRowAfter.css)));t.footer&&(itemsArray=[],n(t.footer.columns).each(function(n,t){itemsArray.push({Template:t,IdArray:u.getLayoutIds(t)})}),i.FooterLayout={Columns:itemsArray},t.footer.css&&(i.FooterLayout.CssClass=t.footer.css));t.pager&&(i.PagerLayout=t.pager)}catch(s){$log.warn($f("Error parsing list grid layout.\r\n{0}",s))}},prepareLayoutCells:function(n){n.HeaderLayout&&this.parseLayout(n.HeaderLayout);n.FooterLayout&&this.parseLayout(n.FooterLayout);n.ItemRowBeforeLayout&&this.parseLayout(n.ItemRowBeforeLayout);n.ItemRowAfterLayout&&this.parseLayout(n.ItemRowAfterLayout)},parseLayout:function(t){var i=this;n(t.Columns).each(function(n,t){t.RawHtml=t.Template})},getTokenizedCellHtml:function(t,i,r){var f=$f("{{{0}}}",i),u=t;return u.indexOf(f)>-1?u.replaceString(f,r):n("<div/>").append(n(u).closest("td, th").append(r)).html()},checkLayoutCellForControlsOnForm:function(t){var i=this;/\{([\w]+)\}/g.test(t.RawHtml)&&n(t.IdArray).each(function(r,u){var f=i.config.Form.$.find($f("[rql-id='{0}'], [rql-controlId='{0}']",u)),e,o;f.length===0&&(f=i.config.Form.$.find($f("[rql-id2='{0}']",u)));f.length>0&&(e="",f=f.is("button")||f.attr("rql-custom")?n("<div/>").append(f):f.parents("div[rql-custom='yes']").first(),e=n("<div/>").append(f).html(),o=t.RawHtml?t.RawHtml:t.Template,t.RawHtml=i.getTokenizedCellHtml(o,u,e))})},isEmptyLayoutCell:function(n){return/^<td>\s+<\/td>$/g.test(n)},isMainRow:function(n){return!n.ChildList&&!n.IsRowBefore&&!n.IsRowAfter},getMainRowsCount:function(n){return n.where(function(n){return!n.ChildList&&!n.IsRowBefore&&!n.IsRowAfter}).length},adjustColumns:function(t,i){for(var r=i,o=!0,f,u,e;r>=0&&!t[r];)r--;if(r>=0)for(f=r;f>=0;f--)if(u=n(t[f].RawHtml).select("td, th"),u&&u.attr("colspan")&&(e=parseInt(u.attr("colspan")),e>1)){u.attr("colspan",--e);o=!1;t[f].RawHtml=n("<div/>").append(u).html();break}o&&t.removeAt(r)},toggleCollapseIcons:function(n,t){var i=t?"chevron-down":"chevron-up";this.config.isFabric?n.find("i").removeClass("fa-chevron-down fa-chevron-up").addClass("fa-"+i):n.find("i").removeClass("chevron-down chevron-up").addClass(i)},toggleReorder:function(n){var t=this.$.find($f("[rql-role='reorder_region_{0}']",this.config.Id));t&&(t[n?"show":"hide"](),n||this.setReorder(!1,!0))},handleCollapseExpand:function(t){var i=this.$.find($f("a[href='#{0}']",n(t.currentTarget).attr("id")));t.type==="hidden"?(this.saveItemState(this.config.Id+this.config.ContextRowId,"collapsed"),this.toggleCollapseIcons(i,!0),this.toggleReorder(!1)):(this.saveItemState(this.config.Id+this.config.ContextRowId,"expanded"),this.toggleCollapseIcons(i,!1),this.toggleReorder(!0));t.preventDefault();t.stopPropagation()},onPageControlsRendered:function(n,t){var i,r;if(t&&t.length!==0&&(i=t.last(function(n){return n instanceof $rql.ui.controls.listgrid}),i)){if(n!==t.lastIndexOf(i))return;r=this.getItemState(this.config.Id);this.config.$collapsible.collapse(!r||r==="expanded"?"show":"hide")}},positionHeaderActionButtons:function(){var n,t,i,u,r;this.config.HeaderUiStyle&&this.config.HeaderUiStyle.contains("hide")||(n=this.$.find($f("table#{0}",this.config.Id)).first(),n.length!==0)&&(t=this.$.find("div[rql-role='list-header']:visible"),t.length!==0)&&(i=t.find("div[rql-role='header-extra-buttons']").first(),u=n.find('th[rql-role="column-header-actions"]').find('[rql-action="Insert"], [rql-action="DeleteSelected"]'),$rql.ui.checkMediaBreakpoint("sm","lesser")?(r=u.clone(),r.addClass("py-0"),i.empty().append(r)):i.empty())}};t.registerClass("$rql.ui.controls.listgrid",$rql.ui.controls.listbase)})(jQuery);
(function(n){var t=$rql.ui.controls.listenhanced=function(n,i){t.initializeBase(this,[n,i])},r=$rql.ui.templates("list-enhanced"),u=$rql.ui.templates("list-prompts"),i=$rql.ui.templates("list-collapse");t.prototype={initialize:function(t){t.ControlIndex&&(t.Id+="_"+t.ControlIndex);t.Id+="_"+t.Form.config.StoreId;t.ContentId=$f("{0}_{1}",this.$.attr("id"),$rql.newId());var i=this.config=n.extend({CanAdd:!0,CanRemove:!0,AllowOrder:!0,RenderedInLineButtons:!1},t),r=i.Form.getViewSetting(this.config.Id);i.Form.config&&i.Form.config.State.Current==="Read"&&i.Form.isForm()&&(r={},this.config.Form.setViewSetting(i.Id,r));this.clearReOrderData();this.saveItemState($f("reorder_{0}",this.config.Id),null);r===null?this.render(!0,t.Expanded):this.render(!0)},render:function(t,i){var e=this,r=this.config,o=r.ListData,u={},f={Id:r.Id,ListHeader:{HeaderText:r.Header,HeaderUiStyle:r.HeaderUiStyle},ListBody:{Items:[]}},s,h;return r.Footer&&r.Footer.length>0&&(f.ListFooter={FooterUiStyle:r.FooterUiStyle,Footer:r.Footer}),e.$.find("div[rql-role=list-validation]").length>0&&(f.Error=!0,f.ValidationMessage=e.$.find("div[rql-role=list-validation]").text()),o.Items.length>0&&(r.ColoredButtons&&(u.ColoredButtons=!0),r.CanRemove&&(u.CanRemove=r.ReadOnly?!1:!0),r.CanAdd&&(u.CanAdd=r.ReadOnly?!1:!0),r.AllowOrder&&(u.CanOrder=r.ReadOnly?!1:!0),(r.CanAdd||r.CanRemove)&&(u.CanAddRemove=r.ReadOnly?!1:!0),r.ReadOnly||r.AllowSelect!==!0||(u.CanSelect=!0)),u.CanOrder||e.saveItemState($f("reorder_{0}",this.config.Id),!1),n.extend(f,u),n.extend(f.ListHeader,u),t||(t=!0),r.Optional&&r.Optional!==!1||r.ReadOnly||(f.ListHeader.IsRequired=!0),n(o.Items).each(function(i,r){n.extend(r,u);o.Items[i]=e.prepareItemData(r,t);i===o.Items.length-1&&(f.ListHeader.ContextName=r.ContextName)}),f.ListBody.Items=o.Items,r.DataModel=f,e.isInReOrderMode()&&(s=e.getItemState($f("reorder_state_{0}",r.Id)),s&&(h=r.DataModel.ListBody.Items,s.map(function(n){var t=h.findByKey("RqlItemId",n.RqlItemId);t&&(t.ItemIndex=n.ItemIndex,t.PreviousItemIndex=n.PreviousItemIndex,t.IsDirty=!0)}),h.sort(function(n,t){return r.DescendingOrder?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex}))),e.refresh(i),r.Form.onBeforeSave=function(){var t=n.Deferred(),i=this.$.find("div[rql-role='reorder-in']").toArray(),r=i.any(function(t){return!n(t).hasClass("hide")});return r?$rql.ui.confirm($rql.i18n.strings.ListReOrderConfirm,"",function(){t.resolve()},function(){t.reject()}):t.resolve(),t},this.renderButtons(r),this.on({Select:this.onSelect,SelectAll:this.onSelectAll,Insert:this.onItemAction,Remove:this.onRemove,RemoveSelected:this.onRemoveSelected,Dismiss:this.onDismiss,MoveUp:this.onItemAction,MoveDown:this.onItemAction,MoveTop:this.onItemAction,MoveBottom:this.onItemAction,MoveTo:this.onItemAction,CollapseExpand:this.onCollapseExpand,CollapseExpandAll:this.onCollapseExpandAll,ReOrder:this.onReOrder,SaveReOrder:this.onSaveReOrder,CancelReOrder:this.onCancelReOrder}).widgetize(),this},onRemove:function(n){var u=this.config,t=this.$.find(n.currentTarget).attrs(),f=this.$.find(n.currentTarget).closest("tr"),e=u.DataModel.ListBody.Items.where(function(n){return n.IsSelected}),i=1,r;if(n.stopPropagation(),this.dismissPrompt(),t.rql.item==="selected"){if(r=this.$.find($f("table#container_{0}",u.Id)),this.toggleListControl(!1),i=e.length,i===0){this.showPrompt(f,r,{Id:t.rql.data,Warning:!0,Title:$rql.i18n.strings.ListRemoveTitle,Message:$rql.i18n.strings.ListRemoveWarning});return}t.rql.data="selected"}this.showPrompt(f,r,{Id:t.rql.data,YesNo:!0,Title:$rql.i18n.strings.ListRemoveTitle,Message:$f($rql.i18n.strings.ListRemoveConfirm,i)})},onRemoveSelected:function(t){var f=this,r=this.$.find(t.currentTarget).attrs(),i=new $rql.ui.components.valueCollection,u;this.dismissPrompt();r.rql.data==="selected"?(u=f.config.DataModel.ListBody.Items.where(function(n){return n.IsSelected}),n(u).each(function(n,t){i.add(t.ContextName+"__list_Action","Delete")})):i.add(r.rql.data+"__list_Action","Delete");this.updateForm(t,i);t.stopPropagation()},onDismiss:function(){this.dismissPrompt();this.toggleListControl(!0)},onSelect:function(t){var e=this,o=this.config,u=this.$.find(t.currentTarget).attrs(),s=o.DataModel.ListBody.Items,h=u.rql.data,c=u.rql.contextname,l=this.$.find(t.currentTarget).closest("table"),f=this.$.find(t.currentTarget).prop("checked"),a=l.attr("id"),v=a.replace("container_","listheader_"),y=e.$.find($f("table#{0} tr td input[rql-action=SelectAll]",v)),i=s.first(function(n){return n.RqlItemId===h}),r;i&&(f?i.IsSelected=!0:(delete i.IsSelected,n(y[0]).prop("checked",!1)));r=new $rql.ui.components.valueCollection;r.add(c+"__list_Action",$f("Selected_{0}",f?"true":"false"));this.updateForm(t,r);t.stopPropagation()},onSelectAll:function(t){var r=this.config,u=this.$.find(t.currentTarget).prop("checked"),f=r.DataModel.ListBody.Items,o=this.$.find($f("table#container_{0} tbody tr td input[rql-action=Select]",r.Id)),e="",i;f.length!==0&&(e=f[0].ContextName,n(o).each(function(t,i){n(i).prop("checked",u)}),i=new $rql.ui.components.valueCollection,i.add(e+"__list_Action",$f("SelectAll_{0}",u?"true":"false")),this.updateForm(t,i),t.stopPropagation())},onItemAction:function(n){var p,l,a,r,w,v,y;n.stopPropagation();var c=this,h=this.config,e=this.$.find(n.currentTarget).attrs(),f=this.config.DescendingOrder,u;if(this.dismissPrompt(),e.rql&&e.rql.data!=null){var t=h.DataModel.ListBody.Items,o=parseInt(e.rql.ordinalindex),i=t.findIndexByKey("RqlItemId",e.rql.itemid),s=!1;switch(e.rql.action){case"MoveDown":i<t.length-1&&t.length>1&&(u=f?o-1:o+1,t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex),t[i].ItemIndex=u,t[i].IsDirty=!0,t[i+1].PreviousItemIndex||(t[i+1].PreviousItemIndex=t[i+1].ItemIndex),t[i+1].ItemIndex=f?u+1:u-1,t[i+1].IsDirty=!0,s=!0);break;case"MoveUp":i>0&&t.length>1&&(u=f?o+1:o-1,t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex),t[i].ItemIndex=u,t[i].IsDirty=!0,t[i-1].PreviousItemIndex||(t[i-1].PreviousItemIndex=t[i-1].ItemIndex),t[i-1].ItemIndex=f?u-1:u+1,t[i-1].IsDirty=!0,s=!0);break;case"MoveTop":if(i>0&&t.length>1){for(r=0;r<i;r++)t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[r].ItemIndex),t[r].ItemIndex=f?parseInt(t[r].ItemIndex)-1:parseInt(t[r].ItemIndex)+1,t[r].IsDirty=!0;t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex);t[i].ItemIndex=f?t.length:1;t[i].IsDirty=!0;s=!0}break;case"MoveBottom":if(i<t.length-1&&t.length>1){for(r=i+1;r<t.length;r++)t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[r].ItemIndex),t[r].ItemIndex=f?parseInt(t[r].ItemIndex)+1:parseInt(t[r].ItemIndex)-1,t[r].IsDirty=!0;t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex);t[i].ItemIndex=f?1:t.length;t[i].IsDirty=!0;s=!0}break;case"MoveTo":if(t.length>1&&(u=parseInt(c.$.find(n.currentTarget).val()),u<=0&&(u=1),u>t.length&&(u=t.length),u!==o)){if(p=o<u,p)for(l=f?i-1:u-1,a=f?t.length-u:i,r=l;r>=a;r--)r!==i&&(t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[i].ItemIndex),t[r].ItemIndex--,t[r].IsDirty=!0);else for(l=f?i+1:u-1,a=f?t.length-u+1:i,r=l;r<a;r++)t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[i].ItemIndex),t[r].ItemIndex++,t[r].IsDirty=!0;t[i].PreviousItemIndex||(t[i].PreviousItemIndex=o);t[i].ItemIndex=u;t[i].IsDirty=!0;s=!0}break;default:s=!1;w=h.AutoCollapse||!h.Expanded;w&&(v=e.rql.item,v||(v=h.ListData.Items.last().RqlItemId),c.saveItemState($f("{0}_autocollapse",h.Id),v));y=new $rql.ui.components.valueCollection;y.add(e.rql.data+"__list_Action",e.rql.action);this.updateForm(n,y)}s&&(c.saveReOrderData(t),t.sort(function(n,t){return f?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex}),c.refresh())}},onCollapseExpand:function(n,t){var e;if(n.currentTarget&&n.currentTarget.length!==0){var i=this,f=!0,r=i.$.find(n.currentTarget).attrs();if(r.data.target){var o=i.$.find(n.currentTarget).find("i"),s=!i.$.find(r.data.target).hasClass("in"),u=!s;typeof t!="undefined"&&t!=null&&(f=t.saveState,u=t.collapse);u?i.$.find(r.data.target).collapse("hide"):i.$.find(r.data.target).collapse("show");i.setCollapseExpandIcon(o,u);f&&this.saveItemState(r.data.target.replace("#",""),u);e=r.data.target.replace("#collapse_","");i.toggleRowActionButtonsLayout(e,u);n.stopPropagation()}}},onCollapseExpandAll:function(n){var u=this.$.find(n.currentTarget),t=u.find("i"),i=t.hasClass("icon-plus"),r=!i;this.expandCollapseAll(r,!0);this.setCollapseExpandIcon(t,r);this.saveItemState($f("collapse_{0}",this.config.Id),i);n.stopPropagation()},onReOrder:function(n){this.dismissPrompt();this.toggleListControl(!1);var t=this.isInReOrderMode(),i=!t;this.clearReOrderData();this.setReorder(i,!0);this.restoreStates();n.stopPropagation()},onSaveReOrder:function(n){var t=this.config,f=t.DataModel.ListBody.Items,r=new $rql.ui.components.valueCollection,u,i=f.where(function(n){return n.IsDirty});this.setReorder(!1,!0);i.length>0&&(i.map(function(n){u=$f("MoveTo_{0}",n.ItemIndex);r.add(n.ContextName+"__list_Action",u);delete n.PreviousItemIndex;delete n.IsDirty}),t.Form.collectValues(t.Form.values=t.Form.newValueCollection(),!0,!0),this.updateForm(n,r));this.clearReOrderData();i.length===0&&this.refresh();n.stopPropagation()},onCancelReOrder:function(n){var t=this.config.DataModel.ListBody.Items,i=this.config.DescendingOrder;t.map(function(n){n.IsDirty&&(n.ItemIndex=n.PreviousItemIndex,delete n.PreviousItemIndex,delete n.IsDirty)});t.sort(function(n,t){return i?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex});this.clearReOrderData();this.setReorder(!1,!0);this.refresh();n.stopPropagation()},toggleListControl:function(n){var t=this.$.find($f("table#listheader_{0} tr td div[rql-role=list-control]",this.config.Id));t.removeClass("hide");n?t.removeClass("hdie"):t.addClass("hide")},clearReOrderData:function(){this.saveItemState($f("reorder_state_{0}",this.config.Id),null)},saveReOrderData:function(n){var i=this,r=this.config,u=$f("reorder_state_{0}",r.Id),t=[],f=n.where(function(n){return n.IsDirty===!0});f.map(function(n){var i={RqlItemId:n.RqlItemId,ItemIndex:n.ItemIndex,PreviousItemIndex:n.PreviousItemIndex};t.add(i)});i.saveItemState(u,t)},setCollapseExpandIcon:function(n,t){if(n){n.removeClass("icon-plus icon-minus");var i=t?"icon-plus":"icon-minus";n.addClass(i)}},expandCollapseAll:function(t,i){var r=this,f=this.$.find("div[id^=collapse]"),u;n(f).each(function(u,f){var o=r.$.find("a[data-target=#"+n(f).attr("id")+"]"),e=n.Event("CollapseExpand");e.currentTarget=o;n(r).trigger(e,{collapse:t,saveState:i})});u=this.$.find("table#listheader_"+this.config.Id).find("a[data-toggle=collapse] i");r.setCollapseExpandIcon(u,t)},toggleRowActionButtonsLayout:function(n,t){var s=this.isInReOrderMode(),i=this.$.find($f("td#addremove_column_{0}",n)),r=this.$.find($f("td#reorder_column_{0}",n)),u,f,e,o;s?(i.addClass("hide"),r.removeClass("hide"),e=r.find("div[rql-role='btn-column-wrapper']"),o=r.find("input"),t?(r.removeClass("one_btn_column").addClass("h_reorder_btn_column"),e.removeClass("one_btn_column").addClass("btn-group pull-right"),o.removeClass("square_input_sm margin-tb-sm").addClass("btn-mini h_input_sm margin-tb-tiny")):(r.removeClass("h_reorder_btn_column").addClass("one_btn_column"),e.removeClass("btn-group pull-right").addClass("one_btn_column"),o.removeClass("btn-mini h_input_sm margin-tb-tiny").addClass("square_input_sm margin-tb-sm"))):(i.removeClass("hide"),r.addClass("hide"),u=i.find("div[rql-role='btn_delete']"),f=i.find("div[rql-role='btn_add']"),t?(i.removeClass("one_btn_column").addClass("two_btn_column"),u.removeClass("v_btn_column_align_top").addClass("pull-left"),f.removeClass("v_btn_column_align_bottom").addClass("pull-left")):(i.removeClass("two_btn_column").addClass("one_btn_column"),u.removeClass("pull-left").addClass("v_btn_column_align_top"),f.removeClass("pull-left").addClass("v_btn_column_align_bottom")))},restoreStates:function(){var t=this,i=this.config.Form.getViewSetting(this.config.Id),u=this.config.DataModel.ListBody.Items,f=this.$.find($f("input[rql-data={0}][rql-action=SelectAll]",this.config.Id)),e,o,r,s;return f.length>0&&(e=u.where(function(n){return typeof n.IsSelected!="undefined"&&n.IsSelected===!0}).length,n(f[0]).prop("checked",u.length===e)),i==null&&(i={}),o=typeof i[$f("collapse_{0}",this.config.Id)]!="undefined"?i[$f("collapse_{0}",this.config.Id)]:!t.config.Expanded,r=this.$.find("table#listheader_"+this.config.Id).find("a[data-toggle=collapse] i"),r.removeClass("icon-plus icon-minus"),t.setCollapseExpandIcon(r,o),s=this.$.find("div[id^=collapse]"),n(s).each(function(r,u){var e=typeof i[n(u).attr("id")]!="undefined"?i[n(u).attr("id")]:!t.config.Expanded,o=t.$.find("a[data-target=#"+n(u).attr("id")+"]"),f=n.Event("CollapseExpand");f.currentTarget=o;n(t).trigger(f,{collapse:e,saveState:!0})}),t.isInReOrderMode()&&t.setReorder(!0,!0),this},setReorder:function(n,t){var i=this.config,r="container_"+i.Id,s="reorder_"+i.Id,u=this.$.find("table#"+r+" tbody > tr > td[id^=v_reorder_column][rql-parentlist="+i.Id+"]"),h=this.$.find("table#"+r+" tbody > tr > td[id^=h_reorder_column][rql-parentlist="+i.Id+"]"),f=this.$.find($f("table#listheader_{0} tr td#reorder_buttons_{0}",this.config.Id)),e=f.find("div[rql-role='reorder-out']"),o=f.find("div[rql-role='reorder-in']");u.addClass("hide");h.addClass("hide");n?(e.addClass("hide"),o.removeClass("hide"),u.removeClass("hide")):(e.removeClass("hide"),o.addClass("hide"));t&&this.saveItemState(s,n)},isInReOrderMode:function(){return this.getItemState("reorder_"+this.config.Id)||!1},prepareItemData:function(t,r){var s=this,v=r?s.decodeHtml(t.RawHtml):t.RawHtml,h=n(v),u=h.first("div[rql-item]").addBack(),o,e,f,c,l,a;return u.length>0&&(o=u.find("> a").first(),e=u.find("> div").first(),u.attr("rql-item")?(f=u.attr("rql-item"),t.RqlItemId=f):f=$rql.newId(),t.ItemIndex=u.attr("rql-itemindex"),u.attr("rql-selected")==="true"&&(t.IsSelected=!0),o&&(c={HeaderText:o.text(),Id:f},l=i.render(c),u.find("> a").first().replaceWith(l)),e&&(a=$f("collapse_{0}",f),e.addClass("collapse"),e.attr("id",a)),t.ItemUiStyle=u.attr("rql-item-css")),t.RawHtml=u.html(),t.ContextName=s.extractContextName(h),t},showPrompt:function(n,t,i){var r=this,f=n.find("td").length,e="<tr rql-role='prompt'><td colspan='"+f+"'>"+u.render(i)+"<\/td><\/tr>";n.before(e);r.config.Form.showOverlay(!1,t||n)},dismissPrompt:function(){var n=this.$.find("tr[rql-role=prompt]");n&&n.remove();this.config.Form.hideOverlay()},refresh:function(t){var u=this,f=this.config,o=this.$.select("div#"+f.ContentId),s,e,c,h;o.html(r.render(f.DataModel,{"list-collapse":i.html}));o.off("select");o.find("[rql-type]").each(function(n,t){u.process_input(t,n)});s=u.getItemState($f("{0}_autocollapse",f.Id));s?(u.saveItemState($f("{0}_autocollapse",f.Id),null),u.expandCollapseAll(!0,!0),e=u.$.find("tr[rql-item="+s+"]").next("tr"),e&&(c=e.find("a[data-target=#collapse_"+e.attrs().rql.item+"]"),h=n.Event("CollapseExpand"),h.currentTarget=c,n(u).trigger(h,{collapse:!1,saveState:!0}))):t!==undefined?u.expandCollapseAll(!t,!0):u.restoreStates()},renderButtons:function(t){if(t.RenderedInLineButtons!==!0){var i=t.Form.$.find("div[rql-role='button-container']"),r=t.Form.$.find("div[rql-role='form'] button[rql-id][rql-position!=inline]");r.length!==0&&(r.each(function(t,r){var f=n(r).attrs().rql.id,u=i.children($f("button[rql-id='{0}']",f));u.length>0&&u.remove()}),r.appendTo(i),i.children("button[disabled]").remove(),t.RenderedInLineButtons=!0)}}};t.registerClass("$rql.ui.controls.listenhanced",$rql.ui.controls.listbase)})(jQuery);
(function(n){var i=$rql.ui.templates("list-custom"),t=$rql.ui.controls.listcustom=function(n,i){i.isFabric=$rql.api.uiVersion>2;t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){t.isEnhancedList=t.DefinedStyle&&t.DefinedStyle==="EnhancedList";i=t.DefinedStyle&&t.DefinedStyle==="EnhancedList"?$rql.ui.templates("list-enhanced"):$rql.ui.templates("list-custom");t.ControlIndex&&(t.Id+="_"+t.ControlIndex);t.stateKey=t.Id+":"+t.Form.config.StoreId+(t.Form.config.SelectedTag&&t.Form.config.SelectedTag.TabId?":"+t.Form.config.SelectedTag.TabId:"")+(t.ContextId?":"+t.ContextId:"");t.Id+="_"+t.Form.config.StoreId;t.ContentId=$f("{0}_{1}",this.$.attr("id"),$rql.newId());var r=this.config=n.extend({CanAdd:!0,CanRemove:!0,AllowOrder:!0},t),u=r.Form.getViewSetting(this.config.Id);r.ExpandIconUiStyle||(r.ExpandIconUiStyle=$rql.api.uiVersion>2?"fa-chevron-up":"icon-minus");r.CollapseIconUiStyle||(r.CollapseIconUiStyle=$rql.api.uiVersion>2?"fa-chevron-down":"icon-plus");r.Form.config&&r.Form.config.State.Current==="Read"&&r.Form.isForm()?(u={},this.config.Form.setViewSetting(r.Id,u)):r.Form.config&&r.Form.config.State.Current!=="Read"&&this.initItemStates();this.render(!0)},dispose:function(){this.$.off();$rql.api.uiVersion>2?this.$.find(".collapse").off():this.$.find("div[rql-item-content]").off();this.disableDnDReordering();t.callBaseMethod(this,"dispose")},render:function(t){var s=this,i=this.config,f=i.ListData,u={},e={},r={Id:i.Id,ContentId:i.ContentId,UiStyle:i.UiStyle,WrapperUiStyle:i.WrapperUiStyle,ListHeader:{HeaderText:i.Header,HeaderUiStyle:i.HeaderUiStyle},ListBody:{BodyUiStyle:i.BodyUiStyle,Items:[]}},c,o,l,a,h;if(i.CanRemove=u.CanRemove=!i.ReadOnly&&i.CanRemove!==!1,i.CanAdd=u.CanAdd=!i.ReadOnly&&i.CanAdd!==!1,i.CanOrder=u.CanOrder=!i.ReadOnly&&i.AllowOrder!==!1,i.CanCollapse=u.CanCollapse=$rql.isUndefined(i.AllowCollapse)||i.AllowCollapse===!0,i.CanAddRemove=u.CanAddRemove=i.CanAdd&&i.CanRemove,i.CanSelect=u.CanSelect=!i.ReadOnly&&i.AllowSelect===!0,i.CanDeleteAll=i.CanSelect&&(f.Items.length>1||f.Items.length===1&&f.Items[0].IsEmpty!==!0),i.HeaderControls=i.CanDeleteAll||i.CanOrder,i.HeaderControls2=i.CanAdd||i.CanDeleteAll,u.HeaderControls2=i.HeaderControls2,u.HeaderControls=i.HeaderControls,u.CanDeleteAll=i.CanDeleteAll,i.Footer&&i.Footer.length>0&&(c=this.getFooterOptionsFromConfig(i),i.FooterShowAsTooltip?n.extend(r.ListHeader,c):r.ListFooter=c),s.$.find("div[rql-role=list-validation]").length>0&&(r.Error=!0,r.ValidationMessage=s.$.find("div[rql-role=list-validation]").text()),(r.ListFooter||r.Error)&&(r.ShowFooter=!0),f.Items.length>0&&(u.ShowButtons=i.CanAddRemove||i.CanCollapse,i.LabelUiStyle&&(e.LabelUiStyle=i.LabelUiStyle),!i.LabelUiStyle&&i.ColoredButtons&&(e.ColoredButtons=!0),i.LabelUiStyle||i.ColoredButtons||(e.DefaultButtonStyle=!0),i.IndexUiStyle&&(e.IndexUiStyle=i.IndexUiStyle),i.ButtonUiStyle&&(e.ButtonUiStyle=i.ButtonUiStyle),e.ExpandIconUiStyle=i.ExpandIconUiStyle,e.CollapseIconUiStyle=i.CollapseIconUiStyle),i.CanOrder||s.saveItemState($f("reorder_{0}",this.config.Id),!1),n.extend(r,u),n.extend(r.ListHeader,u),n.extend(i,u),t||(t=!0),i.Optional&&i.Optional!==!1||(r.ListHeader.IsRequired=!0),i.AllowCollapse&&i.AllowCollapse===!0&&(r.ListHeader.AllowCollapse=!0),o=r.ListHeader.HeaderActions=this.parseListOptions(i,{HeaderActionsShowAdd:!1,RowActionsShowAdd:i.CanAdd,RowActionsShowDelete:i.CanRemove,RowActionsShowOrder:i.CanOrder,RowActionsVertical:!0}),i.CanReOrderDragAndDrop=i.CanOrder&&o&&o.ReOrderDragAndDrop,o.RowCss&&(r.RowCss=o.RowCss),o.ItemSummaryShowAlways&&(r.ItemSummaryShowAlways=o.ItemSummaryShowAlways),n(f.Items).each(function(h,c){var l=h===f.Items.length-1,a=h===0;f.Items[h]=s.prepareItemData(c,t);f.Items[h].AddText=$rql.i18n.strings["List"+(l&&!i.DescendingOrder||a&&i.DescendingOrder?"Add":"Insert")];a&&(f.Items[h].IsFirstRow=!0);l&&(f.Items[h].IsLastRow=!0);i.AddLabel&&l&&(f.Items[h].AddText=i.AddLabel);i.InsertLabel&&!l&&(f.Items[h].AddText=i.InsertLabel);(i.DescendingOrder&&a||!i.DescendingOrder&&l)&&(r.ListHeader.ContextName=c.ContextName);n.extend(c,u,e);c.RowActions=o}),r.ListBody.Items=f.Items,i.DataModel=r,$rql.api.uiVersion>2&&s.isInReOrderMode()&&(l=s.getItemState($f("reorder_state_{0}",i.Id)),l&&(a=i.DataModel.ListBody.Items,l.map(function(n){var t=a.findByKey("RqlItemId",n.RqlItemId);t&&(t.ItemIndex=n.ItemIndex,t.PreviousItemIndex=n.PreviousItemIndex,t.IsDirty=!0)}),a.sort(function(n,t){return i.DescendingOrder?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex}))),s.refresh(),h=i.DefinedStyle&&i.DefinedStyle==="EnhancedList",this.on({collapseExpandAll:this.onCollapseExpandAll,Delete:this.onItemAction,Insert:h?this.onEnhancedListItemAction:this.onItemAction,MoveUp:h?this.onEnhancedListItemAction:this.onItemAction,MoveDown:h?this.onEnhancedListItemAction:this.onItemAction,MoveTo:this.onEnhancedListItemAction,MoveTop:this.onEnhancedListItemAction,MoveBottom:this.onEnhancedListItemAction,ReOrder:this.onReOrder,SaveReOrder:this.onSaveReOrder,CancelReOrder:this.onCancelReOrder,SelectAll:this.onSelectAll,Select:this.onSelect,DeleteSelected:this.onDeleteSelected}).widgetize(),this.config.isFabric){this.$.on("show.bs.collapse",".collapse",this.checkListToggleIcon);this.$.on("hide.bs.collapse",".collapse",this.checkListToggleIcon);this.$.on("shown.bs.collapse",".collapse",this.onAfterItemCollapseExpand);this.$.on("hidden.bs.collapse",".collapse",this.onAfterItemCollapseExpand)}return this},onRendered:function(){var t=this.config,i=this,r=t.DefinedStyle&&t.DefinedStyle==="EnhancedList";if(t.isFabric)r&&(t.Form.onBeforeSave=function(){var t=n.Deferred();return i.isInReOrderMode()?$rql.ui.confirm($rql.i18n.strings.ListReOrderConfirm,"",function(){t.resolve()},function(){t.reject()}):t.resolve(),t}),t.CanCollapse?window.waitfor(function(){return n(".collapsing").length},0,100,0,"list.onRendered()",function(){i.removeItemMinHeight()},20):i.removeItemMinHeight();else this.$.find("div[rql-item-content]").on({shown:this.checkListToggleIcon,hidden:this.checkListToggleIcon})},refresh:function(){var t=this,n=this.config,r=this.$;this.disableDnDReordering();this.decorateItems(n.DataModel&&n.DataModel.ListBody?n.DataModel.ListBody.Items:null);r.html(i.render(n.DataModel)).widgetize();this.config.ItemContainer=this.$.find('[rql-role="list-body"]');this.config.isFabric&&this.setItemMinHeight();r.find("[rql-type]").each(function(n,i){t.process_input(i,n)});t.restoreStates();n.CanReOrderDragAndDrop&&(n.isEnhancedList&&this.isInReOrderMode()||!n.isEnhancedList)&&this.enableDnDReordering()},getItemHtmlControls:function(){var n=this.$.find($f("#{0}_parent",this.config.Id.replace(/(:|\.|\[|\]|,|=|@|~)/g,"\\$1"))),t=n.children("div[rql-role='list-body']"),i=t.length===1?t:n;return i.children($f("div[rql-item][rql-control-id='{0}']",this.$.attr("id")))},restoreStates:function(){var i=this,t=this.config,r=this.getItemHtmlControls(),u=0,s=t.ListData?t.ListData.Items:[],f,e,o;n(r).each(function(r,f){var l=n(f).attr("rql-item"),h=n(f).find("a[rql-item-heading]").first(),c=s.findByKey("RqlItemId",l),e=c!=null&&c.Collapsed,o;e&&u++;$rql.api.uiVersion>2?i.expandCollapseItem(f,e):t.AllowCollapse?(i.$.parents("#lookup-dialog").length>0?(o=n(f).find("div[rql-item-content]"),e?(o.removeClass("in"),o.css("height","0")):(o.addClass("in"),o.css("height","auto"))):n(f).find("div[rql-item-content]").collapse(e?"hide":"show"),h.removeClass("collapsed").addClass(e?"collapsed":"")):e?(n(f).find("div[rql-item-content]").hide(),n(f).find("[rql-item-summary]").show()):(n(f).find("div[rql-item-content]").show(),n(f).find("[rql-item-summary]").hide());i.setCollapseExpandIcon(h.find("i"),e)});f=this.$.find("a[rql-list-toggle] > i").first();this.setCollapseExpandIcon(f,u===r.length);t.DefinedStyle&&(t.DefinedStyle==="EnhancedList"||t.DefinedStyle==="CustomList")&&(e=this.$.find($f("#{0}_SelectAll",t.ContentId)),o=t.DataModel.ListBody.Items.where(function(n){return typeof n.IsSelected!="undefined"&&n.IsSelected===!0}).length,n(e[0]).prop("checked",t.DataModel.ListBody.Items.length===o),t.DefinedStyle==="EnhancedList"&&this.isInReOrderMode()&&this.setReorder(!0,!0))},prepareItemData:function(t,i){var e=this,o=i?e.decodeHtml(t.RawHtml):t.RawHtml,u=n(o),r=u.first("div[rql-item]").addBack(),f;return r.length>0&&(r.attr("rql-item")&&(t.RqlItemId=r.attr("rql-item")),t.ItemIndex=r.attr("rql-itemindex"),t.ElementId=$f("_{0}_{1}",this.config.Id,t.RqlItemId),t.ItemUiStyle=r.attr("rql-item-css"),t.ItemBodyUiStyle=r.attr("rql-item-body-css"),t.ItemHeaderUiStyle=r.attr("rql-item-header-css"),t.RawHtml=r.html(),t.ContextName=e.extractContextName(u),t.ControlId=this.$.attr("id"),r.attr("rql-selected")&&r.attr("rql-selected")==="true"&&(t.IsSelected=!0),u.find("div[rql-item-summary]").length>0&&(f=u.find("div[rql-item-summary]"),t.ItemSummary=f.html(),t.ItemSummaryUiStyle=f.attr("rql-item-summry-css")),r.attr("rql-empty-item")&&(t.IsEmptyItem=!0)),t},onCollapseExpandAll:function(n){var i=this.$.find(n.currentTarget),t=i.find("i"),r=t.hasClass(this.config.CollapseIconUiStyle),u;t.length===0&&(t=i.find("svg"));$rql.api.uiVersion>2&&(r=this.$.find($f("div[rql-item][rql-control-id='{0}'] > .collapse.show",this.$.attr("id"))).length===0);u=!r;this.expandCollapseAll(u);n.stopPropagation()},checkListToggleIcon:function(t){var e=this.config,o=n(t.currentTarget).parents("div[rql-item]").attr("rql-item"),i=t.type==="hidden"||t.type==="hide",s=this.getItemHtmlControls(),f=$rql.api.uiVersion>2?n(t.currentTarget).parent().find($f("a[href='#{0}'] [rql-item-toggle-icon] i",n(t.currentTarget).attr("id"))):n(t.currentTarget).parent().find("i"),u=(e.ListData?e.ListData.Items:[]).findByKey("RqlItemId",o),r;f.length===0&&(f=n(t.currentTarget).parent().find($f("a[href='#{0}'] [rql-item-toggle-icon] svg",n(t.currentTarget).attr("id"))));this.setCollapseExpandIcon(f,i);u!=null&&(u.Collapsed=i);this.saveStateOfItem(o,i);u!=null&&u.IsEmpty&&this.saveStateOfItem("empty",i);r=0;$rql.api.uiVersion>2?(r=s.find($f("a[href^='#{0}'].collapsed",this.config.ContentId)).length,i?r++:r--):r=this.$.find("a[rql-item-heading].collapsed").length;t.stopPropagation()},setListExpandCollapseIcon:function(){var n=this.config,t=n.ListData?n.ListData.Items:[],i=t.any(function(n){return!n.Collapsed}),r=this.$.find("a[rql-list-toggle] > i").first();this.setCollapseExpandIcon(r,!i)},expandCollapseItem:function(t,i){var r=$f("{0}_{1}_body",this.config.ContentId,n(t).attr("rql-itemindex")),u=this.$.find($f("#{0}.collapse",r)),f=this.config.DefinedStyle&&this.config.DefinedStyle==="EnhancedList";u.collapse(i?"hide":"show");this.hideShowItemSummary(t,i||f)},setCollapseExpandIcon:function(n,t){var i=this.config,r;n&&(r=t?i.CollapseIconUiStyle:i.ExpandIconUiStyle,n.is("i")?(n.removeClass($f("{0} {1}",i.ExpandIconUiStyle,i.CollapseIconUiStyle)),n.addClass(r)):n.is("svg")&&n.attr("data-icon",r.replace("fa-","")))},expandCollapseAll:function(t){var i=this,r=this.$.find($f("div#{0}_parent",this.config.Id.replace(/(:|\.|\[|\]|,|=|@|~)/g,"\\$1"))),u=this.$.find($f("div[rql-item][rql-control-id='{0}']",this.$.attr("id")));$rql.api.uiVersion<=2&&r.find("[rql-item-content]").collapse(t?"hide":"show");n(u).each(function(r,u){var e=n(u).attr("rql-item"),f;$rql.api.uiVersion<=2?(f=n(u).find("a[rql-item-heading]"),f.removeClass("collapsed").addClass(t?"collapsed":"")):i.expandCollapseItem(u,t)});this.setListExpandCollapseIcon()},onItemAction:function(t){var i=n(t.currentTarget).attrs(),r;i.rql&&i.rql.data!=null&&(i.rql.action==="Insert"&&this.prepareItemsStateForInsert(),i.rql.action==="Delete"&&this.clearStateOfItem(i.rql.item),r=new $rql.ui.components.valueCollection,r.add(i.rql.data+"__list_Action",this.config.DescendingOrder&&this.config.Style=="Discussion"?i.rql.action+"_descending":i.rql.action),this.setPostbackControlForActionButtons(n(t.currentTarget)),this.config.Form.update(r,null,null,null,null,t));t.stopPropagation()},onEnhancedListItemAction:function(n){var r,h;n.stopPropagation();var c=this,l=this.config,f=this.$.find(n.currentTarget).attrs(),e=this.config.DescendingOrder,u;if(f.rql&&f.rql.data!=null){var t=l.DataModel.ListBody.Items,s=parseInt(f.rql.ordinalindex),i=t.findIndexByKey("RqlItemId",f.rql.itemid),o=!1;f.rql.action==="Insert"&&this.prepareItemsStateForInsert();switch(f.rql.action){case"MoveDown":i<t.length-1&&t.length>1&&(u=e?s-1:s+1,t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex),t[i].ItemIndex=u,t[i].IsDirty=!0,t[i+1].PreviousItemIndex||(t[i+1].PreviousItemIndex=t[i+1].ItemIndex),t[i+1].ItemIndex=e?u+1:u-1,t[i+1].IsDirty=!0,o=!0);break;case"MoveUp":i>0&&t.length>1&&(u=e?s+1:s-1,t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex),t[i].ItemIndex=u,t[i].IsDirty=!0,t[i-1].PreviousItemIndex||(t[i-1].PreviousItemIndex=t[i-1].ItemIndex),t[i-1].ItemIndex=e?u-1:u+1,t[i-1].IsDirty=!0,o=!0);break;case"MoveTop":if(i>0&&t.length>1){for(r=0;r<i;r++)t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[r].ItemIndex),t[r].ItemIndex=e?parseInt(t[r].ItemIndex)-1:parseInt(t[r].ItemIndex)+1,t[r].IsDirty=!0;t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex);t[i].ItemIndex=e?t.length:1;t[i].IsDirty=!0;o=!0}break;case"MoveBottom":if(i<t.length-1&&t.length>1){for(r=i+1;r<t.length;r++)t[r].PreviousItemIndex||(t[r].PreviousItemIndex=t[r].ItemIndex),t[r].ItemIndex=e?parseInt(t[r].ItemIndex)+1:parseInt(t[r].ItemIndex)-1,t[r].IsDirty=!0;t[i].PreviousItemIndex||(t[i].PreviousItemIndex=t[i].ItemIndex);t[i].ItemIndex=e?1:t.length;t[i].IsDirty=!0;o=!0}break;case"MoveTo":u=parseInt(c.$.find(n.currentTarget).val());this.moveItemTo(f.rql.itemid,s,u)&&(o=!0);break;default:o=!1;h=new $rql.ui.components.valueCollection;h.add(f.rql.data+"__list_Action",f.rql.action);this.updateForm(n,h)}o&&this.reorderItemsAndRefresh()}},moveItemTo:function(n,t,i){var l=this.config,r=l.DataModel.ListBody.Items,e=this.config.DescendingOrder,h=!1,f,c,o,s,u;if(r.length>1&&(f=r.findIndexByKey("RqlItemId",n),i<=0&&(i=1),i>r.length&&(i=r.length),i!==t)){if(c=t<i,c)for(o=e?f-1:i-1,s=e?r.length-i:f,u=o;u>=s;u--)u!==f&&(r[u].PreviousItemIndex||(r[u].PreviousItemIndex=r[u].ItemIndex),r[u].ItemIndex--,r[u].IsDirty=!0);else for(o=e?f+1:i-1,s=e?r.length-i+1:f,u=o;u<s;u++)r[u].PreviousItemIndex||(r[u].PreviousItemIndex=r[u].ItemIndex),r[u].ItemIndex++,r[u].IsDirty=!0;r[f].PreviousItemIndex||(r[f].PreviousItemIndex=t);r[f].ItemIndex=i;r[f].IsDirty=!0;h=!0}return h},reorderItemsAndRefresh:function(){var t=this.config,n=t.DataModel.ListBody.Items,i=this.config.DescendingOrder;this.saveReOrderData(n);n.sort(function(n,t){return i?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex});this.refresh()},hideShowItemSummary:function(t,i){n(t).find($f("[rql-control-id='{0}'][rql-item-summary]",this.$.attr("id")))[i?"show":"hide"]()},hideShowHorizontalOrderingControls:function(t,i){n(t).find($f("[rql-role='{0}_ItemReOrderControlsWhenCollapsed']",this.config.ContentId))[i?"show":"hide"]()},onAfterItemCollapseExpand:function(t){t.stopPropagation();var i=n(t.currentTarget).parents($f("[rql-item][rql-control-id='{0}']",this.$.attr("id"))),r=this.config.DefinedStyle&&this.config.DefinedStyle==="EnhancedList";this.hideShowItemSummary(i,t.type==="hidden"||r||this.config.DataModel.ItemSummaryShowAlways);this.hideShowHorizontalOrderingControls(i,t.type==="hidden"&&this.isInReOrderMode()&&r);this.config.isFabric&&(this.setListExpandCollapseIcon(),this.config.Form&&this.config.Form.raise("resize",{sender:this}))},setReorder:function(t,i){var e=this,r=this.config,o="reorder_"+r.Id,u=this.$.find($f("[rql-role='{0}_ReOrderControls']",r.ContentId)),s=this.$.find($f("[rql-role='{0}_ItemReOrderControls']",r.ContentId)),h=this.$.find($f("[rql-role='{0}_ItemMoveHandle']",r.ContentId)),f;u.find("[rql-role='reorder-out']")[t?"hide":"show"]();u.find("[rql-role='reorder-in']")[t?"show":"hide"]();s[t?"show":"hide"]();h[t?"show":"hide"]();f=this.getItemHtmlControls();f.each(function(t,i){e.hideShowHorizontalOrderingControls(i,n(i).find($f("a[href^='#{0}'].collapsed",r.ContentId)).length>0)});i&&this.saveItemState(o,t);t?this.enableDnDReordering():this.disableDnDReordering()},isInReOrderMode:function(){return this.getItemState("reorder_"+this.config.Id)||!1},onReOrder:function(n){var t=this.isInReOrderMode(),i=!t;this.clearReOrderData();this.setReorder(i,!0);this.restoreStates();n.stopPropagation()},onSaveReOrder:function(n){var t=this.config,f=t.DataModel.ListBody.Items,r=new $rql.ui.components.valueCollection,u,i=f.where(function(n){return n.IsDirty});this.setReorder(!1,!0);i.length>0&&(i.map(function(n){u=$f("MoveTo_{0}",n.ItemIndex);r.add(n.ContextName+"__list_Action",u);delete n.PreviousItemIndex;delete n.IsDirty}),r.add(i[0].ContextName+"__list_Action","MoveToComplete"),t.Form.collectValues(t.Form.values=t.Form.newValueCollection(),!0,!0),this.updateForm(n,r));this.clearReOrderData();i.length===0&&this.refresh();n.stopPropagation()},onCancelReOrder:function(n){var t=this.config.DataModel.ListBody.Items,i=this.config.DescendingOrder;t.map(function(n){n.IsDirty&&(n.ItemIndex=n.PreviousItemIndex,delete n.PreviousItemIndex,delete n.IsDirty)});t.sort(function(n,t){return i?t.ItemIndex-n.ItemIndex:n.ItemIndex-t.ItemIndex});this.clearReOrderData();this.setReorder(!1,!0);this.refresh();n.stopPropagation()},clearReOrderData:function(){this.saveItemState($f("reorder_state_{0}",this.config.Id),null)},saveReOrderData:function(n){var i=this,r=this.config,u=$f("reorder_state_{0}",r.Id),t=[],f=n.where(function(n){return n.IsDirty===!0});f.map(function(n){var i={RqlItemId:n.RqlItemId,ItemIndex:n.ItemIndex,PreviousItemIndex:n.PreviousItemIndex};t.add(i)});i.saveItemState(u,t)},enableDnDReordering:function(){this.$sortableListBody||(this.$sortableListBody=this.$.find("div[rql-role='list-body']:first"),this.$sortableListBody.sortable({axis:"y",handle:$f("div[rql-role='{0}_ItemMoveHandle']",this.config.ContentId),update:this.onReorderUpdate}))},disableDnDReordering:function(){this.$sortableListBody&&(this.$sortableListBody.sortable("destroy"),this.$sortableListBody=null)},onReorderUpdate:function(t,i){var o=this.config,s=n(i.item),r=s.index(),l=r+1,h=s.attrs(),c=h.rql.item,u,f;if(o.isEnhancedList)this.moveItemTo(c,parseInt(h.rql.itemindex),l)&&this.reorderItemsAndRefresh();else if(u=o.DataModel.ListBody.Items,f=u.findIndexByKey("RqlItemId",c),f!==-1){var a=u[f],v=r-(f>r?1:0),y=r>0?u[v].RqlItemId:"",e=new $rql.ui.components.valueCollection;e.add(a.ContextName+"__list_Action",$f("MoveAfter_{0}",y));e.compareMethod="by-value";this.config.Form.update(e,null,null,null,null,t)}},onSelect:function(t){var l=this,u=this.config,f=this.$.find(t.currentTarget).attrs(),o=u.DataModel.ListBody.Items,s=f.rql.data,h=f.rql.contextname,e=this.$.find(t.currentTarget).prop("checked"),c=this.$.find($f("#{0}_SelectAll",u.ContentId)),i=o.first(function(n){return n.RqlItemId===s}),r;i&&(e?i.IsSelected=!0:(delete i.IsSelected,n(c[0]).prop("checked",!1)));r=new $rql.ui.components.valueCollection;r.add(h+"__list_Action",$f("Selected_{0}",e?"true":"false"));this.updateForm(t,r);t.stopPropagation()},onSelectAll:function(t){var r=this.config,u=this.$.find(t.currentTarget).prop("checked"),f=r.DataModel.ListBody.Items,o=this.$.find($f("table#container_{0} tbody tr td input[rql-action=Select]",r.Id)),e="",i;f.length!==0&&(e=f[0].ContextName,n(o).each(function(t,i){n(i).prop("checked",u)}),i=new $rql.ui.components.valueCollection,i.add(e+"__list_Action",$f("SelectAll_{0}",u?"true":"false")),this.updateForm(t,i),t.stopPropagation())},onDeleteSelected:function(t){var u=this,f=this.config,e=this.$.find(t.currentTarget).attrs(),r=f.DataModel.ListBody.Items.where(function(n){return n.IsSelected}),i=1;if(i=r.length,i===0){$rql.ui.warn($rql.i18n.strings.ListRemoveWarning,$rql.i18n.strings.ListRemoveTitle);return}$rql.ui.confirm($f($rql.i18n.strings.ListRemoveConfirm,i),$rql.i18n.strings.ListRemoveTitle,function(){var i=new $rql.ui.components.valueCollection;n(r).each(function(n,t){i.add(t.ContextName+"__list_Action","Delete")});u.updateForm(t,i)});t.stopPropagation()},getItemsStateKey:function(){return this.config.stateKey+":Items"},getItemsState:function(){return this.config.Form.getViewSetting(this.getItemsStateKey())},saveItemsState:function(n){this.config.Form.setViewSetting(this.getItemsStateKey(),n)},clearItemsState:function(){this.config.Form.removeViewSetting(this.getItemsStateKey())},collectItemsState:function(n){for(var r=this.config,u={},i=r.ListData?r.ListData.Items:[],t=0;t<i.length;t++)(n||i[t].Collapsed)&&(u[i[t].RqlItemId]="collapsed");return u},saveStateOfItem:function(n,t){if(n){var i=this.collectItemsState();i[n]=t?"collapsed":undefined;this.saveItemsState(i)}},clearStateOfItem:function(n){if(n){var t=this.getItemsState();t&&t.hasOwnProperty(n)&&(t[n]=undefined,this.saveItemsState(t))}},initItemStates:function(){var n=this.config,t=n.ListData?n.ListData.Items:[],f=n.IncompleteItems||[],r=this.getItemsState(),i,u;if(t.length===1&&t[0].IsEmpty)t[0].Collapsed=!1,r?t[0].Collapsed=r.empty==="collapsed":n.AutoCollapse||n.Expanded!==!1||(t[0].Collapsed=!0);else for(i=0;i<t.length;i++)u=t[i],u.Collapsed=f.indexOf(u.RqlItemId)!==-1?!1:r?r[u.RqlItemId]==="collapsed":!n.AutoCollapse&&n.Expanded===!1||n.AutoCollapse===!0&&i<t.length-1;f.length!==0&&this.saveItemsState(this.collectItemsState())},prepareItemsStateForInsert:function(){var n=this.config;(n.AutoCollapse||!n.Expanded)&&(n.AutoCollapse&&n.ListData.Items.length===1&&n.ListData.Items[0].IsEmpty?this.clearItemsState():this.saveItemsState(this.collectItemsState(n.AutoCollapse)))}};t.registerClass("$rql.ui.controls.listcustom",$rql.ui.controls.listbase)})(jQuery);
(function(n){var i=$rql.ui.templates("list-table"),t=$rql.ui.controls.listtable=function(n,i){i.isFabric=$rql.api.uiVersion>2;t.initializeBase(this,[n,i])};t.prototype={initialize:function(n){n.Id+="_"+n.Form.config.StoreId;n.stateKey=n.Id+":"+n.Form.config.StoreId+(n.Form.config.SelectedTag&&n.Form.config.SelectedTag.TabId?":"+n.Form.config.SelectedTag.TabId:"")+(n.ContextId?":"+n.ContextId:"");this.$.attr("id",n.ContentId);this.config=n;var t=this.getItemState("reorder_onpostback_"+this.config.stateKey);this.saveItemState($f("reorder_{0}",this.config.stateKey),t);this.saveItemState("reorder_onpostback_"+this.config.stateKey,null);this.render();this.config.Form.on("collectValues",this.onCollectValues)},dispose:function(){this.$.off();this.config.Form.off("collectValues",this.onCollectValues);t.callBaseMethod(this,"dispose")},render:function(){var n=this.config;n.CanRemove=!n.ReadOnly&&n.CanRemove!==!1;n.CanAdd=!n.ReadOnly&&n.CanAdd!==!1;n.CanOrder=!n.ReadOnly&&n.AllowOrder!==!1;n.CanAddRemove=n.CanAdd&&n.CanRemove;n.ShowToolsColumn=n.CanAdd||n.CanRemove||n.CanOrder;n.DefinedStyle==="StaticTable"&&(n.IsStatic=!0);n.IsStatic||this.registerClientFunctions();this.refresh();this.on({MoveUp:this.onItemAction,MoveDown:this.onItemAction,MoveTop:this.onItemAction,MoveBottom:this.onItemAction,MoveTo:this.onItemAction,ReOrder:this.onReOrder,SaveReOrder:this.onSaveReOrder,CancelReOrder:this.onCancelReOrder,Delete:this.onDelete,Insert:this.onItemAction,ColumnSort:this.onColumnSort,Search:this.onSearch,ClearSearch:this.onClearSearch,ChangePageSize:this.onChangePageSize,ChangePage:this.onChangePage,change:this.onChange,fileClear:this.onFileClear});return this},refresh:function(t){var f=this,r=this.config,u;t||(this.ctrlConfigs=[],u=this.getItemModel(),n.extend(r,{ItemModel:u}));r.ShowPaging&&(t||n.extend(r,this.getPagerModel()),this.updatePagerAndSummary(),this.processPaging());this.$.empty().append(i.render(r));this.widgetize();this.$.find("input[rql-id='search']").on("keyup",function(n){if(n.key==="Enter"||n.keyCode===13){n.preventDefault();n.stopPropagation();f.onSearch(n)}})},onCollectValues:function(t){var u=this.config,r,i;u.IsStatic||(r=this.$.find('div[rql-role="bulklist"]'),i=/\|/,r.each(function(r,u){for(var s,f=n(u),v=f.attr("rql-context"),y=f.find('input[type="checkbox"]'),p=v+"__bulklist_"+f.attr("rql-id"),h=y.filter(":checked"),e=[],o=0;o<h.length;o++){var c=n(h[o]),l=c.attr("rql-value"),a=c.attr("rql-text");l&&a&&(e.push(l.replace(i,"\\|")),e.push(a.replace(i,"\\|")))}s=e.join("|");t.values.add(p,"None"+(s?"|"+s:""))}))},onRendered:function(){var r=this,i,n,t;if(!this.config.ReadOnly){if(this.config.ClientValidations)for(i=0;i<this.config.ClientValidations.length;i++){n=this.config.ClientValidations[i];t=r.$.find("#"+n.id);n.type==="bulklist"&&(t=t.find("input[type='checkbox']"));t.on(n.ev,n.handler);t.trigger(n.ev)}this.isInReOrderMode()&&this.setReorder(!0,!1)}},onItemAction:function(t){var f,h,c;t.stopPropagation();t.preventDefault();var a=this,l=this.config,o=n(t.currentTarget).attrs();if(o.rql&&o.rql.data!=null){var i=l.ItemModel.rows,r=parseInt(o.rql.ordinalindex),e=i.findByKey("index",r),u,s=!1;switch(o.rql.action){case"MoveDown":i.length>1&&r<i.length&&(u=i.findByKey("index",r+1),e.index=r+1,e.isDirty=!0,u.index--,u.isDirty=!0,s=!0);break;case"MoveUp":r>1&&(u=i.findByKey("index",r-1),e.index=r-1,e.isDirty=!0,u.index++,u.isDirty=!0,s=!0);break;case"MoveTop":if(r>1){for(f=1;f>0&&f<r;)u=i.findByKey("index",f),u.index++,u.isDirty=!0,f++;e.index=1;e.isDirty=!0;s=!0}break;case"MoveBottom":if(i.length>1&&r<i.length){for(f=r+1;f>0&&f<=i.length;)u=i.findByKey("index",f),u.index--,u.isDirty=!0,f++;e.index=i.length;e.isDirty=!0;s=!0}break;case"MoveTo":h=parseInt(this.$.find(t.currentTarget).val());h<=0&&(h=1);h>i.length&&(h=i.length);s=this.moveItemTo(e,r,h);break;default:needRefresh=!1;c=new $rql.ui.components.valueCollection;c.add(o.rql.data+"__list_Action",o.rql.action);this.updateForm(t,c)}this.setPostbackControlForActionButtons(n(t.currentTarget));s&&(this.saveItemState("reorder_"+l.stateKey,null),this.reorderItems(!0,!0))}},onDelete:function(t){var r=n(t.currentTarget).attr("rql-data"),i=new $rql.ui.components.valueCollection;i.add(r+"__list_Action","Delete");this.updateForm(t,i);this.setPostbackControlForActionButtons(n(t.currentTarget));t.stopPropagation()},onReOrder:function(n){var r=this.isInReOrderMode(),u=!r,f=this,i=new $rql.ui.components.valueCollection,t;this.config.Form.collectValues(i);t=this.config.Form.getUpdates(i,this.config.Form.values);t.length>0?(this.saveItemState("reorder_onpostback_"+this.config.stateKey,!0),this.updateForm(n,t)):f.setReorder(u,!0);n.stopPropagation()},onCancelReOrder:function(n){var i=this,r=this.config.ItemModel.rows,t=this.config.ItemModel.rows.filter(function(n){return n.isDirty});t.length>0?(t.each(function(n){n.index=n.originalIndex;delete n.isDirty}),this.reorderItems(!0,!1)):this.setReorder(!1,!0);n.stopPropagation()},onSaveReOrder:function(n){var t=this.config,f=t.ItemModel.rows,u,r=f.where(function(n){return n.isDirty}),i;this.setReorder(!1,!0);r.length>0&&(i=new $rql.ui.components.valueCollection,r.map(function(n){u=$f("MoveTo_{0}",n.index);i.add(n.contextName+"__list_Action",u)}),i.add(r[0].contextName+"__list_Action","MoveToComplete"),t.Form.collectValues(t.Form.values=t.Form.newValueCollection(),!0,!0),this.updateForm(n,i));n.stopPropagation()},getItemModel:function(){for(var e,o,s,t=this.config,a=this,r=t.ItemData&&t.ItemData.GridRows?t.ItemData.GridRows:[],u={},c=[],f=[],l,h=[],i=0;i<r.length;i++){if(e=r[i],o={itemId:e.RqlItemId,index:i+1,originalIndex:i+1,visible:!0,columns:[]},e.GridCells)for(s=0;s<e.GridCells.length;s++){var v=e.GridCells[s],n=JSON.parse(v.RawHtml),y=a.parseListControl(n,o.itemId),p={index:s,rawHtml:y,title:n.Header,contextName:n.ContextName,uniqueId:n.UniqueId,dataType:n.DataType,id:n.Id,colStyle:n.TableStyle,colCss:n.TableCss,search:n.Search};l=n.ContextName;o.columns.push(p);i===0&&(n.Search&&h.push(n.Header),c.push({id:n.ContextName+n.Id,columnId:n.Id,title:n.Header,titleUiStyle:n.HeaderUiStyle,dataType:n.DataType,search:n.Search}))}o.contextName=l;f.push(o)}return u.headers=c,u.rows=f,u.s=t.ItemData.Id,f.length>0&&(u.lastRowItemId=f[f.length-1].contextName),h.length>0&&(t.SearchPlaceholder=h.join(",")),t.IsStatic&&r.length===1&&r[0].IsEmpty&&(t.NoData=!0,t.ColumnCount=r[0].GridCells.length),u},getPagerModel:function(){var n={ListPager:{ShowPageSize:!0,ShowRecordCount:!0,CurrentPageIndex:0,PageSizes:[{Size:5},{Size:10},{Size:20},{Size:50},{Size:100}],Pages:[]}},t=n.ListPager.PageSizes.findByKey("Size",this.config.PageSize);return t&&(t.Active=!0),n},updatePagerAndSummary:function(){var n=this.config,i=n.ListPager.PageSizes.findByKey("Active",!0).Size,t=n.ItemModel.rows,h=t.filter(function(n){return n.visible!==!1}),u=n.ListPager.CurrentPageIndex?n.ListPager.CurrentPageIndex:0,e,r;for(n.ListPager.CanPagePrev=u>0,n.ListPager.CanPageNext=u<Math.ceil(t.length/i)-1,n.ListPager.Pages=[],e=Math.ceil(t.length/i),r=1;r<=e;r++)n.ListPager.Pages.push({Active:u===r-1,Page:r});var o=n.ListPager.CurrentPageIndex,f=o*i+1,s=f+i<t.length?f+i-1:t.length;n.ListPager.ListSummary=$f($rql.i18n.strings.DataPageSummaryFormat,f,s,t.length)},parseListControl:function(t,i){var c=this.config,o,a,h,e,s;if(!t)return null;var u,f=$rql.ui.templates("list-table-controls"),l=t.Type,r={UniqueId:$rql.newId()};t.UniqueId=r.UniqueId;switch(l){case"label":r.Label=!0;n.extend(r,t);r.DisableEscaping&&(r.Text=$rql.htmlDecode(r.Text));u=f.render(r);break;case"button":r.Button=!0;n.extend(r,t);r.RqlArgument&&r.RqlArgument!==""&&r.RqlActionArgument&&delete r.RqlActionArgument;u=f.render(r);break;case"text":r.TextInput=!0;n.extend(r,t);t.Value&&(t.Value=t.Value.replace(/\"/g,"&quot;"));u=f.render(r);break;case"dropdownlist":case"dropdownselect":n.extend(r,t,{SkipRender:!0});r.RqlAction==="update"&&(r.Postback=!0);l==="dropdownlist"?(r.DropdownList=!0,o=new $rql.ui.controls.dropdownlist(null,r),o.parseOptions(r)):(r.DropdownSelect=!0,o=new $rql.ui.controls.dropdownselect(null,r),o.prepare(r));u=f.render(r);break;case"checkbox":r.Checkbox=!0;n.extend(r,t);u=f.render(r);break;case"bulklist":n.extend(r,t,{SkipRender:!0,BulkList:!0});r.IsIncomplete&&(r.ShowRequiredMessage=!0,r.ValidationErrorText=r.ErrorMessage||$rql.i18n.strings.RequiredField);a=new $rql.ui.controls.bulklist(null,r);a.prepare(r);u=f.render(r);break;case"radiobuttonlist":n.extend(r,t,{SkipRender:!0,RadioButtonList:!0,Empty:!1,ReadOnly:!0,Error:!1});h=new $rql.ui.controls.radiobuttonlist(null,r);h.parseOptions(r);h.parseUiOptions(r);u=f.render(r);break;case"file":t.ContextName=t.ContextId;n.extend(r,t,{SkipRender:!0,File:!0});e=c.Form;e.uploaderId&&e.$.find($f('[name="Uploader{0}"]',e.uploaderId)).length!==0||e.$.append($f('<iframe name="Uploader{0}" src="javascript:false;" class="hide" style="display:none; width:0; height:0; border: 0"><\/iframe>',e.uploaderId=(new Date).valueOf().toString()));r.uploaderId=e.uploaderId;r.StoreId=c.Form.config.StoreId;s=new $rql.ui.controls.fileInput(null,r);s.prepare(r);s.parseFileOptions();r=s.config;r.isIOS=$rql.api.isIOS;this.extendFileConfig(r);u=f.render(r);this.ctrlConfigs.push({id:r.UniqueId,cfg:r})}return(r.ClientValidationRule||!1)&&this.registerClientValidation(r,i),u},registerClientFunctions:function(){var t,i,n,r,u;if(this.config.Functions){this.config.ClientFunctions=[];t=this.decodeFromBase64(this.config.Functions);i=/function\s+(\w+)\s*\((\w+)?\)\s*\`(.*?)\`/gm;do n=i.exec(t),n&&(r=n[1],u=n[2],funcBody=n[3],this.config.ClientFunctions.push({name:r,params:u,body:funcBody}));while(n)}},registerClientValidation:function(t,i){var u=this,f=function(n,t){var i=/\{invoke:(\w+)(\(([\w:]+)\)?)?\}/gm.exec(n),e,r,f;i&&(e=i[1],i.length>2&&(r=i[3],r==="system:ClientValidationError"&&(r=t.ClientValidationError)),f=u.config.ClientFunctions.findByKey("name",e),f&&u.executeCode(f.body,!1,f.params,r))},e=function(n,t,i,r,f,e){var h=u.getTokenValues(t,i),s=!0,o;return u.executeCode(h,!0)?f.attr("has-error")?(n.attr("rql-type")==="dropdownlist"&&e.attr("title",n.attr("title")),o=$rql.ui.templates("list-table-controls").render({ErrorAlert:!0}),e.tooltip({template:o,boundary:"window",placement:"bottom"}).show()):(f.removeClass("input-error"),e.tooltip("dispose")):(s=!1,f.attr("has-error")||f.addClass("input-error"),e.attr("title",r.ClientValidationError),o=$rql.ui.templates("list-table-controls").render({ErrorAlert:!0}),e.tooltip({template:o,boundary:"window",placement:"bottom"}).show()),s},r;if(this.config.ClientValidations||(this.config.ClientValidations=[]),t.ClientValidationRule&&(r=$rql.safeHtmlDecode(t.ClientValidationRule),r))switch(t.Type){case"text":this.config.ClientValidations.push({id:t.UniqueId,ev:"blur",handler:function(u){try{if(r.startsWith("{invoke:"))f(r,t);else{var o=n(u.currentTarget),s=o.closest("div.md-form");e(o,i,r,t,s,o)}}catch(h){console.log(h)}}});break;case"bulklist":this.config.ClientValidations.push({id:t.UniqueId,type:"bulklist",ev:"change",handler:function(u){try{if(r.startsWith("{invoke:"))f(r,t);else{var o=n(u.currentTarget),s=o.closest('div[rql-role="bulklist"]');e(o,i,r,t,s,o)}}catch(h){console.log(h)}}});break;case"dropdownlist":case"dropdownselect":this.config.ClientValidations.push({id:t.UniqueId,ev:"change",handler:function(u){try{if(r.startsWith("{invoke:"))f(r,t);else{var o=n(u.currentTarget),h=o.closest("div.md-form"),s;s=t.Type==="dropdownlist"?o.siblings("span.select2-container"):o;e(o,i,r,t,h,s)}}catch(c){console.log(c)}}});break;case"checkbox":this.config.ClientValidations.push({id:t.UniqueId,ev:"change",handler:function(u){u.stopPropagation();try{if(r.startsWith("{invoke:"))f(r,t);else{var o=n(u.currentTarget),s=o.closest("div.custom-checkbox");e(o,i,r,t,s,s)}}catch(h){console.log(h)}}})}},getTokenValues:function(t,i){var l=this,u=i,a=/\{(\w+)(\:\w+)?\}/ig,v=this.config.ItemModel.rows.find(function(n){return n.itemId===t}),r,s,f,o,h,c,e;do if(r=a.exec(i),r&&(s=v.columns.find(function(n){return n.id===r[1]}),s))if(f=l.$.find("#"+s.uniqueId),o=f.attrs(),o.rql.explicitmask&&o.rql.type==="text")$rql.ui.get(f[0]).stripValue(),e=f.val(),u=u.replace(r[0],e||null);else{if(o.rql.role==="bulklist")return h=[],c=r.length>2?r[2]:null,f.find("input[type='checkbox']"+(c===":all"?"":":checked")).each(function(){h.push(n(this).attr("rql-value"))}),h;o.rql.type==="checkbox"?(e=f.is(":checked")?"true":"false",u=u.replace(r[0],e||null)):(e=f.val(),u=u.replace(r[0],e||null))}while(r);return u},executeCode:function(n,t,i,r){return i&&r?Function(i,(t?"return ":"")+n).call(this,r):Function((t?"return ":"")+n).call(this)},reorderItems:function(n,t){var i=this.config,r=i.ItemModel.rows;r.sort(function(n,t){return n.index-t.index});n&&(this.refresh(!0),this.setReorder(t,!0))},isInReOrderMode:function(){return this.getItemState("reorder_"+this.config.stateKey)||!1},setReorder:function(n,t){var i=this.config,h="reorder_"+i.stateKey,u=this.$.find("table#"+i.Id),f=u.find($f("[rql-role=reorder-detail][rql-parentlist={0}]",i.Id)),e=this.$.find($f("[rql-role=reorder_mode_{0}] > [rql-role=reorder-out]",i.Id)),o=this.$.find($f("[rql-role=reorder_mode_{0}] > [rql-role=reorder-in]",i.Id)),s=this.$.find($f("[rql-role=non-reorder-controls][rql-parentlist={0}]",i.Id)),r=u.find("tbody tr td").not("[rql-role='tools']"),c=r.first(),l=r.last();n?(this.registerBlockingActivityStart(),f.removeClass("hide"),e.addClass("hide"),o.removeClass("hide"),s.addClass("hide"),r.addClass("disabled")):(this.registerBlockingActivityStop(),f.addClass("hide"),e.removeClass("hide"),o.addClass("hide"),s.removeClass("hide"),r.removeClass("disabled"));t&&this.saveItemState(h,n)},restoreStates:function(){this.isInReOrderMode()&&this.setReorder(!0,!0)},moveItemTo:function(n,t,i){var e,r;if(t===i)return!1;var o=this.config,h=this,u=o.ItemModel.rows,s=t<i?"down":"up",f=!1;if(u.length>1){if(e=u.findIndexByKey("itemId",n.itemId),u.move(e,i-1),r=i-1,s==="down")while(r>=0)u[r].index=r+1,u[r].isDirty=!0,r--;else while(r<u.length)u[r].index=r+1,u[r].isDirty=!0,r++;f=!0}return f},processPaging:function(){for(var n=this.config.ItemModel.rows,f=this.config.ListPager.CurrentPageIndex,u=this.config.ListPager.PageSizes.findByKey("Active",!0).Size,i=f*u+1,e=i<n.length?i+u-1:n.length,r=0,t=0;t<n.length;t++)r=t+1,n[t].visible=r>=i&&r<=e},sort:function(t,i){var f=function(n){var i=Sys.CultureInfo.CurrentCulture.numberFormat,t=n.replace(i.CurrencySymbol,"");return(i.NumberDecimalSeparator!=="."?(t=t.replace(i.NumberDecimalSeparator,"#"),t=t.replace(i.NumberGroupSeparator,""),t=t.replace("#",".")):t=t.replace(i.NumberGroupSeparator,""),isNaN(t))?n:parseFloat(t)},r,u,e;t.rows.length!==0&&(r=t.headers.findIndexByKey("columnId",i),u=t.headers[r].dataType.toLowerCase(),t.headers.map(function(n){n.sorted=!1}),t.headers[r].sorted=!0,t.headers[r].ascending=!t.headers[r].ascending,ascending=t.headers[r].ascending,t.rows=t.rows.sort(function(t,i){var e=n(t.columns[r].rawHtml).html(),o=n(i.columns[r].rawHtml).html();return u==="number"?(e=f(e),o=f(o),ascending?e-o:o-e):u=="string"?ascending?e.localeCompare(o):o.localeCompare(e):void 0}),e=1,t.rows.map(function(n){n.index=e++}),this.refresh(!0))},onSearch:function(t){var i=n(t.currentTarget).siblings("input[rql-id='search']");if(i.length===0&&n(t.currentTarget).is("input")&&(i=n(t.currentTarget)),i.length>0&&i.val()!==""){var r=i.val().toLowerCase(),u=this.config.ItemModel,f=u.rows.filter(function(t){for(var u=!1,i=0;i<t.columns.length;i++)if(t.columns[i].search&&n(t.columns[i].rawHtml).html().toLowerCase().contains(r)){u=!0;break}return u});this.config.ItemModel.rows=f;this.config.Filtered=!0;this.refresh(!0)}},onClearSearch:function(){this.config.Filtered=!1;this.refresh(!1)},onColumnSort:function(t){var i=n(t.currentTarget).closest("th").attr("rql-column-id"),r=this.config.ItemModel;this.sort(r,i)},onChangePageSize:function(t){var f=this.config,u=parseInt(n(t.currentTarget).attr("rql-data")),i=this.config.ListPager.PageSizes.findByKey("Active",!0),r;i&&i.Size!==u&&(i.Active=!1,r=this.config.ListPager.PageSizes.findByKey("Size",u),r&&(r.Active=!0,this.refresh(!0)))},onChangePage:function(t){var r=this.config,f=r.ListPager.PageSizes.findByKey("Active",!0).Size,i=r.ListPager.CurrentPageIndex,u=n(t.currentTarget).attr("rql-data"),e=r.ListPager.CurrentPageIndex;switch(u){case"--":i=0;break;case"-":i--;break;case"+":i++;break;case"++":i=Math.ceil(r.ItemModel.rows.length/f)-1;break;default:i=parseInt(u)-1}i!==e&&(r.ListPager.CurrentPageIndex=i,this.refresh(!0))},onChange:function(t){var u,e;if(t&&t.currentTarget&&t.currentTarget.name==="UploadFile"){var i=this.ctrlConfigs.findByKey("id",n(t.currentTarget).attr("rql-id")),f=n(t.currentTarget).closest("form#uploadForm"),r=this.config;r.Form.disable();try{if(r.$iframe=n(n.find($f("iframe[name='Uploader{0}']",this.config.Form.uploaderId))),r.$iframe&&r.$iframe.bind("load",this.onFileResponseReady),i.AllowedExtensions&&(u=t.currentTarget.value,u&&(e=u.slice(u.lastIndexOf(".")).toLowerCase(),!i.ValidExtensions.contains(e))))return i.Form.enable(),i.Error=!0,i.Errors=[{InvalidFileExtension:!0}],!1;f[0].submit();f.hide();n(t.currentTarget).closest('[rql-file-control="yes"]').find("#uploadProgress").show()}catch(t){alert(t)}}},onFileResponseReady:function(){n("ErrorCode",this.config.$iframe.contents()).text()!=""&&(this.config.$iframe.contents().find("ErrorCode").html(""),this.config.Error=!0,this.onUploaded())},onUploaded:function(t){var o=["InvalidFileExtension","LimitExceeded","FileTypeInvalid","FileNotAllowed"],s,i,r,f,u,e,h;if(this.registerBlockingActivityStop(),s=this,i=this.config,i.$iframe&&i.$iframe.unbind("load",this.responseReady),r=this.ctrlConfigs.findByKey("id",t.FileControlId),r){if(r=r.cfg,f=this.$.find("#"+t.FileControlId),f.find("#uploadProgress").hide(),t)if(t.Error){for(u=0;u<o.length;u++)delete i[o[u]];i.Error=!0;e={};t.ErrorType&&(e[t.ErrorType]=!0);i.Errors=[e]}else n.extend(r,{Empty:!1,ReadOnly:!1},t),this.extendFileConfig(r);h=$rql.ui.templates("list-table-controls").render(r);f.empty().append(n(h).html());this.widgetize();i.Form.enable();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(i.Form.disable(),this.triggerOnUpdate(),i.Form.update(new $rql.ui.components.valueCollection,function(){s.config.Form.enable()}))}},onFileClear:function(t){var e=this,r=n(t.currentTarget).closest('[rql-file-control="yes"]').attr("id"),i=this.ctrlConfigs.findByKey("id",r),f=this.$.find("#"+r),u;i&&(i=i.cfg,n.extend(i,{Empty:!0,Error:!1,ReadOnly:!1}),this.extendFileConfig(i),u=$rql.ui.templates("list-table-controls").render(i),f.empty().append(n(u).html()),this.widgetize())},extendFileConfig:function(n){if(n.FileName){n.FileText=null;var t=n.FileName.split(".").pop();t=t?t.toLowerCase():t;!t||t=="jpg"||t=="jpeg"||t=="png"||t=="gif"||(n.FileText=t.toUpperCase())}n.Size=isNaN(n.Length)?$rql.i18n.strings.UnknownSize:$f("{0:n0} KB",Math.ceil(n.Length/1024));n.Value=n.Empty?null:$f("{0}|{1}|{2}|{3}|{4}|{5}",n.FileName,n.FileId,n.FileId,n.ContentType,n.Length?n.Length.toString():"",n.Date)},validateItems:function(){}};t.registerClass("$rql.ui.controls.listtable",$rql.ui.controls.listbase)})(jQuery);
(function(n){var r={},i=/\|/,t=$rql.ui.controls.bulklist=function(n,i){i.SkipRender||t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({UniqueId:$rql.newId()},r,t);this.template=$rql.ui.templates("bulklist");this.prepare(this.config);this.render();this.config.Form.on("collectValues",this.onCollectValues)},dispose:function(){this.$.off();this.$selectAll&&(this.$selectAll.off(),this.$options.off());this.$selectAll=this.$options=this.$optionTexts=null;this.config.Form.off("collectValues",this.onCollectValues);t.callBaseMethod(this,"dispose")},prepare:function(n){n.OptionCount=n.Options?n.Options.length:0;this.createOptions2D(n);n.ReadOnly&&!n.ReadOnlyShowAllOptions?n.SelectionText=n.Selection==="All"?n.Options&&n.Options.length!==0?$rql.i18n.strings.BulkListAllExcept:$rql.i18n.strings.BulkListAll:"":n.IsSnapshot||n.SelectAllHidden?this.prepareSnapshotOptions(n):this.prepareOptions(n)},prepareSnapshotOptions:function(n){var r=0,t,i;if(n.Options)for(t=0;t<n.Options.length;t++)i=n.Options[t],i.Checked=!!i.E,r+=i.Checked?1:0;n.IsSnapshot?n.SelectAllState=n.Selection=r!==0&&r===n.OptionCount?"All":"None":n.SelectAllHidden&&(n.SelectAllState=n.Selection="None")},prepareOptions:function(n){var r=!1,u=n.Selection==="All",i,t;if(n.Options)for(i=0;i<n.Options.length;i++)t=n.Options[i],t.Checked=u&&!t.E||!u&&t.E,r=r||t.E;n.SelectAllState=n.Selection==="All"&&r?"":n.Selection},createOptions2D:function(n){var t,i,r,u,f;if(n.Options2D=null,n.OptionCount>0)for(t=n.ColumnCount,i=n.RowCount,t||i||(t=1),t?(n.OptionCount<t&&(t=n.OptionCount),i=Math.floor(n.OptionCount/t)+(n.OptionCount%t!=0?1:0)):(n.OptionCount<i&&(i=n.OptionCount),t=Math.floor(n.OptionCount/i)+(n.OptionCount%i!=0?1:0)),n.ColumnSpanCount=Math.floor(12/t)||1,n.Options2D=[],r=0;r<t;r++)for(n.Options2D[r]=[],u=0;u<i;u++)f=r*i+u,f<n.OptionCount&&(n.Options2D[r][u]=n.Options[f])},render:function(){this.config.FooterTooltipHtml&&(this.config.FooterTooltipHtml=$rql.safeHtmlDecode(this.config.FooterTooltipHtml));var n=this.template.render(this.config);this.$.html(n).widgetize();this.$selectAll=this.$.find("input[name='SelectAll']").on("click",this.onSelectAllClick);this.$options=this.$.find("div[rql-role='checkboxes'] input[type='checkbox']").on("click",this.onOptionClick);this.renderSelectAllState()},renderSelectAllState:function(){var t=this.config,n=t.SelectAllState==="",i=t.SelectAllState==="All"||n;i?this.$selectAll.attr("checked","checked"):this.$selectAll.removeAttr("checked");this.$selectAll.prop("checked",i).prop("indeterminate",n).toggleClass("indeterminate",n)},onCollectValues:function(t){var r=this.config,f,u,o;if(!r.ReadOnly&&this.$options)if(f=r.ContextName+"__bulklist_"+r.Id,t.excludeDefaults&&r.IsDefault)t.values.add(f,"");else{var s=r.IsSnapshot||r.SelectAllHidden?!1:r.Selection==="All",e=[],h=s?this.$options.filter(":not(:checked)"):this.$options.filter(":checked");for(u=0;u<h.length;u++){var c=n(h[u]),l=c.attr("rql-value"),a=c.attr("rql-text");l&&a&&(e.push(l.replace(i,"\\|")),e.push(a.replace(i,"\\|")))}o=e.join("|");t.values.add(f,(s?"All":"None")+(o?"|"+o:""));t.values.processControlWithDefault(this.$,!t.excludeDefaults&&r.IsDefault)}},onSelectAllClick:function(t){var i=this.config,r;i.IsDefault=!1;r=n(t.currentTarget).prop("checked");this.$options.prop("checked",r);i.Selection=i.SelectAllState=r?"All":"None";this.renderSelectAllState();this.$.attr("postback")&&this.$.attr("postback")==="yes"&&(i.Form.disable(),i.Form.setPostbackControlId&&i.Form.setPostbackControlId(t),i.Form.update(new $rql.ui.components.valueCollection,function(){i.Form.enable()},null,null,null,t))},onOptionClick:function(n){var t=this.config,i;t.IsDefault=!1;t.SelectAllHidden||(i=this.$options.filter(":checked").length,i===0||t.IsSnapshot&&i<t.OptionCount?t.Selection=t.SelectAllState="None":i===t.OptionCount?t.Selection=t.SelectAllState="All":t.SelectAllState=t.Selection==="All"?"":"None",this.renderSelectAllState());this.$.attr("postback")&&this.$.attr("postback")==="yes"&&(t.Form.disable(),t.Form.setPostbackControlId&&t.Form.setPostbackControlId(n),t.Form.update(new $rql.ui.components.valueCollection,function(){t.Form.enable()},null,null,null,n))}};t.registerClass("$rql.ui.controls.bulklist",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.listdialog=function(n){var i=$rql.ui.div("rqlListDialog").empty();t.initializeBase(this,[i.get(0),n])};t.prototype={initialize:function(n){this.header=n?n.header:undefined;this.items=n?n.items:undefined;this.selectedIndex=n&&n.items&&n.index>=0&&n.index<n.items.length?n.index:this.items&&this.items.length===1?0:null},render:function(){return this.$.html($rql.ui.templates("list-dialog").render({items:this.items,header:this.header})),this.$items=this.$.find("[rql-role='item']"),this.selectedIndex!=null&&this.$items.eq(this.selectedIndex).addClass("active"),this.widgetize(),$rql.api.uiVersion<=2&&this.$.show(),this},onRendered:function(){this.$ok=this.$.find("#btnOK");this.$items.on("click",this.onItemClick);this.$ok.prop("disabled",this.selectedIndex==null);this.$ok.on("click",this.onOKClick);this.$.on("hidden",this.onHidden)},dispose:function(){if($rql.api.uiVersion>2)this.$.find(".modal").modal("hide");else{if(this.disposing)return;this.disposing=!0;this.$.find("div[rql-role='modal']").modal("hide");this.$items=this.$ok=null}t.callBaseMethod(this,"dispose")},onItemClick:function(t){var i=n(t.currentTarget);this.selectedIndex=this.$items.index(i);this.$items.removeClass("active");i.addClass("active");this.$ok.prop("disabled",!1)},onOKClick:function(){var n=this.selectedIndex;n>=0&&n<this.items.length&&this.raise("selected",{index:n,item:this.items[n]})},onHidden:function(){this.disposing||this.dispose()}};t.registerClass("$rql.ui.controls.listdialog",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Distinct:!0,SelectedText:"",SelectedValue:""},t=$rql.ui.controls.dropdownlookup=function(n,i){t.initializeBase(this,[n,i])};t.prototype={getDependents:function(){var n=this.config,t=[];return n.Form.$.find($f("[rql-depends='{0}{1}']",n.Context,n.Id)).each(function(){t.add($rql.ui.get(this))}),t},initialize:function(t){var r=this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"form/",StoreId:t.Id,Form:t.Form.on("collectValues",this.onCollectValues)},i,t),u;r.IsRequired=!r.Optional&&!r.ReadOnly&&!r.ContextIsReadOnly;r.ElementId=this.elementId;this.config.Text&&(this.config.Text=this.config.Text);this.config.DisplayValue&&(this.config.DisplayValue=$rql.htmlEncode(this.config.DisplayValue));this.$.attr({"rql-id":$f("{0}{1}",r.Context,r.Id),"rql-depends":r.Depends});r.Items&&r.Items!==""&&(u=n.parseJSON(r.Items),u.map(function(n){n.name=$rql.htmlDecode(n.name)}),r.Items=u);this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly;this.$.html($rql.ui.templates("dropdownlookup").render(this.config));this.$select=this.$.find("select").first();this.parseUiOptions(this.config);this.widgetized=!0;this.show()},onCollectValues:function(n){var t=this.config;if(!t.ContextOrFormIsReadOnly){var i=this.$.find("select"),r=i.val(),u=r?i.find(":selected").text():null;n.values.add($f("{0}__dropdownLookup_{1}",t.Context,t.Id),$f("{0}||{1}||{2}||{3}",r,t.ViewId,t.Select,u))}},onDispose:function(){this.config.Form.off("collectValues",this.onCollectValues)},onLoad:function(n){var t=this.config,u=n.Items,i,r;t.Items=[];for(r in u)t.Items.push({name:u[r],value:r});t.Value&&t.Text&&(i=t.Items.findByKey("value",t.Value),i?i.name===t.Text||t.SelectedTextConflict&&t.SelectedTextConflict.toLowerCase()==="usecurrent"?i.selected=!0:t.Items.unshift({name:t.Text,value:t.Value,selected:!0}):t.SelectedAbsent&&t.SelectedAbsent.toLowerCase()==="clear"||t.Items.unshift({name:t.Text,value:t.Value,selected:!0}));t.Items.unshift({name:t.SelectText||$rql.i18n.strings.SelectItem});this.config.initialRender||(this.config.initialRender=!0,this.widgetized=!1);this.renderItems().widgetize(null,i)},onLoadError:function(){$log.error($f("Error loading dropdown for form {0}",this.config.StoreId))},refresh:function(){var t=this,n=this.config;n.ContextOrFormIsReadOnly?this.$.html($rql.ui.templates("dropdownlookup").render(this.config)).widgetize():setTimeout(function(){var i={ViewId:n.ViewId,Field:n.Field,StoreId:n.Form&&n.Form.config?$rql.isNull(n.Form.config.ShadowStoreId,n.Form.config.StoreId):null,StorePath:n.StorePath,Distinct:n.Distinct,DualModeRequestOnline:n.DualModeRequestOnline};$rql.api.offline&&n.DualModeRequestOnlineArguments&&n.DualModeRequestOnline&&(i.DualModeRequestOnlineArguments=n.DualModeRequestOnlineArguments,i.Id=n.Id,i.DualModeArgumentNames=["__rqlnames__"],i.DualModeArgumentValues=["__rqlvalues__"]);t.post("dataitems",i,null).done(t.onLoad).fail(t.onLoadError)})},render:function(){this.refresh()},onRendered:function(n){n?this.updateDependents():this.resetDependents()},renderItems:function(){return this.$.html($rql.ui.templates("dropdownlookup").render(this.config)),this.$select=this.$.find("select").first(),this},resetDependents:function(){for(var t=this.getDependents(),n=0;n<t.length;n++)t[n].onLoad({Items:{}})},updateDependents:function(){for(var t=this.getDependents(),n=0;n<t.length;n++)t[n].refresh()},parseUiOptions:function(n){n.Options&&(n.Options=n.Options.parseOptionsAsObject(),n.Options.DropdownMenu&&(n.Options.DropdownMenu.nonetext&&(n.SelectText=n.Options.DropdownMenu.nonetext),n.Options.DropdownMenu.selecttext&&(n.SelectText=n.Options.DropdownMenu.selecttext)))}};t.registerClass("$rql.ui.controls.dropdownlookup",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.menu=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({partials:$rql.ui.partials("menu-items"),template:$rql.ui.templates("menu")},t);this.on("clear",this.onClear);$rql.api.embeddedView&&(this.config.root.DisableMobileNavElements=!0)},onClear:function(){this.$searchBox.val("").focus()},onHighlight:function(n){var t=this.config.items.first(function(t){return t.title==n});return $f('<a href="#" onclick="$rql.api.navigate(\'{1}\'); return false">{0}<\/a>',t.title,t.url)},onSearch:function(n){for(var i=this.config.items,r=[],t=0;t<i.length;t++)this.config.items[t].title.toLowerCase().contains(n.toLowerCase())&&r.add(i[t].title);return r},render:function(n){if(this.isVisible()&&!this.rendered){var t=this.config;n&&(t.EventHandlerObj=n);t.root&&(t.root.randomId=function(){return $rql.newId()});this.$.html(t.template.render(t.root,t.partials));(this.$searchBox=this.$.find("[rql-role='search']")).typeahead({source:this.onSearch,highlighter:this.onHighlight});this.widgetize()}},onRendered:function(){var i=this.config,r,t;if(this.onRender&&this.onRender(),r=$rql.ui.get("#rql").page,t=$rql.http.uri().path,r.Scope&&i.items&&(t=$rql.isNull(i.items.first(function(n){return n.url==t}),i.items[0]).url),this.$.find($f('a[href="{0}"]',t)).parents("li").addClass("active"),$rql.api.uiVersion>2){r.Scope&&this.$.find($f('a[href="{0}"]',t)).addClass("active").closest("li").children("a").addClass("active");this.renderMainMenu();n(".dropdown-toggle").on("click",function(){n(".dropdown-submenu > .dropdown-menu").hide()});n(".dropdown-submenu .dropdown-toggle").on("click",function(t){t.stopPropagation();t.preventDefault();n(this).next(".dropdown-menu").toggle()})}this.raise("rendered").rendered=!0},renderMainMenu:function(){var f=n("[rql-role='home-placeholder']"),h=$rql.i18n.strings.Home,e=[],i={},o="",r,t,u,s;if(f.length>0){for(r=0;r<this.config.items.length;r++)if(t=this.config.items[r],t.key==="/home"&&t.top&&t.items.length===0){o=t.url;break}o!==""&&f.find("a[rql-action='home']").attr("href",o);i.content=[];i.content.add(f.html());i.content.add("searchfield");e.add({position:"top",content:i.content})}if($rql.api.embeddedView&&e.add({position:"top",content:n("[rql-role='offline-iconmenu']").html()}),u=!1,n("nav#main-nav").mmenu({extensions:["theme-white","shadow-page","pagedim-black"],setSelected:{hover:!0,parent:!0},counters:!0,navbar:{title:h},navbars:e,searchfield:{showTextItems:!0,panel:{add:!0}},hooks:{"open:before":function(){n(".rql-side-nav-container.dock:visible").length>0?(u=!0,n(".rql-side-nav-container.dock:visible").removeClass("dock")):u=!1},"open:after":function(){this.$menu.find(".mm-searchfield input").focus()},"close:after":function(){u&&n(".rql-side-nav-container:visible").addClass("dock")}}},{offCanvas:{page:{selector:"#rql"}},classNames:{selected:"active"},searchfield:{clear:!0},openingInterval:10,transitionDuration:400}),n("nav#main-nav .mm-searchfield__input").find("[rql-role='menuSearchIconWrapper']").remove().end().prepend("<div class='d-inline-block mr-2' rql-role='menuSearchIconWrapper'><i class='fas fa-search fa-lg'><\/i><\/div>"),s=n("footer"),s.length>0&&(n("nav#main-nav").find(".mm-panels .menu .mm-listview").append("<li class='mm-listitem mm-listitem_divider' style='position:absolute;width:100%'>"+n("footer").html()+"<\/li>"),s.remove()),this.config.EventHandlerObj){n("nav#main-nav").on("click","[rql-url]",this.config.EventHandlerObj.onNavigate);n("nav#main-nav").on("click","[rql-action=create], [rql-action=new], [rql-action=newandexecute], [rql-action=newandpublish]",this.config.EventHandlerObj.createStore);n("nav#main-nav").on("click","[rql-action=logout]",this.config.EventHandlerObj.logout);n("nav#main-nav").on("click","[rql-action=synchronize]",this.config.EventHandlerObj.synchronize);n("nav#main-nav").on("click","[rql-action=checkforupdates]",this.config.EventHandlerObj.checkForUpdates)}$rql.i18n.isRtlLanguage&&(n("nav#main-nav > .mm-panels").attr("dir","rtl"),n("nav#main-nav .mm-searchfield__input input").attr("dir","rtl"))},subMenu:function(){this.$.find(".dropdown-menu a.dropdown-toggle").on("click",function(){n(this).next().hasClass("show")||n(this).parents(".dropdown-menu").first().find(".show").removeClass("show");var t=n(this).next(".dropdown-menu");t.toggleClass("show");n(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown",function(){n(".dropdown-submenu .show").removeClass("show")});return!1})}};t.registerClass("$rql.ui.controls.menu",$rql.ui.controls.view)})(jQuery);
(function(n){var i={collapseAt:300},t=$rql.ui.controls.navbar=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({partials:$rql.ui.partials("navbar-items"),template:$rql.ui.templates("navbar")},i,t);$rql.api.uiVersion>2&&(this.config.partials["app-navbar-items"]=$rql.ui.templates("app-navbar-items").html,this.config.root&&(this.config.root.coBrandingSecondaryColor=$rql.api.coBrandingSecondaryColor));$rql.events.on("resize",this.onResize);if(this.config.root.more=!0,this.isTablet()&&(this.config.collapseAt=350),this.config.isAppNav&&(this.config.collapseAt=this.isTablet()?450:400),!($rql.api.uiVersion>2)&&this.config.root.home){var r=this.config.root.items.findIndexBy(function(n){return n.key==="/home"&&n.top&&n.items.length===0});r>=0&&(this.config.root.items[r].hide=!0)}},dispose:function(){$rql.events.off("resize",this.onResize);$rql.events.off("fullscreen",this.onResize);$rql.events.oneOff("resize",this.onStartResize);t.callBaseMethod(this,"dispose")},onPageChanged:function(n){this.$.find(".active").removeClass("active");this.$.find("li").removeClass("show");var t=this.$.find($f("[rql-url='{0}']",n.Url));$rql.api.uiVersion>2?(t.addClass("active"),t.parents("li").addClass("active").removeClass("open open-dropdown"),this.config.root&&(this.config.root.selectedNavTitle=t.html()),this.$.find(".dropdown > .dropdown-menu").removeClass("show"),this.$.find(".dropdown-menu").removeClass("show"),t.closest("li").removeClass("show"),t.closest("li").addClass("active"),t.closest("li").children("a").addClass("active")):t.parents("li").addClass("active").removeClass("open open-dropdown")},onRender:function(){if($rql.api.uiVersion>2)this.$.find("ul[rql-role='navbar']").flexMenu({popupClass:"flex-app-nav",navitemCss:"nav-item d-flex-0",linkText:$rql.i18n.strings.More,linkTextAll:$rql.i18n.strings.Menu,cutoff:0,threshold:0});else{this.$moreItems=(this.$more=this.$.find("[rql-role='more']").hide()).find("> ul");this.on({resize:this.onResize,toggle:this.onToggle}).onResize();$rql.events.on("fullscreen",this.onResize)}},onResize:function(){var u,r,t;if(this.isVisible()){if(this.$more){var i=this.$more.hide().find("> ul"),e=i.children("[rql-role='dropdown-more']"),o=this.$.find(".row-fluid, .row").width()-this.config.collapseAt-this.$more.width(),f=!1;for(i.find("> li.dropdown-submenu[rql-role!='dropdown-more']").toggleClass("dropdown-submenu dropdown").find("i").show(),i.find("> li[rql-role!='dropdown-more']").insertBefore(this.$more),u=this.$.find("ul.nav > li[rql-role!='more']").filter(":not([rql-role='dropdown-more'])"),r=0;r<u.length;r++)t=n(u[r]),t.position().left>=o||t.position().top>0?(t.insertBefore(e).is(".dropdown")&&t.toggleClass("dropdown dropdown-submenu"),f=!0):t.find(".show-left").removeClass("show-left");f&&(i.find("li.dropdown-submenu").addClass("show-left"),i.find("> li.active").length?this.$more.addClass("active"):this.$more.removeClass("active open open-dropdown"),this.$more.show());this.$.find(".dropdown > .dropdown-menu").css({top:"",left:""}).end().find(".navbar,.subnav").removeClass("overflow-hide")}$rql.events.oneOn("resize",this.onStartResize)}},onStartResize:function(){this.$.find(".navbar,.subnav").addClass("overflow-hide")}};t.registerClass("$rql.ui.controls.navbar",$rql.ui.controls.menu)})(jQuery);
(function(n){var t=$rql.ui.controls.responsivemenu=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({partials:$rql.ui.partials("responsive-menu-items","responsive-sub-menu-items"),template:$rql.ui.templates("responsive-menu")},t)},dispose:function(){this.$menu&&this.$menu.flexMenu({undo:!0});t.callBaseMethod(this,"dispose")},onPageChanged:function(n){this.$.find(".active").removeClass("active");this.$.find("li").removeClass("show");var t=this.$.find($f("[rql-url='{0}']",n.Url));t.addClass("active");t.parents("li").addClass("active");t.parents("li").children("a.nav-link").addClass("active");this.config.root&&(this.config.root.selectedNavTitle=t.html());t.parents("ul.dropdown-menu").hide();this.$.find(".dropdown-menu").removeClass("show")},render:function(){if(this.isVisible()&&!this.rendered){var t=this.config;t.root&&(t.root.randomId=function(){return $rql.newId()});t.root.MenuId=$rql.newId();this.$.html(t.template.render(t.root,t.partials));this.$menu=this.applyMoreMenu();this.widgetize();this.$.find(".dropdown-submenu .dropdown-toggle").on("click",function(t){var i=n(t.target).parents(".flexMenu-popup").length>0;t.stopPropagation();t.preventDefault();n(this).parent().find(".dropdown-submenu .dropdown-menu").hide();n(this).next(".dropdown-menu").toggle();n(this).next(".dropdown-menu").removeClass("dropdown-menu-right");n(this).next(".dropdown-menu").isOnScreen(null,{right:!0})||(n(this).addClass("dropdown-menu-right"),n(this).next("ul.dropdown-menu").addClass("dropdown-menu-right"))});this.$menu.on("show.bs.dropdown",function(t){var i=n(t.target).parent().hasClass("flexMenu-popup");i&&n(t.target).find(".dropdown-submenu > a.dropdown-toggle, .dropdown-submenu > ul.dropdown-menu").addClass("dropdown-menu-right")}).on("hidden.bs.dropdown",function(t){n(t.target).find(".dropdown-submenu .dropdown-menu").removeClass("show dropdown-menu-right").hide();n(t.target).find(".dropdown-submenu > a.dropdown-toggle, .dropdown-submenu > ul.dropdown-menu").removeClass("dropdown-menu-right")})}this.$.siblings("[rql-role='app-wrapper']").addClass("responsive-menu-container")},onRendered:function(){var t=this.config,i,n;this.onRender&&this.onRender();i=$rql.ui.get("#rql").page;n=$rql.http.uri().path;i.Scope&&t.items&&(n=$rql.isNull(t.items.first(function(t){return t.url==n}),t.items[0]).url);this.$.find($f('a[href="{0}"]',n)).parents("li").addClass("active");i.Scope&&(this.$.find($f('a[href="{0}"]',n)).addClass("active").closest("li").children("a").addClass("active"),this.$.find($f('a[href="{0}"]',n)).parents("li").children("a.nav-link").addClass("active"))},onRender:function(){this.raise("rendered").rendered=!0},applyMoreMenu:function(){var n=this.config;return this.$.find($f("#{0}",n.root.MenuId)).flexMenu({navitemCss:"nav-item d-flex-0",linkText:$rql.i18n.strings.More,linkTextAll:$rql.i18n.strings.Menu,cutoff:0,threshold:0})},updateTheme:function(n){var t=this.config;this.$.parents('[rql-role="wb-app-nav-wrapper"]').length>0||(t.root.dropdownonly=!1,n&&t.root.alternateTheme!==n?(t.root.alternateTheme=n,this.$.html(t.template.render(t.root,t.partials)),this.widgetize(),this.$.siblings("[rql-role='app-wrapper'].responsive-menu-container").removeClass("responsive-menu-container"),this.$.addClass("mb-3")):n===""&&t.root.alternateTheme&&(delete t.root.alternateTheme,this.$.html(t.template.render(t.root,t.partials)),this.widgetize()),this.$menu=this.applyMoreMenu())},renderAsDropdown:function(t,i){if(t&&t.length!==0){var r=this.config;if(r.root)if(r.root.items.length>1)n.extend(r.root,i),t.html(r.template.render(r.root,r.partials));else return"";else n.extend(r,i),t.html(r.template.render(r,r.partials));this.setDropdownMenuEvents(t)}},setDropdownMenuEvents:function(t){t.off("click",".dropdown-toggle").off("hidden.bs.dropdown");t.on("click",".dropdown-toggle",function(){n(this).next().hasClass("show")||n(this).parents(".dropdown-menu").first().find(".show").removeClass("show");var t=n(this).next(".dropdown-menu");t.toggleClass("show");n(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown",function(){n(".dropdown-submenu .show").removeClass("show")});return!1}).on("hidden.bs.dropdown",function(){n(this).find(".dropdown .dropdown-menu.show").removeClass("show")});t.removeClass("hide").widgetize()}};t.registerClass("$rql.ui.controls.responsivemenu",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.page=function(n,i){t.initializeBase(this,[n,i])};t.prototype={arePageFilterDependenciesReady:function(n){var t,i;if(n.dependsOn)for(t=0;t<n.dependsOn.length;t++)if(i=this.config.PageFilters.findByKey("NormalizedId",n.dependsOn[t]),!i||!i.isReady)return!1;return!0},arePageFiltersReady:function(){return this.config.PageFilters==null||!this.config.PageFilters.any(function(n){return!n.isReady})},back:function(n){var t=this.config;t.UseViewNav&&!this.$nav.is(":visible")&&(this.$nav.show(),this.$views.hide(),$rql.isEvent(n)&&n.stopPropagation());this.isMobile()&&$rql.ui.get("#rql").top()},onLeave:function(n){$rql.ui.navigateWithFormCompletionCheck(function(){$rql.api.back()},function(){return});n.stopPropagation();n.preventDefault()},collectPageFilterValues:function(){var r=this.config.PageFilters,u,t,i,f;if(r){for(u=[],t=0;t<r.length;t++)i=r[t],i&&i.control&&(f=i.control.getFilterValues(),f&&n.merge(u,f));return u}return null},createViewControl:function(t,i,r){var u=this.config,e=this.$.find($f("[{0}='{1}']",i,t.Id)),s=t.Type?$rql.ui.controls[t.Type.toLowerCase()]:null,f,o;if(t.Container==="TopRight"&&this.$pageTitlePlaceholder&&(e=this.$pageTitlePlaceholder.find($f("[rql-page-url='{0}'] [rql-role='top-right-view-container']",this.config.Url))),e.length>0&&t.LayoutId&&!t.OtherLocation&&(t.LayoutId.toLowerCase().startsWith("sidenav")?(f=this.$container.find($f("[rql-role='app-side-nav-custom'][rql-layout-id='{0}']",t.LayoutId)),f&&t.LayoutUiStyle&&f.addClass(t.LayoutUiStyle)):(f=this.$container.find($f("[rql-layout-id='{0}']",t.LayoutId)),t.LayoutId==="Content"&&(o=this.$container.find("[rql-role='view-title']"),o.length>0&&o.html(t.Title).show())),f&&f.length>0&&e.appendTo(f)),s){if(n.extend(t,{baseUrl:u.Url,urlHashParams:u.HashParams,Context:u.Context,SingleView:u.SingleView,appViewIds:u.appViewIds,DrillDownContext:u.DrillDownContext,PageFilterCount:u.PageFilters?u.PageFilters.length:0}),this.config.SheetButtons&&(t.SheetButtons=this.config.SheetButtons),this.config.SheetButtonDefs&&(t.SheetButtonDefs=this.config.SheetButtonDefs),t.control=new s(e,t),t.control.page=this,r)t.control.on(r);t.control.on({viewChange:this.onViewChange});if(t.SetId)t.control.on("loaded",this.onViewSetLoaded)}else t.control={show:n.noop,refresh:n.noop},e.html($rql.ui.templates("view-error").render(t))},createViews:function(){var r=this.config,t,i,n;if($log.debug("Creating views for page "+r.Url),t=r.Views,t)for(i=0;i<t.length;i++)n=t[i],n&&!n.control&&(this.createViewControl(n,"rql-view"),t[n.Id]=n)},initialize:function(t){this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"core/",SingleView:t.Views.length==1},i,t);$rql.api.offline&&$rql.api.isAndroid&&this.config.mobile&&(this.config.DisableMobileNavElements=!0);this.setDependencies(t.viewDependencies,this.config.Views);this.setDependencies(t.viewDependencies,this.config.PageFilters);this.on({back:this.back,changeView:this.onChangeView,leave:this.onLeave,changeSetView:this.onChangeSetView});this.$pageTitlePlaceholder=this.$.closest('[rql-role="content-row"]').parent().find('[rql-role="title-placeholder"]');this.renderPageTitle()},isViewDependsOn:function(n,t){return!t&&!n.dependsOn||t&&n.dependsOn&&n.dependsOn.contains(t.toLowerCase())},onChangeSetView:function(t){var u=n(t.currentTarget).attrs(),h,r,e,i,c,l,o,f,a,s;if(u.rql&&(h=u.rql.data)&&(r=this.config.Views[h])){for(i=0;i<this.config.Views.length;i++)if(this.config.Views[i].SetId==r.SetId&&(this.config.Views[i].Set.length>0&&(e=this.config.Views[i].Set),this.config.Views[i].ActiveSetView&&(this.config.Views[i].control.$.hide(),this.config.Views[i].ActiveSetView=!1,this.config.Views[i].control.SideFilterControl&&this.config.Views[i].control.SideFilterControl.hide(),this.config.Views[i].HideToolBarButtonWhenNonActive&&(this.config.Views[i].HideToolBarButtonWhenNonActive=!1,c=this.$.find($f("button[rql-role='queueset-button'][rql-data='{0}'][rql-set='{1}']",this.config.Views[i].Id,u.rql.set)),c.each(function(){n(this).css("display","none")})),e)))break;r.ActiveSetView=!0;l=$f("{0}:{1}",this.config.Key.replaceAll("/","_"),r.SetId);this.setViewSetting(l,r.Id,!1,!0);this.view=r;n(t.currentTarget).parent().find($f("[rql-role='queueset-button'][rql-set='{0}']",u.rql.set)).attr("disabled","disabled");o=this.$.find($f("[rql-role='queueset-button'][rql-set='{0}']",u.rql.set));o.each(function(){n(this).removeClass($rql.ui.getQsetButtonActiveStyle(n(this)))});o=this.$.find($f("button[rql-role='queueset-button'][rql-data='{0}'][rql-set='{1}']",u.rql.data,u.rql.set));o.each(function(){n(this).addClass($rql.ui.getQsetButtonActiveStyle(n(this)))});e&&(f=e.findByKey("Id",r.Id),f&&(a=[n(t.currentTarget).closest("[rql-role='set-container']").find("[rql-role='queueset-title']"),this.$.find($f("[rql-role='queueset-title'][rql-set='{0}']",r.SetId))],n(a).each(function(n,t){t.text(r.Title);$rql.api.uiVersion>2&&(t.removeClass(),t.addClass(f.HeaderUiStyle))}),n(t.currentTarget).closest("[rql-role='set-container']").find("[rql-role='queueset-title']").text(r.Title),this.$.find($f("[rql-role='queueset-title'][rql-set='{0}']",r.SetId)).text(r.Title),s=n(t.currentTarget).closest("[rql-role='set-container']").find('[rql-role="queueset-description"]'),f.Description?(s.empty().html(this.getSetDescriptionTooltip(f.Description)),s.widgetize()):s.empty()));this.renderView(r)}return t.stopPropagation(),!1},onViewSetLoaded:function(n){n.config&&n.config.SetId&&this.$.find($f("[rql-role='queueset-button'][rql-set='{0}']",n.config.SetId)).removeAttr("disabled")},onChangeView:function(t){if(this.config.UseViewNav){this.$nav.hide();var r=n(t.currentTarget).attrs(),u,i;return r.rql&&(u=r.rql.data)&&(i=this.config.Views[u])&&(this.view=i,this.renderView(i)),t.stopPropagation(),!1}},onDispose:function(){this.disposeViews(this.config.Views);this.disposeViews(this.config.PageFilters);this.config.PageFilters&&this.config.PageFilters.length!==0&&n.each(this.config.PageFilters,function(n,t){t.isReady=!1})},disposeViews:function(n){var i,t;if(n)for(t=0;t<n.length;t++)if((i=n[t].control)&&i.dispose){i.dispose();try{delete n[t].control}catch(r){n[t].control=undefined}}},onDrillDownPageCreated:function(n){n&&(this.config.HasPageFilters=!0,this.config.PageFilters=n.PageFilters,this.config.Views=n.Views,this.renderInitially())},onDrillDownPages:function(){},onPageFilterChange:function(n){var t=this.config.PageFilters.findByKey("Id",n.id);t&&(this.resetPageFilters(n.id),this.resetViews(n.id),this.renderAfterPageFilterChange(n.id))},onPageFilterReady:function(n){var t=this.config.PageFilters.findByKey("Id",n.id);t&&(t.isReady=!0,this.renderAfterPageFilterChange(n.id))},onPageViewsResponse:function(n){for(var r=n?n.ViewIds:null,i=this.config.Views,t=0;t<i.length;t++)i[t].Hidden=!r||!r.contains(i[t].Id);this.isMobile()&&this.setMobileViewLinksVisibility();this.renderViews()},onViewChange:function(n){n&&n.requiresRefresh&&this.refresh()},onPageChange:function(n){try{n.control.view.control.config.Title&&this.setPageTitle(n.control.view.control.config.Title)}catch(t){$log.debug("Trying to set page title failed")}},render:function(n){var t=this.config,r,i;if($log.debug("Rendering page "+t.Url),this.rendered){if(t.requireRefresh)this.refresh();else for(i=0;i<t.Views.length;i++)if((r=t.Views[i].control).isVisible()){if(t.Views[i].SetId&&!t.Views[i].ActiveSetView)continue;t.Views[i].SetId&&t.Views[i].ActiveSetView&&this.refreshPageSetControls(t.Views[i].SetId,t.Views[i].Id,t.Views[i].Title,t.Views[i].Description);r.show(n)}}else t.DrillDownTarget&&(!t.Views||t.Views.length==0)?this.requestDrillDownViews():this.renderInitially();t.Context&&t.Context.StoreId&&this.app?this.app.resetUI(t.SingleView?t.Views[0].Features:this.app.getCombinedFeatures(t.Views)):$rql.api.resetUI(t.SingleView?t.Views[0].Features:null);$rql.api.uiVersion>2&&this.setSheetVisibility()},renderAfterPageFilterChange:function(n){this.arePageFiltersReady()?this.requestPageViews():this.renderPageFilters(n)},requestDrillDownViews:function(){$rql.api.listPages({DrillDownContext:this.config.DrillDownContext},this.onDrillDownPages,this.onDrillDownPageCreated)},renderInitially:function(){var t=this.config,c=this,o,e,i,u,s,h,l,r,f,a;if($rql.api.uiVersion>2&&t.Layouts&&(o=t.Layouts.first(function(n){return n.IsContent===!0}),o))for(e=t.Layouts.where(function(n){return n.Id==="Content"||n.Id.toLowerCase().startsWith("sidenav")}),e=e.sort(function(n,t){return parseInt(n.SideGroupIndex)-parseInt(t.SideGroupIndex)}),o.SideNavGroups=[],r=0;r<e.length;r++)i=e[r],u={Id:i.Id},i.IsContent?(u.ContentNav=!0,i.SideGroupUiStyle&&(u.GroupUiStyle=i.SideGroupUiStyle)):u.CustomNav=!0,(i.SideGroupHeader||i.SideGroupHeaderUiStyle)&&(u.GroupHeader=i.SideGroupHeader,u.GroupHeaderUiStyle=i.SideGroupHeaderUiStyle),o.SideNavGroups.push(u);if(this.$container=this.$.find("[rql-role='view-container']"),this.$container.html($rql.ui.templates("page-views").render(t,$rql.ui.partials("page-set"))),t.UseViewNav=(this.$nav=this.$.find("[rql-role='view-nav']")).length>0,this.$views=this.$.find("[rql-view][rql-static!='yes']"),t.CustomLayout&&(s=this.$.find("[rql-page-layout]"),s.length>0&&s.html()!==""&&(t.Views.all(function(n){return n.LayoutId===""})||(h=!1,this.$views.each(function(i,r){var u=n(r),f=u.attr("rql-custom-layout-id"),e,o;f||(u=u.closest("[rql-custom-layout-id]"),f=u.attr("rql-custom-layout-id"));f&&(e=s.find($f("#{0}",f)),e.length>0&&(t.HasViewSets&&(o=u.siblings($f('[rql-role="pageSet"][rql-custom-layout-id="{0}"]',f)),o.length>0&&e.append(o)),e.append(u),h||(h=!0)))}),h&&this.$container.html("")))),t.SheetButtonDefs)for(l=this.$.closest('[rql-role="page-container"]').find('[rql-role="right-sheet-icons-container"]'),t.SheetButtons||(t.SheetButtons=[]),r=0;r<t.SheetButtonDefs.length;r++)f=t.SheetButtonDefs[r],t.SheetButtons.any(function(n){return n.config.Id===f.Id})||f.ScopeAppId&&t.Views.any(function(n){return n.AppName===f.ScopeAppId})&&(a=this.$.closest('[rql-role="page-container"]').find($f("[rql-view-id='{0}']",f.Id)),f.$mobileIconsContainer=l,t.SheetButtons.add(new $rql.ui.controls.sheetbutton(a,f)));t.HasPageFilters&&t.HasViewSets&&t.HasCheckboxPageFilters&&(c=this,this.$views.each(function(t,i){var r=n(i),u=r.attr("rql-set-id");u&&r.parents($f('[rql-role="left-sidenav-content-container"][rql-set-id="{0}"]',u)).length===0&&(r.css("margin-top","0"),c.$container.find($f('[rql-role="left-sidenav-content-container"][rql-set-id="{0}"] [rql-role="left-nav-views-container"]',u)).append(r))}));this.widgetize()},onRendered:function(){var n=this.config,t=this;this.createViews();n.HasPageFilters?this.renderAfterPageFilterChange():this.renderViews();n.Context&&n.queueItemContext&&this.$container.children('[rql-role="record-pager"]').html($rql.ui.templates("record-pager").render(n));$rql.api.uiVersion>2?(this.setViewPositionsCss(),this.config.SideNav&&this.config.app&&this.config.app.menuModel&&this.config.app.$.find("[rql-role='app-side-nav-container']:visible").length>0&&(this.config.app.sidenav=new $rql.ui.controls.sidenav(this.config.app.$.find("[rql-role='app-side-nav-container']:visible"),this.config.app.menuModel).show())):this.setViewPositions();this.rendered=!0},getPageTitle:function(){var n;return this.$pageTitlePlaceholder&&this.$pageTitlePlaceholder.length>0&&(n=this.$pageTitlePlaceholder.find($f("[rql-page-url='{0}']",this.config.Url)),this.$.find('[rql-role="page-title-container"]').length===0&&n.length===0&&(n=this.$pageTitlePlaceholder.find($f("[rql-page-url='{0}']",$rql.http.uri().path)))),n},renderPageTitle:function(){var t,n;this.$pageTitlePlaceholder.show();t=!0;this.$pageTitlePlaceholder&&this.$pageTitlePlaceholder.length>0&&(this.$pageTitlePlaceholder.html()!==""&&(this.$pageTitlePlaceholder.find('[rql-role="page-title-container"]').hide(),n=this.getPageTitle(),n&&n.length>0&&(this.config.app&&this.config.app.config.SinglePage?n.remove():(t=!1,n.show()))),t&&this.$.find('[rql-role="page-title-container"]').length>0&&this.$.find('[rql-role="page-title-container"]').appendTo(this.$pageTitlePlaceholder))},setTitle:function(n){if(this.$pageTitlePlaceholder&&this.$pageTitlePlaceholder.length>0){var t;t=this.$pageTitlePlaceholder.find($f("[rql-page-url='{0}']",this.config.Url));this.$.find('[rql-role="page-title-container"]').length===0&&t.length===0&&(t=this.$pageTitlePlaceholder.find($f("[rql-page-url='{0}']",$rql.http.uri().path)));t&&t.find("[rql-role='title'] > span").text(n)}},renderPageFilters:function(n){var r=this.config.PageFilters,u,i,t;if(r)for(u=this.collectPageFilterValues(),i=0;i<r.length;i++)t=r[i],t&&t.Id!=n&&this.isViewDependsOn(t,n)&&this.arePageFilterDependenciesReady(t)&&(t.control||this.createViewControl(t,"rql-page-filter",{pageFilterReady:this.onPageFilterReady,pageFilterChange:this.onPageFilterChange}),t.control.PageFilterValues=u,t.control.rendered?t.control.refresh():t.control.show()),t.IsCheckboxFilter&&this.$.find("[rql-role='left-sidenav-content-container']").show()},requestPageViews:function(){for(var r,t=[],i=this.config.Views,n=0;n<i.length;n++)t.push(i[n].Id);r={ViewIds:t,PageFilters:this.config.PageFilters?this.collectPageFilterValues():null};this.post("pageviews",r,null).done(this.onPageViewsResponse).fail(this.onPageViewsResponse)},renderView:function(n){n&&n.control&&(this.config.HasPageFilters?n.Hidden?n.control&&n.control.$.hide():(n.control.rendered&&!n.isReady?n.control.refresh({refreshTotals:!0}):(n.Type=="Queue"&&n.control.clearTotals(),n.control.show()),n.isReady=!0):n.control.show());this.resetPageTitle(n);n.DisplayOptions&&n.DisplayOptions.Desktop&&(this.config.scrollables||(this.config.scrollables=[]),n.DisplayOptions.Desktop.hideuntiltriggered&&($rql.api.uiVersion===2&&n.control.$.appendTo(document.body),n.control.$.hide()),this.config.scrollables.push(n))},renderViews:function(){var i=this.config,e=i.Views,t,o=this.collectPageFilterValues(),p=this,r,s,y,h,u,f,v;if($log.debug("Rendering views for page "+i.Url),e)for(r=0;r<e.length;r++)if(t=e[r],t&&t.control){if(t.control.PageFilterValues=o?o:i.DrillDownPageFilters,t.control.DrillDownContext=i.DrillDownContext,t.SetId)if(t.Set.length>0&&(s=t.Set),t.ActiveSetView)y=this.$.find($f("[rql-role='queueset-button'][rql-set='{0}'][rql-data='{1}']",t.SetId,t.Id)),y.each(function(){n(this).addClass($rql.ui.getQsetButtonActiveStyle(n(this)))}),this.$.find($f("[rql-role='queueset-button'][rql-set='{0}']",t.SetId)).attr("disabled","disabled"),this.refreshPageSetControls(t.SetId,t.Id,t.Title,t.Description,o);else continue;s&&(h=this.$.find($f("[rql-role='queueset-button'][rql-set='{0}'][rql-data='{1}']",t.SetId,t.Id)).closest("[rql-role='set-container']"),u=s.findByKey("Id",t.Id),u&&(h.find("[rql-role='queueset-title']").text(t.Title),this.$.find($f("[rql-role='queueset-title'][rql-set='{0}']",t.SetId)).text(t.Title),f=h.find('[rql-role="queueset-description"]'),u.Description?(f.empty().html(p.getSetDescriptionTooltip(u.Description)),f.widgetize()):f.empty()));($rql.api.uiVersion>2||!this.isMobile()||t.SingleView||t.Static)&&(this.view=t.Static?null:t,this.renderView(t))}if(this.config.HasPageFilters){var c=this.config.PageFilters.every(function(n){return n.IsCheckboxFilter}),l=this.config.PageFilters.every(function(n){return!n.IsCheckboxFilter}),a=this.$.find("div[rql-role='page-filters-container']"),w=this.$.find("div[rql-role='page-checkbox-filters-container']");a.length>0&&($rql.api.enableViewsAbovePageFilters&&(v=this.$.find("div[rql-role='pageSet'],div[rql-viewtype='Queue']").first(),v.length>0&&a.detach().insertBefore(v).show()),!c&&(c||l)||w.show(),!l&&(c||l)||a.show())}},refresh:function(){var t=this.config,r,i,n;if(t.requireRefresh&&(t.requireRefresh=!1),t.HasPageFilters)this.resetPageFilters(),this.resetViews(),this.renderAfterPageFilterChange();else for(r=t.Views,i=0;i<r.length;i++)(n=r[i],!n.SetId||n.ActiveSetView)&&(n.SetId&&n.ActiveSetView&&this.refreshPageSetControls(n.SetId,n.Id,n.Title,n.Description),n.control&&(n.control.isVisible()||!this.isMobile()&&!n.Hidden)&&n.control.refresh({refreshTotals:!0}))},refreshPageSetControls:function(n,t,i,r,u){for(var f,h,e=[],s=null,o=0;o<this.config.Views.length;o++)f=this.config.Views[o],f.SetId==n&&(e.add(f.Id),s=f.Context);e.length>0&&(h={SetId:n,ViewId:t,Title:i,Description:r},this.post("pagesetdata",{ViewIds:e,ActiveViewId:t,Context:s,ContextStoreId:this.config.Context&&this.config.Context.StoreId?this.config.Context.StoreId:null,PageFilters:u?u:this.config.PageFilters?this.collectPageFilterValues():null},h).done(this.onPageSetDataResponse))},onPageSetDataResponse:function(t,i,r){for(var l,o,a,h,f,c,v,s,e={Set:[]},u=0;u<t.Labels.length;u++)e.Set.add({Id:t.ViewIds[u],Label:t.Labels[u],UiStyle:t.UiStyles[u],SetId:r.context.SetId,Count:t.Counts[u],CounterUiStyle:t.CounterUiStyles[u],HeaderUiStyle:t.HeaderUiStyles[u]});if(e.Set.length>0){if(t.NameValueArguments)for(l=t.NameValueArguments.EmptyActiveViewId,u=0;u<this.config.Views.length;u++)o=this.config.Views[u],o.SetId==r.context.SetId&&o.Id==l&&(o.HideToolBarButtonWhenNonActive=!0);a=$rql.ui.templates("page-set").render(e);h=this.$.find($f("[rql-role='pageSet'][rql-set='{0}']",r.context.SetId));h.html(a);f=h.find($f("[rql-data='{0}'][rql-set='{1}']",r.context.ViewId,r.context.SetId));f.addClass($rql.api.uiVersion>2?$rql.ui.getQsetButtonActiveStyle(f):"active");this.$.find($f("[rql-role='queueset-button'][rql-set='{0}']",r.context.SetId)).removeAttr("disabled");c=e.Set.findByKey("Id",r.context.ViewId);c&&(v=[f.closest("[rql-role='set-container']").find("[rql-role='queueset-title']"),this.$.find($f("[rql-role='queueset-title'][rql-set='{0}']",r.context.SetId))],n(v).each(function(n,t){t.text(r.context.Title);$rql.api.uiVersion>2&&(t.removeClass(),t.addClass(c.HeaderUiStyle))}),s=f.closest("[rql-role='set-container']").find('[rql-role="queueset-description"]'),r.context.Description?(s.empty().html(this.getSetDescriptionTooltip(r.context.Description)),s.widgetize()):s.empty())}},resetViews:function(n){for(var i,r,u,t=0;t<this.config.PageFilters.length;t++)if(i=this.config.PageFilters[t],!i.isReady||i.Id==n)for(r=0;r<this.config.Views.length;r++)u=this.config.Views[r],u.isReady&&this.isViewDependsOn(u,i.Id)&&(u.isReady=!1)},resetPageFilters:function(n){for(var t,i=0;i<this.config.PageFilters.length;i++)t=this.config.PageFilters[i],t.isReady&&this.isViewDependsOn(t,n)&&(t.isReady=!1,this.resetPageFilters(t.Id))},resetPageTitle:function(n){var t=$rql.api.uiVersion>2?this.getPageTitle():this.$.find("[rql-role='title']");t&&this.config.SingleView&&n.Features&&n.Features.toLowerCase().contains("navbar")&&t.hide();n.Features&&n.Features.toLowerCase().contains("pagetitle")&&(t&&t.addClass("hide"),this.$.closest("[rql-page]").addClass("border-none"))},setDependencies:function(n,t){var i,r;if(n&&t)for(i=0;i<t.length;i++)r=n.findByKey("ViewId",t[i].Id),r&&(t[i].dependsOn=r.DependsOn)},setMobileViewLinksVisibility:function(){for(var i=this.config.Views,t=0;t<i.length;t++)n($f("div[rql-data='{0}']",i[t].Id),this.$).toggle(!i[t].Hidden)},callMethodOnAllViews:function(n){var r,i,t;if(this.config&&this.config.Views)for(r=this.config.Views,i=0;i<r.length;i++)t=r[i],t&&t.control&&t.control[n]&&t.control[n]()},setViewPositionsCss:function(){var t=this.config,i=this;t.scrollables&&t.scrollables.length>0&&n(t.scrollables).each(function(n,t){var i={};t.DisplayOptions.Desktop.position&&(t.DisplayOptions.Desktop.position==="FixedTop"||t.DisplayOptions.Desktop.position==="FixedBottom")&&(t.DisplayOptions.Desktop.position&&(i.position=t.DisplayOptions.Desktop.position,i.margin=t.DisplayOptions.Desktop.margintop||t.DisplayOptions.Desktop.marginbottom),t.DisplayOptions.Desktop.hideuntiltriggered&&(i.hideuntiltriggered=!0),t.control.$.stickyCss(i))})},setViewPositions:function(){var t=this.config,i=this;t.scrollables&&t.scrollables.length>0&&n(t.scrollables).each(function(t,r){if(i.isDesktop()){if(!r.DisplayOptions.Desktop.position||r.DisplayOptions.Desktop.position!=="FixedTop"&&r.DisplayOptions.Desktop.position!=="FixedBottom")return;var u={unfixed:function(){r.control.$.find("> [rql-role='spacer']").show();r.DisplayOptions.Desktop.csswhenscrolled&&r.DisplayOptions.Desktop.csswhenscrolled!==""&&n(this).removeClass(r.DisplayOptions.Desktop.csswhenscrolled)},fixed:function(){r.control.$.find("> [rql-role='spacer']").hide();r.DisplayOptions.Desktop.csswhenscrolled&&r.DisplayOptions.Desktop.csswhenscrolled!==""&&n(this).addClass(r.DisplayOptions.Desktop.csswhenscrolled)}};r.DisplayOptions.Desktop.position==="FixedBottom"&&(u.bottom=r.DisplayOptions.Desktop.marginbottom&&r.DisplayOptions.Desktop.marginbottom!==""&&!isNaN(r.DisplayOptions.Desktop.marginbottom)?parseInt(r.DisplayOptions.Desktop.marginbottom):0);r.DisplayOptions.Desktop.margintop&&r.DisplayOptions.Desktop.margintop!==""&&(u.marginTop=isNaN(r.DisplayOptions.Desktop.margintop)?function(){var t=i.$.find($f("[rql-view='{0}']",r.DisplayOptions.Desktop.margintop));return(t.length===0&&(t=n($f("[rql-view='{0}']:visible",r.DisplayOptions.Desktop.margintop))),t.length>0)?t.outerHeight():0}:parseInt(r.DisplayOptions.Desktop.margintop));r.DisplayOptions.Desktop.hideuntiltriggered&&r.DisplayOptions.Desktop.triggerposition&&r.DisplayOptions.Desktop.triggerposition!==""&&n.extend(u,{showWhenTriggered:!0,dontSetWidth:!0,marginLeft:0,onFixPosition:function(){var u=n(window).scrollTop(),i=-1,t;return(isNaN(r.DisplayOptions.Desktop.triggerposition)?(t=n($f("[rql-control][rql-id2='{0}']:visible",r.DisplayOptions.Desktop.triggerposition)),t.length===0&&(t=n($f("[rql-id='{0}']",r.DisplayOptions.Desktop.triggerposition))),t.length===1&&(i=t.offset().top)):i=parseInt(r.DisplayOptions.Desktop.triggerposition),u>i)?(r.control.$.find("> [rql-role='form-container']").css({padding:0}),r.control.$.slideDown(200),!0):!1},onUnFixPosition:function(n){n?(r.control.$.slideUp(50,n),r.control.$.find("> [rql-role='form-container']").css({padding:""})):r.control.$.hide()}});r.control.$.scrollToFixed(u)}})},hide:function(){return t.callBaseMethod(this,"hide"),this.callMethodOnAllViews("onPageHidden"),this},onPageHidden:function(){this.callMethodOnAllViews("onPageHidden")},getSetDescriptionTooltip:function(n){return $rql.ui.templates("page-set").render({SetDescriptionTooltip:!0,Description:n})},setSheetVisibility:function(){var n=this.config,r=this.$.closest('[rql-role="page-container"]'),i,t;if(n.SheetButtons&&n.SheetButtons.length>0){for(i=0;i<n.SheetButtons.length;i++)t=n.SheetButtons[i],t.config.IsScoped?t.toggleIconVisibility(n.Views.any(function(n){return n.AppName===t.config.ScopeAppId})):t.toggleIconVisibility(t.$buttonContainer.length>0);n.SheetButtons[0].hideShowSheet(n.SheetButtons)}else r.removeClass("sheet-close sheet-open"),r.find(".sheet-right").removeClass("sheet-close sheet-open")}};t.registerClass("$rql.ui.controls.page",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.gallerypopup=function(n){var i=$rql.ui.div("rqlGalleryPopup").empty();t.initializeBase(this,[i.get(0),n])};t.prototype={initialize:function(n){this.maxWidths={desktop:"640",tablet:"640",mobile:"1"};this.maxHeights={desktop:"480",tablet:"480",mobile:"0.85"};n&&(this.images=n.images,this.imageIndex=n.startIndex,this.imageIndex==null&&this.images!=null&&this.images.length!=0&&(this.imageIndex=0))},render:function(){this.$.html($rql.ui.templates("gallery-popup").render({showPager:this.images.length>1}));this.$image=this.$.find("img[rql-role='image']");this.$title=this.$.find("[rql-role='imageTitle']");this.showImage();this.$.show().widgetize();this.$.find("a[rql-action='next']").on("click",this.onNext);this.$.find("a[rql-action='prev']").on("click",this.onPrevious);this.$.on("hidden",this.onHidden);return this},dispose:function(){this.disposing||(this.disposing=!0,this.$.find("div[rql-role='modal']").modal("hide"),this.$image=this.$title=null,this.$.empty(),t.callBaseMethod(this,"dispose"))},onNext:function(){this.imageIndex=this.imageIndex+1;this.imageIndex>=this.images.length&&(this.imageIndex=0);this.showImage()},onPrevious:function(){this.imageIndex=this.imageIndex-1;this.imageIndex<0&&(this.imageIndex=this.images.length-1);this.showImage()},showImage:function(){var n=this.images[this.imageIndex];if(this.$title.html(n.title),this.$image.attr("src",n.url),$rql.api.uiVersion>=2)this.$image.on("load",this.setDimensions);else this.$image.load(this.setDimensions)},setDimensions:function(t){var e=$rql.api.uiMode!="mobile"?this.maxWidths[$rql.api.uiMode]:n(window).width()*this.maxWidths.mobile,o=$rql.api.uiMode!="mobile"?this.maxHeights[$rql.api.uiMode]:n(window).height()*this.maxHeights.mobile,u=$rql.ui.calcImageDimensions({width:t.currentTarget.naturalWidth,height:t.currentTarget.naturalHeight},{width:e,height:o}),i=u.width,r=u.height,f=n(t.currentTarget);$rql.api.uiVersion<=2&&($rql.api.uiMode!="mobile"?i>0&&r>0&&f.attr({width:i,height:r}).css({left:"50%",marginLeft:"-"+i/2+"px",top:"50%",marginTop:"-"+r/2+"px",position:"relative"}):f.css({top:"50%",marginTop:"-"+r/2+"px",position:"relative",marginLeft:(n(window).width()-i)/2}))},onHidden:function(){this.disposing||this.dispose()}};t.registerClass("$rql.ui.controls.gallerypopup",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.photoInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={appendCameraControl:function(){this._cameraElement=this.$.find("#camera");this._cameraElement.find("#formInfo").css("width",this._viewportWidth);this._cameraViewport=this.$.find("#cameraViewPort",this._cameraElement);this._cameraViewport.css("width",this._viewportWidth);this._cameraViewport.css("height",this._viewportHeight);this._cameraViewport.html(webcam.get_html(this._viewportWidth,this._viewportHeight));this._cameraElement.show()},disableButtonsOnUpload:function(n){this.config.CameraContainer.find("#btnUse",this._cameraElement).prop("disabled",n);this.config.CameraContainer.find("#btnRetake",this._cameraElement).prop("disabled",n)},formatServerValue:function(){var n=this.config,t="";n.Length?t=n.Length.toString():n.FileLength&&(t=n.FileLength.toString());n.ServerValue=$f("{0}|{1}|{2}|{3}|{4}|{5}",n.FileName,n.FileId,n.FileId,n.ContentType,t,n.Date)},formatFileLength:function(n){var t="0 KB";try{t=String.format("{0:n} KB",Math.ceil(n/1024)).replace(/\.00/,"")}catch(i){}return t},initialize:function(t){this.config=n.extend({},i,t,{ElementId:this.elementId});this.config.isMobileOS=$rql.api.isMobileOS||window.webview;this.config.Title||(this.config.Title=$rql.i18n.strings.Camera);$rql.api.uiVersion<=2&&(this.config.Title+="...");this.on({clear:this.onClear,startStreaming:this.onStartStreaming,stopStreaming:this.onStopStreaming,configureCamera:this.onConfigure,capture:this.onCapture,retake:this.onRetake,upload:this.onUpload,openCamera:this.onOpenCamera,showGallery:this.onShowGallery,track:this.track});if(this.parentView=this.config.Form.config.Id,this.selector='[rql-view="'+this.parentView+'"] [rql-type="Photo"]',this._isCameraEnabled=!0,this.config.PhotoName="Photo",this.config.PhotoOptions!=null&&(this.setResolution(this.config.PhotoOptions[0]),this.config.PhotoName=this.config.PhotoOptions[1],this._isInline=this.config.PhotoOptions[2],this._isConfigEnabled=this.config.PhotoOptions[3]),this.config.FormatedFileLength=this.formatFileLength(this.config.Length),this.formatServerValue(),this.config.UploadControlStyling=!0,this.config.ValidationErrorText=this.config.ValidationErrorText.decode(),this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly,$rql.api.offline){var r=this.config.Form?this.config.Form.config.StoreId:null;this.config.StoreId=encodeURIComponent(r)}this.render()},track:function(){$rql.api.sendGA4Event("rql_file_download",{app_name:this.config.Form.config.AppName,file_name:this.config.FileName,file_length:this.config.Length,source:"Photo Control"});this.config.TrackDownload&&$rql.api.trackFirstDownload(this.config.FileId,this.config.Form.config.StoreId)},onCapture:function(){webcam.loaded&&webcam.freeze();this.config.CameraContainer.find("#ctrlRow1",this._cameraElement).hide();this.config.CameraContainer.find("#ctrlRow2",this._cameraElement).show();this.config.CameraContainer.find("#btnUse").focus()},onChange:function(){this.$.find("#photoUpload").attr("name",this.config.PhotoName);this.$.find("#uploadForm")[0].submit();this.$.find("#formContainer").hide();this.$.find("#formInfo").show()},onClear:function(){this.config.Empty=!0;this.config.ReadOnly=!1;this.config.Error=!1;this.config.ErrorType=null;this.config.ErrorMessage=null;this.config.ServerValue="|||||";this.config.Inline=!0;this.config.ShowCameraViewport=!1;this.config.Length=null;this.config.FileLength=null;this.config.FileId=null;this.config.FileName=null;this.config.ContentType=null;this.config.Date=null;this.render();this.updateFormIfPostback()},onConfigure:function(){webcam.loaded&&webcam.configure()},onError:function(n){n==="No camera was detected."&&(this._isCameraEnabled=!1);this._resetCameraControl();alert(n)},onOpenCamera:function(){if(!$rql.api.offline||this.okToUseCamera())if(this.registerBlockingActivityStart(),$rql.api.offline&&window.webview)webview.takePicture(this.config.ElementId,this.config.Form?this.config.Form.config.StoreId:null,this.config.Key?this.config.Key:"",this.config.PhotoName,this.config.Size);else{if($rql.api.isIOS&&window.webkit&&window.webkit.messageHandlers){this.$.find("#formContainer").hide();this.$.find("#formInfo").show();var n=$f("photo|{0}|{1}|{2}|{3}|{4}",this.config.ElementId,this.config.Form?this.config.Form.config.StoreId:null,this.config.Key?this.config.Key:"",this.config.PhotoName,this.config.Size);window.webkit.messageHandlers.nativeBridge.postMessage(n);return}this.$.find("#photoUpload").click()}},onRetake:function(){this.resetCameraButtons();webcam.loaded&&webcam.reset()},onStartStreaming:function(){if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&!this.flashInstalled()){alert($f("{0} Flash Player {1}",$rql.i18n.strings.PleaseInstall,$rql.i18n.strings.Plugin));return}if(webcam.set_swf_url(this.config.baseUrl.pathname+"images/webcam.swf"),webcam.set_quality(30),webcam.set_shutter_sound(!1),webcam.set_hook("onError",n.proxy(this.onError,this)),!this._isCameraEnabled){alert($rql.i18n.strings.CameraNotDetected);return}if(n("#webcam_movie").length){alert($rql.i18n.strings.WebcamInUse);return}if(this.$.find("#camera").length&&(this.$.find("#camera").remove(),this._cameraElement=null),this.config.Inline=this._isInline,this.config.ConfigEnabled=this._isConfigEnabled,this.config.ShowCameraViewport=!0,this.config.CameraViewportWidth=this._viewportWidth,this.config.ModalContentWidth=this._viewportWidth+30,$rql.api.uiVersion>2&&!this._isInline&&(n("body > div#dlgCamera").off("click","button[rql-action],[rql-action]:not(:input),input[rql-action]:checkbox,input[rql-action]:radio"),n("body > div#dlgCamera").modal("dispose"),n("body > div#dlgCamera").remove()),this.render(),this.appendCameraControl(),this.$.closest(".edit-in-place > td > .zindex-overlay").length>0&&(this.$editInPlaceOverlay=this.$.closest(".edit-in-place > td > .zindex-overlay"),this.$editInPlaceOverlay.removeClass("zindex-overlay")),this._isInline)this.config.CameraContainer=this.$,this.$.find("#cameraSwitch").hide();else{var t=this.$.find("#dlgCamera");if(this.config.CameraContainer=t,$rql.api.uiVersion<=2)t.css("margin-top",-(t.height()/2)+"px");else{t.css("margin-left",-(t.find(".modal-content").width()-t.find(".modal-dialog").width()));t.appendTo("body");t.on("click","button[rql-action],[rql-action]:not(:input),input[rql-action]:checkbox,input[rql-action]:radio",this.raiseAction)}}this.resetCameraButtons();webcam.loaded&&webcam.reset();this.registerBlockingActivityStart()},onStopStreaming:function(){webcam.loaded&&webcam.freeze();this.resetCameraControl();this._cameraViewport.html("");this.restoreBackGround();this._isInline||this.config.CameraContainer.remove();this.registerBlockingActivityStop();this.config.EditInGrid||this.config.Form.update(new $rql.ui.components.valueCollection)},restoreBackGround:function(){this.$editInPlaceOverlay&&this.$editInPlaceOverlay.addClass("zindex-overlay");this._isInline||this.hideModals();$rql.api.uiVersion>2&&!this._isInline&&n("body > div#dlgCamera").modal("hide")},onUpload:function(){if(this.disableButtonsOnUpload(!0),this.$.find("#formInfo",this._cameraElement).show(),webcam.loaded){var t=this.config.Form?this.config.Form.config.AppName:null,i=this.config.Form?this.config.Form.config.StoreId:null;webcam.upload(this.config.baseUrl.pathname+"Form/Photo?format=json&name="+encodeURIComponent(this.config.PhotoName)+"&app="+encodeURIComponent(t)+"&storeId="+encodeURIComponent(i),n.proxy(this.onUploadCompleted,this))}else alert($rql.i18n.strings.WebcamInUse),this.disableButtonsOnUpload(!1)},onUploadCompleted:function(t){webcam.set_hook("onComplete",null);this.$.find("#formInfo",this._cameraElement).hide();this.disableButtonsOnUpload(!1);this.registerBlockingActivityStop();try{$rql.api.sendGA4Event("rql_photo_upload",{app_name:this.config.Form.config.AppName,file_name:this.config.FileName,file_length:this.config.Length,source:"Photo Control"});this.config=n.extend(this.config,JSON.parse(t));this.config.Empty=!1;this.config.ReadOnly=!1;this.config.FormatedFileLength=this.formatFileLength(this.config.FileLength);this.config.Inline=!0;this.config.ShowCameraViewport=!1;this._cameraViewport.html("");this.restoreBackGround();this.formatServerValue();this.render();this.updateFormIfPostback()}catch(i){this.resetCameraControl();alert(t)}},onUploaded:function(t){this.config=n.extend(this.config,t);t.Error?this.config.ErrorMessage=t.ErrorType&&this.config.$strings[t.ErrorType]?this.config.$strings[t.ErrorType]:this.config.$strings.FileUploadError:(this.config.Empty=!1,this.config.ReadOnly=!1,this.config.FormatedFileLength=this.formatFileLength(this.config.Length?this.config.Length:this.config.FileLength),this.formatServerValue());this.render();this.registerBlockingActivityStop();t.Error||this.updateFormIfPostback()},updateFormIfPostback:function(){var t=this.$.attr("postback")&&this.$.attr("postback")==="true",n;t&&(n=this,this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){n.config.Form.enable()}))},render:function(){this.config.Form&&this.config.Form.isTablet()&&(this.config.tabletMode=!0);this.config.isIOS=$rql.api.isIOS;this.$.empty().append($rql.ui.templates("photo-service").render(this.config)).show();this.widgetize()},onRendered:function(){!this.config.Empty&&$rql.api.uiVersion>2&&(this.$.find("#mdb-lightbox-ui").html($rql.ui.templates("mdb-lightbox-ui").render()),window.initPhotoSwipeFromDOM(".mdb-lightbox"))},onShowGallery:function(t){var r,i,e,u,o,s,f;for(t.stopPropagation(),t.preventDefault(),r=[],e=n(t.currentTarget).closest("div[rql-view]").find("div[rql-type='Photo'] a[rql-action='showGallery']"),u=0;u<e.length;u++)i=e.eq(u),o=i.attr("href"),s=i.attr("title"),r.push({url:o,title:s});i=n(t.currentTarget);f=r.findIndexByKey("url",i.attr("href"));f==-1&&(r.push({url:i.attr("href"),title:i.attr("title")}),f=0);new $rql.ui.controls.gallerypopup({images:r,startIndex:f}).show()},resetCameraControl:function(){this.$.find("#cameraSwitch").show();this._cameraElement.hide();this.resetCameraButtons()},resetDeviceCameraControl(){this.$.find("#formContainer").show();this.$.find("#formInfo").hide();this.registerBlockingActivityStop()},resetCameraButtons:function(){this.config.CameraContainer.find("#ctrlRow1",this._cameraElement).show();this.config.CameraContainer.find("#ctrlRow2",this._cameraElement).hide();this.config.CameraContainer.find("#btnCapture").focus()},setResolution:function(n){var t,i;this._viewportWidth=640;this._viewportHeight=480;t=n.toLowerCase();t=="small"?t="320x240":t=="medium"?t="640x480":t=="large"&&(t="800x600");this.config.Size=t;t.indexOf("x")>0&&(i=t.split("x"),i.length===2&&(this._viewportWidth=parseInt(i[0]),this._viewportHeight=parseInt(i[1])))},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)},flashInstalled:function(){var n=!1;try{n=Boolean(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(t){n="undefined"!=typeof navigator.mimeTypes["application/x-shockwave-flash"]}return n},okToUseCamera:function(){var n=$rql.api.getOfflineAppState();return n==="outofmemory"?(alert($rql.i18n.strings.FeatureDisabledDueToLowMemory),!1):!0}};t.registerClass("$rql.ui.controls.photoInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.signatureInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"signature/"},i,t);this.on({clear:this.onClear,clearCanvas:this.resetCanvas,upload:this.onUpload});this.config.ShowCanvas=this.config.Empty&!this.config.ReadOnly;var u=404,r=1;this.isTablet()&&(r=1.2);this.isMobile()&&(r=n(window).width()*.9/u);this.config.CanvasWidth=Math.round(u*r);this.config.CanvasHeight=Math.round(150*r);this.isFabric()&&this.isMobile()&&(this.config.ResponsiveCanvas=!0);this.config.ValidationErrorText=this.config.ValidationErrorText.decode();this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly;this.formatServerValue();$rql.events.oneOn("beforeContentRefresh",this.onBeforeContentRefresh);this.render();this.config.ShowCanvas&&this.initCanvas()},onDispose:function(){$rql.events.oneOff("beforeContentRefresh",this.onBeforeContentRefresh)},render:function(){this.$.html($rql.ui.templates("signature-service").render(this.config)).show();this.widgetize()},formatServerValue:function(){var n=this.config;n.Empty||(n.ServerValue=$f("{0}|{1}|{2}|{3}|{4}|{5}",n.FileName,n.FileId,n.FileId,n.ContentType,n.Length?n.Length.toString():"",n.Date))},onUpload:function(){if(this.isCanvasDirty){var n=this.canvas[0].toDataURL("image/png"),t=this.config.Form?this.config.Form.config.StoreId:null;this.post("?storeId="+t,{SignatureData:n,FileName:this.config.DefaultFileName},null).done(this.onUploadSuccess).fail(this.error)}},onUploadSuccess:function(t){var i=this;this.config.Error=t==null||t.FileId==null||t.FileId.length==0;this.config.Error||(this.config.FileId=t.FileId,this.config=n.extend(this.config,t),this.config.Empty=!1,this.formatServerValue());this.config.ShowCanvas=!1;this.render();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){i.config.Form.enable()}))},onClear:function(){var n=this;this.config.Error=!1;this.config.ShowCanvas=!0;this.config.ServerValue="|||||";this.isCanvasDirty=!1;this.render();this.initCanvas();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){n.config.Form.enable()}))},initCanvas:function(){var n,t;if(this.canvas=this.$.find("#signatureCanvas"),this.canvas)if(this.isDrawingStarted=!1,this.isCanvasDirty=!1,this.canvas[0].getContext&&(this.canvasContext=this.canvas[0].getContext("2d")),this.canvasContext){this.resetCanvas();this.canvas.on("mousedown",this.onStartDrawing);this.canvas.on("mousemove",this.onDraw);this.canvas.on("mouseup",this.onStopDrawing);this.canvas.on("mouseleave",this.onStopDrawing);this.canvas.on("touchstart",this.onTouchStartDrawing);this.canvas.on("touchmove",this.onTouchDraw);this.canvas.on("touchend",this.onTouchStopDrawing);this.canvas.on("touchmove",function(n){n.stopPropagation()},!1);n=this.config;n.Form&&n.Form.StatefulControlsData&&(t=n.Form.StatefulControlsData.first(function(t){return t.Id===n.Id}),t&&(this.canvasContext.putImageData(t.Data,0,0),this.config.Form.StatefulControlsData.remove(function(t){return t.Id===n.Id}),this.isCanvasDirty=!0))}else this.$.find("#ctrlCanvas").hide()},onStartDrawing:function(n){var t=this.getCanvasCoordinates(n);this.canvasContext.beginPath();this.canvasContext.moveTo(t.x,t.y);this.isDrawingStarted=!0;this.isCanvasDirty=!0},onTouchStartDrawing:function(n){this.canvas.off("mousedown");this.onStartDrawing(n)},onDraw:function(n){if(this.isDrawingStarted){var t=this.getCanvasCoordinates(n);this.canvasContext.lineTo(t.x,t.y);this.canvasContext.stroke()}},onTouchDraw:function(n){this.canvas.off("mousemove");this.onDraw(n)},onStopDrawing:function(n){if(this.isDrawingStarted){this.onDraw(n);this.isDrawingStarted=!1}},onTouchStopDrawing:function(n){this.canvas.off("mouseup");this.canvas.off("mouseleave");this.onStopDrawing(n)},onBeforeContentRefresh:function(){if(this.isCanvasDirty&&this.config.Form){var n=this.config,t=this.canvasContext.getImageData(0,0,this.canvas[0].width,this.canvas[0].height);this.config.Form.StatefulControlsData||(this.config.Form.StatefulControlsData=[]);this.config.Form.StatefulControlsData.remove(function(t){return t.Id===n.Id});this.config.Form.StatefulControlsData.push({Id:n.Id,Data:t})}},getCanvasCoordinates:function(n){var t=n.pageX,i=n.pageY;return n.originalEvent.targetTouches&&n.originalEvent.targetTouches.length&&(t=n.originalEvent.targetTouches[0].pageX,i=n.originalEvent.targetTouches[0].pageY),{x:t-this.canvas.offset().left,y:i-this.canvas.offset().top}},resetCanvas:function(){this.canvasContext.lineWidth=1;this.canvasContext.fillStyle="#FFFFFF";this.canvasContext.fillRect(0,0,this.canvas.width(),this.canvas.height())},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)}};t.registerClass("$rql.ui.controls.signatureInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.panels=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"form/"},i,{Form:t.Form,WidgetEvents:t.WidgetEvents,UniqueId:$rql.newId()},t.Data);this.template=$rql.ui.templates("panels");this.prepare();this.render()},dispose:function(){this.$headers&&this.$headers.off();this.$panels&&this.$panels.off();this.$headers=this.$panels=null;t.callBaseMethod(this,"dispose")},prepare:function(){var n=this.config,i,t,r;if(n.PanelsId=n.Id,n.IsAccordionStyle=n.Style=="Accordion",n.IsTabsStyle=!n.IsAccordionStyle,n.Panels)for(i=0;i<n.Panels.length;i++)t=n.Panels[i],t.ElementId=$f("{0}_P_{1}_{2}",n.PanelsId,t.Id,n.UniqueId),t.Enabled=t.Enabled!=null?t.Enabled:!0,t.Active=!1;r=this.findPanelById(n.ActivePanelId);r&&(r.Active=r.Rendered=!0);$rql.ui.decorateArrayItems(n.Panels)},findPanelById:function(n){return n?this.config.Panels.findByKey("Id",n):null},render:function(){var n=this,r=this.template.render(this.config),t,i;this.$.html(r);$rql.api.uiVersion<=2?(t=this.config.IsTabsStyle?"> div > ul > li > a[data-toggle='tab']":"> div.accordion > div.accordion-group > div.accordion-body",i=this.config.IsTabsStyle?"> div > ul > li":"> div.accordion > div.accordion-group > div.accordion-heading"):(t=this.config.IsTabsStyle?"> div > ul > li > a[data-toggle='tab']":"div[role=tabpanel]",i=this.config.IsTabsStyle?"> div > ul > li":"");this.$panels=this.$.find(t);this.$headers=this.$.find(i).on("click",this.onHeaderClick);this.$panels.on($rql.api.uiVersion<=2?"show":"shown.bs.collapse shown.bs.tab",this.onPanelShow);this.$.find("[rql-type]").each(function(t,i){n.process_input(i,n.config.Form,n.config.WidgetEvents)});this.widgetize();this.config.Form&&this.config.Form.onWidgetize()},onRendered:function(){this.savePostbackState()},getPostbackState:function(){var n=this.config,t=n.pendingPanelId||(n.ActivePanelId?n.ActivePanelId!=n.DefaultPanelId?n.ActivePanelId:"*"+n.ActivePanelId:null);return t?this.config.PanelsId+"="+t:null},activatePanel:function(n){var t=this.config,u=!1,i,r;return t.pendingPanelId=undefined,n!=t.ActivePanelId&&(i=this.findPanelById(n),r=this.$panels.filter($f("[rql-panel-id='{0}']",n)),i&&r.length==1&&(u=this.renderPanel(i),t.ActivePanelId=n,this.isInternalActivate=!0,r[this.config.IsTabsStyle?"tab":"collapse"]("show"),this.isInternalActivate=!1,this.savePostbackState())),u},renderPanel:function(n){return n&&!n.Rendered?($rql.api.uiVersion<=2?this.$.find("#"+n.ElementId+(this.config.IsAccordionStyle?" > div":"")).html(n.Content):this.$.find("#Content_"+n.ElementId).html(n.Content),n.Rendered=!0,!0):!1},savePostbackState:function(){var t=this.config,n=t.Form;n&&n.savePanelsPostbackState&&n.savePanelsPostbackState(t.PanelsId,this.getPostbackState())},onPanelShow:function(t){if(!this.isInternalActivate){t.preventDefault();var r=n(t.target).attr("rql-panel-id"),i=this.findPanelById(r);i&&(this.config.pendingPanelId=i.Id,this.raise("panelShow",{sender:this,panelId:i.Id,panelLoaded:i.Content!=null}))}},onHeaderClick:function(t){var i=n(t.currentTarget),r=(this.config.IsTabsStyle?i.children("a"):i.next()).attr("rql-panel-id"),u=this.findPanelById(r);u&&(!u.Enabled||r==this.config.ActivePanelId)&&t.stopImmediatePropagation()}};t.registerClass("$rql.ui.controls.panels",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.accordion=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){if(this.$&&this.$.find("code")){var r=this.$.find("code"),u=n.parseJSON(r.html());n.extend(t,u);r.remove()}this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"form/",UniqueId:$rql.newId()},i,t);this.config.Data&&(this.config.Panels=this.config.Data.Panels,delete this.config.Data);this.template=$rql.ui.templates("accordion");this.parseOptions();this.prepare();this.render()},dispose:function(){this.$panels&&this.$panels.off();this.$panels=null;t.callBaseMethod(this,"dispose")},extractPanelId:function(n){var t=/=\*?(.*)/g.exec(n);return t!=null&&t.length>1?t[1]:""},prepare:function(){var n=this.config,e=this,f=n.Defaults&&n.Defaults.allowmultiple,i,t;if(n.PanelsId=n.Id,n.ActivePanelsCollection=[],n.ActivePanels&&(n.ActivePanelsCollection=n.ActivePanels.splitAndTrim(",")),n.Panels){var o=this.config.Form.isForm()?this.config.Form.config.AppName+"."+this.config.Form.config.ViewName:this.config.Form.config.SelectedTag.SelectedTopic.Id,r=this.config.Form.collectPanels(o),u=!($rql.isUndefined(r)||r===null);for(n.IncompletePanelId?n.ActivePanelId=n.IncompletePanelId:!n.ActivePanelsPath&&n.Defaults&&n.Defaults.initialstate&&!u&&(n.Defaults.initialstate.toLowerCase()==="open"?n.AllOpened=!0:n.Defaults.initialstate.toLowerCase()==="close"&&(n.AllClosed=!0)),i=0;i<n.Panels.length;i++)t=n.Panels[i],t.ElementId=$f("{0}_P_{1}",n.PanelsId,t.Id),t.Enabled=t.Enabled!=null?t.Enabled:!0,n.AllClosed?t.Active=!1:n.AllOpened&&f?t.Active=!0:(n.ActivePanelsPath&&n.ActivePanelsCollection.length>0?t.Active=n.ActivePanelsCollection.indexOf(t.Id)>-1:n.Defaults&&!n.ActivePanelsPath&&(u&&n.Defaults.rememberstate?r.any(function(n){return e.extractPanelId(n)===t.Id})&&(t.Active=!0):t.ActiveWhen&&t.Enabled?t.Active=!0:t.Enabled&&(n.AllOpened?(n.Defaults&&n.Defaults.allowmultiple||n.ActivePanelId===t.Id)&&(t.Active=!0):i===0&&(t.Active=!0))),n.IncompletePanelId&&((n.ActivePanelId?n.ActivePanelId===t.Id:n.DefaultPanelId===t.Id)?t.Active=!0:f||(t.Active=!1))),t.Active&&(t.Rendered=!0);(n.AllClosed||n.Defaults&&n.Defaults.rememberstate&&u&&r.length===0)&&(n.ActivePanelId=null);$rql.ui.decorateArrayItems(n.Panels)}},findPanelById:function(n){return n?this.config.Panels.findByKey("Id",n):null},render:function(){var n=this,t=this.template.render(this.config);this.$.html(t);this.$panels=this.$.find("div[role=tabpanel]");this.$panels.on(this.config.ActivePanelsPath?"show.bs.collapse":"shown.bs.collapse",this.onPanelShow);this.$panels.on(this.config.ActivePanelsPath?"hide.bs.collapse":"hidden.bs.collapse",this.onPanelHide);this.$.find("[rql-type]").each(function(t,i){n.process_input(i,n.config.Form,n.config.WidgetEvents)});this.widgetize();this.config.Form&&this.config.Form.onWidgetize()},onRendered:function(){this.savePostbackState()},getPostbackState:function(){var t=this.config,f=this,u,i,r;return t.Defaults&&t.Defaults.rememberstate&&t.Defaults.allowmultiple?(u=this.$panels.filter(".show"),i=[],u.each(function(r,u){i.push(t.PanelsId+"="+n(u).attr("rql-panel-id"))}),i):(r=t.pendingPanelId||(t.ActivePanelId?t.ActivePanelId!=t.DefaultPanelId?t.ActivePanelId:"*"+t.ActivePanelId:null),r?this.config.PanelsId+"="+r:null)},activatePanel:function(n){var i=this.config,u=!1,t,r;return i.pendingPanelId=undefined,t=this.findPanelById(n),r=this.$panels.filter($f("[rql-panel-id='{0}']",n)),n==i.ActivePanelId&&t.Rendered||t&&r.length===1&&(u=this.renderPanel(t),i.ActivePanelId=n,this.isInternalActivate=!0,r.collapse("show"),this.isInternalActivate=!1,this.savePostbackState()),u},renderPanel:function(n){return n&&!n.Rendered?(this.$.find($f("#Content_{0}_{1} [rql-role='tabcontent']",n.ElementId,this.config.UniqueId)).html(n.Content),n.Rendered=!0,!0):!1},savePostbackState:function(){if(!this.config.ReadOnly){var t=this.config,n=t.Form;n&&n.savePanelsPostbackState&&n.savePanelsPostbackState(t.PanelsId,this.getPostbackState())}},onPanelShow:function(t){if(t.currentTarget===t.target){if(!this.isInternalActivate){t.preventDefault();var r=n(t.target).attr("rql-panel-id"),i=this.findPanelById(r);if(i){if(this.config.ActivePanelsPath){this.updateActivePanels(r,!0);return}this.config.pendingPanelId=i.Id;this.raise("panelShow",{sender:this,panelId:i.Id,panelLoaded:i.Content!=null})}n(t.currentTarget).parent().find($f("#{0} [rql-role='toggle-icon'] i",n(t.currentTarget).attr("aria-labelledby"))).removeClass("fa-angle-down").addClass("fa-angle-up")}this.config.Defaults&&this.config.Defaults.rememberstate&&this.savePostbackState()}},updateActivePanels:function(n,t){var i=this.config,r=i.ActivePanelsCollection,u=new $rql.ui.components.valueCollection;i.Defaults&&i.Defaults.allowmultiple?(t&&r.indexOf(n)===-1?r.push(n):!t&&r.indexOf(n)>-1&&r.remove(n),u.add(i.ActivePanelsPath,r.join(","))):u.add(i.ActivePanelsPath,t?n:"");i.Form.update(u,function(){i.Form.enable()})},onPanelHide:function(t){var i,r,u;t.currentTarget===t.target&&(i=this.config,t.preventDefault(),n(t.currentTarget).parent().find($f("#{0} [rql-role='toggle-icon'] i",n(t.currentTarget).attr("aria-labelledby"))).removeClass("fa-angle-up").addClass("fa-angle-down"),t.type==="hidden"&&(r=n(t.currentTarget).attr("rql-panel-id"),i.ActivePanelId===r&&(i.ActivePanelId=null)),i.Defaults&&i.Defaults.rememberstate&&this.savePostbackState(),i.ActivePanelsPath&&(u=n(t.target).attr("rql-panel-id"),this.updateActivePanels(u,!1)))},parseOptions:function(){this.config.Options&&n.extend(this.config,this.config.Options.parseOptionsAsObject(null,!0))}};t.registerClass("$rql.ui.controls.accordion",$rql.ui.controls.view)})(jQuery);
(function(n){function u(n){return n[1]&&(n[1].contains("?")||!n[1].CanEditValues)?!0:$rql.bool(n[2])}var e={DataPage:{PageIndex:0,PageSize:0},GalleryType:"Hero",MaxFilterValues:50,MaxAvailablePages:{desktop:5,mobile:3,tablet:3},SearchExpanded:!1,ShowRecordsNum:{0:{Size:5},1:{Size:10},2:{Size:20},3:{Size:50},IsDefault:!0},ShowAdvancedSearch:!0,ShowControls:!0,ShowMoreActionsMenu:!0,LongTextLength:50,MaxItemAbstractLength:300,MobileDevicePageSize:10},r,t,o=new RegExp("(^|\\s)ReadOnly($|\\s)","i"),s=new RegExp('>[ \t\r\n\v\f]*<',"g"),f=$rql.ui.controls.queue=function(n,t){t.isFabric=$rql.api.uiVersion>2;f.initializeBase(this,[n,t])};f.prototype={clearTotals:function(){return this.config.Count=undefined,this.config.CountUnknown=undefined,this.config.Totals=undefined,this},createRequest:function(){var n=this.config,i=$rql.isNull(n.Filters,[]).where(u),o=this.mode?this.mode.Type:null,t,f,r,e;return n.NestedQueueFilterSet&&i.add(n.NestedQueueFilterSet),n.isFabric&&$rql.ui.checkMediaBreakpoint("sm","lesser")&&(n.DataPage.PageSize=n.MobileDevicePageSize),this.page&&this.page.config&&this.page.config.ContextHasChanged&&(n.ViewArguments||(n.ViewArguments={}),n.ViewArguments["RQL.Sheet.Context.AppName"]=n.AppName,delete this.page.config.ContextHasChanged),t={AppName:n.AppName,ViewName:n.ViewName,Expression:n.Expression,Filters:i,FilterName:n.FilterName?n.FilterName:"",Sort:n.Sort,PageIndex:n.DataPage.PageIndex,PageSize:n.DataPage.PageSize,UseDefaultFilter:!this.rendered&&i.length==0,Mode:o,BulkSelectId:n.BulkSelectId,SortPropertyIndex:n.SortPropertyIndex,SortPropertyOrder:n.SortPropertyOrder,IsNestedQueue:n.PartialRendering,IsEmbed:n.IsEmbed,UseEmbedQueueTest:n.UseQueueTest,NestedQueueFilterData:n.NestedQueueFilterData,NestedQueueLevel:n.NestedQueueLevel,NestedQueuesMasterAppName:n.NestedQueuesMasterAppName,NestedQueuesMasterViewName:n.NestedQueuesMasterViewName,NestedQueueStyle:n.NestedQueueStyle,NestedQueueKey:n.NestedQueuesParentKey,DualModeRequestOnline:n.DualModeRequestOnline,Arguments:n.Arguments,ViewArguments:this.serializeArgumentValues(n.ViewArguments),SetId:n.IsEmbed?n.SetId:null},this.attachAccessToken(t),$rql.api.offline&&n.IsLookup&&n.DualModeRequestOnlineArguments&&n.DualModeRequestOnline&&(t.DualModeRequestOnlineArguments=n.DualModeRequestOnlineArguments,t.Id=n.LookupId,t.DualModeArgumentNames=["__rqlnames__"],t.DualModeArgumentValues=["__rqlvalues__"]),this.setRequestContext(t),n.IsEmbed&&n.Expression&&n.Form&&(f=$f("{0}:RQL_Active_Queue_Sets",n.Form.config.AppName),r=this.getViewSetting(f,!1,!0),r&&(t.ActiveSets=r)),e=this.getViewSetting(this.getViewSettingName("QuickSearch")),n.Search=e||{},n.Search.Applied&&(t.Search=n.Search.Text),t},attachAccessToken:function(n){this.config.AccessToken&&(n.AccessToken=this.config.AccessToken)},setRequestContext:function(n){var i=this.config,t;i.Context?n.Context=i.Context:(t=$rql.api.getStoreIdFromUrl($rql.http.uri().pathname),t&&(n.Context={StoreId:t,ChainContextId:t}));this.PageFilterValues&&this.PageFilterValues.length!=0?n.PageFilters=this.PageFilterValues:this.config.Form&&this.config.Form.PageFilterValues&&this.config.Form.PageFilterValues!=0&&(n.PageFilters=this.config.Form.PageFilterValues);this.DrillDownContext&&(n.DrillDownContext=this.DrillDownContext)},getViewId:function(){return this.config&&this.config.AppName&&this.config.ViewName?$f("{0}.{1}",this.config.AppName,this.config.ViewName):null},getViewSettingName:function(n){return(this.config.IsLookup?"Lookup.":"")+n},editFilters:function(t,i,r,u){var w=this.config.FilterReset||!1,g,c,y,o,ot,l,a,rt,ft,ut,v,p,b,nt,tt,st,e,s,et,k,ht,h,f,d,it,ct;for(this.config.isFabric&&(n(".tooltip").tooltip("dispose"),delete this.config.FilterReset),g=!1,c=this,arguments.length==0&&(g=!0),r=r||!1,l=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId)),this.config.isFabric&&i&&this.config.Filters.length>0&&(ot=this.config.Filters.any(function(n){return n[0]===i}),ot&&(u=i,i=null,w=!1)),!t&&(y=this.config.FilterSets.WorkingSet)?(o=y.Filters,this.config.isFabric&&o.splice(0,o.length-1)):this.config.isFabric?(u?o=this.config.Filters.where(function(n){return n[0]===u}).copy():i||(o=this.config.Filters.slice(0,1)),o||(o=[]),y=this.config.FilterSets.WorkingSet={Filters:o}):y=this.config.FilterSets.WorkingSet={Filters:o=this.config.Filters.copy()},a=[],e=0;e<this.config.DataPage.Properties.length;e++)s=this.config.DataPage.Properties[e],!s.IsFilterable||this.config.isFabric&&s.Filtered||a.push(Array.isArray(s)?s.copy():s);if(i){for(rt=!0,h=0;h<o.length&&rt;h++)o[h][0]==i&&(rt=!1);rt&&(this.config.isFabric?(o.insertAt(0,[i]),y=this.config.FilterSets.WorkingSet={Filters:o}):o.add([i]))}if(defaultFilters=[],o.length==0){for(e=0;e<a.length;e++)if(a[e].IsDefaultFilter&&(defaultFilters.add(a[e]),o.add([]),this.config.isFabric))break;o.length==0&&o.add([])}for(h=0;h<o.length;h++)if(f=y.Filters[h]=o[h].copy(),f.Index=h,property=defaultFilters.length>0?defaultFilters[h]:w&&!i||r?a[0]:$rql.isNull(this.config.DataPage.Properties[f[0]],a[0]),property){for(ft=a.indexOf(property),ft>=0&&a.splice(ft,1),f[0]=property.Name,f.Properties=[{Name:property.Name,Title:property.Title,DisplayTitle:property.DisplayTitle,Selected:!0}],f.Operators=[],f.PropertyType=property.Type,ut=$rql.api.dataTypes[property.Type].operators,(!f[1]||w)&&(f[1]=ut[0].split(":")[0]),e=0;e<ut.length;e++)p=ut[e].split(":"),f.Operators.add(p={Key:p[0],Title:$rql.i18n.operators[p[0]],MinValues:parseInt(p[1]),Selected:p[0]==f[1]}),p.Selected&&(v=p);if(v||(f[1]=(v=f.Operators[0]).Key),b=v.MinValues,w&&f.length>2&&f.splice(2,f.length-2),f.CanEditValues=b>-1){for(b==0?(f.Values=w||this.config.isFabric&&r?[]:f.slice(2),nt=f.Values.length-this.config.MaxFilterValues,nt>0&&f.Values.splice(-nt,nt),f.CanAddValues=nt<0||v.Key==="="||v.Key==="!=",b=1):(f.Values=w||this.config.isFabric&&r?[]:f.slice(2,2+b),this.config.isFabric&&f.Values.remove(function(n){if(f.PropertyType=="Timestamp"){var t=Number.parseInt(n);return Number.isNaN(t)}return!$rql.api.dataTypes[f.PropertyType].isValid(n,!0)}),f.CanAddValues=!1),tt=$rql.api.dataTypes[property.Type],st=v.MinValues===0?$rql.i18n.strings.Or:$rql.i18n.strings.And,e=0;e<Math.max(f.Values.length,b);e++)s={},s=f.Values[e]={Index:e,DataType:property.Type,InputType:"text",LocaleValue:f.Values[e]?tt.format(property.Type==="Integer"?tt.fromJson(f.Values[e]).toString():tt.fromJson(f.Values[e])):"",InvariantValue:f.Values[e]?tt.format(f.Values[e]):"",First:e===0,Last:e===o.length-1,CanDelete:v.MinValues==0&&e!=0,Property:property.Name,Currency:property.Type==="Currency"},!this.isDesktop()&&$rql.api.dataTypes.isNumeric(property.Type)&&($rql.api.isIOS?(s.InputType="text",s.Pattern="\\d*"):s.InputType="tel"),s.Temporal=property.Type.contains("Date")||property.Type.contains("Time"),s.ShowDtPickerMultiSelect=v.Key==="="||v.Key==="!=",s.First||(s.Separator=st);if(f.CanAddValues){for(et=[],k=0;k<f.Values.length;k++)f.Values[k].LocaleValue&&(ht={LocaleValue:f.Values[k].LocaleValue,InvariantValue:f.Values[k].InvariantValue},et.add(ht));f.MultiSelectOptions=et;f.Values.length=1}}}for(h=0;h<y.Filters.length;h++)f=y.Filters[h],f&&f.Properties&&f.Properties.addRange(a);y.CanAddFilter=a.length>0;d={gridId:this.config.gridId};this.config.isFabric?n.extend(d,this.config.FilterSets.WorkingSet.Filters[0]):d.FilterSets=this.config.FilterSets;this.config.ShowSave&&(d.ShowSave=!0,d.DefaultFilterName=this.getFilterDefaultName(),delete this.config.ShowSave);l.find(".rql-select2").select2("destroy");l.empty().html($rql.ui.templates("queue-filters-edit").render(d)).widgetize();$rql.ui.renderSelect2(l,this.config.IsLookup?{dropdownParent:n("#lookup-dialog > div[rql-role=modal] .modal-body").filter(":visible")}:null,"queue.editfilters()");this.config.IsLookup&&n("#lookup-dialog").find('div[rql-role="modal"]').off("scroll");!l.is(":visible")&&t?r?(l.show(),g||this.saveSettings(!0)):l.slideDown("fast",function(){g||c.saveSettings(!0)}):l.is(":visible")||(l.show(),g||this.saveSettings(!0));this.config.isFabric&&(this.$.find("[rql-role='toggle-filter-edit'] [rql-action='editFilters']").removeClass("btn-flat").addClass("btn-primary"),this.$.find("[rql-role='toggle-filter-edit'] [data-toggle='dropdown']").removeClass("btn-flat").addClass("btn-primary"));it={};r||this.focus(this.$,!0,it);it.element&&n(it.element).attrs().rql&&(ct=n(it.element).attrs().rql.property);var at=l.find("input[name=Value], select[name=MultiSelect]"),vt=l.find("select[rql-action='selectOperator']"),lt={"*":"*","=*":"=*","*=":"*=","=":"*","<<":"*","!=":"*","!*":"*"};at.each(function(t){var i=n(this),s=vt[t],u=n(s),f=u.length>0?lt[u[0].value]!=undefined?lt[u[0].value]:null:"*";if(!i.is('[rql-type="Date"], [rql-type="Time"], [rql-type="Timestamp"], [rql-type="DateTime"], [rql-type="Integer"], [rql-type="Number"], [rql-type="Currency"]'))if(i.is("select")){var o=n(this).attrs().rql.property,r=c.config.DataPage.Properties[o],e=$rql.api.dataTypes[r.Type],h=i.select2({theme:c.config.isFabric?"material":"default",dropdownCssClass:"select2-container-material-dropdown",width:"100%",ajax:{url:"/rql/queue/values",type:"POST",method:"POST",dataType:"json",delay:$rql.api.offline?1e3:250,contentType:"application/json",data:function(n){return c.getSearchTermRequestData(r,f,n.term)},transport:function(t,i){var r=n.ajax(t);r.then(i);r.fail(function(){i([],"success")})},processResults:function(t,i,u){var s=u||this,o=n(s.$element[0]).val(),f;return i.page=i.page||1,f=[],n(t.Values).each(function(n,t){var i=(t||typeof t=="boolean")&&r.Type!=="Integer"?e.format(e.fromJson(t),r.Format):t.toString(),u=t||typeof t=="boolean"?e.fromJson(t):t.toString();f.push({id:t,text:i,value:u,selected:o&&o.contains(t.toString())})}),{results:f,pagination:{more:i.page*50<t.Count}}},cache:!0},tags:!0,tokenSeparators:[","],dropdownParent:c.config.IsLookup?n("#lookup-dialog > div[rql-role=modal]"):$rql.isElement(i.parents($f("div[rql-view='{0}.{1}']",c.config.AppName,c.config.ViewName)),i.parents('[rql-embed][rql-view-type="queue"]'),i.parents().first()),multiple:!0,closeOnSelect:!0,placeholder:{id:""},minimumInputLength:1,templateResult:function(t){var i=n("<span role='item-wrapper'><\/span>"),r=n("<i class='icon-check-empty medium'><\/i>");return i.text(t.text),t.id!=null&&(i.prepend(r),t.selected?r.removeClass("icon-check-empty").addClass("icon-check"):r.removeClass("icon-check").addClass("icon-check-empty")),i}}).on("select2:select",c.onMultiselectItem).on("select2:unselect",c.onMultiselectItem).on("select2:selecting",c.onBeforeMultiselect).on("select2:opening select2:closing",function(){i.siblings("span.select2").find("input.select2-search__field").on("keyup",function(t){t.keyCode===13&&t.target.value===""&&n(t.currentTarget).parents("[rql-role='multi-select']").find("select").val()&&c.applyFilters(t)})});if($rql.api.dataTypes.isNumeric(r.Type))n(document).off("keypress","input.select2-search__field").on("keypress","input.select2-search__field",function(n){if(r.Type==="Integer")(n.key.length===1&&isNaN(n.key)&&!n.ctrlKey&&n.key!=="-"||n.key==="-"&&n.target.value.toString().indexOf("-")>-1)&&n.preventDefault();else{var t=Sys.CultureInfo.CurrentCulture.numberFormat.CurrencyDecimalSeparator;(n.key.length===1&&n.key!==t&&n.key!=="-"&&isNaN(n.key)&&!n.ctrlKey||n.key===t&&n.target.value.toString().indexOf(t)>-1||n.key==="-"&&n.target.value.toString().indexOf("-")>-1)&&n.preventDefault()}});ct==o&&i.siblings("span.select2").find("input.select2-search__field").focus()}else i.typeahead({delay:750,source:function(n,t){n=$rql.htmlEscape(n);var i=c.config.DataPage.Properties[this.$element.attr("rql-property")];f&&c.listValues(i.Name,[[i.Name,f,n]],8,{property:i,target:t})}}),i.focus()});this.config.isFabric&&(l.addClass($f("edit-filters-container {0}",l.siblings("[rql-role='filter-summary']").length>0?"border-bottom-0":"")),this.$.find("[rql-role='column-filter-modal']").modal("hide"))},validateMultiSelectTerms:function(t,i){return $rql.api.dataTypes.isNumeric(t)&&!n.isNumeric(i)?!1:$rql.api.dataTypes[t].isValid(i)?!0:!1},getSearchTermRequestData:function(t,i,r){var u=this,e,f;if(!u.validateMultiSelectTerms(t.Type,r))return{};if((t.Type==="Currency"||$rql.api.dataTypes.isNumeric(t.Type))&&!n.isNumeric(r.charAt(0)))if(r.length>1)r=r.slice(1);else return{};return $rql.api.dataTypes.isDateTime(t.Type)&&(e=moment($rql.api.dataTypes[t.Type].parse(r)),r=t.Type==="Timestamp"?e.valueOf():e.seconds(0).format("YYYY-MM-DDTHH:mm:ss")),f={AppName:u.config.AppName,ViewName:u.config.ViewName,PropertyName:t.Name,Filters:[[t.Name,i,r]],Limit:50},u.setRequestContext(f),u.attachAccessToken(f),n.toJson(f)},onBeforeMultiselect:function(t){var r=t.params.args.data.text,o=t.params.args.data.value?t.params.args.data.value:t.params.args.data.text,u=n(t.currentTarget),i=this.config.DataPage.Properties[u.attrs().rql.property],f=u.val(),e;if(f&&f.length>=this.config.MaxFilterValues)return!1;if(!this.validateMultiSelectTerms(i.Type,o))return t.preventDefault(),$rql.api.dataTypes.isDateTime(i.Type)?this.error($f($rql.i18n.strings.InvalidData+".  "+$rql.i18n.strings.ExpectedFormat,$rql.api.dataTypes[i.Type].formatPattern())):this.error($rql.i18n.strings.InvalidData),!1;$rql.api.dataTypes.isDateTime(i.Type)&&(e=moment($rql.api.dataTypes[i.Type].parse(r)),r=e.seconds(0).format("YYYY-MM-DDTHH:mm:ss"),t.params.args.data.id=r)},onMultiselectItem:function(t){var u=n(t.currentTarget),s=t.type==="select2:select",o,r;u.parent().find(".select2-search__field").val("");n("li[role=treeitem] span[role=item-wrapper]").each(function(){n(this).text()==t.params.data.text&&(s?n(this).find("i").removeClass("icon-check-empty").addClass("icon-check"):n(this).find("i").removeClass("icon-check").addClass("icon-check-empty"))});var h=u.attrs("rql-filter-index","rql-property"),c=this.config.isFabric?0:h.rql.filterindex,f=this.config.FilterSets.WorkingSet.Filters[c],l=n(t.currentTarget).attrs("rql-property").rql.property,e=this.config.DataPage.Properties[l],i=u.val();if(i&&$rql.api.dataTypes.isDateTime(e.Type))for(o=$rql.api.dataTypes[e.Type],r=0;r<i.length;r++)switch(e.Type){case"DateTime":break;case"Timestamp":moment(i[r]).isValid()&&(i[r]=moment(i[r]).valueOf().toString());break;default:i[r]=o.format(o.parse(i[r]))}f.length=2;i&&i.length>0?f.addRange(i.slice(0)):f[2]=""},initialize:function(t){var r=this.config=n.extend({Search:{},serviceUrl:$rql.api.baseUrl.pathname+"queue/",randomId:function(){return $rql.newId()},gridId:$rql.newId()},e,t),i={applyFilters:this.onApplyFilters,changeFilters:this.onChangeFilters,changeMode:this.onChangeMode,changePage:this.onChangePage,changePageSize:this.onChangePageSize,changeSpacing:this.onChangeSpacing,changeNotification:this.onChangeNotification,clearAllFilters:this.onClearAllFilters,clearFilters:this.onClearFilters,removeFilter:this.onRemoveFilter,clearFilterValues:this.onClearFilterValues,editFilters:this.onEditFilters,editFilter:this.onEditFilter,showFilterSave:this.onShowFilterSave,exportData:this.onExportData,filter:this.onFilter,listValues:this.onListValues,openQueueAction:this.onOpenQueueAction,manageFilters:this.onManageFilters,"new":this.onNavigate,newandexecute:this.onNavigate,create:this.onNavigate,refresh:this.refresh,refreshConnectionError:this.refreshConnectionError,saveSettings:this.saveSettings,saveFilter:this.saveFilter,saveFilterManagement:this.saveFilterManagement,sort:this.onSort,swapImage:this.swapImage,editInPlace:this.onEditInPlace,viewInPlace:this.onViewInPlace,newinplace:this.onNewInPlace,bulkUpdate:this.onOpenBulkUpdate,newAndExecuteInPlace:this.onNewAndExecuteInPlace,newAndPublishInPlace:this.onNewAndPublishInPlace,drillDown:this.onDrillDown,downloadArtifacts:this.onDownloadArtifacts,search:this.search,navigateToFinding:this.onNavigateToFinding,selectItem:this.onSelectItem,saveEditPage:this.onSaveEditPage,cancelEditPage:this.onCancelEditPage,closeDropDown:this.closeDropDown,onOpenDropdownLookup:this.onOpenDropdownLookup,setLookupValue:this.setLookupValue,selectLookup:this.onSelectLookup,clearLookup:this.onClearLookup,deleteSavedFilter:this.onDeleteSavedFilter,clearBulkSelection:this.onClearBulkSelection,openNestedQueue:this.onOpenNestedQueue,openAllNestedQueue:this.onOpenAllNestedQueue,openCustomizationEditor:this.onOpenCustomizationEditor,showDtPicker:this.onShowMultiSelectDtPicker,shuffle:this.onShuffleColumns,loaded:this.onLoaded,toggleTextContainer:this.onToggleTextContainer,toggleTruncateAll:this.onToggleTruncateAll,changeSetView:this.onChangeSetView,toggleSaveFilter:this.onToggleSaveFilter,update:this.onUpdateStore,top:this.onGoToTop};i.addFilter=i.deleteFilter=i.deleteValue=i.selectOperator=i.selectProperty=this.onUpdateFilters;this.on(i).$.on("click","[rql-url]",$rql.isNull(r.onItemSelected,this.onNavigate)).on("click","[rql-index]",this.saveState);$rql.events.on("resize",this.onResize);this.$.on("multiselectDtPickerUpdated",this.onMultiSelectDtPickerUpdated);this.$.on("dtPickerCancelled",this.onDtPickerCancelled);this.$.on("focusin focusout","input[rql-id='search']",this.onQuickSearchFocus);if(this.config.isFabric){this.config.PagerShowNext=$f($rql.i18n.strings.ShowNext,this.config.MobileDevicePageSize);this.config.PagerShowPrevious=$f($rql.i18n.strings.ShowPrevious,this.config.MobileDevicePageSize);this.$.on("show.bs.collapse",".collapse",this.onQueueCollapse);this.$.on("hide.bs.collapse",".collapse",this.onQueueCollapse);n(document).off("scroll").on("scroll",this.onScroll)}this.isMobile()?(this.config.SelectedRowAttr="url",this.config.SelectedRowClass="active"):(this.config.SelectedRowAttr="record",this.config.SelectedRowClass="hover");$rql.api.offline&&$rql.api.isAndroid&&this.isMobile()&&(this.config.DisableMobileNavElements=!0);r.QueueNavId=$rql.newId();r.QueueCollapsibleId=$rql.newId();this.config.FabricMobileBreakpoint=!1;this.config.isFabric&&$rql.ui.checkMediaBreakpoint("sm","lesser")&&(r.FabricMobileBreakpoint=!0)},onLoaded:function(n){if(this.config.Form&&this.config.Form.onAsyncControlsLoaded)if(this.mode&&this.mode.ModeProperties&&this.mode.ModeProperties.Type==="calendar"){if(n&&n.PluginLoaded)this.config.Form.onAsyncControlsLoaded(n)}else this.config.Form.onAsyncControlsLoaded(n)},onOpenDropdownLookup:function(t){var i=this.config,o=n(t.currentTarget),u=o.attrs(),r=u.rql.target,h=u.rql.lookupview,c=u.rql.lookupfield,l=u.rql.row,s=$rql.api.uiVersion>2,f=this.$.find($f("[rql-property='{0}']",r)),e=this.$.find($f("[rql-cell='Cell_{0}']",r)),a=e.attr("rql-value"),v=s?e.val():e.text();s&&f.css({width:o.outerWidth()});i.Lookup&&i.Lookup[r]||(i.Lookup||(i.Lookup={}),i.Lookup[r]={Items:[{name:$rql.i18n.strings.Loading}]},this.loadDropdown({target:f,property:r,lookupview:h,field:c,row:l,text:v,val:a}));f.html($rql.ui.templates("dropdownlookup-in-context").render(i.Lookup[r]))},onSelectLookup:function(i){var u,v;i.stopPropagation();i.preventDefault();var f=this.config,y=n(i.currentTarget),r=y.attrs(),o=r.rql.id,p=o+".lookup-dialog",w=r.rql.view,l=w.split("."),e=r.rql.row,a=r.rql.urow,b=r.rql.lookupfield,k=r.rql.queueaccesstoken,s=l[0],d=l[1],g=this.mode.ModeProperties.usecontext,h=null,c=null;if(t||(t=$rql.ui.div("lookup-dialog")),t.AppName=s,t.Field=b,t.CellId="Cell_"+o+"_"+a,t.TargetId=o+"_"+a,g)for(h=[],c=[],u=0;u<f.DataPage.Items[e].Values.length;u++)h.add(f.DataPage.Items[e].Values[u].Value),c.add(f.DataPage.Items[e].Values[u].Property.Name);t.html($rql.ui.templates("lookup-dialog").render());v=t.find("[rql-role='content']");new $rql.ui.controls.queue(v[0],{Id:p,AllowActions:!1,AppName:s,Context:{StoreId:f.DataPage.Keys[e],CustomContextValues:h,CustomContextProperties:c,AppName:s},onItemSelected:this.onItemSelected,PageFilters:null,PageIndex:0,PageSize:0,UseDefaultFilter:!0,ViewName:d,IsLookup:!0,AccessToken:k}).on("loaded",this.lookupQueueShown).show();t.show().widgetize();$rql.ui.showModal(t.find('[rql-role="modal"]'))},lookupQueueShown:function(n){!this.isMobile()&&n.config.Controls.ShowFilters&&n.editFilters()},onUpdateStore:function(t){var f=n(t.currentTarget),i=f.attrs(),e=i.rql.argument,r=i.rql.appname,u=i.rql.urlarguments,o=this,s=this.getRowActionRqlAttrs(t),h=this.getKeyByIndex(s.index),c=n.extend(this.createRequest(),{Target:e,StoreId:r?r:h,Arguments:u?u:this.config.Arguments,CustomMode:r?!0:!1});this.post("storeupdate",c).done(function(){o.enable()}).done(this.refresh).fail(this.error)},onShuffleColumns:function(){for(var n=[],i=this.config,t=0;t<i.DataPage.Properties.length;t++)(!i.DataPage.Properties[t].IsHidden||i.DataPage.Properties[t].IsHiddenConfigurable)&&n.push({first:t===0,name:i.DataPage.Properties[t].Name,checked:!i.DataPage.Properties[t].IsHiddenConfigurable,title:i.DataPage.Properties[t].DisplayTitle,index:t});n.length>0&&(n[0].disabledDown=n[0].disabledUp=!0);n.length>1&&(n[1].disabledUp=n[n.length-1].disabledDown=!0);this.shuffleColumnsDialog=new $rql.ui.controls.shufflecolumnsdialog({header:$rql.i18n.strings.ArrangeColumns,items:n,columnSet:i.ColumnSet,hasGroups:!$rql.isUndefined(i.DataPage.Groups)});this.shuffleColumnsDialog.on("selected",this.onShuffleColumnsDialogSelected);this.shuffleColumnsDialog.show()},onShuffleColumnsDialogSelected:function(n){this.shuffleColumnsDialog&&(this.shuffleColumnsDialog.dispose(),this.shuffleColumnsDialog=null);this.config.ColumnSet=n.columnSet;this.saveSettings(!0).done(this.refresh)},onMappColumns:function(n){this.mappingColumnsDialog=new $rql.ui.controls.mappingcolumnsdialog({header:$rql.i18n.strings.ColumnMapping,mapping:n.mapping,storeId:n.storeId,public:n.public,chartId:n.chartId,name:n.name});this.mappingColumnsDialog.on("selected",this.onMappingColumnsDialogSelected);this.mappingColumnsDialog.show()},onMappingColumnsDialogSelected:function(n){this.mappingColumnsDialog&&(this.mappingColumnsDialog.dispose(),this.mappingColumnsDialog=null);var i=this.config,t=this,r=n.name?n.name:this.getUniqueChartName("Gantt");$rql.http.post("/rql/customization/save",{StoreId:n.storeId,Id:n.chartId,Private:!$rql.isNull(n.public,!1),ComponentType:"Queue",ComponentName:i.AppName+"."+i.ViewName,Type:"Ganttchart",Name:r,Data:n.mapping}).done(function(n){t.config.Modes[n.StoreId]||t.config.Modes.add(t.config.Modes[n.StoreId]={Type:"Ganttchart",StoreId:n.StoreId,CustomMode:!0});t.changeCustomizationMode(n.StoreId)}).fail(t.error)},attachEditableProperties:function(){var n=this;return this.$.find("[rql-type='EditInGridLookupInPlace'],[rql-type='EditInGridTextBoxSearch']").each(function(){var t=$rql.ui.get(this);t.config.EditInGridStoreId=n.config.DataPage.Keys[t.$.attrs().rql.row]}),n},onItemSelected:function(i){i.stopPropagation();i.preventDefault();var u=this,f=n(i.currentTarget).attrs(),r=f.href.splitAndTrim("/").last();return this.hideModals(!1,i),$rql.http.post($rql.api.baseUrl.pathname+"form/LookupValue",{AppName:t.AppName,FieldName:t.Field,StoreId:r},null).done(u.onLoadLookupItem).fail(function(){$log.error($f("Error loading lookup for store {0}",r))}),!1},onLoadLookupItem:function(n){var r=this.$.find($f("tr[id='{0}'] [rql-cell='{1}']",this.config.EditableGridRandomId,t.CellId)),i;r.text(n.Value);i=this.$.find($f("tr[id='{0}'] [rql-target='{1}']",this.config.EditableGridRandomId,t.TargetId));i.attr("rql-value",n.Value);i.attr("rql-store",n.StoreId)},onClearLookup:function(t){var u=n(t.currentTarget),f=u.attrs(),i=f.rql.property,e=this.$.find($f("tr[id='{0}'] [rql-target='{1}']",this.config.EditableGridRandomId,i)),r;e.attr("rql-value","").attr("rql-store","");r=this.$.find($f("tr[id='{0}'] [rql-cell='Cell_{1}']",this.config.EditableGridRandomId,i));r.text($rql.i18n.strings.SelectItem)},loadDropdown:function(n){var t=this,i=this.config;$rql.http.post($rql.api.baseUrl.pathname+"form/dataitems",{ViewId:n.lookupview,Field:n.field,StoreId:i.DataPage.Keys[n.row],Distinct:!0},n).done(t.onLoadDropdownLookupItems).fail(t.onLoadError)},onLoadError:function(){$log.error($f("Error loading dropdown for form {0}",this.config.StoreId))},onLoadDropdownLookupItems:function(n,t,i){var e=this.config,u=n.Items,s,r=i.context,o=[{name:$rql.i18n.strings.SelectItem}];for(var f in u)o.add(s={name:u[f],value:f,selected:r.text==u[f]});if(e.Lookup[r.property]={Items:o},r.target.html($rql.ui.templates("dropdownlookup-in-context").render(e.Lookup[r.property])),$rql.api.uiVersion>2)r.target.find("[rql-role='dropdown-item']").on("click",this.setLookupValue)},setLookupValue:function(t){var i=n(t.currentTarget),c=i.attr("value"),e=i.text(),o=i.closest("ul[rql-property]").attr("rql-property"),r=this.config.Lookup[o].Items,s=$rql.api.uiVersion>2,u,f,h;s&&(i.parent().find("li").removeClass("active"),i.addClass("active"));for(u in r)r.hasOwnProperty(u)&&(r[u].selected=r[u].name===e);f=this.$.find($f("[rql-cell='Cell_{0}']",o));s?f.val(e):f.text(e);f.attr("rql-value",c);h=s?i:this.$.find($f("[rql-property='{0}']",o));this.closeDropDown(h);t.stopPropagation()},listValues:function(n,t,i,r){var u={AppName:this.config.AppName,ViewName:this.config.ViewName,PropertyName:n,Filters:t,Limit:i,Arguments:this.config.Arguments};return this.attachAccessToken(u),this.setRequestContext(u),this.post("values",u,r).done(this.onListValuesResponse).fail(this.onListValuesResponse)},onSelectItem:function(t){var a,l,f,y,o,v;n.isFunction(t.stopPropagation)&&t.stopPropagation();var c=n(t.currentTarget),p=c.attrs(),s=p.rql.argument,e=c.is(":checked"),h=this,r=this.config,l=n.extend(this.createRequest(),{BulkSelectId:r.BulkSelectId,StoreId:s,Selected:e});if(r.BulkSelectMode=="Snapshot"&&(a=$rql.isNull(r.Filters,[]).where(u),l=n.extend(this.createRequest(),{BulkSelectId:r.BulkSelectId,StoreId:s,Selected:e,Filters:a,UseDefaultFilter:!this.rendered&&a.length==0,Sort:r.Sort})),(r.BulkSelectMode=="Parent"||r.BulkSelectMode=="ParentSnapshot")&&s!="all"&&(c.removeProp("indeterminate").removeClass("indeterminate").removeAttr("rql-ind"),f=this.editorInPlace,f&&f.ViewInPlaceMode&&this.editorsCollection&&(y=this.getRowActionRqlAttrs(t),f=this.editorsCollection[y.rowIndex],f&&f.view.control.config.EmbedList.length>0)))for(o=f.view.control.config.EmbedList,i=0;i<o.length;i++)(o[i].config.BulkSelectMode=="Child"||o[i].config.BulkSelectMode=="ChildSnapshot")&&(o[i].$.find('input[name="selectItem"]').attr("checked",e),this.config.isFabric&&o[i].$.find('input[name="selectItem"]').prop("checked",e));this.setRequestContext(l);s==="all"&&(v=this.$.find('input[name="selectItem"]').not('[disabled="disabled"]'),v.attr("checked",e).removeProp("indeterminate").removeClass("indeterminate").removeAttr("rql-ind"),this.config.isFabric&&v.prop("checked",e));s==="all"&&(r.BulkSelectMode==="Snapshot"||r.BulkSelectMode==="ParentSnapshot")&&this.disable();this.post("bulkselect",l).done(function(n){h.enable();r.BulkSelectMode==="Child"||r.BulkSelectMode==="ChildSnapshot"?h.setParentSelectCheck(n.AllSelected,n.StoreId):h.setAllSelectedCheck(n.AllSelected);n.ThresholdReached===!0&&h.error($f($rql.i18n.strings.BulkSelectLimitExceeded,n.Threshold))}).fail(this.error)},setAllSelectedCheck:function(n){n=$rql.isUndefined(n)?null:n;this.$.find('input[name="selectAll"]').prop("indeterminate",n==null).attr("checked",n==null?!0:n).toggleClass("indeterminate",n==null)},setIndeterminateCheck:function(){this.$.find('input[rql-ind="true"]').prop("indeterminate",!0).attr("checked",!0).toggleClass("indeterminate",!0)},setParentSelectCheck:function(n,t){var i=this.config;this.raise("bulkSelectionChanged",{sender:this,select:n,storeId:t})},onClearBulkSelection:function(){this.updateBulkSelectionSnapshot(this.refresh,!0)},onBulkSelectionChanged:function(n){var t=$rql.isUndefined(n.select)?null:n.select;this.$.find($f('input[rql-argument="{0}"][name="selectItem"]',n.storeId)).removeProp("indeterminate").removeClass("indeterminate").removeAttr("rql-ind").prop("indeterminate",t==null).attr("checked",t==null?!0:t).toggleClass("indeterminate",t==null)},onResize:function(){var t=this.config,i;this.config.FabricMobileBreakpoint=!1;this.config.isFabric&&$rql.ui.checkMediaBreakpoint("sm","lesser")&&(this.config.FabricMobileBreakpoint=!0);this.mode&&(this.mode.Type==="Grid"&&(n("span.long-text-container:has(>a.less)",this.mode.$).addClass("trimmed"),n("span.long-text-container > a.more, a.less",this.mode.$).remove(),n("span.long-text-container > span",this.mode.$).each(function(){var t=n(this);t.height()<this.scrollHeight-1&&t.parent().append("<a href='' class='more'><i class='icon-chevron-down'><\/i><\/a><a href='' class='less'><i class='icon-chevron-up'><\/i><\/a>")}),n("span.long-text-container a",this.mode.$).click(function(t){n(this).closest("span.long-text-container").toggleClass("trimmed");t.preventDefault()}),t.isFabric&&(i=this.$.find("[rql-role='moreActionsMenu']:visible").length>0,i||this.$.find("[rql-role='queueFixedActionButtons']").attr("hidden",""),this.config.ScrollVPosition&&(n(window).scrollTop(this.config.ScrollVPosition),delete this.config.ScrollVPosition),this.setGridScrollable(),this.adjustRowHeight())),(this.mode.Type==="Grid"||this.mode.Type==="EditableGrid")&&t.ScrollHPosition&&(t.Modes[t.Mode].$.find('[rql-role="queue-main-container"]').scrollLeft(t.ScrollHPosition),delete t.ScrollHPosition));$rql.ui.resized()},saveState:function(t){var i=n(t.currentTarget).attrs();i&&i.rql[this.config.SelectedRowAttr]&&(this.config.SelectedRow=i.rql[this.config.SelectedRowAttr]);this.saveNavigateBackState()},onSaveEditPage:function(n){if(this.config.NestedQueueControlList||this.config.NestedQueueTopControl){this.onSaveEditPageWithNestedQueues2(n);return}var t=this.getRequest(n);t.HasUpdates?this.disable().post("EditPage",t,t).done(this.refreshEditPage).fail(this.error):this.info($rql.isNull(this.mode.ModeProperties.nochangesmessage,$rql.i18n.strings.NoChanges))},getNestedQueuesExternalRequest:function(n){var i,t;if(n.requests=[],this.getNestedQueuesUpdates(n),n.requests.length>0){for(i=[],t=0;t<n.requests.length;t++)i.push(n.requests[t].request);return{Requests:i,AppName:this.config.AppName,ViewName:this.config.ViewName,MultiLevel:!0,HasUpdates:!0,Id:this.config.Id}}return null},refreshNestedQueuesFromExternalResponse:function(n){for(var i,f,u=this,r=this.config,t=0;t<n.Responses.length;t++){if(n.Responses[t].ParentId)for(i=0;i<r.NestedQueueControlList.length;i++)if(r.NestedQueueControlList[i].control.config.NestedQueuesParentKey==n.Responses[t].ParentId){u=r.NestedQueueControlList[i].control;break}f=this.updateNestedQueueValidations(n.Responses[t],u)}},onSaveEditPageWithNestedQueues2:function(n){var i=this,r=[],t;if(n.requests=[],this.getNestedQueuesUpdates(n),n.requests.length>0){for(this.disable(),t=0;t<n.requests.length;t++)r.push(n.requests[t].request);this.post("EditPage2",{Requests:r,AppName:this.config.AppName,ViewName:this.config.ViewName},{requests:n.requests}).done(function(t,r,u){for(var e=u.context,f=0;f<t.Responses.length;f++)n.requests[f].status=i.updateNestedQueueValidations(t.Responses[f],e.requests[f].control)}).always(function(){for(var t=!0,r=0;r<n.requests.length;r++)t=t&&n.requests[r].status;t&&i.refreshEditPage()}).fail(this.error);this.enable()}else this.info($rql.isNull(this.mode.ModeProperties.nochangesmessage,$rql.i18n.strings.NoChanges))},getNestedQueuesUpdates:function(n){var t,i,r;if(n.NestedQueue=!0,t=this.config,i=this.getRequest(n),i.MultiLevel=!0,i.HasUpdates&&(i.ParentId=t.NestedQueuesParentKey,n.requests.push({request:i,control:this})),t.NestedQueueControlList)for(r=0;r<t.NestedQueueControlList.length;r++)t.NestedQueueControlList[r].control.getNestedQueuesUpdates(n)},updateNestedQueueValidations:function(n,t){var r=t.config,i,u,f,e;if(t.$.find(".queue-error").removeClass("queue-error"),r.DataPage&&r.DataPage.Items&&n&&n.InvalidElements){for(i=0;i<r.DataPage.Items.length;i++)if(u=n.InvalidElements[i],r.DataPage.Items[i].Values&&u)for(f=0;f<u.length;f++)e=u[f],t.$.find($f("tr[id='{2}'][rql-index='{1}'] [rql-id='{0}'][rql-editable]",e,i,r.EditableGridRandomId)).closest("div.wrapper").addClass("queue-error").end().find('div[rql-role="e-placeholder"]').addClass("queue-error");return this.error(null,$rql.isNull(this.mode.ModeProperties.validationerrormessage,$rql.i18n.strings.ValidationError)),!1}return!0},onCancelEditPage:function(n){this.clearChache();this.refresh(n)},getRequest:function(t){var r=this.config,e=$rql.isEvent(t),s=[],v=[],y,o,l,f,u,i;e&&(t.preventDefault(),t.stopPropagation());y=t.NestedQueue?$f("tr[id='{0}']",this.config.EditableGridRandomId):"";this.$.find($f("{1}[rql-index='{0}'] [rql-editable]",0,y)).each(function(){var t=n(this).attrs();t.rql.id&&v.add(t.rql.id)});var p=this.getUpdates(),c=this.getMetaColumns(),h=!1,g=e?n(t.currentTarget).attrs().rql.argument=="SaveInContext"||n(t.currentTarget).attrs().rql.argument=="SaveInContextAndExecute":t.SaveToContext,nt=e?n(t.currentTarget).attrs().rql.argument=="SaveInContextAndExecute"||n(t.currentTarget).attrs().rql.argument=="SaveAndExecute":t.Execute,tt=e?n(t.currentTarget).attrs().rql.id:t.CallerId,it=e?n(t.currentTarget).attrs().rql.valuewhenvalid:t.CallerValue;for(i=0;i<p.length;i++){var rt=p[i],ut=this.updates[i],w=$rql.api.getUpdates(rt,ut);w.length>0&&(h=!0);s.add(w)}if(o=(new Date).getTimeZone(),l=this.getEditInGridKeys(),!t.ValidateOnly&&this.rowsCache&&this.rowsCache.length>0){for(i=0;i<this.rowsCache.length;i++)s.add(this.rowsCache[i].update),l.add(this.rowsCache[i].key),c&&c.add(this.rowsCache[i].metacolumns);h=!0}if(f={AppName:r.AppName,ViewName:r.ViewName,Updates:s,MetaColumns:c,Keys:l,Ids:v,SaveInContext:g,RunWorkbook:nt,CallerId:tt,CallerValue:it,TimeZone:o.Id,TimeZoneOffset:o.dstEnabled?o.DstOffset:o.Offset,TimeZoneDaylightSaving:(new Date).isDstObserved(),Id:r.Id},this.setRequestContext(f),f.HasUpdates=h,h&&this.mode.ModeProperties.usecontextforvalidation){var a=[],b=[],k=[],d=!0;for(u=0;u<r.DataPage.Items.length;u++)if(s[u].length>0){for(i=0;i<r.DataPage.Items[u].Values.length;i++)k.add(r.DataPage.Items[u].Values[i].Value),d&&b.add(r.DataPage.Items[u].Values[i].Property.Name);a.add(k);d=!1}else a.add([]);f.CustomContextValues=a;f.CustomContextProperties=b}return f},checkUnsavedChanges:function(n,t){var r,u,i;if(n.stopPropagation(),this.isVisible()&&this.config.UsesEditableGrid&&!this.config.skipCompletionCheck){for(r=this.getUpdates(),u=!1,i=0;i<r.length;i++){var f=r[i],e=this.updates[i],o=$rql.api.getUpdates(f,e);if(o.length>0){u=!0;break}}if(u)return n.isTrigger?(t&&t.queues.add(this),!1):$rql.i18n.strings.UnsavedChanges}return},success:function(n){this.notify(n,$rql.api.uiVersion>2?"success":"well-success-light")},info:function(n){this.notify(n,$rql.api.uiVersion>2?"info":"well-info-light")},error:function(n,t){this.enable();n&&n.status===513&&(this.$.html($rql.ui.templates("view-error").render({isConnectivityError:!0})),this.notify($rql.i18n.strings.ViewConnectivityError,$rql.api.uiVersion>2?"error":"well-danger-light"));n&&n.status===515?$rql.ui.error($rql.i18n.strings.SessionInvalidatedByLimits,$rql.i18n.strings.Error,null,null,function(){window.location.reload()}):(console.log(n),this.notify($rql.isString(n)?n:$rql.isNull(t,"Error"),$rql.api.uiVersion>2?"error":"well-danger-light"))},notify:function(t,i){if($rql.api.uiVersion>2)toastr.options.progressBar=!0,toastr.options.positionClass="toast-top-center",toastr[i](t);else{var r=this.config.Id;this.$message=this.$.find($f("[rql-role='user-message'][rql-source='{0}']",r));this.$message.children(".well").attr("class",i+" well well-mini padding-lr-sm medium").html(t);this.$message.fadeIn(125,function(){n(this).delay(7e3).fadeOut(125)})}},refreshEditPage:function(n){var i=this.config,e=$rql.api.uiVersion>2,r,u,f,t;if(this.$.find(".queue-error").removeClass("queue-error"),i.DataPage&&i.DataPage.Items&&n&&n.InvalidElements){for(t=0;t<i.DataPage.Items.length;t++)if(r=n.InvalidElements[t],i.DataPage.Items[t].Values&&r)for(u=0;u<r.length;u++)f=r[u],this.$.find($f("[rql-index='{1}'] [rql-id='{0}'][rql-editable]",f,t)).closest(e?"div[rql-role='wrapper']":"div.wrapper").addClass("queue-error").end().find('div[rql-role="e-placeholder"]').addClass("queue-error");this.error(null,$rql.isNull(this.mode.ModeProperties.validationerrormessage,$rql.i18n.strings.ValidationError))}else if(i.requireRefresh=!0,this.clearChache(),i.NotificationMessage=$rql.isNull(this.mode.ModeProperties.changessavedmessage,$rql.i18n.strings.ChangesSaved),this.mode.ModeProperties.buttonargument&&this.mode.ModeProperties.buttonargument.toLowerCase()=="reload"){if(this.config.skipCompletionCheck=!0,this.config.NestedQueueControlList)for(t=0;t<this.config.NestedQueueControlList.length;t++)this.config.NestedQueueControlList[t].control.config.skipCompletionCheck=!0;this.setViewSetting("PendingMessage",i.NotificationMessage);$rql.api.reload()}else this.refresh()},getEditInGridKeys:function(){var r=this.config,u,t,i,n;if(this.mode.ModeProperties.storeidcolumn){for(u=[],t=0;t<r.DataPage.Items.length;t++)for(i=r.DataPage.Items[t].Values,n=0;n<i.length;n++)this.mode.ModeProperties.storeidcolumn==i[n].Property.Name&&u.push(i[n].Value);return u}return r.DataPage.Keys.copy()},getEditInGridKey:function(n){var u=this.config,r=null,i,t;if(this.mode.ModeProperties.storeidcolumn){for(i=u.DataPage.Items[n].Values,t=0;t<i.length;t++)if(this.mode.ModeProperties.storeidcolumn==i[t].Property.Name){r=i[t].Value;break}}else r=u.DataPage.Keys[n];return r},getMetaColumns:function(){var o=this.config,u=null,f,r,e,i,t;if(this.mode.ModeProperties.metacolumns)for(u=[],f=[],n.each(this.mode.ModeProperties.metacolumns.split(","),function(){f.push(n.trim(this))}),r=0;r<o.DataPage.Items.length;r++){for(e=[],i=o.DataPage.Items[r].Values,t=0;t<i.length;t++)f.contains(i[t].Property.Name)&&e.add($f("{0}={1}",i[t].Property.Name,i[t].Value));u.add(e)}return u},getRowMetaColumns:function(t){var e=this.config,u=null,f,r,i;if(this.mode.ModeProperties.metacolumns)for(f=[],n.each(this.mode.ModeProperties.metacolumns.split(","),function(){f.push(n.trim(this))}),u=[],r=e.DataPage.Items[t].Values,i=0;i<r.length;i++)f.contains(r[i].Property.Name)&&u.add($f("{0}={1}",r[i].Property.Name,r[i].Value));return u},getUpdates:function(){for(var t,r=this.config,f=$rql.api.uiVersion>2,u=[],i=0;i<r.DataPage.Items.length;i++)t=new $rql.ui.components.valueCollection,this.$.find($f("tr[id='{0}'][rql-index='{1}'] [rql-editable]",r.EditableGridRandomId,i)).each(function(){var h,c;if(($me=n(this)).attr("rql-dropdownlookup")=="true"){var r=$me.attr("rql-select"),u=$me.attr("rql-id"),e=$me.attr("rql-view"),o=null,i=$me.val(),s=i?$me.find(":selected").text():null;t.add($f("{0}__dropdownLookup_{1}",o,u),$f("{0}||{1}||{2}||{3}",i,e,r,s))}else if($me.attr("rql-dropdownlookupincontext")=="true"){var o=null,u=$me.attr("rql-id"),r=$me.attr("rql-select"),i=$me.attr("rql-value"),s=i?f?$me.val():$me.text():null,e=$me.attr("rql-view");t.add($f("{0}__dropdownLookup_{1}",o,u),$f("{0}||{1}||{2}||{3}",i,e,r,s))}else if($me.attr("rql-lookup")=="true"){var o=null,u=$me.attr("rql-id"),r=$me.attr("rql-select"),i=$me.attr("rql-value"),l=$me.attr("rql-store"),e=$me.attr("rql-view");t.add($f("{0}__lookup_{1}",o,u),$f("{0}||{1}||{2}||{3}",l,e,r,i))}else if($me.attr("rql-type")=="EditInGridLookupInPlace"||$me.attr("rql-type")=="EditInGridCurrency"||$me.attr("rql-type")=="EditInGridTemperature"||$me.attr("rql-type")=="EditInGridChips"){h=$rql.ui.get(this);c={values:t};h.onCollectValues(c)}else $rql.api.collectValue(this,t,!1,!0)}),u.add(t);return u},getFirstNotNullColumValueFromRawData:function(n){var i=this.config,r=null,u=-1,t;if(i.DataPage&&i.DataPage.Items)for(t=0;t<i.DataPage.Properties.length;t++)if(i.DataPage.Properties[t]==n){u=t;break}if(u>=0)for(t=0;t<i.DataPage.Items.length;t++)if(r=i.DataPage.Items[t][u],r)return r;return r},loadView:function(t){var i=this.config=n.extend(this.config,t),it,et,o,ot,v,w,l,pt,y,h,a,f,tt,e,rt,s,ut,k,d,ft,g,ht,r,nt,ct,lt,at,vt,yt;if(this.config.isFabric&&t.Options&&n.extend(this.config,t.Options.parseOptionsAsObject(!1,!0)),i.Header&&i.Header.showastitle&&i.SideFilter&&!i.SetId&&i.Set.length===0&&(it=this.$.closest('[rql-role="page-view"]').find('[rql-role="queue-header-as-title"]'),it.length>0&&(et=i.Header&&i.Header.titlecss?i.Header.titlecss:"",it.html(i.Title).addClass(et))),t.Modes){for(e=i.Modes=[],ot=i.GalleryType,r=0;r<t.Modes.length;r++){o=t.Modes[r];v=!1;switch(o){case"SlideShow":i.GalleryType="Hero";v=!0;break;case"Thumbnails":i.GalleryType="Thumbnails";v=!0;break;case"Details":i.GalleryType="List";v=!0;break;case"Gallery":v=!0}v&&(o="Gallery",i.IsGallery=!0,i.DataPage["Is"+ot]=!1,i.DataPage["Is"+i.GalleryType]=!0);e[o]||e.add(e[o]={Type:o,Title:o,DefaultPlugin:!0});e[o].ModeProperties=t.ModeProperties&&t.ModeProperties[o]?t.ModeProperties[o]:{};e[o].ModeProperties.Type&&(e[o][e[o].ModeProperties.Type]=!0,e[o].DefaultPlugin=!1);t.Templates&&(e[o].Template=t.Templates[o])&&(i.UsesTemplates=!0);(o.indexOf("Map")!=-1||o=="GoogleChart")&&(i.HasMaps=!0);o=="EditableGrid"&&(i.HasEditableGrid=!0)}if(t.Customizations)for(r=0;r<t.Customizations.length;r++)o=t.Customizations[r].StoreId,e[o]||e.add(e[o]={Type:t.Customizations[r].Type,StoreId:o,CustomMode:!0,Title:t.Customizations[r].Name,Public:t.Customizations[r].Public,ChartId:t.Customizations[r].Id});if(w=t.Mode,t.ModeProperties&&(t.ModeProperties.Highchart||t.ModeProperties.Ganttchart)&&(l=t.ModeProperties.Highchart?"Highchart":"Ganttchart",t.ModeProperties[l].chartidcolumn?pt=this.getFirstNotNullColumValueFromRawData(t.ModeProperties[l].chartidcolumn):t.ModeProperties[l].chartid&&(chartid=t.ModeProperties[l].chartid),chartid&&(w=chartid,e[w]||e.add(e[w]={Type:l,CustomMode:!0,ChartId:chartid,ComponentName:t.ModeProperties[l].queue,ComponentType:"Queue"}))),i.SingleMode=e.length===1&&!t.Customizations,this.mode=$rql.isNull(e[w],e[0]),this.mode&&this.highlightMode(this.mode),i.HasMaps&&(this.mode.Type.indexOf("Map")!=-1||this.mode.Type=="GoogleChart")&&(i.UsesMap=!0),n(window).off("beforeunload."+this.config.Id,this.checkUnsavedChanges),i.partials=$rql.ui.partials("queue-grid-body","page-set"),this.mode.Type=="EditableGrid"){i.partials=$rql.ui.partials("queue-grid-body","queue-grid-items");i.UsesEditableGrid=!0;i.EditableGridRandomId=$rql.newId();n(window).on("beforeunload."+this.config.Id,this.checkUnsavedChanges)}else i.UsesEditableGrid=!1}if(t.Actions){for(y=i.Actions={},r=0;r<t.Actions.length;r++){var b=t.Actions[r],c={Type:h=b[0],Title:b[1],Argument:b[2],Description:b[3],NormalizedName:this.normalizedActionName(h)},p=h.contains("New")||h=="Create"||h=="BulkUpdate"?"New":h.contains("Export")||h=="QuickReport"?"Export":h;if(y[p]?y[p].add(c):y[p]=[c],p=="New"){if(c.IsNew=h=="New"||h=="Create"||h=="NewAndExecute"||h=="NewAndPublish",c.IsNew){c.NormalizedName=h.toLowerCase();const n={NewAndExecute:"1",NewAndPublish:"2"};n[h]&&(c.Argument=c.Argument.includes("?")?c.Argument+"&rqlaction="+n[h]:c.Argument+"?rqlaction="+n[h])}i.Context&&(c.ContextId=i.Context.StoreId)}else p=="Export"&&(c["Is"+b[0]]=!0);p=="New"||i.HasActions||(i.HasActions=!0);(c.Type==="HighchartEditor"||c.Type==="GanttchartEditor")&&(i.CustomizationActions={CustomizationEditor:{Type:c.Type,Title:c.Title}},i.SingleMode=!1)}a=y.New;a&&(i.HasNewActions=!0,a.length==1&&(a[0].Single=!0),a[0].First=a[a.length-1].Last=!0)}if(f=i.Controls={},t.Controls)for(r=0;r<t.Controls.length;r++)t.Controls[r].indexOf("FiltersOpen")===-1?f["Show"+t.Controls[r]]=!0:(f.ShowFilters=!0,tt=t.Controls[r].split(":"),tt.length>1&&(f.ShowOpenFilter=tt[1]==="Yes"||tt[1]==="yes"?!0:!1));else i.ShowControls&&(f.ShowExport=!$rql.api.offline&&y.Export!=null,f.ShowFilters=!0,f.ShowModes=!0,f.ShowPaging=!0,f.ShowRecordShow=!0,f.ShowRecordCount=!0,f.ShowRefresh=!0,f.ShowSpacing=!0,f.ShowTitle=!0,f.ShowColumnHeaders=!0,f.ShowColumnShuffling=!0);if(f.ShowTitle&&this.mode.ModeProperties){if(this.mode.ModeProperties.nextmodebutton&&!this.mode.ModeProperties.nextmode){for(e=i.Modes,rt=e[0].Title,r=0;r<e.length;r++)if(this.mode.Title==e[r].Title){rt=e[r<e.length-1?r+1:0].Title;break}this.mode.ModeProperties.nextmode=rt}f.ModeProperties=this.mode.ModeProperties}if(f.ShowTitle&&i.SetId&&(i.QueueSet=!0),(t.ShowAdvancedSearch!=null||!t.Controls||f.ShowFilters)&&i.ShowControls||(i.ShowAdvancedSearch=!1),f.ShowFilters=i.ShowAdvancedSearch?!0:!1,i.ShowMoreActionsMenu=i.ShowControls&&(f.ShowColumnShuffling||f.ShowSpacing||f.ShowModes||i.HasActions&&f.ShowExport),f.ShowColumnHeaders_actions=!0,t.Controls2&&n.each(t.Controls2,function(t,i){f["Show"+t]&&n.each(i,function(n,i){f["Show"+t+"_"+n]=i.toLowerCase()!=="no"})}),t.EmailNotification!=null&&(i.EmailNotificationAvailable=!0),i.ActiveSetTitle=i.Title,i.EmbedActiveSetHeaderUiStyle=i.HeaderUiStyle,t.SetDataResponse)if(i.Set=[],t.SetDataResponse.Contents&&t.SetDataResponse.Contents.length>0)for(i.HasCustomViewSets=!0,s=0;s<t.SetDataResponse.ViewIds.length;s++)i.Set.add({Id:t.SetDataResponse.ViewIds[s],SetId:i.SetId,ActiveStyle:t.SetDataResponse.ViewIds[s]==i.Id?$rql.api.uiVersion>2?"btn-primary":"active":null,SetContent:t.SetDataResponse.Contents[s],HeaderUiStyle:t.SetDataResponse.HeaderUiStyles[s]});else for(i.HasEmbedSets=!0,s=0;s<t.SetDataResponse.ViewIds.length;s++)ut={Id:t.SetDataResponse.ViewIds[s],Label:t.SetDataResponse.Labels[s],UiStyle:t.SetDataResponse.UiStyles[s],CounterUiStyle:t.SetDataResponse.CounterUiStyles[s],Count:t.SetDataResponse.Counts[s],SetId:i.SetId,ActiveStyle:t.SetDataResponse.ViewIds[s]==i.Id?$rql.api.uiVersion>2?"btn-primary":"active":null},t.SetDataResponse.AccessTokens&&s<t.SetDataResponse.AccessTokens.length&&(ut.AccessToken=t.SetDataResponse.AccessTokens[s]),i.Set.add(ut);if(t.DataPage){var u=t.DataPage,wt=u.Properties,st=u.Groups,kt=$rql.bool(u.Styles);if(this.EditableGridSequentialRowCounter>=0&&u.Items?this.EditableGridSequentialRowCounter+=u.Items.length:this.EditableGridSequentialRowCounter=0,i.Filters=$rql.isNull(t.DataPage.Filters,i.Filters),u.AllowBulkSelect=t.AllowBulkSelect&&!$rql.isUndefined(t.BulkSelectId),u.AllowBulkSelectAll=t.AllowBulkSelectAll,u.BulkSelectDisableUiStyle=t.BulkSelectDisableUiStyle,i.BulkSelectId=t.BulkSelectId,i.BulkSelectMode=t.BulkSelectMode,i.BulkSelectShowClearButton=t.BulkSelectShowClearButton,i.BulkSelectClearButtonText=t.BulkSelectClearButtonText,i.BulkSelectClearButtonUIStyle=t.BulkSelectClearButtonUIStyle,i.NavigateTarget=t.NavigateTarget,t.NestedQueues&&(i.NestedQueues=t.NestedQueues,t.NestedQueueAccessTokens&&(i.NestedQueueAccessTokens=t.NestedQueueAccessTokens),i.NestedQueuesTopId=$rql.newId(),i.NestedQueueTopControl=this,i.NestedQueuesExpandAllOnStart=!1,i.NestedQueuesCountOfLeveles=i.NestedQueues.length,i.NestedQueuesMasterAppName=i.AppName,i.NestedQueuesMasterViewName=i.ViewName,i.NestedQueuesStates||(i.NestedQueuesStates=[],i.NestedQueuesExpandAllOnStart=t.NestedQueueExpand=="All")),i.BulkSelectShowClearButton||!n.isEmptyObject(f.ModeProperties)||i.HasNewActions||(i.HideToolbarSection=!0),i.NestedQueuePagerHiddenLimit=parseInt($rql.isNull(t.NestedQueuePagerHiddenLimit,i.NestedQueuePagerHiddenLimit,-1)),i.UsesNestedQueues=i.PartialRendering,i.NestedQueues&&(i.UsesNestedQueues=!0,i.NestedQueueData=i.NestedQueues[0]?i.NestedQueues[0].split(",").slice(0,3).join(","):i.NestedQueues[0],i.NestedQueueAccessTokens&&i.NestedQueueAccessTokens.length!==0&&(i.NestedQueueAccessToken=i.NestedQueueAccessTokens[0]),i.NestedQueueDataLevel=i.NestedQueuesCountOfLeveles-i.NestedQueues.length),(i.HasGroups=$rql.bool(st))&&(u.Groups=[]),u.Headers.length&&u.AllowBulkSelect&&u.Headers.length++,this.prepareProperties(u,wt,st),u.Items&&u.Items.length>0?(this.prepareDataPageValues(u),(i.UsesTemplates||i.UsesMap)&&this.prepareTemplateData(i),i.Modes.Template&&this.prepareTemplateItems(u),i.IsGallery&&this.prepareGalleryItems(u.Items)):u.FeedItems&&u.FeedItems.length!==0?u.Empty=!1:(u.Items=[],(i.UsesTemplates||i.UsesMap)&&this.prepareTemplateData(i),i.Modes.Template&&this.prepareTemplateItems(u),u.Empty=!0),u["PageSize"+u.PageSize]=!0,this.processDataPageActions(u),i.HasGroups){for(r=0;r<u.Groups.length;r++)if(u.Groups[r].Title!="")for(k=r-1;k>=0;k--)if(u.Groups[k].Title=="")u.Groups[k].Title=u.Groups[r].Title;else break;for(r=0;r<u.Groups.length-1;r++)u.Groups[r+1].Title==""&&(u.Groups[r+1].Title=u.Groups[r].Title);for(r=u.Groups.length-1;r>0;r--)u.Groups[r].Title==u.Groups[r-1].Title&&(u.Groups[r-1].Span=u.Groups[r].Span+1,u.Groups.splice(r,1));for(u.HasRowActions&&u.Groups.length>0&&(u.Groups[0].Span=u.Groups[0].Span+1),u.AllowBulkSelect&&u.Groups.length>0&&(u.Groups[0].Span=u.Groups[0].Span+1),r=0;r<u.Groups.length;r++)r%2!=0&&(u.Groups[r].IsOddGroup=!0)}if(Array.isArray(d=u.SearchProperties)){for(ft=[],i.CanSearch=d.length>0,r=0;r<d.length;r++)ft[r]=(d[r]=u.Properties[d[r]]).Title;i.Search.Prompt=$f("{0} {1}",$rql.i18n.strings.Search,ft.join(", "))}}if(i.ShowRecordsNum&&!i.ShowRecordsNum.IsDefault)for(g=0;g<i.ShowRecordsNum.length;g++)if(i.ShowRecordsNum[g].Size==u.PageSize){i.ShowRecordsNum[g].Active=!0;break}if(i.Filters||(i.Filters=[]),i.FilterApplied=i.Filters.length>0,ht=i.FilterSets=[],i.FilterSets.NoDefault=!0,i.HasSavedFilters=t.FilterSets&&t.FilterSets.length>0){for(r=0;r<t.FilterSets.length;r++)nt=t.FilterSets[r],ct=$rql.bool(nt[3]),ht.add({Index:r,Id:nt[0],Title:nt[1],Filters:nt[2],Default:ct});this.updateCurrentFilterName()}if(this.prepareFilterSummary(),i.DataPage.AggregatedProperties)for(lt in i.DataPage.AggregatedProperties)try{i.DataPage.Properties[lt].isAggregate=!0}catch(bt){$log.error($f("Error using aggregates (with queue templates): {0}",bt))}at=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId));!at.is(":visible")&&f.ShowOpenFilter&&f.ShowFilters&&(vt=this,setTimeout(function(){vt.editFilters(!0,undefined,!0)},1));t.Style&&(i[t.Style]=!0);i.HideToggleCollapse=!1;yt=this.mode.Type.indexOf("Map")!=-1||this.mode.Type=="GoogleChart";(i.NotCollapsible||i.IsLookup||t.BulkSelectMode=="Child"||t.BulkSelectMode=="ChildSnapshot"||this.mode.Type=="Highchart"||this.mode.Type=="Plugin"||yt||i.SetId||i.IsEmbed&&i.Form.config.IsInPlace)&&(i.CollapsedState="show",i.HideToggleCollapse=!0)},prepareProperties:function(t,i,r){var v=this.config,w,ot=t.GroupHeaderUiStyles,wt=v.UsesEditableGrid&&$rql.bool(t.EditableProperties),bt=$rql.bool(t.Styles),l,nt,st,tt,u,at,b,f,it,rt,vt,ut,k,s,kt,pt,g,p,a,dt,gt,c;if(i){v.ColumnSet||(v.ColumnSet=t.ColumnSet);for(l in t.Types)for(nt=!1,st=0,tt=0;tt<t.Types[l].length;tt++){u=t.Types[l][tt];nt||(st=u);var ht=[],ct="",lt=$rql.ui.parseInlineStyle(t.HeaderUiStyles[u]);for(at in lt)lt.hasOwnProperty(at)&&(b=lt[at],b.value===""?ht.push(b.originalName):ct+=b.originalName+":"+b.value+";");if(f=i[u]={Name:t.Properties[u],Index:u,Title:$rql.isNull(t.Headers[u],i[u]),TitleUiStyle:ht.length>0?ht.join(" "):null,HeaderStyle:ct===""?null:ct,Type:l,Format:t.Formats&&t.Formats[0]?t.Formats[0][u]:null,Label:t.Labels?t.Labels[u]:null,IsHidden:t.HiddenProperties&&t.HiddenProperties.contains(u)||t.HiddenConfigurableProperties&&t.HiddenConfigurableProperties.contains(u),IsHiddenConfigurable:t.HiddenConfigurableProperties&&t.HiddenConfigurableProperties.contains(u),IsFilterable:!t.NotFilterableProperties||!t.NotFilterableProperties.contains(u),IsDefaultFilter:t.DefaultFilterProperties&&t.DefaultFilterProperties.contains(u),IsAggregate:t.AggregatedProperties&&t.AggregatedProperties[t.Properties[u]]?!0:!1},t.EmptyValues&&t.EmptyValues[u]!=null&&(f.EmptyValue=t.EmptyValues[u]),f[l]=!0,t.Sort&&(it=t.Sort.split(" "),it.length==2&&it[0]==f.Name&&(f.Descending=!(f.Ascending=it[1]=="ASC"))),v.Filters)for(f.Filtered=!1,rt=0;rt<v.Filters.length;rt++)vt=v.Filters[rt],f.Filtered=f.Filtered||vt&&vt[0]==f.Name;if(t.QueueSideFilters&&(ut=t.QueueSideFilters.first(function(n){return n.Name===f.Name}),ut&&ut.Operator&&(f.SideFilterOperator=ut.Operator)),i[f.Name]=f,!f.IsHidden&&r){for(k in r)r[k].contains(u)&&(w={Title:k,Span:0,PropertyIndex:u},t.Groups[u]=w,w.Span++,ot&&ot[k]&&(w.GroupHeaderUiStyle=ot[k]),f.Group=w);f.Group?Object.keys(r).indexOf(f.Group.Title)%2!=0&&(f.IsOddGroup=!0):t.Groups[u]={Title:"",Span:1,PropertyIndex:u}}if(f.Title&&(f.DisplayTitle=f.Group&&f.Group.Title?f.Group.Title+" | "+f.Title:f.Title),t.Items){var yt=$rql.api.dataTypes[l],ft=t.Items,h,d,e,y=[],et=wt&&this.mode.ModeProperties.useconditionalcontrols;for(s=0;s<ft.length;s++){if(kt=this.EditableGridSequentialRowCounter+s,h=ft[s][u],d=$rql.bool(h)||typeof h=="boolean"||typeof h=="number",wt&&t.EditableProperties[et?s:0][u]){if(e=n.extend(!0,{row:s,urow:kt},t.EditableProperties[et?s:0][u]),n.extend(e,{ElementId:$rql.newId()}),et&&(y=[]),e.ExtendedPropertyId){if(y.length==0){pt=e.ExtendedPropertyId;g=t.ExtendedEditableProperties[et?s:0];for(p in g)if(g.hasOwnProperty(p)&&p.contains(pt))for(a=0;a<g[p].length;a++)y[a]||(y[a]={extpropid:$rql.newId()}),dt=p.substring(pt.length+1),y[a][dt]=g[p][a]}if(e.ExtendedProperties=JSON.parse(JSON.stringify(y)),d)if(e.Currency)e.SelectedText=yt.format(h);else if(e.DropDownLookupInContext||e.Lookup)e.SelectedText=h;else if(e.LookupInPlace||e.TextBoxSearch)e.SelectedText=$rql.htmlEscape(h);else if(e.CheckBoxList&&e.columnDelimiter)for(gt=h.split(e.columnDelimiter),c=0;c<e.ExtendedProperties.length;c++)e.ExtendedProperties[c].Selected=gt.contains(e.ExtendedProperties[c].value);else for(c=0;c<e.ExtendedProperties.length;c++)if(e.SelectByText&&e.ExtendedProperties[c].text==h||!e.SelectByText&&e.ExtendedProperties[c].value==h){e.ExtendedProperties[c].Selected=!0;break}}d=!0}else e=null;try{ft[s][u]={HasValue:d,Property:f,Value:f.Label?f.Label:h,Text:d&&l!=="Binary"&&l!=="HRef"?yt.format(yt.fromJson(h),t.Formats&&t.Formats[s+1]&&t.Formats[s+1][u]?t.Formats[s+1][u]:f.Format):null,CellUiStyle:bt&&t.Styles[s]?t.Styles[s][u+1]:null,EditableProperty:bt&&t.Styles[s]&&o.test(t.Styles[s][u+1])?null:e};l!="String"||nt&&u!=st||(ft[s][u].IsFirst=!0,nt=!0)}catch(ni){$log.warn($f("Error loading property {0}, type {1}, value {2}, format, {3}",f.Name,l,h,f.Format),ni)}}}}}},prepareDataPageValues:function(t){for(var f=this.config,s=$rql.bool(t.Styles),o=f.Actions&&f.Actions.DrillDown?f.Actions.DrillDown[0]:null,h=!t.FromAnalyzeQueue||t.FromAnalyzeQueue&&t.Actions&&t.Actions.any(function(n){return n.Name==="Navigate"}),r=t.Items,i=0;i<r.length;i++){var e=t.Keys[i],u=r[i],c=t.Selection?t.Selection[i]&&(!t.AllowBulkSelectAll||(t.DisabledSelection?!t.DisabledSelection[i]:!0)):!1;r[i]={Key:e,Index:i,Values:u,RowUiStyle:s&&t.Styles[i]?t.Styles[i][0]:null,BulkSelected:c,Indeterminate:t.Selection?t.Selection[i]==null:!1,DisableBulkSelect:t.DisabledSelection?t.DisabledSelection[i]:!1,CanNavigate:f.IsLookup||(t.CanNavigate?t.CanNavigate[i][0]:!0)&&h};t.NestedQueueVisibleStates&&(r[i].NestedQueueHidden=!t.NestedQueueVisibleStates[i]);o?u[0].DefaultAction=o:r[i].Url=u[0].Url=this.formatNavigateUrl(e);u[0].First=!0;this.prepareComplexValues(e,u,t.Properties);$rql.api.uiVersion>2&&n(u).each(function(n,u){u.HeaderText=t.Properties[n].Title;u.CanNavigate=r[i].CanNavigate})}},prepareGalleryItems:function(n){for(var i,r={},t=0;t<n.length;t++){r[t]={0:n[t].Key,1:{Text:[]}};i=n[t].Values;for(value in i)isNaN(parseInt(value))||(i[value].IsBinary&&!i[value].IsHRef?r[t][1].ImgSrc=i[value].BinaryUrl:i[value].IsFirst?r[t][1].Title=i[value].Text:i[value].Property.IsHidden||i[value].Property.Type!="String"||r[t][1].Text.push({Value:i[value].Text}));r[t][1].Url=n[t].Url}r.length=n.length;this.config.GalleryData={Containers:{0:'[rql-role="hero"]:visible',1:'[rql-role="Gallery_Thumbnails"]:visible [rql-role="gallery-lightbox"]',length:2},Templates:{0:$rql.ui.templates("gallery-hero").html,1:$rql.ui.templates("gallery-thumbnail").html,length:2},Items:r}},prepareTemplateData:function(n){for(var e,r,o,a,s,w,v=this,h=n.DataPage,c=h.Items,y=[],u,f=0;f<c.length;f++){var p=c[f],l=p.Values,t=y[f]={_Index:f,_IsFirst:f==0,_IsLast:f==c.length-1,ROWNUMBER:{Text:f},Url:p.Url};for(e=0;e<l.length;e++)r=l[e],o=r.Property.Integer||r.Property.Number,t[l[e].Property.Name]=v.mode&&v.mode.calendar?{Text:r.Text===null||r.Text===undefined?o?"0":"":$rql.isString(r.Text)?$rql.escapeQuotes(r.Text):"",Value:r.Value===null||r.Value===undefined?o?"0":"":$rql.isString(r.Value)?$rql.escapeQuotes(r.Value):""}:{Text:r.Text===null||r.Text===undefined?o?"0":"":r.Text,Value:r.Value===null||r.Value===undefined?o?"0":"":r.Value};if(n.UsesMap)for(a=n.Modes,s=0;s<a.length;s++){var i=a[s],b=i.Type.indexOf("Map")!=-1,k=i.Type=="GoogleChart";b&&(t["lng__"+i.Type]=t[i.ModeProperties?i.ModeProperties.longitude:null]?t[i.ModeProperties.longitude].Text:t.Longitude?t.Longitude.Text:0,t["lat__"+i.Type]=t[i.ModeProperties?i.ModeProperties.latitude:null]?t[i.ModeProperties.latitude].Text:t.Latitude?t.Latitude.Text:0,t["title__"+i.Type]=t[i.ModeProperties?i.ModeProperties.title:null]?t[i.ModeProperties.title].Text.replace(/'/g,"\\'"):t.Title?t.Title.Text.replace(/'/g,"\\'"):!1,t["box__"+i.Type]=t[i.ModeProperties?i.ModeProperties.messagebox:null]?t[i.ModeProperties.messagebox].Text.replace(/'/g,"\\'"):!1,t["iconcolor__"+i.Type]=t[i.ModeProperties?i.ModeProperties.iconcolor:null]?t[i.ModeProperties.iconcolor].Text:!1,i.Type.indexOf("Weight")!=-1&&(t.__weight__=t[i.ModeProperties?i.ModeProperties.weight:null]?t[i.ModeProperties.weight].Text:t.Weight?t.Weight.Text:0));k&&(u=i,i.ModeProperties.type=="GeoChart"&&(t.rgn__GeoChart=t[i.ModeProperties.region].Text,t.axis1__GeoChart=t[i.ModeProperties.axis1].Text,i.ModeProperties.valueaxis&&i.ModeProperties.coloraxis&&(t.vaxis__GeoChart=t[i.ModeProperties.valueaxis].Text,t.caxis__GeoChart=t[i.ModeProperties.coloraxis].Text)))}}u&&(u.ModeProperties.Title1=h.Properties[u.ModeProperties.region].Title,u.ModeProperties.Title2=h.Properties[u.ModeProperties.axis1].Title,u.ModeProperties.Options=u.ModeProperties.colors||u.ModeProperties.valueaxis||u.ModeProperties.backgroundcolor||u.ModeProperties.datalessregioncolor||u.ModeProperties.defaultcolor||u.ModeProperties.legend);w=$rql.api.baseUrl.pathname;n.TemplateData={ElementId:this.elementId,RandomId:$rql.newId(),Rows:y,UrlPrefix:w}},prepareTemplateItems:function(n){var h=n.Items,r=n.TemplateItems,c=r?0:-1,l=r?1:-1,o=r&&r.length!==0&&r[0].length>=3?2:-1,u,t,f,i,e,s;if(c!==-1&&l!==-1)for(u=0;u<h.length;u++)t=h[u],f=r[u],t.ItemTitle=f[c],t.ItemText=f[l],o!==-1&&(t.ShowCollapse=!0,t.ShowHr=!0,n.TemplateTransformOptions&&(i=n.TemplateTransformOptions.parseOptionsAsObject(),i&&i.Display&&($rql.isUndefined(i.Display.showcollapse)||(t.ShowCollapse=i.Display.showcollapse.toLowerCase()==="true"),$rql.isUndefined(i.Display.showhr)||(t.ShowHr=i.Display.showhr.toLowerCase()==="true"))),e=o<=f.length?f[o]:null,e||(s=t.ItemText,s&&(e=$rql.ui.ellipses($rql.ui.htmlToText(s),this.config.MaxItemAbstractLength))),t.ItemAbstract=e)},formatNavigateUrl:function(n){return n?this.formatActionUrl("a",n):""},formatActionUrl:function(n,t){return n&&t?$rql.api.baseUrl.pathname+n+"/"+t:null},prepareComplexValues:function(t,i,r){for(var f,u,o,s,c,h=isNaN(this.config.RowHeight)?0:parseInt(this.config.RowHeight),l=$rql.ui.getTextLineHeight(this.$)*h,e=0;e<=r.length;e++)if(f=r[e],u=e<i.length?i[e]:null,f&&u&&u.HasValue)try{f.Type!="String"||this.config.UsesEditableGrid?f.Type=="Binary"||f.Type=="Thumbnail"?(f.Type=="Binary"?u.IsBinary=!0:u.IsThumbnail=!0,o=r[f.Name+"_fileId"],o&&i[o.Index]&&(u.BinaryUrl=this.formatActionUrl("Form/Artifact",i[o.Index].Value))):f.Type=="HRef"?(u.IsHRef=u.IsBinary=!0,s=r[f.Name+"_HRef"],s&&i[s.Index]&&(u.BinaryUrl=i[s.Index].Value),n.trim(u.BinaryUrl)==""&&(u.IsBinary=!1,u.Text=u.Value)):f.Type=="Currency"&&u.EditableProperty&&(c=r[f.Name+"_currencyCode"],u.EditableProperty.Code=i[c.Index].Value):h===0&&u.Value.length>this.config.LongTextLength?u.IsLongText=!0:h>0&&(u.HasRowHeight=!0,u.RowHeight=l)}catch(a){$log.warn($f("Error preparing a value of a complex property: property {0}, type {1}, value {2}.",f.Name,f.Type,u.Value),a)}},processDataPageActions:function(n){n&&n.Items&&(this.config.IsLookup&&(n.Actions=[{Name:"Navigate"}]),n.Actions&&(this.splitDataPageActions(n),this.attachDataPageActionsToItemsAndValues(n)))},normalizedActionName:function(n){return n==="NewAndExecute"||n==="NewInPlace"?n.toLowerCase():n?n.substring(0,1).toLowerCase()+n.substring(1):n},splitDataPageActions:function(n){for(var t,i,r=[],f=!1,e=n.Properties&&n.Properties.length!=0&&n.Properties[0].Binary?!0:!1,u=0;u<n.Actions.length;u++)(t=n.Actions[u],t.Index=u,t.NormalizedName=this.normalizedActionName(t.Name),this.isValidDataPageAction(t))&&(e&&!t.Text&&(t.Name=="Navigate"||t.Name=="DrillDown")&&(t.Text=$rql.i18n.strings.Open),t.IsNavigate=t.Name==="Navigate",(t.Name==="New"||t.Name==="NewAndExecute"||t.Name==="Create")&&(t.AppName=t.Argument),t.Name==="Update"&&t.Arguments&&t.Arguments.length>0&&(t.AppName=t.Argument,t.Argument=t.Arguments[0]),t.Property?(i=n.Properties.findByKey("Name",t.Property),i&&(t.Name!=="DownloadArtifacts"||t.Text||t.Icon?(i.ColumnRowActions||(i.ColumnRowActions=[]),i.ColumnRowActions.push(t),f=!0):(i.ColumnDefaultAction=t,f=!0))):t.Text||e?t.Text&&r.push(t):n.DefaultRowAction||(n.DefaultRowAction=t));n.RowActions=r.length!=0?r:null;n.HasRowActions=r.length!=0;n.HasColumnRowActions=f;n.HasItemActions=n.HasRowActions||n.HasColumnRowActions;n.Headers.length&&n.HasRowActions&&n.Headers.length++},isValidDataPageAction:function(n){var t,r,i;if(n.NormalizedName=="navigateToFinding"){if(n.Argument&&this.config.appViewIds&&(t=n.Argument.toLowerCase().replace(/\s*/g,"").split(/[,|]/),t))for(r=this.config.appViewIds,i=0;i<t.length;i++)if(r.indexOf(t[i])!=-1)return!0;return!1}return!0},attachDataPageActionsToItemsAndValues:function(n){for(var t,r,u,f,e,o,s,h,i=0;i<n.Items.length;i++)if(t=n.Items[i],t.AllowBulkSelect=n.AllowBulkSelect,t.RowActions=this.createSpecificRowActions(n.RowActions,t,n,i),t.HasRowActions=n.HasRowActions,t.RowHasRowActions=n.RowActions&&t.RowActions.length!==0,n.DefaultRowAction||n.HasColumnRowActions)for(r=0;r<n.Properties.length;r++)u=n.Properties[r],r==0&&n.DefaultRowAction&&(f=this.createSpecificRowActions([n.DefaultRowAction],t,n,i),f&&f.length==1&&(t.Values[r].DefaultRowAction=f[0])),u.ColumnRowActions&&(t.Values[r].HasColumnRowActions=!0,t.Values[r].ColumnRowActions=this.createSpecificRowActions(u.ColumnRowActions,t,n,i)),u.ColumnDefaultAction&&(e=this.createSpecificRowActions([u.ColumnDefaultAction],t,n,i),o=e&&e.length!==0?e[0]:null,o&&(s=t.Values[r],h=n.Keys[i],u.ColumnDefaultAction.Name==="DownloadArtifacts"&&(s.IsBinary=!0,s.BinaryUrl=this.formatActionUrl("Form/Artifacts",h)+"?Queue="+this.config.Id+(o.UrlArguments?"&"+o.UrlArguments:""))))},createSpecificRowActions:function(t,i,r,u){var y,a,f,e,c,s,b,p,w,o,l,h,v;if(t){for(y=[],a=0;a<t.length;a++)if(f=n.extend(!0,{},t[a]),e={Action:f},r.ActionTitles&&(e.HasActionTitle=!0,e.ActionTitle=r.ActionTitles[u][f.Index]),r.ActionIcons&&(e.Action.Icon=r.ActionIcons[u][f.Index]),!r.ActionUiStyles||(c=r.ActionUiStyles[u][f.Index],e.Action.UiStyle=c,!c||(c.indexOf("hide")===-1||c.search(/\bhide\b/)===-1)&&(c.indexOf("HideSelf")===-1||c.search(/\bHideSelf\b/)===-1))){if(f.AppName&&(e.AppName=this.resolvePropertiesInArgument(f.AppName,i,r)),f.Name==="Navigate"||f.Name==="New"||f.Name==="NewAndExecute"||f.Name==="Create"||f.Name==="EditInPlace"||f.Name==="ViewInPlace"){if(s=f.Argument?this.resolvePropertiesInArgument(f.Argument,i,r):i.Key,s&&f.Arguments)for(o=0;o<f.Arguments.length;o++)l=f.Arguments[o],h=l.split("=",2),h.length==2&&(b=l.substring(h[0].length+1),v=this.resolvePropertiesInArgument(b,i,r),s+=String.format("{0}{1}={2}",o==0?"?":"&",h[0],escape(v)));s&&(f.Name=="Navigate"?(e.Url=this.formatNavigateUrl(s),e.Url&&f.Target=="NewWindow"&&(e.Action.IsNewWindow=!0,p=$rql.http.uri().href,e.Url=p.substring(0,p.indexOf("/rql/"))+e.Url),e.Url&&e.Url.indexOf("rqlaction=")!=-1&&(e.Action.PreventDefault=!0)):f.Name==="New"||f.Name==="NewAndExecute"||f.Name==="Create"?e.Url=this.formatActionUrl(f.Name.toLowerCase(),s):(f.Name=="EditInPlace"||f.Name=="ViewInPlace")&&(e.UrlArguments=s.indexOf("?")>0?s.substring(s.indexOf("?")+1):"",e.Url="#"))}else if(f.Name==="Update"||f.Name==="DownloadArtifacts"){if(e.Action.Argument=f.Argument?this.resolvePropertiesInArgument(f.Argument,i,r):"",e.Action.AppName=f.AppName?this.resolvePropertiesInArgument(f.AppName,i,r):"",e.Url="#",f.Arguments){for(w="",o=0;o<f.Arguments.length;o++)l=f.Arguments[o],h=l.split("=",2),h.length==2&&(v=this.resolvePropertiesInArgument(h[1],i,r),w+=String.format("{0}{1}={2}",o==0?"":"&",h[0],escape(v)));e.UrlArguments=w}}else e.Url="#";y.push(e)}return y}return null},resolvePropertiesInArgument:function(t,i,r){var u,f,o,e,s;if(t&&(u=t.match(/\{\{\s*[\w-]+\s*\}\}|\{[\w-]+\}/g),u))for(f=0;f<u.length;f++)o=u[f],e=n.trim(o.replace(/\{|\}/g,"")),s=e!=null&&e.toLowerCase()=="_scopeid"?this.config.Context?this.config.Context.StoreId:"":this.getPropertyValue(e,i,r),t=t.replace(o,s?s:"");return t},buildNestedQueueFilterData:function(t,i,r){var s=[],f,e,h,u,o;if(t&&(f=t.match(/\{\{\s*[\w-]+\s*\}\}|\{[\w-]+\}/g),f))for(e=0;e<f.length;e++)h=f[e],u=n.trim(h.replace(/\{|\}/g,"")),o=u!=null&&u.toLowerCase()=="_scopeid"?this.config.Context?this.config.Context.StoreId:"":this.getPropertyValue(u,i,r),u!=null&&s.push([u,o?o:""]);return s},getPropertyValue:function(n,t,i){if(n&&t&&i){var r=i.Properties.findByKey("Name",n);if(r)return t.Values[r.Index].Text}return null},hideSideFilterSummary:function(){this.prepareFilterSummary();this.$.find("div[rql-role='filter-summary']").replaceWith(this.config.FilterSummary).widgetize()},prepareFilterSummary:function(){var n=this.config,e,o,s,i,r,h,y,l,a,p,f,v,w;if(n.Search.Applied)n.isFabric&&(n.Search.QuickSearch=!0),n.FilterSummary=$rql.ui.templates("queue-filter-summary").render(n.Search);else{for(e=[],o=$rql.isNull(n.Filters,[]).where(u),s=0;s<o.length;s++)if(i=o[s],n.isFabric&&(i=o[o.length-1-s]),i.length>=2&&(r=n.DataPage.Properties.findByKey("Name",i[0]),r)){var c=i[1],b=$rql.i18n.operators[c],t={Property:r.DisplayTitle||r.Title||r.Name,Operator:b,PropertyName:r.Name};if(i.isSideFilter&&(t.hideInSummary=!0),h=i.length>2?i.slice(2):null,h&&h.length!=0&&c!=="?"&&c!=="!?"){for(t.Separator=c=="<<"?" "+$rql.i18n.strings.BetweenValuesSeparator+" ":", ",t.Values=[],y=$rql.api.dataTypes[r.Type],l=0;l<h.length;l++)a=h[l],a!=null&&(p={Value:a},r.Type!=="Integer"&&(p.Value=y.format(y.fromJson(a))),t.Values.push(p));t.Values.length!=0&&(t.Values[0].First=!0,t.Values[t.Values.length-1].Last=!0)}e.push(t)}if(f={gridId:n.gridId,Items:e,HideSave:n.HideSave||!n.Controls.ShowFilters?!0:!1,FilterSets:n.FilterSets},e.any(function(n){return $rql.isUndefined(n.hideInSummary)})||(f.AllHideInSummary=!0),n.FilterName&&n.FilterName!=="")f.FilterName=n.FilterName;else for(v=0;v<n.FilterSets.length;v++)w=n.FilterSets[v],w.Filters.equals(o)&&(n.FilterName=w.Title,f.FilterName=n.FilterName);n.FilterItems=e;f.DefaultFilterName=this.getFilterDefaultName();n.FilterModel=f;n.FilterSummary=e.length!=0?$rql.ui.templates("queue-filter-summary").render(f):null}},onApplyFilters:function(n){var i,t;this.config.UsesEditableGrid?(i=$rql.isEvent(n),i?(n.ValidateOnly=!0,t=this.getRequest(n),t.HasUpdates?(t.ValidateOnly=!0,this.preserveEvent=n,this.disable().post("EditPage",t).done(this.onApplyFilters).fail(this.error)):(this.cacheChanges(),this.applyFilters(n))):this.isValid(n)&&(this.cacheChanges(),this.applyFilters(this.preserveEvent))):this.applyFilters(n)},onChangeSetView:function(t){var r=n(t.currentTarget).attrs(),o,i=this.config.Form,f,e,s;if(r.rql&&(o=r.rql.data)){var c=r.rql.set,u=$f("{0}:{1}",c,o),l=$f("{0}:RQL_Active_Queue_Sets",i.config.AppName),h=this.getViewSetting(l,!1,!0),a=!1;if(h){for(f=h.split(","),e=0;e<f.length;e++)if(f[e].startsWith(c+":")){f[e]=u;u=f.join(",");a=!0;break}a||(u=h+","+u)}for(this.setViewSetting(l,u,!1,!0),ei=0;ei<i.config.EmbedList.length;ei++)if(i.config.EmbedList[ei].config.Id==o){this.$.hide();i.config.EmbedList[ei].$.show();return}s=i.$.find($f("div[rql-embed='{0}']",o))[0];n(s).removeAttr("rql-skipWidgetizing");r.rql.queueaccesstoken&&n(s).attr("rql-queue-access-token",r.rql.queueaccesstoken);i.SetQueueOnLoadToBeHidden=this;i.widgets.embed.h(s,i)}},applyFilters:function(n){(n&&(n.stopPropagation(),n.preventDefault()),this.verifyFilterValues())&&(this.updateFilterValues(),this.config.Filters=this.config.FilterSets.WorkingSet.Filters,this.showFiltersOnRefresh=!0,this.updateMapProperties(),this.updateCurrentFilterName(),this.config.ShowSave=!0,this.config.isFabric&&(this.config.FilterReset=!0),this.resetPageIndex(),this.updateBulkSelectionSnapshot(this.clearTotalsAndRefresh)||this.clearTotalsAndRefresh())},onChangeFilters:function(n){var i,t;this.config.UsesEditableGrid?(i=$rql.isEvent(n),i?(n.ValidateOnly=!0,t=this.getRequest(n),t.HasUpdates?(t.ValidateOnly=!0,this.preserveEvent=n,this.disable().post("EditPage",t).done(this.onChangeFilters).fail(this.error)):(this.cacheChanges(),this.changeFilters(n))):this.isValid(n)&&(this.cacheChanges(),this.changeFilters(this.preserveEvent))):this.changeFilters(n)},onToggleSaveFilter:function(t){var i=n(t.currentTarget).parents("[rql-role='save-filter-container']"),r=n(t.currentTarget).attr("rql-role")==="saveAsNew";i.find("[rql-role='overwrite-filter']")[r?"hide":"show"]();i.find("[rql-role='save-filter-name']")[r?"show":"hide"]()},clearTotalsAndRefresh:function(){this.clearTotals().refresh()},changeFilters:function(t){var r=n(t.currentTarget).attrs(),i=this.config.FilterSets[r.rql.filterindex];i&&i.Filters&&(this.config.Filters=i.Filters,this.config.FilterName=i.Title,this.updateMapProperties(),this.resetPageIndex(),this.updateBulkSelectionSnapshot(this.clearTotalsAndRefresh)||this.clearTotalsAndRefresh())},updateBulkSelectionSnapshot:function(t,i){var r=this.config,u=this,f=r.BulkSelectMode=="Snapshot"||r.BulkSelectMode=="ParentSnapshot"||i,e;return f&&(r.RaiseEvent?(e=n.extend(this.createRequest(),{Name:r.RaiseEvent}),this.post("raiseevent",e).done(function(){u.post("clearbulkselectsnapshot",{BulkSelectId:r.BulkSelectId}).done(function(){u.setAllSelectedCheck(!1)}).always(t)})):this.post("clearbulkselectsnapshot",{BulkSelectId:r.BulkSelectId}).done(function(){u.setAllSelectedCheck(!1)}).always(t)),f},switchToGridMode:function(){var n=this.config;this.mode&&this.mode.ModeProperties&&(this.mode.ModeProperties.CalendarType==="static"&&(n.DataPage.PageSize=0),this.mode=this.config.Modes.Grid,n.UsesEditableGrid=!1,this.saveSettings(!0).done(this.refresh))},onChangeMode:function(t){t&&(t.stopPropagation(),t.preventDefault());var i=this.config,u=n(t.currentTarget),r=u.attr("rql-mode"),f=u.attr("rql-customization");if(this.mode&&(this.mode.Type!=r||this.mode.CustomMode&&this.mode.StoreId!=f)){var e=r.indexOf("Map")!=-1||r=="GoogleChart",o=r.indexOf("Grid")!=-1,s=this.mode.Type.indexOf("Map")!=-1||this.mode.Type=="GoogleChart";if(i.HasMaps){if(this.mode=this.config.Modes[r],this.highlightMode(this.mode),s&&this.updateMapProperties(),!i.UsesMap&&e||o){i.DataPage.PageSize=0;i.UsesMap=i.UsesEditableGrid=!1;this.saveSettings(!0).done(this.refresh);return}}else{if(r.indexOf("Grid")!=-1){i.DataPage.PageSize=0;this.mode=this.config.Modes[r];i.UsesEditableGrid=!1;this.saveSettings(!0).done(this.refresh);return}if(f){this.changeCustomizationMode(f);return}if(r=="Plugin"){this.changeCustomizationMode(r);return}this.mode.$.hide();this.config.Modes[r].Active=!0;this.mode.Active=!1;(this.mode=this.config.Modes[r]).$.show()}}r=="Gallery"&&u.attr("rql-submode")&&(i.DataPage.IsHero=i.DataPage.IsThumbnails=i.DataPage.IsList=!1,i.GalleryType=u.attr("rql-submode"),i.DataPage["Is"+i.GalleryType]=!0,this.$.find('[rql-role="galleries"] > [rql-role^=Gallery]').hide(),this.$.find('[rql-role="Gallery_'+i.GalleryType+'"]').show());this.saveSettings()},changeCustomizationMode:function(n){var t=this.config;t.DataPage.PageSize=1e4;this.mode=this.config.Modes[n];t.UsesEditableGrid=!1;this.saveSettings(!0).done(this.refresh)},highlightMode:function(n){var t;if(this.config.IsCustomMode=!1,this.config.Modes&&!n.CustomMode)for(t=0;t<this.config.Modes.length;t++)this.config.Modes[t].Active=this.config.Modes[t].Title==n.Title;if(this.config.Customizations)for(t=0;t<this.config.Customizations.length;t++)this.config.Customizations[t].Active=this.config.Customizations[t].StoreId==n.StoreId,this.config.Customizations[t].Active&&(this.config.IsCustomMode=n.Title)},loadCustomizationData:function(n){return $rql.http.post("/rql/customization/load",{StoreId:n.StoreId,Id:n.ChartId,Type:n.Type,ComponentName:n.ComponentName,ComponentType:n.ComponentType})},openChart:function(n,t){var i=new Highcharts.Chart(t[0],n);this.renderQueueToolbarMenu()},openGnatt:function(n,t){var i=Highcharts.ganttChart(t[0],n);this.renderQueueToolbarMenu()},onOpenCustomizationEditor:function(t){var f=n(t.currentTarget),e=f.attr("rql-editor"),i=f.attr("rql-editor-action"),r=this.config,u,o;if(e==="HighchartEditor")u=this.getUrlParameter(r.Actions.HighchartEditor[0].Argument,"Category"),i==="New"?this.loadChartData(u):i==="Edit"?(o=this.buildChartEditorData(u,r.DataPage),this.editHighchart(o)):i==="Delete"&&this.deleteHighchart();else if(e==="GanttchartEditor")if(i==="New"){t.mapping='{"taskName": "", "id": "", "parent": "", "dependency": "", "start" : "", "end": "", "Title": "", "milestone":"", "currentDateIndicator":true, "completedAmount":"", "completedFill":""}';this.onMappColumns(t)}else if(i==="Edit"){if(this.mode&&this.mode.CustomMode){t.mapping=r.mapping;t.storeId=this.mode.StoreId;t.public=this.mode.Public;t.chartId=this.mode.ChartId;t.name=this.mode.Title;this.onMappColumns(t)}}else i==="Delete"&&this.mode&&this.mode.CustomMode&&this.deleteHighchart()},loadChartData:function(n){var t=this.createRequest(),i=this;t.PageIndex=0;t.PageSize=1e4;this.post("",t).done(function(t){i.onChartDataResponse(t,n)}).fail(this.error)},onChartDataResponse:function(n,t){var r;if(n.DataPage&&n.DataPage.Items&&n.DataPage.Items.length>0){var i=n.DataPage,u=i.Properties,f=i.Groups;this.prepareProperties(i,u,f);this.prepareDataPageValues(i);r=this.buildChartEditorData(t,i);this.instantionateChartEditor(r,r)}},deleteHighchart:function(){if(this.mode&&this.mode.CustomMode){var i=this.config,n=this,t=this.mode.Title;$rql.http.post("/rql/customization/delete",{StoreId:this.mode.StoreId}).done(function(){if(n.config.Modes[t]){for(var i=0;i<n.config.Modes.length;i++)n.config.Modes[i].CustomMode&&n.config.Modes[i].Title==t&&(n.config.Modes.splice(i,1),i--);n.config.Modes[t]=null}n.refresh()}).fail(n.error)}},editHighchart:function(n){var t=this;this.mode&&this.mode.CustomMode&&this.loadCustomizationData(this.mode).done(function(i){if(i.Data){var r=JSON.parse(i.Data),u=t.populateChartEditorData(r);t.instantionateChartEditor(u,n,t.mode.StoreId,t.mode.Public,t.mode.ChartId)}}).fail(t.error)},getUrlParameter:function(n,t){var f,r,e,u;if(n)for(f=n.indexOf("?"),r=n,f>-1&&(r=r.substring(f+1)),e=r.split("&"),i=0;i<e.length;i++)if(u=e[i].split("="),u[0]===t)return u[1]===undefined?!0:u[1];return null},cleanChartEditorData:function(n){var t;if(n){if(n.series)for(t=0;t<n.series.length;t++)n.series[t].data=[];if(n.xAxis)if(Array.isArray(n.xAxis))for(t=0;t<n.xAxis.length;t++)n.xAxis[t].categories=[];else n.xAxis.categories=[]}return n},populateChartEditorData:function(n){var u=this.config,s,e,i,t;if(n&&n.series&&u.DataPage){var o=[],f=[],r=u.DataPage.Items[0].Values;for(i=0;i<n.series.length;i++)for(s=n.series[i].name,t=0;t<r.length;t++)if(s==r[t].Property.Title){o.push(t);break}if(e=-1,n.categoryColumn)for(t=0;t<r.length;t++)if(r[t].Property.Name==n.categoryColumn){e=t;break}for(i=0;i<u.DataPage.Items.length;i++)for(r=u.DataPage.Items[i].Values,e!==-1&&f.push(r[e].Text),t=0;t<o.length;t++)n.series[t].data.push(r[o[t]].Value);f.length>0&&(Array.isArray(n.xAxis)?n.xAxis[0].categories=f:n.xAxis={categories:f})}return n},populateGanttChartData:function(n){var e,i,t,r,l,a,v,s,h,k,y,c;if(!n||!(n.dependency&&n.parent&&n.taskName&&n.id&&n.start&&n.end))return null;for(e=this.config,t=e.DataPage.Items[0].Values,i=0;i<t.length;i++)t[i].Property.Name==n.dependency?n.dependency=i:t[i].Property.Name==n.taskName?n.taskName=i:t[i].Property.Name==n.parent?n.parent=i:t[i].Property.Name==n.id?n.id=i:t[i].Property.Name==n.start?n.start=i:t[i].Property.Name==n.end?n.end=i:n.milestone&&t[i].Property.Name==n.milestone?n.milestone=i:n.completedAmount&&t[i].Property.Name==n.completedAmount?n.completedAmount=i:n.completedFill&&t[i].Property.Name==n.completedFill?n.completedFill=i:n.minDateColumn&&t[i].Property.Name==n.minDateColumn?n.minDateColumn=i:n.maxDateColumn&&t[i].Property.Name==n.maxDateColumn&&(n.maxDateColumn=i);var o={data:[]},p=[],u=n.minDate?Date.parse(n.minDate):null,f=n.maxDate?Date.parse(n.maxDate):null,w=[],b=[];for(i=0;i<e.DataPage.Items.length;i++)if(t=e.DataPage.Items[i].Values,r={},n.minDateColumn&&!u&&(u=Date.parse(t[n.minDateColumn].Text)),n.maxDateColumn&&!f&&(f=Date.parse(t[n.maxDateColumn].Text)),t[n.start].Text&&(t[n.end].Text||n.milestone&&t[n.milestone].Text=="Yes")){if(t[n.parent].Text||t[n.dependency].Text||(o={name:t[n.taskName].Text,data:[]},p.push(o)),r.taskName=t[n.taskName].Text,r.id=t[n.id].Text,t[n.parent].Text&&(r.parent=t[n.parent].Text),t[n.start].Text&&(l=new Date(t[n.start].Text),l.setUTCHours(0,0,0,0),r.start=l.getTime(),w.push(r.start)),t[n.end].Text&&(a=new Date(t[n.end].Text),a.setUTCHours(0,0,0,0),r.end=a.getTime(),b.push(r.end)),n.milestone&&t[n.milestone].Text=="Yes"&&(r.milestone=!0),n.completedAmount&&t[n.completedAmount].Text&&(v=Number(t[n.completedAmount].Text),r.completed={amount:isNaN(v)?0:v}),n.completedFill&&t[n.completedFill].Text&&(r.completed?r.completed.fill=t[n.completedFill].Text:r.completed={fill:t[n.completedFill].Text}),t[n.dependency].Text&&(r.dependency=t[n.dependency].Text,r.dependency.indexOf(",")!=-1))for(s=r.dependency.splitAndTrim(","),r.dependency=s[0],h=1;h<s.length;h++)k=s[h],y=JSON.parse(JSON.stringify(r)),y.dependency=k,o.data.push(y);o.data.push(r)}return c={title:{text:n.Title?n.Title:this.config.Title},xAxis:{currentDateIndicator:n.currentDateIndicator?!0:!1},series:p},u||(u=new Date(Math.min.apply(null,w)),u.setUTCHours(0,0,0,0),u=u.getTime()),f||(f=new Date(Math.max.apply(null,b)),f.setUTCHours(0,0,0,0),f=f.getTime()),u&&f&&(c.xAxis.min=u,c.xAxis.max=f),c},buildChartEditorData:function(n,t){var e=[],o=[],r,u,f,i;if(t.Items){for(r=t.Items[0].Values,u=0,i=0;i<r.length;i++)r[i].Property.IsHidden||r[i].Property.Type!="Integer"&&r[i].Property.Type!="Number"||e.push({index:u++,name:r[i].Property.Title,data:[]});for(f=0;f<t.Items.length;f++)for(r=t.Items[f].Values,u=0,i=0;i<r.length;i++)r[i].Property.Name==n?o.push(r[i].Text):r[i].Property.IsHidden||r[i].Property.Type!="Integer"&&r[i].Property.Type!="Number"||e[u++].data.push(r[i].Value)}return{series:e,xAxis:{categories:o},categoryColumn:n}},instantionateChartEditor:function(n,t,i,r,u){var f=this;$rql.api.require("highchartsEditor",function(){f.openChartEditor(n,t,i,r,u)})&&this.openChartEditor(n,t,i,r,u)},getUniqueChartName:function(n){var u=0,f=this.config,e=n.length+1,t,r,i;if(f.Customizations)for(t=0;t<f.Customizations.length;t++)r=f.Customizations[t].Name,r.startsWith(n+" ")&&(i=parseInt(r.substring(e)),!isNaN(i)&&i>u&&(u=i));return n+" "+ ++u},openChartEditor:function(n,t,i,r,u){var f=this,e=this.config,o=highed.ModalEditor(this.$.find('[rql-action="saveEditPage"]')[0],{allowDone:!0,allowCancel:!0,features:"welcome templates customize done",importer:{chartTemplate:n,queueData:t,editMode:i,publicChart:r,chartId:u}},function(t,r){var u,o;t.title&&t.title.text?u=t.title.text:(u=f.getUniqueChartName("Chart"),t.title={text:u});t.categoryColumn=n.categoryColumn;o=f.cleanChartEditorData(t);$rql.http.post("/rql/customization/save",{StoreId:i,Id:r.ChartId,Private:!$rql.isNull(r.Public,!1),ComponentType:"Queue",ComponentName:e.AppName+"."+e.ViewName,Type:"Highchart",Name:u,Data:JSON.stringify(o)}).done(function(n){f.config.Modes[n.StoreId]||f.config.Modes.add(f.config.Modes[n.StoreId]={Type:"Highchart",StoreId:n.StoreId,CustomMode:!0});f.changeCustomizationMode(n.StoreId)}).fail(f.error)});o.show()},isValid:function(n){var i=this.config,f=!0,t,r,u,e;if(this.enable(),this.$.find(".queue-error").removeClass("queue-error"),i.DataPage&&i.DataPage.Items&&n&&n.InvalidElements){for(t=0;t<i.DataPage.Items.length;t++)if(r=n.InvalidElements[t],i.DataPage.Items[t].Values&&r)for(u=0;u<r.length;u++)e=r[u],this.$.find($f("[rql-index='{1}'] [rql-id='{0}'][rql-editable]",e,t)).closest("div.wrapper").addClass("queue-error").end().find('div[rql-role="e-placeholder"]').addClass("queue-error");this.error(null,$rql.isNull(this.mode.ModeProperties.validationerrormessage,$rql.i18n.strings.ValidationError));f=!1}return f},onChangePage:function(n){var i=$rql.isEvent(n),t;i&&(n.stopPropagation(),n.preventDefault());this.config.UsesEditableGrid?i?(n.ValidateOnly=!0,t=this.getRequest(n),t.HasUpdates?(t.ValidateOnly=!0,this.preserveEvent=n,this.disable().post("EditPage",t).done(this.onChangePage).fail(this.error)):(this.cacheChanges(),this.changePage(n))):this.isValid(n)&&(this.cacheChanges(),this.changePage(this.preserveEvent)):this.changePage(n)},changePage:function(t){var u=n(t.currentTarget),i=this.config.DataPage.PageIndex,f=u.attrs(),r=$rql.isNull(f.rql.data,u.val());r=="+"?i++:r=="++"?i=this.config.DataPage.MaxPage:r=="-"?i--:i=r=="--"?0:parseInt(r)-1;i!=NaN&&i!=this.config.DataPage.PageIndex&&i>=0&&(i<=this.config.DataPage.MaxPage||this.config.CountUnknown)?(this.config.DataPage.PageIndex=i,this.refresh()):u.val(this.config.DataPage.PageIndex+1)},onChangePageSize:function(n){var i,t;$rql.isEvent(n)&&(n.stopPropagation(),n.preventDefault());this.config.UsesEditableGrid?(i=$rql.isEvent(n),i?(n.ValidateOnly=!0,t=this.getRequest(n),t.HasUpdates?(t.ValidateOnly=!0,this.preserveEvent=n,this.disable().post("EditPage",t).done(this.onChangePageSize).fail(this.error)):(this.cacheChanges(),this.changePageSize(n))):this.isValid(n)&&(this.cacheChanges(),this.changePageSize(this.preserveEvent))):this.changePageSize(n)},changePageSize:function(t){var i=parseInt(n(t.currentTarget).attrs().rql.data);i!=NaN&&i!=this.config.DataPage.PageSize&&(this.config.DataPage.PageIndex=0,this.config.DataPage.PageSize=i,this.saveSettings(!0).done(this.refresh))},onChangeSpacing:function(t){var i=this.config,r=n(t.currentTarget).attrs().rql.data,u;(i.Spacing||r)&&i.Spacing!=r&&(u=n("div[rql-role='Grid'] table:first",this.$),i.Spacing&&u.removeClass(i.Spacing),r&&u.addClass(r),i.Spacing=r,this.saveSettings())},onChangeNotification:function(t){var i=this.config,r=n(t.currentTarget).attrs().rql.argument,u;r&&r.match(/Email/)&&(i.EmailNotification=r=="enableEmail",u=i.EmailNotification?$rql.i18n.strings.DisableEmailNotification:$rql.i18n.strings.EnableEmailNotification,this.$.find("a[rql-action='changeNotification']").attr({"rql-argument":i.EmailNotification?"disableEmail":"enableEmail","rql-tooltip":"bottom: "+u,"data-original-title":u}).toggleClass("txt-coral3 muted"),this.post("notificationSettings",{AppName:i.AppName,ViewName:i.ViewName,Email:i.EmailNotification}))},onClearAllFilters:function(n){var t=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId));t.is(":visible")&&(this.showFiltersOnRefresh=!0);this.onClearFilters(n)},onClearFilters:function(t){var r,i;this.config.UsesEditableGrid?(r=$rql.isEvent(t),r?(t.ValidateOnly=!0,i=this.getRequest(t),i.HasUpdates?(i.ValidateOnly=!0,this.preserveEvent=t,this.disable().post("EditPage",i).done(this.onClearFilters).fail(this.error)):(this.cacheChanges(),this.clearFilters(t))):this.isValid(t)&&(this.cacheChanges(),this.clearFilters(this.preserveEvent))):this.clearFilters(t);this.config.isFabric&&n(t.currentTarget).parents("[rql-role='column-filter-modal']").modal("toggle")},clearFilters:function(t){var i,r;t.stopPropagation();t.preventDefault();i=this.config;i.Search.Applied&&(i.Search.Applied=!1,i.Search.Text="",this.$.find('[rql-id="search"]').val(""),this.removeViewSetting(this.getViewSettingName("QuickSearch")));r=n(t.currentTarget).attrs("rql-property");r.rql.property?i.Filters.remove(function(n){return n[0]==r.rql.property}):(i.Filters=[],i.FilterName&&delete i.FilterName);this.resetPageIndex();this.updateBulkSelectionSnapshot(this.clearTotalsAndRefresh)||this.clearTotalsAndRefresh()},onClearFilterValues:function(){var t=this.$.find($f("[rql-role='edit-area'][grid-id='{0}']",this.config.gridId)),i,r;t.find("input").val("").typeahead("hide");t.find("select[name=MultiSelect] > option").remove();i=this.config;r=this.$.find($f("[rql-role=filters][grid-id='{0}']",this.config.gridId)).find("[name=MultiSelect]");r.each(function(t,r){var f=n(r).attrs().rql.property,u=i.FilterSets.WorkingSet.Filters.where(function(n){return n[0]===f});u&&u.length>0&&(u[0].splice(2,u[0].length-2,""),u[0].Values=[])})},onCloseFilters:function(){var n=this;this.$.find($f("[rql-role=filters][grid-id='{0}']",this.config.gridId)).removeClass("edit-filters-container").slideUp("fast",function(){n.saveSettings(!0)});this.config.isFabric&&(this.$.find("[rql-role='toggle-filter-edit'] [rql-action='editFilters']").removeClass("btn-primary").addClass("btn-flat"),this.$.find("[rql-role='toggle-filter-edit'] [data-toggle='dropdown']").removeClass("btn-primary").addClass("btn-flat"))},onRemoveFilter:function(t){t&&(t.stopPropagation(),t.preventDefault());var i=this.config,r=n(t.currentTarget).attr("rql-property"),u=i.Filters.findIndexBy(function(n){return n[0]===r});i.Filters.removeAt(u);this.resetPageIndex();this.updateBulkSelectionSnapshot(this.clearTotalsAndRefresh)||this.clearTotalsAndRefresh()},onDispose:function(){n(window).off("beforeunload."+this.config.Id,this.checkUnsavedChanges);this.$.off("multiselectDtPickerUpdated",this.onMultiSelectDtPickerUpdated);this.$.off("dtPickerCancelled",this.onDtPickerCancelled);this.$.off("focusin focusout",this.onQuickSearchFocus);$rql.api.uiVersion>2&&n(document).off("scroll",this.onScrolledFromTop);this.$.remove()},onEditFilters:function(t){t.stopPropagation();t.preventDefault();this.closeDropDown();var i=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId));n(t.currentTarget).attrs("rql-role")&&n(t.currentTarget).attrs("rql-role").rql.role==="saveFilter"&&(this.config.ShowSave=!0);this.config.isFabric&&(this.config.FilterReset=!0);n(t.currentTarget).attrs("rql-close").rql.close&&i.is(":visible")?this.onCloseFilters():i.find($f('[rql-role="edit-filters"][grid-id="{0}"]',this.config.gridId)).length===0?this.editFilters(!1,n(t.currentTarget).attrs("rql-property").rql.property):this.editFilters(!0,n(t.currentTarget).attrs("rql-property").rql.property)},onEditFilter:function(t){var i=n(t.currentTarget).attr("rql-property");i&&(this.config.isFabric&&delete this.config.FilterReset,this.editFilters(!0,null,null,i))},onShowFilterSave:function(){var n=this.$.find($f("#{0}_SaveFilterDialog",this.config.gridId));$rql.ui.showModal(n)},onExportData:function(t){var f=this.config,u=n(t.currentTarget).attrs().rql,r=this,i;u&&u.data&&(i=this.createRequest(),i.Method=u.data,i.CheckLimit=!0,i.DrillDownContext=[JSON.stringify(i.DrillDownContext)],i.PageFilters=[JSON.stringify(i.PageFilters)],i.RequestJson=JSON.stringify(i),i.Argument=u.argument,i.RequestJson=JSON.stringify(i),r.info($rql.i18n.strings.ExportFileDownloading),r.exportStarted(),n.post(f.serviceUrl+"export",i,function(t){var u=JSON.parse(t),e;u.ExceededLimit===!0?r.exportCompleted(!1,$f($rql.i18n.strings.ExportLimitExceeded,u.ExportLimit)):u.DuplicateRequest===!0?u.ExportUrl!=r.PendingExportUrl&&n.fileDownload(u.ExportUrl,{successCallback:function(){r.exportCompleted(!0)},failCallback:function(){r.exportCompleted(!1)}}):i.Method==="ExportToCsv"||i.Method==="ExportToXlsx"||i.Method==="ExportToRss"?(r.PendingExportUrl=u.ExportUrl,n.fileDownload(u.ExportUrl,{successCallback:function(){r.exportCompleted(!0)},failCallback:function(){r.exportCompleted(!1)}})):(i.CheckLimit=!1,e=n("<form method='POST'><input type='hidden' name='r'><input type='hidden' name='__RequestVerificationToken'><\/form>").appendTo(r.$).attr({action:f.serviceUrl+"export",target:"_blank"}).find("input[name='r']").val(JSON.stringify(i)).end().find("input[name='__RequestVerificationToken']").val($rql.api.antiforgeryXsrfToken).end(),e[0].submit(),e.remove(),r.exportCompleted(!0))}).fail(function(){r.exportCompleted(!1)}))},toggleExportingIndicator:function(n){this.$.find("div[rql-role='exporting-indicator']").toggle(n)},exportStarted:function(){var n,t,i;this.toggleExportingIndicator(!0);n=this.getViewId();n&&(t=$rql.ui.controls.queue.pendingExports||($rql.ui.controls.queue.pendingExports=[]),i=t.indexOf(n),i===-1&&t.push(n))},exportCompleted:function(n,t){var r,i,u;this.PendingExportUrl=null;this.toggleExportingIndicator(!1);n?this.success($rql.i18n.strings.ExportFileDownloaded):this.error(t?t:$rql.i18n.strings.RequestError);r=this.getViewId();i=$rql.ui.controls.queue.pendingExports;r&&i&&(u=i.indexOf(r),u!==-1&&i.splice(u,1))},isExportPending:function(){var n=this.getViewId(),t=$rql.ui.controls.queue.pendingExports;return n&&t&&t.indexOf(n)!==-1},onFilter:function(t){var e=n(t.currentTarget),i=e.attrs("rql-property"),r,u,f;i.rql.property&&(r=this.config.DataPage.Properties[i.rql.property],r&&(this.config.Filters.remove(function(n){return n[0]==i.rql.property}),i.rql.index>-1&&(u=[i.rql.property,$rql.isNull(i.rql.operator,"=")],f=r.Filters[i.rql.index].Value,f!==undefined&&(u[2]=f),this.config.Filters.add(u))));this.resetPageIndex();this.updateBulkSelectionSnapshot(this.clearTotalsAndRefresh)||this.clearTotalsAndRefresh();this.config.isFabric&&n(t.currentTarget).parents("[rql-role='column-filter-modal']").modal("toggle");t.stopPropagation()},applySideFilter:function(n){var h=this,s=this.config,r=this.config.Filters,f,t,o,i,u,e;if(n.length>0)for(f=0;f<n.length;f++)if(t=n[f],o=s.DataPage.Properties[t.Name],o&&(i=r.first(function(n){return n[0]===t.Name}),!i&&t.Values.length>0&&(r.push([t.Name,o.SideFilterOperator||"="]),i=r[r.length-1]),i)){for(u=0;u<t.Values.length;u++)i.contains(t.Values[u])||i.push(t.Values[u]);for(e=0;e<t.RemovedValues.length;e++)i.remove(function(n){return n===t.RemovedValues[e]});i.length===2&&r.remove(function(n){return n[0]===i[0]});i.isSideFilter=!0}this.resetPageIndex();this.clearTotals().refresh()},initNestedQueues:function(){if(this.config.NestedQueuesExpandAllOnStart)this.onOpenAllQueuesOnStart(this.config.NestedQueuesTopId);this.config.NestedQueuesOpenAll?this.onOpenAllCallBack():(this.config.NestedQueuesId&&this.onNestedQueuesCallBack(),this.config.NestedQueuesStates&&this.restoreNestedQueuesState())},onLoad:function(t){var k,p,d,c,ut,h,g,o,at,a,f,e,bt,ot,v,kt,nt,u,dt,st,tt,ht,b,ct,w,y,lt,it,rt,gt,ni;try{var i=this.config,ti=i.Form,b=this,ii=this.$.find("[rql-role='loader']").length===1&&!this.showFiltersOnRefresh;if(i.Expression&&!i.Id&&(i.Id=t.AppName+"."+t.ViewName),i.IsEmbed&&t&&t.CustomCss&&this.addCustomCssStyle(i.Id||i.EmbedUId,t.CustomCss),t&&t.AccessToken&&(i.AccessToken=t.AccessToken),t&&t.ExpressionSetId&&(i.SetId=t.ExpressionSetId,i.EmbedUId&&(k=ti.$.find($f("[rql-embed-uid='{0}']",i.EmbedUId)),k)))for(i.EmbedUId=null,p=n(k),p.attr("rql-embed",i.Id),p.attr("rql-set-id",i.SetId),p.removeAttr("rql-embed-uid"),d=0;d<t.SetDataResponse.ViewIds.length;d++)h=t.SetDataResponse.ViewIds[d],i.Id!=h&&(c=n(k).clone(),c.attr("rql-embed",h),c.attr("rql-skipWidgetizing","true"),c.attr("style","display: none;"),c.removeAttr("id"),c.attr("rql-class",i.ContainerUiStyle),c.insertAfter(p));if(i.skipCompletionCheck=!1,i.ScrollVPosition=n(window).scrollTop(),!i.Mode&&i.QueueSet&&(i.Mode="Grid"),i.Modes&&i.Modes[i.Mode]&&i.Modes[i.Mode].$&&(ut=i.Modes[i.Mode].$.find('[rql-role="queue-main-container"]'),ut.length>0&&(i.ScrollHPosition=ut.scrollLeft())),$log.debug($f("Loading queue {0}",i.Id)),i.Form&&i.Form.SetQueueOnLoadToBeHidden&&(i.Form.SetQueueOnLoadToBeHidden.$.hide(),i.Form.SetQueueOnLoadToBeHidden=null),t&&t.HelpId&&$rql.api.updateHelpSuggestions(t.HelpId),t&&t.Hidden){n($f('<!-- <span id="{0}">placeholder<\/span>  -->',i.Id)).insertBefore(this.$);i.embedParent=this.$.parent();this.$.hide().appendTo(n("div[id='rql']"));return}if(i.embedParent&&(h=i.Id,n(i.embedParent).contents().each(function(t,i){i.nodeType==8&&n(i.nodeValue).attr("id")==h&&n(i).replaceWith(i.nodeValue)}),g=n(i.embedParent).find($f("span[id='{0}']",h)),g.length>0&&(n($f("div[rql-embed='{0}']",h)).insertBefore(g).show(),g.remove())),t&&(this.loadView(t),this.saveNavigateBackState()),i.UsesTemplates&&!$rql.api.require([i.isFabric?"fullcalendar":"calendar","charts","fileDownload"],this.onLoad,i.Id))return;if(o=navigator,at=o.appVersion&&o.appVersion.indexOf("Windows")!==-1||o.userAgent&&o.userAgent.indexOf("Windows")!==-1||o.platform&&o.platform.indexOf("Win")!==-1||o.oscpu&&o.oscpu.indexOf("Win")!==-1,!at&&(a=this.config.Actions.Export,a))for(u=a.length-1;u>=0;u--)a[u]&&a[u].Type==="ExportToSpreadsheet"&&a.splice(u,1);if(this.mode.Type=="Plugin"&&(i.CollapsedState="show",i.HideToggleCollapse=!0),(i.UiStyle&&i.UiStyle.indexOf("CleanQueue")!==-1||i.Modes&&i.Modes.hasOwnProperty("Feed"))&&(i.CleanQueue=!0),i.PartialRendering||this.$.attr("class",i.UiStyle).html($rql.ui.templates("queue").render(i,i.partials)).addClass(i.ContainerUiStyle).show(),this.mode.Type=="Highchart"){this.mode.$=this.$.find($f("[rql-role='{0}']",this.mode.Type));this.mode.$.html("");this.mode.$.show();this.enable();f=this;this.loadCustomizationData(this.mode).done(function(n){if(n.Data){var i=JSON.parse(n.Data),t=f.populateChartEditorData(i);$rql.api.require("charts",function(){f.openChart(t,f.mode.$)})&&f.openChart(t,f.mode.$)}}).fail(f.error);this.updateTimestamp().raise("loaded",this);return}if(this.mode.Type=="Ganttchart"){this.mode.$=this.$.find($f("[rql-role='{0}']",this.mode.Type));this.mode.$.html("");this.mode.$.show();this.enable();f=this;this.loadCustomizationData(this.mode).done(function(n){var i,t;n.Data&&(i=JSON.parse(n.Data),f.config.mapping=n.Data,t=f.populateGanttChartData(i),$rql.api.require("ganttChart",function(){f.openGnatt(t,f.mode.$)})&&f.openGnatt(t,f.mode.$))}).fail(f.error);return}var ft=i.Modes,vt=i.HasEditableGrid||i.HasMaps,et=!1;for(u=0;u<ft.length;u++)try{if(ft[u].CustomMode)continue;var l,r=ft[u],yt=r.Type.indexOf("Map")!=-1,ri=r.Type=="GoogleChart",pt=r.Type.indexOf("Grid")!=-1;if(vt&&et)break;if(i.PartialRendering)r.$=this.$,r.$.show(),et=!0;else if((r.$=this.$.find($f("[rql-role='{0}']",r.Type)))==this.mode.$){if(r.$.show(),et=!0,(yt||ri)&&i.UsesMap){l=$rql.ui.templates("map-frame").render(n.extend(i.TemplateData,r.ModeProperties,{Type:yt?"map":"chart",ApiKey:$rql.api.googleJavaScriptApiKey}));r.$.html(l);continue}}else if(vt)continue;else r.$.hide();if(l=r.Template?$rql.ui.render(r.Template,i.TemplateData):$rql.ui.templates(i.PartialRendering?"queue-grid-partial":pt?"queue-grid":"queue-"+r.Type.toLowerCase()).render(i,i.partials),n.browser.msie&&n.browser.majorVersion==9&&(l=l.replace(s,"><")),r.Type!="Plugin"?r.$.html(l):(r.$.addClass("needsclick"),r.ModeProperties&&r.ModeProperties.Render&&r.Template?setTimeout(n.proxy(function(){var t=this;this.$.html(this.content).find("[rql-renderer]").each(function(i,r){var f=n(r).attr("rql-renderer"),u=window[f];n.isFunction(u)&&u(r,t.data,t.queue)})},{$:r.$,content:r.Template,data:i.TemplateData,queue:this}),0):setTimeout(n.proxy(function(){this.$.html("");this.$.html(this.content)},{$:r.$,content:l,data:i.TemplateData}),0)),pt&&(n("span.long-text-container > span",r.$).each(function(){var t=n(this);t.height()<this.scrollHeight-1&&t.parent().append("<a href='' class='more'><i class='icon-chevron-down'><\/i><\/a><a href='' class='less'><i class='icon-chevron-up'><\/i><\/a>")}),n("span.long-text-container a",r.$).click(function(t){n(this).closest("span.long-text-container").toggleClass("trimmed");t.preventDefault()})),r.Type=="Template"&&n("div.template-item a.more-less",r.$).click(function(t){n(this).closest("div.template-item").toggleClass("abstract");t.preventDefault()}),r.Type==="Gallery")if(i.isFabric)new $rql.ui.controls.carousel(r.$,i.GalleryData,i.Options).on({shownGallery:this.onShownGallery});else new $rql.ui.controls.gallery(r.$,i.GalleryData).on({shownGallery:this.onShownGallery})}catch(wt){$log.error($f("Error rendering mode {0} for view {1}: {2}",r.Type,i.Id,wt))}if(i.DataPage.AllowBulkSelect&&(this.setAllSelectedCheck(i.DataPage.AllSelected),this.setIndeterminateCheck()),e=i.DataPage,e.PageIndex===undefined&&(e.PageIndex=0),bt=e.FeedItems?e.FeedItems.length:e.Items.length,e.TotalItems&&(i.Count=e.TotalItems),this.updateCountUnknown(),i.Count==undefined&&(e.PageIndex>0||bt>=e.PageSize||e.AggregatedProperties&&!i.Totals))this.refreshCount();else this.onLoadCount({Count:i.Count!=null?i.Count:e.Items.length,Totals:i.Totals});if(this.widgetize().attachEditableProperties().enable(),i.UsesEditableGrid&&(this.updates=this.getUpdates()),i.UsesEditableGrid&&this.rowsCache&&this.rowsCache.length>0){for(ot=!1,v=0;v<this.rowsCache.length;v++)for(kt=this.rowsCache[v].key,nt=this.rowsCache[v].cache,u=0;u<this.config.DataPage.Items.length;u++)dt=this.getKeyByIndex(u),dt===kt&&(nt.attr("id",this.config.EditableGridRandomId).attr("rql-index",u),st=u,nt.find($f("[rql-row]")).each(function(){($me=n(this)).attr("rql-row")!=st&&$me.attr("rql-row",st)}),this.$.find($f("tr[id='{0}'][rql-index='{1}']",this.config.EditableGridRandomId,u)).replaceWith(nt),this.rowsCache[v].key=null,ot=!0);ot&&(this.rowsCache=n.grep(this.rowsCache,function(n){return n.key!=null}))}if(tt=this.mode.ModeProperties.buttonargument&&this.mode.ModeProperties.buttonargument.toLowerCase()=="reload"?this.getViewSetting("PendingMessage"):null,this.$message=this.$.find("[rql-role='user-message']"),i.NotificationMessage?(this.success(i.NotificationMessage),i.NotificationMessage=null):i.ErrorMessage?(this.error(i.ErrorMessage),i.ErrorMessage=null):tt&&(this.success(tt),this.removeViewSetting("PendingMessage"),tt=null),i.SelectedRow&&(ht=this.$.find($f("[rql-"+i.SelectedRowAttr+"='{0}']",i.SelectedRow)),ht.length>0&&n(ht).addClass(i.SelectedRowClass)),this.editorInPlace&&this.editorInPlace.nextKey&&(this.editorInPlace.nextKey=="new"?this.newThenEdit():this.editInPlaceByKey(this.editorInPlace.nextKey)),this.editorsCollection&&(this.editorsCollection=null),this.showFiltersOnRefresh&&(this.editFilters(!1,null,ii),this.showFiltersOnRefresh=!1),this.renderQueueToolbarMenu(),this.isExportPending()&&this.toggleExportingIndicator(!0),this.updateTimestamp().raise("loaded",this).rendered=!0,i.isFabric){if(this.config.CollapsedState&&this.config.CollapsedState!==""?this.toggleCollapse(this.$,this.config.CollapsedState):this.onLastQueueRendered(),this.mode&&this.mode.Type.contains("Grid")&&(b=this,this.handleHorizontalScroll(),(!i.DisableRowDrilldown||i.IsLookup)&&!i.UsesEditableGrid&&(ct=$rql.isNull(this.mode.$,this.$),ct))){w=[];y=ct.find("table:first-child tbody tr[rql-record][rql-navigate]");y.on("mousedown",function(t){w=[t.pageX,t.pageY];y.on("mousemove",function r(n){w=[n.pageX,n.pageY];y.off("mousemove",r)});y.on("mouseup",function r(t){var f,e,u,o,s;if(!(t.button>0)&&!n(t.currentTarget).hasClass("js-loading")&&[t.pageX,t.pageY].equals(w)){if(n(t.target).parents("a, button, label[for]").length>0||n(t.target).is("a, button, input, i, icon, select, span[class^=select], span[rql-role]")||n(t.target).attr("for"))return;if(f=n(t.target).closest("tr[rql-record]"),f.length>0){if(i.AllowBulkSelect){if(e=f.find("input[name='selectItem']"),e.length>0){e.prop("checked",!e.prop("checked"));t.currentTarget=e[0];y.off("mouseup",r);b.onSelectItem(t)}}else if(u=f.attr("rql-record"),u!==""){if(i.IsLookup||i.onItemSelected){t.currentTarget=f[0];i.onItemSelected(t,u.splitAndTrim("/").last())}else if(i.NavigateTarget=="NewWindow")o=$rql.http.uri().href,u=o.substring(0,o.indexOf("/rql/"))+u,s=window.open(u,"_blank"),s.focus();else $rql.api.onNavigate(t);w=[]}t.preventDefault();t.stopPropagation()}}})})}t&&(t.SideFilter&&(t.DataPage.PageIndex>0&&this.SideFilterControl?this.SideFilterControl.refresh():(lt={id:this.config.Id,filters:t.DataPage.QueueSideFilters,existingFilters:this.config.Filters,refreshFilterSummary:this.hideSideFilterSummary},this.SideFilterControl?this.SideFilterControl.refresh(lt).show():(it=this.$.closest("[rql-role='left-sidenav-content-container']"),this.config.IsEmbed&&it.length===0&&(rt=this.$.closest(".page-content"),rt.append($rql.ui.templates("queue-grid-items").render({SideFilterContainer:!0})),gt=rt.find(".left-nav-layout-content-container"),it=rt.find('[rql-role="app-side-nav-container"]'),this.$.appendTo(gt)),this.SideFilterControl=new $rql.ui.controls.sidefilter(it,lt).show(),this.SideFilterControl.onFilter=function(n){b.applySideFilter(n)}))),this.config.SheetButtons&&this.updateSheetButtons(this.config.SheetButtons,t.NameValueArguments,{StoreId:this.config.StoreId,AppName:this.config.AppName}))}if(i.isFabric||this.adjustRowHeight(),i.onQueueLoaded){ni=$rql.isNull(this.mode.$,this.$);i.onQueueLoaded(ni)}window.setTimeout(function(){b.initNestedQueues()},0)}catch(wt){this.error(wt)}},onLoadCount:function(t){var r=this.config,u,s,h,y,f,e,c,a,l,o,p,w,b,v;if(t){if(u=r.DataPage,r.CountUnknown=r.CountUnknown||t.Count===undefined,s=r.Count=r.CountUnknown?u.PageIndex*u.PageSize+u.Items.length:t.Count,u.MaxPage=Math.ceil(s/u.PageSize)-1,h=Math.min(u.PageIndex,u.MaxPage),y=h>=0&&h<u.PageIndex,h<u.PageIndex&&(u.PageIndex=h),this.updatePagerRecords(),this.updatePagerNavButtons(),t.Totals&&u.AggregatedProperties){for(r.Totals=t.Totals,f=[],e=0,u.AllowBulkSelect&&(f[e++]={}),r.UsesNestedQueues&&(f[e++]={}),u.HasRowActions&&(f[e++]={}),i=0;i<u.Properties.length;i++)c=u.Properties[i],c.IsHidden||(a=t.Totals[c.Name],f[e]=a===undefined?{}:{aggregateFunction:u.AggregatedProperties[c.Name],value:$rql.api.dataTypes.Number.format(a)},this.isMobile()&&(f[e].propertyTitle=c.Title),e++);l=$rql.ui.templates("queue-totals").render({Totals:f});this.isMobile()?this.$.find("div[rql-role$='Grid']").find(".queue").before(l):r.UsesNestedQueues&&!r.NestedQueuesTopId?(o=this.$.find($f("table[id='{0}']",$rql.coalesce(r.NestedQueuesTopId,r.NestedQueuesId))),n(l).children().insertBefore(this.$.find("[rql-role='pager']").closest("tr"))):(o=this.$.find("div[rql-role$='Grid']  table:first"),o.length>0&&o[0].tFoot&&o[0].deleteTFoot(),r.FixedHeight?(p=n(l).find("tr"),o.find("tbody").append(p)):o.append(l))}r.UsesNestedQueues&&r.NestedQueuePagerHiddenLimit&&s<r.NestedQueuePagerHiddenLimit?this.$.find($f("table[id='{0}']",$rql.coalesce(r.NestedQueuesTopId,r.NestedQueuesId))).find("[rql-role='pager']").closest("tr").remove():r.isFabric?(w=r.UsesNestedQueues&&r.NestedQueueTopControl!==this?this.$.find("[rql-role='pager'] > [rql-role='pager-content']"):this.$.find("[rql-role='pager']"),w.html($rql.ui.templates("queue-grid-pager").render(this.config))):this.$.find("[rql-role='pager']").html($rql.ui.templates("queue-grid-pager").render(this.config));$rql.api.disableQueueExcelExportCellsLimit>0&&s>0&&(b=u.Properties.length*s,b>$rql.api.disableQueueExcelExportCellsLimit&&(v=this.$.find("a[rql-data='ExportToXlsx']"),v&&v.remove()));y&&this.refresh()}},updatePagerRecords:function(){var t=this.config,n=t.DataPage;n.Starts=n.PageIndex*n.PageSize+1;n.Ends=n.PageIndex*n.PageSize+n.Items.length;n.Ends-n.Starts<9&&(n.ShowRecordBottomOnly=!0);t.Count>0&&(n.Summary=$f(t.CountUnknown?$rql.i18n.strings.DataPagePartialSummaryFormat:$rql.i18n.strings.DataPageSummaryFormat,n.Starts,n.Ends,t.Count))},updatePagerNavButtons:function(){var t=this.config,n=t.DataPage,u=t.MaxAvailablePages[$rql.api.uiMode]-1,f=u/2,r=n.PageIndex>f?Math.min(n.PageIndex-f,Math.max(n.MaxPage-u,0)):0,e=n.PageIndex-r>f?n.MaxPage:Math.min(r+u,n.MaxPage),i;if(n.Pages=[],n.CanPage=e>0||t.CountUnknown,n.PageLastVisible=!t.CountUnknown,n.CanPage)for(n.CanPagePrev=n.PageIndex>r,n.CanPageNext=n.PageIndex<e||t.CountUnknown&&n.Items.length===n.PageSize,i=r;i<=e;i++)n.Pages.add({Active:n.PageIndex===i,Page:i+1});else n.CanPagePrev=n.CanPageNext=!1},updateCountUnknown:function(){var n=this.config,t=n.DataPage;n.Count==undefined&&n.CountUnknown==undefined&&n.Countless&&(n.CountUnknown=!0,n.Count=t.PageIndex*t.PageSize+t.Items.length);n.CountUnknown&&t.Items.length<t.PageSize&&(n.CountUnknown=undefined,n.Count=t.PageIndex*t.PageSize+t.Items.length)},onListValues:function(t){var f=n(t.currentTarget),r=f.attrs("rql-property"),i=this.config.DataPage.Properties[r.rql.property],u;i.ShowFilters=this.config.Controls.ShowFilters;u=this.$.find(r.rql.target);
//!this.config.isFabric ? this.$.find(attrs.rql.target) : $e.find(attrs.rql.target);
i.Filters||(i.Filters=[$rql.i18n.strings.Loading],this.listValues(r.rql.property,this.config.Filters,0,{property:i,target:u,$columnHeader:n(t.currentTarget).closest($f("th[rql-property='{0}']",i.Name))}));u.html($rql.ui.templates("queue-grid-header-menu").render(i));f.closest("[rql-role='quick-filter-dropdown']").on("show.bs.dropdown",this.onQueueDropdownReposition).on("shown.bs.dropdown",this.onQueueDropdownOpen).on("hidden.bs.dropdown",this.onQueueDropdownClose)},onOpenQueueAction:function(t){var i=n(t.currentTarget);i.parent().on("shown.bs.dropdown",this.onQueueDropdownOpen).on("hidden.bs.dropdown",this.onQueueDropdownClose)},onListValuesResponse:function(t,i,r){var h=r.context||t.context,o=h.property,c=$rql.api.dataTypes[o.Type],e,u,f,s;if(h)if(e=t.Values||[],n.isFunction(h.target)){for(s=this.$.find($f('[rql-role="edit-filters"][grid-id="{0}"] ',this.config.gridId)+$f('[rql-property="{0}"]',h.property.Name)).val(),s=$rql.htmlEscape(s),u=0;u<e.length;u++)f=$rql.sanitizeValue(e[u]),s&&f==s?e.splice(u--,1):e[u]=f||typeof f=="boolean"?c.format(c.fromJson(f),o.Format):undefined;s&&e.unshift(s);h.target(e)}else{for(o.Filters=[],u=0;u<e.length;u++)f=e[u],operator=f!==undefined?"=":"?",o.Type=="Boolean"&&(operator=f?"1":"0"),o.Filters[u]={Index:u,Text:!$rql.isUndefined(f)||typeof f=="boolean"?c.format(c.fromJson(f),o.Format):undefined,Operator:operator,Value:f};h.target.html($rql.ui.templates("queue-grid-header-menu").render(o))}},onManageFilters:function(t){var i,u,f,r;if(t&&(t.preventDefault(),t.stopPropagation()),i=this.config,i.isFabric){u=this.$.find($f("#{0}_ManageFilterPlaceholder",i.gridId));f={gridId:i.gridId,RenderAsModal:!0,FilterSets:i.FilterSets};u.html($rql.ui.templates("queue-filters-manage").render(f)).widgetize();r=u.find($f("#{0}_ManageFiltersDialog",i.gridId));r.find("input[type='checkbox']").on("click",function(t){var i=t.currentTarget.getAttribute("id");n(t.currentTarget).prop("checked")&&r.find("input[type='checkbox']").filter(function(){return this.getAttribute("id")!==i}).prop("checked",!1)});$rql.ui.showModal(r)}else this.focus(this.$.find("[rql-role='filters']").html($rql.ui.templates("queue-filters-manage").render(this.config)).widgetize().slideDown("fast"))},onNavigate:function(){var i,t,n;if(this.config.requireRefresh=!0,this.page)for(i=this.config.AppName,t=this.page.config.Views,n=0;n<t.length;n++)t[n].Type=="Queue"&&t[n].control&&(t[n].control.config.requireRefresh=!0)},onShownGallery:function(){var t=n('[rql-role="Gallery_Thumbnails"]:visible [rql-role="gallery-lightbox"]');t.is(":visible")||$rql.ui.showModal(t)},onSort:function(n){var i,t;this.config.UsesEditableGrid?(i=$rql.isEvent(n),i?(n.ValidateOnly=!0,t=this.getRequest(n),t.HasUpdates?(t.ValidateOnly=!0,this.preserveEvent=n,this.disable().post("EditPage",t).done(this.onSort).fail(this.error)):(this.cacheChanges(),this.sort(n))):this.isValid(n)&&(this.cacheChanges(),this.sort(this.preserveEvent))):this.sort(n)},sort:function(t){var s=n(t.currentTarget),u=s.attrs("rql-property","rql-order"),r,f,e,o;if(u.rql&&u.rql.action=="sort"&&u.rql.property&&(r=this.config,f=r.DataPage.Properties[u.rql.property],f)){if(e=$rql.isNull(u.rql.order,f.Ascending?"DESC":"ASC"),r.Sort=u.rql.property+" "+e,r.NestedQueues){for(o=0,i=0;i<r.DataPage.Properties.length;i++)if(r.DataPage.Properties[i]==f)break;else r.DataPage.Properties[i].IsHidden||o++;r.SortPropertyIndex=o;r.SortPropertyOrder=e}this.refresh();t.stopPropagation()}},onUpdateFilters:function(t){var h=this.config.isFabric,f;this.updateFilterValues(h?!0:!1);var e=n(t.currentTarget),r=this.config.FilterSets.WorkingSet,s=e.attrs("rql-filter-index","rql-value-index"),o=this.config.isFabric?0:s.rql.filterindex,i=r.Filters[o],u=e.val();this.config.isFabric&&e.is("[rql-tooltip]")&&e.tooltip("dispose");switch(s.rql.action){case"addFilter":r.Filters.add([]);break;case"deleteFilter":r.Filters.splice(o,1);break;case"deleteValue":i.splice(parseInt(s.rql.valueindex)+2,1);break;case"selectProperty":if(i.PropertyType=="String"){for(f=0;f<i.Properties.length;f++)if(i.Properties[f].Name==u){i.Properties[f].Type=="String"?i[0]=u:r.Filters[o]=[u];break}}else r.Filters[o]=[u];break;case"selectOperator":i[1]=u}n(document).off("keypress","input.select2-search__field");this.editFilters(!1)},render:function(){this.refresh()},fetchRaw:function(n){var t=this,i=this.config;i.Filters||(i.Filters=this.getViewSetting(this.getViewSettingName("Filter")));setTimeout(function(){t.post("",t.createRequest()).done(function(t){n&&n(t)}).fail(t.error)},0)},refreshConnectionError:function(n){$log.debug("rql.queue.refreshConnectionError");var t=this;this.refresh(n,function(n){$rql.api.offline?($log.debug("redirecting to home after refresh error."),$rql.api.home()):t.error(n)})},refresh:function(t,i){var r,u;$log.debug("rql.queue.refresh");r=this.config;r.Form&&r.Form.queueToSetFilter&&r.Form.queueToSetFilter==this.getViewId()&&(this.setViewSetting(this.getViewSettingName("Filter"),r.Form.filterToSet),r.Form.queueToSetFilter=r.Form.filterToSet=null);r.Form&&r.Form.config.BulkSelectId&&(r.BulkSelectId=r.Form.config.BulkSelectId);$rql.isEvent(t)&&this.config.UsesEditableGrid&&this.clearChache();this.rendered?(this.deleteNestedQueuesControls(),this.initiateDisable(null,!0),r.Filters.length===0&&this.getViewSetting(this.getViewSettingName("Filter")+"$Filter_Name")&&this.removeViewSetting(this.getViewSettingName("Filter")+"$Filter_Name")):(r.Filters=this.getViewSetting(this.getViewSettingName("Filter")),this.getViewSetting(this.getViewSettingName("Filter")+"$Filter_Name")&&(r.FilterName=this.getViewSetting(this.getViewSettingName("Filter")+"$Filter_Name")),this.restoreNavigateBackState(),r.ContainerUiStyle=this.$.attr("rql-class"),this.$.removeAttr("rql-class").html($rql.ui.templates("view-loading").render(r)),this.widgetize(),this.$.find('[rql-role="Grid"] > .row-fluid:first-child').collision(!0,{className:"overflow-x"}));(r.requireRefresh||t&&(t.refreshTotals||this.isActionEvent(t,"refresh")))&&(this.clearTotals(),r.requireRefresh=!1);u=this;$log.debug($f("Requesting queue {0}",r.Id));r.Filters&&(this.setViewSetting(this.getViewSettingName("Filter"),r.Filters),r.FilterName&&r.FilterName!==""&&this.setViewSetting(this.getViewSettingName("Filter")+"$Filter_Name",r.FilterName));setTimeout(function(){r.isFabric&&n("[rql-action='refresh'][rql-tooltip]").tooltip("dispose");$log.debug("rql.queue.refresh - posting request");u.post("",u.createRequest()).done(u.onLoad).fail(i||u.error)},0);$rql.isEvent(t)&&t.stopPropagation()},resetPageIndex:function(){this.config&&this.config.DataPage.PageIndex&&this.config.DataPage.PageIndex>0&&(this.config.DataPage.PageIndex=0)},clearChache:function(){this.EditableGridSequentialRowCounter=null;this.rowsCache=null;this.config.UnsavedChanges=null;this.config.Lookup=null},cacheChanges:function(){for(var i,r,t,u=this.getUpdates(),n=0;n<u.length;n++){var e=u[n],o=this.updates[n],f=$rql.api.getUpdates(e,o);if(f.length>0){for(this.rowsCache||(this.rowsCache=[]),i=this.getEditInGridKey(n),r=!0,t=0;t<this.rowsCache.length;t++)if(this.rowsCache[t].key==i){r=!1;break}r&&this.rowsCache.add({key:i,update:f,metacolumns:this.getRowMetaColumns(n),cache:this.$.find($f('tr[rql-index="{0}"][id="{1}"]',n,this.config.EditableGridRandomId)).detach()})}}this.config.UnsavedChanges=this.rowsCache&&this.rowsCache.length>0?$rql.isNull(this.mode.ModeProperties.unsavedmessage,$rql.i18n.strings.UnsavedChanges):null},refreshCount:function(){this.rendered&&this.disable();$log.debug($f("Requesting count for queue {0}",this.config.Id));this.post("count",this.createRequest()).done(this.onLoadCount).fail(this.onLoadCount)},saveSettings:function(t,i,r,u){var e=this.config,s=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId)),v=u?u.method:s.find("[name=method]:checked").val(),b=u?u.titles:s.find("[name=title]"),w=u?u.name:s.find("#filterName"),f,y,o={AppName:e.AppName,ViewName:e.ViewName,FilterSets:{Deleted:[],Updated:[],Filters:{}},PageSize:e.DataPage.PageSize,Spacing:e.Spacing,FilterOpen:s.is(":visible"),ColumnSet:e.ColumnSet,CollapsedState:e.CollapsedState},c,p,l,h,a;if(e.PartialRendering&&(o.ViewName=e.NestedQueuesParentKey),this.mode&&(this.mode.Type=="Highchart"||this.mode.Type=="Ganttchart"?(o.Mode=this.mode.StoreId,o.CustomMode=!0):o.Mode=this.mode.Type),c=this.mode?this.mode.Type:null,o.PageSize&&c&&(c.indexOf("Map")!==-1||c==="GoogleChart"||c==="Plugin")&&(o.PageSize=0),i)v&&(v==="new"&&w.val()!==""?(e.FilterSets.add(f={Index:e.FilterSets.length,Id:"*",Title:w.val()}),this.showFiltersOnRefresh=!0):v==="overwrite"&&(f=e.FilterSets[u?u.name.val():s.find("[name=index]").val()],e.FilterName=u?u.name.find("option:selected").text():s.find("[name=index]").text()),f&&f.Title&&(f.Filters=e.Filters,f.Default=u?u.isDefault:s.find("[name=default]:checked").length>0,f.Default&&(o.NoDefaultFilter=!1),o.FilterSets.Updated.add(f)));else if(e.FilterSets){for(p=parseInt(u?u.defaultFilter:s.find("[name=default]:checked").val()),l=[],r&&(f=e.FilterSets[r],f&&f.Id&&(o.FilterSets.Deleted.add(f.Id),f.Deleted=!0)),h=0;h<e.FilterSets.length;h++)(f=e.FilterSets[h])&&!f.Deleted&&(a=!1,(y=n(b[h]).val())&&f.Title!=y&&(f.Title=y,a=!0),f.Default||h!=p||(a=f.Default=!(o.NoDefaultFilter=!1)),a&&o.FilterSets.Updated.add(f),f.Index=l.length,l.add(f));l.WorkingSet=this.config.FilterSets.WorkingSet;e.FilterSets=l;p==-1&&(o.NoDefaultFilter=!0)}return e.HasSavedFilters=e.FilterSets&&e.FilterSets.length>0,typeof t=="boolean"&&t||this.onLoad(),this.post("settings",o)},saveFilter:function(t){var u=this,i=this.config.isFabric,r=n(t.currentTarget).parents("[rql-role='save-filter-container']"),f=i?r.find("[rql-role='save-filter-name']").is(":visible"):this.$.find("input[name=method]:checked").val()==="new",h=i?r.find("[rql-role='save-filter-name'] > input"):this.$.find("#filterName"),e,o,s=f?h.val():i?r.find("[rql-role='overwrite-filter'] > select option:selected").text():this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId)).find("[name=index]").text();if(i&&(e=f?r.find("[rql-role='save-filter-name'] > input"):r.find("[rql-role='overwrite-filter'] > select")),s===""){i?(r.find("[rql-role='validation-error']").html($rql.i18n.strings.RequiredField),e.parent("div").addClass("input-error")):this.$.find("#filterNameMissingError").removeClass("hide");return}i&&t&&n(t.currentTarget).parents(".modal.show").modal("hide");delete this.config.ShowSave;delete this.showFiltersOnRefresh;i&&(o={method:f?"new":"overwrite",name:e,isDefault:r.find($f("#{0}_SetAsDefault:checked",this.config.gridId)).length>0});this.saveSettings(!1,!0,null,o).done(function(n){if(n){var i=n,t=u.config.FilterSets.last();t.Id==="*"&&(t.Id=i.FilterSets.last().Id);u.config.FilterName=s;u.prepareFilterSummary();u.$.find("div[rql-role='filter-summary']").replaceWith(u.config.FilterSummary).widgetize()}u.success($rql.i18n.strings.ChangesSaved)})},saveFilterManagement:function(){var t=this,i,r,u,f;if(delete this.showFiltersOnRefresh,t.config.isFabric){if(r=t.$.find($f("#{0}_ManageFiltersDialog",t.config.gridId)),u=r.find("input[type='text']"),f=!1,u.each(function(){n(this).val()===""&&(n(this).parent("div").addClass("input-error"),f=!0)}),f)return;i={defaultFilter:r.find("input[type='checkbox']:checked").attr("rql-data"),titles:u};i.defaultFilter||(i.defaultFilter=-1);r.modal("hide")}this.saveSettings(!1,null,null,i).done(function(){if(t.config.isFabric&&i&&n.isNumeric(i.defaultFilter)){var r=parseInt(i.defaultFilter);t.config.FilterSets.map(function(n){n.Default=n.Index===r})}t.updateCurrentFilterName();t.$.find("div[rql-role='filter-summary']").is(":visible")&&(t.prepareFilterSummary(),t.$.find("div[rql-role='filter-summary']").replaceWith(t.config.FilterSummary).widgetize());t.success($rql.i18n.strings.ChangesSaved)})},saveNavigateBackState:function(){var n=this.config,t;n.IsLookup||(t={},n.Sort&&(t.Sort=n.Sort),n.DataPage&&(n.DataPage.PageIndex&&(t.PageIndex=n.DataPage.PageIndex),n.DataPage.PageSize&&(t.PageSize=n.DataPage.PageSize),n.SelectedRow&&(t.SelectedRow=n.SelectedRow)),this.setViewSetting(this.getViewSettingName("NavigateBackState"),t))},restoreNavigateBackState:function(){var i=this.config,t;i.IsLookup||window.isNavigatingBack&&!this.navigateBackStateRestored&&(this.navigateBackStateRestored=!0,t=this.getViewSetting(this.getViewSettingName("NavigateBackState")),t&&(i.Sort=t.Sort,i.DataPage=n.extend({},i.DataPage,{PageIndex:t.PageIndex,PageSize:t.PageSize}),i.SelectedRow=t.SelectedRow))},search:function(n){if(n=$rql.isString(n)?n:this.$.find("[rql-id='search']:visible").val()){var t=this.config.Search;t.Text=n;t.Applied=!0;this.setViewSetting(this.getViewSettingName("QuickSearch"),t);this.resetPageIndex();this.clearTotals();this.refresh()}},swapImage:function(t){var i=n(t.currentTarget),r=i.attrs(),u=r.rql.selector;n(u).attr("src",i.children("img").attr("src"))},verifyFilterValues:function(){for(var r=!0,e=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId)),f=e.find("[name='Value']"),u=0;u<f.length;u++){var t=n(f[u]),o=t.attrs("rql-filter-index","rql-value-index"),i=$rql.api.dataTypes[o.rql.type].isValid(t.val());r=i?r:i;this.config.isFabric?t.parent("div").length&&t.parent("div")[(i?"remove":"add")+"Class"]("filter-param-error"):t.closest('[rql-role="value-group"]').length&&t.closest('[rql-role="value-group"]')[(i?"remove":"add")+"Class"]("error")}return r},updateFilterValues:function(t){var r=this.config.FilterSets.WorkingSet,o=this.$.find($f("[rql-role='filters'][grid-id='{0}']",this.config.gridId)),u=o.find("[name='Value']"),i;if(this.config.isFabric)for(i=0;i<r.Filters.length;i++)r.Filters[i].CanEditValues===!1&&r.Filters[i].splice(2,r.Filters[i].length-2);for(i=0;i<u.length;i++){var f=n(u[i]),e=f.attrs("rql-filter-index","rql-value-index"),s=r.Filters[parseInt(e.rql.filterindex)],h=f.rqlval();s[2+parseInt(e.rql.valueindex)]=h}return this.verifyNumbersOfFilterValues(r),this.config.isFabric&&!t&&(this.config.Filters.remove(function(n){return r.Filters.any(function(t){return t[0]===n[0]})}),r.Filters.addRange(this.config.Filters)),this},verifyNumbersOfFilterValues:function(n){var r,t,u,i;if(n&&n.Filters)for(r=0;r<n.Filters.length;r++)t=n.Filters[r],u=t.length>1?t[1]:null,u&&(i=t.Operators.findByKey("Key",u),i&&i.MinValues>=1&&t.length>2+i.MinValues&&(t.length=2+i.MinValues))},getKeyByIndex:function(n){return!isNaN(n)&&n>=0&&n<this.config.DataPage.Keys.length?this.config.DataPage.Keys[n]:null},getRowActionRqlAttrs:function(t){var r=n(t.currentTarget),u=r.attrs(),f=this.isMobile()&&!this.config.isFabric?r.closest("div[rql-index], a[rql-index]"):r.closest("tr"),e=f.attrs(),i=n.extend({},e.rql,u.rql);return i.rowIndex=parseInt(i.index),i.rowIndex>=0&&i.rowIndex<this.config.DataPage.Items.length?i:null},onOpenAllNestedQueue:function(t){var f=this.config,e=$rql.isEvent(t),r=n(t.currentTarget);e&&(t.stopPropagation(),t.preventDefault());var i=r.children("i"),u=f.isFabric?i.hasClass("fa-angle-down"):i.hasClass("icon-plus"),o=this;if(this.setCollapseExpandIcon(i,!u),u)this.config.NestedQueuesAllIcon=this.config.isFabric?"fa-angle-up":"icon-minus";else{this.config.NestedQueuesAllIcon=this.config.isFabric?"fa-angle-down":"icon-plus";this.refresh();this.config.NestedQueuesStates=[];this.deleteNestedQueuesControls();return}r.closest("table").children("tbody").children("tr[rql-index]").has("td:first > a").each(function(){this.openAll=!0;o.onOpenNestedQueue(this)})},deleteNestedQueuesControls:function(n){var t=this.config,i;if(t.NestedQueueControlList){for(i=0;i<t.NestedQueueControlList.length;i++)if(n){if(n==t.NestedQueueControlList[i].id){t.NestedQueueControlList[i].control.deleteNestedQueuesControls();delete t.NestedQueueControlList[i].control;t.NestedQueueControlList.splice(i,1);break}}else t.NestedQueueControlList[i].control.deleteNestedQueuesControls(),delete t.NestedQueueControlList[i].control;n||(t.NestedQueueControlList=null)}},onOpenNestedQueue:function(t){var f=$rql.isEvent(t),s,p,a,lt,at,e,o,v,vt,u,d;f?(t.stopPropagation(),t.preventDefault()):s=n(t).children("td:first").children("a");var i=this.config,y=$rql.newId(),h=f?n(t.target).closest("tr"):n(t),g=i.DataPage.Headers.length,yt=f?this.getRowActionRqlAttrs(t).level:s.attr("rql-level"),r=f?this.getRowActionRqlAttrs(t).data:s.attr("rql-data"),pt=f?this.getRowActionRqlAttrs(t).accesstoken:s.attr("rql-access-token"),wt=r.startsWith("filter:"),nt="";r=r.substring(r.indexOf(":")+1).split(",").filter(Boolean);r.length===2?r=r.join(","):r.length===3&&(nt=r[2],r=r.splice(0,2).join(","));var tt=r.indexOf(","),it=r.substring(0,tt),rt=it.split("."),ut=r.substring(tt+1),bt=rt[0],kt=rt[1],ft=h.attrs().rql.index,c,et,l=this.getKeyByIndex(ft),w=f?n(t.currentTarget):s,b=w.children(i.isFabric&&w.children().is("svg")?"svg":"i"),k=i.isFabric&&w.children().is("svg")?b.attr("data-icon")==="angle-down":b.hasClass(i.isFabric?"fa-angle-down":"icon-plus"),dt=f||k;if(dt&&this.setCollapseExpandIcon(b,!k),k)h.attr("rql-child",y),i.NestedQueuesStates.contains(l)||i.NestedQueuesStates.push(l);else{if(p=h.attr("rql-child"),f)this.$.find($f("tr[rql-parent='{0}']",p)).remove(),i.NestedQueuesStates.remove(l),this.deleteNestedQueuesControls(p);else if(t.openAll&&i.NestedQueueControlList)for(a=0;a<i.NestedQueueControlList.length;a++)if(p==i.NestedQueueControlList[a].id){i.NestedQueueControlList[a].control.onOpenAllCallBack();return}return}var ot=[],st=[],ht="",ct=!0;h.children("td").each(function(){ot.push(n(this).width());st.push(n(this).innerWidth());n(this).attr("first")!==""&&ct?ht+="<td><\/td>":ct=!1});lt=this.getNestedRow(y,g).insertAfter(h);wt?(at=i.DataPage.Items[ft],et=this.buildNestedQueueFilterData(ut,at,i.DataPage)):(c=[],c.add(ut),c.add("="),c.add(l));e={Id:it,AppName:bt,ViewName:kt,AccessToken:pt,IsMobile:$rql.ui.isMobile(),Context:i.Context,PartialRendering:!0,UsesNestedQueues:!0,NestedQueues:i.NestedQueues?i.NestedQueues.slice(1):null,NestedQueueAccessTokens:i.NestedQueueAccessTokens?i.NestedQueueAccessTokens.slice(1):null,NestedQueuesPadding:$rql.isNull(i.NestedQueuesPadding,1)+15,NestedQueuesColSpan:g,NestedQueuesId:y,NestedQueuesLeadingTds:ht,NestedQueuesInnerWidths:st,NestedQueuesWidths:ot,NestedQueuesOpenAll:!f&&t.openAll,SortPropertyIndex:i.SortPropertyIndex,SortPropertyOrder:i.SortPropertyOrder,NestedQueuesStates:i.NestedQueuesStates,NestedQueuesParentKey:l,NestedQueuePagerHiddenLimit:i.NestedQueuePagerHiddenLimit,NestedQueueFilterSet:c,NestedQueueFilterData:et,NestedQueuesCountOfLeveles:i.NestedQueuesCountOfLeveles,NestedQueueLevel:yt,NestedQueuesMasterAppName:i.NestedQueuesMasterAppName,NestedQueuesMasterViewName:i.NestedQueuesMasterViewName,NestedQueueTopControl:i.NestedQueueTopControl,NestedQueueStyle:nt};o=i.NestedQueues[0].split(",");o.length>3&&(v=o[3].trim(),o.length>4&&(v=o.slice(3,o.length).join(",")),v&&(vt=v.toBool(),vt?e.NestedQueueShowHeaders=!0:(u=v.parseOptionsAsObject(!0,!1),u.headeroptions&&(e.NestedQueueShowHeaders=!0,u.headeroptions.rowcss&&(e.NestedQueueHeaderRowCss=u.headeroptions.rowcss),u.headeroptions.colcss&&(e.NestedQueueHeaderColCss=u.headeroptions.colcss),u.headeroptions.colstyle&&(e.NestedQueueHeaderColStyle=u.headeroptions.colstyle),u.headeroptions.rowstyle&&(e.NestedQueueHeaderRowStyle=u.headeroptions.rowstyle)))));d=new $rql.ui.controls.queue(lt.find("[rql-role]"),e);d.show();this.config.NestedQueueControlList||(this.config.NestedQueueControlList=[]);this.config.NestedQueueControlList.push({id:y,control:d})},restoreNestedQueuesState:function(){var t=this.config,i=this,r;t.NestedQueuesStates&&t.NestedQueuesStates.length>0&&(r=t.isFabric?"td:first > a > i.fa-angle-down, td:first > a > svg[data-icon='angle-down']":"td:first > a > i.icon-plus",this.$.find($f("table[id='{0}']",$rql.coalesce(t.NestedQueuesTopId,t.NestedQueuesId))).children("tbody").children("tr[rql-index]").has(r).each(function(){var r=i.getKeyByIndex(n(this).attr("rql-index"));if(t.NestedQueuesStates.contains(r))i.onOpenNestedQueue(this)}))},getNestedRow:function(t,i){var r=$f('<tr class="nested-queue-row-container" rql-parent="{0}"><td class="nested-queue-row" rql-role="Grid" colspan="{1}">nested queue<\/td><\/tr>',t,i+1);return n(r)},setCollapseExpandIcon:function(n,t){n&&(this.config.isFabric?n.is("i")?(n.removeClass("fa-angle-down fa-angle-up"),n.addClass(t?"fa-angle-down":"fa-angle-up")):n.attr("data-icon",t?"angle-down":"angle-up"):(n.removeClass("icon-plus icon-minus"),n.addClass(t?"icon-plus":"icon-minus")))},onNestedQueuesCallBack:function(){var t=this;this.config.isFabric?this.adjustNestedQueueColumnWidths():this.$.find($f("table[id='{0}'] > tbody > tr:first-child > td",this.config.NestedQueuesId)).each(function(i){var r=t.config.NestedQueuesWidths[i],u;n(this).attr("first")===""&&(u=n(this).innerWidth()-n(this).width(),r=t.config.NestedQueuesInnerWidths[i]-u);n(this).css({"min-width":r+"px","max-width":r+"px"})})},adjustNestedQueueColumnWidths:function(){var t,e;if(this.config.NestedQueueTopControl){var o=this.$.parents($f("table#{0}",this.config.NestedQueueTopControl.config.NestedQueuesTopId)),u=o.find("tr[rql-role='column-headers'] th"),i=this.$.find("> table > tbody > tr:first-of-type > td"),r=[],f=function(t,i){var r={width:i+"px"};$rql.ui.isMobile()||n.extend(r,{"max-width":i+"px","min-width":i+"px"});t.css(r)};$rql.ui.isMobile()?i.each(function(t,i){n(i).css("width","100%")}):(u.each(function(n,t){r.push(t.getBoundingClientRect().width)}),i.each(function(t,i){f(n(i),r[t])}),t=[],u.each(function(n,i){t.push(i.getBoundingClientRect().width)}),JSON.stringify(t)!==JSON.stringify(r)&&i.each(function(i,r){f(n(r),t[i])}));$rql.ui.isMobile()?this.$.css("cssText","padding-left: "+this.config.NestedQueuesPadding+"px !important"):this.$.css("cssText","");e=this.config.UsesNestedQueues&&this.config.NestedQueueTopControl!==this?this.$.find("[rql-role='pager'] > [rql-role='pager-content']"):this.$.find("[rql-role='pager']");e.html($rql.ui.templates("queue-grid-pager").render(this.config))}},getColumnsWidth:function(){var t=[],i=[];return this.$.find($f("table[id='{0}'] > tbody > tr:first-child > td",this.config.NestedQueuesId)).each(function(){t.push(n(this).width());i.push(n(this).innerWidth())}),{w:t,i:i}},getNestedQueuesColumnWidth:function(n,t){var r=this.config,u=this.getColumnsWidth(),i;if(n.push(u.w),t.push(u.i),r.NestedQueueControlList)for(i=0;i<r.NestedQueueControlList.length;i++)r.NestedQueueControlList[i].control.getNestedQueuesColumnWidth(n,t);return n},adjustQueueColumnWidth:function(){var h=this.config,c=h.NestedQueueTopControl,f=c.config.NestedQueueControlList,e=[],i=[],o=!1,s=this.getColumnsWidth(),r=s.w,u=s.i,n,t;if(f&&r.length>1){for(n=0;n<f.length;n++)f[n].control.getNestedQueuesColumnWidth(e,i);for(n=0;n<i.length;n++)if(i[n].length>1)for(t=0;t<i[n].length;t++)u[t]!==i[n][t]&&(u[t]=Math.max(u[t],i[n][t]),r[t]=Math.max(r[t],e[n][t]),o=!0);o&&this.readjust(r,u)}},readjust:function(n,t){for(var u=this.config,f=u.NestedQueueTopControl,r=f.config.NestedQueueControlList,i=0;i<r.length;i++)r[i].control.setColumnWidth(n,t)},setColumnWidth:function(t,i){var u=this.config,r;if(this.$.find($f("table[id='{0}'] > tbody > tr:first-child > td",this.config.NestedQueuesId)).each(function(r){var u=t[r],f;n(this).attr("first")===""&&(f=n(this).innerWidth()-n(this).width(),u=i[r]-f);n(this).css({"min-width":u+"px","overflow-wrap":"break-word"})}),u.NestedQueueControlList)for(r=0;r<u.NestedQueueControlList.length;r++)u.NestedQueueControlList[r].control.setColumnWidth(t,i)},onOpenAllCallBack:function(n){var t=this;this.onNestedQueuesCallBack();this.$.find($f("table[id='{0}']",$rql.coalesce(n,this.config.NestedQueuesId))).children("tbody").children("tr[rql-index]").has("td:first > a").each(function(){this.openAll=!0;t.onOpenNestedQueue(this)});this.config.NestedQueuesOpenAll=!1},onOpenAllQueuesOnStart:function(n){var t=this.$.find($f("table[id='{0}']",n)).children("thead").children("tr").children("th:first").children("a").children("i"),i=this.config.isFabric?t.hasClass("fa-angle-down"):t.hasClass("icon-plus");this.setCollapseExpandIcon(t,!i);this.config.NestedQueuesAllIcon=this.config.isFabric?"fa-angle-up":"icon-minus";this.onOpenAllCallBack(n);this.config.NestedQueuesExpandAllOnStart=!1},onEditInPlace:function(t){t.stopPropagation();t.preventDefault();this.closeDropDown(t.target);var i=this.getRowActionRqlAttrs(t),r=n(t.target).closest("tr");i&&i.argument&&(this.editorInPlace={viewName:i.argument,Arguments:i.urlarguments,ViewInPlaceMode:t.ViewInPlaceMode,Index:i.rowIndex,IsModal:i.target=="Modal"},t.ViewInPlaceMode&&(this.config.isFabric||!this.config.isFabric&&!this.isMobile())&&(this.editorsCollection||(this.editorsCollection=[]),this.editorsCollection[i.rowIndex]=n.extend({},this.editorInPlace)),!this.config.isFabric&&this.isMobile()?(this.editorInPlace.keys=this.config.DataPage.Keys,this.editorInPlace.keysStartIndex=this.config.DataPage.PageIndex*this.config.DataPage.PageSize,this.editorInPlace.count=this.config.Count,this.mobileEditInPlaceByIndex(this.editorInPlace.keysStartIndex+i.rowIndex)):this.editInPlace(r,i.rowIndex,i.argument))},onViewInPlace:function(n){n.stopPropagation();n.preventDefault();this.closeDropDown(n.target);var t=this.getRowActionRqlAttrs(n),i=this.editorsCollection;if(t&&t.argument&&i&&i[t.rowIndex])this.closeEditInPlace(t.rowIndex);else{n.ViewInPlaceMode=!0;this.onEditInPlace(n)}},onNewInPlace:function(t){var i,r;t.stopPropagation();t.preventDefault();this.closeDropDown(t.currentTarget);i=n(t.currentTarget).attrs().rql;i&&i.argument&&(r=i.argument.indexOf("?"),this.editorInPlace={viewName:r>0?i.argument.substring(0,r):i.argument,Arguments:r>0?i.argument.substring(r+1):null,BulkUpdateMode:t.bulkUpdateMode},t.Router||(t.Router="newinplace"),t.bulkUpdateMode&&(this.editorInPlace.Arguments=$f("{0}{1}BulkUpdate={2}",this.editorInPlace.Arguments,this.editorInPlace.Arguments?"&":"",this.editorInPlace.viewName)),this.newThenEdit(t.Router))},onOpenBulkUpdate:function(n){n.bulkUpdateMode=!0;n.Router="newandexecuteinplace";this.onNewInPlace(n)},onNewAndExecuteInPlace:function(n){n.stopPropagation();n.preventDefault();this.closeDropDown(n.currentTarget);n.Router="newandexecuteinplace";this.onNewInPlace(n)},onNewAndPublishInPlace:function(n){n.stopPropagation();n.preventDefault();this.closeDropDown(n.currentTarget);n.Router="newandpublishinplace";this.onNewInPlace(n)},onEditInPlaceLoaded:function(){var t=this.editorInPlace;t&&t.ViewInPlaceMode&&(this.config.isFabric||!this.config.isFabric&&!this.isMobile())&&(t=this.editorsCollection[t.Index]);t&&t.view&&t.$container&&(t.$container.show(),this.config.isFabric||t.ViewInPlaceMode||setTimeout(n.proxy(this.showEditorInPlaceOverlay,this),0));this.enable();this.config.isFabric&&t.$container&&t.$container.find('[rql-role="editor-in-place-container"]').length>0&&(window.ResizeSensor.detach(t.$container.find('[rql-role="editor-in-place-container"]'),this.adjustEditorInPlaceOverlay),this.adjustEditorInPlaceContainerSize(),t.$container.applyOverlay(!1),window.ResizeSensor(t.$container.find('[rql-role="editor-in-place-container"]'),this.adjustEditorInPlaceOverlay))},onEditInPlaceUpdated:function(){},onEditInPlaceResize:function(t){if(this.config.isFabric){this.adjustEditorInPlaceOverlay();return}var i=this.editorInPlace;i&&i.ViewInPlaceMode&&!this.isMobile()&&(i=this.editorsCollection[i.Index]);i&&i.view&&i.$container&&(i.ViewInPlaceMode||setTimeout(n.proxy(this.resizeEditorInPlaceOverlay,this,t),0))},onEditInPlaceSaved:function(n){this.closeEditInPlace();n&&(n.sender&&n.sender.config.State&&n.sender.config.State.BulkUpdate?this.requestBulkUpdate(n.sender.config.StoreId,n.sender.config.ViewName,n.sender.config.AppName):n.changed||n.action!="next"?n.changed&&(this.hasEventHandler("viewChange")?this.raise("viewChange",{sender:this,requiresRefresh:!0,groupViewRefresh:$rql.isNull(this.config.Group,!1)}):this.refresh(),n.action=="next"?this.editorInPlace.nextKey=this.getKeyByIndex(this.editorInPlace.itemIndex+1):n.action=="newinplace"&&(this.editorInPlace.nextKey="new")):this.editInPlaceByIndex(this.editorInPlace.itemIndex+1,this.editorInPlace.viewName))},requestBulkUpdate:function(t,i,r){var e=this.config,f=this,o=$rql.isNull(e.Filters,[]).where(u),s=n.extend(this.createRequest(),{BulkSelectId:e.BulkSelectId,BulkUpdateView:i,BulkUpdateAppName:r,StoreId:t,Filters:o,UseDefaultFilter:!this.rendered&&o.length==0,Sort:e.Sort});this.post("bulkupdate",s).done(function(n){f.SuccessMessage=$rql.isNull(n.SuccessMessage,$rql.i18n.strings.BulkUpdateCompleted);f.ErrorMessage=$rql.isNull(n.ErrorMessage,$rql.i18n.strings.BulkUpdateError);f.ScheduledMessage=$rql.isNull(n.ScheduledMessage,$rql.i18n.strings.BulkUpdateScheduled);f.NotScheduledMessage=$rql.isNull(n.NotScheduledMessage,$rql.i18n.strings.BulkUpdateNotScheduled);n.Count&&n.Count>0&&!n.Errors?(f.TaskId=n.TaskId,f.startMonitoringSystemJobs(),f.success(f.ScheduledMessage)):n.Errors?f.error(f.ErrorMessage):f.error(f.NotScheduledMessage)})},startMonitoringPublishingTask:function(){this.clearMonitorTimeout();this.monitorTimeoutId=setTimeout(n.proxy(this.requestStates,this),2e3)},requestStates:function(){var t=n.proxy(this.onActiveTasksResponse,this);$rql.http.post($rql.api.baseUrl.pathname+"form/tasks/active",{Tasks:[this.TaskId]}).done(t).fail(t)},clearMonitorTimeout:function(){this.monitorTimeoutId&&(clearTimeout(this.monitorTimeoutId),this.monitorTimeoutId=null)},startMonitoringSystemJobs:function(){this.clearMonitorSystemJobTimeout();this.monitorSystemJobTimeoutId=setTimeout(n.proxy(this.requestJobStates,this),2e3)},requestJobStates:function(){var t=n.proxy(this.onActiveSystemJobsResponse,this);$rql.http.post($rql.api.baseUrl.pathname+"form/systemjob/active",{SystemJobs:[this.TaskId]}).done(t).fail(t)},onActiveSystemJobsResponse:function(n){n&&n.Jobs?this.startMonitoringSystemJobs():(n&&n.Error?this.config.ErrorMessage=$rql.isNull(this.ErrorMessage,n.Error):this.config.NotificationMessage=this.SuccessMessage,this.config.requireRefresh=!0,this.hasEventHandler("viewChange")?this.raise("viewChange",{sender:this,requiresRefresh:!0,groupViewRefresh:$rql.isNull(this.config.Group,!1)}):this.refresh())},clearMonitorSystemJobTimeout:function(){this.monitorSystemJobTimeoutId&&(clearTimeout(this.monitorSystemJobTimeoutId),this.monitorSystemJobTimeoutId=null)},onActiveTasksResponse:function(n){n&&n.Tasks?this.startMonitoringPublishingTask():(this.config.requireRefresh=!0,this.config.NotificationMessage="Done",this.hasEventHandler("viewChange")?this.raise("viewChange",{sender:this,requiresRefresh:!0,groupViewRefresh:$rql.isNull(this.config.Group,!1)}):this.refresh())},onEditInPlaceCancelled:function(){this.closeEditInPlace()},newThenEdit:function(n){if(this.editorInPlace){var t=this.config,i=t.AppName;this.editorInPlace.viewName&&this.editorInPlace.viewName.indexOf(".")>0&&(i=this.editorInPlace.viewName.substring(0,this.editorInPlace.viewName.indexOf(".")));$rql.api.createStore(i,n?n:"new",{Context:t.Context,Arguments:this.editorInPlace.Arguments},this.onEditNew)}},onEditNew:function(n){n.StoreId&&(!this.config.isFabric&&this.isMobile()?this.mobileOpenEditorInPlace(n.StoreId):this.openEditorInPlace({StoreId:n.StoreId},null,-1))},editInPlaceByKey:function(n){this.editInPlaceByIndex(this.config.DataPage.Keys.indexOf(n))},editInPlaceByIndex:function(t){this.editInPlace(n($f("tr[rql-index='{0:n0}']",t),this.$),t)},editInPlace:function(n,t){this.openEditorInPlace({StoreId:this.getKeyByIndex(t),ShowSaveAndNext:t+1<this.config.DataPage.Items.length},n,t)},openEditorInPlace:function(t,i,u){var f=this.editorInPlace,o,h,c,a,w,s,v,e,y,b,l;if(f&&f.ViewInPlaceMode&&(this.config.isFabric||!this.config.isFabric&&!this.isMobile())&&(f=this.editorsCollection[u]),f){if(f.nextKey=null,f.view)return;if(t&&t.StoreId){if(this.disable(),o=f.Arguments,f.isNew=u==-1,f.isNew)i=this.$.find("div[rql-role$='Grid'] tbody tr:first, div[rql-role='Template'] tbody tr:first");else if(f.$editRow=i,f.IsModal||f.$editRow.addClass("editing"),!o&&(h=this.config.DataPage.Items[u],h.HasRowActions))for(e=0;e<h.RowActions.length;e++)c=h.RowActions[e],c.Action.Name=="EditInPlace"&&c.UrlArguments&&(o=c.UrlArguments);if(f.IsModal&&(r||(r=$rql.ui.div("edit-in-place-dialog"))),a=$rql.ui.templates("queue-edit-in-place").render(),f.IsModal){if(s={},o)for(v=o.split("&"),e=0;e<v.length;e++)y=v[e].split("="),s[y[0]]=unescape(y[1]);if(s.ModalWidth){var p=s.ModalWidth,k=p.contains("px"),d=k?parseInt(p)/(n(window).width()/100):parseInt(p);s.ModalWidth=d+"%"}r.html($rql.ui.templates("queue-edit-in-place-dialog").render(s));w=r.find("[rql-role='content']")}else f.$container=f.isNew?n(a).insertBefore(i):n(a).insertAfter(i);t=n.extend(t,{Arguments:o});f.view=this.createEditInPlaceView(t,{loaded:this.onEditInPlaceLoaded,saved:this.onEditInPlaceSaved,cancelled:this.onEditInPlaceCancelled,recordNavigate:this.onEditInPlaceNavigate,resize:this.onEditInPlaceResize,bulkSelectionChanged:this.onBulkSelectionChanged,updated:f.IsModal?null:this.onEditInPlaceUpdated},u,w);f.itemIndex=u;f.view.control.refresh({State:f.ViewInPlaceMode?"ViewInPlace":f.BulkUpdateMode?"BulkUpdate":f.isNew?"NewInPlace":"EditInPlace",BulkSelectId:this.config.BulkSelectId,ChainContextId:this.config.Context?this.config.Context.ChainContextId:null});f.IsModal&&(this.config.isFabric?(r.widgetize(),b=this,l={},f.ViewInPlaceMode&&(l.onShown=function(){n("body").addClass("modal-open")},l.onHidden=function(){b.closeEditInPlace(f.itemIndex)}),r.show(),$rql.ui.showModal(r.find('[rql-role="modal"]'),l)):r.show().widgetize())}}},createEditInPlaceView:function(t,i,r,u){var e=this.editorInPlace,o;e&&e.ViewInPlaceMode&&(this.config.isFabric||!this.config.isFabric&&!this.isMobile())&&(e=this.editorsCollection[r]);var h=$rql.ui.controls.form,f=e.viewName,s=this.config.AppName;f.indexOf(".")>0&&(s=f.substring(0,f.indexOf(".")),f=f.substring(f.indexOf(".")+1));o=n.extend({Id:this.getViewId(),AppName:s,ViewName:f,Type:"Form",IsInPlace:!0,Resize:i.resize},t);o.control=new h(u?u:e.$container.find("div"),o);o.control.on(i);return o},closeEditInPlace:function(t){var i=this.editorInPlace;t>=0&&(i=this.editorsCollection[t]);i&&i.view&&(this.disposeEditInPlace(!0,!0,t),i.$editRow&&i.$editRow.removeClass("editing"),i.$overlay&&i.$overlay.remove(),i.IsModal&&r&&(this.config.isFabric?r.find(".modal").modal("hide"):r.hide(),this.hideModals(!0)),this.config.isFabric&&(n(this.editorInPlace.elementsWithOverlay).applyOverlay(!1),this.editorInPlace.elementsWithOverlay=[]))},disposeEditInPlace:function(n,t,i){var u=this.editorInPlace;i>=0&&(u=this.editorsCollection[i]);u&&(this.config.isFabric&&u.IsModal&&r&&r.hide(),n&&(this.config.isFabric&&u.$container&&u.$container.find('[rql-role="editor-in-place-container"]').length>0&&window.ResizeSensor.detach(u.$container.find('[rql-role="editor-in-place-container"]'),this.adjustEditorInPlaceOverlay),u.view&&u.view.control&&u.view.control.dispose(),u.view=null,u.$container&&u.$container.remove(),u.$container=null),t&&(u.oldView&&u.oldView.control&&u.oldView.control.dispose(),u.oldView=null,u.$oldContainer&&u.$oldContainer.remove(),u.$oldContainer=null),i>=0&&(this.editorsCollection[i]=null))},showEditorInPlaceOverlay:function(){var n=this;this.editorInPlace.$overlay=this.$.append($rql.ui.templates("queue-edit-in-place-overlay").render()).find(".edit-in-place-overlay");this.config.isFabric?window.ResizeSensor(this.editorInPlace.$container.find('[rql-role="editor-in-place-container"]'),this.adjustEditorInPlaceOverlay):this.editorInPlace.$overlay.attr("editing","true").width(this.$.width()).height(this.$.height()).show().css({top:"0",left:"0"}).widgetize()},adjustEditorInPlaceOverlay:function(){var n=this;n.editorInPlace.$container&&n.resizeEditorInPlaceOverlay()},adjustEditorInPlaceContainerSize:function(){var n=this.editorInPlace,t,i;n&&!n.IsModal&&n.$container&&(t=n.$container.closest('[rql-role="queue-main-container"]').width(),i=n.$container.find('[rql-role="editor-in-place-container"]'),i.width()>t&&i.attr("style",$f("width: {0}px !important;",t-20+"")))},resizeEditorInPlaceOverlay:function(){var t=this,s=this.$.find($f("#{0}:visible",this.config.gridId)),o=this.editorInPlace.$container.find("[rql-role='editor-in-place-container']"),r=this.$.find(".edit-in-place-overlay"),u,f,i,e;this.config.isFabric?o.css({"z-index":parseInt(r.css("z-index"))+1}):(o.width(s.width()),r&&r.length>0&&(u=this.$.find("table[rql-role='queue-grid-data-container']").first(),r.width(u.length>0?u.width()+u.offset().left:this.$.width()).height(this.$.height()).show()));this.config.isFabric&&this.editorInPlace.$container.length>0&&(this.editorInPlace.elementsWithOverlay&&this.editorInPlace.elementsWithOverlay.length>0&&n(this.editorInPlace.elementsWithOverlay).applyOverlay(!1),this.editorInPlace.elementsWithOverlay=[],i=this.editorInPlace.$container.parents("#"+this.config.QueueCollapsibleId),i.length===0&&this.config.UsesNestedQueues&&this.config.NestedQueueTopControl&&(i=this.editorInPlace.$container.parents("#"+this.config.NestedQueueTopControl.config.QueueCollapsibleId)),t.editorInPlace.$container.siblings("tr").each(function(i,r){t.queueElementOverlay(n(r));t.editorInPlace.elementsWithOverlay.push(n(r))}),i.length>0&&(i.find("tr").not(".edit-in-place, .nested-queue-row-container").each(function(i,r){n(r).closest(".edit-in-place").length===0&&(t.queueElementOverlay(n(r)),t.editorInPlace.elementsWithOverlay.push(n(r)))}),t.queueElementOverlay(f=i.find("[rql-role='queue-actions-toolbar']:visible").first()),t.editorInPlace.elementsWithOverlay.push(f),t.queueElementOverlay(f=i.find("[rql-role='pager']:visible").last()),t.editorInPlace.elementsWithOverlay.push(f)));e=this.config;e.Form&&e.Form.config.IsInPlace&&e.Form.raise("resize",{sender:this})},queueElementOverlay:function(n){if(n&&n.length!==0){var t,i=n.closest(".nested-queue");t=i.length>0?n.offset().top-i.offset().top:n.position().top;n.applyOverlay(!0,null,"<div/>",{width:n.outerWidth()+"px",height:n.outerHeight()+"px","background-color":"#fff",opacity:"0.50","z-index":1,top:t+"px"},function(n){n.preventDefault();n.stopImmediatePropagation()})}},mobileEditInPlaceByIndex:function(n){var t,i;this.editorInPlace.globalIndex=n;this.mobileEditInPlace()||(t=this.createRequest(),t.StartIndex=n+1<this.editorInPlace.count?n-10:this.editorInPlace.count-20,t.StartIndex<0&&(t.StartIndex=0),i={globalIndex:n,startIndex:t.StartIndex},$rql.http.post($rql.api.baseUrl.pathname+"queue/keys",t,i).done(this.onMobileEditInPlaceKeysResponse).fail(this.onMobileEditInPlaceKeysResponse))},mobileEditInPlace:function(t){var i=this.editorInPlace.globalIndex-this.editorInPlace.keysStartIndex,r,u,f,e;return i>=0&&i<this.editorInPlace.keys.length?(this.disable(),r=this.editorInPlace.keys[i],this.editorInPlace.oldView=this.editorInPlace.view,this.editorInPlace.$oldContainer=this.editorInPlace.$container,this.editorInPlace.view=this.editorInPlace.$container=null,this.editorInPlace.$queueActions=this.$.find("div[rql-role='queue-actions']"),this.editorInPlace.$grid=this.$.find("div[rql-role='Grid']:first, div[rql-role='Template']:first"),u=$rql.ui.templates("queue-edit-in-place").render(),this.editorInPlace.$container=n(u).insertAfter(this.editorInPlace.$grid),f={StoreId:r,ShowSaveAndNext:this.editorInPlace.globalIndex+1<this.editorInPlace.count,RecordNavigator:t&&t.hideRecordNavigator?undefined:{Index:this.editorInPlace.globalIndex,Count:this.editorInPlace.count},Arguments:this.editorInPlace.Arguments},e={loaded:this.onMobileEditInPlaceLoaded,saved:this.onMobileEditInPlaceSaved,cancelled:this.onMobileEditInPlaceCancelled,recordNavigate:this.onMobileEditInPlaceNavigate},this.editorInPlace.view=this.createEditInPlaceView(f,e),this.editorInPlace.view.control.refresh({State:this.editorInPlace.ViewInPlaceMode?"ViewInPlace":"EditInPlace"}),!0):!1},mobileOpenEditorInPlace:function(n){this.editorInPlace.globalIndex=this.editorInPlace.keysStartIndex=0;this.editorInPlace.count=1;this.editorInPlace.keys=[n];this.mobileEditInPlace({hideRecordNavigator:!0})},onMobileEditInPlaceKeysResponse:function(n,t,i){n&&n.Keys&&n.Keys.length!=0&&(this.editorInPlace.keys=n.Keys,this.editorInPlace.keysStartIndex=i.context.startIndex,this.mobileEditInPlace())||this.mobileCloseEditInPlace()},mobileCloseEditInPlace:function(){if(this.editorInPlace&&this.editorInPlace.view){this.disposeEditInPlace(!0,!0);this.editorInPlace.$queueActions.show();this.editorInPlace.$grid.show();var n=Math.floor(this.editorInPlace.globalIndex/this.config.DataPage.PageSize);(this.editorInPlace.changed||n!=this.config.DataPage.PageIndex)&&(this.config.DataPage.PageIndex=n,this.refresh({refreshTotals:this.editorInPlace.changed}),this.editorInPlace.changed=!1)}},onMobileEditInPlaceLoaded:function(){this.disposeEditInPlace(!1,!0);this.editorInPlace&&this.editorInPlace.view&&this.editorInPlace.$container&&(this.editorInPlace.$container.show(),this.editorInPlace.$queueActions.hide(),this.editorInPlace.$grid.hide());this.enable()},onMobileEditInPlaceSaved:function(n){n&&(n.changed&&(this.editorInPlace.changed=!0),n.action=="next"?this.mobileEditInPlaceRequestNextItem():n.action=="refresh"&&this.hasEventHandler("viewChange")?this.raise("viewChange",{sender:this,requiresRefresh:!0}):this.mobileCloseEditInPlace())},onMobileEditInPlaceCancelled:function(){this.mobileCloseEditInPlace()},onMobileEditInPlaceNavigate:function(n){var t=$rql.ui.getNavigatorIndex(this.editorInPlace.globalIndex,n.move,this.editorInPlace.count-1);(this.editorInPlace.globalIndex!=t||n.force)&&this.mobileEditInPlaceByIndex(t)},mobileEditInPlaceRequestNextItem:function(){var n=this.createRequest();n.CurrentIndex=this.editorInPlace.globalIndex;n.CurrentId=this.editorInPlace.view.StoreId;$rql.http.post($rql.api.baseUrl.pathname+"queue/nextitem",n).done(this.onMobileEditInPlaceNextItemResponse).fail(this.onMobileEditInPlaceNextItemResponse)},onMobileEditInPlaceNextItemResponse:function(n){n&&n.Id&&(this.editorInPlace.keys=[n.Id],this.editorInPlace.keysStartIndex=n.Index,this.editorInPlace.globalIndex=n.Index,this.mobileEditInPlace())||this.mobileCloseEditInPlace()},onDrillDown:function(n){var f,t,h;n.stopPropagation();n.preventDefault();var u=this.getRowActionRqlAttrs(n),e=u?u.argument:null,c=u.rowIndex?e+":"+u.rowIndex:e;if(e){var r=this.config.DataPage,s=r.Keys[u.rowIndex],i=[],o="";if(i.push(e),i.push(this.getViewId()),r.DrillDownItems)for(f=r.DrillDownItems[u.rowIndex],t=0;t<r.DrillDownProperties.length;t++)i.push(r.DrillDownProperties[t]),i.push(f[t]),o+=f[t];else for(f=r.Items[u.rowIndex],t=0;t<r.Properties.length;t++)i.push(r.Properties[t].Name),i.push(f.Values[t].Value),o+=f.Values[t].Value;i.push("StoreId");i.push(s);h=$rql.api.getStoreIdFromUrl($rql.http.uri().pathname);$rql.api.drillDown({context:i,target:c,key:s,pageFilters:this.PageFilters,hash:o.hashCode(),contextStoreId:h})}},onNavigateToFinding:function(t){var i=this.getRowActionRqlAttrs(t),r=this.getKeyByIndex(i.rowIndex);i.argument&&r?n(t.target).attr("rql-finding",r):t.stopPropagation()},onDownloadArtifacts:function(n){var t=this.getRowActionRqlAttrs(n),i=this.getKeyByIndex(t.rowIndex);window.open("/rql/Form/Artifacts/"+i+"?Queue="+this.config.Id+(t.urlarguments?"&"+t.urlarguments:""))},onDeleteSavedFilter:function(t){var i=this,u=n(t.currentTarget).attrs().rql.data,r;delete this.showFiltersOnRefresh;this.config.isFabric&&(r=i.$.find($f("#{0}_ManageFiltersDialog",i.config.gridId)),r.modal("hide"));this.saveSettings(!1,null,u).done(function(){if(i.updateCurrentFilterName(),i.$.find("div[rql-role='filter-summary']").is(":visible")&&(i.prepareFilterSummary(),i.$.find("div[rql-role='filter-summary']").replaceWith(i.config.FilterSummary).widgetize()),i.success($rql.i18n.strings.ChangesSaved),!i.config.isFabric&&i.config.FilterSets.length>0){var n=i.$.find($f("[rql-role='filters'][grid-id='{0}']",i.config.gridId));n.html($rql.ui.templates("queue-filters-manage").render(i.config)).widgetize();n.show().focus()}})},mapReady:function(t){var i=this.config,r=$rql.ui.templates(this.mode.Type.toLowerCase()).render(n.extend(i.TemplateData,this.mode.ModeProperties,i.MapProperties?i.MapProperties:{},{Id:i.Id}));t.eval(r);i.Map=t.map;this.updateMapProperties()},updateMapProperties:function(){var n=this.config,t={};n.Map&&(t.zoom=n.Map.getZoom(),t.center=n.Map.getCenter().toString().replace("(","").replace(")",""));n.MapProperties=t},updateCurrentFilterName:function(){var r=this.config.FilterSets,i=this.config.Filters,t="";n(r).each(function(n,r){var e=!0,u,f;if(i.length===r.Filters.length)for(u=0;u<r.Filters.length;u++){for(f=0;f<r.Filters[u].length;f++)if(i[u][f]!==r.Filters[u][f]){e=!1;break}if(!e)break}else e=!1;e&&(t=r.Title)});t===""?(this.removeViewSetting(this.getViewSettingName("Filter")+"$Filter_Name"),this.config.FilterName&&delete this.config.FilterName):(this.config.FilterName=t,this.setViewSetting(this.getViewSettingName("Filter")+"$Filter_Name",t))},getFilterDefaultName:function(){var r=[],i,t;return!this.config.FilterItems||this.config.FilterItems.length===0?"":(n(this.config.FilterItems).each(function(n,t){var i=$f("{0} {1} {2}",t.Property,t.Operator,t.Values?t.Values.map(function(n){return n.Value}).join():"");r.push(i)}),i=0,t=[],this.config.FilterSets.map(function(n){var i=/_Filter(\d+)/gi.exec(n.Title);i&&i.length>1&&t.push(parseInt(i[1]))}),i=t.length>0?Math.max.apply(null,t):this.config.FilterSets.length,$f("{0}_Filter{1}",r.join(" and ").substring(0,100),i+1))},closeDropDown:function(t){var r=".open.open-dropdown",u="open open-dropdown",f=$rql.api.uiVersion>2,i;f&&(r=".dropdown-menu.show",u="show");i=t?n(t).parents(r):n(document).find(r);i&&(i.removeClass(u),f&&i.parents(".input-group").removeClass(u))},onShowMultiSelectDtPicker:function(t){var r,o;if($rql.api.uiVersion>2){var e=this,s=this.config,f=n(t.target).closest("div[rql-role='multi-select']"),i=f.find("input[rql-role='dtInput']"),u=i.attr("rql-type");i.length===1&&(r=i.data("rql.ui.control").config,u==="Time"&&(o=new $rql.ui.controls.timepicker(i,r),o.render()),setTimeout(function(){var t;u!=="Time"?(n.extend(r,{afterSet:function(){e.onMultiSelectDtPickerUpdated(null,{$select:f.find("select"),inputType:u,$input:i})}}),t=new $rql.ui.controls.datepicker(i,r)):(n.extend(r,{afterDone:function(){e.onMultiSelectDtPickerUpdated(null,{$select:f.find("select"),inputType:u,$input:i})}}),t=new $rql.ui.controls.timepicker(i,r));t.render()},0))}else this.makeDateTimeInputVisible(t),window.thePicker||(window.thePicker=new $rql.ui.controls.dtpicker),window.thePicker.show(t)},onMultiSelectDtPickerUpdated:function(t,i){var u,e,r,o,f,s,h,a;if($rql.api.uiVersion>2?(u=i.$select,e=i.inputType,r=$rql.api.dataTypes[i.inputType],s=i.$input.attr("data-value")||i.$input.rqlval(),o=r.format(r.fromJson(s)),f=e==="Date"?o:s):(this.handleDtPickerClose(t),u=n(t.target).parents("[rql-role='multi-select']").find("select"),e=n(t.target).attrs().rql.type,r=$rql.api.dataTypes[e],o=r.format(r.fromJson(n(t.target).rqlval())),f=n(t.target).rqlval()),h=moment(r.fromJson(f)),u.length>0){switch(e){case"Timestamp":f=h.seconds(0).valueOf();break;case"DateTime":f=h.seconds(0).format("YYYY-MM-DDTHH:mm:ss")}a=new Option(o,f,!0,!0);u.append(a);var v=u.attrs("rql-filter-index","rql-property"),c=this.config.FilterSets.WorkingSet.Filters[v.rql.filterindex],l=u.val();c.length=2;l&&l.length>0?c.addRange(l.slice(0)):c[2]=""}},onDtPickerCancelled:function(n){this.handleDtPickerClose(n)},makeDateTimeInputVisible:function(t){if(this.isDesktop()){var o=n(t.target).closest("div[rql-role='multi-select']"),i=o.find("input[rql-role='dtInput']"),f=i.attr("rql-type"),r=o.find("span.select2"),e=r.find("ul");if(i.length===1&&(f==="DateTime"||f==="Timestamp"||f==="Time")&&r.length===1&&e.length===1){this.dtPickerTempInfo={input:i,itemsContainer:r};i.val("").attr("rql-value","");var c=r.outerWidth(),l=r.outerHeight(),s=r.offset(),h=s.top,a=e.find("li.select2-search"),u=e.find("li:not(.select2-search)").last();u.length===1&&(h=u.offset().top+u.outerHeight());i.toggleClass("hide",!1).css({position:"absolute","box-sizing":"border-box"}).offset({top:h,left:s.left}).outerWidth(c);u.length===1&&u.offset().top>=a.offset().top&&r.height(l+i.height()+Math.round((i.outerHeight()-i.height())/2))}}},handleDtPickerClose:function(){this.dtPickerTempInfo&&(this.dtPickerTempInfo.input.toggleClass("hide",!0),this.dtPickerTempInfo.itemsContainer.height(""),this.dtPickerTempInfo=null)},renderQueueToolbarMenu:function(){var n,t;if($rql.api.uiVersion>2){if(n=this.$.find("[rql-role='moreActionsMenu']").closest(".dropdown"),n.length>0){n.on("shown.bs.dropdown",this.onQueueDropdownOpen);n.on("hidden.bs.dropdown",this.onQueueDropdownClose)}if(this.config.HasSavedFilters&&(t=this.$.find("[rql-role='toggle-filter-edit']"),t.length>0))t.on("shown.bs.dropdown",this.onQueueDropdownOpen).on("hidden.bs.dropdown",this.onQueueDropdownClose)}},handleHorizontalScroll:function(){if(this.mode){var i=this,t=this.mode.$.find('[rql-role="queue-main-container"]');t.on("scroll",function(){n.doTimeout("scroll",250,function(){var n=t.find(".dropdown-menu.show");n.length>0&&n.find("[rql-status='loading']").length===0&&(n.removeClass("show"),n.closest('[rql-role="quick-filter-dropdown"]').removeClass("show"))})})}},onScroll:function(t){var r=this.$.find("[rql-role='moreActionsMenu']:visible").length>0,i;r&&(i=this.$.find("[rql-role='queueFixedActionButtons']"),n(t.currentTarget).scrollTop()>100&&i.removeAttr("hidden"),n(window).scrollTop()+n(window).height()===n(document).height()&&i.attr("hidden",""))},toggleCollapse:function(t,i){var r=this,u=this.config;u.CollapsedState=i;u.QueueSet||n(t).find(".collapse").length!==0?u.QueueSet?r.onResize():n(t).find(".collapse").on("shown.bs.collapse",function(){r.onResize()}).collapse(i):r.setGridScrollable()},onQueueCollapse:function(n){if(!this.config.IsLookup){var t=n?n.type:"hide";this.config.CollapsedState!=t&&(this.config.CollapsedState=t,this.saveSettings(!0,!1))}},onLastQueueRendered:function(){var t=this.page,i,n;(!t&&this.config.Form&&(t=this.config.Form.page),t)&&(i=t.config.Views,n=i.where(function(n){return n.Type==="Queue"}),n.length===0?this.toggleCollapse(this.$,"show"):n.any(function(n){return!n.control.rendered})||n.any(function(n){return n.control.config.CollapsedState==="show"})||this.toggleCollapse(n[0].control.$,"show"))},adjustRowHeight:function(){var t=this,r=isNaN(this.config.RowHeight)?0:parseInt(this.config.RowHeight),i;r!==0&&(i=this.$.find("[rql-role='queue-grid-data-container'] > tbody tr"),i.each(function(i,r){n(r).find("> td").each(function(i,r){var u=n(r).find("[rql-role='cell-text']");!t.config.TextLineHeight&&u.length>0&&(t.config.TextLineHeight=$rql.ui.getTextLineHeight(u));t.config.isFabric&&!$rql.isUndefined(t.config.TextLineHeight)&&t.config.TextLineHeight>0&&u.css({"max-height":t.config.TextLineHeight*t.config.RowHeight+"px"});$rql.ui.isTextTruncated(u)||n(r).find("[rql-role='cell-collapse-toggle']").hide()})}))},toggleTruncateForCell:function(n,t,i){if(n.length!==0){var r=n.find("[rql-role='cell-text']"),u=n.find("[rql-role='cell-collapse-toggle'] > a");r.css({"max-height":i?"":t+"px"});u.toggleClass("expanded",i)}},toggleTrancateForQueue:function(t){if(this.config.RowHeight){var i=this,r=this.config.TextLineHeight*parseInt(this.config.RowHeight),u=this.$.find("[rql-action='toggleTruncateAll']:first"),f=this.$.find("[rql-role='queue-grid-data-container']:first"),e=f.find("> tbody > tr[rql-index] > td");u.toggleClass("expanded",t);e.each(function(u,f){i.toggleTruncateForCell(n(f),r,t)})}},onToggleTruncateAll:function(t){var r,i,u;t.stopPropagation();t.preventDefault();r=n(t.currentTarget);i=!r.hasClass("expanded");this.toggleTrancateForQueue(i);u=this.$.find("[rql-embed][rql-view-type='queue']");u.each(function(n,t){var r=$rql.ui.get(t);r&&r.toggleTrancateForQueue(i)})},onToggleTextContainer:function(t){t.stopPropagation();t.preventDefault();var i=n(t.currentTarget),r=!i.hasClass("expanded"),u=this.config.TextLineHeight*parseInt(this.config.RowHeight);this.toggleTruncateForCell(i.closest("td"),u,r)},onQueueDropdownReposition:function(t){var i=n(t.currentTarget).closest("th[rql-property]"),r=n(t.currentTarget).find(".dropdown-menu"),f=n(t.currentTarget).closest('[rql-role="queue-grid-data-container"]');if(r.length>0){var u=f.closest(".table-responsive"),e=u.length>0?u.scrollLeft():0,o=i.position().left-e;r.css({left:o,top:i.position().top+i.outerHeight()})}},onQueueDropdownOpen:function(t){var i=n(t.currentTarget);(n(t.currentTarget).attr("rql-role")==="quick-filter-dropdown"||n(t.currentTarget).attr("rql-role")==="quickfilter-toggle")&&(i=n(t.currentTarget).closest(".table-responsive"));this.$parentContainers=$rql.ui.setContainerOverflow(i)},onQueueDropdownClose:function(){$rql.ui.restoreContainerOverflow(this.$parentContainers)},onQuickSearchFocus:function(t){var r=this.$.find("[rql-role='queue-grid-data-container']"),u,f,i,e,o;if(t.type==="focusin"){if(this.config.ColumnsNotSearcheable||(u=this.config.DataPage,f=[],n(u.Properties).each(function(n,t){u.SearchProperties.any(function(n){return n.Name===t.Name})||f.push({Name:t.Name,Index:t.Index})}),this.config.ColumnsNotSearcheable=f),this.mode&&this.mode.Type.indexOf("Grid")>-1)for(i=0;i<this.config.ColumnsNotSearcheable.length;i++)e=this.config.ColumnsNotSearcheable[i],o=r.find($f("th[rql-property='{0}']",e.Name)).index(),r.find($f("thead th:nth-child({0}), tbody td:nth-child({0})",o+1)).addClass("muted")}else r.find("thead th, tbody td").removeClass("muted")},setGridScrollable:function(){var t=this.config,i,r;if(t.FixedHeight&&(t.Mode==="Grid"||t.Mode==="EditableGrid"||t.QueueSet)&&(i=this.$.find("table:visible").first(),i.length>0)){var e=i.closest(".table-responsive"),s=i.find("thead tr:first").children(),h=i.find("tbody tr:first").children(),f=h.map(function(){return n(this).outerWidth()}).get(),o=s.map(function(){return n(this).outerWidth()}).get(),u=[];for(r=0;r<f.length;r++)u.push(f[r]>o[r]?f[r]:o[r]);i.find("thead tr, tbody tr").children().each(function(i,r){var o=i%u.length,e=t.DataPage.Properties[o].HeaderStyle,f,s,h;e?(f=$rql.ui.parseInlineStyle(e),f.minWidth||f.maxWidth?(f.minWidth?f.maxWidth?n(r).attr("style",e):s=f.minWidth.value:h=f.maxWidth.value,(s||h)&&(s||(e+=";min-width:"+h),h||(e+=";max-width:"+s),n(r).attr("style",e))):n(r).css({"min-width":u[o]+"px","max-width":u[o]+"px"})):t.FabricMobileBreakpoint?n(r).removeAttr("style"):n(r).css({"min-width":u[o]+"px","max-width":u[o]+"px"})});t.FabricMobileBreakpoint?(e.removeClass("table-scrollable"),i.removeClass("table-fixed"),i.find("tbody").removeAttr("style")):(e.addClass("table-scrollable"),i.addClass("table-fixed"),i.find("tbody").css({height:t.FixedHeight.height}));!t.FabricMobileBreakpoint&&($rql.isUndefined(t.FixedHeight.scrollindicator)||t.FixedHeight.scrollindicator!==!1)&&this.setScrollIndicator()}},setScrollIndicator:function(){var r=function(n,t,i,r){var u=n.find($f("[rql-role='queue-scroll-indicator-{0}']",i)),f="0",e="0",o="";switch(i){case"down":f=t.find("tbody")[0].getBoundingClientRect().bottom-40+"px";e=n.width()/2-20+"px";o="vertical";break;case"right":f=t.find("tbody")[0].getBoundingClientRect().top+"px";e=n.width()-40+"px";o="horizontal"}u.css({top:f,left:e});$rql.ui.isVisibleInContainer(r,n,o,!0)?u.hide():u.show().fadeOut(2e3)},u=this.config.FixedHeight.scrollindicator?this.config.FixedHeight.scrollindicator.toLowerCase():"both",i=this.$.find("table:visible").first(),t=i.closest(".table-responsive"),f=i.find("thead th:last"),e=i.find("tbody tr:last");if(u==="both"||u==="right"){t.find("[rql-role='queue-scroll-indicator-right']").length===0&&(t.append($rql.ui.templates("queue-grid-items").render({GridIndicator:!0,Direction:"right"})),t.find("[rql-role='queue-scroll-indicator-right']").css({position:"fixed"}));t.off("scroll").on("scroll",function(){n.doTimeout("scroll",250,function(){r(t,i,"right",f)})});r(t,i,"right",f)}if(u==="both"||u==="down"){t.find("[rql-role='queue-scroll-indicator-down']").length===0&&(t.append($rql.ui.templates("queue-grid-items").render({GridIndicator:!0,Direction:"down"})),t.find("[rql-role='queue-scroll-indicator-down']").css({position:"fixed"}));i.find("tbody").off().on("scroll",function(){n.doTimeout("scroll",250,function(){r(t,i,"down",e)})});r(t,i,"down",e)}},onGoToTop:function(){n("html, body").scrollTop(this.$.offset().top)}};f.registerClass("$rql.ui.controls.queue",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.pagefilter=function(n,i){t.initializeBase(this,[n,i]);this.on({change:this.onChange})};t.prototype={initialize:function(t){if(this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"queue/"},i,t,{ElementId:this.$.attr("id")}),this.config.IsCheckboxFilter){this.$checkboxFilterContainer=this.$.closest('[rql-role="app-side-nav-container"]');this.on({applyFilter:this.onApplyCheckboxFilter,toggleHideShowItems:this.toggleHideShowItems})}},render:function(){if(!this.rendered){if(this.$.html($rql.ui.templates("view-loading").render(this.config)),this.config.IsCheckboxFilter){this.$toggleButton=this.$checkboxFilterContainer.find("[rql-role='side-nav-toggle']");this.$toggleButton.on("click",this.onToggleSideNav);$rql.events.on("resize",this.onResize);var n=this.getSideNavState();this.onToggleSideNav({state:n})}this.widgetize()}},onRendered:function(){this.initialRender||($log.debug($f("Requesting page filter {0}",this.config.Id)),this.refresh(),this.rendered=!0,this.initialRender=!0);this.config.IsCheckboxFilter&&this.onResize()},refresh:function(){this.rendered&&this.disable();$log.debug($f("Refreshing page filter {0}",this.config.Id));this.post("",this.createRequest(),null).done(this.onRefreshResponse).fail(this.error)},createRequest:function(){var n={AppName:this.config.AppName,ViewName:this.config.ViewName,PageIndex:0,PageSize:200,IncludeHiddenColumns:!0,PageFilters:this.PageFilterValues&&this.PageFilterValues.length?this.PageFilterValues:null,DrillDownContext:this.config.DrillDownContext};return this.config.AccessToken&&(n.AccessToken=this.config.AccessToken),n},onRefreshResponse:function(t){var i=this.config=n.extend(this.config,t),s=this,r,f,e,u,h,o;if($log.debug($f("Loading page filter {0}",i.Id)),t.DataPage)if(r=t.DataPage,r.Headers&&r.Headers.length!=0&&(i.Title=r.Headers[0]),i.NormalizedId=i.Id.replace(".","_"),r.Items&&r.Items.length>0)for(f=r.Items,e=i.PageFilterCount>=2?6:20,i.IsCheckboxFilter&&(r.Items.length>e&&s.setShowAllLessToggle(!0),r.ShowMoreLessToggle=r.Items.length>e),u=0;u<f.length;u++)h=f[u],f[u]={Key:u,Value:h[0],Values:h,NormalizedId:i.NormalizedId},i.IsCheckboxFilter&&u>e-1&&(f[u].IsHidden=!0);else r.Empty=!0,i.IsCheckboxFilter&&this.selectedValues&&(this.selectedValues=[],this.setPersistence());if(this.$.html($rql.ui.templates("page-filter").render(i)),o=this.getPersistence(),i.DataPage.Items.length!=0&&(i.IsCheckboxFilter?(this.selectedValues=o,this.restoreCheckboxListState()):n("select",this.$).val(o?o:i.DataPage.Items[0].Key)),this.widgetize().enable(),this.raise("pageFilterReady",{id:i.Id}),$rql.api.uiVersion>2&&!i.IsCheckboxFilter)this.$.find("select.rql-select2").on("change",function(){s.setPersistence();s.raise("pageFilterChange",{id:i.Id})})},onChange:function(n){n.stopPropagation();this.setPersistence();this.raise("pageFilterChange",{sender:this,id:this.config.Id})},getFilterValues:function(){var u,f,o,r,e,t,i;if(this.config.IsCheckboxFilter){if(u=this.selectedValues,u){for(t=[this.config.Id],f=0;f<u.length;f++)if(r=this.config.DataPage.Items.findByKey("Key",u[f].Key),r){for(e=this.config.DataPage.Items.indexOf(r),i=0;i<this.config.DataPage.Properties.length;i++)t.push(this.config.DataPage.Properties[i]),t.push(r.Values[i]);t.push("StoreId");t.push(this.config.DataPage.Keys[e])}return t}}else if(o=n("select",this.$).val(),o&&(r=this.config.DataPage.Items.findByKey("Key",o),r)){for(e=this.config.DataPage.Items.indexOf(r),t=[this.config.Id],i=0;i<this.config.DataPage.Properties.length;i++)t.push(this.config.DataPage.Properties[i]),t.push(r.Values[i]);return t.push("StoreId"),t.push(this.config.DataPage.Keys[e]),t}return null},setPersistence:function(){if(this.config.IsCheckboxFilter&&this.selectedValues)this.setViewSetting("pf_checkbox",this.selectedValues,!1);else{var t=n("select",this.$).val();t&&this.setViewSetting("key",t,!1)}},getPersistence:function(){return this.config.IsCheckboxFilter?this.getViewSetting("pf_checkbox",!1):this.getViewSetting("key",!1)},onResize:function(){var t=this,i=this.$checkboxFilterContainer;n.doTimeout("pagefilter_resize",250,function(){var n=i.find('[rql-role="app-side-nav-container"]');n.length===0&&(n=t.$);t.$toggleButton&&t.$toggleButton.is(":visible")&&n&&n.length>0&&(t.$toggleButton.css({"margin-top":"90px","margin-left":n.width()-18+"px"}),$rql.ui.isElementInView(t.$toggleButton[0])||t.$toggleButton.css("margin-top","10px"))})},onToggleSideNav:function(n){var i=this.$checkboxFilterContainer,t=i.addBack('[rql-role="app-side-nav-container"]');t.length!==0&&(n&&n.state?n.state==="expanded"?t.removeClass("dock"):t.addClass("dock"):t.toggleClass("dock"),t.hasClass("dock")?(this.$toggleButton.find("i").removeClass("fa-angle-double-left").addClass("fa-angle-double-right"),this.saveSideNavState("collapsed")):(this.$toggleButton.find("i").removeClass("fa-angle-double-right").addClass("fa-angle-double-left"),this.saveSideNavState("expanded")),n&&n.target&&n.stopImmediatePropagation())},onApplyCheckboxFilter:function(t){this.selectedValues||(this.selectedValues=[]);var i=n(t.currentTarget).attr("rql-property"),r=n(t.currentTarget).attr("rql-value"),u=n(t.currentTarget).siblings($f("#{0}",n(t.currentTarget).attr("for"))).is(":checked");u?this.selectedValues.remove(function(n){return n.Key===i}):this.selectedValues.add({Key:i,Values:r});this.setPersistence();this.raise("pageFilterChange",{sender:this,id:this.config.Id})},toggleHideShowItems:function(){var t=this.$.find("[rql-role='page-filter-term']"),r=t.toArray().any(function(t){return n(t).is(":hidden")}),u,i;if(r)t.filter(":hidden").show(),this.setShowAllLessToggle(!1);else{for(u=this.config.PageFilterCount>=2?6:20,t.hide(),i=0;i<u;i++)n(t[i]).show();this.setShowAllLessToggle(!0)}this.setViewSetting("showAll",r?!0:!1,!1)},setShowAllLessToggle:function(n){this.$.find('[rql-action="toggleHideShowItems"]').html(n?$rql.i18n.strings.ShowAll:$rql.i18n.strings.ShowLess)},saveSideNavState:function(n){n==null&&(n="expanded");this.setViewSetting("sidenav",n,!1)},getSideNavState:function(){return this.getViewSetting("sidenav",!1)||"expanded"},restoreCheckboxListState:function(){var n,t;if(this.selectedValues)for(n=this,t=0;t<this.selectedValues.length;t++)n.$.find($f("#{0}_{1}",n.config.NormalizedId,n.selectedValues[t].Key)).prop("checked",!0)}};t.registerClass("$rql.ui.controls.pagefilter",$rql.ui.controls.view)})(jQuery);
(function(n){var i={IsSelectDropdown:!1,Template:$rql.ui.templates("tab-nav"),ContentTemplate:$rql.ui.templates("tab-nav-content"),ItemTemplate:$rql.ui.templates("tab-nav-items"),RenderContentArea:!0,TabLinkString:'<li rql-tab="{{Id}}"><a href="#{{Id}}" data-toggle="tab"><span class="tab-header">{{Header}}<\/span><\/a><\/li>'},t=$rql.ui.controls.tabnav=function(n,i){t.initializeBase(this,[n,i])};t.prototype={add:function(t,i,r,u){var f=this.config,s=this.$NavTabs.find("li").length,i=typeof i!="undefined"&&i!==null?i:s==0?0:s-1,r=typeof r!="undefined"&&r!==null?r:!0,e={Id:t[0],Header:t[1],Content:t[2],HasClose:t[3]==="undefined"?!1:t[3]},o;u!=="undefined"&&(e=n.extend({},e,u));o=$f("li:eq({0})",i);f.IsSelectDropdown&&(this.$NavTabs.find(o).after($rql.ui.render(f.TabLinkString,e)),o=$f("option:eq({0})",i));i!=0?(this.$NavTabs.find(o).after(f.ItemTemplate.render(e)),this.$Dropdown.find($f("li:eq({0})",i)).after(f.ItemTemplate.render(e))):(this.$NavTabs.append(f.ItemTemplate.render(e)),this.$Dropdown.append(f.ItemTemplate.render(e)));f.RenderContentArea&&(i!=0?this.$Content.find($f(".tab-pane:eq({0})",i)).after(f.ContentTemplate.render(e)):this.$Content.append(f.ContentTemplate.render(e)));r&&this.show(t[0]);this.refresh()},bindEvents:function(){this.on({closeTab:this.closeTab,showTab:this.showTab,activateTab:this.onActivateTab}).$.on("shown","[rql-tab]",this.onShown);$rql.events.on("resize",this.resize)},closeTab:function(t){var i=this.config,r=this.$NavTabs.find("li").length;if(i.DoNotCloseFirstTab&&r==1){$rql.ui.cancel(t);return}var u=n(t.currentTarget).parents("[rql-tab]"),f=u.attr("rql-tab"),e=n(t.currentTarget).parents("a[data-toggle='tab']").attr("href");this.raise("closed",t);this.$.find($f("li[rql-tab='{0}']",f)).remove();$rql.ui.cancel(t);this.raise("tabClosed",t)},initialize:function(t){var r=this.config=n.extend({Data:this.prepData(t)},i,t);this.bindEvents();this.render()},dispose:function(){$rql.events.off("resize",this.resize);t.callBaseMethod(this,"dispose")},onChange:function(){this.show(this.$NavTabs.find("option:selected").attr("rql-tab"))},onShow:function(n){this.$NavTabs.find($f("a[href='{0}']",n)).tab("show")},onShown:function(){var t=this.config,n=this.$.find("[rql-tab].active").attr("rql-tab");t.IsSelectDropdown&&this.$NavTabs.find("select").val()!=n?this.$NavTabs.find("select").val(n):(this.$Dropdown.find(".active").removeClass("active"),this.$Dropdown.find($f('[href="#{0}"]',n)).parents("li").addClass("active"));this.raise("shown",{id:n})},prepData:function(t){var u={Headers:[],Contents:[]},i,r;if(!t.data)return u;for(i=0;i<t.data.length;i++)r=t.data,u.Headers[i]={Id:r[i][0],Header:r[i][1],HasClose:r[i][3]==="undefined"?!1:r[i][3]},u.Contents[i]={Id:r[i][0],Content:r[i][2]},t.extendData&&(t.extendDataHeaders&&n.extend(u.Headers[i],t.extendDataHeaders[i]),t.extendDataContents&&n.extend(u.Contents[i],t.extendDataContents[i]));return u},refresh:function(){this.widgetize();this.resize()},remove:function(n){var t=this.config;this.$NavTabs.find($f("[href='{0}']",n)).parent("li").remove();t.IsSelectDropdown&&this.$NavTabs.find($f("option[rql-tab='{0}']",n.replace("#",""))).remove();this.$Dropdown.find($f("[href='{0}']",n)).parent("li").remove();t.RenderContentArea&&this.$Content.find($f("#tab_{0}",id)).remove();this.$NavTabs.find(".active").length==0&&this.show(this.$NavTabs.find("li:first-child > a").attr("href").substr(1));this.refresh();this.raise("remove",this)},rename:function(n,t){this.$NavTabs.find($f("[href='{0}'] .tab-header",n)).text(t);this.$Dropdown.find($f("[href='{0}'] .tab-header",n)).text(t)},render:function(){var t=this.config;if(this.$.html(t.Template.render(t,{"tab-nav-content":t.ContentTemplate.html,"tab-nav-items":t.ItemTemplate.html})),this.$NavTabs=this.$.find('[rql-role="tabnav"]'),this.$NavTabs.find("[rql-role='tabselect']").length>0){t.IsSelectDropdown=!0;this.$NavTabs.find("[rql-role='tabselect']").on("change",n.proxy(this.onChange,this))}this.$Dropdown=this.$.find(".dropdown-menu");t.RenderContentArea&&(this.$Content=this.$.find(".tab-content"));t.tabsOffset={};t.Data.Headers[0]&&this.show(t.Data.Headers[0].Id);this.$.find(".dropdown-menu > [rql-tab] > a").attr("rql-action","showTab");this.widgetize();this.resize()},resize:function(){var t=0,i=this.config,r=this.$NavTabs,u=r.width();r.children("li").each(function(){i.tabsOffset[n(this).children("a").attr("href")]=t;t+=n(this).outerWidth()});i.tabWidth=t;t>u-20?this.$.find('[rql-role="tab-navigation"]').addClass("overflow"):this.$.find('[rql-role="tab-navigation"]').removeClass("overflow")},scrollToTab:function(n){var t=this.config,i=this.$NavTabs.find($f('[href="{0}"]',n)).parent("li"),r=this.$NavTabs.width();offsetLeft=-t.tabsOffset[n];offsetLeft=offsetLeft<-(t.tabWidth-r)?-(t.tabWidth-r)+this.$NavTabs.find("li:first-child").width():offsetLeft;offsetLeft=offsetLeft>0?0:offsetLeft;this.$NavTabs.find("li:first-child").css("margin-left",offsetLeft);i.is(":first-child")?this.$.find('[rql-action="prev"]').attr("disabled","disabled"):this.$.find('[rql-action="prev"]:disabled').removeAttr("disabled");i.is(":last-child")?this.$.find('[rql-action="next"]').attr("disabled","disabled"):this.$.find('[rql-action="next"]:disabled').removeAttr("disabled");this.show(n)},show:function(n){this.onShow($f("#{0}",n.startsWith("#")?n.slice(1):n))},showTab:function(t){this.onShow(n(t.currentTarget).attr("href"))},scrollTabIntoView:function(n){var r=this.$NavTabs.offset(),t=this.$NavTabs.find($f('[href="{0}"]',n)).parent("li"),i=this.$.find("[rql-role='tab-navigation'] a[rql-direction='left']"),u=this.$.find("[rql-role='tab-navigation'] a[rql-direction='right']"),e=i.offset().left+i.outerWidth(),f=u.offset().left;t.offset().left<i.offset().left+i.outerWidth()?(this.$NavTabs.offset({top:r.top,left:r.left+e-t.offset().left}),u.removeAttr("disabled")):t.offset().left+t.outerWidth()>f&&(this.$NavTabs.offset({top:r.top,left:r.left-(t.offset().left+t.outerWidth()-f)}),i.removeAttr("disabled"));this.show(n)},onActivateTab:function(t){t.preventDefault();t.stopPropagation();var i=n(t.currentTarget).attr("href");this.scrollTabIntoView(i)}};t.registerClass("$rql.ui.controls.tabnav",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Template:$rql.ui.templates("tabs")},t=$rql.ui.controls.tabs=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Data:this.prepData(t)},i,t);this.render();$rql.events.on("resize",this.onResize)},dispose:function(){$rql.events.off("resize",this.onResize);this.detachFlexMenu();t.callBaseMethod(this,"dispose")},onShown:function(){var n=this.$.find("[rql-tab].active").attr("rql-tab");this.raise("shown",{id:n})},prepData:function(t){var u={Headers:[],Contents:[]},i,r;if(!t.data)return u;for(i=0;i<t.data.length;i++)r=t.data,u.Headers[i]={Id:r[i][0],Header:r[i][1],HasClose:r[i][3]==="undefined"?!1:r[i][3]},u.Contents[i]={Id:r[i][0],Content:r[i][2]},t.extendData&&(t.extendDataHeaders&&n.extend(u.Headers[i],t.extendDataHeaders[i]),t.extendDataContents&&n.extend(u.Contents[i],t.extendDataContents[i]));return u},refresh:function(){this.widgetize()},render:function(){var n=this.config;this.config.Data.Headers.length>0&&(n.SelectedTag=this.config.Data.Headers[0].Header);this.$.html(n.Template.render(n,{"workbook-toolbar":$rql.ui.templates("workbook-toolbar").html}));this.$NavTabs=this.$.find('[rql-role="tabnav"]');this.attachFlexMenu();this.on({tabSelected:this.onTabSelected}).widgetize()},onRendered:function(){if(this.$NavTabs.find("li.active").length===0){var n=this.$NavTabs.find("li.nav-item > a[rql-tab]").attr("rql-tab");this.show(n)}},show:function(n){this.reattachedFlexMenu();this.$NavTabs.find("li.active, a.active").removeClass("active");var t=this.$NavTabs.find($f("li.nav-item > a[rql-tab='{0}']",n));t.addClass("active");t.parent("li").addClass("active");this.$.find("[rql-role='selectedTag']").html(t.html());t.parents(".flexMenu-popup").length>0&&t.parents(".flexMenu-popup").parent("li").children("a.nav-link").addClass("active")},onTabSelected:function(t){t.preventDefault();t.stopPropagation();this.$.find(".flexMenu-popup").is(":visible")&&this.$.find(".flexMenu-popup").hide();var r=this.$NavTabs.find("a.active"),i=n(t.currentTarget);(this.$.find("ul.dropdown-menu.show").removeClass("show"),this.config.SelectedTag=i.html(),this.$.find("[rql-role='selectedTag']").html(this.config.SelectedTag),r.attr("rql-tab")!==i.attr("rql-tab"))&&(this.raise("shown",{id:i.attr("rql-tab")}),this.show(i.attr("rql-tab")))},onResize:function(){this.$NavTabs&&!this.$NavTabs.is(":visible")&&(this.flexMenuShouldBeReattached=!0)},attachFlexMenu:function(){this.$NavTabs&&this.$NavTabs.length!==0&&this.$NavTabs.flexMenu({navitemCss:"nav-item d-flex-0",linkText:$rql.i18n.strings.More,linkTextAll:$rql.i18n.strings.Menu,cutoff:0,threshold:0})},detachFlexMenu:function(){this.$NavTabs&&this.$NavTabs.length!==0&&this.$NavTabs.flexMenu({undo:!0})},reattachedFlexMenu:function(){this.flexMenuShouldBeReattached&&(this.flexMenuShouldBeReattached=!1,this.detachFlexMenu(),this.attachFlexMenu())}};t.registerClass("$rql.ui.controls.tabs",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.timer=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var i=this.config=n.extend({AllowOverride:!1,IsMonitor:!1,IsRunning:!1,Hidden:!1},t,{DisplayValue:t.Value?this.getDisplayValue(t.Value):"",IsWorkbook:t.Form.config.Type=="Workbook",TopicId:t.TopicId?t.TopicId:t.Form.config.TopicId,TagId:t.TagId?t.TagId:t.Form.config.SelectedTag?t.Form.config.SelectedTag.Id:null,TopicText:t.TopicText?t.TopicText:t.Form.config.SelectedTag?t.Form.config.SelectedTag.SelectedTopic.Text:"",InlineTopicId:t.InlineTopicId?t.InlineTopicId:t.Form.config.SelectedTag&&t.Form.config.SelectedTag.InlineTopicId?t.Form.config.SelectedTag.InlineTopicId:this.$.parents("div[rql-inline-id]").length>0?this.$.parents("div[rql-inline-id]").attrs().rql.inlineid:null,TimerId:t.ContextName+"__timer_"+t.Id,UId:t.TopicId?t.TopicId:t.Form.config.TopicId+"_"+t.Id,Path:$rql.http.uri().path,IsRequired:!t.Optional&&!t.ReadOnly&&!t.ContextIsReadOnly,IsAndroid:$rql.api.isAndroid}),r;i.stateKey=i.TagId?i.TagId+":"+i.TimerId:i.TimerId;i.ReadOnly=i.ContextIsReadOnly?!0:i.ReadOnly;i=this.config=n.extend({},i,this.getPersistence());i.StartTime&&(r=Math.floor((new Date-$rql.api.dataTypes.Timestamp.fromJson(i.StartTime))/1e3),i.DisplayValue=this.getDisplayValue(r));this.clearEvents();i.Form.on("collectValues",this.onCollectValues);$rql.events.on("timerStopped",this.onTimerStopped);$rql.events.on("timerReseted",this.onTimerReseted);$rql.events.on("timerCleared",this.onTimerCleared);$rql.events.on("timerUpdated",this.onTimerUpdated);$rql.events.on("restoreTimerState",this.onRestoreTimerState);if(i.IsMonitor||i.IsRunning)i.Form.on("timerTimeout",this.onTimerTimeout);this.on({clear:this.clear,start:this.start,stop:this.stop,reset:this.reset,navigate:this.navigate,hide:this.hide,cancel:this.cancel});this.render()},clear:function(n){var t=this.config;t.DisplayValue=this.getDisplayValue(t.Value="");t.Form.hideTimer(t.TimerId);t.StartTime="";this.removePersistence();this.render();n&&(n.stopPropagation(),$rql.events.trigger("timerCleared",{Id:t.TimerId}))},onTimerCleared:function(n){this.config.Hidden||n.Id!=this.config.TimerId||this.clear()},start:function(n){n&&n.stopPropagation();var t=this.config;t.IsRunning||t.StartTime||(t.StartTime=$rql.api.dataTypes.Timestamp.toJson(new Date));t.StopTime=null;t.Form.on("timerTimeout",this.onTimerTimeout);t.Form.registerTimer(this);t.IsRunning=!0;this.setPersistence();this.onTimerTimeout();this.render()},resume:function(){var n=this.config;n.StopTime=null;n.Form.on("timerTimeout",this.onTimerTimeout);n.IsResuming=!0;n.Form.registerTimer(this);this.onTimerTimeout();this.render()},save:function(){var u=this,t=this.config,r=new $rql.ui.components.valueCollection,i;r.add(t.TimerId,this.getValueString(!1));i=n.Event("update");i.currentTarget=t.Form.$content.find($f("div[rql-focusid='{0}']",t.ContextName+t.TimerId));this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(i);t.IsMonitor&&(this.$.closest('[rql-role="active-timers"]').applyOverlay(!0,null,"<div/>"),$rql.ui.stopScrolling());this.config.Form.update(r,function(){t.IsMonitor&&(u.$.closest('[rql-role="active-timers"]').applyOverlay(!1),$rql.ui.startScrolling())},null,t.TagId,t.InlineTopicId)},stop:function(n,t){var i=this.config;i.Value=this.getSecondsFromDisplayValue(i.DisplayValue);i.StopTime=t?null:$rql.api.dataTypes.Timestamp.toJson(new Date);i.Form.off("timerTimeout",this.onTimerTimeout);i.Form.unRegisterTimer(i.TimerId);i.IsRunning=!1;this.removePersistence();this.render();n&&(n.stopPropagation(),$rql.events.trigger("timerStopped",{Id:i.TimerId,Cancel:t,DisplayValue:i.DisplayValue,ResetStartTime:t}));i.IsMonitor&&!t&&(i.Timer&&(i.InlineTopicId=i.Timer.$.closest("[rql-inline-id]").attr("rql-inline-id")),this.save())},onTimerStopped:function(n){var t=this.config;t.IsRunning&&n.Id==t.TimerId&&(t.DisplayValue=n.DisplayValue,n.ResetStartTime&&(t.StartTime=""),this.stop(null,n.Cancel))},cancel:function(n){n&&n.stopPropagation();var t=this.config;t.Form.hideTimer(t.TimerId);t.DisplayValue=this.getDisplayValue(t.Value);t.StartTime="";this.stop(n,!0)},navigate:function(t){t&&t.stopPropagation();var u=n(t.currentTarget),f=u.attrs().rql.path,r,i=this.config.Form.page.app;(r=i.config.pages[f])&&(i.config.StartupTopic={TagId:this.config.TagId,TopicId:this.config.TopicId,InlineTopicId:this.config.InlineTopicId},i.switchPage(r))},reset:function(n){n&&n.stopPropagation();this.config.IsMonitor?(this.config.Timer.cancel(n),this.config.Timer.start(n)):(this.cancel(n),this.start(n))},onTimerReseted:function(n){this.config.IsRunning&&n.Id==this.config.TimerId&&!this.config.IsMonitor&&(this.cancel(n.e),this.start(n.e))},hide:function(){this.config.Hidden=!0;this.config.Form.hideTimer(this.config.TimerId)},onTimerTimeout:function(){var n=this.config,t;n.IsRunning&&(t=Math.floor((new Date-$rql.api.dataTypes.Timestamp.fromJson(n.StartTime))/1e3),n.TimerType.toLowerCase()=="stopwatch"&&(t=n.CountDown-t,t<=0&&(t=0)),n.DisplayValue=this.getDisplayValue(t),this.$.find('div[rql-role="time-value"]').text(n.DisplayValue))},getDisplayValue:function(n){if($rql.isUndefined(n)||n==="")return"";var t=this.splitToMinutesAndSeconds(n);return $f("{0}:{1}",("0"+t.minutes).slice(-2),("0"+t.seconds).slice(-2))},splitToMinutesAndSeconds:function(n){typeof n=="string"&&(n=$rql.api.dataTypes.Integer.parse(n));var t=Math.floor(n/60);return{minutes:t,seconds:n-t*60}},onCollectValues:function(n){var t=this.config,u=t.IsDefault,i,r;if(!t.IsMonitor){if(t.IsRunning||t.ReadOnly||n.excludeDefaults&&t.IsDefault){n.values.add(t.TimerId,"");return}t.AllowOverride&&(i=this.$.find('input[rql-role="timer"]').val(),i&&(r=this.getSecondsFromDisplayValue(i),t.Value!=r&&(u=!0,t.Value=r.toString(),t.DisplayValue=this.getDisplayValue(t.Value))));n.values.add(t.TimerId,this.getValueString(u));n.values.processControlWithDefault(this.$,!n.excludeDefaults&&t.IsDefault)}},getValueString:function(n){var t=this.config,i=typeof t.Value=="number"?t.Value.toString():t.Value;return $f("{0}|{1}|{2}|{3}|{4}|{5}|{6}",$rql.coalesce(t.StartTime,"").toString(),$rql.coalesce(t.StopTime,"").toString(),n?"1":"0",$rql.coalesce(t.CountDown,"").toString(),t.TimerType,i,t.DisplayValue)},onDispose:function(){this.clearEvents();this.config.IsRunning?this.setPersistence():this.removePersistence()},clearEvents:function(){var n=this.config;n.Form.off("collectValues",this.onCollectValues);n.Form.off("timerTimeout",this.onTimerTimeout);$rql.events.off("timerStopped",this.onTimerStopped);$rql.events.off("timerReseted",this.onTimerReseted);$rql.events.off("timerCleared",this.onTimerCleared);$rql.events.off("timerUpdated",this.onTimerUpdated);$rql.events.off("restoreTimerState",this.onRestoreTimerState);this.off({clear:this.clear,start:this.start,stop:this.stop,reset:this.reset,navigate:this.navigate,hide:this.hide,cancel:this.cancel})},setPersistence:function(){var n=this.config,t;n.IsWorkbook&&!n.IsMonitor&&(t=n.StartTime?n.StartTime.toString():"",n.Form.setViewSetting(n.stateKey,t,!1))},getPersistence:function(){var n=this.config,t;return!n.IsWorkbook||n.IsMonitor?{}:(t=n.Form.getViewSetting(n.stateKey,!1),t?{StartTime:t,StopTime:null,IsRunning:!n.ReadOnly}:{})},removePersistence:function(){var n=this.config;n.IsWorkbook&&n.Form.removeViewSetting(n.stateKey,!1)},getSecondsFromDisplayValue:function(n){if($rql.isUndefined(n)||n==null)return"";var t=n.replaceAll("_",0).split(":");return t.length!=2?"":parseInt(t[0])*60+parseInt(t[1])},render:function(){if(!this.config.Hidden){var n=this.config;n.ElementId=this.elementId;this.$.empty().append($rql.ui.templates("timer-dialog").render(n)).show();this.widgetize()}},onRendered:function(){var t=this.config;if(!t.ReadOnly&&t.AllowOverride&&!t.IsMonitor&&!t.IsAndroid)this.$.find('input[rql-role="timer"]').on("input",n.proxy(this.onInput,this))},onInput:function(){var n=this.$.find('input[rql-role="timer"]').val().replaceAll("_","0"),t=this.getSecondsFromDisplayValue(n);this.config.DisplayValue=this.getDisplayValue(t);this.$.find('input[rql-role="timer"]').val(this.config.DisplayValue);$rql.events.trigger("timerUpdated",{Id:this.config.TimerId,DisplayValue:this.config.DisplayValue})},onTimerUpdated:function(n){!this.config.IsMonitor||this.config.Hidden||this.config.IsRunning||n.Id!=this.config.TimerId||(this.config.DisplayValue=n.DisplayValue,this.render())},onRestoreTimerState:function(){!this.config.IsMonitor&&this.config.IsRunning&&this.start()}};t.registerClass("$rql.ui.controls.timer",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.wbpath=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},t);this.on({listDetails:this.onListDetails})},render:function(n){var i=null,t,r,u;this.config.SelectedTopic&&this.config.SelectedTopic.Id==n?this.updateTopic(this.config.SelectedTopic):(this.config.Topics&&(this.config.SelectedTopic&&(this.config.SelectedTopic.Selected=!1),t=this.config.SelectedTopic=this.config.Topics.findByKey("Id",n),r=this.config.TopicPath=this.createTopicPath(t),t&&(t.Selected=!0,u=$rql.ui.templates("workbook-topic-path"),i=u.render({Path:r,RenderAsDropdown:this.config.RenderAsDropdown,selectedTopic:t.Text,selectedTopicIconHtml:t.IconHtml}))),this.$.html(i),this.config.RenderAsDropdown&&this.$.find("ul[rql-role='wb-path-menu']").smartmenus(),this.widgetize())},updateTopic:function(t){if(t.Changed){var r=n($f("a[rql-topic='{0}']",t.Id),this.$),i=r.children("div.icon-container");i.removeClass($rql.ui.getClassesByPrefix(i.get(0),"wb-")+" hide").addClass(t.IconClass)}},createTopicPath:function(n){var i,t,r;if(n==null)return null;for(i=[],t=n,t.Terminal||t.Inline||i.push({Topics:t.SubTopics});t;)r=t.Parent,i.unshift({Topic:t,Topics:r?r.SubTopics:t.SubTopics}),t=r;return $rql.ui.decorateArrayItems(i),i},onListDetails:function(t){var f=n(t.currentTarget),e=f.attrs("rql-property"),r=this.$.find(e.rql.target),u=n(r).attrs("rql-property").rql.property,i;if(this.config.TopicPath)if(u=="")this.config.TopicPath[this.config.TopicPath.length-1].Rendered||(r.html($rql.ui.templates("workbook-topic-path-details").render(this.config.TopicPath[this.config.TopicPath.length-1])),this.config.TopicPath[this.config.TopicPath.length-1].Rendered=!0);else for(i=0;i<this.config.TopicPath.length;i++)if(this.config.TopicPath[i].Topic.Id==u){this.config.TopicPath[i].Rendered||r.html($rql.ui.templates("workbook-topic-path-details").render(this.config.TopicPath[i]));this.config.TopicPath[i].Rendered=!0;break}}};t.registerClass("$rql.ui.controls.wbpath",$rql.ui.controls.view)})(jQuery);
(function(){var n=$rql.ui.controls.wbtree=function(t,i){n.initializeBase(this,[t,i])};n.prototype={dispose:function(){var i=this.config.Topics,t,r;if(i)for(t=0;t<i.length;t++)r=i[t],r.treeNode&&(r.treeNode=undefined);n.callBaseMethod(this,"dispose")},findTopicById:function(n){return this.config.Topics.findByKey("Id",n)},clicked:function(n){this.raise("changeTopic",{id:n.id})},shown:function(n){if(!n.loaded&&this.config.Topics&&this.config.Topics.length!=0){var t;t=n.id?this.createSubNodes(this.findTopicById(n.id)):[this.createNode(this.config.Topics[0],!0)];t&&n.$tree.html(this.renderNodes(t));n.id||this.rootLoaded||(this.rootLoaded=!0,this.openTopic(this.pendingOpenTopicId?this.pendingOpenTopicId:this.config.Topics[0].Id,this.pendingOpenTopicId==null||this.pendingOpenTopicId==this.config.Topics[0].Id),this.pendingOpenTopicId=null)}},hidden:function(){},createNode:function(n,t){return n?(n.treeNode={created:!0},{id:n.Id,label:this.createTopicLabel(n),nodes:[],leaf:n.Parent&&n.Parent.Inline?!0:n.Terminal,visible:n.Visible,collapsibleId:$rql.newId(),isRootNode:t,level:n.Level}):null},createSubNodes:function(n){var i,r,t;if(n&&n.SubTopics&&n.SubTopics.length!=0){if(n.Parent&&n.Parent.Inline)return null;for(i=n.SubTopics,r=[],t=0;t<i.length;t++)r.push(this.createNode(i[t]));return r}return null},createTopicLabel:function(n){return this.config.LabelTemplate.render(n)},openTopic:function(n,t,i,r){var u,f,e,o;if(this.rootLoaded){if(u=this.findTopicById(n),u){for(f=[],t&&f.unshift(u.Id);u=u.Parent;)f.unshift(u.Id);for(e=0;e<f.length;e++)this.open(f[e]);if(o=r?r:n,i)return this.open(n),this.select(o),o;this.select(o)}}else this.pendingOpenTopicId=n},renderChanges:function(){for(var n,i=this.config.Topics,t=0;t<i.length;t++)n=i[t],n.Changed&&n.treeNode&&n.treeNode.created&&this.getNode(n.Id,function(t){if(t&&t.$label){t.$.toggle(n.Visible);var i=t.$label.children("div"),r=i.find("div.icon-container").first();i.toggleClass("not-visited",!n.IsVisited);r.removeClass($rql.ui.getClassesByPrefix(r.get(0),"wb-")+" hide").addClass(n.IconClass)}})}};n.registerClass("$rql.ui.controls.wbtree",$rql.ui.controls.tree)})(jQuery);
(function(n){var t=$rql.ui.controls.workbook=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(i){t.callBaseMethod(this,"initialize");n.extend(this,{autoSaveInterval:30,requestTimestamp:0,minHeight:400,minHeightPercentage:75});var u=this,r=this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"workbook/",State:{Default:""},Type:"Workbook",TreeWidth:1,randomId:function(){return $rql.newId()},windowHeight:n(window).innerHeight(),isFabric:$rql.api.uiVersion>2,topicBlockOverlayHeight:40,HasSideNav:this.$.parents('[rql-role="sidenav-content-container"]').length>0},i);r[r.Type]=!0;r.widgetEvents={"*":{change:this.onInputControlChange},panels:{panelShow:this.onPanelShow},accordion:{panelShow:this.onPanelShow}};this.on({update:this.onUpdate,save:this.onUpdate,validateandsave:this.onUpdate,defaultSave:this.defaultSave,dismissmodal:this.hideModal,changeTopic:this.onChangeTopic,backTopic:this.onBackTopic,forwardTopic:this.onForwardTopic,previousTopic:this.onPreviousTopic,nextTopic:this.onNextTopic,embedTopic:this.onEmbedTopic,nextFinding:this.onNextFinding,guideme:this.onGuideMe,guideme2:this.onGuideMe2,guideMe:this.onGuideMe,switchEditMode:this.onSwitchEditMode,autoFill:this.onAutoFill,closeTree:this.onCloseTree,toggleTree:this.onToggleTree,applyRepeats:this.onApplyRepeats,findingFocus:this.onFindingFocus,toggleRepeat:this.onToggleRepeat,toggleInline:this.onToggleInline,search:this.onSearch,changeSearchPage:this.onChangeSearchPage,topSearchPage:this.onTopSearchPage,returnToForm:this.onReturnToForm,tagManager:this.onTagManager,nextControl:this.onNextControl,showSearch:this.showInlinePanel,showShareLink:this.showInlinePanel,copyShareLink:this.onCopyShareLink,resetTopic:this.onResetTopic,toggleSpeeddial:this.onToggleSpeeddial});$rql.events.on({backToTop:this.onBackToTop,fullscreen:this.onToggleFullscreen,resize:this.onResize});this.config.uniqueRqlId=$rql.newId();n(window).on("beforeunload."+this.config.uniqueRqlId,this.workbookUnloaded);$rql.events.onKey("CTRL+G",this.onGuideMe);this.$.on("keypress","input[type='text'][rql-id],input[type='number'][rql-id]",this.onInputKeyPress);if($rql.api.uiMode==="mobile")this.$.on("focus","input[type='text'][rql-id],input[type='text'][rql-id]",this.onInputFocus);$rql.api.isAndroid&&window.screen&&screen.orientation.addEventListener("change",function(){u.onResize()});this.iconTemplate=$rql.ui.templates("workbook-topic-icon");this.getViewSettings();this.$.data("workbook",this)},onAsyncControlsLoaded:function(n){var i=this.$.find("[rql-embed][rql-view-type='queue']"),t,r;i.length>0&&i.filter("[rql-timestamp]").length===i.length&&(t=this,r=n&&n.RenderTimeout?n.RenderTimeout:1,setTimeout(function(){t.scrollToPosition(t.$scrollable&&t.$scrollable.length>0?t.$scrollable:t.$scrollableContent,t.scrollPosition);t.scrollPosition=null},r))},scrollToPosition:function(t,i){t&&(t.css("overflow-y")==="scroll"?n(window).scrollTop(i):t.scrollTop(i))},defaultSave:function(){var t=this.$.find("button[type='submit']").first();if(t.length==1){if(n.browser.msie&&n.browser.majorVersion<9)return!1;t.trigger("click")}else this.refresh({onlyIfChanged:!0})},isBlockedByCaptcha:function(){return this.initialResponseProcessed&&this.isCaptchaRequired()?(this.highlightCaptcha(),!0):!1},refresh:function(t,i,r){var u,o,p,nt,s,c,tt,v,w,b,l,a,h,k,y,it,d;if($log.debug("rql.workbook.refresh"),$log.debug(t),!r&&this.isBlockingActivityActive()){$rql.api.offline&&t&&t.promiseResolve&&t.promiseResolve();return}if(!this.isBlockedByCaptcha()){var f=this.config,g=$rql.isEvent(t),rt=this.values,e=this;if(f.isFabric&&(this.contentScrollingLocked&&(this.contentScrollingLocked=n("html").css("overflow-y")==="hidden"),r&&this.setPartialUpdate($rql.isEvent(r))),g&&t.stopPropagation(),this.page&&this.page.app&&this.page.app.config.StartupTopic&&(t=n.extend({},this.page.app.config.StartupTopic),this.page.app.config.StartupTopic=null),this.clearInlineTopicTimeout(),this.stopChangeMonitor(),!$rql.api.offline&&this.$content){if(this.$content.hasClass("updating"))return!0;this.$content.addClass("updating")}var ut=t?t.ExternalValues:null,ft=t?t.AdditionalUpdates:null,ot=t&&t.Save,et=t&&(t.RepeatNoteIds||t.RepeatFindingId||t.RepeatRelated);if(t&&(t.ExternalValues=t.AdditionalUpdates=t.Save=t.RepeatRelated=undefined),u=this.createStoreViewRequest(n.extend({},g?null:t)),u.ChainContextId=f.ChainContextId,u.onlyIfChanged=undefined,this.initialResponseProcessed||(u.IsInitial=!0),f.urlHashParams&&(u.UrlHashParams=f.urlHashParams),o=$rql.http.uri(),p=this.getViewSetting("NavigateBackUrl",!0,!0),p&&(this.HasStoredHash=!0,nt=this.getViewSetting("PreserveNavigateBackUrl",!0,!0),(nt||t&&t.PreserveNavigateBackUrl)&&(this.PreserveNavigateBackUrl=!0),o=$rql.http.uri(p),f.urlHashParams=null),u.IsInitial&&!f.urlHashParams&&o.hash){s=o.hash;try{s=decodeURI(o.hash)}catch(st){}s&&s.indexOf("(*")!=-1&&s.indexOf("*)")!=-1&&(c=s.substring(s.indexOf("(*")),c=c.substring(2,c.length-2),o.hash=s.substring(0,s.indexOf("(*")),o.path=o.pathname+o.hash,u.UrlHashParams=c,window.history.replaceState(null,null,o.path))}if(this.prepareRequestUpdates(u,ut,ft,rt),tt=n("div#dlgCamera.modal.in").length>0&&n("div.modal-backdrop.in").length>0,(t&&t.onlyIfChanged&&u.Updates==null||tt)&&(this.config.isFabric&&this.config.Settings&&(this.config.Settings.InlineStyle==="Block"||this.config.Settings.InlineStyle==="None")&&t.TopicId&&(v=this.findTopicById(t.TopicId),v&&this.updateInlineTopicNavInfo(v.Terminal?v.Id:null,t.InlineTopicId,this.config.IsSameTopic||this.config.IsSameInlineTopic)),w=!0,b=t&&t.InlineTopicId?t.InlineTopicId:f.SelectedTag?f.SelectedTag.InlineTopicId:undefined,b&&(l=this.findTopicById(b),l&&this.config.VisitOptionalTopics&&l.Interactive&&l.IsCompleted&&!l.IsVisited&&(w=!1)),w))return this.$content&&this.$content.removeClass("updating"),$rql.api.offline&&t&&t.promiseResolve&&t.promiseResolve("resolved due to stopProcessing"),!1;if(this.prepareRequestSettings(u),t&&t.IsPostBack!=null&&(this.IsPostBack=t.IsPostBack),this.IsPostBack&&(u.IsPostBack=this.IsPostBack),u.State=t&&t.State?t.State:f.State.Current,this.pendingFindingId||this.config.pendingFindingId?(u.FindingId=this.pendingFindingId?this.pendingFindingId:this.config.pendingFindingId,this.pendingFindingId=this.config.pendingFindingId=undefined,u.TagId=f.SelectedTag?f.SelectedTag.Id:undefined):(t&&t.TagId&&u.Updates==null?u.TagId=t.TagId:t&&t.ExternalValuesTagId?(u.TagId=t.ExternalValuesTagId,t.TagId=f.SelectedTag?f.SelectedTag.Id:undefined):u.TagId=f.SelectedTag?f.SelectedTag.Id:undefined,t&&t.ExternalValuesInlineTopicId&&(t.InlineTopicId=t.ExternalValuesInlineTopicId),u.TagId&&t&&t.TagId&&u.TagId!=t.TagId&&(u.NextTagId=t.TagId),a=f.SelectedTag&&f.SelectedTag.SelectedTopic?f.SelectedTag.SelectedTopic.Id:undefined,u.TopicId=t&&t.TopicId?t.TopicId:a,a!=u.TopicId&&u.Updates&&(u.PreviousTopicId=a),u.InlineTopicId=t&&t.InlineTopicId?t.InlineTopicId:f.SelectedTag?f.SelectedTag.InlineTopicId:undefined,f.SelectedTag&&f.SelectedTag.InlineTopicId&&f.SelectedTag.InlineTopicId!=u.InlineTopicId&&u.Updates&&(u.PreviousInlineTopicId=f.SelectedTag.InlineTopicId),u.InlineTopicId&&(h=this.findInlineTopic(u.InlineTopicId),k=h&&h.HasContent,t&&t.InlineToggle&&(k=!0),h&&h.ContentExpanded!=null&&k&&(u.ContentExpanded=h.ContentExpanded===!1?null:!0)),u.PanelStates=this.collectPanels(u.TopicId==a?null:u.TopicId)),y=window.location.search.slice(1),y&&(u.Arguments?u.Arguments+="&"+y:u.Arguments=y),it=!u.InlineTopicId&&u.Updates&&!et,d=this.findTagById(u.TagId),d&&this.initialResponseProcessed&&this.copyHashesToRequest(d,u,it),this.rendered?this.initiateDisable(u,!0):(this.$.html($rql.ui.templates("view-loading").render(this.config)).widgetize(),this.rendered=!0),this.requestTimestamp=u.Timestamp=$rql.newId(),$rql.api.offline&&(this.showOverlay(!0,this.$contentBody,"fixed",!0),setTimeout(function(){var n=e.$.find("div[rql-role='overlay']");n.length>0&&n.removeClass("transparent-overlay")},250)),this.config.isFabric&&this.$.find("select.rql-select2.select2-hidden-accessible").length>0&&n.isFunction(jQuery().select2)&&this.$.find("select.rql-select2.select2-hidden-accessible").select2("close"),this.incrementPostbackCounter(),this.PartialUpdateContainerId&&this.applyPartialUpdateOverlay(this.PartialUpdateContainerId,f.SelectedTag?f.SelectedTag.$content:this.$),this.processRequestInlineTopicIdsWithDefaults(u),this.postbackInProgress=!0,$rql.api.offline&&t&&t.promiseResolve)this.post("",u,u).fail(this.onError).always(function(){e.postbackInProgress=!1;t.promiseResolve("workbook post complete");e.$content&&e.$content.removeClass("updating");e.hideOverlay()});else return this.post("",u,u).done(this.onLoad).fail(this.onError).always(function(){e.postbackInProgress=!1;$rql.api.offline?e.hideOverlay():e.clearDisableTimeout(u.disableTimeout).enable();u.Action==="ResetTopic"&&e.config.SelectedTag.$content.find($f('[rql-inline-id="{0}"] [rql-type="Temperature"], [rql-inline-id="{0}"] [rql-type="Tempprobe"]',e.config.SelectedTag.InlineTopicId)).each(function(t,i){n(i).data("rql.ui.control").resetState()})}),t&&t.CalculateNow&&this.collectInvalidFields(),!0}},resolveRefreshPromise:function(n){n&&n.promiseResolve&&n.promiseResolve()},fullRefresh:function(){this.config.isFabric&&(this.$tree=null,this.$workbookNavbar=null,this.$path=null,this.tagTabsControl&&(this.disposeTimers(),this.tagTabsControl.dispose(),this.tagTabsControl=null),this.config.SelectedTag&&this.config.SelectedTag.treeControl&&this.disposeControl(this.config.SelectedTag,"treeControl"),this.tagManager&&this.disposeControl(this,"tagManager"),this.uiBreakpoint=$rql.ui.getMediaBreakpoint());this.initialResponseProcessed=!1;this.refresh({IsPostBack:!1})},prepareRequestUpdates:function(n,t,i,r){var u,f,e;if(r){if(u=this.newValueCollection(),this.config.SelectedTag&&this.config.SelectedTag.SelectedTopic&&this.config.SelectedTag.SelectedTopic.Inline&&(u.inlineTopicIdsWithDefaults=[]),this.collectValues(u),f=this.getUpdates(u,r,t?t.compareMethod:null),f.length>0&&(this.controlResetter&&this.controlResetter.apply(f,r),n.Updates=f,u.inlineTopicIdsWithDefaults&&u.inlineTopicIdsWithDefaults.length!==0&&(n.inlineTopicIdsWithDefaults=u.inlineTopicIdsWithDefaults)),i&&(n.Updates=n.Updates?n.Updates.concat(i):i),n.Updates&&this.config.HiddenChoiceIds){for(e=0;e<this.config.HiddenChoiceIds.length;e++)n.Updates.push(this.config.HiddenChoiceIds[e]+"=__hidden__");this.config.HiddenChoiceIds=null}t&&t.data&&t.data.length>0&&(n.ValidateAndSave?(n.UpdatesWhenValid||(n.UpdatesWhenValid=[]),n.UpdatesWhenValid.addRange(t.data)):(n.Updates||(n.Updates=[]),n.Updates.addRange(t.data)));this.enrichRequestWithStaticTopicUpdates(n)}},enrichRequestWithStaticTopicUpdates:function(n){var t,i,r;try{t=n.Updates;t!=null&&t.length!==0&&this.$staticContent&&(i=this.collectStaticTopicControlIds(this.$staticContent),i.size!==0&&(r=this.collectStaticTopicUpdates(i,t),r.length!==0&&(n.StaticTopicUpdates=r)))}catch(u){console.log("Failed to collect static topic updates.",u)}},collectStaticTopicControlIds:function(t){var i=new Set,r=t.find("[rql-id2]");return r.each(function(){var t=n(this).attr("rql-id2");t&&t.indexOf("$i$")!==0&&i.add(t)}),i},collectStaticTopicUpdates:function(n,t){for(var u,f,e,r=[],i=0;i<t.length;i++)u=t[i],u&&u.indexOf("=")!==-1&&(f=u.match(/^\$i\$(\w+)\$/),f?n.has(f[1])&&r.push(u):(e=t[i].match(/^(?:__[a-zA-Z0-9]+_)?(\w+?)(?:[=\$\|])/),e&&n.has(e[1])&&r.push(u)));for(i=0;i<r.length;i++)r[i]=r[i].substring(0,r[i].indexOf("=")+1);return r},prepareRequestSettings:function(n){var t=this.config.Settings;t&&(n.Settings={ShowFindings:t.ShowFindings?undefined:!1,ShowFindingPoints:t.ShowFindingPoints?undefined:!1,ShowFlags:t.ShowFlags?undefined:!1,ShowRules:t.ShowRules?undefined:!1,ShowRepeatControls:t.ShowRepeatControls?undefined:!1,ShowPotentialRepeats:t.ShowPotentialRepeats,EnableTracking:t.EnableTracking?undefined:!1,NavigateToRepeats:t.NavigateToRepeats?undefined:!1,InlineStyle:t.InlineStyle?t.InlineStyle:undefined,ShowPositiveRepeats:t.ShowPositiveRepeats})},processRequestInlineTopicIdsWithDefaults:function(n){if(n.inlineTopicIdsWithDefaults){var t=n.inlineTopicIdsWithDefaults.any(function(t){return!(t===n.InlineTopicId||t===n.PreviousInlineTopicId)});t&&(n.ContainsOutOfFocusInlineTopicUpdates=!0);n.inlineTopicIdsWithDefaults=undefined}},showWorkbookMessage:function(n,t){var u=this.config.Settings,r,i,f;if(u.CustomMessages&&u.CustomMessages[n]){r=u.CustomMessages[n];i=t;r.content&&(i=$f(r.content,this.config.SelectedTag.Topics[0].Text));f=r.style||"info";switch(f.trim()){case"error":$rql.ui.error(i);break;case"success":$rql.ui.success(i);break;case"warn":$rql.ui.warn(i);break;case"info":default:$rql.ui.info(i)}return}$rql.ui.info(t)},showCompletionMessage:function(){this.showWorkbookMessage("workbook-complete",$f($rql.i18n.strings.CompletionMessage,this.config.SelectedTag.Topics[0].Text))},showNoFindingsMessage:function(){this.showWorkbookMessage("workbook-nofindings",$rql.i18n.strings.NoFindingsMessage)},openInlineTopic:function(n,t,i){var r=this.config,u;if(!n)if(u=this.findTopicById(t),u&&u.Parent)n=u.Parent.Id,(r&&r.Settings.InlineStyle==="Block"||r.Settings.InlineStyle==="None")&&this.updateInlineTopicNavInfo(n,u.Id,!0);else return null;if(r.SelectedTag.treeControl)return r.SelectedTag.treeControl.openTopic(n,null,i,t)},onLoad:function(t,i,r){var e=r.context,f=this.config,a,v,u,y,s;if(window.viewAccessDictionary&&r.context&&r.context.ViewName&&(window.viewAccessDictionary[r.context.ViewName]=0),!t.InlineTopicId&&this.requestTimestamp!=e.Timestamp){$log.warn($f("Ignoring response {0} for view {1} because request {2} was sent",e.Timestamp,f.Id,this.requestTimestamp));return}if(this.blockingActivityIsActive=!1,t.HelpId&&$rql.api.updateHelpSuggestions(t.HelpId),this.requestTimestamp=e.Timestamp,t.Locale&&(this.pendingAction="changelocale",this.pendingActionData=t.Locale),!t.ValidationFailed||t.ValidationFailed===!1)if(e.ActionModifier=="GuideMe2"){if(t.AllVisibleTopicsCompleted&&this.pendingAction&&this.handlePendingAction(t.RedirectId,t.RedirectDestinationType,t.ModalId))return}else if(this.pendingAction&&(this.$content&&this.$content.removeClass("updating"),(!this.ModalId||t.ValidationFailed!==!1||!["reload","dismissmodal"].contains(this.pendingAction))&&this.handlePendingAction(t.RedirectId,t.RedirectDestinationType)))return;n.extend(f,{StoreId:t.StoreId,WorkbookId:t.WorkbookId,TopicId:t.TopicId,HiddenChoiceIds:t.HiddenChoiceIds||null,Settings:t.Settings,AutoFills:t.AutoFills,DefaultAutoFillIds:t.DefaultAutoFillIds,PanelControls:t.PanelControls,VisitOptionalTopics:t.VisitOptionalTopics});f.IsPropel=t.PropelToNextTopic;t.State&&(f.State={Current:t.State},f.State[t.State]=!0);this.config.isFabric&&(this.uiBreakpoint=$rql.ui.getMediaBreakpoint(),this.removeControlOverlay&&($rql.ui.removeContainerOverlay(this.removeControlOverlay),delete this.removeControlOverlay));t.SetIsInitial&&(this.initialResponseProcessed=!1,this.config.isFabric&&(this.$tree=null,this.$workbookNavbar=null,this.$path=null,this.tagTabsControl&&(this.tagTabsControl.dispose(),this.tagTabsControl=null)));this.initialResponseProcessed||(f.SelectedTag&&f.SelectedTag.$content&&$rql.ui.replaceHtmlContent(f.SelectedTag.$content,"",f.isFabric?!0:null),this.processInitialResponse(t),this.renderLayout(),this.initRefs(),this.attachEventHandlers(),f.Settings.ShowTagTabs&&this.createTagTabs());this.setUiStyle(t.UiStyle);var o=f.IsSameTopic=f.SelectedTag&&f.SelectedTag.SelectedTopic&&t.TagId==f.SelectedTag.Id&&t.TopicId==f.SelectedTag.SelectedTopic.Id,h=f.IsSameInlineTopic=o&&t.InlineTopicId==f.SelectedTag.InlineTopicId,l=this.$.find("[rql-inline-id='"+t.InlineTopicId+"']"),p=l.height();if(this.setSelectedTag(t.TagId),$rql.api.offline&&t.TagId&&!f.SelectedTag){a=this.getShareUrl(t.TagId,this.config.TopicId,!0);a&&(window.history.replaceState(null,null,a),window.location.reload());return}if(this.TopicsHashCopy=t.TopicsHash,this.processServerTopics(t.Topics),this.createTagParts(f.SelectedTag,t.TopicsHash),f.SelectedTag.pathControl&&f.SelectedTag.pathControl.render(t.TopicId),v=null,u=this,t.NoContent){this.renderContent(f.SelectedTag,t,!0);return}setTimeout(function(){var n=f.SelectedTag.treeControl;n&&(u.$selectedTopicNavInfo=u.$.find("div[rql-role='wb-content'] div[rql-role='category-nav-info']"),t.Topics&&n.renderChanges(),f.isFabric&&n.refreshIcons(f.SelectedTag.Topics),v=u.openInlineTopic(t.TopicId,f.ResetParent?null:t.InlineTopicId,!o||!h),delete f.ResetParent);u.resetTopicChangedFlags(f.SelectedTag.Topics)},0);this.processServerRepeats(f.SelectedTag,t.Repeats);y=f.SelectedTag.HeaderTriggersUpdate;f.SelectedTag.HeaderTriggersUpdate=!1;var c=t.Content!=null||t.ContentHash!=f.SelectedTag.ContentHash||f.SelectedTag.ContentTriggersUpdate,w=t.StaticContent!=null||t.StaticContentHash!==f.SelectedTag.StaticContentHash||f.SelectedTag.ContentTriggersUpdate,b=f.FindingsChanged=t.Findings!=null||t.FindingsHash!=f.SelectedTag.FindingsHash;this.$scrollable=n("[rql-role='wb-content']").css("overflow-y")==="scroll"||n("[rql-role='wb-content']").css("overflow-y")==="auto"?this.$scrollableContent:n("body");s=this.$scrollable&&this.$scrollable.length>0?this.$scrollable.scrollTop():0;s===0&&(s=n(window).scrollTop());c&&this.controlResetter&&this.controlResetter.clear();this.processServerInlineTopics(f.SelectedTag,t,e,o&&!c||o&&e.Action==="GuideMe"&&e.IsPostBack,y,c);f.isFabric&&this.$.parents(".modal").length===0&&this.hideModals(null,null,!0);this.renderContent(f.SelectedTag,t,c);this.renderStaticContent(t,w);this.renderFindings(f.SelectedTag,t.Findings,b,t.FindingsHash!=null,t.SubTopicTotalFindings);this.renderInlineTopics(c&&e.Action!=="GuideMe"?null:t.InlineTopics);!o&&this.$scrollableContent&&$rql.ui.scrollToTop(this.$scrollableContent,0,!1);this.activateSelectedTag();this.setSelectedTopic(t.TopicId||f.SelectedTag.TopicTree.TopicId,t.InlineTopics);this.showOverlay(!1,this.$,"fixed");f.EmbedFormList=[];f.EmbedList=[];this.widgetize(function(){var r,c,i;try{if(u.initRefs(),u.removeInlineTopicHeight(),u.$content.removeClass("updating"),u.ModalId){if(n(".mm-page").removeClass("pos-static"),u.collectInvalidFields(u.$.find("#"+u.ModalId)),u.pendingAction&&u.invalidFields.length===0&&u.handlePendingAction(null,null,null,t.ValidationFailed)){t.ValidationFailed&&(u.hideModals(!0),u.ModalId=null,u.$ModalElement=null);return}u.showModal(u.$ModalElement,u.ModalId,!1,!0,u.$ModalParent);u.hasModalPointerEvent=!0}u.pendingAction==="toast"&&u.handlePendingAction(null,null,null,null,(u.pendingActionContext||"")+t.ToastId);u.pendingAction==="openmodal"&&u.handlePendingAction(null,null,t.ModalId);r=!1;e.NavigateToParent&&(r=v?!1:!0);c=e&&e.Action==="GuideMe"&&!t.ValidationFailed;i=f.IsEmbed?f.Form.page:u.page;f.isFabric&&(f.SelectedTag.SelectedTopic.Level===0||i&&i.view&&i.view.Features&&i.view.Features.toLowerCase().indexOf("pagetitle")>-1?u.$.find("[rql-role='wb-content-body-wrapper']").removeClass("z-depth-1"):u.$.find("[rql-role='wb-content-body-wrapper']").addClass("z-depth-1"));u.eventInlineTopicId=null;f.isFabric||u.toggleToolbarButtons();e&&e.Updates&&u.renderAfterSave();u.setActiveMode();window.waitfor(function(){return n(".collapsing").length},0,100,0,"workbook.onLoad()",function(){var a=u.$scrollableContent.find("[rql-embed]"),v=u.setActiveInlineTopic(t.InlineTopicId,r,t.TopicId,c);v||(a.length>0&&a.toArray().any(function(t){return n(t).is(":visible")&&n(t).attrs("rql").rql.viewtype==="queue"})?u.scrollPosition=s:u.scrollToPosition(u.$scrollable,s));u.copyHashesFromResponse(f.SelectedTag,t);u.IsPostBack=!0;u.collectValues(u.values=u.newValueCollection(),!0,!0,!0);u.revalidateInvalidFields();u.adjustDimensions();u.processResponseErrors();u.setFocusAfterRefresh(!(o&&h)||l&&p!==l.height());u.updateTimestamp();e&&e.Action=="GuideMe"&&t.ValidationFailed?u.scrollToError():e&&e.Action=="NextFinding"&&o&&h&&!f.SelectedTag.SelectedTopic.Findings?u.showNoFindingsMessage():e&&e.Action=="GuideMe"&&o&&h&&!t.ValidationFailed&&!u.topicIsGuidable(f.SelectedTag.SelectedTopic)&&u.showCompletionMessage();u.setViewSettings();u.ensureInlineEventHandlers();u.manageMonitors(t.Monitors);u.repositionValidationLabels();i&&i.config&&i.config.Views&&i.config.Views.any(function(n){return n.DisplayOptions})&&n(window).resize();u.updateLayout(t.TopicsHash);u.attachEventHandlers();f.isFabric&&setTimeout(function(){u.updateShareUrl(f.SelectedTag.Id,t.TopicId);u.updateInlineTopicNavInfo(t.TopicId,t.InlineTopicId,!o||!h);i&&i.app&&i.app.sidenav&&i.app.sidenav.onResize();$rql.api.isAndroid&&e&&e.Action!="GuideMe"&&u.scrollToPosition(u.$scrollable,s);$rql.events.trigger("restoreTimerState",{})},0);n("body").css("min-height","");u.hasModalPointerEvent&&(u.$contentBody.find(".modal.show").css("pointer-events",""),delete u.hasModalPointerEvent);u.HasStoredHash&&(u.PreserveNavigateBackUrl?(u.removeViewSetting("PreserveNavigateBackUrl",!0,!0),u.PreserveNavigateBackUrl=!1):(u.removeViewSetting("NavigateBackUrl",!0,!0),u.HasStoredHash=!1))},20)}catch(a){$log.warn($f("Error after widgetize():\r\n{0}",a))}finally{u.hideOverlay()}})},scrollToError:function(){var f,t,h,c,s,r,u;if(this.config.Settings.InlineStyle!="Block"&&(f=this.$scrollableContent,t=this.config.isFabric?this.$.find("div[rql-controlgroup].input-error, .input-error-checkbox, .input-error input:not(.no-validation-indicator)"):this.$.find("div[rql-controlgroup].error"),f.length===0&&$rql.api.uiMode==="mobile"&&(f=this.$.find("form")),t&&t.length>0)){if(t.first().hasClass("input-error-checkbox")){var i=t.parents(".checkbox-group"),e=i.find(".input-error-checkbox").first(),o=i.find(".error-msg-footer");o.length||(o=i.find(".input-error-checkbox").last());h=e.filter(":visible").length>0?e.offset().top:i.parents(":visible").first().offset().top;c=n(window).scrollTop();t=h<c?e:o}if(s=!1,this.config.isFabric&&(r=t.parents(".collapse:not(.show)"),u=r.length,u>0)){s=!0;r.on("shown.bs.collapse",function(){u--;u<=0&&this.scrollIntoView(t)});r.collapse("show")}s||this.scrollIntoView(t)}},handlePendingAction:function(t,i,r,u,f){var e=this.pendingAction,o=this.pendingActionData,c=this.pendingActionContext,h,s;if((e!=="openmodal"||r)&&(e!=="opensheet"||o)){e!=="toast"&&(this.pendingAction=this.pendingActionData=this.pendingActionContext=null);e==="home"&&t&&(e="redirect");switch(e){case"back":return this.blockingActivityIsActive=!0,$rql.api.back(),!0;case"home":return this.blockingActivityIsActive=!0,$rql.api.home(),!0;case"reload":return u?this.invalidFields.length===0:(this.blockingActivityIsActive=!0,$rql.api.reload(),!0);case"changelocale":return this.blockingActivityIsActive=!0,$rql.api.changeLocale(o),!0;case"customcallback":return h=this.$.find(o.ControlId),$rql.ui.get(h)[o.Method](),!0;case"guideme":return this.onGuideMe(),!0;case"navigate":return this.blockingActivityIsActive=!0,i==="url"?(n(window).off("beforeunload"),location.href=t):t&&(!i||i==="store")&&(s=$rql.api.baseUrl.pathname+"a/"+t,$rql.api.navigate(s)),!0;case"redirect":return s=$rql.api.baseUrl.pathname+"a/"+t,window.location.href=s,!0;case"openmodal":return this.ModalId=r,this.showModal(this.$ModalElement,this.ModalId),!0;case"dismissmodal":return this.hideModals(!0),this.ModalId=null,this.$ModalElement=null,!1;case"toast":return f&&($rql.ui.showToast(this.$,f),this.pendingAction=this.pendingActionData=this.pendingActionContext=null),!1;case"opensheet":return this.openRightSheetView(null,o),this.pendingAction=this.pendingActionData=null,this.removeControlOverlay&&($rql.ui.removeContainerOverlay(this.removeControlOverlay),delete this.removeControlOverlay),!0}return!1}},processInitialResponse:function(n){var t=this.config,i;if(t.Settings||(t.Settings={}),t.Tags=[],t.TagsHash=n.TagsHash,t.HasTags=n.Tags!=null,n.Tags){for(i=0;i<n.Tags.length;i++)t.Tags.push({Id:n.Tags[i].Name,Name:n.Tags[i].Name,Title:n.Tags[i].Title,TabId:"_"+i});t.Settings.ShowTagTabs=!0}else t.Tags.push({}),t.SelectedTag=t.Tags[0];t.Settings.Editable=this.isEditable()?"":"isReadonly";t.Settings.ShowFindings=t.Settings.ShowFindings!=null?t.Settings.ShowFindings:!0;t.Settings.ShowFindingPoints=t.Settings.ShowFindingPoints!=null?t.Settings.ShowFindingPoints:!0;t.Settings.ShowFlags=t.Settings.ShowFlags!=null?t.Settings.ShowFlags:!0;t.Settings.ShowRules=t.Settings.ShowRules!=null?t.Settings.ShowRules:!0;t.Settings.ShowRepeatControls=t.Settings.ShowRepeatControls!=null?t.Settings.ShowRepeatControls:!0;t.Settings.ShowPositiveRepeats=t.Settings.ShowPositiveRepeats!=null?t.Settings.ShowPositiveRepeats:!0;t.Settings.EnableTracking=t.Settings.EnableTracking!=null?t.Settings.EnableTracking:!0;t.Settings.NavigateToRepeats=t.Settings.NavigateToRepeats!=null?t.Settings.NavigateToRepeats:!0;t.Settings.ShowTree=t.Settings.ShowTree!=null?t.Settings.ShowTree:!0;t.Settings.ShowPath=t.Settings.ShowPath!=null?t.Settings.ShowPath:!0;t.Settings.ShowSearch=t.Settings.ShowControls&&(t.Settings.ShowSearch!=null?t.Settings.ShowSearch:!0);t.Settings.ShowShare=t.Settings.ShowControls&&(t.Settings.ShowShare!=null?t.Settings.ShowShare:!1);t.Settings.ShowNextFinding=t.Settings.ShowControls&&(t.Settings.ShowNextFinding!=null?t.Settings.ShowNextFinding:!0);t.Settings.ShowPreviousTopic=t.Settings.ShowControls&&(t.Settings.ShowPreviousTopic!=null?t.Settings.ShowPreviousTopic:!0);t.Settings.ShowNextTopic=t.Settings.ShowControls&&(t.Settings.ShowNextTopic!=null?t.Settings.ShowNextTopic:!0);t.Settings.ShowSave=t.Settings.ShowControls&&(t.Settings.ShowSave!=null?t.Settings.ShowSave:!0);t.Settings.ShowResetTopic=t.Settings.ShowControls&&(t.Settings.ShowResetTopic!=null?t.Settings.ShowResetTopic:!1);t.Settings.ShowGuideMe=t.Settings.ShowControls&&(t.Settings.ShowGuideMe!=null?t.Settings.ShowGuideMe:!0);t.Settings.ShowTagControls=!!t.Settings.ShowTagTabs&&(t.Settings.ShowTagControls!=null?t.Settings.ShowTagControls:!0);t.Settings.ShowAutofill=(t.Settings.ShowAutofill!=null?t.Settings.ShowAutofill:!0)&&!!t.AutoFills;t.Settings.ShowToolbar=t.Settings.LegacyShowSearchBehavior?t.Settings.ShowToolbarOnTop=t.Settings.ShowSearch:t.Settings.ShowToolbarOnTop=t.Settings.ShowSearch||t.Settings.ShowShare||t.Settings.ShowNextFinding||t.Settings.ShowPreviousTopic||t.Settings.ShowNextTopic||t.Settings.ShowSave||t.Settings.ShowGuideMe||this.isTablet()&&t.Settings.ShowTree;t.Settings.ShowStatic=n.StaticContent!=null;t.Settings.CustomMessages=t.Settings.CustomMessages?t.Settings.CustomMessages.parseOptionsAsObject(!0):"";this.initialResponseProcessed=!0},renderLayout:function(){var t=this.config,i="",u=$rql.ui.checkMediaBreakpoint("sm","lesser"),f,e,r;t.isFabric?((t.Settings.ShowGuideMe||t.Settings.ShowNextFinding||u)&&(t.Settings.ShowSpeeddial=!0),t.Settings.ShowToolbar&&(u&&(t.Settings.SpeedDialExtendedButtons=!0),f=$rql.ui.checkMediaBreakpoint("lg","lesser")&&t.Settings.ShowTagControls,t.ToolbarHtml=$rql.ui.templates("workbook-toolbar").render({Settings:t.Settings,ExtraTools:f})),i=this.renderFabricUi()):(t.Settings.ShowToolbar&&(t.ToolbarHtml=$rql.ui.templates("workbook-toolbar").render({Settings:t.Settings})),i=$rql.ui.templates("workbook").render(t));t.ToolbarHtml=undefined;this.$.html(i);t.isFabric&&(e=this.$.find('[rql-role="speeddial-placeholder"]:visible').first(),e.html($rql.ui.templates("workbook-snippets").render(n.extend(t,{WorkbookActionButtons:!0,ExtraTools:t.Settings.ShowTagControls}))),t.Settings.ShowPath&&t.Settings.ShowTagTabs&&$rql.ui.checkMediaBreakpoint("lg","greater")&&(r=this.$.find('[rql-role="wb-navbar"] > [rql-role="navbar-extendedbuttons"]:visible'),r.length>0&&r.remove()));$rql.api.offline&&$rql.api.isAndroid&&this.$.scrollintoview()},initRefs:function(){var n=!1;this.config.isFabric&&(n=$rql.ui.checkMediaBreakpoint("md","lesser"));this.$tags=this.config.isFabric?this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-tags']:visible")):this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-tags']"));this.$tagLabels=this.$.find("h3[rql-role='tag-label']");this.$path=this.config.isFabric?this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-path']:visible")):this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-path']"));this.$findingBar=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-finding-bar']"));this.$main=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-main']"));this.$main&&(this.$sidebar=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-sidebar']")),this.$tree=this.config.HasSideNav?this.$.closest('div[rql-role="sidenav-content-container"]').find('div[rql-role="wb-side-topics"]'):this.jQueryFirstOrNull(n?this.$.find(this.$.find("div[rql-role='wb-topicnavmenu']")):this.$.find("div[rql-role='wb-tree']")),this.$treeToggle=this.jQueryFirstOrNull(this.$main.find("div[rql-role='wb-tree-toggle']")),this.$content=this.jQueryFirstOrNull(this.$main.find("div[rql-role='wb-content']")),this.$content&&(this.$contentBody=this.jQueryFirstOrNull(this.$content.find("div[rql-role='wb-content-body']")),this.$findings=this.jQueryFirstOrNull(this.$content.find("div[rql-role='wb-findings']")),this.$scrollableContent=this.config.isFabric?this.$content:this.isDesktop()?this.$content:this.$content.find("form.full-height")));this.$static=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-static']"));this.$staticContent=this.$static?this.jQueryFirstOrNull(this.$static.find("form[rql-role='wb-static-content']")):null;this.$toolbar=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-actions']"));this.$toolbar||(this.$toolbar=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-navbar']")));this.isTablet()&&(this.$searchInput=this.jQueryFirstOrNull(this.$.find("input[rql-role='wb-search-query']")));this.$timersCount=this.jQueryFirstOrNull(this.$.find("span[rql-role='timers-count']"));this.$timersMonitor=this.jQueryFirstOrNull(this.$.find("div[rql-role='timers-monitor']"));this.ensureShareUrl();this.initToolbarRefs()},jQueryFirstOrNull:function(n){return n&&n.length==1?n:null},attachEventHandlers:function(){if(this.$searchInput&&this.$searchInput.off("keypress",this.onSearchKeyPress).keypress(this.onSearchKeyPress),this.$content)this.$content.off("keydown mousedown",this.onContentActivity).on("keydown mousedown",this.onContentActivity)},setUiStyle:function(n){var t=this.config;t.UiStyle&&t.UiStyle!=n&&this.$.removeClass(t.UiStyle);n&&n!=t.UiStyle&&this.$.addClass(n);t.UiStyle=n},createTagTabs:function(){var t=this.config,r,i;t.HasTags&&(r=n.map(t.Tags,function(n){return[[n.TabId,n.Title?n.Title:n.Name]]}),i={data:r,RenderContentArea:!1,ExtraTools:t.Settings.ShowTagControls,ToolsHtml:t.Settings.ShowTagControls?t.isFabric?undefined:'<div class="btn-group"><a rql-action="tagManager" class="btn"><i class="icon-cog width-auto"><\/i><\/a><\/div>':undefined},t.isFabric||(this.isDesktop()||(i.Template=$rql.ui.templates("workbook-tag-dropdown"),i.ItemTemplate=$rql.ui.templates("workbook-tag-dropdown-items")),this.tagTabsControl=new $rql.ui.controls.tabnav(this.$tags.get(0),i).on({shown:this.onTagTabShown})))},renderFabricTagParts:function(n,t){var r=this.config,i=$rql.ui.checkMediaBreakpoint("md","lesser");r.Settings&&(r.Settings.ShowPath&&!i&&this.renderFabricPathControl(n,this.$path,i),r.Settings.ShowTree&&this.$tree&&(this.$tree.is(":visible")||(this.$tree=this.jQueryFirstOrNull(i?this.$.find(this.$.find("div[rql-role='wb-topicnavmenu']")):this.$.find("div[rql-role='wb-tree']"))),this.renderFabricTopicNavMenuControl(n,i,t)))},createTagParts:function(n,t){var i=this.config;i.isFabric?this.renderFabricTagParts(n,t):(i.Settings&&i.Settings.ShowPath&&this.$path&&!n.pathControl&&(n.pathControl=new $rql.ui.controls.wbpath(this.createTagPartContainer(n).appendTo(this.$path).get(0),{Topics:n.Topics})),i.Settings&&i.Settings.ShowTree&&this.$tree&&!n.treeControl&&(n.treeControl=new $rql.ui.controls.wbtree(this.createTagPartContainer(n).appendTo(this.$tree),{Topics:n.Topics,LabelTemplate:$rql.ui.templates("workbook-tree-topic-label")}).show().on("changeTopic",this.onTreeChangeTopic)));this.$contentBody&&!n.$content&&(n.$content=this.createTagPartContainer(n).appendTo(this.$contentBody),this.$findings&&(n.$findings=this.createTagPartContainer(n).appendTo(this.$findings)),this.$findingBar&&(n.$findingBar=this.createTagPartContainer(n).appendTo(this.$findingBar)))},createTagPartContainer:function(t){return n("<div/>",{"rql-tag":t.Id})},setSelectedTag:function(n){if(n){var t=this.config;t.SelectedTag!=null&&t.SelectedTag.Id!=n&&(t.SelectedTag.ContentHash=null,$rql.ui.replaceHtmlContent(t.SelectedTag.$content,"",t.isFabric?!0:null),t.SelectedTag.StaticContentHash=null,$rql.ui.replaceHtmlContent(t.$staticContent,"",t.isFabric?!0:null));t.SelectedTag=this.findTagById(n)}},copyHashesFromResponse:function(n,t){n&&t&&(n.HashedTopicId=t.TopicId,n.TopicsHash=t.TopicsHash,n.ContentHash=t.ContentHash,n.StaticContentHash=t.StaticContentHash,n.FindingsHash=t.FindingsHash,n.InlineVisibleTopicsHash=t.InlineVisibleTopicsHash)},copyHashesToRequest:function(n,t,i){if(n&&t&&(t.TopicsHash=n.TopicsHash||undefined,t.StaticContentHash=n.StaticContentHash||undefined,n.HashedTopicId==t.TopicId)){t.ContentHash=i?undefined:n.ContentHash||undefined;t.FindingsHash=n.FindingsHash||undefined;var r=t.InlineTopicId&&n.CachedInlineTopics?n.CachedInlineTopics.findByKey("Id",t.InlineTopicId):null;r&&t.Action!=="GuideMe"&&t.IsPostBack&&(t.InlineContentHash=r.ContentHash||undefined,t.InlineFindingsHash=r.FindingsHash||undefined);r&&(t.InlineVisibleTopicsHash=n.InlineVisibleTopicsHash||undefined)}},renderContent:function(n,t,i){var r,f,u;i&&n.$content&&(this.config.isFabric&&t.Content&&this.PartialUpdateContainerId?(r=this.getPartialUpdateContainer(n.$content),r&&r.LocatorStr&&r.$Container.length>0&&(f=this.getPartialUpdateContent(t.Content,r.LocatorStr,r.IsInList),$rql.ui.replaceHtmlContent(r.$Container,f,t.InlineTopics)),delete this.PartialUpdateContainerId):this.renderContentHtml(n.$content,t.Content,t.InlineTopics),t&&t.NoContent&&t.NoVisibleInstances?this.onTagManager():(this.insertFindingsIntoContent(n),this.insertRepeatsIntoContent(n),this.config.isFabric&&this.config.TopicId&&(u=this.findTopicById(this.config.TopicId),u&&(this.$contentBody.attr("rql-topic-view",null).attr("rql-category-view",null),this.$contentBody.attr(u.Terminal||u.Parent?"rql-topic-view":"rql-category-view","true"),this.config.Settings.InlineStyle!=="None"||u.SubTopics||this.$contentBody.find("[rql-role='topic-body'] [rql-role='topic-status-icon']").html(u.IconHtml)))))},renderStaticContent:function(n,t){t&&this.renderContentHtml(this.$staticContent,n.StaticContent,null)},renderContentHtml:function(n,t,i){if(n){var r=this.prepareContent(t,i);this.config.isFabric&&(r=this.setActiveInlineTopicsHeight(n,r));$rql.ui.replaceHtmlContent(n,r?r:"",this.config.isFabric?!0:null,this.config.isFabric?!0:null)}},prepareContent:function(n,t){return n&&(n=this.replaceTopicLinks(n),n=this.insertInlineTopics(n,t)),n},replaceTopicLinks:function(n){return n?n.replace(/\[\[(wiki|wiki-missing|wiki-ref|wiki-embed)(?:\((.+?)\))?:([\w-\.\s]+)(?:\|(.+?))?\]\]/g,this.topicLinkReplacer):n},topicLinkReplacer:function(n,t,i,r,u){var s=(t=="wiki-embed"?"embed":"change")+"Topic",e=u,f=this.findTopicById(r),h=f?f.Text:"",o;return u&&u.indexOf("_")==0?e=$f("<i class='icon-{0} large' title='{1}'/>",u.substring(1).toLowerCase(),$rql.htmlEncode(h)):t!="wiki-embed"&&f&&f.IconClass&&f.IconHtml&&(e=f.IconHtml+e),this.config.isFabric?(o={TopicLink:!0,Id:r,RqlAction:s,Text:e,UiStyle:i||""},f&&f.Index===1&&(o.First=!0),$rql.ui.templates("workbook-snippets").render(o)):$f("<a rql-action='{0}' rql-topic='{1}' class='inline-block {2}'>{3}<\/a>",s,r,i||"",e)},insertInlineTopics:function(n,t){return n&&t&&(this.inlineTopics=t,n=n.replace(/InlineTopic\(([^)]+?)\)/g,this.inlineTopicReplacer),this.inlineTopics=undefined),n},inlineTopicReplacer:function(n,t){return this.renderInlineTopicTemplate(this.inlineTopics.findByKey("Id",t))},insertFindingsIntoContent:function(t){if(this.config.isFabric){var i=this;t.$content.find("[rql-role='inline-content-findings']").each(function(r,u){var o=n(u).closest("[rql-inline-id]").attr("rql-inline-id"),f=i.findInlineTopic(o,t),e;f&&f.Findings&&f.Findings.length>0&&n(u).html().length===0&&(e=i.renderFindingTemplates(f.Findings,!0),n(u).html(e&&e.findingsHtml?e.findingsHtml:""))})}},insertRepeatsIntoContent:function(t){var i,r;t&&t.repeatsHtml&&t.$content&&(i=t.$content.find("div.potential-repeats-placeholder:first"),i.length==0&&(i=t.$content.find("div[rql-controlgroup='yes']:first"),i.length==1&&(r=i.parentsUntil(t.$content,"table").first(),r.length==1&&(i=r))),i.length===1?n(t.repeatsHtml).insertAfter(i):this.config.isFabric?(t.repeatsHtml=n(t.repeatsHtml).first("[rql-role='wb-repeats']").wrap("<div/>").parent().html(),t.$content.find("[rql-role='topic-body']").parents(".category-body:visible").append(t.repeatsHtml)):t.$content.append(t.repeatsHtml))},renderFindings:function(n,t,i,r,u){var f=this.renderFindingTemplates(t,!0),e,o,s,h;i&&n.$findings&&n.$findings.html(f&&f.findingsHtml?f.findingsHtml:"");i&&n.$findingBar&&n.$findingBar.html(f&&f.barHtml?f.barHtml:"");this.$findings&&(e=this.$findings[0].style&&this.$findings[0].style.display=="none",o=!e!=r,o&&this.$findings.toggle(r));this.$findingBar&&(s=this.$findingBar[0].style&&this.$findingBar[0].style.display=="none",h=!s!=r,h&&this.$findingBar.toggle(r));u>0?this.updateInlineTopicFindingsInfo(u):this.updateInlineTopicFindingsInfo(t?t.length:0)},renderFindingTemplates:function(n,t){var i,r,u,f;return n?(this.processServerFindings(n),i=!this.isEditable(),r=!i&&this.config.Settings.ShowRepeatControls,n.map(function(n){n.randomId=function(){return $rql.newId()}}),u=$rql.ui.templates("workbook-findings").render({Findings:n,ReadOnly:i,VisibleRepeatControls:r,Settings:this.config.Settings}),f=t?$rql.ui.templates("workbook-finding-bar").render({Findings:n,Count:n.length}):null,{findingsHtml:u,barHtml:f}):null},getCssClassForFindingType:function(t){return t?"ft-"+n.trim(t).toLowerCase().replace(/\s+/,"-"):""},getCssClassForFindingClass:function(n){return n?"fc-"+(n=="N"?"negative":n=="P"?"positive":n=="0"?"neutral":"none"):""},processServerFindings:function(t){var o=this.config,f,i,e,u,r;if(t)for($rql.ui.decorateArrayItems(t),f=0;f<t.length;f++){if(i=t[f],i.IsRepeatable=i.IsRepeatable||i.IsRepeat||i.RepeatText!=null,i.HidePositiveRepeats=o.Settings&&o.Settings.ShowPositiveRepeats===!1&&i.Class==="P",i.Observations!=null)for(i.HasObservations=!0,$rql.ui.decorateArrayItems(i.Observations),e=0;e<i.Observations.length;e++)u=i.Observations[e],u.Note=u.Note!=null?u.Note:"",u.NoteHtml=$rql.ui.replaceDoubleNewLinesWithLineBreaks(u.Note),u.IsRepeat=u.IsRepeat!=null?u.IsRepeat:!1,u.UniqueId=$rql.newId();i.Note&&(i.NoteHtml=i.Note,i.IsRepeatable&&this.isEditable()?(r={},i.HidePositiveRepeats&&(r.HidePositiveRepeats=!0),this.config.Settings&&this.config.Settings.ShowRepeatControls&&i.NoteHtml.indexOf("<injection")===-1?this.config.isFabric?(n.extend(r,{FindingsNoInjectionSnippet:!0,UniqueId:$rql.newId(),Content:i.NoteHtml}),i.IsRepeat&&(r.Checked=!0),i.NoteHtml=$rql.ui.templates("workbook-findings").render(r)):i.NoteHtml=$f('<div><input type="checkbox" rql-action="toggleRepeat" rql-index="ALL" {0} value="repeat" /> REPEAT<\/div><div class="clear">{1}<\/div>',i.IsRepeat?'checked="checked"':"",i.NoteHtml):this.config.isFabric?(n.extend(r,{FindingsInjectionSnippet:!0,UniqueId:$rql.newId(),Checked:!0}),i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>REPEAT/g,$rql.ui.templates("workbook-findings").render(r)),delete r.Checked,i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>/g,$rql.ui.templates("workbook-findings").render(r))):(i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>REPEAT/g,'<input type="checkbox" rql-action="toggleRepeat" rql-index="$1" checked="checked" value="repeat" /> REPEAT '),i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>/g,'<input type="checkbox" rql-action="toggleRepeat" rql-index="$1" value="repeat" /> REPEAT '))):i.IsRepeatable&&this.config.isFabric?(r={},i.HidePositiveRepeats&&(r.HidePositiveRepeats=!0),n.extend(r,{FindingsInjectionSnippet:!0,UniqueId:$rql.newId(),Checked:!0,Disabled:!0}),i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>REPEAT/g,$rql.ui.templates("workbook-findings").render(r)),delete r.Checked,i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>/g,$rql.ui.templates("workbook-findings").render(r))):(i.NoteHtml=i.NoteHtml.replace(/<injection(\d+)\/>/g,""),i.IsRepeat&&i.NoteHtml.indexOf("REPEAT")==-1&&(i.NoteHtml="<div>REPEAT<\/div>"+i.NoteHtml)),i.NoteHtml=$rql.ui.replaceDoubleNewLinesWithLineBreaks(i.NoteHtml),i.Note=i.Note.replace(/<injection(\d+)\/>/g,""));i.CssClasses=this.getCssClassForFindingClass(this.config.isFabric?i.Class||"N":i.Class)+" "+this.getCssClassForFindingType(i.Type);i.FormattedPoints=$f($rql.i18n.strings.PointsSummaryFormat,i.Points,i.MaximumPoints);i.RepeatHtml=$rql.ui.replaceDoubleNewLinesWithLineBreaks(i.RepeatText)}},processServerRepeats:function(n,t){var r,u,i;if(n.repeats=t,t){if($rql.ui.decorateArrayItems(t),r=this.config.Settings.ShowPotentialRepeats=="autofill",u=!1,r)for(i=0;i<t.length;i++)t[i].UniqueId=$rql.newId(),(t[i].Id!=null||t[i].FindingId!=null)&&(u=t[i].CanBeCopied=!0);n.repeatsHtml=$rql.ui.templates("workbook-repeats").render({Repeats:t,RepeatAutofillIsEnabled:r&&u})}else n.repeatsHtml=null},activateSelectedTag:function(){var n=this.config;n.SelectedTag&&(this.tagTabsControl&&(this.tagTabsControl.show(n.SelectedTag.TabId),this.isDesktop()||!this.$.find("[rql-role='wb-tags']").is(":visible")||n.isFabric||this.$.find("[rql-role='wb-tags']").addClass("hide")),n.RenderedTag!=n.SelectedTag&&(this.toggleTagParts(n.RenderedTag,!1),this.toggleTagParts(n.SelectedTag,!0),n.RenderedTag=n.SelectedTag),this.$tagLabels.html(n.SelectedTag.Name),this.isMobile()&&!n.isFabric&&this.$.find("[rql-role='mobile-workbooktools']:visible, [rql-role='wb-main'].hide").toggleClass("hide"))},toggleTagParts:function(n,t){n&&(n.pathControl&&n.pathControl.$.toggle(t),n.treeControl&&n.treeControl.$.toggle(t),n.$content&&n.$content.toggle(t),n.$findings&&n.$findings.toggle(t),n.$findingBar&&n.$findingBar.toggle(t))},disableLink:function(n,t){n&&(n.prop("disabled",t),n.toggleClass("disabled",t))},isEditable:function(){return this.config&&this.config.State&&(this.config.State.Current=="Edit"||this.config.State.Current=="EditOnly")},toggleToolbarButtons:function(){var t=this.config.SelectedTag,i=t.SelectedTopic,r=t.InlineTopicId?this.findTopicById(t.InlineTopicId):i,n;this.disableLink(this.$previousTopicBtns,!i||!this.findNavigatableTopic(!1));this.disableLink(this.$nextTopicBtns,!i||!this.findNavigatableTopic(!0));n=this.isEditable();this.$switchToViewModeBtn&&this.$switchToEditModeBtn&&(this.$switchToViewModeBtn.toggleClass("active",!n),this.$switchToEditModeBtn.toggleClass("active",n));this.$guideMeBtn&&this.$guideMeBtn.toggle(n);this.$saveBtn&&this.$saveBtn.toggle(n);this.$resetTopicBtn&&this.disableLink(this.$resetTopicBtn,!r||!r.Interactive);this.$autoFillBtn&&this.$autoFillBtn.length!==0&&this.disableLink(this.$autoFillBtn,!this.canTopicBeAutoFilled(r));this.config.isFabric&&this.config.Settings.ShowPath&&this.config.Settings.ShowTagControls&&$rql.ui.checkMediaBreakpoint("lg","greater")&&this.$.find("[rql-role='wb-navbar']:visible").children("[rql-role='navbar-extendedbuttons']").addClass("hide")},canTopicBeAutoFilled:function(n){var t=this.config;return n&&n.Interactive&&t.AutoFills?n.AutoFillIds?n.AutoFillIds.length!==0:!!this.config.DefaultAutoFillIds:!1},renderAfterSave:function(){var n=$rql.i18n.strings.SavedAt+" "+(new Date).localeFormat("T");this.config.isFabric?this.config.Settings.ShowSave&&(window.toastr.options={positionClass:"toast-top-right",timeOut:"500"},window.toastr.info(n)):this.$savedAt&&(this.$savedAt.html(n),this.config.savedAtShown||(this.$savedAt.show(),this.config.savedAtShown=!0))},isTrackingEnabled:function(){return this.config.Settings&&this.config.Settings.EnableTracking!=null?this.config.Settings.EnableTracking:!0},findTagById:function(n){return this.config.Tags?this.config.Tags.findByKey("Name",n):null},onTagTabShown:function(n){var i=this.config.Tags,t;i&&n.id&&(t=i.findByKey("TabId",n.id),t&&this.changeTag(t.Id))},changeTag:function(n){var i=this.config,t=this.findTagById(n);t?i.SelectedTag!=t&&(this.processBlockingActivityStop(),this.refresh({TagId:n,IsPostBack:!1,TagsHash:this.config.TagsHash})):alert("Unknow tag : "+n+".")},processServerTopics:function(n){var t,i;if(n||(n=this.config.SelectedTag.Topics),n){if(this.initServerTopics(n),t=this.config.SelectedTag,t.TopicTree)this.updateStatesOfTopics(n,t.Topics);else{for(i=0;i<n.length;i++)n[i].Index=i;t.Topics=n;t.TopicTree=this.createTopicTree(n);t.TopicHistory=[];t.TopicHistoryIndex=0}this.aggregateStatesOfTopics(t.TopicTree)}},initServerTopics:function(n){for(var t,i=0;i<n.length;i++)t=n[i],t.Visible=t.Visible!=null?t.Visible:!0,t.Visible&&this.isTrackingEnabled()?(t.Visited=t.Visited||!1,t.Completed=t.Completed||!1,t.Interactive=t.Interactive||!1,t.Findings=t.Findings||!1,t.Repeats=t.Repeats||!1,t.Findings&&t.FindingClass==null&&(t.FindingClass="N")):t.Visited=t.Completed=!0,t.Text&&!t.TocText&&(t.TocText=$rql.ui.trimWords(t.Text,80),t.TocTrimmed=t.Text!=t.TocText)},createTopicTree:function(n){var r=n.slice(0),i=this.collectSubTopics(null,r),t;return i&&i.length==1?(t=i[0],t.Level=0,this.addSubTopics(t,r),t):null},collectSubTopics:function(n,t){var i,r,u;if(!t)return null;for(i=0,r=[];i<t.length;)u=t[i],u.ParentId==n?(r.push(u),t.splice(i,1)):i++;return r.length!=0?r:null},addSubTopics:function(n,t){var i=this.collectSubTopics(n.Id,t),r;if(n.Terminal=i==null,i)for(n.SubTopics=i,r=0;r<i.length;r++)i[r].Parent=n,i[r].Level=n.Level+1,this.addSubTopics(i[r],t)},updateStatesOfTopics:function(n,t){var f,r,i,e,u,o;if(n){for(f=0;f<n.length;f++)r=n[f],i=t.findByKey("Id",r.Id),i&&(i.Changed=i.Visible!=r.Visible||i.Interactive!=r.Interactive||i.Visited!=r.Visited||i.Completed!=r.Completed||i.Findings!=r.Findings||i.FindingClass!=r.FindingClass||i.Repeats!=r.Repeats||i.RepeatCount!=r.RepeatCount,i.Changed&&(i.StateChanged=!1,i.Visible=r.Visible,i.Interactive=r.Interactive,i.Visited=r.Visited,i.Completed=r.Completed,i.Findings=r.Findings,i.FindingClass=r.FindingClass,i.Repeats=r.Repeats,i.RepeatCount=r.RepeatCount));if(t)for(e=0;e<t.length;e++)u=t[e],o=n.findByKey("Id",u.Id),o==null&&u.Visible&&(u.Changed=!0,u.Visible=!1)}},aggregateStatesOfTopics:function(n){var r=this.config,u=n.IsVisited=n.Visited||!1,f=n.IsCompleted=n.Completed||!1,e=n.HasFindings=n.Findings||!1,o=n.FindingClass,s=n.HasRepeats=n.Repeats||!1,h=n.HasPotentialRepeats=n.RepeatCount>0,i,t;if(n.NotComplete=!1,n.SubTopics)for(i=0;i<n.SubTopics.length;i++)t=n.SubTopics[i],this.aggregateStatesOfTopics(t),t.Visible&&(n.IsCompleted=n.IsCompleted&&t.IsCompleted,n.HasFindings=n.HasFindings||t.HasFindings,n.FindingClass=this.getMoreImportantFindingClass(n.FindingClass,t.FindingClass),n.HasRepeats=n.HasRepeats||t.HasRepeats,n.HasPotentialRepeats=n.HasPotentialRepeats||t.HasPotentialRepeats,t.Interactive&&t.IsCompleted&&!t.IsVisited&&!r.VisitOptionalTopics&&(n.NotComplete=!0),n.NotComplete=n.NotComplete||t.NotComplete);this.determineTopicIcon(n);n.Changed=n.Changed||n.IsVisited!=u||n.oldIsCompleted!=f||n.HasFindings!=e||n.FindingClass!=o||n.HasRepeats!=s||n.HasPotentialRepeats!=h;(n.IconHtml==null||n.Changed)&&(n.IconHtml=this.iconTemplate.render(n))},getMoreImportantFindingClass:function(n,t){return n=="N"||t=="N"?"N":n=="P"||t=="P"?"P":n=="0"||t=="0"?"0":null},determineTopicIcon:function(n){var i=this.config,r=i.Settings&&i.Settings.ShowPositiveRepeats===!1&&n.FindingClass==="P",t;n.IconClass="wb-none";n.Color="bcolor-inverse-light";n.Visible&&this.isTrackingEnabled()&&(t="",(n.IsVisited&&!n.IsCompleted||i.VisitOptionalTopics&&n.NotComplete)&&(t=t+"-nc"),n.HasFindings?(t=t+(n.FindingClass=="P"?"-pos":n.FindingClass=="0"?"-neu":"-neg"),n.Color=n.FindingClass=="P"?"bcolor-success":n.FindingClass=="0"?"bcolor-success-light":"bcolor-danger",n.HasRepeats&&!r&&(t=t+"-r")):i.VisitOptionalTopics&&(n.NotComplete||n.Interactive&&n.IsCompleted&&!n.IsVisited)||(n.IsCompleted?(t="-c",n.Color="bcolor-inverse"):n.HasPotentialRepeats&&(t=t+"-pr")),t&&t.length!=0&&(n.IconClass="wb"+t))},resetTopicChangedFlags:function(n){if(n)for(var t=0;t<n.length;t++)n[t].Changed&&(n[t].Changed=!1)},parseContainerOptions:function(t,i){var r,u;t&&t[i+"Options"]&&(r=t[i+"Options"].parseOptions(),r&&r.length>0&&r.findByKey("config","options")&&(u=r.findByKey("config","options"),n.each(u.options,function(n,r){switch(r.param.toLowerCase()){case"css":t[i+"CssClass"]=r.value.trim();break;case"style":t[i+"Style"]=r.value.trim()}})))},processServerInlineTopics:function(t,i,r,u,f,e){var c=i.InlineTopics,l,o,y=this,w=function(){return function(){return $rql.newId()}},p,h,v,s,a;if(t&&t.Topics){if(c)for(p=t.Topics,l=0;l<c.length;l++)o=c[l],h=p.findByKey("Id",o.Id),o.IconClass=h?h.IconClass:null,o.IconHtml=h?h.IconHtml:null,o.Color=h?h.Color:null,o.HasContent=!!o.Content,o.ContentHash=o.ContentHash||null,o.Title=o.ContentHash||o.Title?o.Title:null,o.Controls=o.ContentHash||o.Controls?o.Controls:null,o.Content=o.ContentHash||o.Content?o.Content:null,o.ContentExpandedByDefault=r.ContentExpanded===!1?!1:o.ContentAvailability=="AE",o.ContentAvailable=!!o.ContentHash||!!o.ContentAvailability,o.ContentAvailability=o.ContentAvailability||null,o.FindingsHash=o.FindingsHash||null,o.Findings=o.FindingsHash||o.Findings?o.Findings:null,o.UiStyle=h?h.UiStyle:null,o.RandomId=$rql.newId(),o.randomId=w,o.HasState=h.IsCompleted||h.HasFindings,o.SRid=o.RandomId,y.parseContainerOptions(o,"Title"),y.parseContainerOptions(o,"Control");if(u&&c&&t.CachedInlineTopics)for(l=0;l<c.length;l++)o=c[l],v=t.CachedInlineTopics.findIndexByKey("Id",o.Id),v!=-1&&(s=t.CachedInlineTopics[v],o.headerChanged=f||(!o.ContentHash||o.ContentHash!=s.ContentHash)&&(o.Title!=s.Title||o.Controls!=s.Controls||o.ContentAvailability!=s.ContentAvailability),o.iconChanged=o.IconHtml!=s.IconHtml,o.contentChanged=e||(!o.ContentHash||o.ContentHash!=s.ContentHash)&&(o.Content!=s.Content||o.ContentAvailability!=s.ContentAvailability),o.findingsChanged=o.contentChanged||o.FindingsHash!=s.FindingsHash,o.SRid=s.SRid,!o.iconChanged||s.IconClass==="wb-none"&&o.IconClass==="wb-nc"||(o.headerChanged=!0),n.extend(s,o),c[l]=s);else $rql.ui.decorateArrayItems(c),t.CachedInlineTopics=c}r.Action=="GuideMe"&&i.ValidationFailed&&i.InlineTopicId&&(a=this.findInlineTopic(i.InlineTopicId,t),a&&a.Content&&(o.ContentExpanded===!1||!o.ContentExpandedByDefault)&&(a.ContentExpanded=!0))},findInlineTopic:function(n,t){t=t||this.config.SelectedTag;var i=n&&t&&t.CachedInlineTopics?t.CachedInlineTopics.findByKey("Id",n):null;return i&&this.isLockedInBlock()&&(i.ContentExpanded=this.contentScrollingLocked),i},findInlineTopicElement:function(t){var i=this.config;return t&&i.SelectedTag&&i.SelectedTag.$content?(i.SelectedTag.$content.attr("id")||i.SelectedTag.$content.attr("id",$rql.newId()),i.SelectedTag.$content.find("div[rql-inline-id='"+t+"']")):n()},findInlineTopicContent:function(n){return n.children("div[rql-role='inline-content']")},findInlineHeaderOfElement:function(n){return n.closest("div[rql-role='inline-header']")},findInlineContentOfElement:function(n){return n.closest("div[rql-role='inline-content']")},isInlineContentUnnecessary:function(n){return n&&(n.Content||!n.ContentAvailable||!(n.ContentExpanded!=null?n.ContentExpanded:n.ContentExpandedByDefault))},isInlineContentVisible:function(n,t){var r,i;return(!t&&n&&(t=this.findInlineTopicContent(n)),!t)?!1:(window.navigator.userAgent.match(/android|ipad|iphone|ipod/i)?(i=t[0],r=i&&i.style&&i.style?i.style.display!="none":!1):r=t.is(":visible"),r)},setActiveInlineTopic:function(n,t,i,r){var y=!1,p=this.config.isFabric,f,v,o,s,h,c,u,l,e,a;return n&&t&&(n=null,y=!0),f=this.config.SelectedTag,v=n!=f.InlineTopicId,f.InlineTopicId&&($rql.api.isMobileOS&&this.$.find("div.active").removeClass("active"),o=this.findInlineTopicElement(f.InlineTopicId),s=this.findInlineTopicContent(o),f.InlineTopicId&&n!=f.InlineTopicId&&o.length==1&&(c=this.findInlineTopic(f.InlineTopicId),c&&!c.HasState&&this.$.find($f("td[id='{0}']",c.SRid)).removeClass().addClass("bcolor-inverse-light"),o.removeClass("active open"),s&&s[0]&&(s[0].style.display="none"),y&&this.config.SelectedTag&&this.config.SelectedTag.treeControl&&(this.config.SelectedTag.treeControl.select(i,!0),this.config.ResetParent=!0))),f.InlineTopicId&&!n&&this.lockContentScrolling(!1),f.InlineTopicId=n,f.InlineTopicId&&(u=this.findInlineTopic(n),o=this.findInlineTopicElement(n),s=this.findInlineTopicContent(o),l=this.isBlockStyle()?this.isLockedInBlock()||u&&u.ContentExpandedByDefault:u&&u.ContentExpandedByDefault,u&&(l=u.ContentExpanded!==!1||l),u&&u.Content&&l&&(!r||!u.Controls)?s&&s[0]&&(s[0].style.display=""):s&&s[0]&&(s[0].style.display="none"),h=this.isInlineContentVisible(o,s),u&&(u.ContentExpanded=h),o.addClass("active"),u&&!u.HasState&&this.$.find($f("td[id='{0}']",u.SRid)).removeClass().addClass("bcolor-primary"),this.toggleInlineTopicOpenClass(o,h)),e=this,a=!1,p?(e.isBlockStyle()?e.setActiveBlockTopic(f.InlineTopicId):o&&o.length>0&&(this.postbackControlId||e.scrollIntoView(o),a=!0),e.$tree&&e.$tree.length>0&&(e.scrollIntoView(e.$tree.find($f("div[rql-node='{0}'][role='tablist']",f.InlineTopicId)),e.$tree.parents("div[rql-role='wb-accordion-tree']")),a=!0)):(f.InlineTopicId&&(v||h&&!e.contentScrollingLocked)&&e.adjustInlineTopicDimensions(),(v||f.InlineTopicId)&&e.lockContentScrolling(h===!0&&e.config.Settings.InlineStyle==="Block")),a},toggleInlineTopicOpenClass:function(n,t){if(this.config.Settings.InlineStyle=="Block"&&n.toggleClass("open",t),this.config.isFabric){var i=n.find("a[rql-role='toggleInline'] > i, a[rql-role='toggleInline'] > svg");if(!i)return;i.is("i")?i.removeClass().addClass(t?"fas fa-chevron-up":"fas fa-chevron-down"):i.attr("data-icon",t?"chevron-up":"chevron-down")}},toggleInlineTopic:function(n,t){if(n&&t&&this.config.SelectedTag.InlineTopicId==t){var i=this.findInlineTopicContent(n),r=this.findInlineTopic(t);r&&(r.ContentExpanded=!this.isInlineContentVisible(n,i));this.refresh({InlineTopicId:t,onlyIfChanged:i.length!=0,InlineToggle:!0})||(i.toggle(),this.config.isFabric&&r&&r.ContentExpanded&&n.find("div[rql-role='inline-header']").removeAttr("style"),this.toggleInlineTopicOpenClass(n,this.isInlineContentVisible(n,i)),this.adjustInlineTopicDimensions())}},adjustInlineTopicDimensions:function(){var e=this,o=this.config.SelectedTag.InlineTopicId,u=this.$scrollableContent,t=this.findInlineTopicElement(o),h;if(u.length===0&&$rql.api.uiMode==="mobile"&&(u=this.$.find("form")),this.config.Settings.InlineStyle==="Block")if(this.config.isFabric)this.setActiveBlockTopic(o);else{var i=t.prev("div[rql-inline-id]"),f=t.next("div[rql-inline-id]"),s=t.find("div[rql-role='inline-header']"),r=this.findInlineTopicContent(t),c=this.isInlineContentVisible(t,r);c&&s.length==1?setTimeout(function(){e.lockContentScrolling(!1);var n=t.outerHeight(!0),o=i.length==1?t.position().top-i.position().top:0,h=f.length==1?f.position().top-t.position().top-n+f.outerHeight(!0):0,c=r.offset().top-s.offset().top,l=n-t.height(),a=r.outerHeight(!0)-r.height(),v=u.innerHeight()-o-h-a-c-l;r.height(v).css({"overflow-y":"auto"});$rql.ui.isElementInView(t,!0)?(i.length==1?i:t).scrollintoview():t.scrollintoview();e.lockContentScrolling(!0)},0):(this.lockContentScrolling(!1),(i.length==1?i:t).scrollintoview())}else this.config.isFabric||$rql.api.uiMode==="mobile"&&this.config.IsPropel&&(h=this.$.find("[rql-role='mobile-workbookbar']:visible").height()+n(".mobile-header:visible").height()+20,$rql.ui.scrollToTop(t,h))},lockContentScrolling:function(t){var i=this.$scrollableContent;this.config.isFabric&&(i=n("html"));i&&this.contentScrollingLocked!=t&&(i.css({"overflow-y":t?"hidden":""}),this.contentScrollingLocked=t)},ensureInlineTemplates:function(n){this.inlineTemplates||(this.inlineTemplates=n.Mode=="InlineCard"?{topic:$rql.ui.templates("workbook-inline-card-topic"),header:$rql.ui.templates("workbook-inline-card-header"),content:$rql.ui.templates("workbook-inline-card-content")}:{topic:$rql.ui.templates("workbook-inline-topic"),header:$rql.ui.templates("workbook-inline-header"),content:$rql.ui.templates("workbook-inline-content")},this.inlineTemplateHtmls={header:this.inlineTemplates.header.html,content:this.inlineTemplates.content.html})},renderInlineTopicTemplate:function(n){return n?(this.ensureInlineTemplates(n),this.replaceTopicLinks(this.inlineTemplates.topic.render({InlineTopic:n,Settings:this.config.Settings,RandomId:this.config.randomId()},this.inlineTemplateHtmls))):""},renderInlineTopic:function(t){var u,e,i,s,f,o,r;t&&(t.headerChanged||t.iconChanged||t.contentChanged||t.findingsChanged)&&(this.ensureInlineTemplates(t),u=this.findInlineTopicElement(t.Id),u.length==1&&(t.Settings=this.config.Settings,(t.headerChanged||t.iconChanged)&&(e=u.children("div[rql-role='inline-header']"),this.config.isFabric&&this.config.SelectedTag&&this.config.SelectedTag.InlineTopicId&&this.config.SelectedTag.InlineTopicId!==t.Id&&$rql.events.triggerOne("beforeContentRefresh"),t.headerChanged?(e=u.children("div[rql-role='inline-header']"),t.headerChanged?(s=n(this.replaceTopicLinks(this.inlineTemplates.header.render(t))),this.setInlineTopicHeight(e),$rql.ui.replaceHtmlContent(e,s.html(),this.config.isFabric?!0:null)):t.iconChanged&&$rql.ui.replaceHtmlContent(e.find("div[rql-role='icon-container']:first"),n(t.IconHtml).html(),this.config.isFabric?!0:null)):t.iconChanged&&$rql.ui.replaceHtmlContent(e.find("div[rql-role='icon-container']:first"),n(t.IconHtml).html(),this.config)),t.contentChanged&&(i=this.findInlineTopicContent(u),f=t.Content!=null?this.replaceTopicLinks(this.inlineTemplates.content.render(t)):"",this.isLockedInBlock()||(t.ContentExpanded=!!f),i.length===1?f?(f=this.setInlineTopicHeight(i,f),$rql.ui.replaceHtmlContent(i,n(f).html(),this.config.isFabric?!0:null)):($rql.ui.dispose(i),i.remove()):u.append(f)),t.findingsChanged&&(i=this.findInlineTopicContent(u),o=i.children("div[rql-role='inline-content-findings']"),o.length===1&&(this.config.isFabric?(r=this.renderFindingTemplates(t.Findings,!0),o.addClass("ui-transition-hide").html(r&&r.findingsHtml?r.findingsHtml:"")):(r=this.renderFindingTemplates(t.Findings,!1),o.html(r&&r.findingsHtml?r.findingsHtml:""))))),t.Settings=t.headerChanged=t.iconChanged=t.contentChanged=undefined)},renderInlineTopics:function(n){if(n)for(var t=0;t<n.length;t++)this.renderInlineTopic(n[t])},getElementInlineTopicId:function(n){var t=n?n.closest("div[rql-inline-id]").attr("rql-inline-id"):null;return t?t:undefined},attachInlineEventHandlers:function(){if(this.$content){this.$content.attr("id")||this.$content.attr("id",$rql.newId());this.$content.find("div[rql-inline-id]").on($f("click {0}",this.config.isFabric?"":"focusin"),this.onInlineTopicClick)}},detachInlineEventHandlers:function(){this.$content&&(this.$content.attr("id")||this.$content.attr("id",$rql.newId()),this.$content.find("div[rql-inline-id]").off($f("click {0}",this.config.isFabric?"":"focusin"),this.onInlineTopicClick))},ensureInlineEventHandlers:function(){this.detachInlineEventHandlers();this.config&&this.config.SelectedTag&&this.config.SelectedTag.SelectedTopic&&this.config.SelectedTag.SelectedTopic.Inline&&this.attachInlineEventHandlers()},onInlineTopicClick:function(t){var r,h,u,f;if(!(n(t.target).parents("[rql-type='inline-block']").length>0)){var e=this,o=this.config.SelectedTag,i=n(t.currentTarget).attr("rql-inline-id"),c=t.target.type=="radio"&&n(t.target).attr("rql-action")=="update"||n(t.target).attr("rql-action")=="guideme2",s=function(){var r=n(t.target).closest("[rql-action='toggleInline']").length!=0;e.eventInlineTopicId=i;e.setInlineTopicTimeout({inlineTopicId:i,selectedInlineTopic:o.InlineTopicId,toggle:r})};n(t.target).hasClass("select2-selection__rendered")&&n(t.target).attr("id")?(r=n(t.target).attr("id").match(/^select2-(\w+)-container$/),r&&r.length>1&&(h=r[1],u=n(t.currentTarget).find($f("select#{0}",h)),u.each(function(t,i){if(!n(i).attr("rql-action")||n(i).attr("rql-action")!=="update")u.off("select2:close").on("select2:close",s)}))):i&&o.InlineTopicId!=i&&this.eventInlineTopicId!=i&&!c&&(f=n(t.target),f.is("input[type='text'], input[type='number'], input[type='tel'], textarea")&&(this.postbackControlId=this.getControlId(f)),s())}},setInlineTopicTimeout:function(t){var i,r,u;this.clearInlineTopicTimeout();$rql.api.isMobileOS&&t.selectedInlineTopic&&(i=this.$.find("div.active"),i.length&&(i.removeClass("active"),r=this.findInlineTopicElement(t.inlineTopicId),r.addClass("active")));u=n.proxy(this.delayedInlineTopicClickHandler,this,t);this.inlineTopicTimeoutId=setTimeout(u,20)},clearInlineTopicTimeout:function(){this.inlineTopicTimeoutId&&(clearTimeout(this.inlineTopicTimeoutId),this.inlineTopicTimeoutId=null)},delayedInlineTopicClickHandler:function(n){var t;if(this.clearInlineTopicTimeout(),t=this.config.SelectedTag,n!=null&&n.inlineTopicId&&t.InlineTopicId!=n.inlineTopicId){var r=this.findInlineTopic(n.inlineTopicId,t),u=r&&(n.toggle||this.isLockedInBlock())?!0:!1,i=this;this.$content&&window.waitfor(function(){return i.$content.hasClass("updating")},!1,100,10,"workbook.delayedInlineTopicClickHandler()",function(){i.refreshInlineTopic(null,n.inlineTopicId,u)})}},isLockedInBlock:function(){return this.contentScrollingLocked&&this.config.Settings.InlineStyle&&this.isBlockStyle()},isBlockStyle:function(){return this.config.Settings.InlineStyle=="Block"},refreshInlineTopic:function(n,t,i){var r=this.findInlineTopic(t),u;r&&(r.ContentExpanded=i);u=this.activeMode=="search"?!1:this.isInlineContentUnnecessary(r);this.refresh({TopicId:n,InlineTopicId:t,onlyIfChanged:u,InlineToggle:i})||(this.setActiveInlineTopic(t,!1),this.openInlineTopic(null,t,!0),this.toggleToolbarButtons())},onToggleInline:function(t){if(!(n(t.target).parents("[rql-type='inline-block']").length>0)){var r=n(t.currentTarget).closest("div[rql-inline-id]"),i=r.attr("rql-inline-id");i&&i==this.config.SelectedTag.InlineTopicId&&this.toggleInlineTopic(r,i)}},setPostbackControlId:function(t){var i=n(t.currentTarget);this.postbackControlId=this.getControlId(i)},resolveRequestAction:function(t){var i={},f,r,u,o,e;return t&&(f=this.config,r=t instanceof jQuery?t:n(t),i.InlineTopicId=this.getElementInlineTopicId(r),i.InlineTopicId&&(u=this.findInlineHeaderOfElement(r).length!==0,o=this.findInlineContentOfElement(r).length!==0,(u||o)&&(e=this.findTopicById(i.InlineTopicId),e&&!e.Completed&&(i.Action=u?"Propel":"ContentPropel"),i.InlineTopicId===f.SelectedTag.InlineTopicId&&(f.SelectedTag.HeaderTriggersUpdate=u)))),i},update:function(t,i,r,u,f,e){var o={State:this.config.State.Current,ExternalValues:t};u&&(o.ExternalValuesTagId=u);f&&(o.ExternalValuesInlineTopicId=f);n.extend(o,this.resolveRequestAction($rql.isEvent(e)?e.currentTarget:e));this.refresh(o,i?i(r):n.noop(),e)},onUpdate:function(t,i){var l=this.config,u=n(t.currentTarget),r=u.attrs(),f={},e,c;if(!this.isBlockedByCaptcha()&&(i||(e=this.hasEmbedFormUpdates(),e&&(r.rql.confirm=$rql.i18n.strings.UnsavedChangesConfirmation,r.rql.currentTarget=t.currentTarget)),i||!this.confirmationIsRequired(t,r,this.onUpdate,e?this.onCancelChanges:null))){if(r.rql.action=="save"||r.rql.openmodal==="true"||r.rql.action=="validateandsave"){var o=r.rql.id&&r.rql.redirect==="true"?r.rql.id:null,s=r.rql.id&&r.rql.openmodal==="true"?r.rql.id:null,h=r.rql.id&&r.rql.toast==="true"?r.rql.id:null;o&&(f.RedirectId=o+"="+(r.rql.valuewhenvalid!=null?r.rql.valuewhenvalid:r.rql.value));s&&(f.ModalId=s+"="+(r.rql.valuewhenvalid!=null?r.rql.valuewhenvalid:r.rql.value),this.$ModalElement=u);h&&(f.ToastId=h+"="+(r.rql.valuewhenvalid!=null?r.rql.valuewhenvalid:r.rql.value))}(r.rql.valuewhenvalid!=null||r.rql.value!=null&&u.is(":button"))&&(f.ExternalValues=this.newValueCollection(),f.ExternalValues.add(r.rql.id,r.rql.valuewhenvalid!=null?r.rql.valuewhenvalid:r.rql.value));c=r.rql.id&&r.rql.id.startsWith("__expression__");c&&(f.CalculateNow=!0,this.pendingFocusId=r.rql.id.substring(14));this.postbackControlId=this.getControlId(u);f.ValidateAndSave=r.rql.action=="validateandsave";f.Save=r.rql.action=="save"||r.rql.action=="validateandsave";f.Validate=!!r.rql.argument||r.rql.action=="validateandsave";this.pendingAction=$rql.isNull(r.rql.pendingaction,r.rql.argument);this.pendingActionData=$rql.isNull(r.rql.data,r.rql.argument);this.pendingActionContext=r.rql.context;f.TopicId=r.rql.topic;n.extend(f,this.resolveRequestAction(u));r.rql.invoke&&r.rql.id&&(f.Invoke=r.rql.invoke+"="+r.rql.id);u&&u.closest(".modal.show").length>0&&(f.ValidateModal=u.closest(".modal.show").attr("id"));this.config.isFabric&&u&&(u.hasClass("btn")||u.is("button"))&&u.attrs().rql.action&&($rql.ui.applyContainerOverlay(u),this.removeControlOverlay=u);this.refresh(f,null,t);t.stopPropagation()}},onValueChanged:function(n){this.onNextControl(n)},onNextControl:function(t){var i=this.config;t&&t.currentTarget&&i.SelectedTag&&i.SelectedTag.$content&&this.findControlAndFocus(this.getNextControlId(n(t.currentTarget)),i.SelectedTag.$content)},onInputFocus:function(t){var i=this.$.find("[rql-role='mobile-workbookbar']:visible").height()+n(".mobile-header:visible").height();isNaN(i)||setTimeout(function(){window.scrollTo(0,n(t.currentTarget).offset().top-i-n(t.currentTarget).height())},300)},onInputKeyPress:function(t){var i,r,u;t.keyCode===13&&(i=n(t.currentTarget),r=i.next("a[rql-id^='__expression__']"),r.length==1&&(u=this.findInlineHeaderOfElement(i),u.length==1&&(t.preventDefault(),t.stopPropagation(),r.click())))},onInputControlChange:function(t){t.stopPropagation();this.postbackControlId=this.getControlId(n(t.currentTarget));this.refresh(null,null,t)},findTopic:function(n,t,i){var r=this.config.SelectedTag.Topics,u;if(r)for(u=r.length;t>=0&&t<u;){if(n(r[t]))return r[t];t=t+(i?1:-1)}return null},findTopicById:function(n){return this.config.SelectedTag.Topics.findByKey("Id",n)},navigateToTopicById:function(n){this.navigateToTopic(this.findTopicById(n))},navigateToTopic:function(n){n&&(n.Parent&&n.Parent.Inline?this.refreshInlineTopic(n.Parent.Id,n.Id,this.isLockedInBlock()):this.refresh({TopicId:n.Id,NavigateToParent:!0}))},navigateToTopicByIndex:function(n){n>=0&&n<this.config.SelectedTag.Topics.length&&this.navigateToTopic(this.config.SelectedTag.Topics[n])},navigateToTopicInHistory:function(n){var t=this.config.SelectedTag;n<0&&t.TopicHistory.length>0?n=0:n>=t.TopicHistory.length&&(n=t.TopicHistory.length-1);n>=0&&n<t.TopicHistory.length&&(t.TopicHistoryIndex=n,this.navigateToTopic(t.TopicHistory[t.TopicHistoryIndex]))},findNavigatableTopic:function(n){var t=this.config.SelectedTag.SelectedTopic;return t.Inline&&this.config.SelectedTag.InlineTopicId&&(t=this.findTopicById(this.config.SelectedTag.InlineTopicId)),t?this.findTopic(this.topicIsNavigatable,t.Index+(n?1:-1),n):null},topicHasFindings:function(n){return n&&n.Findings},topicHasRepeats:function(n){return n&&n.Repeats},hasInlineParent:function(n){var i=!1,t;if(n&&n.Parent&&!n.Inline)for(t=n.Parent;t;){if(t.Inline){i=!0;break}if(t.Parent)t=t.Parent;else break}return i},topicIsNavigatable:function(n){return this.hasInlineParent(n)&&n.Parent&&!n.Parent.Inline?!1:n&&n.Visible},topicIsGuidable:function(n){return n&&!n.Completed&&n.Interactive},onTreeChangeTopic:function(n){this.navigateToTopic(this.findTopicById(n.id))},onChangeTopic:function(t){var r=n(t.currentTarget).attrs(),u=r.rql.topic,i=r.rql.tag;i&&i.length&&i!=this.config.SelectedTag.Id?this.refresh({TopicId:u,TagId:i,NavigateToParent:!0}):this.navigateToTopicById(u)},onBackTopic:function(){this.navigateToTopicInHistory(this.config.SelectedTag.TopicHistoryIndex-1)},onForwardTopic:function(){this.navigateToTopicInHistory(this.config.SelectedTag.TopicHistoryIndex+1)},onPreviousTopic:function(){this.navigateToTopic(this.findNavigatableTopic(!1))},onNextTopic:function(){this.navigateToTopic(this.findNavigatableTopic(!0))},onEmbedTopic:function(t){var i=n(t.currentTarget),f=i.attrs(),r=i.next(".embedded-topic"),u;r.length!=0?r.toggle():(u='<div class="embedded-topic">'+$rql.ui.templates("view-loading").render({})+"<\/div>",this._embeddedContent$=n(u).insertAfter(i),this.loadTopicContent(f.rql.topic,this.onEmbedTopicLoaded,!0))},loadTopicContent:function(n,t,i){var u=this.config,r=this.createStoreViewRequest();this.prepareRequestSettings(r);r.IsEmbeddedTopic=i;r.TagId=u.SelectedTag?u.SelectedTag.Id:undefined;r.TopicId=n;this.initiateDisable(r,!1);this.post("",r,r).done(t).fail(t)},onEmbedTopicLoaded:function(n,t,i){i&&i.context&&this.clearDisableTimeout(i.context.disableTimeout);var r=this.prepareContent(n.Content);this._embeddedContent$.html(r);this._embeddedContent$=null;this.enable().widgetize()},onNextFinding:function(){this.refresh({Action:"NextFinding"})},onTagManager:function(){if(!this.tagManager){var n=$rql.ui.div("tagmanager");this.tagManager=new $rql.ui.controls.tagmanager(n,{StoreId:this.config.StoreId,ViewName:this.config.ViewName,ReadOnly:!this.isEditable(),Caller:this})}this.tagManager.show()},onGuideMe:function(n){var t,u;if($rql.isEvent(n)){var f=this.config.EmbedFormList&&this.config.EmbedFormList.length>0,r=this,i=!0,e=0;if(f){for(t=0;t<this.config.EmbedFormList.length;t++)u=this.config.EmbedFormList[t],u.save(null,null,null,function(t){i=i&&!t.ValidationFailed;++e===r.config.EmbedFormList.length&&i&&r.processGuideMeRequest(n)});return n.stopPropagation(),n.preventDefault(),!1}}return this.processGuideMeRequest(n),!1},processGuideMeRequest2:function(t){var r=null,u,i;return $rql.isEvent(t)&&(u=n(t.currentTarget),i=u.attrs(),i.rql.valuewhenvalid!=null&&(r=this.newValueCollection(),r.add(i.rql.id,i.rql.valuewhenvalid!=null?i.rql.valuewhenvalid:i.rql.value))),this.config.isFabric&&(this.$tree=null,this.$workbookNavbar=null,this.$path=null,this.tagTabsControl&&(this.tagTabsControl.dispose(),this.tagTabsControl=null),this.uiBreakpoint=$rql.ui.getMediaBreakpoint()),this.initialResponseProcessed=!1,this.refresh({Action:"GuideMe",ExternalValues:r,ValidateAndSave:!0}),$rql.isEvent(t)?(t.stopPropagation(),t.preventDefault(),!1):void 0},processGuideMeRequest:function(t){var r=null,u,f,i,e;return $rql.isEvent(t)&&(u=n(t.currentTarget),i=u.attrs(),i.rql.valuewhenvalid!=null&&(r=this.newValueCollection(),r.add(i.rql.id,i.rql.valuewhenvalid!=null?i.rql.valuewhenvalid:i.rql.value))),f={Action:"GuideMe",ExternalValues:r,ValidateAndSave:!0,TagsHash:this.config.TagsHash},t&&t.currentTarget&&(i=n(t.currentTarget).attrs(),e=i.rql.id&&i.rql.openmodal==="true"?i.rql.id:null,e&&(f.ModalId=e+"="+(i.rql.valuewhenvalid!=null?i.rql.valuewhenvalid:i.rql.value),this.pendingAction=$rql.isNull(i.rql.pendingaction,i.rql.argument),this.pendingActionData=$rql.isNull(i.rql.data,i.rql.argument),this.pendingActionContext=i.rql.context,this.$ModalElement=u)),this.refresh(f),$rql.isEvent(t)?(t.stopPropagation(),t.preventDefault(),!1):void 0},onGuideMe2:function(n){var t,u;if($rql.isEvent(n)){var f=this.config.EmbedFormList&&this.config.EmbedFormList.length>0,r=this,i=!0,e=0;if(f){for(t=0;t<this.config.EmbedFormList.length;t++)u=this.config.EmbedFormList[t],u.save(null,null,null,function(t){i=i&&!t.ValidationFailed;++e===r.config.EmbedFormList.length&&i&&r.processGuideMe2Request(n)});return n.stopPropagation(),n.preventDefault(),!1}}return this.processGuideMe2Request(n),!1},processGuideMe2Request:function(t){var r,i,u;if($rql.isEvent(t))return r=n(t.currentTarget),i=r.attrs(),i.rql.valuewhenvalid!=null&&(externalValues=this.newValueCollection(),externalValues.add(i.rql.id,i.rql.valuewhenvalid!=null?i.rql.valuewhenvalid:i.rql.value)),u=this.getElementInlineTopicId(r),this.pendingAction=$rql.isNull(i.rql.pendingaction,i.rql.argument),this.pendingActionData=$rql.isNull(i.rql.data,i.rql.argument),this.refresh({Action:"GuideMe",ActionModifier:"GuideMe2",ExternalValues:externalValues,ValidateAndSave:!1,InlineTopicId:u}),t.stopPropagation(),t.preventDefault(),!1},setSelectedTopic:function(n,t){var i=this.config.SelectedTag,r=i.Topics.findByKey("Id",n),u;r==null?alert("Unknown topic ID: "+n+"."):r!=i.SelectedTopic&&(i.SelectedTopic=r,u=i.TopicHistoryIndex>=0&&i.TopicHistoryIndex<i.TopicHistory.length?i.TopicHistory[i.TopicHistoryIndex]:null,(u==null||u!=i.SelectedTopic)&&(i.TopicHistory.length>50&&i.TopicHistory.shift(),i.TopicHistory.push(i.SelectedTopic),i.TopicHistoryIndex=i.TopicHistory.length-1),this.$contentBody&&(this.$contentBody.removeClass(),t||this.$contentBody.addClass(r.UiStyle)));this.updateShareUrl(i.Id,n)},getShareUrl:function(n,t,i){var u,f;n||(n=this.config.SelectedTag?this.config.SelectedTag.Id:null);t||(t=this.config.TopicId);var o=this.config.SelectedTag?this.config.SelectedTag.InlineTopicId:null,s=$rql.http.uri().path,h=n?"(*::DPR::"+n+"::TPC::"+t+"::INL::"+o+"*)":"(*"+t+"*)",c=encodeURIComponent(h),l=(s.indexOf("#")==-1?"#_workbook":"")+c,e=window.location.port&&window.location.port!=="80"&&window.location.port!==""?":"+window.location.port:"",r=$rql.http.uri().href;return r.indexOf("(*")!=-1&&r.indexOf("*)")!=-1&&(r=r.substring(0,r.indexOf("(*"))),u=r+l,$rql.api.offline&&!i&&(f="https://"+this.config.Settings.CurrentSiteName+"/",u=u.replace("http://localhost"+e+"/",f).replace("http://127.0.0.1"+e+"/",f)),u},onSwitchEditMode:function(t){var i=n(t.currentTarget).attrs();this.refresh({State:i.rql.data=="edit"?"Edit":"Read"})},onApplyRepeats:function(){var u=this.config,t,f,i,o,r,e,s;if(u.SelectedTag.repeats)if(t=u.SelectedTag.$content.find("div[rql-role='wb-repeats'] input[rql-repeat-id]"),t.length!=0){for(f=[],i=0;i<t.length;i++)t.get(i).checked&&(o=n(t[i]).attr("rql-repeat-id"),f.push(o));this.refresh({RepeatNoteIds:f})}else r=u.SelectedTag.$content.find("div[rql-role='wb-repeats'] input:checkbox"),r.length==1&&(e=r.attr("rql-repeat-finding-id"),s=r.get(0).checked,e&&this.refresh({RepeatFindingId:(s?"+":"-")+e}))},onFindingFocus:function(t){var r=n(t.currentTarget).attrs(),i=n($f("div[rql-finding-index='{0}']",r.rql.findingindex),this.config.SelectedTag.$findings).get(0);i&&n(i).scrollintoview()},onToggleRepeat:function(t){var r=n(t.currentTarget),s=r.get(0).checked,f=s?"repeat":"",e=r.attr("rql-index"),o=r.attr("rql-observation-id"),h=r.closest("[rql-finding-id]"),u=h.attr("rql-finding-id"),i;u&&(i=[],e=="ALL"?i.push($f("finding${0}$repeat={1}",u,f)):e?i.push($f("finding${0}$repeat${1}={2}",u,e,f)):o&&i.push($f("observation${0}${1}$repeat={2}",u,o,f)),i.length!=0&&this.refresh({AdditionalUpdates:i,RepeatRelated:!0}))},onAutoFill:function(t){var i=n(t.currentTarget).attrs().rql;this.autoFill(i&&i.data=="repeat")},autoFill:function(){var t,r,u,i,f;if(this.config.AutoFills&&(t=this.config.SelectedTag,r=t.InlineTopicId?this.findTopicById(t.InlineTopicId):t.SelectedTopic,r&&(u=r.AutoFillIds||this.config.DefaultAutoFillIds,u&&(i=n.map(this.config.AutoFills,function(n){return u.indexOf(n.Id)!==-1?{name:n.Title,Id:n.Id}:null}),i.length!==0)))){f={header:$rql.i18n.strings.AutoFillDialogHeader,items:i};f.index=i.findIndexByKey("Id",this.lastAutoFillId);this.autoFillDialog=new $rql.ui.controls.listdialog(f);this.autoFillDialog.on("selected",this.onAutoFillSelected);this.autoFillDialog.show()}},onAutoFillSelected:function(n){this.autoFillDialog&&this.autoFillDialog.dispose();n.item&&n.item.Id&&(this.lastAutoFillId=n.item.Id,this.refresh({AutoFillId:n.item.Id}))},onResetTopic:function(t){var i=n(t.currentTarget).attrs();i.rql.confirm=$rql.i18n.strings.ResetTopicConfirm;this.confirmationIsRequired(t,i,this.onResetTopicConfirmed,null)},onResetTopicConfirmed:function(){this.refresh({Action:"ResetTopic"})},adjustDimensions:function(t){if(this.$main&&!this.$.closest("[rql-view]").hasClass("no-scrolling")){var i=this.isDesktop()?31:this.isTablet()?40:60,r=n("footer").height()||0,u=this.config.windowHeight;this.$.find("div.full-height, form.full-height").each(function(){var t=u-n(this).offset().top-r-i;n(this).height()!=t&&n(this).height(t)});t&&this.config.SelectedTag&&this.config.SelectedTag.InlineTopicId&&this.adjustInlineTopicDimensions()}},onResize:function(){var t=this;this.isVisible()&&n(window).doTimeout("wb_resize",250,function(){var i,f,e,u,r;if(!$rql.api.offline||$rql.api.getOfflineAppState()!=="inactive"){if(t.postbackInProgress){t.onResize();return}i=!1;t.uiBreakpoint?(f=$rql.ui.mediaBreakpoints.indexOf(t.uiBreakpoint),e=$rql.ui.mediaBreakpoints.indexOf($rql.ui.getMediaBreakpoint()),i=e-f!=0):i=!0;t.config.isFabric&&i?t.isBlockingActivityActive()?(t.updateLayout(t.TopicsHashCopy),t.config.SelectedTag.treeControl&&setTimeout(function(){t.config.SelectedTag.treeControl.openTopic(t.config.TopicId,null,!0,null)},100),t.uiBreakpoint=$rql.ui.getMediaBreakpoint()):t.config.HasSideNav?t.refresh({onlyIfChanged:!0}):t.fullRefresh():(u=n(window).innerHeight(),t.config.windowHeight!=u&&(t.config.windowHeight=u),t.adjustDimensions(!0));$rql.api.isAndroid&&!i&&(r=t.$.find("[data-toggle='dropdown'][aria-expanded='true']"),r.length>0&&(r.click(),r.click()));$rql.events.trigger("containerResized",{});$rql.ui.resized()}})},onScroll:function(){var t=this;n.doTimeout("scroll",250,function(){var i=t.$.find("[rql-role='wb-speeddial']"),r;n(window).scrollTop()>0&&Math.ceil(n(window).scrollTop()+n(window).height())===n(document).height()?(i.find("[rql-role='speeddial-extended-buttons']:visible").length>0&&(r=i.find("[rql-action='toggleSpeeddial']"),r&&t.raise("toggleSpeeddial",{currentTarget:r[0]})),i.find("[rql-role='floating-navbutton']").filter(function(){return n(this).find("> a[rql-action='guideme']").length===0}).addClass("hide")):i.find("[rql-role='floating-navbutton']").filter(function(){return n(this).find("> a[rql-action='guideme']").length===0}).removeClass("hide")})},onToggleFullscreen:function(){this.isVisible()&&this.adjustDimensions(!0)},onBackToTop:function(){if(this.isVisible()){if(!this.activeMode&&this.config.Settings.InlineStyle=="Block"&&this.config.SelectedTag.InlineTopicId&&this.isInlineContentVisible(this.findInlineTopicElement(this.config.SelectedTag.InlineTopicId)))return;var n=this.activeMode=="search"?this.$searchContainer:this.$scrollableContent;n&&n.scrollintoview()}},onCloseTree:function(){this.config.TreeWidth=0;this.toggleTree()},onToggleTree:function(){this.config.TreeWidth=(this.config.TreeWidth+1)%4;this.config.TreeWidth==0&&(this.config.TreeWidth=2);this.toggleTree()},toggleTree:function(){var n="width0 width1 width2 width3",t="width"+this.config.TreeWidth;this.$sidebar&&this.$sidebar.removeClass(n).addClass(t);this.$treeToggle&&this.$treeToggle.removeClass(n).addClass(t);this.$content&&this.$content.removeClass(n).addClass(t);this.adjustDimensions(!0)},onSearch:function(t){var i=n.trim(n(t.target).closest("[rql-role='wb-search']").find("input[type='text'][rql-role='wb-search-query']").val()),r;i&&i.length!=0&&(Sys.CultureInfo.CurrentCulture.name!="zh-CN"&&i.length<3?$rql.ui.info($rql.i18n.strings.QueryTextTooShort):this.searchParams&&this.searchParams.text==i&&this.searchParams.tagId==this.config.SelectedTag.Id?(this.setActiveMode("search"),this.$.find("[rql-role='wb-actions']").hasClass("open-sidebar")&&this.$.find("[rql-role='toggle-sidebar']").trigger("click"),r=this.$.find("[rql-role='search-input']"),r.length>0&&!r.hasClass("hide")&&r.addClass("hide")):this.search(i))},onSearchKeyPress:function(n){if(n.which==13){n.preventDefault();n.stopPropagation();this.onSearch(n)}},onChangeSearchPage:function(){this.search()},search:function(n){var i=this.config,t;n?this.searchParams={tagId:i.SelectedTag?i.SelectedTag.Id:undefined,text:n,startIndex:0,topicIndex:0}:this.searchParams.startIndex=this.searchParams.count;t=this.createStoreViewRequest();t.TagId=this.searchParams.tagId;t.Text=this.searchParams.text;t.StartIndex=this.searchParams.topicIndex;t.Limit=10;this.post("search",t,t).done(this.onSearchSuccess).fail(this.onError);this.showSearchInProgress()},showSearchInProgress:function(){if(!this.$searchSpinner){var n=this.$.find("input[rql-role='wb-search-query']");this.$searchSpinner=this.$.find("i[rql-role='wb-search-spinner']");this.config.isFabric||$rql.ui.positionSpinner(n,this.$searchSpinner)}this.$searchSpinner.show();this.disableLink(this.$searchPagerLinks,!0)},hideSearchInProgress:function(){this.$searchSpinner&&this.$searchSpinner.hide();this.disableLink(this.$searchPagerLinks,!1)},onSearchSuccess:function(t,i,r){var c,f,u,e,o,s,h;if(this.hideSearchInProgress(),t){if(this.ensureSearchContainer(),c=r.context,this.searchParams.count=this.searchParams.startIndex+(t.Results?t.Results.length:0),this.searchParams.count==0)f=$f($rql.i18n.strings.NoWorkbookSearchResults,this.searchParams.text);else{if(t.Results){for(this.searchParams.topicIndex=t.Results[t.Results.length-1].Index,$rql.ui.decorateArrayItems(t.Results),u=0;u<t.Results.length;u++)t.Results[u].PathTitles=n.map(t.Results[u].Path,function(n){return{Title:n}}),$rql.ui.decorateArrayItems(t.Results[u].PathTitles);t.Results.length>0&&(e=this.$.find("[rql-role='search-input']"),e.length>0&&!e.hasClass("hide")&&e.addClass("hide"))}o=$rql.ui.templates("workbook-search-page").render({Results:t.Results,FirstPage:this.searchParams.startIndex==0});this.searchParams.startIndex==0?(this.$searchContainer.scrollintoview(),this.$searchPages.html(o)):(s=this.$searchPages.children("ol, ul").first(),s.append(o),h=s.children($f(":eq({0})",this.searchParams.startIndex)).get(0),h&&h.scrollIntoView(!1));t.HasMoreResults||(f=$rql.i18n.strings.EndOfSearchResults)}this.$searchPages.toggle(this.searchParams.count!=0);this.$searchPager.toggle(!!t.HasMoreResults);this.$searchMessage.html(f?f:"").toggle(f!=null);this.$.find("[rql-role='wb-actions']").hasClass("open-sidebar")&&this.$.find("[rql-role='toggle-sidebar']").trigger("click");this.$searchContainer.widgetize();this.setActiveMode("search")}},ensureSearchContainer:function(){this.$searchContainer&&this.$searchContainer.is(":visible")||(this.$searchContainer=this.$.find("div[rql-role='wb-search-container']"),this.$searchContainer.html($rql.ui.templates("workbook-search-container").render()),this.$searchPages=this.$searchContainer.find("div[rql-role='wb-search-pages']"),this.$searchPager=this.$searchContainer.find("div[rql-role='wb-search-pager']"),this.$searchPagerLinks=this.$searchPager.find("a"),this.$searchMessage=this.$searchContainer.find("div[rql-role='wb-search-message']"),this.$searchContainer&&!this.$searchContainer.is(":visible")&&(this.activeMode=null))},setActiveMode:function(n){if(this.activeMode!=n){this.activeMode=n;var t=this.activeMode=="search";this.$main&&this.$main.toggle(!t);this.$path&&this.$path.toggle(!t);this.$findingBar&&this.$findingBar.toggle(!t);this.$searchContainer&&this.$searchContainer.toggle(t);t?this.isDesktop()?this.$preSearchElements=this.$toolbar.find("div[rql-role='toolbar-block']").children(":visible").not("[rql-role='wb-search']").hide():(this.$preSearchElements=this.$.find('[rql-role="tags-container"], [rql-role="btn-container"]').find("a:visible").not('[rql-action="search"], [rql-role="search"]').hide(),this.$.find("div[rql-role='search-input']").attr("active-mode","search")):(this.$preSearchElements&&this.$preSearchElements.show(),this.$preSearchElements=null,this.isTablet()&&this.$.find("div[rql-role='search-input']").attr("active-mode","workbook"));this.$returnToFormBtn&&this.$returnToFormBtn.toggle(t);this.adjustDimensions(!0)}},onReturnToForm:function(){this.setActiveMode()},startChangeMonitor:function(n){this.stopChangeMonitor();$rql.api.user.anonymous||(this.changeMonitorId=window.setTimeout(this.activateChangeMonitor,(n>0?n:this.autoSaveInterval)*1e3))},stopChangeMonitor:function(){return this.changeMonitorId?(window.clearTimeout(this.changeMonitorId),this.changeMonitorId=null,!0):!1},activateChangeMonitor:function(){var t=new Date,n=Math.round((t.getTime()-this.lastActivityDate.getTime())/1e3);n>=this.autoSaveInterval?this.refresh({onlyIfChanged:!0}):this.startChangeMonitor(this.autoSaveInterval-n)},refreshWithCustomCallBack:function(n,t){var i=this;this.pendingAction="customcallback";this.pendingActionData={ControlId:n,Method:t};this.refresh({onlyIfChanged:!0})||this.handlePendingAction()},onContentActivity:function(){this.lastActivityDate=new Date;this.changeMonitorId||this.startChangeMonitor()},processBlockingActivityStart:function(){this.blockingActivityIsActive=!0;this.changeMonitorPausedByBlockingActivity=this.stopChangeMonitor()},processBlockingActivityStop:function(){this.blockingActivityIsActive=!1;this.changeMonitorPausedByBlockingActivity&&(this.startChangeMonitor(),this.changeMonitorPausedByBlockingActivity=!1)},isBlockingActivityActive:function(){return this.blockingActivityIsActive&&!this.changeMonitorId},setFocusAfterRefresh:function(t,i){var r=this.config,u=this,h=this.$scrollableContent,e=this.findInlineTopicElement(r.SelectedTag.InlineTopicId),o,s,f;t===undefined&&(t=!(r.IsSameTopic&&r.IsSameInlineTopic));i||this.config.IsPropel||(i=this.postbackControlId);r.SelectedTag&&r.SelectedTag.$content&&((this.pendingFocusId||i)&&(o=this.findControlAndGetNextControlId(i,r.SelectedTag.$content),s=new Promise(function(n){return u.findFocusableControl(o||u.pendingFocusId,r.SelectedTag.$content,n)}),s.then(function(n){if(u.pendingFocusId=u.postbackControlId=null,n.length>0)if(n.length===1){if(r.SelectedTag.SelectedTopic.Inline&&n.parents("[rql-role='inline-header']").length>0)u.scrollIntoView(e);else if(n[0]===document.activeElement||r.SelectedTag.InlineTopicId&&u.getElementInlineTopicId(n)!==r.SelectedTag.InlineTopicId||(n.focus(),n.is(":text")?n.val(n.val()):n.is(":visible")&&n.is("select")&&n.hasClass("rql-select2")&&n.select2("focus")),n[0]===document.activeElement)return}else n[0].focus()})),t&&r.SelectedTag.InlineTopicId&&this.getElementInlineTopicId(n(document.activeElement))!=r.SelectedTag.InlineTopicId&&(f=this.findInlineTopicElement(r.SelectedTag.InlineTopicId).children("div[rql-role='inline-header']").find("input[type='text'], input[type='number'], input[type='tel'], textarea"),f.length>0?this.postbackControlId&&f.length>1?f.filter($f('[rql-id="{0}"],[rql-id2="{0}"]',this.postbackControlId)).focus():f.first().focus():$rql.api.uiMode==="mobile"||r.isFabric||e.scrollintoview()))},disposeControl:function(n,t){n&&n[t]&&(n[t].dispose&&n[t].dispose(),n[t]=null)},disposeTopics:function(){var n=this.config.SelectedTag,i=n.Topics,t,r;if(i)for(t=0;t<i.length;t++)r=i[t],r.Parent=r.$=null;n.TopicHistory=null;n.TopicHistoryIndex=null;n.TopicTree=null;n.Topics=null},disposeTag:function(n){n&&(this.disposeControl(n,"pathControl"),this.disposeControl(n,"treeControl"))},dispose:function(){this.stopChangeMonitor();$rql.events.off({backToTop:this.onBackToTop,fullscreen:this.onToggleFullscreen,resize:this.onResize});$rql.events.offKey("CTRL+G",this.onGuideMe);this.detachInlineEventHandlers();n(window).off("beforeunload."+this.config.uniqueRqlId,this.workbookUnloaded);this.tagManager&&(this.tagManager.dispose(),this.tagManager=null);t.callBaseMethod(this,"dispose")},save:function(t){var i=$rql.isEvent(t)&&t.currentTarget?this.getElementInlineTopicId(n(t.currentTarget)):null;this.refresh(i?{InlineTopicId:i}:null)},onPanelShow:function(n){var t=this;this.refresh({onlyIfChanged:n.panelLoaded})||n.sender.activatePanel(n.panelId)&&this.widgetize(function(){t.collectValues(t.values=t.newValueCollection(),!0,!0)})},initToolbarRefs:function(){var t,i,r;if(this.$toolbar&&this.$toolbar.length>0){if(t=this.config.isFabric?":visible":"",this.$returnToFormBtn=this.jQueryFirstOrNull(this.$.find("a[rql-action='returnToForm']")),this.$guideMeBtn=this.jQueryFirstOrNull(this.$toolbar.find("a[rql-action='guideme']")),this.config.isFabric?(this.$workbookNavbar=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-navbar']")),this.$workbookNavbar&&(this.$nextFindingBtn=this.jQueryFirstOrNull(this.$workbookNavbar.find("a[rql-action='nextFinding']:visible")))):(this.$previousTopicBtn=this.jQueryFirstOrNull(this.$toolbar.find("a[rql-action='previousTopic']")),this.$nextTopicBtn=this.jQueryFirstOrNull(this.$toolbar.find("a[rql-action='nextTopic']")),this.$nextFindingBtn=this.jQueryFirstOrNull(this.$toolbar.find("a[rql-action='nextFinding']"))),this.$saveBtn=this.jQueryFirstOrNull(this.$toolbar.find($f("a[rql-action='save']{0}",t))),this.$autoFillBtn=this.$toolbar.find("a[rql-action='autoFill']:not([rql-data])"),this.$autoFillRepeatBtn=this.$toolbar.find("a[rql-action='autoFill'][rql-data='repeat']"),this.$switchToViewModeBtn=this.jQueryFirstOrNull(this.$toolbar.find($f("a[rql-action='switchEditMode'][rql-data='view']{0}",t))),this.$switchToEditModeBtn=this.jQueryFirstOrNull(this.$toolbar.find($f("a[rql-action='switchEditMode'][rql-data='edit']{0}",t))),this.$searchInput=this.jQueryFirstOrNull(this.$toolbar.find("input[rql-role='wb-search-query']")),this.$savedAt=this.jQueryFirstOrNull(this.$.find($f("div[rql-role='save-timestamp']{0}",t))),this.$resetTopicBtn=this.jQueryFirstOrNull(this.$toolbar.find($f("a[rql-action='resetTopic']{0}",t))),this.attachEventHandlers(),this.config.isFabric)n(document).off("scroll").on("scroll",this.onScroll)}else this.config.isFabric&&(i=this.config.IsEmbed?this.config.Form.page:this.page,i&&i.app&&(i.app.toggleAppTitle(!0),i.app.toggleAppNav(!0)));this.config.isFabric&&(this.$previousTopicBtns=this.$.find("a[rql-action='previousTopic']"),this.$nextTopicBtns=this.$.find("a[rql-action='nextTopic']"),this.config.HasTags&&this.$tags&&(this.$tags.parents('div[rql-role="navbar-tags-dropdown"]').length===0?(this.$timersCount=this.$tags.find("span[rql-role='timers-count']"),this.$timersMonitor=this.$tags.find("div[rql-role='timers-monitor']")):(r=this.$tags.parents('div[rql-viewtype="Workbook"]').find('div[rql-role="wb-navbar"]:visible'),this.$timersMonitor=r.find('div[rql-role="timers-monitor"]'),this.$timersCount=this.$timersMonitor.find('span[rql-role="timers-count"]'))))},renderFabricUi:function(){var n=this.config,t=n.IsEmbed?this.config.Form.page:this.page;return t&&t.app&&(n.AppTitle=t.app.config.Title),$rql.ui.templates("workbook").render(n,{"workbook-navbar":$rql.ui.templates("workbook-navbar").html})},renderFabricTopicNavMenuControl:function(n,t,i){if(n)if(t&=!this.config.HasSideNav,n.treeControl&&n.treeControl.$.is(":visible"))this.config.HasSideNav&&!n.treeControl.$.is(":visible")&&n.treeControl.showTopicNav();else if(n.treeControl&&!n.treeControl.$.is(":visible")&&this.disposeControl(this.config.SelectedTag,"treeControl"),n.treeControl=new $rql.ui.controls.wbtopicnav(this.createTagPartContainer(n).appendTo(this.$tree),{TopicId:this.config.TopicId,Topics:n.TopicTree,TopicsHash:i,LabelTemplate:$rql.ui.templates("workbook-tree-topic-label"),RenderAsDropdown:t,SideNavLayout:this.config.HasSideNav,AppTitle:this.config.AppTitle}).show(),!t)n.treeControl.on("changeTopic",this.onTreeChangeTopic)},renderFabricPathControl:function(n,t,i){var r=this.config;n&&t&&this.$path&&(n.pathControl&&this.disposeControl(n,"pathControl"),n.pathControl=new $rql.ui.controls.wbpath(this.createTagPartContainer(n).appendTo(this.$path).get(0),{Topics:n.Topics,RenderAsDropdown:i}),n.pathControl.render(r.TopicId))},renderFabricTagControl:function(t){var i=this.config,r,u,f;i.HasTags&&(this.$tags=this.jQueryFirstOrNull(this.$.find("div[rql-role='wb-tags']:visible")),this.$tags&&(r=n.map(i.Tags,function(n){return[[n.TabId,n.Title?n.Title:n.Name]]}),u={data:r,RenderContentArea:!1,ExtraTools:i.Settings.ShowTagControls,ToolsHtml:undefined},this.tagTabsControl&&!this.tagTabsControl.$.is(":visible")&&(this.tagTabsControl.dispose(),this.tagTabsControl=null),this.tagTabsControl||(f=n.extend(u,{Settings:i.Settings,RenderAsDropdown:t}),this.tagTabsControl=new $rql.ui.controls.tabs(this.createTagPartContainer(i.SelectedTag).appendTo(this.$tags).get(0),f).on({shown:this.onTagTabShown}),i.SelectedTag&&this.tagTabsControl.show(i.SelectedTag.TabId))))},updateLayout:function(n){var i=this.config,u=$rql.ui.checkMediaBreakpoint("md","lesser"),t,r;i.isFabric&&(t=this.config.IsEmbed?this.config.Form.page:this.page,u?(this.renderFabricTagParts(i.SelectedTag,n),this.splitScreen(!0),t&&t.app&&(t.app.toggleAppTitle(!1),t.app.toggleAppNav(!1),r=this.$.find("div[rql-role='wb-app-nav-wrapper']"),t.app.navbar&&r&&r.length>0&&r.html()===""?t.app.navbar.renderAsDropdown(r,{hidetitle:!0,dropdownonly:!0,hasTags:i.Settings.ShowTagTabs}):r.find("ul.dropdown-menu").removeClass("show"))):(t&&t.app&&(t.app.toggleAppNav(!0),i.Settings.ShowTagTabs&&t.app.setAppNavbarTheme("nav-tabs rql-default"),t.app.toggleAppTitle(!i.Settings.ShowToolbar||i.Settings.ShowTagTabs)),i.HasSideNav||this.splitScreen(),this.renderFabricTagParts(i.SelectedTag,n)),this.renderFabricTagControl(u),this.$toolbar=this.$.find("div[rql-role='wb-actions']").length>0?this.$.find("div[rql-role='wb-actions']"):this.$.find("div[rql-role='wb-navbar']:visible"),this.initToolbarRefs(),this.toggleToolbarButtons(),this.ensureShareUrl(this.$toolbar))},splitScreen:function(t){var e,r,f,s,h,i,b;if(t){this.$.find("[rql-role='wb-main'] .vsplitter").length>0&&this.$.find("[rql-role='wb-wrapper']").data("splitter")&&this.$.find("[rql-role='wb-wrapper']").data("splitter").destroy();return}var k=this,c=$rql.ui.templates("workbook-snippets").render({VerticalSplitter:!0}),u=n(c),y=u.attr("rql-orientation"),p=u.attr("rql-splitterlimit"),l=u.attr("rql-initialposition"),a=u.attr("rql-size-limit");if(a){for(e=a.split(";"),r=[],i=0;i<e.length;i++){var w=e[i].replace("[","").replace("]",""),v=w.splitAndTrim(","),o={min:"0",max:"0",position:""};for(f=0;f<v.length;f++)s=v[f].splitAndTrim("="),o[s[0]]=s[1];o.position!==""&&r.push(o)}if(r.length>0)for(h=n(window).width(),i=0;i<r.length;i++)if(h>parseInt(r[i].min)&&h<parseInt(r[i].max)){l=r[i].position;break}}this.config.Settings.ShowTree&&(b=this.$.find("[rql-role='wb-wrapper']").split({orientation:y,position:l,limit:p}).css("height",""),this.$.find("[rql-role='wb-main'] .vsplitter").html(c))},showInlinePanel:function(t){var i=n(t.currentTarget).parents(".wb-inline-panel-wrapper").find(".wb-inline-panel"),f=n(t.currentTarget).parents("[rql-role='speeddial-extended-buttons']").length>0,r,u;i.is(":visible")?i.hide():(this.$.find(".fabric-inline-panel").hide(),i.attr("rql-toggleanchorcontrol")&&(r=n(t.currentTarget).parents(".wb-inline-panel-wrapper").find($f("[rql-role='panelToggle']",i.attr("rql-toggleanchorcontrol"))),u=parseInt(r.css("margin-left")),i.css({right:(f?this.$.innerWidth()-r[0].getBoundingClientRect().left+10:n(window).width()-r[0].getBoundingClientRect().left+u)+"px"})),i.show())},onCopyShareLink:function(t){copyToClipboard(this.$shareUrl[0]);var i=n(t.currentTarget).parents(".wb-inline-panel-wrapper").find(".wb-inline-panel");i.hide().removeClass("position-absolute").css({})},resetBlockOverlays:function(){this.config.Settings.InlineStyle==="Block"&&(this.config.SelectedTag.$content.find("[rql-inline-id]").show().applyOverlay(!1),this.$content.parent().css("overflow-y",""))},renderBlockOverlays:function(n){var r,i,t;this.config.Settings.InlineStyle==="Block"&&(n&&n.length!==0||(r=this.config.SelectedTag.InlineTopicId,n=this.findInlineTopicElement(r)),n&&n.length!==0)&&(i=n.prev("div[rql-inline-id]"),t=n.next("div[rql-inline-id]"),t.length>0&&t.applyOverlay(!0,null,$rql.ui.templates("workbook-snippets").render({InlineTopicBlockOverlay:!0,Down:!0}),{top:t.position().top+"px",height:this.config.topicBlockOverlayHeight+"px"}),i.length>0&&i.applyOverlay(!0,null,$rql.ui.templates("workbook-snippets").render({InlineTopicBlockOverlay:!0,Up:!0}),{top:n.parents("[rql-role='topic-body']").position().top+"px",height:this.config.topicBlockOverlayHeight+"px"}),this.$content.parent().css("overflow-y","hidden"))},setActiveBlockTopic:function(t){var f=this,i,o,s,e;if(this.resetBlockOverlays(),this.config.SelectedTag.$content){if(!t){this.$contentBody.find("[rql-inline-id]").removeAttr("style");return}if(i=this.findInlineTopicElement(t),i.length!==0){var r=i.prev("div[rql-inline-id]"),u=i.next("div[rql-inline-id]"),h=parseInt(i.parent().css("padding-top"));r&&r.length>0&&(r.find("[rql-role='inline-header']").removeAttr("style"),r.css({height:this.config.topicBlockOverlayHeight+"px","overflow-y":"hidden"}),o=r.attr("rql-inline-id"),this.config.SelectedTag.$content.find("[rql-inline-id]").each(function(t,i){var r=n(i).attr("rql-inline-id");if(r!==o)n(i).removeAttr("style"),n(i).hide();else return n(i).css({"margin-top":-h}),!1}));u&&u.length>0&&(u.find("[rql-role='inline-header']").removeAttr("style"),u.css({height:this.config.topicBlockOverlayHeight+"px","overflow-y":"hidden"}),s=u.attr("rql-inline-id"),e=!1,this.config.SelectedTag.$content.find("[rql-inline-id]:visible").each(function(t,i){if(e)n(i).removeAttr("style"),n(i).hide();else{var r=n(i).attr("rql-inline-id");r===s&&(e=!0)}}));i.removeAttr("style");i.outerHeight(window.innerHeight-i[0].getBoundingClientRect().top-this.config.topicBlockOverlayHeight);i.css({"overflow-y":"auto"});setTimeout(function(){f.renderBlockOverlays(i);f.lockContentScrolling(!0);var n=f.$.find("div[rql-role='wb-speeddial']");n&&!n.is(":visible")&&n.addClass("d-flex").show()},0)}}},updateInlineTopicNavInfo:function(n,t,i){if(this.$selectedTopicNavInfo||(this.$selectedTopicNavInfo=this.$.find("div[rql-role='wb-content'] div[rql-role='category-nav-info']")),this.$selectedTopicNavInfo){var r;if($rql.ui.checkMediaBreakpoint("sm","lesser")){this.$selectedTopicNavInfo.html("").hide();return}this.config.Settings.InlineStyle==="None"?this.config.SelectedTag.SelectedTopic.SubTopics||!n?this.$selectedTopicNavInfo.html("").hide():(r=this.getVisibleTopicsArray(n),this.$selectedTopicNavInfo.html($f("{0} {2} {1}",r.findIndexByKey("Id",n)+1,r.length,$rql.i18n.strings.Of)).show()):this.config.Settings.InlineStyle==="Block"&&(this.config.SelectedTag.SelectedTopic.SubTopics&&!i?this.$selectedTopicNavInfo.html("").hide():t&&i&&(r=this.getVisibleTopicsArray(t),this.$selectedTopicNavInfo.html($f("{0} {2} {1}",r.findIndexByKey("Id",t)+1,r.length,$rql.i18n.strings.Of)).show()))}},updateInlineTopicFindingsInfo:function(n){var t=this.$.find("div[rql-role='wb-content'] div[rql-role='category-findings-info']"),r=$rql.ui.checkMediaBreakpoint("sm","lesser"),i;n?(t.show(),r?t.find("[rql-role='category-finding-info-text']").html(""):t.find("[rql-role='category-finding-info-text']").html($f("{0} {1}",n,$rql.i18n.strings.Findings)),i=this.findTopicById(this.config.TopicId),i&&t.find("[rql-role='category-finding-info-icon']").removeClass(function(n,t){return t.startsWith("wb")}).addClass(i.IconClass)):t.hide()},onToggleSpeeddial:function(t){var i=n(t.currentTarget).find("svg, i"),u,r;i&&(u=i.is("i")?i.hasClass("fa-ellipsis-v"):i.attr("data-icon")==="ellipsis-v",r=i.parents("[rql-role='wb-speeddial']").find("[rql-role='speeddial-extended-buttons']"),u?(i.is("i")?i.removeClass("fa-ellipsis-v").addClass("fa-ellipsis-h"):(i.attr("data-icon","ellipsis-h"),i.attr("data-fa-transform","down-9 right-10")),r.removeClass("hide")):(i.is("i")?i.removeClass("fa-ellipsis-h").addClass("fa-ellipsis-v"):(i.attr("data-icon","ellipsis-v"),i.attr("data-fa-transform","down-9 right-15")),r.addClass("hide")))},ensureShareUrl:function(n){var i=$rql.ui.checkMediaBreakpoint("sm","lesser"),t=this.$.find("input[rql-role='share-url-input']");this.$shareUrl=t.length===1?t:t.length>1?i?this.$.find("#sd_shareInput"):n?n.find("input[rql-role='share-url-input']"):this.$.find("#shareInput"):this.jQueryFirstOrNull(this.$.find("input[rql-role='share-url-input']"))},getVisibleTopicsArray:function(n){var t=this.findTopicById(n);return t&&t.Parent&&t.Parent.SubTopics?t.Parent.SubTopics.where(function(n){return n.Visible===!0}):[]},workbookUnloaded:function(n,t){n.stopPropagation();this.lockContentScrolling(!1);this.isBlockingActivityActive()||this.refresh({onlyIfChanged:!0,promiseResolve:t?t.promiseResolve:null})},stickElement:function(n){n.sticky({topSpacing:0,zIndex:6})},setActiveInlineTopicsHeight:function(t,i){if(!i||i.length===0)return i;var f=this,r=n("<div>"+i+"<\/div>"),u=t.find("[rql-inline-id].active");return u.length>0?(this.config.inlineTopicHeightCollection||(this.config.inlineTopicHeightCollection=[]),u.each(function(t,i){var u=Math.ceil(n(i).outerHeight());r.find($f("[rql-inline-id='{0}']",n(i).attr("rql-inline-id"))).css({"min-height":u+"px","max-height":u+"px"});f.config.inlineTopicHeightCollection.push({selector:$f("[rql-inline-id='{0}']",n(i).attr("rql-inline-id")),height:u})}),r.html()):i},setInlineTopicHeight:function(t,i){var r;if(!t||t.length===0)return"";if(this.config.inlineTopicHeightCollection||(this.config.inlineTopicHeightCollection=[]),i){var u=n(i),f=t.find("[rql-role='inline-content-body']"),e=t.find("[rql-role='inline-content-findings']");return f.length>0&&(r=Math.ceil(f.height()),u.find("[rql-role='inline-content-body']").css({"min-height":r+"px","max-height":r+"px"}),this.config.inlineTopicHeightCollection.push({selector:"[rql-role='inline-content-body']",height:r})),e.length>0&&(r=Math.ceil(e.height()),u.find("[rql-role='inline-content-findings']").css({"min-height":r+"px","max-height":r+"px"}),this.config.inlineTopicHeightCollection.push({selector:"[rql-role='inline-content-findings']",height:r})),u.wrap("<div/>").parent().html()}return r=Math.ceil(t[0].scrollHeight),t.css({"min-height":r+"px","max-height":r+"px"}),this.config.inlineTopicHeightCollection.push({$el:t,height:r}),""},removeInlineTopicHeight:function(){var r,i,t;if(this.$content.find(".ui-transition-hide").removeClass("ui-transition-hide"),this.config.inlineTopicHeightCollection&&this.config.inlineTopicHeightCollection.length!==0){for(r=0;r<this.config.inlineTopicHeightCollection.length;r++)i=this.config.inlineTopicHeightCollection[r],t=i.$el,t?(t.css("min-height")===i.height+"px"&&t.css("min-height",""),t.css("max-height")===i.height+"px"&&t.css("max-height","")):(t=this.config.SelectedTag.$content.find(i.selector).filter(function(t,r){return n(r).css("max-height")===i.height+"px"&&n(r).css("min-height")===i.height+"px"}),t.css("min-height",""),t.css("max-height",""));this.config.inlineTopicHeightCollection=[]}},updateShareUrl:function(t,i){if(this.$shareUrl)this.$shareUrl.val(this.getShareUrl(t,i)).on("click",function(){n(this).select()})},scrollIntoView:function(n,t){n&&n.length!==0&&(t&&t.length!==0?$rql.ui.isVisibleInContainer(n,t,"vertical")||n.scrollintoview():$rql.ui.isVisibleInViewport(n[0])||n.scrollintoview())}};t.registerClass("$rql.ui.controls.workbook",$rql.ui.controls.storeview)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.geolocationInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={recordLocation:function(){if(this.$.find("#locbutton").hide(),this.$.find("#clearbutton").hide(),this.$.find("#loading").show(),this.$.find("#Error").hide(),navigator.geolocation){var n=$rql.api.offline&&window.navigator.userAgent.match(/android/i)?!0:!1;$rql.api.offline&&$rql.api.isIOS?this.getCurrentLocation():navigator.geolocation.getCurrentPosition(this.displayPosition,this.displayError,{enableHighAccuracy:n,timeout:6e4,maximumAge:0})}else this.getCurrentLocation()},getCurrentLocation:function(){var t=n.proxy(this.onLocationResponseSuccess,this),i=n.proxy(this.onLocationRequestFailed,this);$rql.http.get($rql.api.baseUrl.pathname+"Location/Current","").done(t).fail(i)},onLocationResponseSuccess:function(n){n.HasError?this.displayError({code:2,message:n.ErrorMessage}):this.displayPosition({coords:{latitude:n.Latitude,longitude:n.Longitude,accuracy:n.Accuracy}})},onLocationRequestFailed:function(t){var i=t.statusText,r;t.responseText&&t.responseText.indexOf("{")===0&&(r=n.parseJSON(t.responseText).ResponseStatus,r&&(i=r.Message));i||(i="Error");this.displayError({code:2,message:i})},displayPosition:function(n){this.retires=0;this.config.Latitude=n.coords.latitude;this.config.Longitude=n.coords.longitude;this.config.Accuracy=n.coords.accuracy;this.config.Empty=!1;this.render();this.$.find("#loading").hide();this.$.find("#locbutton").show();this.$.find("#clearbutton").show();this.$.find("#locbutton").html(this.config.$strings.Map+" "+this.config.$strings.Location);this.$.find("#locbutton").attr("rql-action","mapLocation")},displayBestPosition:function(n){var r=n.coords.accuracy,i,t;if(r>30.48&&this.failedAttempts<3){this.locations.push(n);this.failedAttempts++;this.recordLocation();return}if(this.failedAttempts>=3){for(i=0,t=1;t<this.locations.length;t++)this.locations[i].coords.accuracy>this.locations[t].coords.accuracy&&(i=t);n=this.locations[i]}this.displayPosition(n)},displayError:function(n){this.$.find("#locbutton").show();this.$.find("#clearbutton").show();this.$.find("#loading").hide();this.$.find("#Error").show();$log.info(n,null);switch(n.code){case 1:this.$.find("#PermissionError").show();break;case 2:this.$.find("#PositionError").show();break;case 3:this.$.find("#RequestError").show()}},clearLocation:function(){this.config.Latitude="";this.config.Longitude="";this.config.Accuracy="";this.config.Empty=!0;this.render();this.$.find("#maplastlocation").attr("disabled","disabled");this.$.find("#clearbutton").attr("disabled","disabled");this.$.find("#locdiv").prop("title","Latitude:  Longitude:  Accuracy:");this.$.find("#locbutton").html(this.config.ButtonText);this.$.find("#locbutton").attr("rql-action","recordLocation")},mapLocation:function(){$rql.api.offline&&window.navigator.userAgent.match(/android/i)&&!window.navigator.userAgent.match(/KF/g)?window.open("geo:"+this.config.Latitude+","+this.config.Longitude):window.open("https://www.google.com/maps?q="+this.config.Latitude+"+"+this.config.Longitude+"&z=18")},initialize:function(t){this.config=n.extend({},i,t);this.failedAttempts=0;this.locations=[];this.timeoutVal=6e4;this.timeOutRetryCount=0;this.on({recordLocation:this.recordLocation,clearLocation:this.clearLocation,mapLocation:this.mapLocation});this.render()},render:function(){var n=this.config;n.Value=n.Empty?$f("{0}|{1:n8}|{2:n8}|{3:n2}","Geolocation","","",""):$f("{0}|{1:n8}|{2:n8}|{3:n2}","Geolocation",n.Latitude,n.Longitude,n.Accuracy);this.$.empty().append($rql.ui.templates("geolocation").render(this.config)).show();this.widgetize()},onRendered:function(){this.config.Empty?(this.$.find("#maplastlocation").attr("disabled","disabled"),this.$.find("#clearbutton").attr("disabled","disabled")):(this.$.find("#clearbutton").removeAttr("disabled"),this.$.find("#maplastlocation").removeAttr("disabled"))}};t.registerClass("$rql.ui.controls.geolocationInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.temperatureInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){if(this.config=n.extend({},i,t,{ContextName:t.ContextId,CtrlId:t.ContextId+"__sensor_"+t.Id}),!this.config.EditInGrid)this.config.Form.on("collectValues",this.onCollectValues);if(this.config.Unit||(this.config.Unit="F"),$rql.api.isAndroid&&$rql.api.dataTypes.Number.usesWesternArabicDigits?(this.config.InputType="number",this.config.UiStyle=null):$rql.api.isIPhone11?(this.config.InputType="number",this.config.UiStyle=null):this.config.InputType=$rql.api.isIOS?"text":$rql.api.isUWP?"text":"text",this.config.Value)try{this.config.DisplayValue=this.config.InputType!="number"||this.config.ReadOnly&&!Boolean(this.config.RenderAsGroup)?$rql.api.dataTypes.Number.format(parseFloat(this.config.Value)):this.config.Value}catch(r){this.config.DisplayValue=this.config.Value}this.prepareModel();this.states={"default":0,busy:1,readyStable:2,readyUnstable:3};this.readingState=this.states.default;$rql.events.on("containerResized",this.onResize);this.render()},prepareModel:function(){var i=this.config,r,u,t,f,e;(i.ShowRequiredMessage&&(i.ErrorMessage=i.ValidationErrorMessage===""?$rql.i18n.strings.RequiredField:i.ValidationErrorMessage),i.Options)&&(r=i.Options.parseOptions(),r&&r.length!==0)&&(u=r.first(function(n){return n.config==="temperature"}),t={},u&&(t.ShowUnit=!0,t.ShowRefresh=this.isDesktop()?!1:!0,u.options.map(function(n){n.param==="showunit"?t.ShowUnit=n.value==="true":n.param==="showrefresh"?t.ShowRefresh=n.value==="true":n.param==="showicon"&&(t.ShowIcon=n.value==="true")})),i.UiState&&(f=r.first(function(n){return n.config==="uistatecss"}),f&&f.options.each(function(n){if(n.param===i.UiState){t.HasState=!0;var r={UiStyle:n.value};return $rql.ui.parseUiStyle(r),t.StateIconCss=r.WrapperUiStyle,t.StateTextCss=r.UiStyle,!1}}),t.ShowIcon&&(e=r.first(function(n){return n.config==="uistateicons"}),e&&e.options.each(function(n){if(n.param===i.UiState)return t.HasIcon=!0,t.StateIcon=n.value,!1}))),n.extend(i,t))},dispose:function(){this.off();this.config.EditInGrid||this.config.Form.off("collectValues",this.onCollectValues);this.$.off();t.callBaseMethod(this,"dispose")},onCollectValues:function(n){if(!this.config.ReadOnly){if(n.excludeDefaults&&this.config.IsDefault){n.values.add(this.config.CtrlId,"");return}this.config.Value=this.$.find("input").attr("rql-value");n.values.add(this.config.CtrlId,$f("Temperature|{0:n2}|{1}|{2}",this.config.Value,this.config.Unit,this.inputMethod));n.values.processControlWithDefault(this.$,!n.excludeDefaults&&this.config.IsDefault)}},onPostback:function(){if($rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS)){var n=this;this.registerBlockingActivityStart();$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbeStatus/IsAttached","").done(function(){$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbeConfig/Stabilization","").done(function(t){n.registerBlockingActivityStop();t?(n.readingsToKeep=t.ReadingsToKeep,n.slopeThreshold=t.SlopeThreshold,n.readingIntervalMs=t.ReadingIntervalMs,n.maxReadingCount=t.MaxReadingCount,n.getNormalizedTemperature()):n.triggerPostback()})}).fail(function(){n.registerBlockingActivityStop();this.triggerPostback()})}else this.registerBlockingActivityStop(),this.triggerPostback()},onResize:function(){$rql.ui.isMobile()&&this.$.find("input[rql-value]").attr("size")?this.$.find("input[rql-value]").attr("size",""):this.$.find("input[rql-value]").attr("size",this.config.Columns)},render:function(){this.$.empty().append($rql.ui.templates("temperature").render(this.config));this.on({postback:this.onPostback});var t=this.$input=this.$.find("input[rql-value]"),n=this;t.on("input",function(){n.readingState=n.states.default;n.indicateState();n.inputMethod="manual"});this.widgetize();this.readingState=this.getItemState("readingState");this.indicateState();this.removeItemState();this.hideStatesFromOtherControls();this.onResize()},getNormalizedTemperature:function(){this.readingsToKeep=typeof this.readingsToKeep=="undefined"?5:this.readingsToKeep;this.slopeThreshold=typeof this.slopeThreshold=="undefined"?.06:this.slopeThreshold;this.readingIntervalMs=typeof this.readingIntervalMs=="undefined"?500:this.readingIntervalMs;this.maxReadingCount=typeof this.maxReadingCount=="undefined"?50:this.maxReadingCount;this.readCount=1;this.lastReadings=[];for(var n=0;n<this.readingsToKeep;n++)this.lastReadings.push({reading:-1e4,time:(new Date).getTime()});this.showOverlay();this.readingState=this.states.busy;this.indicateState();this.registerBlockingActivityStart();$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbe/"+this.config.Unit,"").done(this.onGetTemperature).fail(this.onFail)},calculateSlope:function(){for(var n,u,t=0,f=0,e=0,o=0,s=(new Date).getTime(),r=this.readingsToKeep,i=this.lastReadings.length-1;i>=this.lastReadings.length-r;i--)n=this.lastReadings[i].time-s,u=this.lastReadings[i].reading,t+=n,f+=n*n,e+=n*u,o+=u;return 1e3*(r*e-t*o)/(r*f-t*t)},temperatureHasStabilized:function(){return this.readCount>=this.readingsToKeep&&Math.abs(this.calculateSlope())<this.slopeThreshold},onGetTemperature:function(n){var i,t,u,r;try{if(i=this.$input,this.readingState=this.states.busy,this.indicateState(),n.ErrorMessage)this.readingState=this.states.default,this.indicateState(),this.hideOverlay(),$rql.ui.error(n.ErrorMessage,$rql.i18n.strings.Error),this.registerBlockingActivityStop();else{if(t=n.Temperature,u=n.RecordButtonPressed,this.inputMethod="probe",i.val(n.IsVirtualReading?"":t),this.lastReadings.push({reading:t,time:(new Date).getTime()}),this.temperatureHasStabilized()||u){this.hideOverlay();i.attr("rql-value",t);this.readingState=this.states.readyStable;this.indicateState();this.registerBlockingActivityStop();this.triggerPostback();return}if(this.readCount>=this.maxReadingCount){this.hideOverlay();i.attr("rql-value",t);this.readingState=this.states.readyUnstable;this.indicateState();this.registerBlockingActivityStop();this.triggerPostback();return}r=this;window.setTimeout(function(){$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbe/"+r.config.Unit,"").done(r.onGetTemperature).fail(r.onFail)},this.readingIntervalMs)}}finally{this.readCount++}},onFail:function(t){var i,r;this.hideOverlay();this.readingState=this.states.default;this.indicateState();t.responseText&&t.responseText.indexOf("{")===0&&(r=n.parseJSON(t.responseText).ResponseStatus,r&&(i=r.Message));i||(i="Error");$log.error(i)},getURL:function(t){return n.ajax({type:"GET",url:t,cache:!1,async:!1}).responseText},triggerPostback:function(){this.saveItemState("readingState",this.readingState);this.config.EditInGrid||(this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,null,null,null,null,this.$[0]))},showOverlay:function(){if(this.config.Form)this.config.Form.showOverlay(!0);else{var n=this.$.closest("div[rql-view]");n.length&&$rql.ui.get(n).showOverlay(!0)}},hideOverlay:function(){if(this.config.Form)this.config.Form.hideOverlay();else{var n=this.$.closest("div[rql-view]");n.length&&$rql.ui.get(n).hideOverlay()}},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$input[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)},saveItemState:function(n,t){if(this.config.Form){var i=this.config.Form.getViewSetting(this.config.CtrlId);i==null&&(i={});n&&(i[n]=t);this.config.Form.setViewSetting(this.config.CtrlId,i)}},getItemState:function(n){if(this.config.Form){var t=this.config.Form.getViewSetting(this.config.CtrlId)||{};return t[n]}return this.states.default},removeItemState:function(){this.config.Form&&this.config.Form.removeViewSetting(this.config.CtrlId)},hideStatesFromOtherControls:function(){if(this.isFabric()){var i=this,r=this.$.closest("[rql-inline-id]").attr("rql-inline-id"),t=this.$.closest('[rql-role="topic-body"]').find('[rql-type="Temperature"]').filter(function(t,u){return n(u).attr("rql-id2")!==i.config.Id&&n(u).closest("[rql-inline-id]").attr("rql-inline-id")!==r});t.length>0&&t.find('[rql-role="reading-state"]').hide()}},indicateState:function(){var o=this.config,n=this.$.find('div[rql-role="reading-state"]'),r=this.$input,u=this.$.find('[rql-role="tempUnit"]'),f,t,e,i;$rql.api.uiVersion>2?(f="text-success",t="text-warning"):(f="success",t="warning");e=this.readingState;i=function(){n.removeClass(f).removeClass(t).html("");r.removeClass("border-success border-warning").removeAttr(o.ReadOnly?"":"disabled");u.removeClass("border-success border-warning").removeAttr(o.ReadOnly?"":"disabled")};e===this.states.busy?(i(),n.html('<i class="fas fa-spinner fa-spin prefix"><\/i> Reading...').addClass(t).show(),r.addClass("border-warning").attr("disabled","disabled"),u.addClass("border-warning").attr("disabled","disabled")):e===this.states.readyStable?(i(),n.html('<i class="fas fa-check prefix"><\/i> Acquired.').addClass(f).show(),r.addClass("border-success"),u.addClass("border-success")):e===this.states.readyUnstable?(i(),n.html('<i class="fas fa-exclamation-triangle prefix"><\/i> Reading not stable.').addClass(t).show(),r.addClass("border-warning"),u.addClass("border-warning")):(i(),n.hide())},resetState:function(){this.readingState=this.states.default;this.saveItemState("readingState",this.readingState);this.indicateState()}};t.registerClass("$rql.ui.controls.temperatureInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.tempprobe=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){if(this.config=n.extend({},i,t,{ContextName:t.ContextId,CtrlId:t.ContextId+"__sensor_"+t.Id}),!this.config.EditInGrid)this.config.Form.on("collectValues",this.onCollectValues);if(this.config.Unit||(this.config.Unit="F"),$rql.api.isAndroid?(this.config.InputType="number",this.config.UiStyle=null):$rql.api.isIPhone11?(this.config.InputType="number",this.config.UiStyle=null):this.config.InputType=$rql.api.isIOS?"text":$rql.api.isUWP?"text":"text",this.config.Value)try{this.config.DisplayValue=this.config.InputType!="number"||this.config.ReadOnly&&!Boolean(this.config.RenderAsGroup)?$rql.api.dataTypes.Number.format(parseFloat(this.config.Value)):this.config.Value}catch(r){this.config.DisplayValue=this.config.Value}this.prepareModel();this.states={"default":0,busy:1,readyStable:2,readyUnstable:3};this.readingState=this.states.default;$rql.events.on("containerResized",this.onResize);this.render()},prepareModel:function(){var i=this.config,r,u,t,f,e;(i.ElementId=this.elementId,i.ShowRequiredMessage&&(i.ErrorMessage=i.ValidationErrorMessage===""?$rql.i18n.strings.RequiredField:i.ValidationErrorMessage),i.Options)&&(r=i.Options.parseOptions(),r&&r.length!==0)&&(u=r.first(function(n){return n.config==="temperature"}),t={},u&&(t.ShowUnit=!0,t.ShowRefresh=this.isDesktop()?!1:!0,u.options.map(function(n){n.param==="showunit"?t.ShowUnit=n.value==="true":n.param==="showrefresh"?t.ShowRefresh=n.value==="true":n.param==="showicon"&&(t.ShowIcon=n.value==="true")})),i.UiState&&(f=r.first(function(n){return n.config==="uistatecss"}),f&&f.options.each(function(n){if(n.param===i.UiState){t.HasState=!0;var r={UiStyle:n.value};return $rql.ui.parseUiStyle(r),t.StateIconCss=r.WrapperUiStyle,t.StateTextCss=r.UiStyle,!1}}),t.ShowIcon&&(e=r.first(function(n){return n.config==="uistateicons"}),e&&e.options.each(function(n){if(n.param===i.UiState)return t.HasIcon=!0,t.StateIcon=n.value,!1}))),n.extend(i,t))},dispose:function(){this.off();this.config.EditInGrid||this.config.Form.off("collectValues",this.onCollectValues);this.$.off();t.callBaseMethod(this,"dispose")},onCollectValues:function(n){if(!this.config.ReadOnly){if(n.excludeDefaults&&this.config.IsDefault){n.values.add(this.config.CtrlId,"");return}this.config.Value=this.$.find("input").attr("rql-value");n.values.add(this.config.CtrlId,$f("Temperature|{0:n2}|{1}|{2}",this.config.Value,this.config.Unit,this.inputMethod));n.values.processControlWithDefault(this.$,!n.excludeDefaults&&this.config.IsDefault)}},onAcquireTemp:function(){if(this.config.Debug===!0||$rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS)){var n=this,t=this.config;if(this.$probeRefreshIcon.hasClass("probe-stop")){this.stopReading=!0;return}this.registerBlockingActivityStart();$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbeStatus/IsAttached","").done(function(){n.toggleOtherGroupControls(!0);$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbeConfig/Stabilization","").done(function(t){n.registerBlockingActivityStop();t&&(n.readingsToKeep=t.ReadingsToKeep,n.slopeThreshold=t.SlopeThreshold,n.readingIntervalMs=t.ReadingIntervalMs,n.maxReadingCount=t.MaxReadingCount,n.getNormalizedTemperature());n.indicateState()})}).fail(function(){n.registerBlockingActivityStop();n.indicateState()})}else this.indicateState()},onResize:function(){$rql.ui.isMobile()&&this.$.find("input[rql-value]").attr("size")?this.$.find("input[rql-value]").attr("size",""):this.$.find("input[rql-value]").attr("size",this.config.Columns)},toggleOtherGroupControls:function(t){var r=this.config,u,o,i,f,e;if(r.MultiReadGroup&&(u=r.Form.$.find($f("div[rql-read-group='{0}']",r.MultiReadGroup)),u.length>0)){if(o=this.$&&this.$.length!==0?this.$[0]:null,i=u.filter(function(n,t){return t!==o}),i.length===0)return;f=i.find("input[rql-value]");e=i.find("[rql-role='btn-refresh']");t?(f.each(function(t,i){var r=n(i);r.attr("readonly")&&r.attr("prev-state","readonly");r.attr("readonly",!0)}),e.each(function(t,i){var r=n(i);r.attr("disabled")&&r.attr("prev-state","disabled");r.attr("disabled",!0)})):(f.each(function(t,i){var r=n(i);r.attr("prev-state")||r.removeAttr("readonly");r.removeAttr("prev-state")}),e.each(function(t,i){var r=n(i);r.attr("prev-state")||r.removeAttr("disabled");r.removeAttr("prev-state")}))}},render:function(){this.$.empty().append($rql.ui.templates("tempprobe").render(this.config));this.on({acquire:this.onAcquireTemp});this.$probeRefreshIcon=this.$.find("button[rql-role='btn-refresh'] > i");var t=this.$input=this.$.find("input[rql-value]"),n=this;t.on("input",function(){n.readingState=n.states.default;n.indicateState();n.inputMethod="manual"});this.widgetize();this.readingState=this.getItemState("readingState");this.indicateState();this.removeItemState();this.hideStatesFromOtherControls();this.onResize()},getNormalizedTemperature:function(){this.readingsToKeep=typeof this.readingsToKeep=="undefined"?5:this.readingsToKeep;this.slopeThreshold=typeof this.slopeThreshold=="undefined"?.06:this.slopeThreshold;this.readingIntervalMs=typeof this.readingIntervalMs=="undefined"?500:this.readingIntervalMs;this.maxReadingCount=typeof this.maxReadingCount=="undefined"?50:this.maxReadingCount;this.showOverlay();this.readingState=this.states.busy;this.indicateState();this.$.find("[rql-role='btn-refresh']").css("z-index","10001").removeAttr("disabled");this.config.AllowOverride&&this.$.find("input[rql-value]").removeAttr("readonly");this.toggleOtherGroupControls(!0);this.registerBlockingActivityStart();$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbe/"+this.config.Unit,"").done(this.onGetTemperature).fail(this.onFail)},onGetTemperature:function(t){var i=this,c=this.config,r,f,e,o,s,u,h;try{if(r=this.$input,this.readingState=this.states.busy,this.indicateState(),t.ErrorMessage)this.readingState=this.states.default,this.indicateState(),this.hideOverlay(),$rql.ui.error(t.ErrorMessage,$rql.i18n.strings.Error),this.registerBlockingActivityStop();else if(f=t.Temperature,this.inputMethod="probe",t.IsVirtualReading?this.config.MultiReadGroup&&r.val(""):(r.val(f),r.attr("rql-value",f)),this.readingState=this.states.busy,this.indicateState(),(t.RecordButtonPressed||t.IsHwStabilized)&&this.config.MultiReadGroup&&!this.stopReading)e=this.config.Form.$.find($f("div[rql-read-group='{0}']",this.config.MultiReadGroup)),o=!0,e.each(function(t,i){var r=n(i);if(!o)return s=r,!1;r.attr("id")===c.ElementId&&(o=!1)}),i.readingState=i.states.readyStable,i.indicateState(),s?(u=s.data("rql.ui.control"),u&&(u.setParamsManually({readingsToKeep:this.readingsToKeep,slopeThreshold:this.slopeThreshold,readingIntervalMs:this.readingIntervalMs,maxReadingCount:this.maxReadingCount}),h=t.IsHwStabilized?2e3:0,setTimeout(function(){u.getNormalizedTemperature()},h))):(this.hideOverlay(),this.registerBlockingActivityStop(),e.each(function(t,i){var r=n(i).data("rql.ui.control");r&&r.updateReadingState()}),this.triggerPostback());else{if(this.stopReading){delete this.stopReading;this.hideOverlay();this.readingState=this.states.readyStable;this.indicateState();this.updateReadingState();this.registerBlockingActivityStop();this.triggerPostback();return}window.setTimeout(function(){$rql.http.get($rql.api.baseUrl.pathname+"TemperatureProbe/"+i.config.Unit,"").done(i.onGetTemperature).fail(i.onFail)},this.readingIntervalMs)}}catch(l){console.log(l)}},onFail:function(t){var i,r;this.hideOverlay();this.readingState=this.states.default;this.indicateState();this.toggleOtherGroupControls(!1);t.responseText&&t.responseText.indexOf("{")===0&&(r=n.parseJSON(t.responseText).ResponseStatus,r&&(i=r.Message));i||(i="Error");$log.error(i)},getURL:function(t){return n.ajax({type:"GET",url:t,cache:!1,async:!1}).responseText},triggerPostback:function(){if(!this.config.EditInGrid){var t=n.Event("update");t.currentTarget=this.$input[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t);this.config.Form.update(new $rql.ui.components.valueCollection,null,null,null,null,this.$[0])}},updateReadingState:function(){this.saveItemState("readingState",this.readingState)},showOverlay:function(){if(this.config.Form)this.config.Form.showOverlay(!0);else{var n=this.$.closest("div[rql-view]");n.length&&$rql.ui.get(n).showOverlay(!0)}},hideOverlay:function(){if(this.config.Form)this.config.Form.hideOverlay();else{var n=this.$.closest("div[rql-view]");n.length&&$rql.ui.get(n).hideOverlay()}},saveItemState:function(n,t){if(this.config.Form){var i=this.config.Form.getViewSetting(this.config.CtrlId);i==null&&(i={});n&&(i[n]=t);this.config.Form.setViewSetting(this.config.CtrlId,i)}},getItemState:function(n){if(this.config.Form){var t=this.config.Form.getViewSetting(this.config.CtrlId)||{};return t[n]}return this.states.default},removeItemState:function(){this.config.Form&&this.config.Form.removeViewSetting(this.config.CtrlId)},hideStatesFromOtherControls:function(){if(this.isFabric()){var i=this,r=this.$.closest("[rql-inline-id]").attr("rql-inline-id"),t=this.$.closest('[rql-role="topic-body"]').find('[rql-type="Tempprobe"]').filter(function(t,u){return n(u).attr("rql-id2")!==i.config.Id&&n(u).closest("[rql-inline-id]").attr("rql-inline-id")!==r});t.length>0&&t.find('[rql-role="reading-state"]').hide()}},indicateState:function(){var c=this.config,n=this.$.find('div[rql-role="reading-state"]'),r=this.$input,u=this.$.find('[rql-role="tempUnit"]'),f,t,e,s,h=this.$probeRefreshIcon,o,i;$rql.api.uiVersion>2?(f="text-success",t="text-warning",e="fas fa-thermometer",s="probe-stop text-danger fas fa-stop"):(f="success",t="warning",e="icon-refresh",s="probe-stop icon-stop");o=this.readingState;i=function(){n.removeClass(f).removeClass(t).html("");r.removeClass("border-success border-warning").removeAttr(c.ReadOnly?"":"disabled");u.removeClass("border-success border-warning").removeAttr(c.ReadOnly?"":"disabled")};o===this.states.busy?(i(),n.html('<i class="fas fa-spinner fa-spin prefix"><\/i> Reading...').addClass(t).show(),r.addClass("border-warning").attr("disabled","disabled"),u.addClass("border-warning").attr("disabled","disabled"),h.attr("class",s)):o===this.states.readyStable?(i(),n.html('<i class="fas fa-check prefix"><\/i> Acquired.').addClass(f).show(),r.addClass("border-success"),u.addClass("border-success"),h.attr("class",e)):o===this.states.readyUnstable?(i(),n.html('<i class="fas fa-exclamation-triangle prefix"><\/i> Reading not stable.').addClass(t).show(),r.addClass("border-warning"),u.addClass("border-warning")):(i(),n.hide(),h.attr("class",e))},resetState:function(){this.readingState=this.states.default;this.saveItemState("readingState",this.readingState);this.indicateState()},setParamsManually:function(n){this.readingsToKeep=n.readingsToKeep;this.slopeThreshold=n.slopeThreshold;this.readingIntervalMs=n.readingIntervalMs;this.maxReadingCount=n.maxReadingCount}};t.registerClass("$rql.ui.controls.tempprobe",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.tagmanager=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({serviceUrl:$rql.api.baseUrl.pathname+"workbook/"},t);this.templates={main:$rql.ui.templates("tagmanager-dialog"),item:$rql.ui.templates("tagmanager-item"),title:$rql.ui.templates("tagmanager-title")};this.on({addTag:this.onAddTag,startRenameTag:this.onStartRenameTag,cancelRenameTag:this.onCancelRenameTag,renameTag:this.onRenameTag,deleteTag:this.onDeleteTag,restoreTag:this.onRestoreTag,toggleDeleted:this.onToggleDeleted,deletePermanentlyTag:this.onDeletePermanentlyTag,dismiss:this.onDismiss});$rql.api.uiVersion<=2&&this.widgetize()},dispose:function(){this.off();t.callBaseMethod(this,"dispose")},initHasDeleted:function(){var n=this.config,t;for(n.HasDeleted=!1,t=0;t<n.Tags.length;t++)if(n.Tags[t].Deleted){n.HasDeleted=!0;break}},getAvailableTitles:function(n,t){for(var u,r=this.config,i=[],f=0;f<r.Titles.length;f++)u=r.Titles[f],u!==n&&r.Tags&&!r.Tags.any(function(n){return n.Title===u})&&i.push(u);return t&&t!==n&&!i.any(function(n){return n===t})&&i.unshift(t),n&&i.unshift(n),i},updateAvailableTitles:function(){var n=this.config;n.UsePredefinedTitles=$rql.api.uiVersion>2&&n.Titles!=null;n.AvailableTitles=null;n.UsePredefinedTitles&&(n.AvailableTitles=this.getAvailableTitles())},render:function(){return this.config.DeletedVisible=!1,this.refresh(),n("body.tablet").addClass("pos-fix w-100"),this},refresh:function(){this.post("tags",{StoreId:this.config.StoreId,ViewName:this.config.ViewName},null).done(this.onLoad).fail(this.onLoadError)},initDeletePermanentlyAction:function(n){n.AllowDeletePermanently=this.config.UsePredefinedTitles&&this.config.AllowCreate&&n.Created&&n.Deleted},onLoad:function(t){var u,r,i=this.config,f;for(i.Tags=t.Tags,i.BaseTags=t.BaseTags,i.AllowCreate=$rql.coalesce(t.Settings.AllowCreate,!0),i.AllowCreateMultiple=$rql.coalesce(t.Settings.AllowCreateMultiple,!0),i.AllowRename=$rql.coalesce(t.Settings.AllowRename,!0),i.AllowDelete=$rql.coalesce(t.Settings.AllowDelete,!0),this.initHasDeleted(),i.VisibleTags=[],u=0;u<i.Tags.length;u++)r=i.Tags[u],r.Index=u,!r.BaseNameTitle&&r.BaseName&&r.BaseName!==r.Name&&(r.BaseNameTitle=r.BaseName),r.AllowRename=i.AllowRename||i.AllowCreate&&r.Created!=null,r.AllowDelete=i.AllowDelete||i.AllowCreate&&r.Created!=null,this.initDeletePermanentlyAction(r),(!r.Deleted||i.DeletedVisible||t.RestoreDeletedTags)&&(i.VisibleTags.push(r),r.ItemNum=i.VisibleTags.length);for(i.VisibleTags.length===0&&console.log("There are no visible tags."),i.VisibleTags[Math.ceil(i.VisibleTags.length/2)-1].EndColumn=!0,t.RestoreDeletedTags&&(i.ReadOnly=!1,i.DeletedVisible=!0),u=0;u<i.BaseTags.length;u++)r=i.BaseTags[u],r.Title==null&&(r.Title=r.Name);i.Titles=t.Titles;this.updateAvailableTitles();$rql.api.uiVersion>2&&this.$.find("select[rql-role='rql-select2'].select2-hidden-accessible").length>0&&this.$.find("select[rql-role='rql-select2'].select2-hidden-accessible").select2("destroy");this.$.html(this.templates.main.render(i,{item:this.templates.item.html}));this.$modal=this.$.find(".modal");$rql.api.uiVersion>2?(this.widgetize(),f=this,$rql.ui.renderSelect2(this.$,{dropdownParent:this.$modal},"",this.$.find("select[rql-role='rql-select2']")),$rql.ui.showModal(this.$modal,{onHidden:function(){f.$.find("select[rql-role='rql-select2'].select2-hidden-accessible").select2("destroy")}})):(n(".modal-backdrop").remove(),this.$.show().widgetize())},onAddTag:function(t){var u=this.config,f=n(t.currentTarget).attrs().rql,e=f.value,r=u.UsePredefinedTitles?this.$.find("select[rql-id='new-tag-title-selector']"):this.$.find("[rql-id='new-tag-title-text']"),i=r.val(),o=this.$.find("select[rql-id='new-tag-base-selector']").val();i&&this.sendAction("Create",{Name:i,BaseName:o,Count:e});this.markInputAsRequired(r,!i);t.preventDefault();t.stopPropagation()},getTagActionArguments:function(t){var i=n(t.currentTarget).closest("[rql-role='tag']"),r=parseInt(i.attr("rql-tag-index")),u=this.config.Tags[r];return{tag:u,$container:i,$name:i.find("[rql-role='tag-title']"),$titleSelectorPlaceholder:i.find("[rql-role='tag-title-selector-placeholder']"),$titleSelector:i.find("[rql-id='title-selector']"),$actions:i.find("[rql-role='tag-actions']"),$renameActions:i.find("[rql-role='rename-actions']")}},renderTagOnActionComplete:function(n){var t=this.config;$rql.api.uiVersion>2&&t.UsePredefinedTitles&&n.$titleSelector.hasClass("select2-hidden-accessible")&&(n.$titleSelector.select2("destroy"),n.$titleSelectorPlaceholder.hide());n.tag.UsePredefinedTitles=t.UsePredefinedTitles;$rql.ui.replaceHtml(n.$container,this.templates.item.render(n.tag))},onStartRenameTag:function(n){var r=this.config,t=this.getTagActionArguments(n),i;r.UsePredefinedTitles?(t.$name.hide(),i={AvailableTitles:this.getAvailableTitles(t.tag.Title,t.tag.Created?null:t.tag.BaseNameTitle)},t.$titleSelectorPlaceholder.show(),t.$titleSelectorPlaceholder.html(this.templates.title.render(i)),$rql.ui.renderSelect2(t.$titleSelectorPlaceholder,{dropdownParent:this.$modal},"",t.$titleSelectorPlaceholder.find("[rql-id='title-selector']"))):(t.$name.prop("disabled",!1),t.$name.focus());t.$actions.addClass("hide");t.$renameActions.removeClass("hide");n.preventDefault();n.stopPropagation()},onCancelRenameTag:function(n){var t=this.getTagActionArguments(n);this.renderTagOnActionComplete(t);n.preventDefault();n.stopPropagation()},onRenameTag:function(n){var f=this.config,t=this.getTagActionArguments(n),u=f.UsePredefinedTitles?t.$titleSelector:t.$name,i=u.val(),r;this.markInputAsRequired(u,!i);i&&(t.tag.Title===i?this.renderTagOnActionComplete(t):(r={Name:t.tag.Title,NewName:i,BaseName:t.tag.BaseName||t.tag.Title},this.sendAction("Rename",r,{actionArguments:t,request:r},this.onRenameSuccess)));n.preventDefault();n.stopPropagation()},onRenameSuccess:function(n,t,i){var e=this.config,r=i.context.actionArguments,f=i.context.request,u;r.tag.BaseName=f.BaseName;e.UsePredefinedTitles&&!r.tag.Created&&!r.tag.BaseNameTitle&&r.tag.Title&&(r.tag.BaseNameTitle=r.tag.Title);this.config.Caller&&this.config.Caller.config&&this.config.Caller.config.SelectedTag&&(u=this.config.Caller.config.SelectedTag,u.Name===r.tag.Name&&(u.Id=u.Name=u.Title=f.NewName));r.tag.Title=f.NewName;this.renderTagOnActionComplete(r)},onDeleteTag:function(n){this.onDeleteOrRestoreTag(n,"Delete")},onRestoreTag:function(n){this.onDeleteOrRestoreTag(n,"Restore")},onDeleteOrRestoreTag:function(n,t){var i=this.getTagActionArguments(n),r={Name:i.tag.Title,BaseName:i.tag.BaseName||i.tag.Title};this.sendAction("Delete",r,{actionArguments:i,request:r,action:t},this.onDeleteOrRestoreSuccess);n.preventDefault();n.stopPropagation()},onDeleteOrRestoreSuccess:function(n,t,i){var u=i.context.actionArguments,r,f,e;u.tag.Deleted=i.context.action==="Delete";this.initDeletePermanentlyAction(u.tag);this.initHasDeleted();this.renderTagOnActionComplete(u);this.$.find("[rql-action='toggleDeleted']").toggleClass("hide",!this.config.HasDeleted);u.tag.Deleted&&(r=this.config.Caller,r&&r.config&&r.config.SelectedTag.Name==u.tag.Name&&(f=this.config.Tags.first(function(n){return!n.Deleted}),f&&(e=r.findTagById(f.Name),e&&(r.config.SelectedTag=e))))},onDeletePermanentlyTag:function(n,t){var u=this,i=this.getTagActionArguments(n),r={Name:i.tag.Title,BaseName:i.tag.BaseName||i.tag.Title};$rql.ui.confirm($rql.i18n.strings.DeletePermanentlyConfirm,"",function(){u.sendAction("DeletePermanently",r,{actionArguments:i,request:r,action:t})});n.preventDefault();n.stopPropagation()},markInputAsRequired:function(n,t){n.parent().parent().toggleClass($rql.api.uiVersion>2?"input-error":"error",t)},sendAction:function(t,i,r,u){var f=this.config,e=n.extend({StoreId:f.StoreId,ViewName:f.ViewName,Action:t},i);u||(u=this.onActionSuccess);this.post("tagaction",e,r).done(function(n,t,i){n&&n.Error?$rql.ui.error(n.Error):u(n,t,i)}).fail(this.onActionFail)},onActionSuccess:function(n){$rql.api.uiVersion>2&&this.$modal&&this.$modal.modal("hide");this.refresh(n)},onActionFail:function(n){if(n&&n.responseText){var t=JSON.parse(n.responseText);t&&t.ResponseStatus&&(t=t.ResponseStatus);t&&t.Message&&alert(t.Message)}},onToggleDeleted:function(){this.config.DeletedVisible=!this.config.DeletedVisible;$rql.api.uiVersion>2&&this.$modal&&this.$modal.modal("hide");this.refresh()},onDismiss:function(){this.config.Caller.fullRefresh()},onLoadError:function(n){console.log(n)}};t.registerClass("$rql.ui.controls.tagmanager",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.banner=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(){this.render()},render:function(){this.$.appendTo(n("span[id='__banner__']")).show()}};t.registerClass("$rql.ui.controls.banner",$rql.ui.controls.view)})(jQuery);
(function(n){var t=(n.browser.msie?"paste":"input")+".mask",i=window.orientation!=undefined;n.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};String.prototype.setCharAt=function(n,t){return n>this.length-1?this+t:this.substr(0,n)+t+this.substr(n)};n.fn.getSelectionStart=function(){var n,t;return this.lengh==0?-1:(input=this[0],n=input.value.length,input.createTextRange?(t=document.selection.createRange().duplicate(),t.moveEnd("character",input.value.length),t.text==""&&(n=input.value.length),n=input.value.lastIndexOf(t.text)):typeof input.selectionStart!="undefined"&&(n=input.selectionStart),n)};n.fn.getSelectionEnd=function(){var n,t;return this.lengh==0?-1:(input=this[0],n=input.value.length,input.createTextRange?(t=document.selection.createRange().duplicate(),t.moveStart("character",-input.value.length),t.text==""&&(n=input.value.length),n=input.value.lastIndexOf(t.text)):typeof input.selectionEnd!="undefined"&&(n=input.selectionEnd),n)};n.fn.extend({caret:function(n,t){if(this.length!=0){if(typeof n=="number")return t=typeof t=="number"?t:n,this.each(function(){if(this.setSelectionRange)this.setSelectionRange(n,t);else if(this.createTextRange){var i=this.createTextRange();i.collapse(!0);i.moveEnd("character",t);i.moveStart("character",n);i.select()}});if(this[0].setSelectionRange)n=this[0].selectionStart,t=this[0].selectionEnd;else if(document.selection&&document.selection.createRange){var i=document.selection.createRange();n=0-i.duplicate().moveStart("character",-1e5);t=n+i.text.length}return{begin:n,end:t}}},unmask:function(){return this.trigger("unmask")},onblur:function(){return this.trigger("blur.mask")},onstripValue:function(){return this.trigger("stripValue")},numericmask:function(t,i){i=n.extend({placeholder:"",decimalholder:"0"},i);var h=Sys.CultureInfo.CurrentCulture.numberFormat.CurrencyDecimalSeparator,f=Sys.CultureInfo.CurrentCulture.numberFormat.CurrencyGroupSeparator,l=Sys.CultureInfo.CurrentCulture.numberFormat.CurrencySymbol,e=Sys.CultureInfo.CurrentCulture.numberFormat.NegativeSign,o=new RegExp(f.charCodeAt(0)==160||f.charCodeAt(0)==32?"\\s":f,"gm");t=t.replace(/,/g,f);t=t.replace(new RegExp("\\.","gm"),h);t=t.replace(/\\$/g,l);var c=n.mask.definitions,u=[],s=t.length,r;return n.each(t.split(""),function(n,t){t=="?"?s--:c[t]?u.push(new RegExp(c[t])):u.push(null)}),this.trigger("unmask").each(function(){function d(n){var t=n.which;if(n.ctrlKey||n.altKey||n.metaKey||t<32)return!0;if(t){var r=String.fromCharCode(t),i=f.caret(),u=i.begin,s=i.end,e=f.val().setCharAt(u,r);return y(e.replace(o,""))}}function w(){return f.val(r.join("")).val()}function b(n,t,i){for(var u=n;u<t&&u<s;u++)r[u]=i}function v(){r=n.map(t.split(""),function(n){if(n!="?")return c[n]?i.placeholder:n})}function g(){v();var n=y(f.val().replace(o,""),!0);n?w():f.val("").val()}function nt(){var r=f.val(),t,i;if(r.trimEnd()==""){n(f).attr("rql-value","");return}v();t=f.val().replace(o,"");y(t,!0);w();i=Number.parseLocale(t);n(f).attr("rql-value",i?$rql.api.dataTypes.Number.toJson(i):"")}function tt(){f.val(f.val().replace(l,"").replace(o,"")).val()}function y(n,t){var w=n.substring(0,1)==e,c,k,l,v,d,o,f,y,g;for(w&&p&&(n=n.replace(e,"")),c=n.indexOf(h),k=c!=-1,c=c==-1?n.length:c,l=n.length-c,v=a,o=c-1,f=a-1;f>=0&&o>=0;f--)u[f]?(y=n.charAt(o),u[f].test(y)&&(r[f]=y,v=f,l++),o--):r[f]==n.charAt(o)&&(l++,o--);for(d=n.length-l==0,t&&b(0,v,i.placeholder),l=0,v=a,o=c+1,f=a+1;f<s;f++)u[f]?(y=n.charAt(o),u[f].test(y)&&(r[f]=y,v=f,l++),o++):r[f]==n.charAt(o)&&(l++,o++);return g=!k||n.length-c-1-l==0,t&&b(v+1,s,i.decimalholder),w&&p&&n.length>0&&(r[0]=e),d&&g}v();var f=n(this),k=f.val(),p=n.inArray(e,r)!=-1,a=n.inArray(h,r);a=a==-1?r.length:a;f.attr("readonly")||f.one("unmask",function(){f.unbind(".mask")}).bind("keypress.mask",d).bind("blur.mask",function(){nt();f.val()!=k&&f.change()}).bind("stripValue",function(){tt()}).bind("paste.mask",function(){setTimeout(function(){g()},1)})})},mask:function(r,u){var c;if(!r&&this.length>0)return c=n(this[0]),c.data(n.mask.dataName)();u=n.extend({placeholder:"_",completed:null},u);var l=new RegExp(u.placeholder,"gm"),h=n.mask.definitions,f=[],o=r.length,s=null,e=r.length;return n.each(r.split(""),function(n,t){t=="?"?(e--,o=n):h[t]?(f.push(new RegExp(h[t])),s==null&&(s=f.length-1)):f.push(null)}),this.trigger("unmask").each(function(){function v(n){while(++n<=e&&!f[n]);return n}function d(n){while(--n>=0&&!f[n]);return n}function k(n,t){if(!(n<0)){for(var r=n,i=v(t);r<e;r++)if(f[r]){if(i<e&&f[r].test(a[i]))a[r]=a[i],a[i]=u.placeholder;else break;i=v(i)}p();c.caret(Math.max(s,n))}}function g(n){for(var r,o,t=n,i=u.placeholder;t<e;t++)if(f[t])if(r=v(t),o=a[t],a[t]=i,r<e&&f[r].test(o))i=o;else break}function nt(n){var r=n.which;if(r==8||r==46||i&&r==127){var f=c.caret(),u=f.begin,t=f.end;return t-u==0&&(u=r!=46?d(u):t=v(u-1),t=r==46?v(t):t),b(u,t),k(u,t-1),!1}if(r==27)return c.val(w),c.caret(0,y()),!1}function tt(n){var r=n.which,t=c.caret(),i,o,s;return n.ctrlKey||n.altKey||n.metaKey||r<32?!0:r?(t.end-t.begin!=0&&(b(t.begin,t.end),k(t.begin,t.end-1)),i=v(t.begin-1),i<e&&(o=String.fromCharCode(r),f[i].test(o)&&(g(i),a[i]=o,p(),s=v(i),c.caret(s),u.completed&&s>=e&&u.completed.call(c))),!1):void 0}function b(n,t){for(var i=n;i<t&&i<e;i++)f[i]&&(a[i]=u.placeholder)}function p(){return c.val(a.join("")).val()}function y(n){var h,i,t,r,l;for(n=!0,h=c.val(),i=-1,t=0,r=0;t<e;t++)if(f[t]){for(a[t]=u.placeholder;r++<h.length;)if(l=h.charAt(r-1),f[t].test(l)){a[t]=l;i=t;break}if(r>h.length)break}else a[t]==h.charAt(r)&&t!=o&&(r++,i=t);return!n&&i+1<o?(c.val(""),b(0,e)):(n||i+1>=o)&&(p(),n||c.val(c.val().substring(0,i+1))),o?t:s}function it(){c.val(c.val().replace(l,"")).val()}var c=n(this),a=n.map(r.split(""),function(n){if(n!="?")return h[n]?u.placeholder:n}),w=c.val();c.data(n.mask.dataName,function(){return n.map(a,function(n,t){return f[t]&&n!=u.placeholder?n:null}).join("")});c.attr("readonly")||c.one("unmask",function(){c.unbind(".mask").removeData(n.mask.dataName)}).bind("focus.mask",function(){var t,i;w=c.val();t=y();p();i=function(){t==r.length?c.caret(0,t):c.caret(t)};(n.browser.msie?i:function(){setTimeout(i,0)})()}).bind("blur.mask",function(){y();c.val()!=w&&c.change()}).bind("stripValue",function(){it()}).bind("keydown.mask",nt).bind("keypress.mask",tt).bind(t,function(){setTimeout(function(){c.caret(y(!0))},0)});y()})}})})(jQuery);
(function(n){var t=$rql.ui.controls.richtext=function(n,i){t.initializeBase(this,[n,i])},i=$rql.ui.templates("rich-text");t.prototype={initialize:function(t){var i=this.config=n.extend({ReadOnly:!1,UniqueControlId:$f("{0}{1}-{2}",t.ContextName,t.Id,this.elementId),EditorId:$f("{0}{1}",t.ContextName,t.Id)},t),r=this;if(i.IsRequired=!i.Optional&&!i.ReadOnly&&!i.ContextIsReadOnly,i.ElementId=this.elementId,i.ReadOnly)$rql.isUndefined(window.CKEDITOR)?$rql.api.require("textEditor",function(){r.render()}):this.render();else{i.mentionsSupported=!!i.MentionQueue;$rql.api.require("textEditor",function(){r.render();i.editor&&i.Form.collectValues(i.Form.values=i.Form.newValueCollection(),!0,!0)})&&this.render();i.Form.on("collectValues",this.onCollectValues)}},render:function(){var o=this,t=this.config,u=t.Options,r={readOnly:t.ContextIsReadOnly},f=Sys.CultureInfo.CurrentCulture.name,e;f=f||"en";$rql.api.isIOS&&(r.contentsCss=["/plugins/ckeditor/contents.css","/plugins/ckeditor/rql-ios.css"]);t.ReadOnly?(this.$.empty().append(i.render(t)).widgetize(),n.extend(r,{readOnly:!0,removePlugins:"toolbar, elementspath",allowedContent:!0}),t.editor=CKEDITOR.appendTo(t.UniqueControlId,r,t.Value)):(u?t.Form.editorOptions=u:t.Form.editorOptions&&(u=t.Form.editorOptions),r.language=o.chooseLanguage(f),r.defaultLanguage=r.language,r.pasteFilter="img",$rql.i18n.isRtlLanguage&&(r.contentsLangDirection="rtl"),this.applyOptionsToEditorConfig(u,r),this.configureSpellChecker(r),this.$.empty().append(i.render(t)).widgetize(),e=document.getElementById(t.UniqueControlId),r.height="200px",n(e).css("min-height",r.isCompact?"272px":"307px"),t.RichTextDynamic?t.ContextIsReadOnly||(n(e).hide(),this.attachEditor(t,r)):(t.editor=CKEDITOR.appendTo(t.UniqueControlId,r,t.Value),this.attachCommonEvents()))},configureSpellChecker:function(n){n&&(n.removePlugins=(n.removePlugins?n.removePlugins+",":"")+"sourcedialog,wsc,scayt",$rql.api.offline||(n.disableNativeSpellChecker=!1))},attachCommonEvents:function(){var n=this.config;if(n.editor){n.editor.on("maximize",this.onMaximize);n.editor.on("instanceReady",this.onInstanceReady);if(!n.Form.isForm()){n.editor.on("focus",this.resetActivityTimer);n.editor.on("afterCommandExec",this.resetActivityTimer);n.editor.on("change",this.resetActivityTimer)}this.config.mentionsSupported&&$rql.ui.behaviors.mention.attachBehavior(this)}},detachCommonEvents:function(){var n=this.config;n.editor&&(n.editor.removeListener("maximize",this.onMaximize),n.editor.removeListener("instanceReady",this.onInstanceReady),n.Form.isForm()||(n.editor.removeListener("focus",this.resetActivityTimer),n.editor.removeListener("afterCommandExec",this.resetActivityTimer),n.editor.removeListener("change",this.resetActivityTimer)),this.config.mentionsSupported&&$rql.ui.behaviors.mention.detachBehavior(this))},attachEditor:function(t,i){var r=t.editor,u=document.getElementById(t.UniqueControlId),f=document.getElementById(t.UniqueControlId+"-readonly"),o=document.getElementById(t.UniqueControlId+"-readonlyHtml"),s=document.getElementById(t.UniqueControlId+"-editHandle"),h=this,e=function(){r=CKEDITOR.appendTo(u.id,i,t.Value);t.editor=r;n(f).hide();n(u).show();h.attachCommonEvents();r.on("instanceReady",function(){r.focus()});r.on("blur",function(i){if(t.Form.editorMaximized){i.preventDefault?i.preventDefault():i.returnValue=!1;r.focus();return}var e=r.getData();n(o).html(e);t.Value=e;n(u).hide();r.destroy();n(f).show()})};n(f).on("click",e);n(s).on("focus",e)},decodeMarkup:function(t){var i=t.split("&amp;").join("&amp;amp;").split("&lt;").join("&amp;lt;").split("&gt;").join("&amp;gt;").split("&quot;").join("&amp;quot;").split("&apos;").join("&amp;apos");return n("<textarea/>").html(i).val()},onCollectValues:function(n){var t=this.config,i,r;i=t.editor&&t.editor.checkDirty()?t.editor.getData():t.Value;i=i?this.decodeMarkup(i.trim()):"";t.IsDefault&&n&&n.excludeDefaults&&(i="");n.values.add(t.ContextName+"__richtext_"+t.Id,i);this.config.mentionsSupported&&(r=(this.mentionBehavior?this.mentionBehavior.getMentions():t.Mentions)||"",n.values.add(t.ContextName+"__mentions_"+t.Id,r))},onDispose:function(){var n=this.config;n.Form.off("collectValues",this.onCollectValues);this.destroyEditor()},destroyEditor:function(){var t=this.config,i=!1;t.editor&&(t.Form.editorMaximized&&t.Form.editorMaximized===!0&&(t.editor.execCommand("maximize"),i=!0),n(t.editor).unbind("maximize"),t.editor.destroy(),t.editor=null,t.Form.editorMaximized=t.RichTextDynamic?!1:i)},onMaximize:function(n){this.config.Form.editorMaximized=n.data===CKEDITOR.TRISTATE_ON},onInstanceReady:function(){var n=this.config,t;n.Form.editorMaximized&&n.Form.editorMaximized===!0&&!n.RichTextDynamic&&n.editor.execCommand("maximize");n.Form&&n.Form.config&&n.Form.config.IsInPlace&&(t=n.Form.$.closest('[rql-view-type="queue"]').data("rql.ui.control"),t&&t.resizeEditorInPlaceOverlay())},resetActivityTimer:function(t){if(this.config.Form.onContentActivity(),n("[data-toggle='dropdown'][aria-expanded='true']").click(),t&&t.name=="focus"){var r=this.config,u=document.getElementById(r.UniqueControlId),i=n(u).parents("div[rql-inline-id]");i&&i.length>0&&i.click()}},applyOptionsToEditorConfig:function(t,i){var r="sourcedialog,",f="",e="",u,o,s;return t?(u=t.parseOptions(),!u)?r:(o=u.findByKey("config","toolbar"),!o)?r:(u=o.options,!u)?r:(s=this,n(u).each(function(n,t){var u=t.value?t.value.toLowerCase():"",o,h;switch(t.param){case"maximize":if(u==="no")r+="maximize,";else if(u==="auto"){if(s.config.Form.isForm())return;o=0;for(h in CKEDITOR.instances)h&&o++;o>1&&(r+="maximize,")}break;case"source":u==="no"&&(r+="sourcearea,");break;case"compact":i.isCompact=!0;u==="yes"&&(e=[{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker","editing"]},{name:"document",groups:["mode","document","doctools"]},{name:"links",groups:["links"]},{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi","paragraph"]},{name:"forms",groups:["forms"]},{name:"insert",groups:["insert"]},{name:"styles",groups:["styles"]},{name:"colors",groups:["colors"]},{name:"tools",groups:["tools"]},{name:"others",groups:["others"]},{name:"about",groups:["about"]}],r+="stylescombo,format,sourcearea,",f+="Cut,Copy,Anchor,Image,Table,HorizontalRule,SpecialChar,Blockquote,About,")}}),e!==""&&(i.toolbarGroups=e),i.removePlugins=r,f!==""&&(i.removeButtons=f),i):r},chooseLanguage:function(t){var r=["ar","bg","cs","da","de","el","en-ca","en-gb","en","es","fi","fr-ca","fr","hi","hu","id","it","ja","ko","nl","pl","pt-br","pt","ro","ru","sk","sr","sv","th","tr","uk","vi","zh-cn","zh"],u="en",i;return t&&(t=t.toLowerCase(),t==="zh-tw"?t="zh":t==="zh"||t==="zh-cn"?t="zh-cn":t==="fr-fr"&&(t="fr"),i=-1,i=n.inArray(t,r),i>=0?u=r[i]:t.length>=2&&(i=n.inArray(t.substring(0,2),r),i>=0&&(u=r[i]))),u},lightDestroy:function(){var n=this.config;n.editor&&(n.editor.checkDirty()&&(n.Value=n.editor.getData()),this.detachCommonEvents(),this.destroyEditor())},lightRestore:function(){var n=this.config;n.editor||this.render()}};t.registerClass("$rql.ui.controls.richtext",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.pagepath=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({template:$rql.ui.templates("page-path")},t);this.on({changePath:this.onChangePath})},stepBack:function(){for(var n=this.config,i=$rql.isNull(n.stepBack,1),t=0;t<i;t++)n.items.pop();if(n.items.length>1)for(n.items[n.items.length-1].isLink=!1,n.items[n.items.length-1].readonlytitle&&(n.items[n.items.length-1].title=n.items[n.items.length-1].readonlytitle),n.storeId=n.items[n.items.length-1].storeId,t=n.items.length-1;t>=0;t--)n.items[t].backstep=n.items.length-1-t;else n.items=null,n.storeId=null;n.stepBack=null},onChangePath:function(t){var i=this;$rql.ui.navigateWithFormCompletionCheck(function(){var u=i.config,r=n(t.currentTarget).attr("rql-argument");u.stepBack=r;t.preventDefault();window.history.go(-r)},function(){t.preventDefault();return})},onPageChanged:function(n){var t=this.config,i=$rql.api.getStoreIdFromUrl(n.Url);t.queueState&&t.queueState[i]||(t.items=t.queueState=[],t.storeId=null)},setPageState:function(n,t){var i=this.config;i.queueState||(i.queueState=[]);i.queueState[n]=t},pageChanged:function(n){var t=this.config,r,i,u;if(t.items||(t.items=[]),t.pathIsHidden=this.pathIsHidden(n),r=$rql.api.getStoreIdFromUrl(n.Url),t.queueState&&t.queueState[r]){for(i=t.queueState[r],i=="new"?t.items.length>0&&r!=t.storeId&&(t.items[t.items.length-1].isLink=!0,t.items.push({title:n.Title,url:n.Url,randomId:$rql.newId(),isLink:!1,storeId:r})):r!=t.storeId?(t.items.length>0?(t.items[t.items.length-1].readonlytitle=t.items[t.items.length-1].title,t.items[t.items.length-1].title+=": "+i.queueItemContext.queueTitle,t.items[t.items.length-1].isLink=!0):t.items.push({title:i.queueItemContext.queueTitle,url:n.Url,randomId:$rql.newId(),isLink:!0,storeId:i.queueItemContext.storeId}),t.items.push({title:$f("{0}: {1}",i.queueItemContext.navigationItemName,n.Title),url:n.Url,randomId:$rql.newId(),isLink:!1,storeId:i.queueItemContext.storeId})):t.items[t.items.length-1].title=$f("{0}: {1}",i.queueItemContext.navigationItemName,n.Title),u=t.items.length-1;u>=0;u--)t.items[u].backstep=t.items.length-1-u;t.storeId=r}},pathIsHidden:function(n){for(var r="",i=n.Views,t=0;t<i.length;t++)$rql.isUndefined(i[t].Features)||(r+=i[t].Features+" ");return r.toLowerCase().indexOf("breadcrumbs")>-1},render:function(){var t=this.config;t.items&&t.items.length>0&&!t.pathIsHidden?(n("body").addClass("haspath"),$rql.api.uiVersion>2&&this.$.removeClass("no-path")):(n("body").removeClass("haspath"),$rql.api.uiVersion>2&&this.$.addClass("no-path"));this.$.html(t.template.render(t))}};t.registerClass("$rql.ui.controls.pagepath",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.pagebuilder=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},i,t);this.config.serviceUrl=$rql.api.baseUrl.pathname;this.config.Value=this.config.Value?$rql.htmlDecode(this.config.Value):"";this.config.Empty=this.config.Value?!1:!0;this.config.windowHeight=n(window).innerHeight();this.adjustDimensions();$rql.events.on({resize:this.onResize});this.config.Form.config.containsSelfSavingControls=!0;this.config.Form.on("collectValues",this.onCollectValues);$rql.api.require($rql.api.uiVersion===3?"pblBuilders3":"pblBuilders",this.render)&&this.render()},dispose:function(){this.off();this.config.Form.off("collectValues",this.onCollectValues);this.$.off();this.disposePropertiesForm();t.callBaseMethod(this,"dispose")},render:function(){var r=n("<div rql-embed-control='pagebuilder' class=\"pbl-pagebuilder\"><ng-include src=\"'app/pagebuilder/templates/controller.html'\" /><\/div>").appendTo(this.$),f=angular.bootstrap(r,["pbl.pagebuilder"]);if(this.controller=this.$.find("div[ng-controller]").first(),this.controller.length!==0&&(this.controllerScope=angular.element(this.controller).scope(),this.controllerScope)){var i=this,u=this.controllerScope,t=this.config;this.controllerScope.$apply(function(){u.initializeBuilder({descriptor:t.Descriptor,builderMode:t.BuilderMode,snippetTypes:t.SnippetTypes,languages:t.Languages,urls:{load:"/rql/builder/page/load",loadReference:"/rql/builder/page/loadReference",save:"/rql/builder/page/save",queues:"/rql/builder/form/queues",queueColumns:"/rql/builder/form/queueColumns",uiStyles:"/rql/builder/form/uiStyles",iconStyles:"/rql/builder/form/iconStyles",executes:"/rql/builder/form/executes",snippets:"/rql/builder/form/snippets",snippet:"/rql/builder/form/snippet",resolveSnippet:"/rql/builder/page/resolveSnippet"},storeId:t.Form.config.StoreId,builderId:t.Id,hostApi:{showProperties:i.showPropertiesFormCallback,saveProperties:i.savePropertiesFormCallback},operatorTitles:$rql.i18n.operators})})}},adjustDimensions:function(){var t=$rql.ui.sumOfPropValues(this.$.parents(),"border-bottom-width,margin-bottom,padding-bottom"),i=this.config.windowHeight,n=i-this.$.offset().top-t;this.$.height()!==n&&(this.$.height(n),this.controllerScope&&this.controllerScope.resize())},onResize:function(){if(this.isVisible()){var t=n(window).innerHeight();this.config.windowHeight!==t&&(this.config.windowHeight=t,this.adjustDimensions(!0))}},onCollectValues:function(n){var t=this.config,i;t.ReadOnly||(i=this.controllerScope&&(this.controllerScope.isChanged()||this.propertiesFormHasChanges())?"changed":"unchanged",n.values.add("__pagebuilder_"+t.Id,i))},propertiesFormHasChanges:function(){return this.propertiesFormControl&&this.propertiesFormControl.hasUnsavedChanges()},showPropertiesFormCallback:function(n,t,i){var r=this.config.Form.config,u={Id:i,AppName:r.AppName,ViewName:i.substring(r.AppName.length+1),Type:"Form",StoreId:r.StoreId,ParentContainer:t};this.propertiesFormControl=new $rql.ui.controls.form(n,u);this.propertiesFormControl.on({saved:this.onPropertiesFormSaved});this.propertiesFormControl.show()},savePropertiesFormCallback:function(n){this.propertiesFormControl&&(this.savedPropertiesFormCallback=n,this.propertiesFormControl.saveWithPendingAction("notify"))},onPropertiesFormSaved:function(){this.savedPropertiesFormCallback&&this.savedPropertiesFormCallback()},disposePropertiesForm:function(){this.propertiesFormControl&&this.propertiesFormControl.dispose()}};t.registerClass("$rql.ui.controls.pagebuilder",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.workbookbuilder=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var r=n("div.pbl-workbookbuilder");r.length!==0&&r.remove();this.config=n.extend({},i,t);this.config.serviceUrl=$rql.api.baseUrl.pathname;this.config.Value=this.config.Value?$rql.htmlDecode(this.config.Value):"";this.config.Empty=this.config.Value?!1:!0;this.config.windowHeight=n(window).innerHeight();this.propertiesFormControls={};this.advanced="No";this.language=null;this.adjustDimensions();$rql.events.on({resize:this.onResize});this.config.Form.config.containsSelfSavingControls=!0;this.config.Form.registerSelfSavingControlCallback(this.saveContainerCallback);this.config.Form.on("collectValues",this.onCollectValues);$rql.api.require($rql.api.uiVersion===3?"pblBuilders3":"pblBuilders",this.render)&&this.render();this.richtextFixIsRequired=navigator&&navigator.userAgent&&(navigator.userAgent.includes("Chrome/")||navigator.userAgent.includes("Edg/"))},dispose:function(){this.off();this.config.Form.off("collectValues",this.onCollectValues);this.config.Form.unregisterSelfSavingControlCallback(this.saveContainerCallback);this.$.off();this.disposePropertiesForms();t.callBaseMethod(this,"dispose")},render:function(){var r=n('<div class="pbl-workbookbuilder"><ng-include src="\'app/workbookbuilder/templates/controller.html\'" /><\/div>').appendTo(this.$),f=angular.bootstrap(r,["pbl.workbookbuilder"]);if(this.controller=this.$.find("div[ng-controller]").first(),this.controller.length!==0&&(this.controllerScope=angular.element(this.controller).scope(),this.controllerScope)){var i=this,u=this.controllerScope,t=this.config;t.TemplateLibrary&&n.each(t.TemplateLibrary,function(n,t){t.Label&&(t.Label=$rql.safeHtmlDecode(t.Label));t.Name&&(t.Name=$rql.safeHtmlDecode(t.Name))});this.controllerScope.$apply(function(){u.initializeBuilder({builderId:t.Id,storeId:t.Form.config.StoreId,baseBuilderStoreId:t.BaseBuilderStoreId,descriptor:t.Descriptor,readonly:t.ReadOnly,languages:t.Languages,templateLibrary:t.TemplateLibrary,urls:{load:"/rql/builder/workbook/load",save:"/rql/builder/workbook/save",snippets:"/rql/builder/form/snippets",snippet:"/rql/builder/form/snippet",snippetForm:"/rql/builder/page/snippetForm",createInstance:"/rql/builder/page/createInstance",cloneSnippet:"/rql/builder/page/clone",saveSnippet:"/rql/builder/page/save",createConditionalVisibilityStore:"/rql/builder/workbook/createConditionalVisibilityStore",createTopicStore:"/rql/builder/workbook/createTopicStore",createDepartmentStore:"/rql/builder/workbook/createDepartmentStore",cloneStores:"/rql/builder/workbook/cloneStores",saveFavorites:"/rql/builder/workbook/favorites/save"},snippetIconBaseUrl:"/rql/Form/Artifact/",pendingNewSnippet:i.retrievePendingNewSnippet(),createNewSnippetCallback:i.createNewSnippetCallback,openSnippetCallback:i.openSnippetCallback,hostApi:{showProperties:i.showPropertiesFormCallback,saveProperties:i.savePropertiesFormCallback,cleanUpProperties:i.cleanUpPropertiesFormCallback,toggleAdvanced:i.toggleAdvancedCallback,switchLanguage:i.switchLanguageCallback}})})}},adjustDimensions:function(){var t=$rql.ui.sumOfPropValues(this.$.parents(),"border-bottom-width,margin-bottom,padding-bottom"),i=this.config.windowHeight,n=i-this.$.offset().top-t;this.$.height()!==n&&(this.$.height(n),this.controllerScope&&this.controllerScope.resize())},onResize:function(){if(this.isVisible()){var t=n(window).innerHeight();this.config.windowHeight!==t&&(this.config.windowHeight=t,this.adjustDimensions(!0))}},onCollectValues:function(n){var t=this.config,i;t.ReadOnly||(i=this.controllerScope&&(this.controllerScope.isChanged()||this.anyPropertiesFormHasChanges())?"changed":"unchanged",n.values.add("__workbookbuilder_"+t.Id,i))},anyPropertiesFormHasChanges:function(){for(var i,t=Object.getOwnPropertyNames(this.propertiesFormControls),n=0;n<t.length;n++)if(i=this.propertiesFormControls[t[n]],i.hasUnsavedChanges())return!0;return!1},createNewSnippetCallback:function(n){this.pendingTopicId=n;$rql.api.createStore(this.config.SnippetApp||"System_Snippet","newandexecute",{},null,this.onSnippetStoreCreated)},onSnippetStoreCreated:function(n){this.pendingTopicId&&n&&n.StoreId&&this.rememberPendingNewSnippet(this.pendingTopicId,n.StoreId)},getPendingNewSnippetKey:function(){return"workbookbuilder.pendingcreate."+this.config.Form.config.StoreId},rememberPendingNewSnippet:function(n,t){sessionStorage.setItem(this.getPendingNewSnippetKey(),JSON.stringify({topicId:this.pendingTopicId,snippetId:t}))},retrievePendingNewSnippet:function(){var n=sessionStorage.getItem(this.getPendingNewSnippetKey());return n?(sessionStorage.removeItem(this.getPendingNewSnippetKey()),JSON.parse(n)):null},openSnippetCallback:function(n){window.open(this.config.serviceUrl+"a/"+n,"_blank")},removeRichtextControlsOnPropertiesForm:function(t){if(t.length===1){var i=t.find("div[rql-type='richtext'");i.length!==0&&i.each(function(){var t=$rql.ui.get(n(this));t&&t.lightDestroy()})}},restoreRichtextControlsOnPropertiesForm:function(t){var i=n(t).find("div[rql-type='richtext'");i.length!==0&&i.each(function(){var i=n(this),t=$rql.ui.get(i);t&&t.lightRestore()})},showPropertiesFormCallback:function(t,i,r,u,f,e){var o,h,c;if(this.richtextFixIsRequired&&this.removeRichtextControlsOnPropertiesForm(n(t).children(":visible")),n(t).children().hide(),this.propertiesFormControls.hasOwnProperty(r))o=this.propertiesFormControls[r],n(o.element).show(),this.richtextFixIsRequired&&this.restoreRichtextControlsOnPropertiesForm(n(o.element)),this.ensureBuilderSettingsOnPropertiesForm(o);else{var s=n("<div rql-embed-control='workbookbuilder'><\/div>").appendTo(n(t)),l=u.split(".",2),a={Id:u,AppName:l[0],ViewName:l[1],Type:"Form",StoreId:r,ArgumentValues:{"RQL.WorkbookBuilder.StoreId":this.config.Form.config.StoreId,"RQL.WorkbookBuilder.Advanced":this.advanced,"RQL.WorkbookBuilder.ReadOnly":this.config.ReadOnly?"Yes":"No","RQL.WorkbookBuilder.Language":this.language},ParentContainer:i,markedAsChanged:e};o=new $rql.ui.controls.form(s,a);o.on({loaded:this.onPropertiesFormLoaded,reloaded:this.onPropertiesFormLoaded,saved:this.onPropertiesFormSaved,saveFailed:this.onPropertiesFormSaveFailed});if(o.loaderDisabled=!0,o.show(),this.propertiesFormControls[r]=o,f){h=this.controllerScope;c=this;n(s).on("keyup","input[type='text'][rql-id='"+f+"']",function(){var t=n(this).val(),u=c.getLabelControlValue(s,"Builder_Title_Binding")==="Disabled",i;u||(t||(i=c.getLabelControlValue(s,"Builder_Title_Default"),i&&(t=i)),h.$apply(function(){h.handleActiveTopicTitleChange(r,t)}))})}}},getLabelControlValue:function(t,i){return n(t).find($f("div[rql-id='{0}'][rql-type='label'] div[rql-controlid='{0}']",i)).text()},ensureBuilderSettingsOnPropertiesForm:function(n){if(n){var arguments=n.config.ArgumentValues,i=arguments["RQL.WorkbookBuilder.Advanced"]!==this.advanced,t=arguments["RQL.WorkbookBuilder.Language"]!==this.language;(i||t)&&(arguments["RQL.WorkbookBuilder.Advanced"]=this.advanced,arguments["RQL.WorkbookBuilder.Language"]=this.language,t&&!this.config.ReadOnly?n.update({data:["__workbook_run="]}):n.update())}},cleanUpPropertiesFormCallback:function(t){for(var i,u,e,f=Object.getOwnPropertyNames(this.propertiesFormControls),r=0;r<f.length;r++)i=f[r],t.indexOf(i)===-1&&(u=this.propertiesFormControls[i],e=u.element,delete this.propertiesFormControls[i],u.dispose(),n(e).remove())},savePropertiesFormCallback:function(n){var t,i,r;for(this.savedPropertiesFormsCallback=n,t=Object.getOwnPropertyNames(this.propertiesFormControls),this.pendingSnippetSaveCount=t.length,this.saveFailedSnippetIds={},t.length===0&&this.reportPropertiesFormsSaveResult(),i=0;i<t.length;i++)r=this.propertiesFormControls[t[i]],r.saveWithPendingAction("notify")},onPropertiesFormSaved:function(){this.pendingSnippetSaveCount--;this.pendingSnippetSaveCount===0&&this.reportPropertiesFormsSaveResult()},onPropertiesFormSaveFailed:function(n){this.saveFailedSnippetIds[n.storeId]=!0;this.pendingSnippetSaveCount--;this.pendingSnippetSaveCount===0&&this.reportPropertiesFormsSaveResult()},reportPropertiesFormsSaveResult:function(){this.savedPropertiesFormsCallback&&this.savedPropertiesFormsCallback(this.saveFailedSnippetIds)},disposePropertiesForms:function(){for(var t,i=Object.getOwnPropertyNames(this.propertiesFormControls),n=0;n<i.length;n++)t=this.propertiesFormControls[i[n]],t.dispose(),t.element.remove()},toggleAdvancedCallback:function(n,t){this.advanced=n?"Yes":"No";t&&this.ensureBuilderSettingsOnPropertiesForm(this.propertiesFormControls[t])},switchLanguageCallback:function(n,t){this.language=n;t&&this.ensureBuilderSettingsOnPropertiesForm(this.propertiesFormControls[t])},onPropertiesFormLoaded:function(n){if(n&&n.sender&&n.sender.$&&n.sender.config.StoreId&&this.controllerScope){var t=n.sender.$.find("div[rql-role='topic-title']:first").text();t&&this.controllerScope.handleActiveTopicFormattedTitleChange(n.sender.config.StoreId,t)}},saveContainerCallback:function(){if(!this.controllerScope)return n.Deferred().resolve().promise();var t=n.Deferred();return this.controllerScope.save().then(function(){t.resolve()},function(){t.reject()}),t}};t.registerClass("$rql.ui.controls.workbookbuilder",$rql.ui.controls.view)})(jQuery);
(function(n){var u={template:$rql.ui.templates("xpathbuilder"),visualTemplate:$rql.ui.templates("xpath-visual-builder"),intellisenseTemplate:$rql.ui.templates("xpath-intellisense")},r=["/","(","["],t=function(){var n={MODE_ADVANCED:"advanced",MODE_VISUAL:"visual",MODE_INTELLISENSE:"intellisense",DATA_LOADED:"Data loaded successfully.",XPATH_EVAL_SUCCESS:"XPath expression was evaluated successfully.",NO_XPATH:"Please set an xml to run your query against.",INVALID_XML:"Invalid XML.",DATA_NOT_FOUND:"Data not found.",UNKNOWN_ERROR:"Unknown error.",XPATH_EXT_LOAD_ERROR:"Unable to load XPath extension functions.",ENTER_XML:"Please enter an XPath expression."};return{get:function(t){return n[t]}}}(),i=$rql.ui.controls.xpathbuilder=function(n,t){i.initializeBase(this,[n,t])};i.prototype={initialize:function(i){if(this.config=n.extend({},u,i),this.config.serviceUrl="/ide/",this.config.Value=this.config.Value?$rql.htmlDecode(this.config.Value):"",this.config.Empty=this.config.Value?!1:!0,this.config.windowHeight=n(window).innerHeight(),this.config.splitters=[],this.config.BuilderMode=i.BuilderMode||t.get("MODE_VISUAL"),this.config.BuilderMode!==t.get("MODE_INTELLISENSE")){this.adjustDimensions();$rql.events.on({resize:this.onResize})}$rql.api.require("xpathBuilder",this.render)&&this.render()},dispose:function(){this.off();this.config.Form.off("collectValues",this.onCollectValues);this.$.off();i.callBaseMethod(this,"dispose")},render:function(i){var r=this;this.loadXPathExtensions().done(function(){switch(r.config.BuilderMode){case t.get("MODE_ADVANCED"):r.renderAdvancedMode(i);break;case t.get("MODE_VISUAL"):r.renderVisualMode(i);break;case t.get("MODE_INTELLISENSE"):n("#intellisenseWrapper_wrapper").unbind().remove();r.renderIntellisenseMode(i)}})},renderXPathFunctions:function(i){var r,u;this.config.allXPathFunctions&&(r=[],i?(r=this.config.allXPathFunctions.where(function(n){return n.Name.indexOf(i)>-1}),r.length>0&&n("#mainTabs a[href=#xpathFunctionsTab]").tab("show")):r=this.config.allXPathFunctions,u=this.config.intellisenseTemplate.render({XPathFunctions:r}),n("#xpathFunctionsWrapper").html(u),n(".descriptionText").shorten({moreText:"more",lessText:"less",showChars:this.config.BuilderMode===t.get("MODE_ADVANCED")?50:80}),n("#xpathFunctionsWrapper ul.xpathHelperItems li.helperItem").unbind().click(this.onXPathFunctionsClick))},renderIntellisenseMode:function(){n("#intellisenseWrapper").remove();var t=this,f=this.config.WorkbookId?this.config.WorkbookId:this.config.Form.config.WorkbookId,u=this.config.Form?this.config.Form.config.StoreId:"",e="visual",r=function(n){return n.Tags&&n.Tags.includes(e)},i=window.xpathHelper.string_funcs().where(r);if(i.addRange(window.xpathHelper.boolean_funcs().where(r)),i.addRange(window.xpathHelper.number_funcs().where(r)),i.addRange(window.xpathHelper.nodeset_funcs().where(r)),i.addRange(this.config.xpathExtensions),delete this.config.xpathExtensions,this.config.allXPathFunctions=i.sort(function(n,t){return n.Name<t.Name?-1:n.Name>t.Name?1:0}),t.config.MainContent=!0,t.$.append(this.config.intellisenseTemplate.render(t.config)),t.renderXPathFunctions(),n.extend(t.config,{$xmlDocView:t.$.find("#xmlDocView"),$xmlNodes:t.$.find("#xmlNodes"),$xmlRaw:t.$.find("#rawXmlContent"),$xpathQuery:t.$.parent().find($f("input[rql-id='{0}']",t.config.Id)),$xpathEvalMessage:t.$.find("#xpathEvaluationMessage"),$xpathExecuteResults:t.$.find("#xpathExecuteResults"),xmlRaw:""}),t.initializeComponents(),t.$.find("[rql-action='testExpression']").click(t.onExecuteXPath),t.$.find("[rql-action='applyXPath']").click(t.onApplyXPath),t.$.find("[rql-action='clearXPath']").click(t.onClearXPath),t.$.find("#xmlNodes").click(t.onXPathNodeClick),t.config.Environment&&t.config.Environment==="ide"?(t.config.$xpathQuery.val(t.config.AnchorDiv.find(".ace_value").text().trimChar(['"',"{","}"])),t.config.$xpathQuery.val()!==""&&(t.config.executeAfterLoad=!0),t.$.find("#intellisenseWrapper").popup({type:"tooltip",vertical:"topedge",horizontal:"leftedge",autoopen:!0,offsettop:14,focuselement:t.config.$xpathQuery,tooltipanchor:t.config.AnchorDiv,onopen:function(){n("#mainTabs a[href=#xmlDocViewTab]").tab("show")}})):t.$.find("#intellisenseWrapper").popup({type:"tooltip",vertical:"topedge",horizontal:"leftedge",offsettop:30,focuselement:t.config.$xpathQuery,tooltipanchor:t.config.$xpathQuery,onopen:function(){n("#mainTabs a[href=#xmlDocViewTab]").tab("show")}}),n(document).mouseup(function(t){var i=n("#intellisenseWrapper");i.is(t.target)||i.has(t.target).length!==0||n("#intellisenseWrapper").popup("hide",!0)}),u)t.onGetStore(null,u);else t.onGetApp(null,f)},renderAdvancedMode:function(n){var t=this;t.config.xpathOperators=window.xpathHelper.operators();t.config.xpathStringFuncs=window.xpathHelper.string_funcs();t.config.xpathBooleanFuncs=window.xpathHelper.boolean_funcs();t.config.xpathNumberFuncs=window.xpathHelper.number_funcs();t.config.xpathNodesetFuncs=window.xpathHelper.nodeset_funcs();t.$.html(t.config.template.render(t.config));t.widgetize(null,n)},onRendered:function(i){var r=this;if(this.config.BuilderMode===t.get("MODE_ADVANCED")){n.extend(r.config,{$xmlDocView:r.$.find("#xmlDocView"),$xmlRaw:r.$.find("#rawXmlContent"),$xpathQuery:r.$.find("#xpathQuery"),$xpathEvalMessage:r.$.find("#xpathEvaluationMessage"),$xpathExecuteResults:r.$.find("#xpathExecuteResults")});r.on({getStore:r.onGetStore,selectXmlType:r.onSelectXmlType,getApp:r.onGetApp,setRawXml:r.onRawXmlChange,beautifyXml:r.onBeautifyXml,clearXPath:r.onClearXPath,executeXPath:r.onExecuteXPath,xpathFunctionsClick:r.onXPathFunctionsClick,switchMode:r.onSwitchMode})}else{n.extend(r.config,{$xmlDocView:r.$.find("#xmlDocView"),$xpathExecuteResults:r.$.find("#xpathExecuteResults"),$xpathEvalMessage:r.$.find("#xpathEvaluationMessage"),$expressionConditions:r.$.find("#expressionConditions"),$xpathQuery:r.$.find("#xpathQuery"),xmlRaw:"",inWhereClauseBuilderMode:!1});r.on({getStore:r.onGetStore,selectXmlType:r.onSelectXmlType,getApp:r.onGetApp,switchMode:r.onSwitchMode,clearXPath:r.onClearXPath,executeXPath:r.onExecuteXPath,xpathFunctionsClick:r.onXPathFunctionsClick,applyToExpression:r.onApplyToExpression,clearCriteria:r.onClearCriteria,clearConditions:r.clearConditions,deleteCondition:r.onDeleteCondition,addCondition:r.onAddCondition,deleteCriteria:r.onDeleteCriteria})}r.initializeComponents(i)},renderVisualMode:function(n){var t=this,r="visual",i=function(n){return n.Tags&&n.Tags.includes(r)};t.config.xpathStringFuncs=window.xpathHelper.string_funcs().where(i);t.config.xpathBooleanFuncs=window.xpathHelper.boolean_funcs().where(i);t.config.xpathNumberFuncs=window.xpathHelper.number_funcs().where(i);t.config.xpathNodesetFuncs=window.xpathHelper.nodeset_funcs().where(i);t.$.html(t.config.visualTemplate.render(t.config));t.widgetize(null,n)},initializeComponents:function(i){var r=this,f=30,u;r.config.$xmlDocView.on({click:r.onXPathNodeClick});r.config.$xpathQuery.keyup(r.onXPathKeyUp);r.$.find(".descriptionText").shorten({moreText:"more",lessText:"less",showChars:r.config.BuilderMode===t.get("MODE_ADVANCED")?50:80});r.$.find("#xpathHelperContent").on({hidden:function(t){var i=n(t.target.parentNode).find("a.accordion-toggle i");i.length>0&&i.removeClass("icon-chevron-down").addClass("icon-chevron-right")},shown:function(t){var i=n(t.target.parentNode).find("a.accordion-toggle i");i.length>0&&i.removeClass("icon-chevron-right").addClass("icon-chevron-down")}});r.config.BuilderMode!==t.get("MODE_INTELLISENSE")&&(i&&(r.$.find("#storeIdText").val(i.selectedStoreId),i.sourceSelection==="wiki-id"?(u=r.$.find("#optionsRadios1")[0],r.$.find("#selectWiki").append($f("<option value='{0}' selected='selected'>{0}<\/option>",i.selectedWiki)).trigger("change"),r.onGetApp()):(u=r.$.find("#optionsRadios2")[0],r.onGetStore()),n(u).prop("checked",!0),u.currentTarget=u,u.target=u,r.raiseAction(u),r.config.$xpathQuery.val(i.xpathQuery)),typeof XmlUtils!="undefined"&&XmlUtils.browser().mozilla&&r.onResize());this.config.BuilderMode===t.get("MODE_ADVANCED")&&(this.config.splitters.push(this.$.find("div.xpathbuilder-wrapper").split({orientation:"vertical",limit:10,position:"300px"})),this.config.splitters.push(this.$.find("div.xpathbuilder-wrapper .right-panel").split({orientation:"horizontal",limit:70,position:"70px",onDragEnd:function(n){r.adjustTextAreaDimensions(n)}})));this.config.BuilderMode!==t.get("MODE_INTELLISENSE")&&this.$.find("#selectWiki").select2({ajax:{url:"/ide/xb/searchapp",type:"POST",method:"POST",dataType:"json",delay:250,data:function(n){return{SearchTerm:n.term,PageIndex:n.page?n.page:0,PageSize:f}},processResults:function(t,i){return i.page=i.page||1,{results:n.map(t.Names,function(n){return{id:n,text:n}}),pagination:{more:i.page*f<t.Count}}},cache:!0},minimumInputLength:1});this.adjustControlDimensions()},adjustDimensions:function(){var t=$rql.ui.sumOfPropValues(this.$.parents(),"border-bottom,margin-bottom,padding-bottom"),i=this.config.windowHeight,n=i-this.$.offset().top-t;this.$.height()!==n&&this.$.height(n);this.adjustControlDimensions()},adjustControlDimensions:function(){var f,r,u,e,i;switch(this.config.BuilderMode){case t.get("MODE_ADVANCED"):typeof XmlUtils!="undefined"&&XmlUtils.browser().mozilla&&this.$.find(".xpathbuilder-wrapper").height(this.config.windowHeight-300);f=this.$.find("#bottomRightPanel").height();r=this.$.find("#leftPanel").height();this.config.$xmlRaw&&this.config.$xmlRaw.height(f-100);this.$.find("#xpathFunctionsWrapper").height(r-95);u=this.$.find("#xpathFunctionsWrapper .accordion-heading");e=(u.height()+8)*u.length;this.$.find(".accordion-body").attr("style",$f("max-height:{0}px",r-130-e));break;case t.get("MODE_VISUAL"):typeof XmlUtils!="undefined"&&XmlUtils.browser().mozilla&&this.$.find(".xpathbuilder-wrapper").height(this.config.windowHeight-300);i=this.$.height()-(n("#admin-section").height()+38);this.$.find(".full-height-content").height(i);this.config.$xmlDocView&&this.config.$xmlDocView.height(i-128);this.config.$xpathExecuteResults&&this.config.$xpathExecuteResults.height(i-126);this.$.find("#xpathHelperContent .accordion-body").attr("style",$f("max-height:{0}px",i-318));break;case t.get("MODE_INTELLISENSE"):i=this.$.find("#intellisenseWrapper").height();this.config.Environment&&this.config.Environment==="ide"?(this.config.$xmlNodes&&this.config.$xmlNodes.height(i-120),this.$.find("#xpathFunctionsWrapper").height(i-120)):(this.config.$xmlNodes&&this.config.$xmlNodes.height(i-70),this.$.find("#xpathFunctionsWrapper").height(i-70))}},adjustTextAreaDimensions:function(n){this.adjustControlDimensions();n.stopPropagation()},showAlert:function(i,r,u){var f=this.$.find("#"+i);n(f).attr("class","alert").html(r).addClass(u);this.config.BuilderMode===t.get("MODE_ADVANCED")?n(f).fadeTo(2e3,500).slideUp(500,function(){n(f).attr("class","hide")}):n(f).fadeTo(2e3,500,function(){n(f).attr("class","hide")})},renderNavigatableXml:function(){var i=XmlUtils.parseXml(this.config.xml),r=XmlUtils.renderXml(i,this.config.BuilderMode!==t.get("MODE_INTELLISENSE")?"treeView":"data");this.config.xmlDoc=i;this.config.BuilderMode!==t.get("MODE_INTELLISENSE")?(this.config.$xmlDocView.html(r),n("#mainOutputTabs a[href=#xmlDocViewTab]").tab("show")):this.config.xmlPaths=r},reset:function(n){this.config.modeSwitching&&delete this.config.modeSwitching;this.config.$xpathEvalMessage&&this.config.$xpathEvalMessage.html(t.get("ENTER_XML"));n&&this.config.$xpathQuery&&this.config.$xpathQuery.val("").focus()},resize:function(){},getRegexTokens:function(n,t){for(var r=[],i=n.exec(t);i!=null;)r.push(i[1]),i=n.exec(t);return r},showIntellisense:function(t,i){var e,s,c,u,l,y,a,p,v,w;if(i!==""){var o=[],r=[],f=[],h="";if(i=i.indexOf(",")>-1?i.substr(i.lastIndexOf(",")):i,t||i==="/"){if(i==="/")f=XmlUtils.selectNodes(this.config.xmlDoc,i,[]);else for(o=this.getRegexTokens(/\w*(\/[\w@\[\]=']+)\)?/gi,i),e=o.length;e>=0;e--)if(h=o[e-1]?o[e-1].trimChar(["/","["]):"",s=o.slice(0,e).join(""),s=s===""?"/":s.trimEndChar(["[","/"]),f=XmlUtils.selectNodes(this.config.xmlDoc,s,[]),f.length>0)break;if(f.length>0)for(c=0;c<f.length;c++){if(u=f[c],u.attributes)for(l=0;l<u.attributes.length;l++)y="@"+u.attributes[l].name,r.push({name:y});if(u.children)for(a=0;a<u.children.length;a++)p=u.children[a].nodeName,r.push({name:p})}}else v=this.getRegexTokens(/\[?([\w@]+)/g,i),h=v.length>0?v[v.length-1]:i.substr(i.lastIndexOf("/")+1);r.length===0&&(n("#xpathNodes li").each(function(t,i){r.push({name:n(i).find("a").text()})}),r=r.where(function(n){return n.name.indexOf(h)>-1}));w=this.config.intellisenseTemplate.render({XPathItems:!0,Items:r});this.config.$xmlNodes.html(w).widgetize();r.length===0?this.renderXPathFunctions(h):(this.renderXPathFunctions(),n("#mainTabs a[href=#xmlDocViewTab]").tab("show"))}else this.config.$xmlNodes.html(this.config.intellisenseTemplate.render({XPathItems:!0,Items:[]})).widgetize();n("#intellisenseWrapper").popup("show")},evaluateXPathOnServer:function(n,t){this.post("xb/eval",{XPathExpression:n,ContextXml:t},null).done(this.onReceiveXPathEvalResults).fail(this.onFail)},loadXPathExtensions:function(){return this.post("xb/xfunc",{FunctionName:""},null).done(this.onReceiveXPathExtensionFunctions).fail(this.onFail)},insertAtXpathQueryCursorLocation:function(n,t){if(n===this.config.$xpathQuery.val())return{insertedAtBegin:0,insertedAtEnd:n.length};var u=this.config.$xpathQuery.val(),i=this.config.$xpathQuery.caret2(),f=i,r=this.config.$xpathQuery.selection();return r.begin!==r.end&&(i=r.begin,f=r.end),t&&this.config.$xpathQuery.val(u.substring(0,i)+n+u.substr(f)),{insertedAtBegin:i,insertedAtEnd:i+n.length}},clearConditions:function(){var t=this.$.find("table#xpathConditions"),i=t.find("tr");i.each(function(t,i){var r=n(i).children("th, td");r.each(function(n,t){n>0&&t.remove()})})},getConditionString:function(n,t){if(t&&t.length>0){var i=t.find("[rql-role='operatorSelect']"),r=t.find("[rql-role='conditionInput']"),u=t.find("[rql-role='fieldTypeSelect']").val()==="string";if(i.val()!=="")return $f("{0} {1} {2}",n,i.val(),$f("{1}{0}{1}",r.val(),u?"'":""))}return""},addNewElement:function(n,t,i){var r=this.$.find("table#xpathConditions tr#headerRow"),u=this.$.find("table#xpathConditions tr#fieldRow"),f=this.$.find("table#xpathConditions tr#conditionAndRow"),e=this.$.find("table#xpathConditions tr#conditionOrRow");this.config.inWhereClauseBuilderMode!==!0&&this.clearConditions();var o=this.config.visualTemplate.render({Components:!0,HeaderRow:!0}),s=this.config.visualTemplate.render({Components:!0,FieldRow:{nodeName:n,insertBeginEnd:i?i.insertedAtBegin+";"+i.insertedAtEnd:""}}),h=this.config.visualTemplate.render({Components:!0,CriteriaRow:!0,ShowRemove:!1,ShowAdd:!1}),c=this.config.visualTemplate.render({Components:!0,CriteriaRow:!0,ShowRemove:!1,ShowAdd:!0});r.append(o);u.append(s);f.append(h);e.append(c);this.config.inWhereClauseBuilderMode=!0;this.$.widgetize()},onAddCondition:function(t){var i=this.config.visualTemplate.render({Components:!0,CriteriaRow:!0,ShowRemove:!0,ShowAdd:!0}),r=n(t.currentTarget).closest("div");r.parent().append(n(i).html());t.stopPropagation()},onApplyToExpression:function(t){var e=this,i=this.$.find("#xpathConditions tr#fieldRow"),r=i.find("div[rql-role='nodename']").first().text(),o=parseInt(i.find("div[rql-role='nodename']").attrs().rql.data.split(";")[0]),s=this.$.find("table#xpathConditions tr#conditionAndRow"),h=this.$.find("table#xpathConditions tr#conditionOrRow"),u=[],f=[];i.find("td").each(function(t,i){var o=n(i).find("div[rql-role='nodename']").text(),l=s.find($f("td:nth-child({0})",t+2)),v=h.find($f("td:nth-child({0})",t+2)),c="",a,r;o=o.substr(o.lastIndexOf("/")+1);l.length>0&&(r=e.getConditionString(o,l),r!==""&&(c=r));a=v.find("> div");a.each(function(t,i){var r=e.getConditionString(o,n(i));r!==""&&u.push(r)});r=c!==""?c:"";r!==""&&u.length>0&&(r+=" or "+u.join(" or "));r!==""&&f.push("("+r+")")});this.config.$xpathQuery.val(this.config.$xpathQuery.val().replaceAt(o,f.length>0?$f("{0}[{1}]",r.substr(0,r.lastIndexOf("/")),f.join(" and ")):r));this.clearConditions();this.config.inWhereClauseBuilderMode=!1;t.stopPropagation()},onApplyXPath:function(){this.config.Environment==="ide"&&(this.config.Editor.insert(this.config.$xpathQuery.val()),n("#intellisenseWrapper").popup("hide"))},onBeautifyXml:function(){this.config.$xmlRaw.val(vkbeautify.xml(this.config.$xmlRaw.val(),2))},onClearCriteria:function(t){var i=n(t.currentTarget).parent("div");i.find("select[rql-role='operatorSelect']").val("");i.find("input[rql-role='conditionInput']").val("");i.find("select[rql-role='fieldTypeSelect']").val("");t.stopPropagation()},onClearXPath:function(){this.reset(!0);this.config.BuilderMode===t.get("MODE_VISUAL")&&(this.clearConditions(),this.config.inWhereClauseBuilderMode=!1,this.config.$xmlDocView.find(".highlighted").removeClass("highlighted"))},onDeleteCondition:function(t){var i=this.$.find("table#xpathConditions tr"),r=n(t.currentTarget).parent().index();i.find($f("td:nth-child({0}), th:nth-child({0})",r+1)).remove();t.stopPropagation()},onDeleteCriteria:function(t){n(t.currentTarget).parent("div").remove();t.stopPropagation()},onExecuteXPath:function(){if(this.config.$xpathQuery.val()!==""){if(this.config.BuilderMode===t.get("MODE_ADVANCED")&&this.config.$xmlRaw.val()===""){this.config.$xpathEvalMessage.html($f("<span class='danger'>{0}<\/span>",t.get("NO_XPATH")));return}this.config.xmlDoc||(this.config.xml="<store/>",this.config.xmlDoc=XmlUtils.parseXml(this.config.xml));var i=XmlUtils.runXPath(this.config.xmlDoc,this.config.$xpathQuery.val(),"xmlDocView");i.evalSuccess===!0?(this.config.$xpathEvalMessage.html($f("<span class='success'>{0}<\/span>",i.evalResultText)),n("#mainOutputTabs a[href=#xmlDocViewTab]").tab("show")):i.evalResultText!==""&&this.config.$xpathEvalMessage.html($f("<span class='danger'>{0}<\/span>",i.evalResultText));this.evaluateXPathOnServer(this.config.$xpathQuery.val(),this.config.xml);this.config.BuilderMode===t.get("MODE_INTELLISENSE")&&n("#mainTabs a[href=#xpathExecuteResultsTab]").tab("show")}},onFail:function(t){var i,r;this.enable();t.responseText&&t.responseText.indexOf("{")===0&&(r=n.parseJSON(t.responseText).ResponseStatus,r&&(i=r.Message));i||(i="Error");this.error(i)},onGetApp:function(n){var t=this.$.find("#selectWiki").val();(!t&&this.config.WorkbookId&&(t=this.config.WorkbookId),t!=="")&&(this.post("xb/getapp",{AppName:t},null).done(this.onReceiveXmlData).fail(this.onFail),n&&n.stopPropagation())},onGetStore:function(n,t){(t=t||this.$.find("#storeIdText").val(),t!=="")&&(this.post("xb/getstore",{StoreId:t},null).done(this.onReceiveXmlData).fail(this.onFail),n&&n.stopPropagation())},onRawXmlChange:function(){this.config.xml=this.config.$xmlRaw.val();this.renderNavigatableXml();this.reset(!0)},onReceiveXmlData:function(i){var u=this;if(i.StatusCode===200)try{n.parseXML(i.Xml);u.showAlert("xmlLoadStatus",t.get("DATA_LOADED"),"success");u.config.xml=i.Xml;u.config.$xmlRaw&&u.config.$xmlRaw.val(i.Xml);u.config.xmlRaw&&(u.config.$xmlRaw=i.Xml);u.renderNavigatableXml();u.reset(u.config.BuilderMode===t.get("MODE_ADVANCED")&&!u.config.modeSwitching?!0:!1);u.config.executeAfterLoad&&(u.showIntellisense(r.contains(u.config.$xpathQuery.val()),u.config.$xpathQuery.val()),delete u.config.executeAfterLoad)}catch(f){u.showAlert("xmlLoadStatus",t.get("INVALID_XML"),"danger")}else i.StatusCode===404?u.showAlert("xmlLoadStatus",t.get("DATA_NOT_FOUND"),"warning"):u.showAlert("xmlLoadStatus",t.get("UNKNOWN_ERROR"),"danger")},onReceiveXPathEvalResults:function(i){var r=this;if(i.StatusCode===200)try{r.config.$xpathEvalMessage.html($f("<span class='success'>{0}<\/span>",t.get("XPATH_EVAL_SUCCESS")));r.config.$xpathExecuteResults.html(i.ExpressionResult);i.ExpressionResult!==""&&(n("#mainOutputTabs a[href=#xpathExecuteResultsTab]").tab("show"),r.config.$xpathEvalMessage.html($f("<span class='success'>{0}<\/span>",t.get("XPATH_EVAL_SUCCESS"))))}catch(u){r.config.$xpathEvalMessage.html($f("<span class='danger'>{0}<\/span>",u))}else r.config.$xpathEvalMessage.html($f("<span class='danger'>{0}<\/span>",i.ExpressionResult))},onReceiveXPathExtensionFunctions:function(n){var i=this;n.StatusCode===200?i.config.xpathExtensions=n.ExtensionFunctions:i.showAlert("xmlLoadStatus",t.get("XPATH_EXT_LOAD_ERROR"),"danger")},onResize:function(){if(this.isVisible()){var t=n(window).innerHeight();this.config.windowHeight!==t&&(this.config.windowHeight=t,this.adjustDimensions(!0));this.config.splitters.map(function(n){n&&n.refresh()});this.adjustControlDimensions()}},onSelectXmlType:function(n){var t=this.$.find("[rql-role='store-id-input']"),i=this.$.find("[rql-role='wiki-id-input']");switch(n.currentTarget.value){case"store-id":t.removeClass("hide");i.addClass("hide");break;case"wiki-id":t.addClass("hide");i.removeClass("hide")}},onSwitchMode:function(n){this.config.BuilderMode=this.config.BuilderMode===t.get("MODE_ADVANCED")?t.get("MODE_VISUAL"):t.get("MODE_ADVANCED");this.clearEvents();var i={xpathQuery:this.config.$xpathQuery.val(),sourceSelection:this.$.find("input:radio[name ='xmlTypeSelection']:checked").val(),selectedWiki:this.$.find("#selectWiki").val(),selectedStoreId:this.$.find("#storeIdText").val()};this.config.modeSwitching=!0;this.render(i);n.stopPropagation()},onXPathFunctionsClick:function(i){var s=this,f,r,e,u,o;n(i.target).is("a.morelink")||(f=n(i.target).closest("li"),r=f.attrs(),r.rql.syntax&&r.rql.syntax!==""&&(this.config.BuilderMode===t.get("MODE_ADVANCED")?(e=this.insertAtXpathQueryCursorLocation(r.rql.syntax,!0),r.rql.syntax.indexOf("arg1")>=0&&(u=this.config.$xpathQuery.val().indexOf("arg1",e.insertedAtBegin),$rql.ui.selectRange(this.config.$xpathQuery,u,u+4))):(o=$f("{0}{1}",r.rql.name,r.rql.syntax.indexOf("arg1")>=0?"(":"()"),this.insertAtXpathQueryCursorLocation(o,!0))),i.preventDefault())},onXPathKeyUp:function(n){var e=this,i=n.which,u={"188":"44","109":"45","190":"46","191":"47","192":"96","220":"92","222":"39","221":"93","219":"91","173":"45","187":"61","186":"59","189":"45"},f={"96":"~","49":"!","50":"@","51":"#","52":"$","53":"%","54":"^","55":"&","56":"*","57":"(","48":")","45":"_","61":"+","91":"{","93":"}","92":"|","59":":","39":'"',"44":"<","46":">","47":"?"};n.which===27||n.which>=112&&n.which<=123||(u.hasOwnProperty(i)&&(i=u[i]),i=!n.shiftKey&&i>=65&&i<=90?String.fromCharCode(i+32):n.shiftKey&&f.hasOwnProperty(i)?f[i]:String.fromCharCode(i),n.which===13?(e.onExecuteXPath(),n.preventDefault()):(/[\w\d\.,\(\)\[\]\/@\'\"]/.test(i)||i.charCodeAt(0)===8)&&this.config.BuilderMode===t.get("MODE_INTELLISENSE")&&this.showIntellisense(r.contains(i)||i.charCodeAt(0)===8,this.config.$xpathQuery.val()))},onXPathNodeClick:function(i){var r=this,u,s,f,o,e;if(i.currentTarget!==i.target)if(n(i.target).is("a"))if(n(i.target).next("span").length>0)if(f=n(i.target).next("span"),f.hasClass("element"))XmlUtils.expandTreeNode(f[0]);else{if(o=f.find("span.element"),o.length===0)return;XmlUtils.expandTreeNode(o[0],f[0])}else e=n(i.target).attrs(),e.rql&&e.rql.role&&e.rql.role==="xpathnode"&&r.insertAtXpathQueryCursorLocation(n(i.target).text(),!0);else u=XmlUtils.getXPath(i.target),r.config.BuilderMode===t.get("MODE_ADVANCED")||r.config.BuilderMode===t.get("MODE_INTELLISENSE")?r.insertAtXpathQueryCursorLocation(u.xpath,!0):r.config.BuilderMode===t.get("MODE_VISUAL")&&(r.config.inWhereClauseBuilderMode!==!0?(s=r.insertAtXpathQueryCursorLocation(u.xpath,!1),r.addNewElement(u.xpath,u.xpath,s)):r.addNewElement(u.xpath,u.xpath,{insertedAtBegin:0,insertedAtEnd:r.config.$xpathQuery.val().length}))}};i.registerClass("$rql.ui.controls.xpathbuilder",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.calendar=function(n,i){i.isFabric=$rql.api.uiVersion>2;t.initializeBase(this,[n,i])};t.prototype={addRecurringEvents:function(t){for(var i,e,r,o,s,u=[],h=this.events,f=0;f<h.length;f++)if(i=h[f],i.recur)for(i=i.extension?i:new $rql.ui.controls.calendar.event(i),e=i.getKeys({start:new Date(t.start.format("MM/DD/YYYY")),end:new Date(t.end.format("MM/DD/YYYY"))}),r=0;r<e.length;r++)o=e[r],this.eventExists(o.uid)||(s=n.extend({},i,o),s.recur=null,Array.add(u,s));u.length>0&&t.calendar.addEventSource(u)},getRecurringEvents:function(n,t,i,r){for(var u,h,o,f,e=this.config.isFabric,s=0;s<n.length;s++)for(u=n[s],u=u.extension?u:new $rql.ui.controls.calendar.event(u),h=u.getKeys({start:e?t:t.toDate(),end:e?i:i.toDate()}),o=0;o<h.length;o++)f=h[o],r.any(function(n){return f.uid===n.id})||r.push({id:f.uid,title:u.title,start:e?f.start:window.moment(new Date(f.start)).toISOString(!0),end:e?f.end:window.moment(new Date(f.end)).toISOString(!0),recur:null,className:u.className,classNames:u.classNames,backgroundColor:u.backgroundColor,textColor:u.textColor,borderColor:u.borderColor,url:u.url})},onDispose:function(){$rql.events.off({resize:this.onResize});this.config.isFabric&&this.calendar?this.calendar.destroy():this.$.fullCalendar("destroy")},eventExists:function(n){for(var i=this.events,t=0;t<i.length;t++)if(i[t].uid==n)return!0;return!1},onViewRendered:function(n){this.config.dataMode==="dynamic"?(this.events=n.calendar.clientEvents(),this.config.currentView=n):n.calendar.clientEvents().length===0?(n.calendar.removeEvents(),n.calendar.addEventSource(this.config.events),this.events=n.calendar.clientEvents(),this.addRecurringEvents(n)):(this.events=n.calendar.clientEvents(),this.addRecurringEvents(n))},fetchEventsStatic:function(t,i){var u,r;if(this.eventsData&&this.eventsData.length!==0){var f=[],e=[],o=t.start,s=t.end;for(u=0;u<this.eventsData.length;u++)r=n.extend(!0,{},this.eventsData[u]),r.title=unescape(r.title||""),r.start=$rql.api.dataTypes.Timestamp.parse(unescape(r.start)),r.end=r.end?$rql.api.dataTypes.Timestamp.parse(unescape(r.end)):new Date(r.start.getFullYear(),r.start.getMonth(),r.start.getDate(),23,59,59),r.classNames=r.eventCss?r.eventCss.split(" "):"",r.url=$rql.api.baseUrl.pathname+"a/"+r.id,r.start<=s&&r.end>=o&&(r.recur||f.push(r)),r.recur&&e.push(r);e.length>0&&this.getRecurringEvents(e,t.start,t.end,f);i(f)}},fetchEventsDynamic:function(n,t){var r=this,u=this.config,i;if(!this.queue){t([]);return}i=this.getQueueRequest(n.start,n.end);this.getEventsFromQueue(i,t,n.start,n.end)},fetchEventsLegacy:function(n,t,i,r){var f=this,e=this.config,u;if(!this.queue){r([]);return}u=this.getQueueRequest(n,t);this.getEventsFromQueue(u,r,n,t)},getQueueRequest:function(n,t){var s=this,i=this.config,h=i.isFabric,u=[],r=[],f=[],e=[],o;return s.queue.config.Filters&&(u=s.queue.config.Filters.copy()),f.push(i.queueInfo.columnMapping.start),f.push("-<<="),i.queueInfo.columnMapping.endType=="Timestamp"?f.push($rql.api.dataTypes.Timestamp.toJson(t)):f.push(t.toISOString()),u.push(f),e.push(i.queueInfo.columnMapping.end),e.push(">>+="),i.queueInfo.columnMapping.startType=="Timestamp"?e.push($rql.api.dataTypes.Timestamp.toJson(n)):e.push(n.toISOString()),u.push(e),i.queueInfo.recurringColumn&&u.push([i.queueInfo.recurringColumn,"?"]),i.queueInfo&&i.queueInfo.columnMapping&&(r.push(i.queueInfo.columnMapping.title),r.push(i.queueInfo.columnMapping.start),r.push(i.queueInfo.columnMapping.end),i.queueInfo.columnMapping.eventCss&&r.push(i.queueInfo.columnMapping.eventCss),i.queueInfo.columnMapping.allDay&&r.push(i.queueInfo.columnMapping.allDay),i.queueInfo.columnMapping.backgroundColor&&r.push(i.queueInfo.columnMapping.backgroundColor),i.queueInfo.columnMapping.textColor&&r.push(i.queueInfo.columnMapping.textColor),i.queueInfo.columnMapping.borderColor&&r.push(i.queueInfo.columnMapping.borderColor)),o={QueueName:i.queueName,Filters:u,Fields:r},this.queue.setRequestContext(o),o},getEventsFromQueue:function(n,t,i,r){var u=this,f=this.config,e=f.isFabric;$rql.http.post($rql.api.baseUrl.pathname+"queue/JSON",n).done(function(e){var h,o,s;e&&e.Json?(h=f.queueInfo.recurringColumn,o=u.normalizeEventsFromQueue(e.Json),h?u.recurringEvents?(u.getRecurringEvents(u.recurringEvents,i,r,o),t(o)):(n.Filters.splice(-1,1),s=[],s.push(h),s.push("!?"),s.push(""),n.Fields.push(h),n.Filters[0]=s,$rql.http.post($rql.api.baseUrl.pathname+"queue/JSON",n).done(function(n){n&&n.Json&&(u.recurringEvents=u.normalizeEventsFromQueue(n.Json,!0),u.getRecurringEvents(u.recurringEvents,i,r,o),t(o))})):t(o)):u.notify("Failed to load events.",$rql.api.uiVersion>2?"error":"well-danger-light")}).fail(function(n){u.notify(n.responseJSON.ResponseStatus.Message,$rql.api.uiVersion>2?"error":"well-danger-light")})},normalizeEventsFromQueue:function(t,i){var r=this.config,u=[];return n.each(t,function(t,f){var o=null,s=null,h,e,c;r.queueInfo.columnMapping.startType=="Timestamp"?(h=$rql.api.dataTypes.Timestamp,o=h.fromJson(f[r.queueInfo.columnMapping.start])):o=new Date(f[r.queueInfo.columnMapping.start]);r.queueInfo.columnMapping.endType=="Timestamp"?(h=$rql.api.dataTypes.Timestamp,s=h.fromJson(f[r.queueInfo.columnMapping.end])):s=new Date(f[r.queueInfo.columnMapping.end]);e={id:f.storeid,title:f[r.queueInfo.columnMapping.title],start:i?window.moment(o):window.moment(o).toISOString(!0),end:i?window.moment(s):window.moment(s).toISOString(!0),recur:f[r.queueInfo.recurringColumn],url:$rql.api.baseUrl.pathname+"a/"+f.storeid};f[r.queueInfo.columnMapping.eventCss]&&(e.className=f[r.queueInfo.columnMapping.eventCss],r.isFabric&&(c=f[r.queueInfo.columnMapping.eventCss],c.indexOf("#")>-1?(e.className=null,e.backgroundColor=c):e.classNames=c.split(" ")));f[r.queueInfo.columnMapping.allDay]&&(e.allDay=f[r.queueInfo.columnMapping.allDay].toBool());f[r.queueInfo.columnMapping.backgroundColor]&&(e.backgroundColor=f[r.queueInfo.columnMapping.backgroundColor]);f[r.queueInfo.columnMapping.textColor]&&(e.textColor=f[r.queueInfo.columnMapping.textColor]);f[r.queueInfo.columnMapping.borderColor]&&(e.borderColor=f[r.queueInfo.columnMapping.borderColor]);r.queueInfo.eventOptions&&n.extend(e,r.queueInfo.eventOptions);u.push(e)}),u},initialize:function(t){var i=this,r=t.isFabric,u=Sys.CultureInfo.CurrentCulture.name,o,f,e;if(u=(u||"en").toLowerCase(),o=u.startsWith("zh")?u:u.substring(0,2),this.queue=this.$.parents("[rql-viewtype='Queue']").data("rql.ui.control"),this.queue||(this.queue=this.$.closest("[rql-embed][rql-view-type='queue']").data("rql.ui.control")),r&&this.upgradeVersion(t),f={header:{left:"prev,next,today",center:"title",right:"month,agendaWeek,agendaDay"},initialView:"agendaWeek"},r&&n.extend(!0,f,{headerToolbar:{left:"prev,next,today",center:"title",right:"dayGridMonth,timeGridWeek,timeGridDay"},dayMaxEvents:!1,initialView:"dayGridMonth",eventDisplay:"block"}),this.config=n.extend({editable:!1,disableDragging:!0,viewRender:n.proxy(this.onViewRendered,this),locale:o,dataMode:t.dataMode,queueInfo:t.queueInfo,contentHeight:"auto",queueName:this.queue?this.queue.config.Id:t.queueName},f,t),this.config.rqlOptions&&(this.config.rqlOptions.responsiveCalendarView=this.setCalendarViewBreakpoints(),this.rqlOptions=this.config.rqlOptions,this.rqlOptions.persistCalendarViewSelection&&(n.isFunction(t.datesSet)&&(e=t.datesSet),this.config.datesSet=function(n){e&&e(n);i.saveUserViewSelection(n)}),delete this.config.rqlOptions),i.config.dataMode==="dynamic"){if(this.config.queueInfo&&this.config.queueInfo.columnMapping){if(!this.config.queueInfo.columnMapping.title||!this.config.queueInfo.columnMapping.start||!this.config.queueInfo.columnMapping.end){i.notify("Not all event fields are defined..",$rql.api.uiVersion>2?"error":"well-danger-light");return}}else{i.notify("Queue information not defined.",$rql.api.uiVersion>2?"error":"well-danger-light");return}this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.start]||(this.queue=this.$.closest("[rql-embed][rql-view-type='queue']").data("rql.ui.control"),this.config.queueName=t.queueName||this.queue.$.attr("rql-view"));n.isNumeric(this.config.queueInfo.columnMapping.title)&&(this.config.queueInfo.columnMapping.title=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.title].Name);n.isNumeric(this.config.queueInfo.columnMapping.start)&&(this.config.queueInfo.columnMapping.start=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.start].Name);this.config.queueInfo.columnMapping.startType=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.start].Type;n.isNumeric(this.config.queueInfo.columnMapping.end)&&(this.config.queueInfo.columnMapping.end=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.end].Name);this.config.queueInfo.columnMapping.endType=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.end].Type;this.config.queueInfo.columnMapping.eventCss&&n.isNumeric(this.config.queueInfo.columnMapping.eventCss)&&(this.config.queueInfo.columnMapping.eventCss=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.eventCss].Name);this.config.queueInfo.columnMapping.allDay&&n.isNumeric(this.config.queueInfo.columnMapping.allDay)&&(this.config.queueInfo.columnMapping.allDay=this.queue.config.DataPage.Properties[this.config.queueInfo.columnMapping.allDay].Name);i.config.events=r?i.fetchEventsDynamic:i.fetchEventsLegacy}else i.config.events&&(r?(this.eventsData=this.config.events.copy(),delete this.config.events,i.config.events=i.fetchEventsStatic):n.each(i.config.events,function(){var t=typeof this.allDay=="boolean"?this.allDay:(this.allDay||"").toBool(),i=new Date(this.start.replace(/-/g,"/")),n=new Date(this.end.replace(/-/g,"/"));t&&i.format("yyyyMMdd")==n.format("yyyyMMdd")&&n.setHours(0,0,0,0);this.start=moment(i).local();this.end=moment(n).local();this.allDay=t;this.className=this.eventCss;this.url=$rql.http.uri().origin+"/rql/a/"+this.id}));if(i.config.modeSwitch&&(i.config.customButtons||(i.config.customButtons={}),i.config.customButtons.modeSwitch={text:$rql.i18n.strings.Grid,click:function(){i.queue.switchToGridMode()}},r?(i.config.headerToolbar||(i.config.headerToolbar={}),i.config.headerToolbar.right?i.config.headerToolbar.right+=" modeSwitch":i.config.headerToolbar.right="modeSwitch"):i.config.header.right+=" modeSwitch"),this.rqlOptions&&(this.config.initialView=this.getUserViewSelection(this.config.initialView),!this.rqlOptions.persistCalendarViewSelection))$rql.events.on({resize:this.onResize});if(r){if(window.FullCalendar!=null&&(this.calendar=new window.FullCalendar.Calendar(i.$[0],this.config),this.calendar.render(),this.queue))this.queue.onLoaded({PluginLoaded:!0,RenderTimeout:250})}else $rql.api.require("calendar")&&this.$.fullCalendar(this.config)},notify:function(t,i){if($rql.api.uiVersion>2)window.toastr.options.progressBar=!0,window.toastr.options.positionClass="toast-top-center",window.toastr[i](t);else{var r=this.config.Id;this.$message=this.$.find($f("[rql-role='user-message'][rql-source='{0}']",r));this.$message.children(".well").attr("class",i+" well well-mini padding-lr-sm medium").html(t);this.$message.fadeIn(125,function(){n(this).delay(7e3).fadeOut(125)})}},upgradeVersion:function(n){var r=function(n){return n.replace("month","dayGridMonth").replace("agendaWeek","timeGridWeek").replace("agendaDay","timeGridDay").replace("basicWeek","dayGridWeek").replace("basicDay","dayGridDay")},t,i,u,f;n.header&&(n.headerToolbar={},n.headerToolbar.left=n.header.left?r(n.header.left):!1,n.headerToolbar.center=n.header.center?r(n.header.center):!1,n.headerToolbar.right=n.header.right?r(n.header.right):!1);n.defaultView&&(n.initialView=r(n.defaultView));n.timeFormat&&(t=n.timeFormat,t===" "?n.displayEventTime=!1:(i={hour:"numeric",minute:"2-digit"},(t.startsWith("H(")||t.startsWith("H:"))&&(i.hour12=!1),(t.startsWith("HH(")||t.startsWith("HH:"))&&(i.hour="2-digit"),t.contains("t")||t.contains("T")?i.meridiem="narrow":(t.contains("a")||t.contains("A"))&&(i.meridiem="short"),i.omitZeroMinute=t.contains("(:mm)"),n.eventTimeFormat=i));n.columnFormat==="dddd"&&(n.dayHeaderFormat={weekday:"long"});n.columnFormat==="ddd"&&(n.dayHeaderFormat={weekday:"short"});n.columnFormat==="ddd M/D"&&(n.dayHeaderFormat={weekday:"short",month:"numeric",day:"numeric",omitCommas:!0});u=this.$.closest('[rql-viewtype="Queue"]').find("style");u.length>0&&(f=u.html().replace(".fc-state-active",".fc-button-active"),this.$.closest('[rql-viewtype="Queue"]').find("style").html(f))},saveUserViewSelection:function(n){if(n&&n.view&&n.view.type){var t=$rql.ui.getMediaBreakpoint();this.setViewSetting($f("{0}_user_calendar_view_{1}",this.config.queueName,t),n.view.type,!0,!0)}},getUserViewSelection:function(n){var r=$rql.ui.getMediaBreakpoint(),t,i;if(this.rqlOptions)if(this.rqlOptions.persistCalendarViewSelection){if(t=this.getViewSetting($f("{0}_user_calendar_view_{1}",this.config.queueName,r),!0,!0),t)return t}else if(this.rqlOptions.responsiveCalendarView&&(i=this.rqlOptions.responsiveCalendarView[r],i))return i;return n},setCalendarViewBreakpoints:function(){var i=$rql.ui.supportedMediaBreakpoints().toObject(),r,u,t,f;for(n.extend(!0,i,{xs:"timeGridWeek",sm:"timeGridWeek",md:"timeGridDay"},this.config.rqlOptions.responsiveCalendarView),r=$rql.ui.supportedMediaBreakpoints(),u=[],t=r.length-1;t>=0;t--)if(n.isNumeric(i[r[t]]))u.push(r[t]);else{for(f=0;f<u.length;f++)i[u[f]]=i[r[t]];u=[]}return i},onResize:function(){var n=this,t;n.rqlOptions&&!n.rqlOptions.persistCalendarViewSelection&&(t=$rql.ui.getMediaBreakpoint(),n.calendar&&n.calendar.view.type!==n.rqlOptions.responsiveCalendarView[t]&&n.calendar.changeView(n.rqlOptions.responsiveCalendarView[t]))}};t.event=function(n){this.initialize(n)};t.event.prototype={days:["su","mo","tu","we","th","fr","sa"],extension:!0,getKeys:function(n){var u=[],s=this.start.format("HH:mm"),h=this.end?this.end.format("HH:mm"):startDate.addMinutes(1).format("HH:mm"),t=this.recur,f,r,i;if(t&&t.dates&&t.dates.length>0)for(f=this,r=t.dates.where(function(t){return t>=n.start&&t<=n.end}),i=0;i<r.length;i++){var e=r[i],o=new Date(e.toUTC().format("MM/dd/yyyy")+" "+s),c=new Date(e.toUTC().format("MM/dd/yyyy")+" "+h);u.push({uid:$f("{0}:{1}",f.id,o.valueOf()),start:o,end:c})}return u},initialize:function(t){var i,r;n.extend(this,t);this.recur&&(i=window.rrule.RRule.parseString(this.recur),this.recur.indexOf("DTSTART")===-1&&(i.dtstart=t.start.toDate()),r=new window.rrule.RRule(i),this.recur={data:this.recur,rrule:r,dates:r.all()})}};t.registerClass("$rql.ui.controls.calendar",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.textinput=function(n,i){t.initializeBase(this,[n,i])};$rql.ui.controls.textinput.parseRefreshButtonOptions=function(n){var t,i;if(n.Options&&n.Options!==""){if(t=n.Options.parseOptions(),!t||t.length===0)return;i=t.first(function(n){return n.config==="refresh"});i&&(i.options.map(function(t){switch(t.param){case"show":n.RefreshButtonVisibility=t.value.toLowerCase();n.RefreshButtonVisibility==="always"&&(n.RefreshButtonVisibleAlways=!0);break;case"css":n.RefreshButtonCss=t.value;break;case"readonlycss":n.RefreshButtonReadOnlyCss=t.value;break;case"content":n.RefreshButtonContent=$rql.htmlDecode(t.value);break;case"contentupdated":n.RefreshButtonContentUpdated=$rql.htmlDecode(t.value);break;case"contentupdateall":n.RefreshButtonContentUpdateAll=$rql.htmlDecode(t.value);break;case"placement":n.RefreshButtonPlacement=t.value.toLowerCase();n.RefreshButtonPlacement==="prepend"?n.RefreshButtonPreppend=!0:n.RefreshButtonPlacement==="append"&&(n.RefreshButtonAppend=!0);n.RefreshButtonPlacement!==""&&(n.RefreshButtonAddon=!0);break;case"postback":t.value.toLowerCase()==="always"&&(n.AlwaysPostback=!0);break;case"showcalculatedexpression":t.value.toLowerCase()==="false"&&(n.HideCalculatedExpression=!0)}}),n.ContextIsReadOnly&&n.RefreshButtonReadOnlyCss&&n.RefreshButtonReadOnlyCss!==""?n.RefreshButtonCss=n.RefreshButtonReadOnlyCss:n.RefreshButtonCss&&n.RefreshButtonCss!==""&&n.RefreshButtonVisibility!=="always"&&(n.RefreshButtonCss+=" hide"))}n.RefreshButtonPlacement||(n.RefreshButtonAppend=!0);n.IsFabric&&(n.RefreshButtonContent||(n.RefreshButtonContent=$rql.i18n.strings.Update),n.RefreshButtonContentUpdated||(n.RefreshButtonContentUpdated=$rql.i18n.strings.Updated),n.RefreshButtonContentUpdateAll||(n.RefreshButtonContentUpdateAll=$rql.i18n.strings.UpdateAll))};t.prototype={initialize:function(t){var e=this,t,u;if(this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t),t=this.config.Options?this.config.Options.parseOptions():null,t&&t.length!==0){var i=t.find(n=>n.config==="content"),r=i&&i.options?i.options.find(n=>n.param==="type"):null,f=r&&r.value?r.value.toLowerCase():null;f==="html"&&(this.config.ContentType=f)}if(this.config.mentionsSupported=!!this.config.MentionQueue,this.config.IsPhoneNumber&&$rql.isUndefined(window.intlTelInputUtils)?window.toast($rql.api.baseUrl.pathname+"fabric/js/libs/phone-utils.js",function(){e.render()}):this.render(),this.config.mentionsSupported||this.config.IsPhoneNumber||this.config.ContentType)this.config.Form.on("collectValues",this.onCollectValues);if(this.config.IsResourceDate)this.$.on("click","[rql-role='customdatepicker']",this.onPickResourceDate);else if(!this.config.ContentIsReadOnly&&!this.config.DateAllowTyping&&(u=this.$.find($f("input[id='{0}']",this.config.ElementId)),u.length!==0))u.on("click",this.openDatePicker)},openDatePicker:function(){var n=this.$.find($f("[rql-role='datepicker'][rql-inputid='{0}']",this.config.ElementId));n.length!==0&&n.click()},template:function(){return this.config.Rows&&this.config.Rows>1||this.config.AutoExpand?$rql.ui.templates("text-area"):this.config.IsDateTimeElement?$rql.ui.templates("text-date-time"):this.config.IsFabric&&this.config.IsPhoneNumber?$rql.ui.templates("text-phone-number"):$rql.ui.templates("text-input")},dispose:function(){this.off();this.$.off();(this.config.mentionsSupported||this.config.IsPhoneNumber)&&(this.config.Form.off("collectValues",this.onCollectValues),this.config.mentionsSupported&&$rql.ui.behaviors.mention.detachBehavior(this));t.callBaseMethod(this,"dispose")},adjustInputWidth:function(){var n=this.config,t;n.Columns&&(t=$rql.ui.getTextWidthPercent(Array(parseInt(n.Columns)).join("Z"),n.PaddingPixels,this.$[0].offsetWidth),this.$.find(".input-group").css({width:t+"%"}))},render:function(){var o=this,t=this.config,u,r,f,i,e;if(t.IsFabric=$rql.api.uiVersion>2,t.IsRequired=!t.Optional&&!t.ReadOnly&&!t.ContextIsReadOnly,t.ElementId=this.elementId,t.InputType="text",t.IsDesktop=this.isDesktop(),t.Value=t.Value.replace(/\"/g,"&quot;"),t.InitialValue=t.Value,t.IsFabric&&t.Columns&&!isNaN(t.Columns)&&(t.PaddingPixels=40,$rql.api.dataTypes.isDateTime(t.Type)&&(t.PaddingPixels+=25),t.WidthPercentage=$rql.ui.getTextWidthPercent(Array(parseInt(t.Columns)).join("Z"),t.PaddingPixels,this.$[0].offsetWidth)),t.DirAttr=!t.Type||t.Type==="text"||t.Type==="String"||t.Type==="Place"?$rql.i18n.dirAttr:"",u={Options:t.Options,ContextIsReadOnly:t.ContextIsReadOnly,IsFabric:t.IsFabric},$rql.ui.controls.textinput.parseRefreshButtonOptions(u),t.Postback!==undefined?u.AlwaysPostback&&(t.AlwaysPostback=!0):t.ShowRefreshButton&&n.extend(this.config,u),t.Type!=="Password"?((t.Type==="Integer"||t.Type==="Number")&&(this.isDesktop()||$rql.api.isIOS||(t.InputType="tel"),$rql.api.isIOS&&($rql.api.isIOS11?t.InputType="number":(r="^\\d{1,3}(<thousands-separator>\\d{3})*(\\<decimal-separator>\\d+)?$",r=r.replace("<thousands-separator>",Sys.CultureInfo.CurrentCulture.numberFormat.NumberGroupSeparator),r=r.replace("<decimal-separator>",Sys.CultureInfo.CurrentCulture.numberFormat.NumberDecimalSeparator),t.Pattern=r))),t.IsNumeric&&delete t.Value):(t.InputType="password",t.NoCssClass=!0,t.AutoCompleteOff=!0),t.ReadOnly&&(t.Type.contains("Date")||t.Type.contains("Time")?t.ReadOnlyValue=t.RqlValue?this.formatReadOnlyTemporalTypes(t.Type,t.RqlValue,t.DateFormat):t.ReadOnlyValue:t.Rows&&(t.ReadOnlyValue=$rql.htmlEscape(t.ReadOnlyValue))),t.IsFabric&&this.isInputDirty()&&(!this.config.RefreshButtonVisibility||this.config.RefreshButtonVisibility!=="false")&&(t.IsUpdated=!0,this.saveInputState("is-dirty",!1)),t.Options&&t.Options.toLowerCase().contains("autoexpand")&&(f=t.Options.parseOptionsAsObject(!1,!0),f.AutoExpand&&f.AutoExpand.enabled!==!1&&n.extend(t,f)),t.IsFabric&&t.IsPhoneNumber&&(t.DialCodes=JSON.parse(JSON.stringify($rql.api.dialCodes)),t.Value=this.extractPhoneNumberValue(t.Value),i="",t.DefaultDialCode===""||t.CountryCode||t.PhoneDialCode?i=t.CountryCode+"|"+t.PhoneDialCode:($rql.isUndefined(t.DefaultDialCode)||(i=this.getDialCodeInfo(t.DefaultDialCode)),i||(i=this.getDialCodeInfo(Sys.CultureInfo.CurrentCulture.name)),i||(i=this.getDialCodeInfo("us"))),e=t.DialCodes.findIndexBy(function(n){return n.iso2+"|"+n.dialCode===i}),e<0&&(e=t.DialCodes.findIndexBy(function(n){return n.iso2+"|"+n.dialCode=="us|1"})),t.DialCodes[e].selected=!0,t.PhonePlaceholder=this.getExamplePhoneNumber(i.slice(0,2))),this.$.empty().append(this.template().render(t)),t.IsFabric)this.$.find("[rql-role='dialcode']").select2({theme:"material",width:"100%",dropdownCssClass:"select2-container-material-dropdown",containerCssClass:t.UiStyle,templateSelection:function(n){var t=n.id.split("|");return t.length>1?$f("+{0}",t[1]):n.id}}).on("select2:select",function(){var t=n(this).val().slice(0,2);o.$input.attr("placeholder",o.getExamplePhoneNumber(t))});$rql.events.on("adjustInputWidth",this.adjustInputWidth);$rql.events.on("temporalInputError",this.onInputError);$rql.events.on("temporalInputValidated",this.onInputValidated);if($rql.api.offline&&$rql.api.isIOS)this.$.on("startdrag",function(){return!1});this.widgetize()},onRendered:function(){var n=this.config,t,i,r;this.$input=this.$.find($f("#{0}",n.ElementId));this.$input.data("__self",this);this.$input.on("focus",this.onFocus);if(n.Postback&&(this.$input.attr("rql-haspostback",n.AlwaysPostback?"always":"change"),!$rql.api.dataTypes.isDateTime(n.Type)||$rql.api.uiVersion<=2))this.$input.on("blur",this.onBlur);if(n.IsFabric){if(n.RefreshButtonPreppend||n.RefreshButtonAppend)this.$input.on("input",this.onInput);$rql.events.on({resize:this.onResize});n.AutoExpand&&!n.ReadOnly&&this.$input.is(":visible")&&this.$input.expanding();n.IsPhoneNumber&&(n.ReCollectValues&&this.config.Form&&this.config.Form.values&&(t=$f("{0}__phonenumber_{1}=",n.ContextName,n.Id),i=this.config.Form.values.data.findIndex(function(n){return n===t}),i>-1&&(r=this.getPhoneNumberUpdateValue(),this.config.Form.values.data[i]=t+r),delete n.ReCollectValues),this.$input.length>0&&$rql.ui.setInputFilter(this.$input[0],function(n){return/^[ \d.\-()]*$/.test(n)}))}n.mentionsSupported&&$rql.ui.behaviors.mention.attachBehavior(this)},onResize:function(){if(this.config.WidthPercentage){var n=this.config;n.WidthPercentage=$rql.ui.getTextWidthPercent(Array(parseInt(n.Columns)).join("Z"),n.PaddingPixels,this.$[0].offsetWidth);this.$.find(".md-form.input-group").css({width:n.WidthPercentage+"%"})}},formatReadOnlyTemporalTypes:function(n,t,i){var r=$rql.api.dataTypes[n],f,u;return i&&i.length>0&&n==="Date"&&(f=t,u=r.fromJson(f),u)?r.format(u,i):r.format(r.fromJson(t))},onDataChanged:function(t,i){var u=t.val(),r=this.config.Value,f="",e="";$rql.api.dataTypes.isDateTime(this.config.Type)&&u!==""&&r!==""?(this.config.Type==="DateTime"?(f=t.attr("rql-timezone"),e=r.substr(r.indexOf(";")+1),r=r.substr(0,r.indexOf(";"))):this.config.Type==="Time"&&(u="1/1/1900 "+u,r="1/1/1900 "+r),u=$rql.api.dataTypes[this.config.Type].toJson(new Date(u)),r=$rql.api.dataTypes[this.config.Type].toJson(new Date(r))):$rql.api.dataTypes.isNumeric(this.config.Type)&&(u=$rql.api.dataTypes[this.config.Type].fromJson(t.val()),r=$rql.api.dataTypes[this.config.Type].fromJson(this.config.RqlValue));(this.config.AlwaysPostback||u!==r||f!==e)&&(this.config.Form&&n.isFunction(this.config.Form.setPostbackControlId)&&(i?this.config.Form.setPostbackControlId({currentTarget:i}):this.config.Form.setPostbackControlId({currentTarget:t[0]})),this.config.Form.update(new $rql.ui.components.valueCollection,null,null,null,null,i))},onBlur:function(t){this.onDataChanged(n(t.currentTarget),t.relatedTarget)},onFocus:function(t){var r=this.config.Form.$storeView(),i=n(t.currentTarget).attrs(),u;try{i.rql&&i.rql.id&&(r.find("a[rql-id^='__expression__'][rql-visibility!='always']:not([is-dirty])").addClass("hide").parent("[rql-focusable='yes']").removeClass("show-expression"),r.find("a[rql-id^='__expression__'][rql-visibility='always']").parent("[rql-focusable='yes']").addClass("show-expression"),u=i.rql&&(i.rql.type==="DateTime"||i.rql.type==="Date"||i.rql.type==="Time"||i.rql.type==="Timestamp"),u&&!this.isDesktop()||(this.config.IsFabric?this.$input.siblings("a[rql-id^='__expression__'][rql-visibility!='false'][is-dirty]").removeClass("hide").parent("[rql-focusable='yes']").addClass("show-expression"):this.$input.siblings("a[rql-id^='__expression__'][rql-visibility!='false']").removeClass("hide").parent("[rql-focusable='yes']").addClass("show-expression")))}catch(f){$log.error("Error finding form attribute rql-id",f)}t&&t.stopPropagation()},onInput:function(t){var r=this.$input.siblings("a[rql-id^='__expression__']"),u,i;n(t.currentTarget).val()!==this.config.Value?(this.saveInputState("is-dirty",!0),this.$input.addClass("border-dashed").attr("is-dirty",!0),r.addClass("border-dashed").attr("is-dirty",!0),this.config.RefreshButtonVisibility&&this.config.RefreshButtonVisibility==="false"||r.removeClass("hide")):(this.saveInputState("is-dirty",!1),this.$input.removeClass("border-dashed").removeAttr("is-dirty"),r.removeClass("border-dashed").removeAttr("is-dirty"),this.config.RefreshButtonVisibility&&this.config.RefreshButtonVisibility==="always"||this.$input.siblings("a[rql-id^='__expression__']").addClass("hide"));this.$.find("[rql-role='updatedIndicator']").remove();u=this.config.Form.$storeView();i=u.find("a[rql-id^='__expression__'][is-dirty]:visible");i.length>1?i.each(function(t,i){var r=n(i).siblings("input[rql-type], textarea[rql-type]").attr("data-contentupdateall");n(i).html(unescape(r))}):i.html(unescape(this.$input.attrs().data.contentupdate))},isInputDirty:function(){return this.getInputState("is-dirty")},saveInputState:function(n,t){var i=$f("{0}$i${1}",this.config.ContextName,this.config.Id),r=this.getViewSetting(i,!1,!0)||{};r[n]=t;this.setViewSetting(i,r,!1,!0)},getInputState:function(n){var t=$f("{0}$i${1}",this.config.ContextName,this.config.Id),i=this.getViewSetting(t,!1,!0)||{};return i[n]},getPhoneNumberUpdateValue:function(){var n=this.config,t=this.$.find("[rql-role='dialcode']");if(t.length>0&&(selectedDialCode=t.val(),selectedDialCode)){var r=selectedDialCode.split("|")[1],i=this.$.find("[rql-role='phone-extension']").val();return $f("{0}|{1}|{2}{3}",this.scrubPhoneNumber(this.$input.val()),this.formatReadOnlyPhoneNumber(this.$input.val(),r,n.ExtensionHeader,i),selectedDialCode,n.ShowExtension?"|"+i:"")}return n.ReCollectValues=!0,""},onCollectValues:function(n){var t=this.config,i,r;t.ReadOnly||(t.ContentType==="html"&&(n.values.add(t.ContextName+"__html_"+t.Id,this.$input.rqlval()),n.values.processControlWithDefault(this.$,!n.excludeDefaults&&t.IsDefault)),t.mentionsSupported&&(i=(this.mentionBehavior?this.mentionBehavior.getMentions():t.Mentions)||"",n.values.add(t.ContextName+"__mentions_"+t.Id,i)),t.IsPhoneNumber&&(r=this.getPhoneNumberUpdateValue(),n.values.add(t.ContextName+"__phonenumber_"+t.Id,r)))},onInputError:function(n){if(n&&n.elementId===this.config.ElementId){if(this.config.IsFabric){var t=this.$.find(".input-wrapper");t.find(".error-msg-footer.dynamic-error").remove();t.addClass("input-error");t.append(this.buildDynamicErrorFooter($f($rql.i18n.strings.ExpectedFormat,n.format)))}else this.$.find(".control-group").addClass("error");this.addClientSideValidationError(n.elementId,"invalid date/time format")}},onInputValidated:function(n){n&&n.elementId===this.config.ElementId&&(this.config.IsFabric?(this.$.find(".input-wrapper .error-msg-footer.dynamic-error").remove(),this.$.find(".input-wrapper").removeClass("input-error")):this.$.find(".control-group").removeClass("error"),this.removeClientSideValidationError(n.elementId))},buildDynamicErrorFooter:function(t){var i=n($f("<div {0}/>",$rql.i18n.dirAttr),{"class":"error-msg-footer dynamic-error"});return i.html($f("<small>{0}<\/small>",t)),i[0]},addClientSideValidationError:function(n,t){var i=this.config,r;i&&i.Form&&(i.Form.ClientSideErrors||(i.Form.ClientSideErrors=[]),r=i.Form.ClientSideErrors.findIndexByKey("elementId",n),r===-1?i.Form.ClientSideErrors.push({elementId:n,error:t}):i.Form.ClientSideErrors[r].error=t)},removeClientSideValidationError:function(n){var t=this.config,i;if(t&&t.Form){if(!t.Form.ClientSideErrors)return;i=t.Form.ClientSideErrors.findIndexByKey("elementId",n);i>-1&&t.Form.ClientSideErrors.removeAt(i)}},scrubPhoneNumber:function(n){return n?n.replace(/[ .\-()]/g,""):""},formatReadOnlyPhoneNumber:function(n,t,i,r){var u;return r&&(u=i?i+" "+r:$rql.i18n.strings.PhoneExtension+" "+r),$f("{0}{1}{2}",t?"+"+t+" ":"",n,r?" "+u:"")},extractPhoneNumberValue:function(t){var o=this.config,r=t.replace("+"+o.PhoneDialCode,"").trim(),i=o.CleanPhoneNumber||t,s=-1,u,f,e;for(!o.CleanPhoneNumber&&i&&(u=i.substr(0,i.indexOf(" ")),u&&(u=u.replace("+",""),n.isNumeric(u)&&(f=this.getDialCodeInfo(parseInt(u)),f&&(o.CountryCode=f.substr(0,f.indexOf("|")),o.PhoneDialCode=f.substr(f.indexOf("|")+1),r=i.substr(i.indexOf(" ")+1))))),e=0;e<r.length;e++){if(i.length===0){s=e;break}n.isNumeric(r[e])&&r[e]===i[0]&&(i=i.substr(1))}return s>=0?r.substring(0,s):r},getDialCodeInfo:function(t){var r=this.config,f,i,u;return r.DialCodes?(f=n.isNumeric(t),i=f?t:t.toLowerCase(),i.length>2&&(i=i.slice(-2)),u=r.DialCodes.findIndexBy(function(n){return f?parseInt(n.dialCode)===i:n.iso2===i}),u===-1)?null:r.DialCodes[u].iso2+"|"+r.DialCodes[u].dialCode:null},getExamplePhoneNumber:function(n){return window.intlTelInputUtils.getExampleNumber(n,!0,2)},onPickResourceDate:function(){var u=this,i=this.config,t=$rql.ui.div("lookup-dialog",null,!0),f,r;t.html($rql.ui.templates("lookup-dialog").render({Title:i.Header,CustomCss:"modal-lg",iOSMobile:i.iOSMobile}));f=t.find("[rql-role='content']");r=new $rql.ui.controls.customdatepicker(f[0],{Id:i.Id,ResourceDateArguments:i.ResourceDateArguments,SetCustomDateValue:function(n){if(n){var r=new Date(n),i=u.$input;if(i.data("value",null),i.attr("selected","true"),i.attr("data-value",r),i[0].hasAttribute("rql-dateformat")?(i.val(r.format(i.attr("rql-dateformat"))),i.attr("rql-value",r)):i.val($rql.api.dataTypes[u.config.Type].format(r)),i.data("rql.ui.control").adjustValue(),i.attr("rql-haspostback"))i.data("__self").onDataChanged(i)}t.find(".modal").modal("hide")}});t.widgetize();$rql.ui.showModal(t.find('[rql-role="modal"]'),{onHidden:function(){r&&r.dispose();t&&t.remove();t=null;var i=n(".modal.show:visible").first();i.length>0&&(n("body").addClass("modal-open"),$rql.ui.raiseAboveBackdrop(i),$rql.ui.stopScrolling())}})}};t.registerClass("$rql.ui.controls.textinput",$rql.ui.controls.input)})(jQuery);
(function(n){var t=$rql.ui.controls.placeinput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var r,i;this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.config.Options&&this.config.Options!==""&&(r=this.config.Options.parseOptions(),i=r.first(function(n){return n.config==="place"}),i&&i.options&&i.options.first(function(t){return t.param==="retrievedetails"&&t.value&&(n.trim(t.value)==="true"||n.trim(t.value)==="yes")})&&(this.config.RetrieveDetails=!0));this.config.Form.on("collectValues",this.onCollectValues);this.render()},template:function(){return $rql.ui.templates("text-input")},dispose:function(){this.config.Form.off("collectValues",this.onCollectValues);this.detachPlacesAutocomplete();this.autocompleteInput&&n(this.autocompleteInput).off();t.callBaseMethod(this,"dispose")},attachPlacesAutocomplete:function(){if(window.google&&window.google.maps&&window.google.maps.places&&window.google.maps.places.Autocomplete){var t=n(this.autocompleteInput).prop("placeholder");this.autocomplete=new google.maps.places.Autocomplete(this.autocompleteInput,{fields:["place_id"]});n(this.autocompleteInput).prop("placeholder",t);this.autocomplete.addListener("place_changed",this.onPlaceChanged)}},detachPlacesAutocomplete:function(){this.autocomplete&&(this.autocomplete.unbindAll(),google.maps.event.clearInstanceListeners(this.autocompleteInput),this.autocomplete=null)},reattachPlacesAutocomplete:function(){this.detachPlacesAutocomplete();$rql.api.require("placesAutocomplete",this.attachPlacesAutocomplete)&&this.attachPlacesAutocomplete()},onAutocompleteFocus:function(){this.reattachPlacesAutocomplete()},onPlaceChanged:function(){var t=this.autocomplete.getPlace(),i=this.config;i.PlaceId=t?t.place_id:null;i.Value=n(this.autocompleteInput).val()},onCollectValues:function(t){var i=this.config,r,u;i.ReadOnly||(r=n(this.autocompleteInput).val(),u=i.Value===r?i.PlaceId:null,t.values.add(i.ContextName+"__place_"+i.Id,$f("{0}||{1}||{2}",i.RetrieveDetails?"Y":"N",u,r)))},onRendered:function(){this.autocompleteInput=this.$.find($f("#{0}",this.config.ElementId)).get(0);n(this.autocompleteInput).on("focus",this.onAutocompleteFocus)}};t.registerClass("$rql.ui.controls.placeinput",$rql.ui.controls.textinput)})(jQuery);
(function(n){var t=$rql.ui.controls.chipsinput=function(n,i){t.initializeBase(this,[n,i])};t.specialKeyCodes=[n.ui.keyCode.ENTER,n.ui.keyCode.TAB,n.ui.keyCode.ESCAPE];t.prohibitedCharsRegex=/[\x00-\x1F]/g;t.nbspRegex=/&nbsp;/g;t.prototype={initialize:function(t){var i;this.config=n.extend({Empty:!1,Error:!1,Separator:","},t);this.config.SeparatorRegex=new RegExp("\\"+this.config.Separator,"g");this.config.Values=[];this.config.Value&&(i=this.config.Separator,this.config.Values=n.map(this.config.Value.split(i),function(n){return n.trim()||null}));this.config.IsReadOnly=this.config.ReadOnly||this.config.ContextIsReadOnly;this.config.IsDisabled=!this.config.ReadOnly&&this.config.ContextIsReadOnly;this.render()},dispose:function(){this.config.IsReadOnly||(this.config.Form&&this.config.Form.off("collectValues",this.onCollectValues),this.$input.off(),this.$chipsList.off());this.off();t.callBaseMethod(this,"dispose")},render:function(){if(this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly,this.$.html($rql.ui.templates("chips-input").render(this.config)),!this.config.IsReadOnly){if(this.config.Form)this.config.Form.on("collectValues",this.onCollectValues);this.$.on("mousedown",this.onMouseDown);this.$input=this.$.find("[rql-role='chip-new']");this.$input.on("keydown",this.onKeyDown);this.$input.on("focusout",this.onFocusOut);this.$chipsList=this.$.find("[rql-role='chips-list']");this.$chipsList.on("mouseup","[rql-role='chip-remove']",this.onRemoveChip)}},addValue:function(n){var t=this.config.Values,i=t.indexOf(n);return i===-1?(t.push(n),!0):!1},removeValue:function(n){var t=this.config.Values,i=t.indexOf(n);i!==-1&&t.splice(i,1)},convertTextToChip:function(){var i=this.$input.text(),r;i&&(i=i.replace(this.config.SeparatorRegex,"").replace(t.prohibitedCharsRegex,"").replace(t.nbspRegex," ").trim(),i&&this.addValue(i)&&(r=$f("<div rql-role='chip'><span rql-role='chip-text' {1}>{0}<\/span><span rql-role='chip-remove'>&times;<\/span><\/div>",i,$rql.i18n.dirAttr),n(r).insertBefore(this.$input)),this.$input.text(""))},onKeyDown:function(i){var r=i.which?i.which:i.name==="key"&&i.data&&i.data.keyCode?i.data.keyCode:0,u;(n.inArray(r,t.specialKeyCodes)!==-1||i.key===this.config.Separator)&&(u=this.$input.text(),r===n.ui.keyCode.ENTER||r===n.ui.keyCode.TAB||i.key===this.config.Separator?(this.convertTextToChip(),r!==n.ui.keyCode.TAB&&(i.preventDefault(),i.stopPropagation())):u&&r===n.ui.keyCode.ESCAPE&&(this.$input.text(""),i.preventDefault(),i.stopPropagation()))},onFocusOut:function(){this.convertTextToChip()},onRemoveChip:function(t){if(t.which===1){var i=n(t.target).closest("[rql-role='chip']"),r=i.find("[rql-role='chip-text']").text();i.remove();this.removeValue(r)}},onMouseDown:function(){var n=this.$input;setTimeout(function(){n.focus()},0)},onCollectValues:function(n){var r=this.config,i,t;if(!r.ReadOnly){for(this.convertTextToChip(),i="",t=0;t<this.config.Values.length;t++)t!==0&&(i+=this.config.Separator),i+=this.config.Values[t];n.values.add((r.ContextName||"")+r.Id,i)}}};t.registerClass("$rql.ui.controls.chipsinput",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.checkbox=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.render()},template:function(){return $rql.ui.templates("checkbox")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var n=this.config,t;if(n.IsRequired=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly,n.ElementId=this.elementId,n.IsDesktop=this.isDesktop(),this.$.empty().append(this.template().render(n)),!n.IsToggle||n.ReadOnly||n.ContextIsReadOnly)this.$.find("input[type='checkbox']").on("click",this.onCheckboxClick);else if(t=this.$.find("div[rql-role='switch']"),t.length===1){this.$.on("click","[rql-role='switch-options']",this.onSwitchOptionClick);this.toggleControls={$switchOnOff:$rql.api.uiVersion>2?t.find("[rql-role='switch-options']"):t.children("div"),$checkbox:t.find("input[type='checkbox']"),$actionTrigger:t.find("[rql-action]")}}this.widgetize()},onSwitchOptionClick:function(){this.toggleControls&&(this.toggleControls.$switchOnOff.toggleClass("switch-on switch-off"),this.toggleControls.$checkbox.attr("checked",!this.toggleControls.$checkbox.is(":checked")),this.toggleControls.$checkbox.trigger("valueChange"),this.config.RqlAction&&this.toggleControls.$actionTrigger.trigger("click"))},onCheckboxClick:function(t){n(t.currentTarget).trigger("valueChange")}};t.registerClass("$rql.ui.controls.checkbox",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.checkboxlist=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.config.DefaultValues&&(this.config.DefaultValues=this.config.DefaultValues.split(","));this.parseUiOptions();this.parseOptions();this.render()},template:function(){return $rql.ui.templates("checkbox-list")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var n=this.config;n.IsRequired=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly;n.ElementId=this.elementId;n.IsDesktop=this.isDesktop();this.$.empty().append(this.template().render(n));this.on({customCheckClick:this.onCustomCheckClick});this.widgetize();this.adjustOptionLabels()},getMargins:function(t){var i=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(t,null):t.currentStyle,r=document.defaultView&&document.defaultView.getComputedStyle?!0:!1,u={marginLeft:parseFloat(r?i.marginLeft:n.css(t,"marginLeft"))||0,marginRight:parseFloat(r?i.marginRight:n.css(t,"marginRight"))||0};return{marginRight:u.marginRight,marginLeft:u.marginLeft}},adjustOptionLabels:function(){var i,t;this.config.HasOptionHeaders&&(i=this.$.find("label[hid]"),t=this,i.each(function(i,r){var o=n(r).attrs().hid,u=t.$.find($f("label[uid='{0}']",o)),f=u.outerWidth(),e=t.getMargins(u[0]);n(r).css({width:f+"px","max-width":f+"px","margin-left":e.marginLeft,"margin-right":e.marginRight})}));this.config.HasOptionFooters&&(i=this.$.find("label[fid]"),t=this,i.each(function(i,r){var o=n(r).attrs().fid,u=t.$.find($f("label[uid='{0}']",o)),f=u.outerWidth(),e=t.getMargins(u[0]);n(r).css({width:f+"px","max-width":f+"px","margin-left":e.marginLeft,"margin-right":e.marginRight})}))},parseOptions:function(){var t=this.config,l=this.config.ChoiceOptions,a={Columns:[]},r,h,c,f,i,o,v,s,u,e;if(t.useicon&&(t.RenderAsGroup=!0),l&&(r=[],u=l.where(function(n){return n.NodeName==="option"}),u.map(function(n){var i={},u;n.Attributes.map(function(n){i[n.n.toProperCase()]=n.v});u=t.DefaultValues.contains(i.Id);u&&(i.IsDefault=!0);i.IsChecked=i.Value===$rql.safeHtmlDecode(i.OptionValue)||u;i.ChoiceId=t.Id;i.ContextName=t.ContextName;(i.OptionHeader||i.OptionFooter)&&(i.UID=$rql.newId(),i.HID=i.UID,i.FID=i.UID,i.OptionHeader&&(t.HasOptionHeaders=!0),i.OptionFooter&&(t.HasOptionFooters=!0));(t.Next||i.Next!=="")&&(i.HasNext=!0,i.Next=i.Next||t.Next);(t.ContextIsReadOnly||typeof i.ReadOnlyWhen!="undefined"&&i.ReadOnlyWhen==="true")&&(i.OptionReadOnly=!0);i.UnCheckedCssStyle=(t.UiStyleUnChecked||"")+" "+(i.OptionUiStyleUnChecked||"");i.CheckedCssStyle=(t.UiStyleChecked||"")+" "+(i.OptionUiStyleChecked||"");i.StateCss=i.IsChecked?i.CheckedCssStyle:i.UnCheckedCssStyle;i.IconStateCss=i.Icon?i.Icon:i.IsChecked?i.IconChecked||"":i.IconUnChecked||"";r.push(i)}),r.length>0)){for(c=[],t.ColumnsUiStyle&&(c=t.ColumnsUiStyle.splitAndTrim(",")),h=t.Columns>0?t.Columns:t.Direction&&t.Direction==="Horizontal"?r.length:t.Rows===0?1:Math.ceil(r.length/t.Rows),i={Columns:new Array(h)},o=0;o<r.length;o++)f=o%h,i.Columns[f]||(i.Columns[f]={Rows:[]}),i.Columns[f].Rows.push(r[o]),i.Columns[f].ColumnUiStyle=c[f];if(i.Columns.clean(undefined),t.RenderAsGroup)for(v=i.Columns[0].Rows.length,i.OptionRows=[],s=0;s<v;s++){for(u=[],e=0;e<i.Columns.length;e++)i.Columns[e].Rows[s]&&(u.push(i.Columns[e].Rows[s]),u[u.length-1].ColumnUiStyle=i.Columns[e].ColumnUiStyle);i.OptionRows.push({Options:u})}n.extend(a,i)}n.extend(this.config,a)},parseUiOptions:function(){var i=this.config,t;$rql.api.uiVersion<=2||!i.UiOptions||(t=i.UiOptions.parseOptionsAsObject(),t&&t.CheckBoxList)&&n.extend(i,t.CheckBoxList)},onCustomCheckClick:function(t){var i=n(t.currentTarget),u=i.find("input[type='checkbox']"),r=i.find("i");i.removeClass(i.attr("rql-csschecked")+" "+i.attr("rql-cssunchecked"));r.removeClass(r.attr("rql-csschecked")+" "+r.attr("rql-cssunchecked"));i.addClass(u.is(":checked")?i.attr("rql-cssunchecked"):i.attr("rql-csschecked"));r.addClass(u.is(":checked")?r.attr("rql-cssunchecked"):r.attr("rql-csschecked"))}};t.registerClass("$rql.ui.controls.checkboxlist",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.button=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.defaultFloatingToggleIcons={collapsed:"fas fa-ellipsis-v",expanded:"fas fa-ellipsis-h"};var i={UniqueId:$rql.newId(),Empty:!1,ReadOnly:!0,Error:!1,RenderedDefaultButtons:!1};this.config=n.extend(i,t);this.on({dismissmodal:this.dismissModal});this.render()},template:function(){return $rql.ui.templates("button")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},onResize:function(){var t=this;n(window).doTimeout("button_resize",250,function(){var n=t.$.parents("[rql-role='rql-group-buttons']").find("[rql-role='dropdown-btn-container']");n.is(":visible")&&t.renderAsDropdown(n.parent())})},render:function(){var n=this.config,t=$rql.api.uiVersion>2&&n.Form&&n.Form.config&&n.Form.config.Settings&&!n.Form.config.Settings.ShowToolbar,i=$rql.api.uiVersion>2&&!$rql.isUndefined(n.Group)&&n.Group!=="";if(n.RqlArgument&&n.RqlArgument!==""&&n.RqlActionArgument&&delete n.RqlActionArgument,n.IsRequired=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly,n.IsReadOnly=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly,n.ElementId=this.elementId,n.IsDesktop=this.isDesktop(),n.HasUpdateAction=n.RqlAction&&n.RqlAction.toLowerCase()==="update",n.Style==="Link"?n.LinkButton=!0:n.Style==="Floating"&&t?this.buildFloatingButtonModel():i&&this.buildGroupButtonsDropdownModel(),$rql.api.offline&&($rql.api.isIOS||$rql.api.isAndroid)&&(n.Text=$rql.htmlDecode(n.Text)),this.$.empty().append(this.template().render(n)),this.renderDefaultButtons(),n.Style==="Floating"&&t){this.on({toggleSpeeddial:this.onToggleSpeeddial});this.renderFloatingButtons()}else i&&this.renderGroupButtonsDropdown();if(n.RqlAction==="openmodal")this.$.find($f("#{0}",n.UniqueId)).on("click",this.openModal);else if(n.RqlAction==="opensheet"&&n.RqlArgument)this.$.find($f("#{0}",n.UniqueId)).on("click",this.openSheet);$rql.events.on("resize",this.onResize);this.widgetize()},renderDefaultButtons:function(){var t=this.config,i,r;t.RenderedDefaultButtons!==!0&&(i=$rql.api.uiVersion>2?t.Form.$.find("div[rql-role='button-container'] div[rql-role='action-buttons']"):t.Form.$.find("div[rql-role='button-container']"),r=t.Form.$.find("div[rql-role='form'] button[id][rql-id][rql-position!=inline]:not([rql-lookup]):not(.grp-button):not([rql-group-btn])"),r.length!==0)&&(r.each(function(t,r){var f=n(r).attrs().id,u=i.children($f("button#{0}",f));u.length>0&&u.remove()}),r.appendTo(i),i.children("button[disabled]").remove(),t.RenderedDefaultButtons=!0)},onToggleSpeeddial:function(n){var i,t=this.$container.find("[rql-role='speeddialToggle']"),r=this.$container.find(".btn-floating").not(t);i=n&&n.state?n.state:t.attr("rql-floating-current-state")==="collapsed"?"expanded":"collapsed";i==="collapsed"?(r.hide(),t.find("i").removeClass(this.config.FloatingExpandedUiStyle).addClass(this.config.FloatingCollapsedUiStyle)):(r.show(),t.find("i").removeClass(this.config.FloatingCollapsedUiStyle).addClass(this.config.FloatingExpandedUiStyle));t.attr("rql-floating-current-state",i);this.saveItemState(i);n.stopPropagation&&n.stopPropagation()},saveItemState:function(n){if(this.config.IsFloatingToggle){var t=$f("{0}:speeddial",this.config.ContextName+this.config.Id);n==null&&(n="collapsed");this.setViewSetting(t,n,!0,!0)}},getItemState:function(){var n=this.$container.find("[rql-role='speeddialToggle']"),t,i;return n.length>0?(t=$f("{0}:speeddial",n.attr("rql-id")),i=this.getViewSetting(t,!0,!0)||"expanded",i):null},buildFloatingButtonModel:function(){var t=this.config,i={FloatingButton:!0,Button:!0,IsInline:!0,IconButton:!1,ImageButton:!1,FloatingCollapsedUiStyle:t.FloatingCollapsedUiStyle||this.defaultFloatingToggleIcons.collapsed,FloatingExpandedUiStyle:t.FloatingExpandedUiStyle||this.defaultFloatingToggleIcons.expanded};t.FloatingDefaultState&&t.FloatingDefaultState.toLowerCase()==="expanded"?i.FloatingExpanded=!0:i.FloatingCollapsed=!0;t.IsFloatingToggle&&(i.RqlAction="toggleSpeeddial",i.FloatingCurrentState=i.FloatingDefaultState);t.FloatingCollapsedUiStyle=i.FloatingCollapsedUiStyle;t.FloatingExpandedUiStyle=i.FloatingExpandedUiStyle;n.extend(t,i)},renderFloatingButtons:function(){var n=this.$container||this.$.parent().find("[rql-role='spd-container']"),t,i;if(n.length===0&&(n=this.buildFloatingButtonsContainer(),this.$.parent().prepend(n)),this.$container=n,t=n.find("[rql-role='speeddialToggle']"),t.length>0?this.$.insertBefore(t.closest("[rql-control]")):this.$.appendTo(n),!this.config.IsFloatingToggle&&t.length>0){i=this.getItemState()||t.attr("rql-floating-current-state")||"collapsed";this.onToggleSpeeddial({state:i})}},buildFloatingButtonsContainer:function(){return n("<div/>",{"class":"fixed-action-btn speeddial d-flex flex-column","rql-role":"spd-container"})},buildGroupButtonsDropdownModel:function(){var i=this.config,t={Button:!1,IconButton:!1,ImageButton:!1};this.config.Style==="Dropdown"&&(t.DropdownButtons=!0);this.$.parent().find("[rql-role='dropdown-btn-container']").length===0&&(t.RenderAsButton=!0,t.FirstDropdown=!0);this.config.Group!==""&&this.config.Style!=="Dropdown"&&(t.RenderAsButton=!0);n.extend(i,t)},renderGroupButtonsDropdown:function(){var r=function(){return n($rql.ui.templates("button").render({GroupButtonTemplate:!0}))},t=this.$container||this.$.parent().find("[rql-role='dropdown-btn-container']"),i;t.length===0?(t=r(),t.insertBefore(this.$),this.$.appendTo(t.find("[rql-role='dropdown-btn-container']"))):this.config.Style==="Dropdown"?(i=t.find('[rql-role="dropdown-items-container"]'),i.append(this.$)):t.parent().append(this.$);t.find("[rql-action='toggleDropup']").on("click",this.onToggleDropup)},renderAsDropdown:function(t){var i=t.find("span[rql-controlgroup]"),r=t.parents("[rql-role='rql-group-buttons']").find("[rql-group-btn]");i.find(".rql-split-button").length>0||(t.parents("[rql-role='rql-group-buttons']").applyOverlay(!1),t.parents("[rql-role='rql-group-buttons']").find(".rql-drop-up-container").css("height","0"),this.toggleButtonDropdownIcon(!1),r.each(function(t,r){var u=n(r),e=u.attr("class"),f=u.attr("rql-css-toggle");u.attr("class",f);u.attr("rql-css-toggle",e);f.indexOf("rql-split-button")>-1?i.filter($f("span[rql-button-id='{0}']",u.attr("id"))).prepend(u):i.filter($f("span[rql-button-id='{0}']",u.attr("id"))).append(u)}))},renderAsDropup:function(t){var r=this,i,u;if(t.find("[rql-btn-group]").length===0){if(t.removeAttr("style"),t.css({"margin-top":-n(window).height()}),i=this.$.parents("[rql-role='rql-group-buttons']").find("[rql-btn-group]"),i.length===0)return;u=i.hasClass("dropup-btn")?"dropup":"dropdown";i.each(function(i,r){var u=n(r),f=u.attr("class"),e=u.attr("rql-css-toggle");u.attr("class",e);u.attr("rql-css-toggle",f);u.appendTo(t)});t.attr("rql-container-height",t.height())}this.$.parents("[rql-role='rql-group-buttons']").applyOverlay(!0,null,"<div/>",{"background-color":"#000",opacity:"0.5","z-index":1,bottom:"0",right:"0",height:"",width:"",position:"fixed"},function(){r.$.parents("[rql-role='rql-group-buttons']").applyOverlay(!1);r.toggleButtonDropdownIcon(!1);t.animate({height:"0"},100)});t.css({"margin-top":"",height:0,position:"fixed"}).animate({height:t.attr("rql-container-height")},100);r.toggleButtonDropdownIcon(!0)},onToggleDropup:function(t){var i=n(t.currentTarget).siblings('[rql-role="dropup-container"]');this.renderAsDropup(i)},toggleButtonDropdownIcon:function(n){var i=this.$.parents("[rql-role='rql-group-buttons']"),t=i.find('[rql-action="toggleDropup"] i'),r=i.find('[rql-role="dropup-container"]');t.length>0&&(n?t.removeClass("fa-ellipsis-v").addClass("fa-ellipsis-h"):t.removeClass("fa-ellipsis-h").addClass("fa-ellipsis-v"))},openModal:function(t){var i,r;t.preventDefault();t.stopImmediatePropagation();i=/ModalId=(.+?)(?:&.+?)?$/ig.exec(this.config.RqlActionModalId);i&&i.length>1&&(this.config.Form?this.config.Form.showModal(n(t.currentTarget),i[1]):(r=this.$.closest("#mainViewContainer").find("#"+i[1]),$rql.ui.showModal(r)))},openSheet:function(n){n.preventDefault();n.stopImmediatePropagation();this.openRightSheetView(null,this.config.RqlArgument)},dismissModal:function(){var n,t;this.config.Form?this.config.Form.hideModal():this.config.RqlActionModalId&&(n=/ModalId=(.+?)(?:&.+?)?$/ig.exec(this.config.RqlActionModalId),n&&n.length>1&&(t=this.$.closest("#mainViewContainer").find("#"+n[1]),t.modal("hide")))}};t.registerClass("$rql.ui.controls.button",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.sheetbutton=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var i={ViewType:"Form",ContentName:t.AppId+"."+t.ViewId,ContentViewType:"Form",ContentViewStoreId:t.StoreId,UpdatableProps:{}};this.config=n.extend(i,t);this.$pageContainer=this.$.closest('[rql-role="page-container"]');this.$mobileIconsContainer=t.$mobileIconsContainer;this.config.ElementId=this.config.Id.replace(".","_");this.config.DefaultProps={Icon:t.Icon,IconUiStyle:t.IconUiStyle,IconDescription:t.IconDescription,IconDescriptionUiStyle:t.IconDescriptionUiStyle,ContentName:t.AppId+"."+t.ViewId,ContentViewType:"Form",ContentViewStoreId:t.StoreId};this.render()},dispose:function(){this.off();this.$.off();$rql.events.off("resize",this.onResize);this.$mobileIconsContainer.find($f("#{0}_mobile",this.config.ElementId)).off();t.callBaseMethod(this,"dispose")},initializeUpdateProps:function(){this.config.UpdatableProps={}},bindEvents:function(){this.on({openSheet:this.onOpenSheet,closeSheet:this.onCloseSheet});$rql.events.on("resize",this.onResize)},unBindEvents:function(){this.off();$rql.events.off("resize",this.onResize)},onResize:function(){var n=this;n.renderMobileButton()},render:function(){this.config.RenderIcons=!0;this.config.RenderContent=!0;this.$.empty().append($rql.ui.templates("sheet-button").render(this.config));this.$sheetContainer=this.$.closest(".sheet-right");this.$buttonContainer=this.$.find('[rql-role="sheet-buttons-container"]');this.$contentContainer=this.$.find('[rql-role="sheet-content-container"]');this.$viewContainer=this.$.find('[rql-role="sheet-view-content"]');this.bindEvents();this.widgetize();this.$pageContainer.hasClass("sheet-close")||this.$pageContainer.hasClass("sheet-open")||(this.$pageContainer.addClass("sheet-close"),this.$sheetContainer.addClass("sheet-close"));this.renderMobileButton();this.setButtonVisibility();this.refreshPromise&&this.refreshPromise($f("{0} has done rendering.",this.config.Id))},refresh:function(t,i){var e,o,s;t&&(this.refreshPromise=t);var r=this.config,f=n.extend({},r.DefaultProps,r.UpdatableProps),h=this.setIconProps(f),u=this.setContentProps(f);u||(u=r.Context!==i&&i&&r.Context&&(i.AppName!==r.Context.AppName||i.StoreId!==r.StoreId));r.Context=i;u&&(this.$sheetContainer.hasClass("sheet-open")?this.onCloseSheet():this.$contentContainer.hide(),r.RefreshContent=!0);h&&(e=n.extend({},this.config,{RenderContent:!1}),this.$buttonContainer.empty().html(n($rql.ui.templates("sheet-button").render(e)).html()),o=$rql.ui.checkMediaBreakpoint("md","greater"),!o&&this.$mobileIconsContainer&&(s=this.$mobileIconsContainer.find($f("#{0}_mobile",this.config.ElementId)),s.empty().html(n(this.getMobileIconHtml()).html())),this.setButtonVisibility());this.refreshPromise&&this.refreshPromise($f("{0} has done rendering.",this.config.Id))},toggleIconVisibility:function(n){this.config.IconVisible=n;!n&&this.$sheetContainer.hasClass("sheet-open")&&this.onCloseSheet();this.setButtonVisibility()},setButtonVisibility:function(){this.$sheetContainer.hasClass("sheet-open")||($rql.isUndefined(this.config.IconVisible)||this.config.IconVisible===!0?(this.$buttonContainer.show(),this.$mobileIconsContainer.find($f("#{0}_mobile",this.config.ElementId)).show()):(this.$buttonContainer.hide(),this.$mobileIconsContainer.find($f("#{0}_mobile",this.config.ElementId)).hide()))},getMobileIconHtml:function(){var t=n.extend({},this.config,{ShowOnTop:!0,HasDescription:this.config.IconDescription&&this.config.IconDescription!==""});return $rql.ui.templates("sheet-button").render(t)},renderMobileButton:function(){var t=this,i=$rql.ui.checkMediaBreakpoint("md","greater");if(!i&&t.$mobileIconsContainer&&t.$mobileIconsContainer.find($f("#{0}_mobile",t.config.ElementId)).length===0){t.$mobileIconsContainer.append(n(t.getMobileIconHtml()));t.$mobileIconsContainer.find($f("#{0}_mobile",t.config.ElementId)).on("click",t.onOpenSheet)}},onOpenSheet:function(t){var f=this,i,u,r;t?(t.preventDefault(),t.stopImmediatePropagation(),i=n(t.currentTarget).attr("rql-role")==="mobile-sheet-button"):i=this.$mobileIconsContainer.is(":visible");i=i||$rql.ui.checkMediaBreakpoint("lg","lesser");this.$sheetContainer.removeClass("sheet-close").addClass("sheet-open");this.$pageContainer.removeClass("sheet-close").addClass("sheet-open");this.$contentContainer.show();i&&($rql.ui.stopScrolling(),this.$pageContainer.applyOverlay(!0,null,"<div/>",{"background-color":"#000",opacity:"0.5","z-index":1e3,bottom:"0",right:"0",height:"",width:"",position:"fixed"},function(n){f.onCloseSheet(n);$rql.ui.startScrolling()}));u=this.$.attr("always-refresh");this.content&&(u||this.config.RefreshContent||this.config.Context&&this.config.Context.ViewArguments)&&(this.config.RefreshContent&&delete this.config.RefreshContent,this.disposeContent(),this.$contentContainer.show());($rql.isUndefined(this.content)||!this.content.rendered)&&(r={Id:this.config.ElementId,AppName:this.config.AppId,ViewName:this.config.ViewId,Type:this.config.ViewType,StoreId:this.config.StoreId||"_Local",SheetControl:this,ViewTitleContainer:this.$contentContainer.find('[rql-role="sheet-title"]'),IsMobileSheet:i,ViewArguments:this.config.Context?this.config.Context.ViewArguments||{}:{}},this.config.Context&&(r.ViewArguments["RQL.Sheet.Context.AppName"]=this.config.Context.AppName),this.config.ViewType==="Form"?(n.extend(r,{IsInPlace:!0,IsInSheet:!0}),this.content=new $rql.ui.controls.form(this.$viewContainer,r),this.content.refresh({ChainContextId:this.config.Context?this.config.Context.StoreId:null})):this.config.ViewType==="Queue"&&(n.extend(r,{PageFilters:null,PageIndex:0,PageSize:0,UseDefaultFilter:!0}),this.content=new $rql.ui.controls.queue(this.$viewContainer,r),this.content.show()))},onCloseSheet:function(n){n&&(n.preventDefault(),n.stopImmediatePropagation());this.$sheetContainer.removeClass("sheet-open").addClass("sheet-close");this.$pageContainer.removeClass("sheet-open").addClass("sheet-close");this.$contentContainer.hide();this.$pageContainer.applyOverlay(!1);$rql.ui.startScrolling()},setIconProps:function(n){var r=this.config,i=!1;for(var t in n)t.startsWith("Icon")&&(i=i||r[t]!=n[t],r[t]=t==="IconVisible"?n[t]===!0?!0:n[t].toBool():n[t]);return i},setContentProps:function(n){var t=this.config,r=!1,i,u;for(i in n)i.startsWith("Content")&&(r=r||t[i]!=n[i],t[i]=n[i]);return r&&(u=t.ContentName.split("."),u.length===2&&(this.content&&this.disposeContent(),t.AppId=u[0],t.ViewId=u[1],t.ViewType=t.ContentViewType,t.StoreId=t.ContentViewStoreId)),r},disposeContent:function(){this.content.dispose();this.content.rendered=!1;this.$contentContainer.replaceWith($rql.ui.templates("sheet-button").render({RenderContent:!0}));this.$contentContainer=this.$.find('[rql-role="sheet-content-container"]');this.$viewContainer=this.$.find('[rql-role="sheet-view-content"]')},toggleButtonsVisibility:function(n,t){for(var i=0;i<n.length;i++)n[i].toggleIconVisibility(t);this.$mobileIconsContainer&&this.$mobileIconsContainer[t?"show":"hide"]();this.hideShowSheet(n)},hideShowSheet:function(n){var t=n.any(function(n){return n.config.IconVisible===!0});t?(this.$pageContainer.addClass("sheet-close"),this.$sheetContainer.addClass("sheet-close")):(this.closeAll(),this.$pageContainer.removeClass("sheet-close sheet-open"),this.$sheetContainer.removeClass("sheet-close sheet-open"))},isSheetVisible:function(){return this.$pageContainer.hasClass("sheet-close")||this.$pageContainer.hasClass("sheet-open")},closeAll:function(){this.$sheetContainer.removeClass("sheet-open").addClass("sheet-close");this.$pageContainer.removeClass("sheet-open").addClass("sheet-close");this.$sheetContainer.find("div[rql-role='sheet-content-container']").hide();this.$pageContainer.applyOverlay(!1);$rql.ui.startScrolling()}};t.registerClass("$rql.ui.controls.sheetbutton",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.radiobuttonlist=function(n,i){i.SkipRender||t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.parseOptions();this.parseUiOptions();this.render()},template:function(){return $rql.ui.templates("radiobutton-list")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var t=this.config,u=t.appendtopreviousgroup==="true",i,r;t.IsRequired=!t.Optional&&!t.ReadOnly&&!t.ContextIsReadOnly;t.ElementId=this.elementId;t.IsDesktop=this.isDesktop();u&&(t.RenderAsGroup=!0);this.$.empty().append(this.template().render(t));this.widgetize();this.adjustOptionLabels();u&&(i=this.$.closest("[rql-groupcontrols]").find(".control-wrapper:first .btn-group").last(),i.length>0&&(r=this.$.find("label"),r.length>0&&n(r[0]).attr("optionGroup")?(i.addClass("with-option-dropdown"),i.append(r.closest(".btn-group.responsive-group").children())):i.append(r),this.$.remove()))},onRendered:function(){this.$.on("click","label[optionGroup] input[type='radio']",this.subOptionSelected)},getMargins:function(t){var i=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(t,null):t.currentStyle,r=document.defaultView&&document.defaultView.getComputedStyle?!0:!1,u={marginLeft:parseFloat(r?i.marginLeft:n.css(t,"marginLeft"))||0,marginRight:parseFloat(r?i.marginRight:n.css(t,"marginRight"))||0};return{marginRight:u.marginRight,marginLeft:u.marginLeft}},adjustOptionLabels:function(){var i,t;this.config.HasOptionHeaders&&(i=this.$.find("label[hid]"),t=this,i.each(function(i,r){var o=n(r).attrs().hid,u=t.$.find($f("label[uid='{0}']",o)),f=u.outerWidth(),e=t.getMargins(u[0]);n(r).css({width:f+"px","max-width":f+"px","margin-left":e.marginLeft,"margin-right":e.marginRight})}));this.config.HasOptionFooters&&(i=this.$.find("label[fid]"),t=this,i.each(function(i,r){var o=n(r).attrs().fid,u=t.$.find($f("label[uid='{0}']",o)),f=u.outerWidth(),e=t.getMargins(u[0]);n(r).css({width:f+"px","max-width":f+"px","margin-left":e.marginLeft,"margin-right":e.marginRight})}))},parseOptions:function(t){var w,h,k,o,c,l,r;t||(t=this.config);var a=t.Choice,v=t.ChoiceOptions,y={OptionRows:[]},s=[];if(a&&v){var p=a,e={},i=[],d=v;if(p.length<1)return;w=["id","header","uiStyle","columns"];p[0].Attributes.map(function(n){w.contains(n.n)||(e[n.n.toProperCase()]=n.v)});n.extend(t,e);d.map(function(n){var t={};n.Attributes.map(function(n){t[n.n.toProperCase()]=n.v});i.push(t)});var f=!1,b="",u=[];if(i.map(function(n){var r="",o="",i;n.OptionUiStyleChecked?r=n.OptionUiStyleChecked:e.UiStyleChecked&&(r=e.UiStyleChecked);n.OptionUiStyleUnChecked?o=n.OptionUiStyleUnChecked:e.UiStyleChecked&&(o=e.UiStyleUnChecked);(n.OptionHeader||n.OptionFooter)&&(n.UID=$rql.newId(),n.HID=n.UID,n.FID=n.UID,n.OptionHeader&&(t.HasOptionHeaders=!0),n.OptionFooter&&(n.OptionFooter=$rql.htmlDecode(n.OptionFooter),t.HasOptionFooters=!0,n.FooterShowAsDescription=t.OptionsFooterShowAsDescription));n.UiStyle=t.UiStyle;n.RqlAction=t.RqlAction;t.IsDefault&&(n.IsDefault=t.IsDefault);!n.Next&&t.Next&&(n.Next=t.Next);t.ReadOnly&&(n.ReadOnly=t.ReadOnly);(t.ContextIsReadOnly||typeof n.ReadOnlyWhen!="undefined"&&n.ReadOnlyWhen==="true")&&(n.OptionReadOnly=!0);n.IsSelected=n.Value&&n.Value===$rql.safeHtmlDecode(t.Value);t.OptionImageSize&&(n.OptionImageSize=t.OptionImageSize);t.IsCustomUiStyle&&(n.IsCustomUiStyle=!0,n.CustomCheckedUncheckedStyle=n.IsSelected?r:o,n.CustomUiChecked=r,n.CustomUiUnChecked=o);f&&(n.SeparatorBefore=!0,f=!1);n.SeparatorAfter&&(f=!0);n.OptionGroup&&(n.OptionGroup!==b?(u.length>0&&s.push({Name:n.OptionGroup,Items:u}),n.IsSelected&&n.OptionGroupDisplaySelected?n.DisplayText=n.OptionGroupDisplaySelected==="Text"?n.Text:n.OptionGroupDisplaySelected==="Value"?n.Value:n.OptionGroupDisplaySelected:!n.IsSelected&&n.OptionGroupDisplayUnSelected&&(n.DisplayText=n.OptionGroupDisplayUnSelected),u.length=0,b=n.OptionGroup):(n.IsSubItem=!0,n.IsSelected&&(i=u.first(function(t){return t.OptionGroup===n.OptionGroup}),i&&(i.OptionGroupDisplaySelected?i.DisplayText=i.OptionGroupDisplaySelected==="Text"?n.Text:i.OptionGroupDisplaySelected==="Value"?n.Value:i.OptionGroupDisplaySelected:delete i.DisplayText))),u.push(n))}),u.length>0&&s.push({Name:u[0].OptionGroup,Items:u}),i=i.filter(function(n){return!n.IsSubItem}),i.length>0)for(h=t.Columns>0?t.Columns:t.Direction&&t.Direction==="Horizontal"?i.length:t.Rows===0?1:Math.ceil(i.length/t.Rows),k=Math.ceil(12/parseInt(h)),o=0,f=!1;o<i.length;){for(c={Options:[]},l=0;l<h;l++){if(o>=i.length)break;r={ColumnSpan:k};n.extend(r,i[o++]);r.OptionGroup?(f=r.SeparatorAfter,n.extend(r,{SubOptions:s.first(function(n){return n.Name===r.OptionGroup}).Items}),r.SubOptions.any(function(n){return n.IsSelected})&&(r.IsSelected=!0)):f&&(r.SeparatorBefore=!0,f=!1);c.Options.push(r)}y.OptionRows.push(c)}n.extend(t,y)}},subOptionSelected:function(t){n(t.currentTarget).parents("ul").addClass("hide")},parseUiOptions:function(t){if(t||(t=this.config),!($rql.api.uiVersion<=2)&&t.UiOptions){var i=t.UiOptions.parseOptionsAsObject();i&&i.RadioButtonList&&n.extend(t,i.RadioButtonList)}}};t.registerClass("$rql.ui.controls.radiobuttonlist",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.dropdownlist=function(n,i){i.SkipRender||t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.parseUiOptions(this.config);this.parseOptions(this.config);this.render()},template:function(){return $rql.ui.templates("dropdown-list")},dispose:function(){this.off();this.$.off();$rql.api.uiVersion>2&&this.$.find(".rql-select2").off();t.callBaseMethod(this,"dispose")},render:function(){var i=this,t=this.config;if(t.IsRequired=!t.Optional&&!t.ReadOnly&&!t.ContextIsReadOnly,t.ElementId=this.elementId,t.IsDesktop=this.isDesktop(),this.$.empty().append(this.template().render(t)),this.widgetize(),$rql.api.uiVersion>2&&this.config.SelectOptions.any(function(n){return!$rql.isUndefined(n.Tooltip)}))this.$.find($f("select[rql-id='{0}']",this.config.Id)).on("select2:selecting",function(){n($f("ul#{0}-results li",i.$.find($f("select[rql-id='{0}']",t.Id)).data("select2").id)).tooltip("dispose")}).on("select2:select",function(){i.$.find($f("select[rql-id='{0}']",t.Id)).data("select2").$container.find("span.select2-selection--single span[role='textbox']").tooltip("dispose").tooltip()}).on("select2:open",function(){window.waitfor(function(){return n($f("ul#{0}-results li",i.$.find($f("select[rql-id='{0}']",t.Id)).data("select2").id)).length},t.SelectOptions.length,100,0,"Applying tooltips to DropdownList options",function(){n($f("ul#{0}-results li",i.$.find($f("select[rql-id='{0}']",t.Id)).data("select2").id)).tooltip()},20)})},onRendered:function(){$rql.api.uiVersion>2&&this.handleSelectedOptionDisplay()},handleSelectedOptionDisplay:function(){this.config.SelectedOption&&this.config.DisplaySelected?this.config.ReadOnly?this.$.find("[rql-role='readonlyvalue']").text(this.config.DisplaySelected):this.$.find(".select2-container .select2-selection__rendered").text(this.config.DisplaySelected):!this.config.SelectedOption&&this.config.DisplayUnselected&&(this.config.ReadOnly?this.$.find("[rql-role='readonlyvalue']").text(this.config.DisplayUnselected):this.$.find(".select2-container .select2-selection__rendered").text(this.config.DisplayUnselected))},parseOptions:function(n){var i=n.Next,r=n.ChoiceOptions,u,t,f;r&&(u=r,t=[],u.map(function(n){var i={};n.Attributes.map(function(n){i[n.n.toProperCase()]=n.v});t.push(i)}),f=$rql.safeHtmlDecode(n.Value),t.map(function(t){!i&&t.Next&&(i=!0);$rql.safeHtmlDecode(t.Value)===f&&(n.SelectedOption=!0,n.Text=t.Text,t.Selected=!0);!t.Next&&n.Next&&(t.Next=n.Next)}),n.Optional&&!t.any(function(n){return n.Value===""})?t.insertAt(0,{Value:"",Text:n.NoneText}):t.insertAt(0,{Value:"",Text:n.SelectText}),i&&(n.HasNext=!0),n.SelectOptions=t)},parseUiOptions:function(n){n.Options&&(n.Options=n.Options.parseOptionsAsObject(),n.Options.DropdownMenu&&(n.Options.DropdownMenu.nonetext&&(n.NoneText=n.Options.DropdownMenu.nonetext),n.Options.DropdownMenu.selecttext&&(n.SelectText=n.Options.DropdownMenu.selecttext)))}};t.registerClass("$rql.ui.controls.dropdownlist",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.dropdownmultiselect=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.parseUiOptions(this.config);this.parseOptions();this.config.Form.on("collectValues",this.onCollectValues);this.render()},template:function(){return $rql.ui.templates("dropdown-multiselect")},dispose:function(){$rql.events.off("resize",this.onResize);this.config.Form.off("collectValues",this.onCollectValues);this.off();this.$.off();t.callBaseMethod(this,"dispose");$rql.api.uiVersion>2&&(this.$.find(".rql-select2").off(),this.$.find(".rql-select2").select2("destroy"))},onCollectValues:function(n){var t=this.config,r,i;!t.ReadOnly&&t.SelectOptions&&(r=t.ContextName+"__dropdownmultiselect_"+t.Id,i=this.getSelectedValues(),n.values.add(r,i?"|"+i:""))},render:function(){var n=this.config;n.IsRequired=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly;n.ElementId=this.elementId;n.IsDesktop=this.isDesktop();this.$.empty().append(this.template().render(n));this.$select=this.$.find($f("select[rql-id='{0}']",n.ContextId));this.widgetize()},onResize:function(){$rql.api.isAndroid||n.doTimeout("dropdownMultiselect.resize",250,function(){n(document.body).find(" > span.select2-container.select2-container--open").remove()})},onRendered:function(){$rql.events.on({resize:this.onResize});this.renderMultiSelect()},parseOptions:function(){var n=this.config,i=n.Next,u=this.config.ChoiceOptions,f,t,e,r;u&&(f=u,t=[],f.map(function(n){var i={};n.Attributes.map(function(n){i[n.n.toProperCase()]=n.v});t.push(i)}),e=$rql.safeHtmlDecode(n.Value).split(","),r=[],t.map(function(t){!i&&t.Next&&(i=!0);e.contains(t.Value)&&(n.SelectedOption=!0,t.Selected=!0,r.push(t.Text));!t.Next&&n.Next&&(t.Next=n.Next)}),$rql.api.uiVersion>2&&t.insertAt(0,{Value:"",Text:n.SelectText,Disabled:!0}),i&&(n.HasNext=!0),n.Text=r.join(", "),n.SelectOptions=t)},renderMultiSelect:function(){var t=this,r=t.$.find("[rql-role='multi-select-dropdown']"),i={tokenSeparators:[","],allowClear:!0,multiple:!0,closeOnSelect:!1,placeholder:{id:"null"},dropdownParent:t.$,templateResult:function(t){var i=n("<span role='item-wrapper'><\/span>"),r=n("<i class='icon-check-empty medium'><\/i>");return i.text(t.text),t.id!=null&&(i.prepend(r),t.selected?r.removeClass("icon-check-empty").addClass("icon-check"):r.removeClass("icon-check").addClass("icon-check-empty")),i}};$rql.api.uiVersion>2&&(n.extend(i,{theme:"material",width:"100%",dropdownCssClass:"select2-container-material-dropdown"}),this.$.closest("[rql-type^=List]").length>0&&(i.dropdownParent=n(document.body)));r.select2(i).on("select2:select",t.onMultiselectItem).on("select2:unselect",t.onMultiselectItem);this.getDropdownState()==="open"&&r.data("select2").open()},onMultiselectItem:function(t){var i=n(t.currentTarget),r=t.type==="select2:select";i.parent().find(".select2-search__field").val("");n("li[role=treeitem] span[role=item-wrapper]").each(function(){n(this).text()===t.params.data.text&&(r?n(this).find("i").removeClass("icon-check-empty").addClass("icon-check"):n(this).find("i").removeClass("icon-check").addClass("icon-check-empty"))});i.data("select2").close();i.data("select2").open();this.saveDropdownState(i)},getDropdownState:function(){var t="",n;return this.config.Form.getViewSetting(this.config.Id)&&(n=this.config.Form.getViewSetting(this.config.Id),n.multiSelectState&&(n.multiSelectState==="open"&&(t=n.multiSelectState),this.config.Form.setViewSetting(this.config.Id,{}))),t},saveDropdownState:function(n){n.attr("rql-action")&&n.attr("rql-action")==="update"&&this.config.Options&&this.config.Options.DropDownMultiSelect&&this.config.Options.DropDownMultiSelect.keepopenafterpostback==="true"&&this.config.Form.setViewSetting(this.config.Id,{multiSelectState:"open"})},getSelectedValues:function(){var n,u,t;if(!this.$select)return"";var i=[],f=this.config.SelectOptions,r=this.$select.val();if(r)for(n=0;n<r.length;n++)u=r[n],t=f.first(function(n){return n.Value===u}),t&&(i.push(t.Value),i.push(t.Text));return i.join("|")},parseUiOptions:function(n){n.Options&&(n.Options=n.Options.parseOptionsAsObject(),n.Options.DropdownMenu&&(n.Options.DropdownMenu.nonetext&&(n.SelectText=n.Options.DropdownMenu.nonetext),n.Options.DropdownMenu.selecttext&&(n.SelectText=n.Options.DropdownMenu.selecttext)))}};t.registerClass("$rql.ui.controls.dropdownmultiselect",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!1,Error:!1},t=$rql.ui.controls.dropdownselect=function(n,i){i.SkipRender||t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},i,t);this.prepare(this.config);this.render()},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},prepare:function(n){var t,i;n.IsRequired=!n.Optional&&!n.ReadOnly&&!n.ContextIsReadOnly;n.ElementId=this.elementId;n.IsDesktop=$rql.ui.isDesktop();t=n.ChoiceOptions||[];n.SelectOptions=t;n.SelectedOption=!!n.Text;n.HasNext=!!n.Next||t.any(function(n){return!!n.Next});n.FooterTooltipHtml&&(n.FooterTooltipHtml=$rql.javascriptStringDecode(n.FooterTooltipHtml));i=t.any(function(n){return!n.Value});i||t.insertAt(0,{Value:"",Text:n.Optional?$rql.i18n.strings.SelectNone:$rql.i18n.strings.SelectItem})},template:function(){return $rql.ui.templates("dropdown-select")},render:function(){var n=this.config;this.$.empty().append(this.template().render(n));this.widgetize()}};t.registerClass("$rql.ui.controls.dropdownselect",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.shufflecolumnsdialog=function(n){var i=$rql.ui.div("rqlListDialog").empty();t.initializeBase(this,[i.get(0),n])};t.prototype={initialize:function(n){this.header=n?n.header:undefined;this.items=n?n.items:[];this.hasGroups=n?n.hasGroups:!1},render:function(){return this.dismiss(),this.$.html($rql.ui.templates("shuffle-columns-dialog").render({items:this.items,header:this.header,hasGroups:this.hasGroups})),this.on({reset:this.onReset,top:this.onMove,up:this.onMove,down:this.onMove,bottom:this.onMove}).widgetize(),this},onRendered:function(){this.$list=this.$.find("[rql-role='list']");this.$items=this.$list.find("[rql-role='item']");this.$top=this.$.find("[rql-action='top']");this.$up=this.$.find("[rql-action='up']");this.$down=this.$.find("[rql-action='down']");this.$bottom=this.$.find("[rql-action='bottom']");this.$ok=this.$.find("#btnOK");this.hasGroups||this.$list.sortable({axis:"y",containment:this.$.find("[rql-role='modal']"),cancel:"input",update:this.onSortUpdate});this.$.on("click","[rql-role='chkBtn']",this.onItemToggle);this.$items.on("click",this.onItemClick);this.$ok.prop("disabled",!0);this.$ok.on("click",this.onOKClick);this.$.on("hidden",this.onHidden);$rql.api.uiVersion>2&&this.$.find("div[rql-role='modal']").modal("show");this.enableMoveButtons()},dispose:function(){this.disposing||(this.disposing=!0,this.$.find("div[rql-role='modal']").modal("hide"),this.$list=this.$items=this.$top=this.$ok=this.$up=this.$down=this.$bottom=null,this.$.off("click","[rql-role='chkBtn']"),t.callBaseMethod(this,"dispose"))},changed:function(){this.$ok.prop("disabled",!1)},enableMoveButtons:function(){var t=this.$list.find("[rql-role='item']"),n=this.$selectedItem?t.index(this.$selectedItem):-1,i=n>0,r=n!==-1&&n+1<t.length;this.$top.prop("disabled",!i);this.$up.prop("disabled",!i);this.$down.prop("disabled",!r);this.$bottom.prop("disabled",!r)},onItemClick:function(t){var i=$rql.api.uiVersion>2?"table-active":"active";this.$selectedItem&&this.$selectedItem.removeClass(i);this.$selectedItem=n(t.currentTarget);this.$selectedItem.addClass(i);this.enableMoveButtons()},onMove:function(t){var r=n(t.currentTarget).attr("rql-action"),i=this.$list.find("[rql-role='item']"),u=i.index(this.$selectedItem),f,e,o,s;r==="top"?(f=n(i.get(0)),this.$selectedItem.detach().insertBefore(f)):r==="up"?(e=n(i.get(u-1)),this.$selectedItem.detach().insertBefore(e)):r==="down"?(o=n(i.get(u+1)),this.$selectedItem.detach().insertAfter(o)):r==="bottom"&&(s=n(i.get(i.length-1)),this.$selectedItem.detach().insertAfter(s));this.enableMoveButtons();this.changed()},onSortUpdate:function(){this.changed();this.enableMoveButtons()},onItemToggle:function(){this.changed()},onOKClick:function(){var t,i,n;if(this.items&&this.items.length!==0){for(t=[this.items[0].name],i=this.$list.find("input[name]:checked"),n=0;n<i.length;n++)t.push(i[n].name);this.raise("selected",{columnSet:t.join(",")})}},onReset:function(){this.raise("selected",{columnSet:null})},onHidden:function(){this.disposing||this.dispose()},dismiss:function(){n(".modal-backdrop").remove()}};t.registerClass("$rql.ui.controls.shufflecolumnsdialog",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.mappingcolumnsdialog=function(n){var i=$rql.ui.div("rqlMappingDialog").empty();t.initializeBase(this,[i.get(0),n])};t.prototype={initialize:function(t){this.config=n.extend({},t)},render:function(){return this.dismiss(),this.$.html($rql.ui.templates("mapping-columns-dialog").render(this.config)).widgetize(),this},onRendered:function(){this.$ok=this.$.find("#btnOK");this.$mapping=this.$.find("[rql-id='Data']");this.$ok.on("click",this.onOKClick);this.$.on("hidden",this.onHidden);$rql.api.uiVersion>2&&this.$.find("div[rql-role='modal']").modal("show")},dispose:function(){this.disposing||(this.disposing=!0,this.$.find("div[rql-role='modal']").modal("hide"),this.$.off("click","#chkBtn"),t.callBaseMethod(this,"dispose"))},changed:function(){this.$ok.prop("disabled",!1)},onOKClick:function(){var n=this.$.find("[rql-id='Name']").val(),t=this.$.find("[rql-id='chartId']").val(),i=this.$.find("[rql-id='Access']")[0].checked;this.raise("selected",{mapping:this.$mapping.val(),storeId:this.config.storeId,chartId:t,public:i,name:n})},onReset:function(){this.raise("selected",{mapping:null})},onHidden:function(){this.disposing||this.dispose()},dismiss:function(){n(".modal-backdrop").remove()}};t.registerClass("$rql.ui.controls.mappingcolumnsdialog",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.wbtopicnav=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},t)},dispose:function(){this.$navMenu&&this.$navMenu.smartmenus("destroy");t.callBaseMethod(this,"dispose")},render:function(){var n=this.config,t=n.RenderAsDropdown?$rql.ui.templates("workbook-topic-nav-menu"):$rql.ui.templates("workbook-topic-tree"),i=n.RenderAsDropdown?$rql.ui.templates("workbook-topic-nav-menu-item"):$rql.ui.templates("workbook-topic-tree-item");if(this.config.Topics&&!this.config.Topics.NormalizedForMustache&&(this.config.Topics.CollapsibleId=$rql.newId(),this.config.Topics.IsRootNode=!0,this.config.Topics.SideNavLayout=this.config.SideNavLayout,this.config.Topics.AppTitle=this.config.AppTitle,this.config.Topics.Label=this.createTopicLabel(this.config.Topics),this.buildMenu(this.config.Topics),this.config.Topics.NormalizedForMustache=!0),this.config.SideNavLayout&&(this.$sideNavContainer=this.$.closest('[rql-role="app-side-nav-container"]'),this.$sideNavContainer.length>0&&(this.$sideNav=this.$sideNavContainer.find('[rql-role="app-side-nav-groups"]'),this.$sideNav.hide())),this.$.empty().html(t.render(this.config.Topics,{subtopics:i.html})),this.config.RenderAsDropdown)this.$navMenu=this.$.find("[rql-role='wb-topic-nav-menu']"),this.$navMenu.smartmenus();else this.$.on("click","[rql-role='label']",this.onTopicClick).on("shown.bs.collapse",this.onShown).on("hidden.bs.collapse",this.onHidden).on("click",'[rql-role="showSideNavToggle"]',this.showSideNav);this.widgetize()},buildMenu:function(n){var t=this;n.SubTopics&&n.SubTopics.map(function(n){n.CollapsibleId=$rql.newId();n.Label=t.createTopicLabel(n);n.SubTopics?t.buildMenu(n):n.SubTopics=!1})},findTopicById:function(n,t){var u=this,i,r;if(n){if(!Array.isArray(n)){if(n.Id===t)return n;if(!n.SubTopics)return null;n=n.SubTopics}for(i=0;i<n.length;i++){if(n[i].Id===t)return n[i];if(r=u.findTopicById(n[i].SubTopics,t),r)return r}}},raiseAction:function(n){this.config.raiseAction&&this.config.raiseAction(n)},renderChanges:function(){this.updateChangedTopics(this.config.Topics)},createTopicLabel:function(n){return this.config.LabelTemplate.render(n)},openTopic:function(n,t,i,r){var e=this,u,f;if(r&&(n=r),this.config.RenderAsDropdown)e.$.find(".topic").removeClass("active"),e.$.find($f(".topic[rql-topic='{0}']",n)).addClass("active");else if(u=e.$.find($f("div[rql-node='{0}'].accordion",n)),u.length>0)if(e.$.find("div[rql-role='header']").removeClass("active"),u.find("div[rql-role='header']").first().addClass("active"),u.attr("rql-parentnode"))for(u.hasClass("accordion")&&i&&u.find($f("#{0}_body",u.attr("id"))).collapse("show"),f=u.closest($f("div[rql-node='{0}'].accordion",u.attr("rql-parentnode")));f.length>0;)f.find($f("#{0}_body:not(.show)",f.attr("id"))).collapse("show"),f=f.closest($f("div[rql-node='{0}'].accordion",f.attr("rql-parentnode")));else u.find($f("#{0}_body",u.attr("id"))).collapse(i?"show":"toggle")},onTopicClick:function(t){var i=n(t.currentTarget).attr("rql-node");this.raise("changeTopic",{id:i})},onShown:function(t){var i=n(t.target).siblings("#"+n(t.target).attr("id").replace("_body","_heading"));i.find("[rql-role='toggle-button']").removeClass("fa-chevron-down").addClass("fa-chevron-up")},onHidden:function(t){var i=n(t.target).siblings("#"+n(t.target).attr("id").replace("_body","_heading"));i.find("[rql-role='toggle-button']").removeClass("fa-chevron-up").addClass("fa-chevron-down")},updateIcon:function(n,t){var r=this,u=null,i,f;t?(n.IsRootNode?i=r.$.find($f("ul[rql-role='wb-topic-nav-menu'] > li > ul[rql-topic='{0}']",n.Id)):(i=r.$.find($f("a[rql-action='changeTopic'][rql-topic='{0}']",n.Id)),u=i.closest("li")),f=i.find("div.icon-container").first()):(u=r.$.find($f("#{0}",n.CollapsibleId)),i=r.$.find($f("#{0}_heading",n.CollapsibleId)),f=i.find("div[rql-role='icon-container']"));u&&u.toggle(n.Visible);i.toggleClass("not-visited",!n.IsVisited);f.removeClass($rql.ui.getClassesByPrefix(f.get(0),"wb-")+" hide").addClass(n.IconClass)},refreshIcons:function(n){var i,t;if(Array.isArray(n))for(i=this,t=0;t<n.length;t++)i.updateChangedTopics(n[t],!0)},updateChangedTopics:function(n,t){var i=this,r=this.config.RenderAsDropdown;(n.Changed||t)&&i.updateIcon(n,r);n.SubTopics&&n.SubTopics.map(function(n){n.SubTopics?i.updateChangedTopics(n):(n.Changed||t)&&i.updateIcon(n,r)})},updateSelectedTopicText:function(n){this.$.find("[rql-role='wb-topic-nav-menu'] > li [rql-role='topic-text'] [rql-role='active-topic-text']").html(n?$f("<i class='far fa-arrow-right mr-2'><\/i>{0}",n.Text):"")},select:function(n){this.openTopic(n,null,null,null)},toggleNavs:function(n,t){if(n&&n.length!==0&&!n.is(":visible")&&t&&t.length!==0&&!t.hasClass("animating")&&!n.hasClass("animating")){var r=this,u=r.$.parents('[rql-role="app-side-nav-container"]'),i=u.outerWidth();t.css("position","relative");t.addClass("animating");t.animate({left:-i+"px"},400,function(){t.removeAttr("style");t.removeClass("animating");t.hide();n.css({position:"relative",left:-i+"px"}).show();n.addClass("animating");n.animate({left:"0"},400,function(){n.removeAttr("style");n.removeClass("animating")})})}},showSideNav:function(){this.toggleNavs(this.$sideNav,this.$)},showTopicNav:function(){this.toggleNavs(this.$,this.$sideNav)}};t.registerClass("$rql.ui.controls.wbtopicnav",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.sidenavbase=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(){var t=this,n;this.allStates=[];this.allIcons=[];this.icons={start:"far fa-circle",complete:"fas fa-check",error:"fas fa-exclamation-triangle"};for(n in this.icons)this.icons.hasOwnProperty(n)&&(t.allStates.push(n),t.allIcons.push(t.icons[n]))},dispose:function(){t.callBaseMethod(this,"dispose")},render:function(){var t=this,i=this.config,n;this.$toggleButton=this.$.find("[rql-role='side-nav-toggle']");this.on({toggleSideNav:this.onToggleSideNav});$rql.events.on("resize",this.onResize);n=this.getItemState();this.onToggleSideNav({state:n});this.$navContainer=this.$.find("[rql-role='app-side-nav-menu']")},onResize:function(){var t=this;n.doTimeout("sidenav_resize",250,function(){var n=t.$.find('[rql-role="app-side-nav-container"]');n.length===0&&(n=t.$);t.$toggleButton&&t.$toggleButton.is(":visible")&&n&&n.length>0&&(t.$toggleButton.css({"margin-top":"90px","margin-left":n.width()-18+"px"}),$rql.ui.isElementInView(t.$toggleButton[0])||t.$toggleButton.css("margin-top","10px"))})},onToggleSideNav:function(n){var t=this.$.find('[rql-role="app-side-nav-container"]').addBack('[rql-role="app-side-nav-container"]');t.length!==0&&(n&&n.state?n.state==="expanded"?t.removeClass("dock"):t.addClass("dock"):t.toggleClass("dock"),t.hasClass("dock")?(this.$toggleButton.find("i").removeClass("fa-angle-double-left").addClass("fa-angle-double-right"),this.saveItemState("collapsed")):(this.$toggleButton.find("i").removeClass("fa-angle-double-right").addClass("fa-angle-double-left"),this.saveItemState("expanded")))},saveItemState:function(n){var t=$f("sidenav_{0}",this.config.Id);n==null&&(n="expanded");this.setViewSetting(t,n,!0)},getItemState:function(){var n=$f("sidenav_{0}",this.config.Id);return this.getViewSetting(n,!0)||"expanded"}};t.registerClass("$rql.ui.controls.sidenavbase",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.sidenav=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(i){t.callBaseMethod(this,"initialize");this.config=n.extend({},i)},dispose:function(){t.callBaseMethod(this,"dispose")},render:function(){var u,r,f;t.callBaseMethod(this,"render");var e=this,i=this.config,o=$rql.ui.templates("side-nav"),s=$rql.ui.templates("side-nav-item");i.root.ElementId=this.elementId;u=$rql.ui.get("#rql").page;r=$rql.http.uri().path;u.Scope&&i.items&&(r=$rql.isNull(i.items.first(function(n){return n.url==r}),i.items[0]).url);this.clearSelectedState(i.root);this.setSelectedState(i.root,r);this.$navContainer.empty().html(o.render(i.root,{items:s.html}));f=this.$navContainer.find("[rql-view-id]");f.each(function(t,i){e.setViewStateIcon(n(i),status)});this.on({showTopicNav:this.showTopicNav});this.widgetize()},onRendered:function(){},clearSelectedState:function(n){var t=this;n.selected=!1;n.items&&n.items.map(function(n){n.items?t.clearSelectedState(n):n.selected=!1})},setSelectedState:function(n,t){var i=this;n.url===t?n.selected=!0:n.items&&n.items.map(function(r){r.items?i.setSelectedState(r,t):n.url===t&&(n.selected=!0)})},onPageChanged:function(){},updateViewStatus:function(t){var r,u,f,i;if(t&&(r=this,u=n("[rql-role='app-side-nav-menu']"),Object.getOwnPropertyNames(t).length>0))for(f in t)i=u.find($f("[rql-view-id='{0}']",f)),i.length>0&&r.setViewStateIcon(i,t)},setViewStateIcon:function(n,t){var u=n,i=u.find(".nav-item-icon"),r="start",f=u.attr("rql-view-id"),e=i.find("i");t[f]&&(r=t[f].toLowerCase());i.removeClass(this.allStates.join(" "));i.addClass(r);e.removeClass(this.allIcons.join(" "));e.addClass(this.icons[r])},showTopicNav:function(){var n=this.$.find('[rql-role="wb-side-topics"] > [rql-control]').data("rql.ui.control");n&&n.showTopicNav()}};t.registerClass("$rql.ui.controls.sidenav",$rql.ui.controls.sidenavbase)})(jQuery);
(function(n){var t=$rql.ui.controls.sidefilter=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(i){t.callBaseMethod(this,"initialize");this.config=n.extend({},i);this.selectedFilters=[];this.searchIcons=["fa-search","fa-times"];this.persistenceStateIds={selectedFilter:this.config.id+"_sidefilter",searchState:this.config.id+"_sidefilter_searchState"};this.searchState={globalSearch:"",fieldSearches:[]};this.on({applyFilter:this.onApplyFilter,searchSideFilters:this.onSearchFilters,showItems:this.onShowItems,hideItems:this.onHideItems});var r=this;this.$.on("keyup","[rql-role='global-search-input'], [rql-role='field-search-input']",function(n){if(n.keyCode===13)r.onSearchFilters(n)});t.callBaseMethod(this,"render")},dispose:function(){t.callBaseMethod(this,"dispose")},refresh:function(n){return n&&this.$filterContainer&&(this.$filterContainer.empty(),this.config=n,this.render()),this},render:function(){var i=this,r=this.config,t=this.getViewSetting(this.persistenceStateIds.selectedFilter),n;t&&(this.selectedFilters=t);n=this.getViewSetting(this.persistenceStateIds.searchState);n&&(this.searchState=n);this.filterGroups=this.prepareModel();this.applyFieldSearches();this.$filterContainer=this.$.find("[rql-role='app-side-nav-menu']");this.renderWithSearches();this.annotateAsSideFilters();this.widgetize()},onRendered:function(){this.onResize()},onPageChanged:function(){},onApplyFilter:function(t){var u=n(t.currentTarget).attr("rql-property"),r=n(t.currentTarget).attr("rql-value"),f=n(t.currentTarget).parents("[rql-role='side-filter-group']").attr("rql-operator"),e=n(t.currentTarget).siblings($f("#{0}",n(t.currentTarget).attr("for"))).is(":checked"),i=this.selectedFilters.first(function(n){return n.Name===u});if(e?i&&(i.Values.remove(function(n){return n===r}),i.RemovedValues.push(r)):i?(i.Values.push(r),i.RemovedValues.remove(function(n){return n===r})):this.selectedFilters.push({Name:u,Operator:f,Values:[r],RemovedValues:[]}),this.setViewSetting(this.persistenceStateIds.selectedFilter,this.selectedFilters),this.onFilter)this.onFilter(this.selectedFilters);t.stopPropagation()},onShowItems:function(t){var i=n(t.currentTarget).attr("rql-property");this.toggleHideShowItems(i,!0)},onHideItems:function(t){var i=n(t.currentTarget).attr("rql-property");this.toggleHideShowItems(i,!1)},onSearchFilters:function(t){var s;if(this.filterGroups&&this.filterGroups.length!==0){var i=n(t.currentTarget),h=i.is("input"),r=this.searchState,c=h?i.siblings("[rql-role$='search-button']"):i,e=c.attr("rql-role")==="global-search-button",u=h?i:i.siblings($f("[rql-role='{0}{1}']",e?"global":"field","-search-input")),o=c.find("i").hasClass(this.searchIcons[0]),f;e?r.globalSearch=o?u.val():"":(f=u.attr("rql-property"),s=r.fieldSearches.first(function(n){return n.Name===f}),s?s.Value=o?u.val():"":r.fieldSearches.push({Name:f,Value:o?u.val():""}));this.setViewSetting(this.persistenceStateIds.searchState,r);this.applyFieldSearches(e,f);this.renderWithSearches()}},applyFieldSearches:function(){var o=this.filterGroups,f=this.searchState,e,r,u,n;if(f)for(e=f.globalSearch.toLowerCase(),r=0;r<o.length;r++){var t=o[r],s=f.fieldSearches.first(function(n){return n.Name===t.Name}),i=s?s.Value.toLowerCase():"";for(t.Search&&(i?(t.SearchOn=!0,t.SearchTerm=i,delete t.SearchOff):(t.SearchOff=!0,t.SearchTerm="",delete t.SearchOn)),u=0;u<t.Items.length;u++)n=t.Items[u],e===""?i?n.Value.toLowerCase().contains(i)?delete n.FilteredOut:n.FilteredOut=!0:delete n.FilteredOut:n.Value.toLocaleLowerCase().contains(e)?i?n.Value.toLowerCase().contains(i)?delete n.FilteredOut:n.FilteredOut=!0:delete n.FilteredOut:n.FilteredOut=!0}},renderWithSearches:function(){var n=this.searchState;n&&(this.$.find('[rql-role="global-search-button"]:visible i').removeClass(this.searchIcons[n.globalSearch!==""?0:1]).addClass(this.searchIcons[n.globalSearch!==""?1:0]),this.$.find('[rql-role="global-search-input"]:visible').val(n.globalSearch!==""?n.globalSearch:""),this.$filterContainer.empty().html($rql.ui.templates("queue-side-filter").render({Groups:this.filterGroups})))},toggleHideShowItems:function(n,t){var i,r,u;if(this.filterGroups&&n){if(i=this.filterGroups.first(function(t){return t.Name===n}),i){for(i.HasMore=!t,i.HasLess=t,r=0;r<i.Items.length;r++)i.Items[r].IsVisible=t?!0:i.ItemsToShow>0?r<i.ItemsToShow:!0;this.$filterContainer.empty().html($rql.ui.templates("queue-side-filter").render({Groups:this.filterGroups}))}u=this.selectedFilters.first(function(t){return t.Name===n});u||(u={Name:n,Values:[],RemovedValues:[]},this.selectedFilters.push(u));u.ShowAll=t;this.setViewSetting(this.persistenceStateIds.selectedFilter,this.selectedFilters)}},prepareModel:function(){var r=this,o=function(n,t){if(r.selectedFilters.length===0)return!1;var i=r.selectedFilters.first(function(t){return t.Name===n});return i?i.Values.any(function(n){return n===t}):!1},s=function(n,t,i){for(var u=[],r=0;r<t.length;r++)u.push({Value:t[r],IsSelected:o(n,t[r]),IsVisible:i>0?r<i:!0,Id:$rql.newId()});return u},h=function(n,t,i){var f=!1,e=r.selectedFilters.first(function(n){return n.Name===t.Name}),u;e&&(f=e.ShowAll);u={Name:t.Name,Header:t.Header,Operator:t.Operator||"=",Index:t.Index,HeaderUiStyle:t.HeaderUiStyle,HeaderContainerUiStyle:t.HeaderContainerUiStyle,Search:t.Search,ItemsToShow:t.ShowCount>0?t.ShowCount:i};u.Items=s(t.Name,t.Items,f?0:u.ItemsToShow);f&&(u.HasLess=!0);u.Search&&(u.SearchOff=!0,u.SearchTerm="");u.Items.any(function(n){return!n.IsVisible})&&(u.HasMore=!0);n.push(u)},f,t,u,i,e,n;if(!this.config.filters||this.config.filters.length===0)return[];if(this.config.existingFilters)for(f=this.config.filters.select(function(n){return $rql.isUndefined(n.Operator)?"=":n.Operator}),t=this.config.existingFilters.where(function(n){return n.length>1&&f.contains(n[1])}),this.selectedFilters.remove(function(n){return!t.any(function(t){return t[0]===n.Name})}),n=0;n<t.length;n++)u=this.selectedFilters.first(function(i){return i.Name===t[n][0]}),u&&(u.Values=t[n].slice(2));for(i=[],e=this.config.filters.length>=2?6:0,n=0;n<this.config.filters.length;n++)h(i,this.config.filters[n],e);return i.sort(function(n,t){return n.Index<t.Index?-1:n.Index>t.Index?1:0}),i},annotateAsSideFilters:function(){var i,n;if(this.config.existingFilters&&this.config.existingFilters.length!==0&&this.selectedFilters&&this.selectedFilters.length!==0){for(i=this,n=0;n<this.config.existingFilters.length;n++){var t=i.config.existingFilters[n],r=t[0],u=t[1],f=t.slice(2);t.isSideFilter=this.selectedFilters.any(function(n){return n.Name===r&&n.Operator===u})}this.config.refreshFilterSummary()}}};t.registerClass("$rql.ui.controls.sidefilter",$rql.ui.controls.sidenavbase)})(jQuery);
(function(n){var r=Sys.CultureInfo.CurrentCulture.dateTimeFormat,t={cc:Sys.CultureInfo.CurrentCulture.dateTimeFormat},i=$rql.ui.controls.timepicker=function(n,t){i.initializeBase(this,[n,t])};i.prototype={initialize:function(i){this.config=n.extend({id:this.$.attr("rql-id"),clockOptions:{twelvehour:t.cc.AMDesignator!==""&&t.cc.PMDesignator!=="",editable:!0,donetext:$rql.i18n.strings.Close,init:this.init,beforeShow:this.beforeShow,afterShow:this.afterShow,beforeHide:this.beforeHide,afterHide:this.afterHide,beforeHourSelect:this.beforeHourSelect,afterHourSelect:this.afterHourSelect,beforeDone:this.beforeDone,afterDone:this.afterDone},dateSettings:{Date:$rql.i18n.datePattern,Time:$rql.i18n.timePattern,DateTime:$rql.i18n.dateTimePattern,Timestamp:$rql.i18n.dateTimePattern,timeZones:$rql.i18n.timeZones}},t,i);this.config.timeZoneOptions&&(this.config.clockOptions.timezone=!0);(!this.$.attr("rql-value")||this.config.defaultNow)&&(this.config.clockOptions.default="now",this.$.val(""));this.$.parents(".modal").length>0&&(this.config.isInModal=!0);this.initializePicker()},initializePicker:function(){if(this.$pickerInput=this.config.isInModal?this.$.clone().attr("id",this.elementId+"_tempTmInput").insertAfter(n("body")).hide():this.$,this.config.type==="DateTime"||this.config.type==="Timestamp")this.$.on("blur",this.onBlur);this.$pickerInput.pickatime(this.config.clockOptions)},getTimeZone:function(){return this.config.selectedTimeZone},init:function(){this.config.init&&this.config.init()},beforeShow:function(){this.config.beforeShow&&this.config.beforeShow()},afterShow:function(){this.config.afterShow&&this.config.afterShow()},beforeHide:function(){this.config.beforeHide&&this.config.beforeHide()},afterHide:function(){var n=this.$;n.attr("selected")||n.pickatime("remove");this.config.afterHide&&this.config.afterHide()},beforeHourSelect:function(){this.config.beforeHourSelect&&this.config.beforeHourSelect()},afterHourSelect:function(){this.config.afterHourSelect&&this.config.afterHourSelect()},beforeDone:function(){var n=this.$;n.attr("selected","true");this.config.beforeDone&&this.config.beforeDone()},afterDone:function(){var t=this.$,i=this.config.isInModal?n("#"+this.elementId+"_tempTmInput"):t,r=i.val(),o=r!=i.attr("data-value"),f=$rql.api.dataTypes.Time.fromJson(r),s=$rql.api.dataTypes.Time.format(f),e,u;if(t.val(s),e=$rql.api.dataTypes.Time.toJson(f),t.attr("data-value",e),t.data("rql.ui.control").adjustValue(),i.pickatime("remove"),this.config.isInModal&&i.remove(),this.config.afterDone&&this.config.afterDone(r),t.attr("rql-type")==="Time"&&(o&&(u=t.closest("div[rql-role='e-placeholder']").find($f("span[rql-id='__expression__{0}']",this.config.id)),u.length!==0&&u.click()),t.attr("rql-haspostback")))t.data("__self").onDataChanged(t)},render:function(){var i=this.config,e;if(this.config.timeZoneOptions){var r=this.$pickerInput.data("clockpicker"),u=r.timezoneHolder.find("select").on("change",function(){i.selectedTimeZone=n(this).val();r.closeTimePickerButton.prop("disabled",i.selectedTimeZone?!1:!0)}),f=window.$rql.TimeZones.resolve(i.timeZoneOptions),t=this.config.currentTimeZone?this.config.currentTimeZone:(new Date).getTimeZone().Id;t=$rql.TimeZone.ensureKnownTimeZoneId(f,t);e=$rql.ui.templates("dtpicker-timezone").render({TimeZones:f,ShowSelect:t?!1:!0});u.append(n(e).find("option"));t?(i.selectedTimeZone=t,u.find('option[value="'+t+'"]').prop("selected","selected")):(u.find('option[value=""]').prop("selected","selected"),r.closeTimePickerButton.prop("disabled",!0))}this.$pickerInput.pickatime("show")}};i.registerClass("$rql.ui.controls.timepicker",$rql.ui.controls.temporalInput)})(jQuery);
(function(n){var r=Sys.CultureInfo.CurrentCulture.dateTimeFormat,t={cc:Sys.CultureInfo.CurrentCulture.dateTimeFormat},i=$rql.ui.controls.datepicker=function(n,t){i.initializeBase(this,[n,t])};i.prototype={initialize:function(i){var r=this.$,u;this.config=n.extend({id:this.$.attr("rql-id"),datepickerOptions:{klass:{buttonClose:"dtpicker-btn-close",buttonClear:"dtpicker-btn-clear",buttonToday:"dtpicker-btn-today"},editable:!$rql.api.isMobileOS,formatSubmit:"mm/dd/yyyy",format:this.mdbConvertDateFormat(t.cc.ShortDatePattern),monthsFull:t.cc.MonthNames,monthsShort:t.cc.AbbreviatedMonthNames,weekdaysShort:t.cc.AbbreviatedDayNames,weekdaysFull:t.cc.DayNames,today:i.type.indexOf("Time")>=0?$rql.i18n.strings.Now:$rql.i18n.strings.Today,clear:$rql.i18n.strings.Clear,close:$rql.i18n.strings.Close,onClose:this.onClose,onSet:this.onSet}},t,i);r.attr("rql-value")&&(r.data("rql.ui.control").adjustValue(),this.config.originalDate=r.attr("rql-value"));r.attr("rql-timezone")&&(this.config.originalTimeZone=r.attr("rql-timezone"));this.config.type.indexOf("Time")>=0&&(this.config.originalDate&&(this.config.type==="Timestamp"&&n.isNumeric(this.config.originalDate)&&(this.config.originalDate=parseInt(this.config.originalDate)),u=$rql.api.dataTypes.Date.toJson(new Date(this.config.originalDate)),r.attr("data-value",u),r.data("value",null)),(this.config.type==="DateTime"||this.config.type==="Timestamp")&&this.$.off("blur"));this.$.parents(".modal, .list-grid, .list-table").length>0&&(this.config.isInModal=!0);this.initializePicker()},initializePicker:function(){this.$datepickerInput=this.config.isInModal?this.$.clone().attr("id",this.elementId+"_tempDtInput").insertAfter(n("body")).hide():this.$;this.$datepickerInput.pickadate(this.config.datepickerOptions)},mdbConvertDateFormat:function(n){return n.replaceAll("M","m")},onSet:function(t){var i=this.$,s=this.$datepickerInput,f=this.config.id,u=this.config.type,e=(u==="Timestamp"?parseInt(i.attr("rql-value")):i.attr("rql-value"))||this.config.initialDateTime,h,o,r,c,l,y;if(!t.highlight){if(typeof t.clear!="undefined"){i.val("");i.attr("rql-value","");i.attr("rql-timezone","");i.attr("clear","true");return}this.config.isInModal&&(s=n("#"+this.elementId+"_tempDtInput"),i.val(s.val()));i.attr("selected","true");var a=$rql.api.dataTypes.Date.parse(s.data("pickadate").get("value")),p=new Date(a),v=i.data("rql.ui.control").config.dataType.toJson(p);i.data("value",null);i.attr("data-value",v);i[0].hasAttribute("rql-dateformat")&&(i.val(a.format(i.attr("rql-dateformat"))),i.attr("rql-value",v));u==="DateTime"||u==="Timestamp"?(h=e?$rql.api.dataTypes.Time.format(new moment(e).toDate()):"now",o=i.parent().find($f("[rql-id='{0}_TimeSelect']",f)),o.length===0&&(o=i.parent().append($f("<input type='text' style='display:none !important;' rql-role='timeselect' rql-id='{0}_TimeSelect' no-collect='true' />",f)).find($f("[rql-id='{0}_TimeSelect']",f))),o.attr("rql-value",h).val(h),r=i.data("rql.ui.control").config,n.extend(r,{beforedone:function(){var n=i.parents().find($f("[rql-id='{0}_TimeSelect']",f));n.attr("selected","true")},afterHide:function(){var n=i.parents().find($f("[rql-id='{0}_TimeSelect']",f)),t;n.attr("selected")||(e?(t=i.attr("rql-type")==="Timestamp"?new Date($rql.api.dataTypes[i.attr("rql-type")].fromJson(e)):new Date(e),i.val($rql.api.dataTypes[u].format(t)),i.attr("data-value",e),i.attr("rql-timezone")&&i.attr("rql-timezone",r.originalTimeZone)):(i.val(""),i.attr("data-value","")),i.data("rql.ui.control").adjustValue(),r.afterClose&&r.afterClose(),n.remove())},afterDone:function(){var n=i.parents().find($f("[rql-id='{0}_TimeSelect']",f)),o=u==="Timestamp"?$rql.api.dataTypes.Timestamp.fromJson(i.attr("data-value")).toISOString().substr(0,10).replaceAll("-","/"):$rql.api.dataTypes.Date.parse(i.attr("data-value")),t=new Date((u==="Timestamp"?o:$rql.api.dataTypes.Date.toJson2(o))+" "+(n.attr("data-value")||n.val())),s,e;if(i.val(i.data("rql.ui.control").config.dataType.format(t)),u==="Timestamp"?i.attr("data-value",t.getTime()):i.attr("data-value",i.data("rql.ui.control").config.dataType.toJson(t)),(u==="DateTime"||u==="Timestamp")&&(s=!i.attr("rql-timezone-options")?"":n.data("rql.ui.control").getTimeZone(),i.attr("rql-timezone",s)),i.data("rql.ui.control").adjustValue(),i[0].hasAttribute("rql-dateformat")&&i.attr("rql-value",i.attr("data-value")),r.afterSet&&r.afterSet(),n.remove(),e=i.closest("div[rql-role='e-placeholder']").find($f("span[rql-id='__expression__{0}']",r.id)),e.length!==0&&e.click(),i.attr("rql-haspostback"))i.data("__self").onDataChanged(i)}}),c=u==="DateTime"||u==="Timestamp"?i.attr("rql-timezone"):null,c&&(r.currentTimeZone=c),l=i.attr("rql-timezone-options"),l&&(r.timeZoneOptions=l),r.defaultNow=null,t.source&&n(t.source).hasClass("dtpicker-btn-today")&&(r.defaultNow="now"),y=new $rql.ui.controls.timepicker(o,r),setTimeout(function(){y.render()},0)):(u==="Date"&&i.data("rql.ui.control").adjustValue(),this.config.afterSet&&this.config.afterSet())}},onClose:function(){var t=this.$,i=this.config.originalDate,r=this.config.type,o=this.config.originalTimeZone,s=i!=t.attr("data-value"),u,f,e;if(this.config.isInModal&&(this.$datepickerInput=n("#"+this.elementId+"_tempDtInput")),t.attr("selected")||t.attr("clear")?(t.removeAttr("selected"),t.removeAttr("clear")):(i&&(t.val($rql.api.dataTypes[r].format(new Date(i))),t.attr("data-value",i),t.data("value",null),t.attr("rql-timezone")&&t.attr("rql-timezone",o)),this.config.afterClose&&this.config.afterClose()),this.$datepickerInput.data("pickadate").stop(),u=t.attr("rql-date-allowtyping")==="false",u!==t.prop("readonly")&&t.prop("readonly",u),r!=="DateTime"&&r!=="Timestamp"&&(f=!1,s&&(e=t.closest("div[rql-role='e-placeholder']").find($f("span[rql-id='__expression__{0}']",this.config.id)),e.length!==0?(t.data("rql.ui.control").adjustValue(),e.click(),f=!0):t.trigger("valueChange")),t.attr("rql-haspostback")&&!f))t.data("__self").onDataChanged(t);this.config.isInModal&&this.$datepickerInput&&this.$datepickerInput.remove()},render:function(){this.$datepickerInput.pickadate("open")}};i.registerClass("$rql.ui.controls.datepicker",$rql.ui.controls.temporalInput)})(jQuery);
(function(n){var t=$rql.ui.controls.label=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.render()},template:function(){return $rql.ui.templates("label")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var n=this.config;n.ElementId=this.elementId;n.HasText=n.Text!=="";this.$.empty().append(this.template().render(n));this.widgetize()}};t.registerClass("$rql.ui.controls.label",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.progressbar=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({Empty:!1,ReadOnly:!0,Error:!1},t);this.config.IsStepper=this.config.Layout==="Stacked"&&this.config.Style==="Numeric";this.parseSteps();this.render()},template:function(){return $rql.ui.templates(this.config.IsStepper?"progress-bar-stepper":"progress-bar")},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var n=this.config;n.ElementId=this.elementId;this.$.empty().append(this.template().render(n));this.widgetize()},parseSteps:function(){var n=this.config,t;n.Steps||(n.Steps=[]);t=1;n.Steps.length>0&&n.Steps.map(function(i){i[n.Style]=!0;i[n.Layout]=!0;i[i.Type]=!0;i.Position=t++;n.Color==="yes"&&(i.Color=!0);n.Indicator==="Text"?n.ShowAsText=!0:i[n.Indicator]=!0;$rql.isUndefined(i.UiStyle)||(i.hasStepUiStyle=!0);i.ToDo&&(i.hasDefaultStepUiStyle=!0);i.Underline&&!i.Color&&(i.hasDefaultStepUiStyle=!0);i.Boxed&&i.Done&&!i.Color&&(i.hasDefaultStepUiStyle=!0);i.Badge&&!i.Color&&(i.hasDefaultStepUiStyle=!0)})}};t.registerClass("$rql.ui.controls.progressbar",$rql.ui.controls.view)})(jQuery);
(function(n){var i=[{start:null,format:""},{start:0,format:"< 1 min"},{start:60,format:"1 min"},{start:120,format:"{m} mins"},{start:3600,format:"{h} hrs {m} mins"},{start:86400,format:"{d} days {h} hrs {m} mins"}],r=[{start:null,format:""},{start:0,format:"a few seconds ago"},{start:60,format:"1 minute ago"},{start:120,format:"{m} minutes ago"},{start:3600,format:"1 hour {m} minutes ago"},{start:7200,format:"{h} hours ago"},{start:86400,format:"1 day ago"},{start:172800,format:"{d} days ago"}],u=[{start:null,format:""},{start:0,format:"< 1 min"},{start:60,format:"1 min"},{start:120,format:"{m} mins"},{start:3600,format:"{h} hrs {m} mins"},{start:86400,format:"{d} days {h} hrs {m} mins"}],f=[{start:null,format:""},{start:0,format:"in a few seconds"},{start:60,format:"in 1 minute"},{start:120,format:"in {m} minutes"},{start:3600,format:"in 1 hour {m} minutes"},{start:7200,format:"in {h} hours"},{start:86400,format:"in 1 day"},{start:172800,format:"in {d} days"}],t=$rql.ui.controls.time=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var e=this.config=n.extend({Empty:!1},t);e.Type=e.Type?e.Type.toLowerCase():e.Type;e.Format=e.Format?e.Format.toLowerCase():e.Format;e.Time=e.Value?Date.parse(e.Value):null;e.Ranges?e.ranges=JSON.parse(e.Ranges):e.Type==="from"?e.ranges=e.Format==="verbose"?r:i:e.Type==="to"&&(e.ranges=e.Format==="verbose"?f:u);e.Text=null;e.RangeUiStyle=null;this.timeout=null;this.render()},template:function(){return $rql.ui.templates("time")},dispose:function(){this.timeout&&(window.clearTimeout(this.timeout),this.timeout=null);this.off();this.$.off();t.callBaseMethod(this,"dispose")},calcTimeDiff:function(n,t){var i=Math.floor((t-n)/1e3),r=i<0;return i=Math.abs(i),{isNegative:r,totalSeconds:i,totalMinutes:Math.floor(i/60),totalHours:Math.floor(i/3600),days:Math.floor(i/86400),hours:Math.floor(i/3600)%24,minutes:Math.floor(i/60)%60,seconds:i%60}},findRange:function(n,t){var r=null,i;if(n)for(i=n.length-1;i>=0;i--)if(t&&n[i].start!==null&&t.totalSeconds>=n[i].start||t==null&&n[i].start==null){r=n[i];break}return r},formatDiff:function(n,t){return n&&n.indexOf("{")!==-1&&t&&(n.indexOf("{s}")!==-1&&(n=n.replace("{s}",t.seconds)),n.indexOf("{ss}")!==-1&&(n=n.replace("{ss}",$f("{0:d2}",t.seconds))),n.indexOf("{m}")!==-1&&(n=n.replace("{m}",t.minutes)),n.indexOf("{mm}")!==-1&&(n=n.replace("{mm}",$f("{0:d2}",t.minutes))),n.indexOf("{h}")!==-1&&(n=n.replace("{h}",t.hours)),n.indexOf("{hh}")!==-1&&(n=n.replace("{hh}",$f("{0:d2}",t.hours))),n.indexOf("{d}")!==-1&&(n=n.replace("{d}",t.days))),n},render:function(){var t=this.config;if(this.$.is(":visible")){var r=t.Type==="from"?this.calcTimeDiff(t.Time,Date.now()):this.calcTimeDiff(Date.now(),t.Time),i=this.findRange(t.ranges,r.isNegative?null:r),u=(i?this.formatDiff(i.format,r):"")||"",f=i?i.uiStyle:null;(t.Text!==u||t.RangeUiStyle!==f)&&(t.Text=u||"&nbsp;",t.RangeUiStyle=f,this.$.empty().append(this.template().render(t)))}this.timeout=n.contains(document,this.$[0])?window.setTimeout(this.render,1e3):null}};t.registerClass("$rql.ui.controls.time",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.barcodeInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},i,t);this.on({startStreaming:this.onStartStreaming,stopStreaming:this.onStopStreaming});if(this.config.Form&&!this.config.ReadOnly||this.config.Type==="Workbook"){n(window).off("orientationchange",this.onOrientationStateChange);n(window).on("orientationchange",this.onOrientationStateChange)}if(!this.config.EditInGrid)this.config.Form.on("collectValues",this.onCollectValues);this.config.ShowInput=!0;this.config.ShowDialog=!1;this.config.CameraViewportWidth=640;this.config.CameraViewportHeight=480;this.config.Readers=["ean_reader"];this.prepareModel();this.config.InputType=this.config.ShowInput?"text":"hidden";this.render()},prepareModel:function(){var t,i,r;(this.config.ShowRequiredMessage&&(this.config.ErrorMessage=this.config.ValidationErrorMessage===""?$rql.i18n.strings.RequiredField:this.config.ValidationErrorMessage),this.config.Options)&&(t=this.config.Options.parseOptions(),t&&t.length!==0)&&(i=t.first(function(n){return n.config==="barcode"}),i&&(r={Readers:this.config.Readers,ShowInput:this.config.ShowInput},i.options.map(function(t){t.param==="readers"?r.Readers=n.map(i.options[0].value.split("|"),n.trim):t.param==="showinput"&&(r.ShowInput=t.value==="true")}),n.extend(this.config,r)))},dispose:function(){this.off();n(window).off("orientationchange",this.onOrientationStateChange);this.config.EditInGrid||this.config.Form.off("collectValues",this.onCollectValues);this.$.off();t.callBaseMethod(this,"dispose")},onCollectValues:function(n){this.config.ReadOnly||(this.config.Value=this.$.find("[rql-value]").val(),n.values.add($f("__sensor_{0}",this.config.Id),$f("Barcode|{0}",this.config.Value)))},onPostback:function(){this.triggerPostback()},render:function(){this.$.empty().append($rql.ui.templates("barcode").render(this.config));this.on({postback:this.onPostback});this.widgetize()},appendCameraControl:function(){var i,r,t;if(n.browser.msie||$rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS||$rql.api.embeddedView)){i=n("#cameraViewPort");n(i).html("<div class='alert alert-danger'>"+$rql.i18n.strings.NoCanvas+"<\/div");return}r={inputStream:{type:"LiveStream",target:document.querySelector("#cameraViewPort"),constraints:{width:$rql.api.isIOS?640:Math.max(this.config.CameraViewportHeight,this.config.CameraViewportWidth),height:$rql.api.isIOS?480:Math.min(this.config.CameraViewportHeight,this.config.CameraViewportWidth),facingMode:"environment"}},locator:{patchSize:"medium",halfSample:!0},numOfWorkers:navigator.hardwareConcurrency?navigator.hardwareConcurrency:2,decoder:{readers:this.config.Readers},locate:!0};t=this;Quagga.init(r,function(i){if(i){Quagga.stop();Quagga.offProcessed(t.onProcessed);Quagga.offDetected(t.onDetected);var r=n("#cameraViewPort");n(r).html("<div class='alert alert-danger'>"+i.message+"<\/div");return}Quagga.start();Quagga.onProcessed(t.onProcessed);Quagga.onDetected(t.onDetected)})},onStartStreaming:function(){var n=this;$rql.api.require("barcodeReader",function(){n.showCameraDialog()})&&n.showCameraDialog()},showCameraDialog:function(){this.config.ShowDialog=!0;$rql.api.uiVersion>2&&(n("body > div#dlgCamera").off("click","button[rql-action],[rql-action]:not(:input),input[rql-action]:checkbox,input[rql-action]:radio"),n("body > div#dlgCamera").modal("dispose"),n("body > div#dlgCamera").remove());this.recalculateViewportSize();this.render();this.appendCameraControl();this.repositionCameraDialog()},repositionCameraDialog:function(){var n=this.$.find("#dlgCamera"),t;if($rql.api.uiVersion<=2)n.css("margin-top",-(n.height()/2)+"px");else{t=-(n.find(".modal-content").width()-n.find(".modal-dialog").width());(window.orientation===0||window.orientation===180)&&Math.min(screen.availHeight,screen.availWidth)<=480?n.css("margin-left",t/2):n.css("margin-left",t);n.appendTo("body");n.on("click","button[rql-action],[rql-action]:not(:input),input[rql-action]:checkbox,input[rql-action]:radio",this.raiseAction)}},recalculateViewportSize:function(){var n;$rql.api.uiVersion>2&&(Math.min(screen.availHeight,screen.availWidth)<=480?Math.min(this.config.CameraViewportWidth,this.config.CameraViewportHeight)===480&&(this.config.CameraViewportWidth=this.config.CameraViewportWidth/2,this.config.CameraViewportHeight=this.config.CameraViewportHeight/2):Math.min(this.config.CameraViewportWidth,this.config.CameraViewportHeight)===240&&(this.config.CameraViewportWidth=this.config.CameraViewportWidth*2,this.config.CameraViewportHeight=this.config.CameraViewportHeight*2));(window.orientation===0||window.orientation===180)&&this.config.CameraViewportWidth>this.config.CameraViewportHeight&&(n=this.config.CameraViewportWidth,this.config.CameraViewportWidth=this.config.CameraViewportHeight,this.config.CameraViewportHeight=n);(window.orientation===-90||window.orientation===90)&&this.config.CameraViewportWidth<this.config.CameraViewportHeight&&(n=this.config.CameraViewportWidth,this.config.CameraViewportWidth=this.config.CameraViewportHeight,this.config.CameraViewportHeight=n);this.config.ModalContentWidth=this.config.CameraViewportWidth+30},onStopStreaming:function(){n.browser.msie||!Quagga||$rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS||$rql.api.embeddedView)||(Quagga.stop(),Quagga.offProcessed(this.onProcessed),Quagga.offDetected(this.onDetected));var t=n("div#dlgCamera");t.modal("hide");t.remove();this.config.ShowDialog=!1},onProcessed:function(t){var i,r,u;t&&(window.navigator.userAgent.match(/iPhone/i)&&(i=n("canvas.drawingBuffer"),i.length&&(i.width()!==this.config.CameraViewportWidth||i.height()!==this.config.CameraViewportHeight)&&(i.attr("width",this.config.CameraViewportWidth),i.attr("height",this.config.CameraViewportHeight))),r=Quagga.canvas.ctx.overlay,u=Quagga.canvas.dom.overlay,t.boxes&&(r.clearRect(0,0,parseInt(u.getAttribute("width")),parseInt(u.getAttribute("height"))),t.boxes.filter(function(n){return n!==t.box}).forEach(function(n){Quagga.ImageDebug.drawPath(n,{x:0,y:1},r,{color:"green",lineWidth:2})})),t.box&&Quagga.ImageDebug.drawPath(t.box,{x:0,y:1},r,{color:"#00F",lineWidth:2}),t.codeResult&&t.codeResult.code&&Quagga.ImageDebug.drawPath(t.line,{x:"x",y:"y"},r,{color:"red",lineWidth:3}))},onDetected:function(n){if(n.codeResult.code){Quagga.stop();var t=this;setTimeout(function(){t.$.find("[rql-value]").val(n.codeResult.code);t.onStopStreaming();t.triggerPostback()},1e3)}},triggerPostback:function(){this.config.EditInGrid||(this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection))},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)},onOrientationStateChange:function(){var n=!1,t=this;this.recalculateViewportSize();Quagga&&Quagga.CameraAccess.getActiveStreamLabel().length&&(n=!0,this.onStopStreaming());n&&setTimeout(function(){t.onStartStreaming()},1e3)}};t.registerClass("$rql.ui.controls.barcodeInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={Empty:!1,ReadOnly:!0,Error:!1,ControlKey:$rql.ui.controlKey},t=$rql.ui.controls.cameraInput=function(n,i){t.initializeBase(this,[n,i])};t.prototype={formatServerValue:function(){var n=this.config,t="";n.Length?t=n.Length.toString():n.FileLength&&(t=n.FileLength.toString());n.ServerValue=$f("{0}|{1}|{2}|{3}|{4}|{5}",n.FileName,n.FileId,n.FileId,n.ContentType,t,n.Date)},formatFileLength:function(n){var t="0 KB";try{t=String.format("{0:n} KB",Math.ceil(n/1024)).replace(/\.00/,"")}catch(i){}return t},initialize:function(t){this.config=n.extend({},i,t,{ElementId:this.elementId});(n.browser.msie||$rql.api.offline&&($rql.api.isAndroid||$rql.api.isIOS))&&(this.config.NoCanvas=!0);this.config.Title||(this.config.Title=$rql.i18n.strings.Camera);this.on({openCamera:this.onOpenCamera,stopStreaming:this.onStopStreaming,capture:this.onCapture,closeError:this.onCloseError,retake:this.onOpenCamera,upload:this.onUpload,clear:this.onClear,track:this.track});if(this.config.PhotoName="Photo",this.setResolution(),this.config.PhotoOptions!=null&&(this.setResolution(this.config.PhotoOptions[0]),this.config.PhotoName=this.config.PhotoOptions[1],this.config.Inline=this.config.PhotoOptions[2]),this.config.ModalContentWidth=this._viewportWidth+30,this.config.UploadControlStyling=!0,this.config.ValidationErrorText=this.config.ValidationErrorText.decode(),this.config.IsRequired=!this.config.Optional&&!this.config.ReadOnly&&!this.config.ContextIsReadOnly,this.formatServerValue(),$rql.api.offline){var r=this.config.Form?this.config.Form.config.StoreId:null;this.config.StoreId=encodeURIComponent(r)}this.render()},render:function(){!this.config.Empty&&this.config.Length&&(this.config.FormatedFileLength=this.formatFileLength(this.config.Length));this.$.empty().append($rql.ui.templates("camera").render(this.config));this.widgetize();this.$cameraSwitch=this.$.find("#cameraSwitch_"+this.config.ElementId);this.$cameraCaptureControls=this.$.find("#cameraCaptureControls_"+this.config.ElementId);this.$cameraViewPort=this.$.find("#cameraViewPort_"+this.config.ElementId);this.$cameraCapturedTools=this.$.find("#cameraCapturedControls_"+this.config.ElementId);this.$cameraError=this.$.find("#cameraError_"+this.config.ElementId);this.$canvas=this.$.find("#cameraImageCapture_"+this.config.ElementId);this.config.NoCanvas&&(this.resetCameraControls("error"),this.showError($rql.i18n.strings.NoCanvas))},setResolution:function(n){var t,i;this._viewportWidth=this._videoWidth=640;this._viewportHeight=this._videoHeight=480;t=this._viewportWidth+"x"+this._viewportHeight;!$rql.api.isIOS&&n&&(t=n.toLowerCase(),t=="small"?t="320x240":t=="medium"?t="640x480":t=="large"&&(t="800x600"));this.config.Size=t;t.indexOf("x")>0&&(i=t.split("x"),i.length===2&&(this._videoWidth=parseInt(i[0]),this._videoHeight=parseInt(i[1]),this._viewportWidth=Math.min(this._videoWidth,800),this._viewportHeight=Math.min(this._videoHeight,600)))},appendCameraControl:function(){var t=this,n,i;this.config.NoCanvas||(this.$cameraViewPort.attr("width",this._viewportWidth),this.$cameraViewPort.attr("height",this._viewportHeight),n=this.$cameraViewPort[0],i={width:this._videoWidth,height:this._videoHeight,facingMode:"environment"},navigator.mediaDevices.getUserMedia({video:i}).then(function(i){t.$cameraViewPort.show();n.srcObject=i;n.play()}).catch(function(n){t.showError(n.message)}))},onOpenCamera:function(){if(this.registerBlockingActivityStart(),$rql.api.offline&&window.webview)webview.takePicture(this.config.ElementId,this.config.Form?this.config.Form.config.StoreId:null,this.config.Key?this.config.Key:"",this.config.PhotoName,this.config.Size);else if(this.$canvas[0].getContext("2d").clearRect(0,0,this.$canvas.width,this.$canvas.height),this._oversizedImage=null,this.resetCameraControls("stream"),this.appendCameraControl(),!this.config.Inline){var n=this.$modal||this.$.find("#cameramodal_"+this.config.ElementId),t=n.find("[rql-role='modal-content']");this.$.find("#cameracapture_"+this.config.ElementId).appendTo(t);$rql.ui.showModalFabric(n);this.$modal=n}},onCapture:function(){var n=this,t=this.$canvas[0],i=this.$cameraViewPort[0],r=t.getContext("2d");if(this._oversizedImage=null,t.width=n._viewportWidth,t.height=n._viewportHeight,r.drawImage(i,0,0,t.width,t.height),n._videoWidth>800){const t=document.createElement("canvas");t.width=n._videoWidth;t.height=n._videoHeight;const r=t.getContext("2d");r.drawImage(i,0,0,n._videoWidth,n._videoHeight);this._oversizedImage=t.toDataURL("image/jpeg",.5);delete t}n.stopCamera();n.resetCameraControls("captured");this.$canvas.show();this.registerBlockingActivityStop()},onStopStreaming:function(){this.config.NoCanvas||(this.stopCamera(),this.resetCameraControls("initial"),!this.config.Inline&&this.$modal&&this.$modal.modal("hide"))},onUpload:function(){var i=this,t=this.config,r=this.$canvas[0].toDataURL("image/jpeg",.5),u,f;this._oversizedImage&&(r=this._oversizedImage);r&&(r=r.replace("data:image/jpeg;base64,",""),u=t.Form?t.Form.config.StoreId:null,f={FileName:encodeURIComponent(t.PhotoName),StoreId:encodeURIComponent(u),Base64ImageData:r},this.showLoader(this.$.find("#camera_"+t.ElementId)),n.ajax({type:"POST",url:t.baseUrl.pathname+"Form/Image",dataType:"json",contentType:"application/json; charset=utf-8",data:n.toJson(f)}).done(function(n){t.Empty=!1;t.ReadOnly=!1;t.Date=n.Date;t.ContentType=n.ContentType;t.FileId=n.FileId;t.FileName=n.FileName;t.Length=n.Length;i.formatServerValue();i.$.find("#data_"+t.ElementId).val(t.ServerValue);$rql.api.sendGA4Event("rql_photo_upload",{app_name:t.Form.config.AppName,file_name:t.FileName,file_length:t.Length,source:"Photo Control"});i.render();i.$.attr("postback")&&i.$.attr("postback")==="true"&&(t.Form.disable(),i.triggerOnUpdate(),t.Form.update(new $rql.ui.components.valueCollection,function(){t.Form.enable()}))}).fail(function(n,t){console.log(t)}).always(function(){i.hideOverlay()}))},stopCamera:function(){if(this.$cameraViewPort&&this.$cameraViewPort[0].srcObject){var t=this.$cameraViewPort[0].srcObject,n=t.getVideoTracks();n&&n.length&&n[0].stop();t=null}},resetCameraControls:function(n){switch(n){case"stream":this.config.Inline&&this.$cameraSwitch.hide();this.$canvas.hide();this.$cameraCapturedTools.hide();this.$cameraError.hide();this.$cameraCaptureControls.css({width:this._viewportWidth+"px"}).show();break;case"captured":this.config.Inline&&this.$cameraSwitch.hide();this.$cameraCaptureControls.hide();this.$cameraViewPort.hide();this.$cameraCapturedTools.css({width:this._viewportWidth+"px"}).show();break;case"error":this.$cameraSwitch.hide();this.$cameraCaptureControls.hide();this.$cameraViewPort.hide();this.$cameraCapturedTools.hide();this.$canvas.hide();this.$cameraError.show();break;case"initial":default:this.$cameraSwitch.show();this.$cameraCaptureControls.hide();this.$cameraViewPort.hide();this.$canvas.hide();this.$cameraError.hide()}},onCloseError:function(){this.$cameraError.hide();this.$cameraError.trigger("camera.error.closed")},showError:function(n){var t=this;this.$cameraError.find("#camerraErrorText_"+this.config.ElementId).text(n);this.$cameraError.on("camera.error.closed",function(){t.resetCameraControls("initial")});if(!this.config.Inline){this.$modal.find(".modal-footer").show();this.$modal.on("hidden.bs.modal",function(){t.resetCameraControls("initial");t.$modal.off("hidden.bs.modal")})}this.resetCameraControls("error")},triggerOnUpdate:function(){var t=n.Event("update");t.currentTarget=this.$[0];this.config&&this.config.Form&&this.config.Form.setPostbackControlId&&this.config.Form.setPostbackControlId(t)},track:function(){$rql.api.sendGA4Event("rql_file_download",{app_name:this.config.Form.config.AppName,file_name:this.config.FileName,file_length:this.config.Length,source:"Photo Control"});this.config.TrackDownload&&this.config.Form&&$rql.api.trackFirstDownload(this.config.FileId,this.config.Form.config.StoreId)},onClear:function(){var n=this;this.config.Empty=!0;this.config.ReadOnly=!1;this.config.Error=!1;this.config.ErrorType=null;this.config.ErrorMessage=null;this.config.ServerValue="|||||";this.config.Length=null;this.config.FileLength=null;this.config.FileId=null;this.config.FileName=null;this.config.ContentType=null;this.config.Date=null;this.$modal=null;this.render();this.$.attr("postback")&&this.$.attr("postback")==="true"&&(this.config.Form.disable(),this.triggerOnUpdate(),this.config.Form.update(new $rql.ui.components.valueCollection,function(){n.config.Form.enable()}))}};t.registerClass("$rql.ui.controls.cameraInput",$rql.ui.controls.view)})(jQuery);
(function(n){var i={},t=$rql.ui.controls.carousel=function(i,r,u){u&&n.extend(r,u.parseOptionsAsObject(!1,!0));t.initializeBase(this,[i,r])};t.prototype={initialize:function(t){this.template=$rql.ui.templates("fabric-carousel");this.config=n.extend({GalleryId:this.elementId+"_Gallery",Data:this.prepData(t.Items)},i,t);this.render()},prepData:function(n){for(var i,r=[],t=0;t<n.length;t++)i={Id:n[t][0],Index:t},n[t][1].Text&&n[t][1].Text.length===2&&(i.Caption=n[t][1].Text[0].Value,i.Filename=n[t][1].Text[1].Value,i.ImgSrc=n[t][1].ImgSrc,i.Title=n[t][1].Title,i.Url=n[t][1].Url),t===0&&(i.Active=!0),r.push(i);return r},render:function(){this.$.empty().html(this.template.render(this.config));this.widgetize()},onRendered:function(){var t={};$rql.isUndefined(this.config.Gallery.autoplay)||(this.config.Gallery.autoplay===!1?t.interval=!1:n.isNumeric(this.config.Gallery.autoplay)&&(t.interval=parseInt(this.config.Gallery.autoplay)));this.$.find("[rql-role='carouselWrapper']").carousel(t)}};t.registerClass("$rql.ui.controls.carousel",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.comparer=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var i=this.config=n.extend({Empty:!1},t);i.Type=i.Type?i.Type.toLowerCase():i.Type;i.Diff.IsMerger=i.ComparerMode&&i.ComparerMode.toLowerCase()==="merger";i.IsMergerSnapshot=i.Diff.IsMerger&&i.MergerMode&&i.MergerMode.toLowerCase()==="snapshot";i.globalDiffList=[];this.registerDiff(i.Diff);this.processDiffs(i.Diff?i.Diff.Controls:null,0,null,{Index:1});i.Header1&&(i.Diff.Header1=i.Header1);i.Header2&&(i.Diff.Header2=i.Header2);this.render();this.$.on("click","[rql-action='toggle']",this.onToggle);this.$.on("click","[rql-action='select']",this.onSelect);i.Form.on("collectValues",this.onCollectValues)},template:function(){return $rql.ui.templates("comparer")},dispose:function(){var n=this.config;this.off();this.$.off();n.Form.off("collectValues",this.onCollectValues);t.callBaseMethod(this,"dispose")},render:function(){var n=this.config,t=$rql.ui.templates("comparer"),i={diffs:$rql.ui.templates("comparer-diffs").html};this.$.empty().append(t.render(n.Diff,i))},processDiffs:function(n,t,i){var e,r,f,u;if(n)for(e=0;e<n.length;e++)if(r=n[e],this.registerDiff(r),r.IsList=!!r.ListItems,r.Depth=t,r.PaddingLeft=t*30+5,r.IsHtml&&(r.Value&&(r.Value=$rql.htmlDecode(r.Value)),r.NewValue&&(r.NewValue=$rql.htmlDecode(r.NewValue))),r.ChangeType==="Unchanged"&&(r.NewValue=r.Value),this.setUiStyles(r),r.ListItems)for(r.TogglePaddingLeft=t*30+5+5,r.Collapsable=!1,f=0;f<r.ListItems.length;f++)u=r.ListItems[f],u.List=r,u.Summary1=u.Summary1||"",u.Summary2=u.Summary2||"",u.Collapsable=u.Controls&&u.Controls.length!==0,r.Collapsable=r.Collapsable||u.Collapsable,this.registerDiff(u),u.Index=f+1,this.setUiStyles(u),this.processDiffs(u.Controls,t+1,i);else r.ListItems=[]},registerDiff:function(n){n.GlobalIndex=this.config.globalDiffList.length;this.config.globalDiffList.push(n);var t=$rql.ui.nextTempUiId();n.TempUiId=t;n.CheckboxId1=t+"_1";n.CheckboxId2=t+"_2";n.RowId=t+"_row";n.IsInitialSide1=n.Side===1;n.IsInitialSide2=n.Side===2},setUiStyles:function(n){n.ChangeType==="Changed"?n.ValueStyle=n.NewValueStyle="background-color: #fcc":n.ChangeType==="Deleted"?(n.ValueStyle="background-color: #ffc",n.NewValueStyle=""):n.ChangeType==="Added"?(n.ValueStyle="",n.NewValueStyle="background-color: #ffc"):n.ValueStyle=n.NewValueStyle=""},onToggle:function(t){var s=this.config,f=n(t.currentTarget),h=f.closest("[rql-comparer-row]"),e=parseInt(h.attr("rql-comparer-row")),i,r,u,o;if(e>=0)if(i=s.globalDiffList[e],i.ListItems)for(i.collapsed=!i.collapsed,f.find("i").toggleClass("icon-minus",!i.collapsed).toggleClass("icon-plus",i.collapsed),r=0;r<i.ListItems.length;r++)u=i.ListItems[r],i.collapsed!==!!u.collapsed&&(o=n("#"+u.RowId).find("a"),this.toggleListItem(u,o));else i.Controls&&(this.toggleListItem(i,f),this.updateListToggle(i.List))},toggleListItem:function(n,t){n.collapsed=!n.collapsed;t.find("i").toggleClass("icon-minus",!n.collapsed).toggleClass("icon-plus",n.collapsed);this.toggleDiffs(n.Controls,n.collapsed?1:-1)},toggleDiffs:function(n,t){var r,i,u,f;if(n)for(r=0;r<n.length;r++)if(i=n[r],this.toggleDiff(i,t),i.Controls)this.toggleDiffs(i.Controls,t);else if(i.ListItems)for(u=0;u<i.ListItems.length;u++)f=i.ListItems[u],this.toggleDiff(f,t),this.toggleDiffs(f.Controls,t)},toggleDiff:function(t,i){t.toggleCounter=(t.toggleCounter||0)+i;(t.toggleCounter===0||t.toggleCounter===1)&&n("#"+t.RowId).toggle(t.toggleCounter===0)},updateListToggle:function(t){var i,r;if(t&&t.ListItems){for(i=!0,r=0;r<t.ListItems.length;r++)i=i&&!!t.ListItems[r].collapsed;!!t.collapsed!==i&&(t.collapsed=i,n("#"+t.RowId).find("i").toggleClass("icon-minus",!t.collapsed).toggleClass("icon-plus",t.collapsed))}},selectDiff:function(t,i,r){t&&(t.Side=r?i:null,n("#"+t.CheckboxId1).prop("checked",i===1&&r),n("#"+t.CheckboxId2).prop("checked",i===2&&r))},selectDiffs:function(n,t,i){var u,r,f,e;if(n)for(u=0;u<n.length;u++)if(r=n[u],this.selectDiff(r,t,i),r.Controls)this.selectDiffs(r.Controls,t,i);else if(r.ListItems)for(f=0;f<r.ListItems.length;f++)e=r.ListItems[f],this.selectDiff(e,t,i),this.selectDiffs(e.Controls,t,i)},onSelect:function(t){var i=this.config,r=n(t.currentTarget),e=r.is(":checked"),u=parseInt(r.attr("rql-comparer-side")),h=r.attr("rql-argument")==="all",o,f,s;h&&(u===1||u===2)?this.selectDiffs([i.Diff],u,e):(o=r.closest("[rql-comparer-row]"),f=parseInt(o.attr("rql-comparer-row")),f>=0&&(s=i.globalDiffList[f],this.selectDiffs([s],u,e)),n("#"+i.Diff.CheckboxId1).prop("checked",!1),n("#"+i.Diff.CheckboxId2).prop("checked",!1))},onCollectValues:function(n){var t=this.config,i,r,u;t.Id&&!t.ReadOnly&&(i={Controls:[]},r=t.MergerMode&&t.MergerMode.toLowerCase()==="snapshot",this.collectSelections(t.Diff?t.Diff.Controls:null,i.Controls,r),u=i.Controls.length!==0?JSON.stringify(i):"",n.values.add($f("__comparer_{0}",t.Id),u))},collectSelections:function(n,t,i){var o,r,e,s,h,u,f,c;if(n)for(o=0;o<n.length;o++){if(r=n[o],e={Id:r.Id,Side:r.Side},r.ListItems){for(s=[],h=0;h<r.ListItems.length;h++)u=r.ListItems[h],f={Id1:u.Id1,Id2:u.Id2},u.Side&&(f.Side=u.Side),c=[],this.collectSelections(u.Controls,c,i),c.length!==0&&(f.Controls=c),(f.Side||f.Controls||i)&&s.push(f);s.length!==0&&(e.ListItems=s)}(e.Side||e.ListItems||i)&&t.push(e)}}};t.registerClass("$rql.ui.controls.comparer",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.captcha=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){this.config=n.extend({},t);this.config.ProviderName==="GoogleRecaptcha"?$rql.api.require("recaptcha",this.render)&&this.render():this.config.ProviderName==="SimpleCaptcha"&&this.renderSimple()},dispose:function(){this.off();t.callBaseMethod(this,"dispose")},render:function(){this.$.html("<div style='border:transparent solid 2px;'><\/div>");this.$placeholder=this.$.find("div");this.widgetId=grecaptcha.enterprise.render(this.$placeholder[0],{sitekey:this.config.SiteKey,callback:this.verifyToken});this.register()},renderSimple:function(){this.$.html("<div style='border:transparent solid 2px;'><div style='display: inline-flex; gap: 10px; align-items: center; background-color: #f9f9f9; border: 1px solid #d3d3d3; padding: 20px'><i class='fas fa-user fa-lg' style='cursor: pointer;' data-type='human'><\/i><div>I'm not a robot.<\/div><div style='width: 50px'><\/div><i class='fas fa-robot fa-lg' style='cursor: pointer;' data-type='robot'><\/i><div>I'm a robot.<\/div><\/div><\/div>");this.$placeholder=this.$.find("div").first();var t=this;this.$.find("i").on("click",function(){var i=this.getAttribute("data-type");n(this).addClass(i==="human"?"green-text":"red-text");setTimeout(()=>{t.verifyToken(i)},1e3)});this.register()},resetSimple:function(){this.$.find("i").removeClass("green-text red-text")},register:function(){this.config.Form&&this.config.Form.registerCaptcha&&this.config.Form.registerCaptcha(this)},unregister:function(){this.config.Form&&this.config.Form.unregisterCaptcha&&this.config.Form.unregisterCaptcha()},highlight:function(){this.$placeholder.addClass("border-danger");this.$placeholder[0].scrollIntoView({behavior:"smooth",block:"center"})},verifyToken:function(n){$rql.http.post("/rql/core/captcha",{Token:n}).done(this.processVerification)},processVerification:function(n){if(n.Success){this.unregister();var t=this;this.$placeholder.hide({duration:700,complete:function(){t.$placeholder.remove();t.config.Postback&&t.config.Form.refresh()}})}else this.highlight(),this.config.ProviderName==="GoogleRecaptcha"?grecaptcha.reset(this.widgetId):this.config.ProviderName==="SimpleCaptcha"&&this.resetSimple()}};t.registerClass("$rql.ui.controls.captcha",$rql.ui.controls.view)})(jQuery);
(function(n){var i=$rql.ui.controls.scheduler=function(n,t){i.initializeBase(this,[n,t])},t;i.prototype={initialize:function(t){var i=this.config=n.extend({Empty:!1},t);this.candidateClasses=[{list:"border-info",unconfirmed:"text-black bg-white border border-info border-2",task:"text-white bg-info"},{list:"border-secondary",unconfirmed:"text-black bg-white border border-secondary border-2",task:"text-white bg-secondary"},{list:"border-danger",unconfirmed:"text-black bg-white border border-danger border-2",task:"text-white bg-danger"},{list:"border-warning",unconfirmed:"text-black bg-white border border-warning border-2",task:"text-white bg-warning"},{list:"border-success",unconfirmed:"text-black bg-white border border-success border-2",task:"text-white bg-success"},{list:"border-dark",unconfirmed:"text-black bg-white border border-dark border-2",task:"text-white bg-dark"}];this.selectedTaskStoreId=null;this.selectedCandidateId=null;this.selectedStartDate="2020-04-26";this.selectedEndDate="2020-06-06";this.taskStartDate=null;this.taskEndDate=null;this.render()},dispose:function(){var n=this.config;this.off();this.$.off();this.$candidatesContainer.off();this.$closeTaskAction.off();i.callBaseMethod(this,"dispose")},render:function(){var n=this.config,t=$rql.ui.templates("scheduler");this.$.empty().append(t.render(n));this.on({schedule:this.onSchedule});this.widgetize();this.$tasksContainer=this.$.find("[rql-role='scheduler-tasks-container']");this.$taskContainer=this.$.find("[rql-role='scheduler-task-container']");this.$taskActions=this.$.find("[rql-role='scheduler-task-actions']");this.$taskView=this.$.find("[rql-role='scheduler-task-view']");this.$candidatesContainer=this.$.find("[rql-role='scheduler-candidates-container']");this.$candidates=null;this.$candidateContainer=this.$.find("[rql-role='scheduler-candidate-container']");this.$candidateView=this.$.find("[rql-role='scheduler-candidate-view']");this.$scheduleActions=this.$.find("[rql-role='scheduler-schedule-actions']");this.$closeTaskAction=this.$taskActions.find("[rql-role='scheduler-task-close']");this.$candidatesContainer.on("change","[rql-role='scheduler-candidate']",this.onCandidateCheck);this.$candidatesContainer.on("click","[rql-role='scheduler-candidate-selector']",this.onCandidateSelect);this.$closeTaskAction.on("click",this.onCloseTask);this.createTasksQueue();this.switchToTasks();this.$calendarContainer=this.$.find('[rql-role="scheduler-right"]');this.calendar=new $rql.ui.controls.fullcalendar(this.$calendarContainer,{eventOrder:"seq,start,allDay,-duration,title",taskScheduled:this.onTaskScheduled,eventDrop:this.onEventDrop,eventClick:this.onEventClick});window.setTimeout(this.createCalendarEventSourceForScheduledTasks,1e3)},switchToTasks:function(){this.$taskContainer.hide();this.$candidateContainer.hide();this.$tasksContainer.show();this.disposeTaskView()},switchToTask:function(){this.$tasksContainer.hide();this.$taskContainer.show()},onTaskSelected:function(t,i,r){if(t){t.stopPropagation();t.preventDefault();var u=n(t.currentTarget).attrs();i||(i=u.href.splitAndTrim("/").last())}return i&&(this.selectedTaskStoreId=i,this.disposeTaskView(),this.createTaskView(i),this.switchToTask(),this.calendarClearEvents(),this.createCalendarEventSourceForTaskRecommendation(r)),!1},onTaskStartDragging:function(t){var c=this.calendar,l=t.target,s=t.originalEvent,f,r,e;if(this.tasksViewControl){var h=this.tasksViewControl.config.DataPage,o=h.Properties,a=h.Items,v=n(l).attr("rql-record"),u=a.findByKey("Url",v),i={id:u.Key,title:u.Values[o.Location_Name.Index].Value,duration:u.Values[o.Duration.Index].Value,durationUnit:u.Values[o.Duration_Unit.Index].Value,allDay:!0};s.dataTransfer.setData("eventData",JSON.stringify(i));f=c.getDayGridMonthCellDimensions();r={width:64,height:64};f&&(r.height=f.height,r.width=f.width*parseInt(i.duration));e=this.$.find("#calendar-audit-dragdrop").css({width:r.width+"px",height:r.height+"px"});e.find('[rql-role="eventdata-line-1"]').html(i.title);e.find('[rql-role="eventdata-line-2"]').html(i.duration+" "+i.durationUnit);s.dataTransfer.setDragImage(e[0],0,0)}},onTaskScheduled:function(n){this.onTaskSelected(null,n.id,n.start)},onCloseTask:function(){this.disposeTaskView();this.switchToTasks();this.calendarClearEvents();this.selectedCandidateId=null;this.createCalendarEventSourceForScheduledTasks()},calendarClearEvents:function(){this.calendar.clearEvents()},calendarSetAuditorEvents:function(t){if(t&&t.length!==0){var r=this.config,i=this.calendar;n.each(t,function(n,t){$rql.http.post("/rql/scheduler/events/info",{Id:t.Id,EventsType:"auditor"}).done(function(n){var u={};u.id=t.Id;u.backgroundColor=n.BackgroundColor;u.textColor=n.TextColor;u.className=n.ClassName;u.events=function(n,u){$rql.http.post("/rql/scheduler/auditor/events",{SchedulerStoreId:r.Form.config.StoreId,AuditorId:t.Id,DateRangeStart:n.startStr,DateRangeEnd:n.endStr}).done(function(t){var r=i.processSchedulerEvents(t.SourceId,t.SchedulerEvents,n.start,n.end);u(r)})};i.setEventSource(u)})})}},createTasksQueue:function(){var t=this.config,e,i;if(t.UnscheduledTasksQueue){var o=t.Form.config.StoreId,s=this.$,r=t.UnscheduledTasksQueue,u=r.split(".",2),f={Id:r,AppName:u[0],ViewName:u[1],StoreId:o,IsEmbed:!0,Form:t.Form,ParentContainer:s,onItemSelected:this.onTaskSelected,onQueueLoaded:this.onTasksQueueRendered};t.UnscheduledTasksQueueAccessToken&&(f.AccessToken=t.UnscheduledTasksQueueAccessToken);e=n("<div><\/div>").appendTo(n(this.$tasksContainer));i=this.tasksViewControl=new $rql.ui.controls.queue(e,f);i.$.attr("rql-skipWidgetizing","true");i.show()}},onTasksQueueRendered:function(){if(this.tasksViewControl){var n=this.tasksViewControl.$.find("table:first-child tbody tr[rql-record]");if(n.length>0){n.attr("draggable","true");n.on({dragstart:this.onTaskStartDragging})}}},createTaskView:function(t){var u=this.config,f=this.$,i=u.UnscheduledTaskView,r=i.split(".",2),e={Id:i,AppName:r[0],ViewName:r[1],Type:"Form",StoreId:t,ParentContainer:f},o=n("<div><\/div>").appendTo(n(this.$taskView));this.taskViewControl=new $rql.ui.controls.form(o,e);this.taskViewControl.loaderDisabled=!0;this.taskViewControl.show()},disposeTaskView:function(){this.taskViewControl&&this.taskViewControl.dispose();this.taskViewControl=null;n(this.$taskView).empty()},createCalendarEventSourceForScheduledTasks:function(){var i=this,t="SCHEDULED-TASKS",n={};n.id=t;n.className="white-text bg-primary";n.events=function(n,r,u){i.sendScheduledTasksRequest(t,n,r,u)};this.calendar.setEventSource(n)},sendScheduledTasksRequest:function(n,t,i){var r=this.config,u=this;$rql.http.post("/rql/scheduler/tasks/scheduled",{SchedulerStoreId:r.Form.config.AppName+"."+r.Form.config.StoreId,SchedulerId:u.config.SchedulerId,StartDate:t.startStr,EndDate:t.endStr}).done(function(r){u.processScheduledTasksResponse(r,{calendarSourceId:n,calendarStartDate:t.start,calendarEndDate:t.end,successCallback:i})})},processScheduledTasksResponse:function(t,i){var r=[],u;t.Tasks&&(this.processScheduledTasksDates(t.Tasks),r=n.map(t.Tasks,function(n){return{Id:n.Id,Title:n.Title,Start:n.StartDate,End:n.EndDate,AllDay:!!n.AllDay,Editable:!1}}));u=this.calendar.processSchedulerEvents(i.calendarSourceId,r,i.calendarStartDate,i.calendarEndDate);i.successCallback(u)},processScheduledTasksDates:function(n){var i,t;if(n&&n.length)for(i=0;i<n.length;i++)t=n[i],t.StartDate=new Date(t.StartDate),t.EndDate?t.EndDate=new Date(t.EndDate):t.Duration&&t.DurationUnit==="day"?(t.StartDate=t.StartDate.clearTime(),t.EndDate=t.StartDate.addDays(t.Duration),t.AllDay=!0):t.Duration&&t.DurationUnit==="hour"&&(t.EndDate=t.StartDate.addHours(t.Duration))},createCalendarEventSourceForTaskRecommendation:function(n){var r=this,i="TASK-"+this.selectedTaskStoreId,t={};t.id=i;t.backgroundColor="#ececec";t.textColor="#000";t.events=function(t,u,f){r.sendTaskRecommendationRequest(i,n,t,u,f)};this.calendar.setEventSource(t)},sendTaskRecommendationRequest:function(n,t,i,r){var f=this.config,u;this.selectedStartDate=i.startStr.substring(0,10);this.selectedEndDate=i.endStr.substring(0,10);u=this;$rql.http.post("/rql/scheduler/task/recommendation",{SchedulerStoreId:f.Form.config.AppName+"."+f.Form.config.StoreId,SchedulerId:u.config.SchedulerId,StartDate:i.startStr,EndDate:i.endStr,ChosenTaskStartDate:t?t.toISOString():undefined,TaskId:u.selectedTaskStoreId}).done(function(t){u.processTaskRecommendationResponse(t,{calendarSourceId:n,calendarStartDate:i.start,calendarEndDate:i.end,successCallback:r})})},processTaskRecommendationResponse:function(t,i){var r,u,f;this.calendar.config.calendar.removeAllEvents();r=[];t.BlackoutDates&&(r=n.map(t.BlackoutDates,function(n){return{Id:n.Id,Title:n.Title,Start:n.StartDate,End:n.EndDate,AllDay:!0,RRule:n.RRule,IsBackground:!0}}));u=this.calendar.processSchedulerEvents(i.calendarSourceId,r,i.calendarStartDate,i.calendarEndDate);n.each(u,function(n,t){t.overlap=!1});i.successCallback(u);t.RecommendedStartDate&&t.RecommendedEndDate&&(this.taskStartDate=new Date(t.RecommendedStartDate),this.taskEndDate=new Date(t.RecommendedEndDate),this.taskAllDay=this.taskStartDate.getMonth()!==this.taskEndDate.getMonth()||this.taskStartDate.getDate()!==this.taskEndDate.getDate(),f={id:"NEW",title:"SCHEDULING",start:this.taskStartDate,end:this.taskEndDate,allDay:this.taskAllDay,durationEditable:!1,classNames:"text-white bg-primary",seq:10},this.calendar.config.calendar.addEvent(f),this.processCandidates(t.Candidates),this.requestCheckedCandidatesSchedules())},onEventDrop:function(n){if(n.event.id==="NEW"){if(this.taskStartDate=n.event.start,this.taskEndDate=n.event.end||this.taskStartDate,this.candidates)for(var t=0;t<this.candidates.length;t++)this.hideCandidateSchedule(this.candidates[t]);this.sendTaskCandidatesRequest()}},onEventClick:function(n){n.event.extendedProps&&n.event.extendedProps.candidateId&&this.selectCandidate(n.event.extendedProps.candidateId)},sendTaskCandidatesRequest:function(){var n=this.config,t={SchedulerStoreId:n.Form.config.AppName+"."+n.Form.config.StoreId,SchedulerId:this.config.SchedulerId,StartDate:this.taskStartDate,EndDate:this.taskEndDate,TaskId:this.selectedTaskStoreId};$rql.http.post("/rql/scheduler/task/candidates",t,t).done(this.processTaskCandidatesResponse)},processTaskCandidatesResponse:function(n){this.processCandidates(n.Candidates);this.requestCheckedCandidatesSchedules()},sendCandidateScheduleRequest:function(n){var t=this.config,i={SchedulerStoreId:t.Form.config.AppName+"."+t.Form.config.StoreId,SchedulerId:this.config.SchedulerId,StartDate:this.selectedStartDate,EndDate:this.selectedEndDate,CandidateId:n};$rql.http.post("/rql/scheduler/candidate/schedule",i,i).done(this.processCandidateScheduleResponse)},processCandidateScheduleResponse:function(n,t,i){var u=i&&i.context?i.context.CandidateId:null,r=u?this.candidates.findByKey("Id",u):null;r&&(r.Tasks=n.Tasks||[],this.processScheduledTasksDates(r.Tasks),this.showCandidateSchedule(r))},showCandidateSchedule:function(n){var i,t,r,u;if(n.Tasks)for(i=0;i<n.Tasks.length;i++)t=n.Tasks[i],t.calendarEventId=n.Id+"-"+t.TaskId,r={id:t.calendarEventId,title:t.Title,start:t.StartDate,end:t.EndDate,allDay:!!t.AllDay,editable:!1,classNames:n.Classes.task,extendedProps:{candidateId:n.Id}},this.calendar.config.calendar.addEvent(r);u={id:n.Id+"-unconfirmed",title:n.Name,start:this.taskStartDate,end:this.taskEndDate,allDay:this.taskAllDay,editable:!1,classNames:n.Classes.unconfirmed,extendedProps:{seq:20,candidateId:n.Id}};this.calendar.config.calendar.addEvent(u)},hideCandidateSchedule:function(n){var t,i,r,u;if(n.Tasks)for(t=0;t<n.Tasks.length;t++)i=n.Tasks[t],i.calendarEventId&&(r=this.calendar.config.calendar.getEventById(i.calendarEventId),r&&r.remove());u=this.calendar.config.calendar.getEventById(n.Id+"-unconfirmed");u&&u.remove()},createCandidateView:function(t){var u=this.config,f=this.$,i=u.CandidateView,r=i.split(".",2),e={Id:i,AppName:r[0],ViewName:r[1],Type:"Form",StoreId:t,ParentContainer:f},o=n("<div><\/div>").appendTo(this.$candidateView);this.candidateViewControl=new $rql.ui.controls.form(o,e);this.candidateViewControl.loaderDisabled=!0;this.candidateViewControl.show()},disposeCandidateView:function(){this.candidateViewControl&&this.candidateViewControl.dispose();this.candidateViewControl=null;this.$candidateView.empty()},processCandidates:function(n){var t,i,r;for(this.candidates=n||{},t=0;t<this.candidates.length;t++)t<this.candidateClasses.length&&(i=this.candidates[t],i.Index=t,i.Classes=this.candidateClasses[t],t<3&&(i.Checked=!0));r=$rql.ui.templates("scheduler-candidates");this.$candidatesContainer.empty();this.candidates.length!==0&&this.$candidatesContainer.append(r.render({Candidates:this.candidates}));this.$candidates=this.$candidatesContainer.find("[rql-role='scheduler-candidate']")},requestCheckedCandidatesSchedules:function(){for(var t,n=0;n<this.candidates.length;n++)t=this.candidates[n],t.Checked&&this.sendCandidateScheduleRequest(t.Id)},onCandidateCheck:function(t){var f=this.config,r=n(t.currentTarget),u=r.attr("rql-scheduler-candidate-id"),i=u?this.candidates.findByKey("Id",u):null;i&&(i.Checked=r.find("input[type='checkbox']").is(":checked"),i.Checked?i.Tasks?this.showCandidateSchedule(i):this.sendCandidateScheduleRequest(i.Id):this.hideCandidateSchedule(i))},onCandidateSelect:function(t){var u=this.config,i=n(t.currentTarget).closest("[rql-role='scheduler-candidate']"),r=i.attr("rql-scheduler-candidate-id");this.selectCandidate(r)},selectCandidate:function(n){var t,i;this.selectedCandidateId!==n&&(t=this.selectedCandidateId?this.candidates.findByKey("Id",this.selectedCandidateId):null,t&&this.$candidatesContainer.find($f("div[rql-scheduler-candidate-id='{0}']",t.Id)).removeClass(t.Classes.task),i=n?this.candidates.findByKey("Id",n):null,i&&this.$candidatesContainer.find($f("div[rql-scheduler-candidate-id='{0}']",i.Id)).addClass(i.Classes.task),this.selectedCandidateId=n,this.disposeCandidateView(),this.createCandidateView(this.selectedCandidateId),this.$candidateContainer.show())},onSchedule:function(){var i=this.config,n;if(this.selectedCandidateId){t||(t=$rql.ui.div("scheduler-dialog"));t.html($rql.ui.templates("scheduler-dialog").render({Title:"Confirmation",Content:!0,ModalFooter:" "}));n=t.find("[rql-role='content']");this.scheduleConfirmationViewControl=this.createModalScheduleView(this.selectedTaskStoreId,n);this.scheduleConfirmationViewControl.on({saved:this.onConfirmationSaved,cancelled:this.onConfirmationCancelled});this.scheduleConfirmationViewControl.refresh({State:"EditInPlace"});t.show().widgetize()}},createModalScheduleView:function(n,t){var u=this.config,f=this.$,i=u.ConfirmationView,r=i.split(".",2),e={Id:i,AppName:r[0],ViewName:r[1],Type:"Form",StoreId:n,ParentContainer:f,ArgumentValues:{"RQL.Scheduler.CandidateId":this.selectedCandidateId,"RQL.Scheduler.StartDate":this.taskStartDate.toISOString()}};return new $rql.ui.controls.form(t,e)},closeScheduleConfirmationDialog:function(){t&&(t.find(".modal").modal("hide"),this.hideModals(!0),this.scheduleConfirmationViewControl.dispose(),this.scheduleConfirmationViewControl=null,t.empty())},onConfirmationSaved:function(){this.closeScheduleConfirmationDialog();this.onCloseTask();this.tasksViewControl.refresh()},onConfirmationCancelled:function(){this.closeScheduleConfirmationDialog()}};i.registerClass("$rql.ui.controls.scheduler",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.schedulerresults=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(t){var r=this,i=this.config=n.extend({Empty:!1},t);i.ElementId=this.elementId;this.render()},dispose:function(){var i=this.config,n;if(this.off(),this.$.off(),i.Calendars)for(n=0;n<i.Calendars.length;n++)i.Calendars[n].destroy();t.callBaseMethod(this,"dispose")},render:function(){this.config.DateRangeFromAsDate=new Date(this.config.DateRangeFrom);this.config.DateRangeToAsDate=new Date(this.config.DateRangeTo);var n=$rql.ui.templates("scheduler-results");this.$.empty().append(n.render(this.config));this.on({moveMonth:this.onMoveMonth,dateSelected:this.onDateSelected,search:this.onSearch,clearSearch:this.onClearSearch,changePageSize:this.onChangePageSize,changePage:this.onChangePage,sort:this.onSort,toggleReverseLookup:this.onToggleReverseLookup});this.widgetize();this.getEligibleAuditors()},onResults:function(t){var f=this,i=this.config,r,u;i.LatestResponse=t;r=this.prepareModel();n.extend(i,{ItemModel:r,SearchPlaceholder:"Auditor",CurrentPageIndex:0,CurrentPageSize:5});u=$rql.ui.templates("scheduler-results");this.$.empty().append(u.render(i));this.widgetize();this.$table=this.$.find($f("table#{0}",i.ElementId));this.$rows=this.$table.find("tbody > tr[rql-id], tbody > tr[rql-child-of]");this.setPaging();this.$.find("input[rql-id='search']").on("keyup",function(n){if(n.key==="Enter"||n.keyCode===13){n.preventDefault();n.stopPropagation();f.onSearch(n)}})},onAuditResults:function(t){var c=this,u=this.config,r,i,o,s,h;if(t){var f={Headers:u.AuditLookupResultHeaders.splitAndTrim("|"),SearchFrom:new Date(t.SearchFrom).format(u.ResultDateFormatPattern||"dd-MMM-yyyy"),SearchTo:new Date(t.SearchTo).format(u.ResultDateFormatPattern||"dd-MMM-yyyy")},e=[],l=t.ResourceId;for(r=0;r<t.Audits.length;r++)i=t.Audits[r],o={AuditId:i.AuditId,AuditNumber:i.AuditNumber,Location:i.AuditLocationName,Service:i.ServiceName,DistanceFromPreviousAuditLocation:i.DistanceFromPreviousAuditLocation.toFixed(2),DistanceFromHome:i.DistanceFromHome.toFixed(2)},e.push(o);f.Audits=e;e.length===0&&(f.NoAudits=!0);s=$rql.ui.templates("scheduler-snippets");h=s.render(n.extend({ReverseLookup:!0},f));c.$table.find($f("#{0}_audits",l)).html(h)}},onSearch:function(t){var i=n(t.currentTarget).siblings("input[rql-id='search']"),r;if(i.length===0&&n(t.currentTarget).is("input")&&(i=n(t.currentTarget)),i.length>0&&i.val()!==""){this.searchMode=!0;var e=i.val().toLowerCase(),h=this.$table,u=this.$rows;for(r=0;r<u.length;r++){var f=n(u[r]),o=f.attr("rql-id"),s=f.find('td[data-header="Name"]').text().toLowerCase();s.contains(e)&&o&&(f.attr("rql-filtered","true"),n(u[++r]).attr("rql-filtered","true"))}i.siblings('[rql-role="btn-clearsearch"]').show();i.siblings('[rql-role="btn-search"]').hide();this.setPaging()}},onClearSearch:function(t){var i=n(t.currentTarget),u=this.$table,r=this.$rows;i.hide();i.siblings('[rql-role="btn-search"]').show();i.siblings('input[rql-id="search"]').val("");r.removeAttr("rql-filtered");delete this.searchMode;this.setPaging()},onChangePageSize:function(t){var i=n(t.currentTarget),r=parseInt(i.attr("rql-data"));r!==this.config.CurrentPageSize&&(this.config.CurrentPageSize=r,this.config.CurrentPageIndex=0,this.setPaging(),i.siblings('[rql-action="changePageSize"]').removeClass("active z-depth-0"),i.addClass("active z-depth-0"))},onChangePage:function(t){var r=this.config,f=r.CurrentPageSize,i=r.CurrentPageIndex,o=n(t.currentTarget).attr("rql-data"),e=this.searchMode?Math.ceil(this.$rows.filter("[rql-filtered]").length/2):Math.ceil(this.$rows.length/2),u=Math.ceil(e/f);if(!(e<=f)){switch(o){case"--":i=0;break;case"-":i--;i<0&&(i=0);break;case"+":i++;i+1>u&&(i=u-1);break;case"++":i=u-1}i!==r.CurrentPageIndex&&(r.CurrentPageIndex=i,this.setPaging())}},onSort:function(t){if(this.config.ItemModel&&!this.config.ItemModel.NoData){var i="text-black",r=n(t.currentTarget),u=r.find('i[rql-role="icon-ascending"]'),f=r.find('i[rql-role="icon-descending"]'),e=r.find('[rql-role="sort-text"]'),c=u.is(":visible")?"asc":f.is(":visible")?"desc":"none",o=c==="asc"?"desc":"asc",s=this.config.LatestResponse.ColumnHeaders.indexOf(e.text()),h=n(n(this.$rows[0]).find("td[rql-datatype]")[s]).attr("rql-datatype");h!=="object"&&(this.sortColumn(s,h,o),this.$table.find("thead th a[rql-action='sort']").each(function(t,r){n(r).find("i").hide();n(r).find("span[rql-role='sort-text']").removeClass(i)}),o==="asc"?(u.show(),f.hide(),e.addClass(i)):o==="desc"&&(u.hide(),f.show(),e.addClass(i)))}},onToggleReverseLookup:function(t){var u=this,i=n(t.currentTarget).attr("data-target"),r=n(t.currentTarget).find("i");this.$.find(i).data("bs.collapse")?this.$.find(i).data("bs.collapse").toggle():this.$.find(i).on("show.bs.collapse",u.getEligibleAudits).on("shown.bs.collapse",function(){r.removeClass("fa-chevron-down").addClass("fa-chevron-up")}).on("hidden.bs.collapse",function(){r.removeClass("fa-chevron-up").addClass("fa-chevron-down")}).collapse("toggle")},onMoveMonth:function(t){var u=n(t.currentTarget),h=u.attr("rql-resource-id"),c=u.attr("rql-direction"),l=parseInt(u.attr("rql-month")),a=parseInt(u.attr("rql-year")),r=new Date(a,l,1),v=new Date(this.config.DateRangeFrom),y=new Date(this.config.DateRangeTo),p=v.addMonths(-1),w=y.addMonths(1),f=!1,i,e,o,s;c==="prev"?(i=r.addMonths(-1),e=new Date(i.getFullYear(),i.getMonth()+1,0),f=new Date(r.getFullYear(),r.getMonth(),1).addMonths(-1)>=p):(i=r.addMonths(1),e=new Date(i.getFullYear(),i.getMonth()+1,0),f=new Date(r.getFullYear(),r.getMonth(),1).addMonths(1)<=w);f&&(o=this.createAuditCalendar(i,h),s=u.closest("[rql-role='cal-wrapper']").parent(),s.html(o),this.widgetize())},onDateSelected:function(t){var c=this,i=n(t.currentTarget),e=i.closest("table"),o=i.hasClass("active");e.find("button[rql-action='dateSelected'].hover-highlight.active").removeClass("active");var u=e.closest("td[rql-role='calendar']").find("div[rql-role='select-lookup']"),f=this.$table.find($f("tr[rql-child-of='{0}'] td div[rql-role='reverseLookupContentWrapper']",i.attr("rql-store-id"))),s=f.find("button[rql-action='toggleReverseLookup']"),h=s.attr("data-target"),r=f.find(h);r.length>0&&r.data("bs.collapse")&&r.data("bs.collapse").hide();o?(u.find('[rql-button-style="LookupSelect"]').attr("rql-value-when-valid",i.attr("rql-store-id")),u.hide(),f.hide(),r.attr("rql-selected-date","")):(this.updateSelectedDateInCalendar(i),u.find('[rql-button-style="LookupSelect"]').attr("rql-value-when-valid",$f("{0}?audmatch_selectedDate={1}",i.attr("rql-store-id"),i.attr("rql-selected-date"))),u.show(),f.show(),r.attr("rql-selected-date",i.attr("rql-selected-date")))},prepareModel:function(){var r=this,t={Headers:this.config.LatestResponse.ColumnHeaders},u=this.config.LatestResponse.Resources,e=this.config.LatestResponse.LocationRegionAvailableDates,i,n,f;if(u.length===0)t.NoData=!0;else for(t.rows=[],i=0;i<u.length;i++)n=u[i],f=r.createAuditCalendar(r.config.DateRangeFromAsDate,n.UserId),t.rows.push({Id:n.UserId,Name:n.UserName,Proximity:n.DistanceToLocation.toFixed(2),ProximitySort:n.DistanceToLocationSort,BestDate:new Date(n.BestSchedulingDate).format(r.config.ResultDateFormatPattern||"dd-MMM-yyyy"),DatesCalendar:f,IsPreferred:n.IsPreferred,visible:!0});return t},createAuditCalendar:function(t,i){for(var h,l,y,it,p,a,d,u,ut,g,ft,et,nt=this.config,ot=function(n,t){var i=new Date(t,n+1,0);return i.getDate()},s=t.getFullYear(),e=t.getMonth(),v={Month:e,MonthName:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedMonthNames[e],Year:s,Weeks:[]},r=new Date(s,e,1),tt=ot(e,s),st=r.getDay(),o={Days:[]},f=0;f<st;f++)o.Days.push({Title:"",Empty:!0});for(l=!0,y=this.config.LatestResponse.LocationRegionUnavailableDays,i&&(a=this.config.LatestResponse.Resources.findByKey("UserId",i),a&&(it=a.AvailableDates,p=a.UnavailableDays)),f=1;f<=tt;f++){o.Days.length%7==0&&(v.Weeks.push(n.extend({},o)),o={Days:[]});var w=!0,c="",b=!1,k=!1,rt=new Date(s,e,f);if(l=rt>=nt.DateRangeFromAsDate&&rt<=nt.DateRangeToAsDate,h=$rql.api.dataTypes.Date.fromJson($f("{0}/{1}/{2:d}",e+1,f,s)).format("MM/dd/yyyy"),d=it.findByKey("DateString",h),y&&(r=y.findByKey("DateString",h),r))for(b=!0,u=0;u<r.Reasons.length;u++)c+=$f("{0} - {1}<br/>",r.Reasons[u].Source,r.Reasons[u].EventName.replaceAll(":","-"));if(p&&(r=p.findByKey("DateString",h),r))for(k=!0,u=0;u<r.Reasons.length;u++)c+=$f("{0} - {1}<br/>",r.Reasons[u].Source,r.Reasons[u].EventName.replaceAll(":","-"));if(w=!(k||b),w||!l||c||(c="Not enough consecutive days"),o.Days.push({Id:i,Title:f,Available:w,Date:h,InRange:l,EventDetail:c,LocationNotAvailable:b,AuditorNotAvailable:k,DistanceToLocation:d?d.DistanceToLocation.toFixed(2):null}),f===tt){for(ut=7-o.Days.length,g=0;g<ut;g++)o.Days.push({Title:"",Empty:!0});v.Weeks.push(o)}}return ft=$rql.ui.templates("scheduler-snippets"),et=ft.render({Calendar:!0,UserId:i,MonthName:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedMonthNames[e],Year:s,Month:e,Weekdays:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedDayNames,Weeks:v.Weeks}),et},setPaging:function(){var l=this.config,a=this.$table,r=this.searchMode?this.$rows.filter("[rql-filtered]"):this.$rows,o=Math.ceil(r.length/2),h=this.$.find('[rql-role="paging-summary"]'),s=this.$.find('[rql-role="pager"] [rql-role="pager-controls"]'),c=this.config.CurrentPageIndex,e=this.config.CurrentPageSize,u=c*e+1,f=u<o?u+e-1:o,t,i;for(this.searchMode&&this.$rows.filter(":not([rql-filtered])").hide(),t=0,i=0;i<r.length;i++)t+1>=u&&t+1<=f?n(r[i]).attr("rql-id")&&(n(r[i]).show(),n(r[++i]).show(),t++):n(r[i]).attr("rql-id")&&(n(r[i]).hide(),n(r[++i]).hide(),t++);f>t&&(f=t);h.html($f($rql.i18n.strings.DataPageSummaryFormat,u,f,t));t<=e?s.addClass("invisible"):s.removeClass("invisible")},sortColumn:function(t,i,r){var h=function(n){var i=Sys.CultureInfo.CurrentCulture.numberFormat,t=n.replace(i.CurrencySymbol,"");return(i.NumberDecimalSeparator!=="."?(t=t.replace(i.NumberDecimalSeparator,"#"),t=t.replace(i.NumberGroupSeparator,""),t=t.replace("#",".")):t=t.replace(i.NumberGroupSeparator,""),isNaN(t))?n:parseFloat(t)},a=function(n,t,i){return n.each(function(){t===0?i.prepend(n):i.children().eq(t-1).after(n)})},c=this.$table.find("> tbody"),v=this.$rows,l=[],f=r==="asc"?!0:!1,e,o,u,s;for(this.$rows.each(function(i,r){n(r).attr("rql-id")&&l.push({id:n(r).attr("rql-id"),value:n(r).find("td[rql-datatype]")[t].innerHTML})}),e=l.sort(function(n,t){var r=n.value,u=t.value;return i==="number"?(r=h(r),u=h(u),f?r-u:u-r):i==="string"?f?r.localeCompare(u):u.localeCompare(r):i==="date"?(r=new Date(r),u=new Date(u),f?r-u:u-r):void 0}),o=0,u=0;u<e.length;u++)s=c.find($f("tr[rql-id='{0}'], tr[rql-child-of='{0}']",e[u].id)),s.index()!==u&&(a(s,o,c),o+=2);this.$rows=this.$table.find("tbody > tr[rql-id], tbody > tr[rql-child-of]");this.setPaging()},updateSelectedDateInCalendar(t){for(var h=t.attr("rql-selected-date"),c=parseInt(this.config.ServiceDuration),r=this.config.ServiceDurationType,e=new Date(h),i=e,u=1,f=[e.format("MM/dd/yyyy")],o,s;u<c;)if(i=i.addDays(1),r==="weekdays"||r==="workingdays")i.getDay()>0&&i.getDay()<6&&(u++,f.push(i.format("MM/dd/yyyy")));else if(r==="days")u++,f.push(i.format("MM/dd/yyyy"));else break;o=t.closest("[rql-role='cal-wrapper'] table");s=o.find("td button[rql-selected-date]").filter(function(t,i){return f.contains(n(i).attr("rql-selected-date"))});s.addClass("active")},getEligibleAuditors:function(){var t=this,n=this.config;$rql.ui.applyContainerOverlay(this.$);$rql.http.post("/rql/scheduler/auditor/results",{ContextStoreId:n.ContextStoreId,LocationServiceId:n.LocationServiceId,LocationId:n.LocationId,ServiceVersionId:n.ServiceVersionId,ServiceVersionStepName:n.ServiceVersionStepName,MaxResults:$rql.api.dataTypes.Integer.parse(n.MaxResults),MaxDistance:$rql.api.dataTypes.Integer.parse(n.MaxDistance),AllowWeekends:Boolean.parse(n.AllowWeekends)===undefined?!1:Boolean.parse(n.AllowWeekends),DateRangeFrom:n.DateRangeFrom,DateRangeTo:n.DateRangeTo,LocationSkillsList:n.LocationSkillsList,LocationServiceSkillsList:n.LocationServiceSkillsList,LocationTimezone:n.LocationTimezone,DistanceUnit:n.DistanceUnit,ResultDateFormatPattern:n.ResultDateFormatPattern,AuditStoreId:n.AuditStoreId,ServiceDuration:n.ServiceDuration,ServiceDurationType:n.ServiceDurationType,AuditorLookupOptions:n.AuditorLookupOptions,ResourceDataInvokeExecute:n.ResourceDataInvokeExecute,ResourceRestrictionsDataInvokeExecute:n.ResourceRestrictionsDataInvokeExecute,LocationDataInvokeExecute:n.LocationDataInvokeExecute,LocationServiceDataInvokeExecute:n.LocationServiceDataInvokeExecute,RegionDataInvokeExecute:n.RegionDataInvokeExecute,ServiceDataInvokeExecute:n.ServiceDataInvokeExecute,DefaultBusinessHours:n.DefaultBusinessHours,ResultHeaders:n.ResultHeaders,ParseRecurringEvents:Boolean.parse(n.ParseRecurringEvents)===undefined?!1:Boolean.parse(n.AllowWeekends)}).done(function(n){$rql.ui.removeContainerOverlay(t.$);t.onResults(n)})},getEligibleAudits:function(t){var r=this,i=this.config,u=n(t.currentTarget),f=u.attr("rql-selected-date"),e=u.attr("rql-id"),o=i.Form.$.find("[rql-id='AuditLookup_Max_Distance']").val(),s=i.Form.$.find("[rql-id2='AuditLookup_Distance_Relative_To'] input[type='radio']:checked").attr("rql-value"),h=i.Form.$.find("[rql-id='AuditLookup_Max_Days']").val();$rql.ui.applyContainerOverlay(this.$);$rql.http.post("/rql/scheduler/reverseaudit",{AuditDataInvokeExecute:i.AuditDataInvokeExecute,AuditorDataInvokeExecute:i.AuditorDataInvokeExecute,RegionDataInvokeExecute:i.RegionDataInvokeExecute,ResourceRestrictionsDataInvokeExecute:i.ResourceRestrictionsDataInvokeExecute,ContextStoreId:i.ContextStoreId,LookupDateString:f,ResourceId:e,MaxDistance:$rql.api.dataTypes.Integer.parse(o),DistanceRelativeTo:s,DaysLimit:h,DefaultBusinessHours:i.DefaultBusinessHours,DistanceUnit:i.DistanceUnit,SchedulingLocationLatitude:i.LatestResponse.LocationLatitude,SchedulingLocationLongitude:i.LatestResponse.LocationLongitude,AllowWeekends:Boolean.parse(i.AllowWeekends)===undefined?!1:Boolean.parse(i.AllowWeekends),ParseRecurringEvents:Boolean.parse(i.ParseRecurringEvents)===undefined?!1:Boolean.parse(i.AllowWeekends),AuditId:i.AuditStoreId}).done(function(n){$rql.ui.removeContainerOverlay(r.$);r.onAuditResults(n)})}};t.registerClass("$rql.ui.controls.schedulerresults",$rql.ui.controls.view)})(jQuery);
(function(n){var t=$rql.ui.controls.customdatepicker=function(n,i){t.initializeBase(this,[n,i])};t.prototype={initialize:function(n){this.config=n;this.config.ElementId=this.elementId;this.config.SearchFrom=this.config.ResourceDateArguments?new Date(this.config.ResourceDateArguments.SearchFrom):new Date;this.config.SearchTo=this.config.ResourceDateArguments?new Date(this.config.ResourceDateArguments.SearchTo):this.config.SearchFrom.addDays(30);this.render()},dispose:function(){this.off();this.$.off();t.callBaseMethod(this,"dispose")},render:function(){var r=this,t=this.config,i;t.LocationName=t.ResourceDateArguments.LocationName;t.ServiceName=t.ResourceDateArguments.ServiceName;i=$rql.ui.templates("custom-datepicker");this.$.empty().append(i.render(t));this.on({moveMonth:this.onMoveMonth,dateSelected:this.onDateSelected});$footerButton=this.$.closest(".modal-dialog").find(".modal-footer button[data-dismiss='modal']");n($f('<button class="btn btn-sm btn-primary" id="setScheduleButton" style="display:none">{0}<\/button>',$rql.i18n.strings.Ok)).insertBefore($footerButton[0]);this.$.closest(".modal-dialog").find("#setScheduleButton").on("click",this.onSetSchedule);this.widgetize();t.ResourceDateArguments.ResourceId&&this.getCalendarEvents()},onSetSchedule:function(t){this.config.SetCustomDateValue&&this.config.SetCustomDateValue(n(t.currentTarget).attr("rql-selected-date"))},onMoveMonth:function(t){var f=this.config,r=n(t.currentTarget),o=r.attr("rql-direction"),s=parseInt(r.attr("rql-month")),h=parseInt(r.attr("rql-year")),e=new Date(h,s,1),i,u;if(o==="prev"){if(i=e.addMonths(-1),u=new Date(i.getFullYear(),i.getMonth()+1,0),i.getMonth()<(new Date).getMonth())return}else i=e.addMonths(1),u=new Date(i.getFullYear(),i.getMonth()+1,0);f.SearchFrom=i;f.SearchTo=u;this.getCalendarEvents()},onDateSelected:function(t){var e=this,r=n(t.currentTarget),u=r.closest("table"),f=r.hasClass("active"),i;u.find("button[rql-action='dateSelected'].hover-highlight.active").removeClass("active");i=this.$.closest(".modal-dialog").find("#setScheduleButton");f?(i.attr("rql-selected-date",""),i.hide()):(this.updateSelectedDateInCalendar(r),i.attr("rql-selected-date",r.attr("rql-selected-date")),i.show())},onCalendarEvents:function(n){if(n){var t=this.createCalendar(n.ResourceAvailableDays,n.ResourceUnavailableDays,n.LocationRegionUnavailableDays);this.$.find("#calendarContainer").empty().html(t);this.widgetize()}},getCalendarEvents:function(){var t=this,n=this.config;n.ResourceDateArguments&&$rql.http.post("/rql/scheduler/auditor/calendar",{ContextStoreId:n.ResourceDateArguments.ContextStoreId,SearchFrom:n.SearchFrom,SearchTo:n.SearchTo,ResourceId:n.ResourceDateArguments.ResourceId,LocationId:n.ResourceDateArguments.LocationId,LocationDataInvokeExecute:n.ResourceDateArguments.LocationDataInvokeExecute,AuditorDataInvokeExecute:n.ResourceDateArguments.AuditorDataInvokeExecute,RegionDataInvokeExecute:n.ResourceDateArguments.RegionDataInvokeExecute,DefaultBusinessHours:n.ResourceDateArguments.DefaultBusinessHours,DistanceUnit:n.ResourceDateArguments.DistanceUnit,ServiceDuration:n.ResourceDateArguments.ServiceDuration,ServiceDurationType:n.ResourceDateArguments.ServiceDurationType}).done(function(n){t.onCalendarEvents(n)})},createCalendar:function(t,i,r){for(var c,a,d,f,rt,g,ut,ft,v=this.config,nt=v.ResourceDateArguments.ResourceId,y=v.SearchFrom,et=v.SearchTo,ot=function(n,t){var i=new Date(t,n+1,0);return i.getDate()},h=y.getFullYear(),o=y.getMonth(),p={Month:o,MonthName:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedMonthNames[o],Year:h,Weeks:[]},u=new Date(h,o,1),tt=ot(o,h),st=u.getDay(),s={Days:[]},e=0;e<st;e++)s.Days.push({Title:"",Empty:!0});for(a=!0,e=1;e<=tt;e++){s.Days.length%7==0&&(p.Weeks.push(n.extend({},s)),s={Days:[]});var w=!0,l="",b=!1,k=!1,it=new Date(h,o,e);if(a=it>=y&&it<=et,c=$rql.api.dataTypes.Date.fromJson($f("{0}/{1}/{2:d}",o+1,e,h)).format("MM/dd/yyyy"),d=t.findByKey("DateString",c),r&&(u=r.findByKey("DateString",c),u))for(b=!0,f=0;f<u.Reasons.length;f++)l+=$f("{0} - {1}<br/>",u.Reasons[f].Source,u.Reasons[f].EventName.replaceAll(":","-"));if(i&&(u=i.findByKey("DateString",c),u))for(k=!0,f=0;f<u.Reasons.length;f++)l+=$f("{0} - {1}<br/>",u.Reasons[f].Source,u.Reasons[f].EventName.replaceAll(":","-"));if(w=!(k||b),w||!a||l||(l="Not enough consecutive days"),s.Days.push({Id:nt,Title:e,Available:w,Date:c,InRange:a,EventDetail:l,LocationNotAvailable:b,AuditorNotAvailable:k,DistanceToLocation:d?d.DistanceToLocation.toFixed(2):null}),e===tt){for(rt=7-s.Days.length,g=0;g<rt;g++)s.Days.push({Title:"",Empty:!0});p.Weeks.push(s)}}return ut=$rql.ui.templates("scheduler-snippets"),ft=ut.render({Calendar:!0,UserId:nt,MonthName:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedMonthNames[o],Year:h,Month:o,Weekdays:Sys.CultureInfo.CurrentCulture.dateTimeFormat.AbbreviatedDayNames,Weeks:p.Weeks}),ft},updateSelectedDateInCalendar(t){for(var e=this.config,c=t.attr("rql-selected-date"),l=parseInt(e.ResourceDateArguments.ServiceDuration),r=e.ResourceDateArguments.ServiceDurationType,o=new Date(c),i=o,u=1,f=[o.format("MM/dd/yyyy")],s,h;u<l;)if(i=i.addDays(1),r==="weekdays"||r==="workingdays")i.getDay()>0&&i.getDay()<6&&(u++,f.push(i.format("MM/dd/yyyy")));else if(r==="days")u++,f.push(i.format("MM/dd/yyyy"));else break;s=t.closest("[rql-role='cal-wrapper'] table");h=s.find("td button[rql-selected-date]").filter(function(t,i){return f.contains(n(i).attr("rql-selected-date"))});h.addClass("active")}};t.registerClass("$rql.ui.controls.customdatepicker",$rql.ui.controls.view)})(jQuery);
(function ($) {
    var control = $rql.ui.controls.fullcalendar = function (element, options) {
        control.initializeBase(this, [element, options]);
    };

    control.prototype = {
        initialize: function (options) {
            var defaults = { Empty: false }
            var cfg = this.config = $.extend(defaults, options),
                self = this;

            if (window.FullCalendar != null) {
                self.render();
            } else {
                $rql.api.require("fullcalendar",
                    function() {
                        self.render();
                    });
            }
        },
        dispose: function () {
            var cfg = this.config;
            this.off();
            this.$.off();
            if (this.config.calendar) this.config.calendar.destroy();
            control.callBaseMethod(this, "dispose");
        },
        render: function () {
            var self = this;
            this.$calendarContainer = this.$.find("#calendarContainer");
            this.widgetize();

            //new window.FullCalendar.Draggable(this.config.dragSourceContainer,
            //    {
            //        itemSelector: "tr.draggable",
            //        eventData: function(eventEl) {
            //            return {
            //                title: eventEl.innerText
            //            }
            //        }
            //    });

            var calendar = this.config.calendar = new window.FullCalendar.Calendar(this.$calendarContainer[0], this.getCalendarConfig());
            calendar.render();

            this.$calendarContainer.on({
                "dragenter": this.onDragEnter,
                "dragover": this.onDragOver,
                "dragleave": this.onDragLeave,
                "drop": this.onDrop
            });
        },
        onDragEnter: function(e) {
            e.preventDefault();
            //this.$calendarContainer.css("border", "1px dashed #000");
        },
        onDragOver: function(e) {
            e.preventDefault();
            this.$calendarContainer.css("border", "1px dashed #000");
        },
        onDragLeave: function(e) {
            this.$calendarContainer.css("border", "");
        },        
        onDrop: function(e) {
            this.$calendarContainer.css("border", "");
            var date = $(e.target).closest("[data-date]").attr("data-date");
            var calendar = this.config.calendar;

            var eventData = JSON.parse(e.originalEvent.dataTransfer.getData("eventData"));

            if (eventData) {
                var evtSource = calendar.getEventSourceById(eventData.id);
                if (!evtSource)
                    evtSource = {
                        id: "scheduler-tasks",
                        events: []
                        //TODO: add other info for eventSource...should be included in eventData
                    }
                var start = new Date(date).toUTC();
                var end = new Date(date).toUTC();
                switch (eventData.durationUnit) {
                    case "day":
                        end = end.addDays(parseInt(eventData.duration));
                        break;
                }
                var event = {
                    id: eventData.id,
                    title: eventData.title,
                    start: start,
                    end: end,
                    allDay: eventData.allDay
                };
                evtSource.events.push(event);

                calendar.addEventSource(evtSource);
                if (this.config.taskScheduled)
                    this.config.taskScheduled(event);
            }
        },
        getCalendarConfig: function() {
            return {
                headerToolbar: {
                    start: "prev,next,today",
                    center: "title",
                    right: "dayGridMonth,timeGridWeek"
                },
                dayMaxEvents: false, //disable the +more link 
                editable: true,
                droppable: true,
                eventDrop: this.config.eventDrop,
                eventOrder: this.config.eventOrder,
                eventClick: this.config.eventClick
            }
        },
        getDayGridMonthCellDimensions: function() {
            var calendar = this.config.calendar;
            if (calendar.view.type === "dayGridMonth") {
                var $gridCell = $(calendar.el).find(".fc-daygrid-day[data-date]").first();
                return {
                    width: $gridCell.width(),
                    height: $gridCell.height()
                }
            }
            return null;
        },
        clearEvents: function() {
            this.config.calendar.removeAllEvents();
            this.config.calendar.removeAllEventSources();
        },
        processSchedulerEvents: function(evtSourceId, schedulerEvents, start, end) {
            var self = this, events = [], calendar = this.config.calendar;
            var evtSource = calendar.getEventSourceById(evtSourceId);
            $.each(schedulerEvents,
                function(i, schEvt) {
                    if (schEvt.RRule) {
                        var recurringEvts = self.getRecurringEvents(schEvt.RRule, start, end);
                        $.each(recurringEvts,
                            function(i, date) {
                                var evt = {
                                    id: schEvt.Id,
                                    source: evtSource,
                                    title: schEvt.Title,
                                    start: date, //TODO: parse the time from the date
                                    end: date, //TODO: parse the time from the date
                                    allDay: schEvt.AllDay
                                };
                                if (schEvt.IsBackground) evt.display = "background";
                                events.push(evt);
                            });
                    } else {
                        var evt = {
                            id: schEvt.Id,
                            source: evtSource,
                            title: schEvt.Title,
                            allDay: schEvt.AllDay,
                            start: new Date(schEvt.Start),
                            end: new Date(schEvt.End),
                            editable: schEvt.Editable
                        };
                        if (schEvt.IsBackground) evt.display = "background";
                        events.push(evt);
                    }
                });
            return events;
        },
        setEventSource: function(eventSource) {
            var calendar = this.config.calendar, evtSource;
            if (eventSource.id) {
                evtSource = calendar.getEventSourceById(eventSource.id);
            }
            if (!evtSource) {
                calendar.addEventSource(eventSource);
            }
        },
        getRecurringEvents: function(rrule, start, end) {
            if (!rrule) return;

            start = start.clearTime().addMinutes(-start.getTimezoneOffset()).addMinutes(1);
            end = end.clearTime().addMinutes(-end.getTimezoneOffset()).addMinutes(-1);
            var rule = window.rrule.RRule.fromString(rrule);
            rule.options.dtstart = start;
            var events = rule.between(start, end);
            
            //rrule returns all dates in UTC, so need to convert them to local
            return events.map(function(d) {
                return d.toUTC();
            });
        }
    }
    control.registerClass("$rql.ui.controls.fullcalendar", $rql.ui.controls.view);
})(jQuery);



// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @externs_url http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/maps/google_maps_api_v3_3.js
// ==/ClosureCompiler==

/**
 * @name MarkerClusterer for Google Maps v3
 * @version version 1.0
 * @author Luke Mahe
 * @fileoverview
 * The library creates and manages per-zoom-level clusters for large amounts of
 * markers.
 * <br/>
 * This is a v3 implementation of the
 * <a href="http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/"
 * >v2 MarkerClusterer</a>.
 */

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
 * A Marker Clusterer that clusters markers.
 *
 * @param {google.maps.Map} map The Google map to attach to.
 * @param {Array.<google.maps.Marker>=} opt_markers Optional markers to add to
 *   the cluster.
 * @param {Object=} opt_options support the following options:
 *     'gridSize': (number) The grid size of a cluster in pixels.
 *     'maxZoom': (number) The maximum zoom level that a marker can be part of a
 *                cluster.
 *     'zoomOnClick': (boolean) Whether the default behaviour of clicking on a
 *                    cluster is to zoom into it.
 *     'averageCenter': (boolean) Wether the center of each cluster should be
 *                      the average of all markers in the cluster.
 *     'minimumClusterSize': (number) The minimum number of markers to be in a
 *                           cluster before the markers are hidden and a count
 *                           is shown.
 *     'styles': (object) An object that has style properties:
 *       'url': (string) The image url.
 *       'height': (number) The image height.
 *       'width': (number) The image width.
 *       'anchor': (Array) The anchor position of the label text.
 *       'textColor': (string) The text color.
 *       'textSize': (number) The text size.
 *       'backgroundPosition': (string) The position of the backgound x, y.
 *       'iconAnchor': (Array) The anchor position of the icon x, y.
 * @constructor
 * @extends google.maps.OverlayView
 */
function MarkerClusterer(map, opt_markers, opt_options) {
    // MarkerClusterer implements google.maps.OverlayView interface. We use the
    // extend function to extend MarkerClusterer with google.maps.OverlayView
    // because it might not always be available when the code is defined so we
    // look for it at the last possible moment. If it doesn't exist now then
    // there is no point going ahead :)
    this.extend(MarkerClusterer, google.maps.OverlayView);
    this.map_ = map;

    /**
     * @type {Array.<google.maps.Marker>}
     * @private
     */
    this.markers_ = [];

    /**
     *  @type {Array.<Cluster>}
     */
    this.clusters_ = [];

    this.sizes = [53, 56, 66, 78, 90];

    /**
     * @private
     */
    this.styles_ = [];

    /**
     * @type {boolean}
     * @private
     */
    this.ready_ = false;

    var options = opt_options || {};

    /**
     * @type {number}
     * @private
     */
    this.gridSize_ = options['gridSize'] || 60;

    /**
     * @private
     */
    this.minClusterSize_ = options['minimumClusterSize'] || 2;


    /**
     * @type {?number}
     * @private
     */
    this.maxZoom_ = options['maxZoom'] || null;

    this.styles_ = options['styles'] || [];

    /**
     * @type {string}
     * @private
     */
    this.imagePath_ = options['imagePath'] ||
        this.MARKER_CLUSTER_IMAGE_PATH_;

    /**
     * @type {string}
     * @private
     */
    this.imageExtension_ = options['imageExtension'] ||
        this.MARKER_CLUSTER_IMAGE_EXTENSION_;

    /**
     * @type {boolean}
     * @private
     */
    this.zoomOnClick_ = true;

    if (options['zoomOnClick'] != undefined) {
        this.zoomOnClick_ = options['zoomOnClick'];
    }

    /**
     * @type {boolean}
     * @private
     */
    this.averageCenter_ = false;

    if (options['averageCenter'] != undefined) {
        this.averageCenter_ = options['averageCenter'];
    }

    this.setupStyles_();

    this.setMap(map);

    /**
     * @type {number}
     * @private
     */
    this.prevZoom_ = this.map_.getZoom();

    // Add the map event listeners
    var that = this;
    google.maps.event.addListener(this.map_, 'zoom_changed', function () {
        var zoom = that.map_.getZoom();

        if (that.prevZoom_ != zoom) {
            that.prevZoom_ = zoom;
            that.resetViewport();
        }
    });

    google.maps.event.addListener(this.map_, 'idle', function () {
        that.redraw();
    });

    // Finally, add the markers
    if (opt_markers && opt_markers.length) {
        this.addMarkers(opt_markers, false);
    }
}


/**
 * The marker cluster image path.
 *
 * @type {string}
 * @private

 This is old path:
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ =
    'https://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/' +
    'images/m';

 This is new path:
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ =
    'https://raw.githubusercontent.com/googlemaps/js-marker-clusterer/gh-pages/' +
    'images/m';

 We use embed resources!
*/

MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '/rql/libs/markerclusterer/images/m';


/**
 * The marker cluster image path.
 *
 * @type {string}
 * @private
 */
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';


/**
 * Extends a objects prototype by anothers.
 *
 * @param {Object} obj1 The object to be extended.
 * @param {Object} obj2 The object to extend with.
 * @return {Object} The new extended object.
 * @ignore
 */
MarkerClusterer.prototype.extend = function (obj1, obj2) {
    return (function (object) {
        for (var property in object.prototype) {
            this.prototype[property] = object.prototype[property];
        }
        return this;
    }).apply(obj1, [obj2]);
};


/**
 * Implementaion of the interface method.
 * @ignore
 */
MarkerClusterer.prototype.onAdd = function () {
    this.setReady_(true);
};

/**
 * Implementaion of the interface method.
 * @ignore
 */
MarkerClusterer.prototype.draw = function () { };

/**
 * Sets up the styles object.
 *
 * @private
 */
MarkerClusterer.prototype.setupStyles_ = function () {
    if (this.styles_.length) {
        return;
    }

    for (var i = 0, size; size = this.sizes[i]; i++) {
        this.styles_.push({
            url: this.imagePath_ + (i + 1) + '.' + this.imageExtension_,
            height: size,
            width: size
        });
    }
};

/**
 *  Fit the map to the bounds of the markers in the clusterer.
 */
MarkerClusterer.prototype.fitMapToMarkers = function () {
    var markers = this.getMarkers();
    var bounds = new google.maps.LatLngBounds();
    for (var i = 0, marker; marker = markers[i]; i++) {
        bounds.extend(marker.getPosition());
    }

    this.map_.fitBounds(bounds);
};


/**
 *  Sets the styles.
 *
 *  @param {Object} styles The style to set.
 */
MarkerClusterer.prototype.setStyles = function (styles) {
    this.styles_ = styles;
};


/**
 *  Gets the styles.
 *
 *  @return {Object} The styles object.
 */
MarkerClusterer.prototype.getStyles = function () {
    return this.styles_;
};


/**
 * Whether zoom on click is set.
 *
 * @return {boolean} True if zoomOnClick_ is set.
 */
MarkerClusterer.prototype.isZoomOnClick = function () {
    return this.zoomOnClick_;
};

/**
 * Whether average center is set.
 *
 * @return {boolean} True if averageCenter_ is set.
 */
MarkerClusterer.prototype.isAverageCenter = function () {
    return this.averageCenter_;
};


/**
 *  Returns the array of markers in the clusterer.
 *
 *  @return {Array.<google.maps.Marker>} The markers.
 */
MarkerClusterer.prototype.getMarkers = function () {
    return this.markers_;
};


/**
 *  Returns the number of markers in the clusterer
 *
 *  @return {Number} The number of markers.
 */
MarkerClusterer.prototype.getTotalMarkers = function () {
    return this.markers_.length;
};


/**
 *  Sets the max zoom for the clusterer.
 *
 *  @param {number} maxZoom The max zoom level.
 */
MarkerClusterer.prototype.setMaxZoom = function (maxZoom) {
    this.maxZoom_ = maxZoom;
};


/**
 *  Gets the max zoom for the clusterer.
 *
 *  @return {number} The max zoom level.
 */
MarkerClusterer.prototype.getMaxZoom = function () {
    return this.maxZoom_;
};


/**
 *  The function for calculating the cluster icon image.
 *
 *  @param {Array.<google.maps.Marker>} markers The markers in the clusterer.
 *  @param {number} numStyles The number of styles available.
 *  @return {Object} A object properties: 'text' (string) and 'index' (number).
 *  @private
 */
MarkerClusterer.prototype.calculator_ = function (markers, numStyles) {
    var index = 0;
    var count = markers.length;
    var dv = count;
    while (dv !== 0) {
        dv = parseInt(dv / 10, 10);
        index++;
    }

    index = Math.min(index, numStyles);
    return {
        text: count,
        index: index
    };
};


/**
 * Set the calculator function.
 *
 * @param {function(Array, number)} calculator The function to set as the
 *     calculator. The function should return a object properties:
 *     'text' (string) and 'index' (number).
 *
 */
MarkerClusterer.prototype.setCalculator = function (calculator) {
    this.calculator_ = calculator;
};


/**
 * Get the calculator function.
 *
 * @return {function(Array, number)} the calculator function.
 */
MarkerClusterer.prototype.getCalculator = function () {
    return this.calculator_;
};


/**
 * Add an array of markers to the clusterer.
 *
 * @param {Array.<google.maps.Marker>} markers The markers to add.
 * @param {boolean=} opt_nodraw Whether to redraw the clusters.
 */
MarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {
    for (var i = 0, marker; marker = markers[i]; i++) {
        this.pushMarkerTo_(marker);
    }
    if (!opt_nodraw) {
        this.redraw();
    }
};


/**
 * Pushes a marker to the clusterer.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @private
 */
MarkerClusterer.prototype.pushMarkerTo_ = function (marker) {
    marker.isAdded = false;
    if (marker['draggable']) {
        // If the marker is draggable add a listener so we update the clusters on
        // the drag end.
        var that = this;
        google.maps.event.addListener(marker, 'dragend', function () {
            marker.isAdded = false;
            that.repaint();
        });
    }
    this.markers_.push(marker);
};


/**
 * Adds a marker to the clusterer and redraws if needed.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @param {boolean=} opt_nodraw Whether to redraw the clusters.
 */
MarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {
    this.pushMarkerTo_(marker);
    if (!opt_nodraw) {
        this.redraw();
    }
};


/**
 * Removes a marker and returns true if removed, false if not
 *
 * @param {google.maps.Marker} marker The marker to remove
 * @return {boolean} Whether the marker was removed or not
 * @private
 */
MarkerClusterer.prototype.removeMarker_ = function (marker) {
    var index = -1;
    if (this.markers_.indexOf) {
        index = this.markers_.indexOf(marker);
    } else {
        for (var i = 0, m; m = this.markers_[i]; i++) {
            if (m == marker) {
                index = i;
                break;
            }
        }
    }

    if (index == -1) {
        // Marker is not in our list of markers.
        return false;
    }

    marker.setMap(null);

    this.markers_.splice(index, 1);

    return true;
};


/**
 * Remove a marker from the cluster.
 *
 * @param {google.maps.Marker} marker The marker to remove.
 * @param {boolean=} opt_nodraw Optional boolean to force no redraw.
 * @return {boolean} True if the marker was removed.
 */
MarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw) {
    var removed = this.removeMarker_(marker);

    if (!opt_nodraw && removed) {
        this.resetViewport();
        this.redraw();
        return true;
    } else {
        return false;
    }
};


/**
 * Removes an array of markers from the cluster.
 *
 * @param {Array.<google.maps.Marker>} markers The markers to remove.
 * @param {boolean=} opt_nodraw Optional boolean to force no redraw.
 */
MarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw) {
    var removed = false;

    for (var i = 0, marker; marker = markers[i]; i++) {
        var r = this.removeMarker_(marker);
        removed = removed || r;
    }

    if (!opt_nodraw && removed) {
        this.resetViewport();
        this.redraw();
        return true;
    }
};


/**
 * Sets the clusterer's ready state.
 *
 * @param {boolean} ready The state.
 * @private
 */
MarkerClusterer.prototype.setReady_ = function (ready) {
    if (!this.ready_) {
        this.ready_ = ready;
        this.createClusters_();
    }
};


/**
 * Returns the number of clusters in the clusterer.
 *
 * @return {number} The number of clusters.
 */
MarkerClusterer.prototype.getTotalClusters = function () {
    return this.clusters_.length;
};


/**
 * Returns the google map that the clusterer is associated with.
 *
 * @return {google.maps.Map} The map.
 */
MarkerClusterer.prototype.getMap = function () {
    return this.map_;
};


/**
 * Sets the google map that the clusterer is associated with.
 *
 * @param {google.maps.Map} map The map.
 */
MarkerClusterer.prototype.setMap = function (map) {
    this.map_ = map;
};


/**
 * Returns the size of the grid.
 *
 * @return {number} The grid size.
 */
MarkerClusterer.prototype.getGridSize = function () {
    return this.gridSize_;
};


/**
 * Sets the size of the grid.
 *
 * @param {number} size The grid size.
 */
MarkerClusterer.prototype.setGridSize = function (size) {
    this.gridSize_ = size;
};


/**
 * Returns the min cluster size.
 *
 * @return {number} The grid size.
 */
MarkerClusterer.prototype.getMinClusterSize = function () {
    return this.minClusterSize_;
};

/**
 * Sets the min cluster size.
 *
 * @param {number} size The grid size.
 */
MarkerClusterer.prototype.setMinClusterSize = function (size) {
    this.minClusterSize_ = size;
};


/**
 * Extends a bounds object by the grid size.
 *
 * @param {google.maps.LatLngBounds} bounds The bounds to extend.
 * @return {google.maps.LatLngBounds} The extended bounds.
 */
MarkerClusterer.prototype.getExtendedBounds = function (bounds) {
    var projection = this.getProjection();

    // Turn the bounds into latlng.
    var tr = new google.maps.LatLng(bounds.getNorthEast().lat(),
        bounds.getNorthEast().lng());
    var bl = new google.maps.LatLng(bounds.getSouthWest().lat(),
        bounds.getSouthWest().lng());

    // Convert the points to pixels and the extend out by the grid size.
    var trPix = projection.fromLatLngToDivPixel(tr);
    trPix.x += this.gridSize_;
    trPix.y -= this.gridSize_;

    var blPix = projection.fromLatLngToDivPixel(bl);
    blPix.x -= this.gridSize_;
    blPix.y += this.gridSize_;

    // Convert the pixel points back to LatLng
    var ne = projection.fromDivPixelToLatLng(trPix);
    var sw = projection.fromDivPixelToLatLng(blPix);

    // Extend the bounds to contain the new bounds.
    bounds.extend(ne);
    bounds.extend(sw);

    return bounds;
};


/**
 * Determins if a marker is contained in a bounds.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @param {google.maps.LatLngBounds} bounds The bounds to check against.
 * @return {boolean} True if the marker is in the bounds.
 * @private
 */
MarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {
    return bounds.contains(marker.getPosition());
};


/**
 * Clears all clusters and markers from the clusterer.
 */
MarkerClusterer.prototype.clearMarkers = function () {
    this.resetViewport(true);

    // Set the markers a empty array.
    this.markers_ = [];
};


/**
 * Clears all existing clusters and recreates them.
 * @param {boolean} opt_hide To also hide the marker.
 */
MarkerClusterer.prototype.resetViewport = function (opt_hide) {
    // Remove all the clusters
    for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {
        cluster.remove();
    }

    // Reset the markers to not be added and to be invisible.
    for (var i = 0, marker; marker = this.markers_[i]; i++) {
        marker.isAdded = false;
        if (opt_hide) {
            marker.setMap(null);
        }
    }

    this.clusters_ = [];
};

/**
 *
 */
MarkerClusterer.prototype.repaint = function () {
    var oldClusters = this.clusters_.slice();
    this.clusters_.length = 0;
    this.resetViewport();
    this.redraw();

    // Remove the old clusters.
    // Do it in a timeout so the other clusters have been drawn first.
    window.setTimeout(function () {
        for (var i = 0, cluster; cluster = oldClusters[i]; i++) {
            cluster.remove();
        }
    }, 0);
};


/**
 * Redraws the clusters.
 */
MarkerClusterer.prototype.redraw = function () {
    this.createClusters_();
};


/**
 * Calculates the distance between two latlng locations in km.
 * @see http://www.movable-type.co.uk/scripts/latlong.html
 *
 * @param {google.maps.LatLng} p1 The first lat lng point.
 * @param {google.maps.LatLng} p2 The second lat lng point.
 * @return {number} The distance between the two points in km.
 * @private
*/
MarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {
    if (!p1 || !p2) {
        return 0;
    }

    var R = 6371; // Radius of the Earth in km
    var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;
    var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;
    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
      Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *
      Math.sin(dLon / 2) * Math.sin(dLon / 2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    var d = R * c;
    return d;
};


/**
 * Add a marker to a cluster, or creates a new cluster.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @private
 */
MarkerClusterer.prototype.addToClosestCluster_ = function (marker) {
    var distance = 40000; // Some large number
    var clusterToAddTo = null;
    var pos = marker.getPosition();
    for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {
        var center = cluster.getCenter();
        if (center) {
            var d = this.distanceBetweenPoints_(center, marker.getPosition());
            if (d < distance) {
                distance = d;
                clusterToAddTo = cluster;
            }
        }
    }

    if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {
        clusterToAddTo.addMarker(marker);
    } else {
        var cluster = new Cluster(this);
        cluster.addMarker(marker);
        this.clusters_.push(cluster);
    }
};


/**
 * Creates the clusters.
 *
 * @private
 */
MarkerClusterer.prototype.createClusters_ = function () {
    if (!this.ready_) {
        return;
    }

    // Get our current map view bounds.
    // Create a new bounds object so we don't affect the map.
    var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),
        this.map_.getBounds().getNorthEast());
    var bounds = this.getExtendedBounds(mapBounds);

    for (var i = 0, marker; marker = this.markers_[i]; i++) {
        if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {
            this.addToClosestCluster_(marker);
        }
    }
};


/**
 * A cluster that contains markers.
 *
 * @param {MarkerClusterer} markerClusterer The markerclusterer that this
 *     cluster is associated with.
 * @constructor
 * @ignore
 */
function Cluster(markerClusterer) {
    this.markerClusterer_ = markerClusterer;
    this.map_ = markerClusterer.getMap();
    this.gridSize_ = markerClusterer.getGridSize();
    this.minClusterSize_ = markerClusterer.getMinClusterSize();
    this.averageCenter_ = markerClusterer.isAverageCenter();
    this.center_ = null;
    this.markers_ = [];
    this.bounds_ = null;
    this.clusterIcon_ = new ClusterIcon(this, markerClusterer.getStyles(),
        markerClusterer.getGridSize());
}

/**
 * Determins if a marker is already added to the cluster.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @return {boolean} True if the marker is already added.
 */
Cluster.prototype.isMarkerAlreadyAdded = function (marker) {
    if (this.markers_.indexOf) {
        return this.markers_.indexOf(marker) != -1;
    } else {
        for (var i = 0, m; m = this.markers_[i]; i++) {
            if (m == marker) {
                return true;
            }
        }
    }
    return false;
};


/**
 * Add a marker the cluster.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @return {boolean} True if the marker was added.
 */
Cluster.prototype.addMarker = function (marker) {
    if (this.isMarkerAlreadyAdded(marker)) {
        return false;
    }

    if (!this.center_) {
        this.center_ = marker.getPosition();
        this.calculateBounds_();
    } else {
        if (this.averageCenter_) {
            var l = this.markers_.length + 1;
            var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;
            var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;
            this.center_ = new google.maps.LatLng(lat, lng);
            this.calculateBounds_();
        }
    }

    marker.isAdded = true;
    this.markers_.push(marker);

    var len = this.markers_.length;
    if (len < this.minClusterSize_ && marker.getMap() != this.map_) {
        // Min cluster size not reached so show the marker.
        marker.setMap(this.map_);
    }

    if (len == this.minClusterSize_) {
        // Hide the markers that were showing.
        for (var i = 0; i < len; i++) {
            this.markers_[i].setMap(null);
        }
    }

    if (len >= this.minClusterSize_) {
        marker.setMap(null);
    }

    this.updateIcon();
    return true;
};


/**
 * Returns the marker clusterer that the cluster is associated with.
 *
 * @return {MarkerClusterer} The associated marker clusterer.
 */
Cluster.prototype.getMarkerClusterer = function () {
    return this.markerClusterer_;
};


/**
 * Returns the bounds of the cluster.
 *
 * @return {google.maps.LatLngBounds} the cluster bounds.
 */
Cluster.prototype.getBounds = function () {
    var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
    var markers = this.getMarkers();
    for (var i = 0, marker; marker = markers[i]; i++) {
        bounds.extend(marker.getPosition());
    }
    return bounds;
};


/**
 * Removes the cluster
 */
Cluster.prototype.remove = function () {
    this.clusterIcon_.remove();
    this.markers_.length = 0;
    delete this.markers_;
};


/**
 * Returns the center of the cluster.
 *
 * @return {number} The cluster center.
 */
Cluster.prototype.getSize = function () {
    return this.markers_.length;
};


/**
 * Returns the center of the cluster.
 *
 * @return {Array.<google.maps.Marker>} The cluster center.
 */
Cluster.prototype.getMarkers = function () {
    return this.markers_;
};


/**
 * Returns the center of the cluster.
 *
 * @return {google.maps.LatLng} The cluster center.
 */
Cluster.prototype.getCenter = function () {
    return this.center_;
};


/**
 * Calculated the extended bounds of the cluster with the grid.
 *
 * @private
 */
Cluster.prototype.calculateBounds_ = function () {
    var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
    this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);
};


/**
 * Determines if a marker lies in the clusters bounds.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @return {boolean} True if the marker lies in the bounds.
 */
Cluster.prototype.isMarkerInClusterBounds = function (marker) {
    return this.bounds_.contains(marker.getPosition());
};


/**
 * Returns the map that the cluster is associated with.
 *
 * @return {google.maps.Map} The map.
 */
Cluster.prototype.getMap = function () {
    return this.map_;
};


/**
 * Updates the cluster icon
 */
Cluster.prototype.updateIcon = function () {
    var zoom = this.map_.getZoom();
    var mz = this.markerClusterer_.getMaxZoom();

    if (mz && zoom > mz) {
        // The zoom is greater than our max zoom so show all the markers in cluster.
        for (var i = 0, marker; marker = this.markers_[i]; i++) {
            marker.setMap(this.map_);
        }
        return;
    }

    if (this.markers_.length < this.minClusterSize_) {
        // Min cluster size not yet reached.
        this.clusterIcon_.hide();
        return;
    }

    var numStyles = this.markerClusterer_.getStyles().length;
    var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);
    this.clusterIcon_.setCenter(this.center_);
    this.clusterIcon_.setSums(sums);
    this.clusterIcon_.show();
};


/**
 * A cluster icon
 *
 * @param {Cluster} cluster The cluster to be associated with.
 * @param {Object} styles An object that has style properties:
 *     'url': (string) The image url.
 *     'height': (number) The image height.
 *     'width': (number) The image width.
 *     'anchor': (Array) The anchor position of the label text.
 *     'textColor': (string) The text color.
 *     'textSize': (number) The text size.
 *     'backgroundPosition: (string) The background postition x, y.
 * @param {number=} opt_padding Optional padding to apply to the cluster icon.
 * @constructor
 * @extends google.maps.OverlayView
 * @ignore
 */
function ClusterIcon(cluster, styles, opt_padding) {
    cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);

    this.styles_ = styles;
    this.padding_ = opt_padding || 0;
    this.cluster_ = cluster;
    this.center_ = null;
    this.map_ = cluster.getMap();
    this.div_ = null;
    this.sums_ = null;
    this.visible_ = false;

    this.setMap(this.map_);
}


/**
 * Triggers the clusterclick event and zoom's if the option is set.
 *
 * @param {google.maps.MouseEvent} event The event to propagate
 */
ClusterIcon.prototype.triggerClusterClick = function (event) {
    var markerClusterer = this.cluster_.getMarkerClusterer();

    // Trigger the clusterclick event.
    google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_, event);

    if (markerClusterer.isZoomOnClick()) {
        // Zoom into the cluster.
        this.map_.fitBounds(this.cluster_.getBounds());
    }
};


/**
 * Adding the cluster icon to the dom.
 * @ignore
 */
ClusterIcon.prototype.onAdd = function () {
    this.div_ = document.createElement('DIV');
    if (this.visible_) {
        var pos = this.getPosFromLatLng_(this.center_);
        this.div_.style.cssText = this.createCss(pos);
        this.div_.innerHTML = this.sums_.text;
    }

    var panes = this.getPanes();
    panes.overlayMouseTarget.appendChild(this.div_);

    var that = this;
    google.maps.event.addDomListener(this.div_, 'click', function (event) {
        that.triggerClusterClick(event);
    });
};


/**
 * Returns the position to place the div dending on the latlng.
 *
 * @param {google.maps.LatLng} latlng The position in latlng.
 * @return {google.maps.Point} The position in pixels.
 * @private
 */
ClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {
    var pos = this.getProjection().fromLatLngToDivPixel(latlng);

    if (typeof this.iconAnchor_ === 'object' && this.iconAnchor_.length === 2) {
        pos.x -= this.iconAnchor_[0];
        pos.y -= this.iconAnchor_[1];
    } else {
        pos.x -= parseInt(this.width_ / 2, 10);
        pos.y -= parseInt(this.height_ / 2, 10);
    }
    return pos;
};


/**
 * Draw the icon.
 * @ignore
 */
ClusterIcon.prototype.draw = function () {
    if (this.visible_) {
        var pos = this.getPosFromLatLng_(this.center_);
        this.div_.style.top = pos.y + 'px';
        this.div_.style.left = pos.x + 'px';
    }
};


/**
 * Hide the icon.
 */
ClusterIcon.prototype.hide = function () {
    if (this.div_) {
        this.div_.style.display = 'none';
    }
    this.visible_ = false;
};


/**
 * Position and show the icon.
 */
ClusterIcon.prototype.show = function () {
    if (this.div_) {
        var pos = this.getPosFromLatLng_(this.center_);
        this.div_.style.cssText = this.createCss(pos);
        this.div_.style.display = '';
    }
    this.visible_ = true;
};


/**
 * Remove the icon from the map
 */
ClusterIcon.prototype.remove = function () {
    this.setMap(null);
};


/**
 * Implementation of the onRemove interface.
 * @ignore
 */
ClusterIcon.prototype.onRemove = function () {
    if (this.div_ && this.div_.parentNode) {
        this.hide();
        this.div_.parentNode.removeChild(this.div_);
        this.div_ = null;
    }
};


/**
 * Set the sums of the icon.
 *
 * @param {Object} sums The sums containing:
 *   'text': (string) The text to display in the icon.
 *   'index': (number) The style index of the icon.
 */
ClusterIcon.prototype.setSums = function (sums) {
    this.sums_ = sums;
    this.text_ = sums.text;
    this.index_ = sums.index;
    if (this.div_) {
        this.div_.innerHTML = sums.text;
    }

    this.useStyle();
};


/**
 * Sets the icon to the the styles.
 */
ClusterIcon.prototype.useStyle = function () {
    var index = Math.max(0, this.sums_.index - 1);
    index = Math.min(this.styles_.length - 1, index);
    var style = this.styles_[index];
    this.url_ = style['url'];
    this.height_ = style['height'];
    this.width_ = style['width'];
    this.textColor_ = style['textColor'];
    this.anchor_ = style['anchor'];
    this.textSize_ = style['textSize'];
    this.backgroundPosition_ = style['backgroundPosition'];
    this.iconAnchor_ = style['iconAnchor'];
};


/**
 * Sets the center of the icon.
 *
 * @param {google.maps.LatLng} center The latlng to set as the center.
 */
ClusterIcon.prototype.setCenter = function (center) {
    this.center_ = center;
};


/**
 * Create the css text based on the position of the icon.
 *
 * @param {google.maps.Point} pos The position.
 * @return {string} The css style text.
 */
ClusterIcon.prototype.createCss = function (pos) {
    var style = [];
    style.push('background-image:url(' + this.url_ + ');');
    var backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';
    style.push('background-position:' + backgroundPosition + ';');

    if (typeof this.anchor_ === 'object') {
        if (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&
            this.anchor_[0] < this.height_) {
            style.push('height:' + (this.height_ - this.anchor_[0]) +
                'px; padding-top:' + this.anchor_[0] + 'px;');
        } else if (typeof this.anchor_[0] === 'number' && this.anchor_[0] < 0 &&
            -this.anchor_[0] < this.height_) {
            style.push('height:' + this.height_ + 'px; line-height:' + (this.height_ + this.anchor_[0]) +
                'px;');
        } else {
            style.push('height:' + this.height_ + 'px; line-height:' + this.height_ +
                'px;');
        }
        if (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&
            this.anchor_[1] < this.width_) {
            style.push('width:' + (this.width_ - this.anchor_[1]) +
                'px; padding-left:' + this.anchor_[1] + 'px;');
        } else {
            style.push('width:' + this.width_ + 'px; text-align:center;');
        }
    } else {
        style.push('height:' + this.height_ + 'px; line-height:' +
            this.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');
    }

    var txtColor = this.textColor_ ? this.textColor_ : 'black';
    var txtSize = this.textSize_ ? this.textSize_ : 11;

    style.push('cursor:pointer; top:' + pos.y + 'px; left:' +
        pos.x + 'px; color:' + txtColor + '; position:absolute; font-size:' +
        txtSize + 'px; font-family:Arial,sans-serif; font-weight:bold');
    return style.join('');
};


// Export Symbols for Closure
// If you are not going to compile with closure then you can remove the
// code below.
window['MarkerClusterer'] = MarkerClusterer;
MarkerClusterer.prototype['addMarker'] = MarkerClusterer.prototype.addMarker;
MarkerClusterer.prototype['addMarkers'] = MarkerClusterer.prototype.addMarkers;
MarkerClusterer.prototype['clearMarkers'] =
    MarkerClusterer.prototype.clearMarkers;
MarkerClusterer.prototype['fitMapToMarkers'] =
    MarkerClusterer.prototype.fitMapToMarkers;
MarkerClusterer.prototype['getCalculator'] =
    MarkerClusterer.prototype.getCalculator;
MarkerClusterer.prototype['getGridSize'] =
    MarkerClusterer.prototype.getGridSize;
MarkerClusterer.prototype['getExtendedBounds'] =
    MarkerClusterer.prototype.getExtendedBounds;
MarkerClusterer.prototype['getMap'] = MarkerClusterer.prototype.getMap;
MarkerClusterer.prototype['getMarkers'] = MarkerClusterer.prototype.getMarkers;
MarkerClusterer.prototype['getMaxZoom'] = MarkerClusterer.prototype.getMaxZoom;
MarkerClusterer.prototype['getStyles'] = MarkerClusterer.prototype.getStyles;
MarkerClusterer.prototype['getTotalClusters'] =
    MarkerClusterer.prototype.getTotalClusters;
MarkerClusterer.prototype['getTotalMarkers'] =
    MarkerClusterer.prototype.getTotalMarkers;
MarkerClusterer.prototype['redraw'] = MarkerClusterer.prototype.redraw;
MarkerClusterer.prototype['removeMarker'] =
    MarkerClusterer.prototype.removeMarker;
MarkerClusterer.prototype['removeMarkers'] =
    MarkerClusterer.prototype.removeMarkers;
MarkerClusterer.prototype['resetViewport'] =
    MarkerClusterer.prototype.resetViewport;
MarkerClusterer.prototype['repaint'] =
    MarkerClusterer.prototype.repaint;
MarkerClusterer.prototype['setCalculator'] =
    MarkerClusterer.prototype.setCalculator;
MarkerClusterer.prototype['setGridSize'] =
    MarkerClusterer.prototype.setGridSize;
MarkerClusterer.prototype['setMaxZoom'] =
    MarkerClusterer.prototype.setMaxZoom;
MarkerClusterer.prototype['onAdd'] = MarkerClusterer.prototype.onAdd;
MarkerClusterer.prototype['draw'] = MarkerClusterer.prototype.draw;

Cluster.prototype['getCenter'] = Cluster.prototype.getCenter;
Cluster.prototype['getSize'] = Cluster.prototype.getSize;
Cluster.prototype['getMarkers'] = Cluster.prototype.getMarkers;

ClusterIcon.prototype['onAdd'] = ClusterIcon.prototype.onAdd;
ClusterIcon.prototype['draw'] = ClusterIcon.prototype.draw;
ClusterIcon.prototype['onRemove'] = ClusterIcon.prototype.onRemove;

