UNPKG

856 kBJavaScriptView Raw
1/*!
2 infusion - v3.0.0-dev.20190906T123329Z.e5ad6fbc6.FLUID-6359-src
3 Friday, September 6th, 2019, 8:38:33 AM
4 branch: FLUID-6359-src
5 revision: e5ad6fbc6
6*/
7
8!function(global,factory){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){"use strict";var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&0<length&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(0<=j&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(clone=copyIsArray?(copyIsArray=!1,src&&Array.isArray(src)?src:[]):src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement&&(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"!==tag)return results;for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0}),document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return 0<Sizzle(expr,document,null,[elem]).length},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&-1<result.indexOf(check):"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?-1<(" "+result.replace(rwhitespace," ")+" ").indexOf(check):"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&0<=diff/first}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):1<fn.length?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return 0<Sizzle(selector,elem).length}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return-1<(elem.textContent||elem.innerText||getText(elem)).indexOf(text)}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;0<=--i;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if((uniqueCache[key]=newCache)[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return 1<matchers.length?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&-1<(temp=postFinder?indexOf(seed,elem):preMap[i])&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return-1<indexOf(checkContext,elem)},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(1<i&&elementMatcher(matchers),1<i&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=0<setMatchers.length,byElement=0<elementMatchers.length,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(0<matchedCount)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&0<setMatched.length&&1<matchedCount+setMatchers.length&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if(2<(tokens=match[0]=match[0].slice(0)).length&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return-1<indexOf.call(qualifier,elem)!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return 1<len?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"!=typeof selector)return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this);if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&3<=selector.length?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?-1<targets.index(cur):1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(1<matched.length?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),1<this.length&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;-1<(index=jQuery.inArray(arg,list,index));)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?-1<jQuery.inArray(fn,list):0<list.length},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),maxDepth<=depth+1&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=1<arguments.length?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0)!==wait&&0<--jQuery.readyWait||readyList.resolveWith(document,[jQuery])}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(fn=raw?(fn.call(elems,value),null):(bulk=fn,function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0!==key)return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,1<arguments.length,null,!0);if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],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 getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&-1<jQuery.inArray(elem,selection))ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&1<=event.button))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?-1<jQuery(sel,this).index(cur):jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.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,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:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"!=typeof types)return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)});for(type in types)this.off(type,selector,types[type]);return this}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||1<l&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return 0<(destElements=getAll(clone,"script")).length&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&0<=computedVal&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,1<arguments.length)}}),((jQuery.Tween=Tween).prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}}).init.prototype=Tween.prototype,(Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}}).scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){for(var prop,index=0,length=(props=isFunction(props)?(callback=props,["*"]):props.match(rnothtmlwhite)).length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,1<arguments.length)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,1<arguments.length)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;-1<cur.indexOf(" "+clazz+" ");)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&-1<(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className))return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=-1<jQuery.inArray(jQuery.valHooks.option.get(option),values))&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=-1<jQuery.inArray(jQuery(elem).val(),value)}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(-1<type.indexOf(".")&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=1<i?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,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":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&0<s.timeout&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=0<status?4:0,isSuccess=200<=status&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),scripts=!keepScripts&&[],(parsed=rsingleTag.exec(data))?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return-1<off&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),0<self.length&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),curLeft=("absolute"===position||"fixed"===position)&&-1<(curCSSTop+curCSSLeft).indexOf("auto")?(curTop=(curPosition=curElem.position()).top,curPosition.left):(curTop=parseFloat(curCSSTop)||0,parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.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(i,name){jQuery.fn[name]=function(data,fn){return 0<arguments.length?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(factory){"function"==typeof define&&define.amd?define(["jquery"],factory):factory(jQuery)}(function($){return $.ui=$.ui||{},$.ui.version="1.12.1"}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){var orig,widgetUuid=0,widgetSlice=Array.prototype.slice;return $.cleanData=(orig=$.cleanData,function(elems){var events,elem,i;for(i=0;null!=(elem=elems[i]);i++)try{(events=$._data(elem,"events"))&&events.remove&&$(elem).triggerHandler("remove")}catch(e){}orig(elems)}),$.widget=function(name,base,prototype){var existingConstructor,constructor,basePrototype,proxiedPrototype={},namespace=name.split(".")[0],fullName=namespace+"-"+(name=name.split(".")[1]);return prototype||(prototype=base,base=$.Widget),$.isArray(prototype)&&(prototype=$.extend.apply(null,[{}].concat(prototype))),$.expr[":"][fullName.toLowerCase()]=function(elem){return!!$.data(elem,fullName)},$[namespace]=$[namespace]||{},existingConstructor=$[namespace][name],constructor=$[namespace][name]=function(options,element){if(!this._createWidget)return new constructor(options,element);arguments.length&&this._createWidget(options,element)},$.extend(constructor,existingConstructor,{version:prototype.version,_proto:$.extend({},prototype),_childConstructors:[]}),(basePrototype=new base).options=$.widget.extend({},basePrototype.options),$.each(prototype,function(prop,value){$.isFunction(value)?proxiedPrototype[prop]=function(){function _super(){return base.prototype[prop].apply(this,arguments)}function _superApply(args){return base.prototype[prop].apply(this,args)}return function(){var returnValue,__super=this._super,__superApply=this._superApply;return this._super=_super,this._superApply=_superApply,returnValue=value.apply(this,arguments),this._super=__super,this._superApply=__superApply,returnValue}}():proxiedPrototype[prop]=value}),constructor.prototype=$.widget.extend(basePrototype,{widgetEventPrefix:existingConstructor&&basePrototype.widgetEventPrefix||name},proxiedPrototype,{constructor:constructor,namespace:namespace,widgetName:name,widgetFullName:fullName}),existingConstructor?($.each(existingConstructor._childConstructors,function(i,child){var childPrototype=child.prototype;$.widget(childPrototype.namespace+"."+childPrototype.widgetName,constructor,child._proto)}),delete existingConstructor._childConstructors):base._childConstructors.push(constructor),$.widget.bridge(name,constructor),constructor},$.widget.extend=function(target){for(var key,value,input=widgetSlice.call(arguments,1),inputIndex=0,inputLength=input.length;inputIndex<inputLength;inputIndex++)for(key in input[inputIndex])value=input[inputIndex][key],input[inputIndex].hasOwnProperty(key)&&void 0!==value&&($.isPlainObject(value)?target[key]=$.isPlainObject(target[key])?$.widget.extend({},target[key],value):$.widget.extend({},value):target[key]=value);return target},$.widget.bridge=function(name,object){var fullName=object.prototype.widgetFullName||name;$.fn[name]=function(options){var isMethodCall="string"==typeof options,args=widgetSlice.call(arguments,1),returnValue=this;return isMethodCall?this.length||"instance"!==options?this.each(function(){var methodValue,instance=$.data(this,fullName);return"instance"===options?(returnValue=instance,!1):instance?$.isFunction(instance[options])&&"_"!==options.charAt(0)?(methodValue=instance[options].apply(instance,args))!==instance&&void 0!==methodValue?(returnValue=methodValue&&methodValue.jquery?returnValue.pushStack(methodValue.get()):methodValue,!1):void 0:$.error("no such method '"+options+"' for "+name+" widget instance"):$.error("cannot call methods on "+name+" prior to initialization; attempted to call method '"+options+"'")}):returnValue=void 0:(args.length&&(options=$.widget.extend.apply(null,[options].concat(args))),this.each(function(){var instance=$.data(this,fullName);instance?(instance.option(options||{}),instance._init&&instance._init()):$.data(this,fullName,new object(options,this))})),returnValue}},$.Widget=function(){},$.Widget._childConstructors=[],$.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(options,element){element=$(element||this.defaultElement||this)[0],this.element=$(element),this.uuid=widgetUuid++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=$(),this.hoverable=$(),this.focusable=$(),this.classesElementLookup={},element!==this&&($.data(element,this.widgetFullName,this),this._on(!0,this.element,{remove:function(event){event.target===element&&this.destroy()}}),this.document=$(element.style?element.ownerDocument:element.document||element),this.window=$(this.document[0].defaultView||this.document[0].parentWindow)),this.options=$.widget.extend({},this.options,this._getCreateOptions(),options),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:$.noop,_create:$.noop,_init:$.noop,destroy:function(){var that=this;this._destroy(),$.each(this.classesElementLookup,function(key,value){that._removeClass(value,key)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:$.noop,widget:function(){return this.element},option:function(key,value){var parts,curOption,i,options=key;if(0===arguments.length)return $.widget.extend({},this.options);if("string"==typeof key)if(options={},key=(parts=key.split(".")).shift(),parts.length){for(curOption=options[key]=$.widget.extend({},this.options[key]),i=0;i<parts.length-1;i++)curOption[parts[i]]=curOption[parts[i]]||{},curOption=curOption[parts[i]];if(key=parts.pop(),1===arguments.length)return void 0===curOption[key]?null:curOption[key];curOption[key]=value}else{if(1===arguments.length)return void 0===this.options[key]?null:this.options[key];options[key]=value}return this._setOptions(options),this},_setOptions:function(options){var key;for(key in options)this._setOption(key,options[key]);return this},_setOption:function(key,value){return"classes"===key&&this._setOptionClasses(value),this.options[key]=value,"disabled"===key&&this._setOptionDisabled(value),this},_setOptionClasses:function(value){var classKey,elements,currentElements;for(classKey in value)currentElements=this.classesElementLookup[classKey],value[classKey]!==this.options.classes[classKey]&&currentElements&&currentElements.length&&(elements=$(currentElements.get()),this._removeClass(currentElements,classKey),elements.addClass(this._classes({element:elements,keys:classKey,classes:value,add:!0})))},_setOptionDisabled:function(value){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!value),value&&(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(options){var full=[],that=this;function processClassString(classes,checkOption){var current,i;for(i=0;i<classes.length;i++)current=that.classesElementLookup[classes[i]]||$(),current=options.add?$($.unique(current.get().concat(options.element.get()))):$(current.not(options.element).get()),that.classesElementLookup[classes[i]]=current,full.push(classes[i]),checkOption&&options.classes[classes[i]]&&full.push(options.classes[classes[i]])}return options=$.extend({element:this.element,classes:this.options.classes||{}},options),this._on(options.element,{remove:"_untrackClassesElement"}),options.keys&&processClassString(options.keys.match(/\S+/g)||[],!0),options.extra&&processClassString(options.extra.match(/\S+/g)||[]),full.join(" ")},_untrackClassesElement:function(event){var that=this;$.each(that.classesElementLookup,function(key,value){-1!==$.inArray(event.target,value)&&(that.classesElementLookup[key]=$(value.not(event.target).get()))})},_removeClass:function(element,keys,extra){return this._toggleClass(element,keys,extra,!1)},_addClass:function(element,keys,extra){return this._toggleClass(element,keys,extra,!0)},_toggleClass:function(element,keys,extra,add){add="boolean"==typeof add?add:extra;var shift="string"==typeof element||null===element,options={extra:shift?keys:extra,keys:shift?element:keys,element:shift?this.element:element,add:add};return options.element.toggleClass(this._classes(options),add),this},_on:function(suppressDisabledCheck,element,handlers){var delegateElement,instance=this;"boolean"!=typeof suppressDisabledCheck&&(handlers=element,element=suppressDisabledCheck,suppressDisabledCheck=!1),handlers?(element=delegateElement=$(element),this.bindings=this.bindings.add(element)):(handlers=element,element=this.element,delegateElement=this.widget()),$.each(handlers,function(event,handler){function handlerProxy(){if(suppressDisabledCheck||!0!==instance.options.disabled&&!$(this).hasClass("ui-state-disabled"))return("string"==typeof handler?instance[handler]:handler).apply(instance,arguments)}"string"!=typeof handler&&(handlerProxy.guid=handler.guid=handler.guid||handlerProxy.guid||$.guid++);var match=event.match(/^([\w:-]*)\s*(.*)$/),eventName=match[1]+instance.eventNamespace,selector=match[2];selector?delegateElement.on(eventName,selector,handlerProxy):element.on(eventName,handlerProxy)})},_off:function(element,eventName){eventName=(eventName||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,element.off(eventName).off(eventName),this.bindings=$(this.bindings.not(element).get()),this.focusable=$(this.focusable.not(element).get()),this.hoverable=$(this.hoverable.not(element).get())},_delay:function(handler,delay){var instance=this;return setTimeout(function(){return("string"==typeof handler?instance[handler]:handler).apply(instance,arguments)},delay||0)},_hoverable:function(element){this.hoverable=this.hoverable.add(element),this._on(element,{mouseenter:function(event){this._addClass($(event.currentTarget),null,"ui-state-hover")},mouseleave:function(event){this._removeClass($(event.currentTarget),null,"ui-state-hover")}})},_focusable:function(element){this.focusable=this.focusable.add(element),this._on(element,{focusin:function(event){this._addClass($(event.currentTarget),null,"ui-state-focus")},focusout:function(event){this._removeClass($(event.currentTarget),null,"ui-state-focus")}})},_trigger:function(type,event,data){var prop,orig,callback=this.options[type];if(data=data||{},(event=$.Event(event)).type=(type===this.widgetEventPrefix?type:this.widgetEventPrefix+type).toLowerCase(),event.target=this.element[0],orig=event.originalEvent)for(prop in orig)prop in event||(event[prop]=orig[prop]);return this.element.trigger(event,data),!($.isFunction(callback)&&!1===callback.apply(this.element[0],[event].concat(data))||event.isDefaultPrevented())}},$.each({show:"fadeIn",hide:"fadeOut"},function(method,defaultEffect){$.Widget.prototype["_"+method]=function(element,options,callback){var hasOptions;"string"==typeof options&&(options={effect:options});var effectName=options?!0===options||"number"==typeof options?defaultEffect:options.effect||defaultEffect:method;"number"==typeof(options=options||{})&&(options={duration:options}),hasOptions=!$.isEmptyObject(options),options.complete=callback,options.delay&&element.delay(options.delay),hasOptions&&$.effects&&$.effects.effect[effectName]?element[method](options):effectName!==method&&element[effectName]?element[effectName](options.duration,options.easing,callback):element.queue(function(next){$(this)[method](),callback&&callback.call(element[0]),next()})}}),$.widget}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.ui.plugin={add:function(module,option,set){var i,proto=$.ui[module].prototype;for(i in set)proto.plugins[i]=proto.plugins[i]||[],proto.plugins[i].push([option,set[i]])},call:function(instance,name,args,allowDisconnected){var i,set=instance.plugins[name];if(set&&(allowDisconnected||instance.element[0].parentNode&&11!==instance.element[0].parentNode.nodeType))for(i=0;i<set.length;i++)instance.options[set[i][0]]&&set[i][1].apply(instance.element,args)}}}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.ui.safeActiveElement=function(document){var activeElement;try{activeElement=document.activeElement}catch(error){activeElement=document.body}return activeElement||(activeElement=document.body),activeElement.nodeName||(activeElement=document.body),activeElement}}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.ui.safeBlur=function(element){element&&"body"!==element.nodeName.toLowerCase()&&$(element).trigger("blur")}}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.fn.scrollParent=function(includeHidden){var position=this.css("position"),excludeStaticParent="absolute"===position,overflowRegex=includeHidden?/(auto|scroll|hidden)/:/(auto|scroll)/,scrollParent=this.parents().filter(function(){var parent=$(this);return(!excludeStaticParent||"static"!==parent.css("position"))&&overflowRegex.test(parent.css("overflow")+parent.css("overflow-y")+parent.css("overflow-x"))}).eq(0);return"fixed"!==position&&scrollParent.length?scrollParent:$(this[0].ownerDocument||document)}}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return function(){var cachedScrollbarWidth,max=Math.max,abs=Math.abs,rhorizontal=/left|center|right/,rvertical=/top|center|bottom/,roffset=/[\+\-]\d+(\.[\d]+)?%?/,rposition=/^\w+/,rpercent=/%$/,_position=$.fn.position;function getOffsets(offsets,width,height){return[parseFloat(offsets[0])*(rpercent.test(offsets[0])?width/100:1),parseFloat(offsets[1])*(rpercent.test(offsets[1])?height/100:1)]}function parseCss(element,property){return parseInt($.css(element,property),10)||0}$.position={scrollbarWidth:function(){if(void 0!==cachedScrollbarWidth)return cachedScrollbarWidth;var w1,w2,div=$("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),innerDiv=div.children()[0];return $("body").append(div),w1=innerDiv.offsetWidth,div.css("overflow","scroll"),w1===(w2=innerDiv.offsetWidth)&&(w2=div[0].clientWidth),div.remove(),cachedScrollbarWidth=w1-w2},getScrollInfo:function(within){var overflowX=within.isWindow||within.isDocument?"":within.element.css("overflow-x"),overflowY=within.isWindow||within.isDocument?"":within.element.css("overflow-y"),hasOverflowX="scroll"===overflowX||"auto"===overflowX&&within.width<within.element[0].scrollWidth;return{width:"scroll"===overflowY||"auto"===overflowY&&within.height<within.element[0].scrollHeight?$.position.scrollbarWidth():0,height:hasOverflowX?$.position.scrollbarWidth():0}},getWithinInfo:function(element){var withinElement=$(element||window),isWindow=$.isWindow(withinElement[0]),isDocument=!!withinElement[0]&&9===withinElement[0].nodeType;return{element:withinElement,isWindow:isWindow,isDocument:isDocument,offset:!isWindow&&!isDocument?$(element).offset():{left:0,top:0},scrollLeft:withinElement.scrollLeft(),scrollTop:withinElement.scrollTop(),width:withinElement.outerWidth(),height:withinElement.outerHeight()}}},$.fn.position=function(options){if(!options||!options.of)return _position.apply(this,arguments);options=$.extend({},options);var atOffset,targetWidth,targetHeight,targetOffset,basePosition,dimensions,elem,raw,target=$(options.of),within=$.position.getWithinInfo(options.within),scrollInfo=$.position.getScrollInfo(within),collision=(options.collision||"flip").split(" "),offsets={};return dimensions=9===(raw=(elem=target)[0]).nodeType?{width:elem.width(),height:elem.height(),offset:{top:0,left:0}}:$.isWindow(raw)?{width:elem.width(),height:elem.height(),offset:{top:elem.scrollTop(),left:elem.scrollLeft()}}:raw.preventDefault?{width:0,height:0,offset:{top:raw.pageY,left:raw.pageX}}:{width:elem.outerWidth(),height:elem.outerHeight(),offset:elem.offset()},target[0].preventDefault&&(options.at="left top"),targetWidth=dimensions.width,targetHeight=dimensions.height,targetOffset=dimensions.offset,basePosition=$.extend({},targetOffset),$.each(["my","at"],function(){var horizontalOffset,verticalOffset,pos=(options[this]||"").split(" ");1===pos.length&&(pos=rhorizontal.test(pos[0])?pos.concat(["center"]):rvertical.test(pos[0])?["center"].concat(pos):["center","center"]),pos[0]=rhorizontal.test(pos[0])?pos[0]:"center",pos[1]=rvertical.test(pos[1])?pos[1]:"center",horizontalOffset=roffset.exec(pos[0]),verticalOffset=roffset.exec(pos[1]),offsets[this]=[horizontalOffset?horizontalOffset[0]:0,verticalOffset?verticalOffset[0]:0],options[this]=[rposition.exec(pos[0])[0],rposition.exec(pos[1])[0]]}),1===collision.length&&(collision[1]=collision[0]),"right"===options.at[0]?basePosition.left+=targetWidth:"center"===options.at[0]&&(basePosition.left+=targetWidth/2),"bottom"===options.at[1]?basePosition.top+=targetHeight:"center"===options.at[1]&&(basePosition.top+=targetHeight/2),atOffset=getOffsets(offsets.at,targetWidth,targetHeight),basePosition.left+=atOffset[0],basePosition.top+=atOffset[1],this.each(function(){var collisionPosition,using,elem=$(this),elemWidth=elem.outerWidth(),elemHeight=elem.outerHeight(),marginLeft=parseCss(this,"marginLeft"),marginTop=parseCss(this,"marginTop"),collisionWidth=elemWidth+marginLeft+parseCss(this,"marginRight")+scrollInfo.width,collisionHeight=elemHeight+marginTop+parseCss(this,"marginBottom")+scrollInfo.height,position=$.extend({},basePosition),myOffset=getOffsets(offsets.my,elem.outerWidth(),elem.outerHeight());"right"===options.my[0]?position.left-=elemWidth:"center"===options.my[0]&&(position.left-=elemWidth/2),"bottom"===options.my[1]?position.top-=elemHeight:"center"===options.my[1]&&(position.top-=elemHeight/2),position.left+=myOffset[0],position.top+=myOffset[1],collisionPosition={marginLeft:marginLeft,marginTop:marginTop},$.each(["left","top"],function(i,dir){$.ui.position[collision[i]]&&$.ui.position[collision[i]][dir](position,{targetWidth:targetWidth,targetHeight:targetHeight,elemWidth:elemWidth,elemHeight:elemHeight,collisionPosition:collisionPosition,collisionWidth:collisionWidth,collisionHeight:collisionHeight,offset:[atOffset[0]+myOffset[0],atOffset[1]+myOffset[1]],my:options.my,at:options.at,within:within,elem:elem})}),options.using&&(using=function(props){var left=targetOffset.left-position.left,right=left+targetWidth-elemWidth,top=targetOffset.top-position.top,bottom=top+targetHeight-elemHeight,feedback={target:{element:target,left:targetOffset.left,top:targetOffset.top,width:targetWidth,height:targetHeight},element:{element:elem,left:position.left,top:position.top,width:elemWidth,height:elemHeight},horizontal:right<0?"left":0<left?"right":"center",vertical:bottom<0?"top":0<top?"bottom":"middle"};targetWidth<elemWidth&&abs(left+right)<targetWidth&&(feedback.horizontal="center"),targetHeight<elemHeight&&abs(top+bottom)<targetHeight&&(feedback.vertical="middle"),max(abs(left),abs(right))>max(abs(top),abs(bottom))?feedback.important="horizontal":feedback.important="vertical",options.using.call(this,props,feedback)}),elem.offset($.extend(position,{using:using}))})},$.ui.position={fit:{left:function(position,data){var newOverRight,within=data.within,withinOffset=within.isWindow?within.scrollLeft:within.offset.left,outerWidth=within.width,collisionPosLeft=position.left-data.collisionPosition.marginLeft,overLeft=withinOffset-collisionPosLeft,overRight=collisionPosLeft+data.collisionWidth-outerWidth-withinOffset;data.collisionWidth>outerWidth?0<overLeft&&overRight<=0?(newOverRight=position.left+overLeft+data.collisionWidth-outerWidth-withinOffset,position.left+=overLeft-newOverRight):position.left=0<overRight&&overLeft<=0?withinOffset:overRight<overLeft?withinOffset+outerWidth-data.collisionWidth:withinOffset:0<overLeft?position.left+=overLeft:0<overRight?position.left-=overRight:position.left=max(position.left-collisionPosLeft,position.left)},top:function(position,data){var newOverBottom,within=data.within,withinOffset=within.isWindow?within.scrollTop:within.offset.top,outerHeight=data.within.height,collisionPosTop=position.top-data.collisionPosition.marginTop,overTop=withinOffset-collisionPosTop,overBottom=collisionPosTop+data.collisionHeight-outerHeight-withinOffset;data.collisionHeight>outerHeight?0<overTop&&overBottom<=0?(newOverBottom=position.top+overTop+data.collisionHeight-outerHeight-withinOffset,position.top+=overTop-newOverBottom):position.top=0<overBottom&&overTop<=0?withinOffset:overBottom<overTop?withinOffset+outerHeight-data.collisionHeight:withinOffset:0<overTop?position.top+=overTop:0<overBottom?position.top-=overBottom:position.top=max(position.top-collisionPosTop,position.top)}},flip:{left:function(position,data){var newOverRight,newOverLeft,within=data.within,withinOffset=within.offset.left+within.scrollLeft,outerWidth=within.width,offsetLeft=within.isWindow?within.scrollLeft:within.offset.left,collisionPosLeft=position.left-data.collisionPosition.marginLeft,overLeft=collisionPosLeft-offsetLeft,overRight=collisionPosLeft+data.collisionWidth-outerWidth-offsetLeft,myOffset="left"===data.my[0]?-data.elemWidth:"right"===data.my[0]?data.elemWidth:0,atOffset="left"===data.at[0]?data.targetWidth:"right"===data.at[0]?-data.targetWidth:0,offset=-2*data.offset[0];overLeft<0?((newOverRight=position.left+myOffset+atOffset+offset+data.collisionWidth-outerWidth-withinOffset)<0||newOverRight<abs(overLeft))&&(position.left+=myOffset+atOffset+offset):0<overRight&&(0<(newOverLeft=position.left-data.collisionPosition.marginLeft+myOffset+atOffset+offset-offsetLeft)||abs(newOverLeft)<overRight)&&(position.left+=myOffset+atOffset+offset)},top:function(position,data){var newOverTop,newOverBottom,within=data.within,withinOffset=within.offset.top+within.scrollTop,outerHeight=within.height,offsetTop=within.isWindow?within.scrollTop:within.offset.top,collisionPosTop=position.top-data.collisionPosition.marginTop,overTop=collisionPosTop-offsetTop,overBottom=collisionPosTop+data.collisionHeight-outerHeight-offsetTop,myOffset="top"===data.my[1]?-data.elemHeight:"bottom"===data.my[1]?data.elemHeight:0,atOffset="top"===data.at[1]?data.targetHeight:"bottom"===data.at[1]?-data.targetHeight:0,offset=-2*data.offset[1];overTop<0?((newOverBottom=position.top+myOffset+atOffset+offset+data.collisionHeight-outerHeight-withinOffset)<0||newOverBottom<abs(overTop))&&(position.top+=myOffset+atOffset+offset):0<overBottom&&(0<(newOverTop=position.top-data.collisionPosition.marginTop+myOffset+atOffset+offset-offsetTop)||abs(newOverTop)<overBottom)&&(position.top+=myOffset+atOffset+offset)}},flipfit:{left:function(){$.ui.position.flip.left.apply(this,arguments),$.ui.position.fit.left.apply(this,arguments)},top:function(){$.ui.position.flip.top.apply(this,arguments),$.ui.position.fit.top.apply(this,arguments)}}}}(),$.ui.position}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.extend($.expr[":"],{data:$.expr.createPseudo?$.expr.createPseudo(function(dataName){return function(elem){return!!$.data(elem,dataName)}}):function(elem,i,match){return!!$.data(elem,match[3])}})}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.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}}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./version"],factory):factory(jQuery)}(function($){return $.fn.extend({uniqueId:(uuid=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++uuid)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&$(this).removeAttr("id")})}});var uuid}),function(factory){"function"==typeof define&&define.amd?define(["jquery","../ie","../version","../widget"],factory):factory(jQuery)}(function($){var mouseHandled=!1;return $(document).on("mouseup",function(){mouseHandled=!1}),$.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var that=this;this.element.on("mousedown."+this.widgetName,function(event){return that._mouseDown(event)}).on("click."+this.widgetName,function(event){if(!0===$.data(event.target,that.widgetName+".preventClickEvent"))return $.removeData(event.target,that.widgetName+".preventClickEvent"),event.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(event){if(!mouseHandled){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(event),this._mouseDownEvent=event;var that=this,btnIsLeft=1===event.which,elIsCancel=!("string"!=typeof this.options.cancel||!event.target.nodeName)&&$(event.target).closest(this.options.cancel).length;return!(btnIsLeft&&!elIsCancel&&this._mouseCapture(event))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){that.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(event)&&this._mouseDelayMet(event)&&(this._mouseStarted=!1!==this._mouseStart(event),!this._mouseStarted)?(event.preventDefault(),!0):(!0===$.data(event.target,this.widgetName+".preventClickEvent")&&$.removeData(event.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(event){return that._mouseMove(event)},this._mouseUpDelegate=function(event){return that._mouseUp(event)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),event.preventDefault(),mouseHandled=!0))}},_mouseMove:function(event){if(this._mouseMoved){if($.ui.ie&&(!document.documentMode||document.documentMode<9)&&!event.button)return this._mouseUp(event);if(!event.which)if(event.originalEvent.altKey||event.originalEvent.ctrlKey||event.originalEvent.metaKey||event.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(event)}return(event.which||event.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(event),event.preventDefault()):(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,event),this._mouseStarted?this._mouseDrag(event):this._mouseUp(event)),!this._mouseStarted)},_mouseUp:function(event){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,event.target===this._mouseDownEvent.target&&$.data(event.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(event)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,mouseHandled=!1,event.preventDefault()},_mouseDistanceMet:function(event){return Math.max(Math.abs(this._mouseDownEvent.pageX-event.pageX),Math.abs(this._mouseDownEvent.pageY-event.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}),function(factory){"function"==typeof define&&define.amd?define(["jquery","./mouse","../data","../plugin","../safe-active-element","../safe-blur","../scroll-parent","../version","../widget"],factory):factory(jQuery)}(function($){return $.widget("ui.draggable",$.ui.mouse,{version:"1.12.1",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(key,value){this._super(key,value),"handle"===key&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(event){var o=this.options;return!(this.helper||o.disabled||0<$(event.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(event),!!this.handle&&(this._blurActiveElement(event),this._blockFrames(!0===o.iframeFix?"iframe":o.iframeFix),!0))},_blockFrames:function(selector){this.iframeBlocks=this.document.find(selector).map(function(){var iframe=$(this);return $("<div>").css("position","absolute").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(event){var activeElement=$.ui.safeActiveElement(this.document[0]);$(event.target).closest(activeElement).length||$.ui.safeBlur(activeElement)},_mouseStart:function(event){var o=this.options;return this.helper=this._createHelper(event),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),$.ui.ddmanager&&($.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"===$(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(event),this.originalPosition=this.position=this._generatePosition(event,!1),this.originalPageX=event.pageX,this.originalPageY=event.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this._setContainment(),!1===this._trigger("start",event)?(this._clear(),!1):(this._cacheHelperProportions(),$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(this,event),this._mouseDrag(event,!0),$.ui.ddmanager&&$.ui.ddmanager.dragStart(this,event),!0)},_refreshOffsets:function(event){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:event.pageX-this.offset.left,top:event.pageY-this.offset.top}},_mouseDrag:function(event,noPropagation){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(event,!0),this.positionAbs=this._convertPositionTo("absolute"),!noPropagation){var ui=this._uiHash();if(!1===this._trigger("drag",event,ui))return this._mouseUp(new $.Event("mouseup",event)),!1;this.position=ui.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",$.ui.ddmanager&&$.ui.ddmanager.drag(this,event),!1},_mouseStop:function(event){var that=this,dropped=!1;return $.ui.ddmanager&&!this.options.dropBehaviour&&(dropped=$.ui.ddmanager.drop(this,event)),this.dropped&&(dropped=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!dropped||"valid"===this.options.revert&&dropped||!0===this.options.revert||$.isFunction(this.options.revert)&&this.options.revert.call(this.element,dropped)?$(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==that._trigger("stop",event)&&that._clear()}):!1!==this._trigger("stop",event)&&this._clear(),!1},_mouseUp:function(event){return this._unblockFrames(),$.ui.ddmanager&&$.ui.ddmanager.dragStop(this,event),this.handleElement.is(event.target)&&this.element.trigger("focus"),$.ui.mouse.prototype._mouseUp.call(this,event)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new $.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(event){return!this.options.handle||!!$(event.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(event){var o=this.options,helperIsFunction=$.isFunction(o.helper),helper=helperIsFunction?$(o.helper.apply(this.element[0],[event])):"clone"===o.helper?this.element.clone().removeAttr("id"):this.element;return helper.parents("body").length||helper.appendTo("parent"===o.appendTo?this.element[0].parentNode:o.appendTo),helperIsFunction&&helper[0]===this.element[0]&&this._setPositionRelative(),helper[0]===this.element[0]||/(fixed|absolute)/.test(helper.css("position"))||helper.css("position","absolute"),helper},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(obj){"string"==typeof obj&&(obj=obj.split(" ")),$.isArray(obj)&&(obj={left:+obj[0],top:+obj[1]||0}),"left"in obj&&(this.offset.click.left=obj.left+this.margins.left),"right"in obj&&(this.offset.click.left=this.helperProportions.width-obj.right+this.margins.left),"top"in obj&&(this.offset.click.top=obj.top+this.margins.top),"bottom"in obj&&(this.offset.click.top=this.helperProportions.height-obj.bottom+this.margins.top)},_isRootNode:function(element){return/(html|body)/i.test(element.tagName)||element===this.document[0]},_getParentOffset:function(){var po=this.offsetParent.offset(),document=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])&&(po.left+=this.scrollParent.scrollLeft(),po.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(po={top:0,left:0}),{top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var p=this.element.position(),scrollIsRootNode=this._isRootNode(this.scrollParent[0]);return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+(scrollIsRootNode?0:this.scrollParent.scrollTop()),left:p.left-(parseInt(this.helper.css("left"),10)||0)+(scrollIsRootNode?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 isUserScrollable,c,ce,o=this.options,document=this.document[0];this.relativeContainer=null,o.containment?"window"!==o.containment?"document"!==o.containment?o.containment.constructor!==Array?("parent"===o.containment&&(o.containment=this.helper[0].parentNode),(ce=(c=$(o.containment))[0])&&(isUserScrollable=/(scroll|auto)/.test(c.css("overflow")),this.containment=[(parseInt(c.css("borderLeftWidth"),10)||0)+(parseInt(c.css("paddingLeft"),10)||0),(parseInt(c.css("borderTopWidth"),10)||0)+(parseInt(c.css("paddingTop"),10)||0),(isUserScrollable?Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth)-(parseInt(c.css("borderRightWidth"),10)||0)-(parseInt(c.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(isUserScrollable?Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight)-(parseInt(c.css("borderBottomWidth"),10)||0)-(parseInt(c.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=c)):this.containment=o.containment:this.containment=[0,0,$(document).width()-this.helperProportions.width-this.margins.left,($(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[$(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,$(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,$(window).scrollLeft()+$(window).width()-this.helperProportions.width-this.margins.left,$(window).scrollTop()+($(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(d,pos){pos||(pos=this.position);var mod="absolute"===d?1:-1,scrollIsRootNode=this._isRootNode(this.scrollParent[0]);return{top:pos.top+this.offset.relative.top*mod+this.offset.parent.top*mod-("fixed"===this.cssPosition?-this.offset.scroll.top:scrollIsRootNode?0:this.offset.scroll.top)*mod,left:pos.left+this.offset.relative.left*mod+this.offset.parent.left*mod-("fixed"===this.cssPosition?-this.offset.scroll.left:scrollIsRootNode?0:this.offset.scroll.left)*mod}},_generatePosition:function(event,constrainPosition){var containment,co,top,left,o=this.options,scrollIsRootNode=this._isRootNode(this.scrollParent[0]),pageX=event.pageX,pageY=event.pageY;return scrollIsRootNode&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),constrainPosition&&(this.containment&&(containment=this.relativeContainer?(co=this.relativeContainer.offset(),[this.containment[0]+co.left,this.containment[1]+co.top,this.containment[2]+co.left,this.containment[3]+co.top]):this.containment,event.pageX-this.offset.click.left<containment[0]&&(pageX=containment[0]+this.offset.click.left),event.pageY-this.offset.click.top<containment[1]&&(pageY=containment[1]+this.offset.click.top),event.pageX-this.offset.click.left>containment[2]&&(pageX=containment[2]+this.offset.click.left),event.pageY-this.offset.click.top>containment[3]&&(pageY=containment[3]+this.offset.click.top)),o.grid&&(top=o.grid[1]?this.originalPageY+Math.round((pageY-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,pageY=containment?top-this.offset.click.top>=containment[1]||top-this.offset.click.top>containment[3]?top:top-this.offset.click.top>=containment[1]?top-o.grid[1]:top+o.grid[1]:top,left=o.grid[0]?this.originalPageX+Math.round((pageX-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,pageX=containment?left-this.offset.click.left>=containment[0]||left-this.offset.click.left>containment[2]?left:left-this.offset.click.left>=containment[0]?left-o.grid[0]:left+o.grid[0]:left),"y"===o.axis&&(pageX=this.originalPageX),"x"===o.axis&&(pageY=this.originalPageY)),{top:pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:scrollIsRootNode?0:this.offset.scroll.top),left:pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:scrollIsRootNode?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(type,event,ui){return ui=ui||this._uiHash(),$.ui.plugin.call(this,type,[event,ui,this],!0),/^(drag|start|stop)/.test(type)&&(this.positionAbs=this._convertPositionTo("absolute"),ui.offset=this.positionAbs),$.Widget.prototype._trigger.call(this,type,event,ui)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),$.ui.plugin.add("draggable","connectToSortable",{start:function(event,ui,draggable){var uiSortable=$.extend({},ui,{item:draggable.element});draggable.sortables=[],$(draggable.options.connectToSortable).each(function(){var sortable=$(this).sortable("instance");sortable&&!sortable.options.disabled&&(draggable.sortables.push(sortable),sortable.refreshPositions(),sortable._trigger("activate",event,uiSortable))})},stop:function(event,ui,draggable){var uiSortable=$.extend({},ui,{item:draggable.element});draggable.cancelHelperRemoval=!1,$.each(draggable.sortables,function(){this.isOver?(this.isOver=0,draggable.cancelHelperRemoval=!0,this.cancelHelperRemoval=!1,this._storedCSS={position:this.placeholder.css("position"),top:this.placeholder.css("top"),left:this.placeholder.css("left")},this._mouseStop(event),this.options.helper=this.options._helper):(this.cancelHelperRemoval=!0,this._trigger("deactivate",event,uiSortable))})},drag:function(event,ui,draggable){$.each(draggable.sortables,function(){var innermostIntersecting=!1,sortable=this;sortable.positionAbs=draggable.positionAbs,sortable.helperProportions=draggable.helperProportions,sortable.offset.click=draggable.offset.click,sortable._intersectsWith(sortable.containerCache)&&(innermostIntersecting=!0,$.each(draggable.sortables,function(){return this.positionAbs=draggable.positionAbs,this.helperProportions=draggable.helperProportions,this.offset.click=draggable.offset.click,this!==sortable&&this._intersectsWith(this.containerCache)&&$.contains(sortable.element[0],this.element[0])&&(innermostIntersecting=!1),innermostIntersecting})),innermostIntersecting?(sortable.isOver||(sortable.isOver=1,draggable._parent=ui.helper.parent(),sortable.currentItem=ui.helper.appendTo(sortable.element).data("ui-sortable-item",!0),sortable.options._helper=sortable.options.helper,sortable.options.helper=function(){return ui.helper[0]},event.target=sortable.currentItem[0],sortable._mouseCapture(event,!0),sortable._mouseStart(event,!0,!0),sortable.offset.click.top=draggable.offset.click.top,sortable.offset.click.left=draggable.offset.click.left,sortable.offset.parent.left-=draggable.offset.parent.left-sortable.offset.parent.left,sortable.offset.parent.top-=draggable.offset.parent.top-sortable.offset.parent.top,draggable._trigger("toSortable",event),draggable.dropped=sortable.element,$.each(draggable.sortables,function(){this.refreshPositions()}),draggable.currentItem=draggable.element,sortable.fromOutside=draggable),sortable.currentItem&&(sortable._mouseDrag(event),ui.position=sortable.position)):sortable.isOver&&(sortable.isOver=0,sortable.cancelHelperRemoval=!0,sortable.options._revert=sortable.options.revert,sortable.options.revert=!1,sortable._trigger("out",event,sortable._uiHash(sortable)),sortable._mouseStop(event,!0),sortable.options.revert=sortable.options._revert,sortable.options.helper=sortable.options._helper,sortable.placeholder&&sortable.placeholder.remove(),ui.helper.appendTo(draggable._parent),draggable._refreshOffsets(event),ui.position=draggable._generatePosition(event,!0),draggable._trigger("fromSortable",event),draggable.dropped=!1,$.each(draggable.sortables,function(){this.refreshPositions()}))})}}),$.ui.plugin.add("draggable","cursor",{start:function(event,ui,instance){var t=$("body"),o=instance.options;t.css("cursor")&&(o._cursor=t.css("cursor")),t.css("cursor",o.cursor)},stop:function(event,ui,instance){var o=instance.options;o._cursor&&$("body").css("cursor",o._cursor)}}),$.ui.plugin.add("draggable","opacity",{start:function(event,ui,instance){var t=$(ui.helper),o=instance.options;t.css("opacity")&&(o._opacity=t.css("opacity")),t.css("opacity",o.opacity)},stop:function(event,ui,instance){var o=instance.options;o._opacity&&$(ui.helper).css("opacity",o._opacity)}}),$.ui.plugin.add("draggable","scroll",{start:function(event,ui,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(event,ui,i){var o=i.options,scrolled=!1,scrollParent=i.scrollParentNotHidden[0],document=i.document[0];scrollParent!==document&&"HTML"!==scrollParent.tagName?(o.axis&&"x"===o.axis||(i.overflowOffset.top+scrollParent.offsetHeight-event.pageY<o.scrollSensitivity?scrollParent.scrollTop=scrolled=scrollParent.scrollTop+o.scrollSpeed:event.pageY-i.overflowOffset.top<o.scrollSensitivity&&(scrollParent.scrollTop=scrolled=scrollParent.scrollTop-o.scrollSpeed)),o.axis&&"y"===o.axis||(i.overflowOffset.left+scrollParent.offsetWidth-event.pageX<o.scrollSensitivity?scrollParent.scrollLeft=scrolled=scrollParent.scrollLeft+o.scrollSpeed:event.pageX-i.overflowOffset.left<o.scrollSensitivity&&(scrollParent.scrollLeft=scrolled=scrollParent.scrollLeft-o.scrollSpeed))):(o.axis&&"x"===o.axis||(event.pageY-$(document).scrollTop()<o.scrollSensitivity?scrolled=$(document).scrollTop($(document).scrollTop()-o.scrollSpeed):$(window).height()-(event.pageY-$(document).scrollTop())<o.scrollSensitivity&&(scrolled=$(document).scrollTop($(document).scrollTop()+o.scrollSpeed))),o.axis&&"y"===o.axis||(event.pageX-$(document).scrollLeft()<o.scrollSensitivity?scrolled=$(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed):$(window).width()-(event.pageX-$(document).scrollLeft())<o.scrollSensitivity&&(scrolled=$(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed)))),!1!==scrolled&&$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(i,event)}}),$.ui.plugin.add("draggable","snap",{start:function(event,ui,i){var o=i.options;i.snapElements=[],$(o.snap.constructor!==String?o.snap.items||":data(ui-draggable)":o.snap).each(function(){var $t=$(this),$o=$t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:$t.outerWidth(),height:$t.outerHeight(),top:$o.top,left:$o.left})})},drag:function(event,ui,inst){var ts,bs,ls,rs,l,r,t,b,i,first,o=inst.options,d=o.snapTolerance,x1=ui.offset.left,x2=x1+inst.helperProportions.width,y1=ui.offset.top,y2=y1+inst.helperProportions.height;for(i=inst.snapElements.length-1;0<=i;i--)r=(l=inst.snapElements[i].left-inst.margins.left)+inst.snapElements[i].width,b=(t=inst.snapElements[i].top-inst.margins.top)+inst.snapElements[i].height,x2<l-d||r+d<x1||y2<t-d||b+d<y1||!$.contains(inst.snapElements[i].item.ownerDocument,inst.snapElements[i].item)?(inst.snapElements[i].snapping&&inst.options.snap.release&&inst.options.snap.release.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=!1):("inner"!==o.snapMode&&(ts=Math.abs(t-y2)<=d,bs=Math.abs(b-y1)<=d,ls=Math.abs(l-x2)<=d,rs=Math.abs(r-x1)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t-inst.helperProportions.height,left:0}).top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b,left:0}).top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l-inst.helperProportions.width}).left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r}).left)),first=ts||bs||ls||rs,"outer"!==o.snapMode&&(ts=Math.abs(t-y1)<=d,bs=Math.abs(b-y2)<=d,ls=Math.abs(l-x1)<=d,rs=Math.abs(r-x2)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t,left:0}).top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b-inst.helperProportions.height,left:0}).top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l}).left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r-inst.helperProportions.width}).left)),!inst.snapElements[i].snapping&&(ts||bs||ls||rs||first)&&inst.options.snap.snap&&inst.options.snap.snap.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=ts||bs||ls||rs||first)}}),$.ui.plugin.add("draggable","stack",{start:function(event,ui,instance){var min,o=instance.options,group=$.makeArray($(o.stack)).sort(function(a,b){return(parseInt($(a).css("zIndex"),10)||0)-(parseInt($(b).css("zIndex"),10)||0)});group.length&&(min=parseInt($(group[0]).css("zIndex"),10)||0,$(group).each(function(i){$(this).css("zIndex",min+i)}),this.css("zIndex",min+group.length))}}),$.ui.plugin.add("draggable","zIndex",{start:function(event,ui,instance){var t=$(ui.helper),o=instance.options;t.css("zIndex")&&(o._zIndex=t.css("zIndex")),t.css("zIndex",o.zIndex)},stop:function(event,ui,instance){var o=instance.options;o._zIndex&&$(ui.helper).css("zIndex",o._zIndex)}}),$.ui.draggable}),function(factory){"function"==typeof define&&define.amd?define(["jquery","../keycode","../position","../unique-id","../version","../widget"],factory):factory(jQuery)}(function($){return $.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var title=$(this).attr("title")||"";return $("<a>").text(title).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(elem,id){var describedby=(elem.attr("aria-describedby")||"").split(/\s+/);describedby.push(id),elem.data("ui-tooltip-id",id).attr("aria-describedby",$.trim(describedby.join(" ")))},_removeDescribedBy:function(elem){var id=elem.data("ui-tooltip-id"),describedby=(elem.attr("aria-describedby")||"").split(/\s+/),index=$.inArray(id,describedby);-1!==index&&describedby.splice(index,1),elem.removeData("ui-tooltip-id"),(describedby=$.trim(describedby.join(" ")))?elem.attr("aria-describedby",describedby):elem.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=$("<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=$([])},_setOption:function(key,value){var that=this;this._super(key,value),"content"===key&&$.each(this.tooltips,function(id,tooltipData){that._updateContent(tooltipData.element)})},_setOptionDisabled:function(value){this[value?"_disable":"_enable"]()},_disable:function(){var that=this;$.each(this.tooltips,function(id,tooltipData){var event=$.Event("blur");event.target=event.currentTarget=tooltipData.element[0],that.close(event,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var element=$(this);if(element.is("[title]"))return element.data("ui-tooltip-title",element.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var element=$(this);element.data("ui-tooltip-title")&&element.attr("title",element.data("ui-tooltip-title"))}),this.disabledTitles=$([])},open:function(event){var that=this,target=$(event?event.target:this.element).closest(this.options.items);target.length&&!target.data("ui-tooltip-id")&&(target.attr("title")&&target.data("ui-tooltip-title",target.attr("title")),target.data("ui-tooltip-open",!0),event&&"mouseover"===event.type&&target.parents().each(function(){var blurEvent,parent=$(this);parent.data("ui-tooltip-open")&&((blurEvent=$.Event("blur")).target=blurEvent.currentTarget=this,that.close(blurEvent,!0)),parent.attr("title")&&(parent.uniqueId(),that.parents[this.id]={element:this,title:parent.attr("title")},parent.attr("title",""))}),this._registerCloseHandlers(event,target),this._updateContent(target,event))},_updateContent:function(target,event){var content,contentOption=this.options.content,that=this,eventType=event?event.type:null;if("string"==typeof contentOption||contentOption.nodeType||contentOption.jquery)return this._open(event,target,contentOption);(content=contentOption.call(target[0],function(response){that._delay(function(){target.data("ui-tooltip-open")&&(event&&(event.type=eventType),this._open(event,target,response))})}))&&this._open(event,target,content)},_open:function(event,target,content){var tooltipData,tooltip,delayedShow,a11yContent,positionOption=$.extend({},this.options.position);function position(event){positionOption.of=event,tooltip.is(":hidden")||tooltip.position(positionOption)}content&&((tooltipData=this._find(target))?tooltipData.tooltip.find(".ui-tooltip-content").html(content):(target.is("[title]")&&(event&&"mouseover"===event.type?target.attr("title",""):target.removeAttr("title")),tooltipData=this._tooltip(target),tooltip=tooltipData.tooltip,this._addDescribedBy(target,tooltip.attr("id")),tooltip.find(".ui-tooltip-content").html(content),this.liveRegion.children().hide(),(a11yContent=$("<div>").html(tooltip.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),a11yContent.removeAttr("id").find("[id]").removeAttr("id"),a11yContent.appendTo(this.liveRegion),this.options.track&&event&&/^mouse/.test(event.type)?(this._on(this.document,{mousemove:position}),position(event)):tooltip.position($.extend({of:target},this.options.position)),tooltip.hide(),this._show(tooltip,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(delayedShow=this.delayedShow=setInterval(function(){tooltip.is(":visible")&&(position(positionOption.of),clearInterval(delayedShow))},$.fx.interval)),this._trigger("open",event,{tooltip:tooltip})))},_registerCloseHandlers:function(event,target){var events={keyup:function(event){if(event.keyCode===$.ui.keyCode.ESCAPE){var fakeEvent=$.Event(event);fakeEvent.currentTarget=target[0],this.close(fakeEvent,!0)}}};target[0]!==this.element[0]&&(events.remove=function(){this._removeTooltip(this._find(target).tooltip)}),event&&"mouseover"!==event.type||(events.mouseleave="close"),event&&"focusin"!==event.type||(events.focusout="close"),this._on(!0,target,events)},close:function(event){var tooltip,that=this,target=$(event?event.currentTarget:this.element),tooltipData=this._find(target);tooltipData?(tooltip=tooltipData.tooltip,tooltipData.closing||(clearInterval(this.delayedShow),target.data("ui-tooltip-title")&&!target.attr("title")&&target.attr("title",target.data("ui-tooltip-title")),this._removeDescribedBy(target),tooltipData.hiding=!0,tooltip.stop(!0),this._hide(tooltip,this.options.hide,function(){that._removeTooltip($(this))}),target.removeData("ui-tooltip-open"),this._off(target,"mouseleave focusout keyup"),target[0]!==this.element[0]&&this._off(target,"remove"),this._off(this.document,"mousemove"),event&&"mouseleave"===event.type&&$.each(this.parents,function(id,parent){$(parent.element).attr("title",parent.title),delete that.parents[id]}),tooltipData.closing=!0,this._trigger("close",event,{tooltip:tooltip}),tooltipData.hiding||(tooltipData.closing=!1))):target.removeData("ui-tooltip-open")},_tooltip:function(element){var tooltip=$("<div>").attr("role","tooltip"),content=$("<div>").appendTo(tooltip),id=tooltip.uniqueId().attr("id");return this._addClass(content,"ui-tooltip-content"),this._addClass(tooltip,"ui-tooltip","ui-widget ui-widget-content"),tooltip.appendTo(this._appendTo(element)),this.tooltips[id]={element:element,tooltip:tooltip}},_find:function(target){var id=target.data("ui-tooltip-id");return id?this.tooltips[id]:null},_removeTooltip:function(tooltip){tooltip.remove(),delete this.tooltips[tooltip.attr("id")]},_appendTo:function(target){var element=target.closest(".ui-front, dialog");return element.length||(element=this.document[0].body),element},_destroy:function(){var that=this;$.each(this.tooltips,function(id,tooltipData){var event=$.Event("blur"),element=tooltipData.element;event.target=event.currentTarget=element[0],that.close(event,!0),$("#"+id).remove(),element.data("ui-tooltip-title")&&(element.attr("title")||element.attr("title",element.data("ui-tooltip-title")),element.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==$.uiBackCompat&&$.widget("ui.tooltip",$.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var tooltipData=this._superApply(arguments);return this.options.tooltipClass&&tooltipData.tooltip.addClass(this.options.tooltipClass),tooltipData}}),$.ui.tooltip});var fluid_3_0_0=fluid_3_0_0||{},fluid=fluid||fluid_3_0_0;!function($,fluid){"use strict";fluid.version="Infusion 3.0.0",fluid.Error=Error,fluid.environment={fluid:fluid},fluid.global=fluid.global||"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},fluid.invokeLater=function(func){return setTimeout(func,1)},fluid.defeatLogging=!0,fluid.activityTracing=!1,fluid.activityTrace=[];var activityParser=/(%\w+)/g;function transformInternal(source,togo,key,args){for(var transit=source[key],j=0;j<args.length-1;++j)transit=args[j+1](transit,key);togo[key]=transit}fluid.renderOneActivity=function(activity,nowhile){for(var togo=!0===nowhile?[]:[" while "],message=activity.message,index=activityParser.lastIndex=0;;){var match=activityParser.exec(message);if(!match)break;var key=match[1].substring(1);togo.push(message.substring(index,match.index)),togo.push(activity.args[key]),index=activityParser.lastIndex}return index<message.length&&togo.push(message.substring(index)),togo},fluid.renderActivity=function(activityStack,renderer){return renderer=renderer||fluid.renderOneActivity,fluid.transform(activityStack,renderer)},fluid.singleThreadLocal=function(initFunc){var value=initFunc();return function(newValue){return void 0===newValue?value:value=newValue}},fluid.threadLocal=fluid.singleThreadLocal,fluid.globalThreadLocal=fluid.threadLocal(function(){return{}}),fluid.getActivityStack=function(){var root=fluid.globalThreadLocal();return root.activityStack||(root.activityStack=[]),root.activityStack},fluid.describeActivity=fluid.getActivityStack,fluid.logActivity=function(activity){activity=activity||fluid.describeActivity();var rendered=fluid.renderActivity(activity).reverse();0<rendered.length&&(fluid.log("Current activity: "),fluid.each(rendered,function(args){fluid.log.apply(null,args)}))},fluid.pushActivity=function(type,message,args){var record={type:type,message:message,args:args,time:(new Date).getTime()};fluid.activityTracing&&fluid.activityTrace.push(record),fluid.passLogLevel(fluid.logLevel.TRACE)&&fluid.log.apply(null,fluid.renderOneActivity(record,!0)),fluid.getActivityStack().push(record)},fluid.popActivity=function(popframes){popframes=popframes||1,fluid.activityTracing&&fluid.activityTrace.push({pop:popframes});var activityStack=fluid.getActivityStack(),popped=activityStack.length-popframes;activityStack.length=popped<0?0:popped},fluid.FluidError=function(){var togo=Error.apply(this,arguments);this.message=togo.message;try{throw togo}catch(togo){this.stack=togo.stack}return this},fluid.FluidError.prototype=Object.create(Error.prototype),fluid.logFailure=function(args,activity){fluid.log.apply(null,[fluid.logLevel.FAIL,"ASSERTION FAILED: "].concat(args)),fluid.logActivity(activity)},fluid.renderLoggingArg=function(arg){return void 0===arg?"undefined":fluid.isPrimitive(arg)||!fluid.isPlainObject(arg)?arg:JSON.stringify(arg)},fluid.builtinFail=function(args){var message=fluid.transform(args,fluid.renderLoggingArg).join("");throw new fluid.FluidError("Assertion failure - check console for more details: "+message)},fluid.fail=function(){var args=fluid.makeArray(arguments),activity=fluid.makeArray(fluid.describeActivity());fluid.popActivity(activity.length),fluid.failureEvent?fluid.failureEvent.fire(args,activity):(fluid.logFailure(args,activity),fluid.builtinFail(args,activity))},fluid.expect=function(name,target,members){fluid.transform(fluid.makeArray(members),function(key){void 0===target[key]&&fluid.fail(name+" missing required parameter "+key)})},fluid.isLogging=function(){return logLevelStack[0].priority>fluid.logLevel.IMPORTANT.priority},fluid.isLogLevel=function(arg){return fluid.isMarker(arg)&&void 0!==arg.priority},fluid.passLogLevel=function(testLogLevel){return testLogLevel.priority<=logLevelStack[0].priority},fluid.setLogging=function(enabled){var logLevel;"boolean"==typeof enabled?logLevel=fluid.logLevel[enabled?"INFO":"IMPORTANT"]:fluid.isLogLevel(enabled)?logLevel=enabled:fluid.fail("Unrecognised fluid logging level ",enabled),logLevelStack.unshift(logLevel),fluid.defeatLogging=!fluid.isLogging()},fluid.setLogLevel=fluid.setLogging,fluid.popLogging=function(){var togo=1===logLevelStack.length?logLevelStack[0]:logLevelStack.shift();return fluid.defeatLogging=!fluid.isLogging(),togo},fluid.doBrowserLog=function(args){"undefined"!=typeof console&&(console.debug?console.debug.apply(console,args):"function"==typeof console.log&&console.log.apply(console,args))},fluid.log=function(){var directArgs=fluid.makeArray(arguments),userLogLevel=fluid.logLevel.INFO;fluid.isLogLevel(directArgs[0])&&(userLogLevel=directArgs.shift()),fluid.passLogLevel(userLogLevel)&&fluid.loggingEvent.fire(directArgs)},fluid.isValue=function(value){return null!=value},fluid.isPrimitive=function(value){var valueType=typeof value;return!value||"string"===valueType||"boolean"===valueType||"number"===valueType||"function"===valueType},fluid.isJQuery=function(totest){return Boolean(totest&&totest.jquery&&totest.constructor&&totest.constructor.prototype&&totest.constructor.prototype.jquery)},fluid.isArrayable=function(totest){return Boolean(totest)&&("[object Array]"===Object.prototype.toString.call(totest)||fluid.isJQuery(totest))},fluid.isPlainObject=function(totest,strict){var string=Object.prototype.toString.call(totest);return"[object Array]"===string?!strict:"[object Object]"===string&&(!totest.constructor||!totest.constructor.prototype||Object.prototype.hasOwnProperty.call(totest.constructor.prototype,"isPrototypeOf"))},fluid.typeCode=function(totest){return fluid.isPrimitive(totest)||!fluid.isPlainObject(totest)?"primitive":fluid.isArrayable(totest)?"array":"object"},fluid.isIoCReference=function(ref){return"string"==typeof ref&&"{"===ref.charAt(0)&&0<ref.indexOf("}")},fluid.isDOMNode=function(obj){return obj&&"number"==typeof obj.nodeType},fluid.isComponent=function(obj){return obj&&obj.constructor===fluid.componentConstructor},fluid.isUncopyable=function(totest){return fluid.isPrimitive(totest)||!fluid.isPlainObject(totest)},fluid.isApplicable=function(totest){return totest.apply&&"function"==typeof totest.apply},fluid.identity=function(arg){return arg},fluid.notImplemented=function(){fluid.fail("This operation is not implemented")},fluid.firstDefined=function(a,b){return void 0===a?b:a},fluid.freshContainer=function(tocopy){return fluid.isArrayable(tocopy)?[]:{}},fluid.copyRecurse=function(tocopy,segs){return segs.length>fluid.strategyRecursionBailout&&fluid.fail("Runaway recursion encountered in fluid.copy - reached path depth of "+fluid.strategyRecursionBailout+" via path of "+segs.join(".")+"this object is probably circularly connected. Either adjust your object structure to remove the circularity or increase fluid.strategyRecursionBailout"),fluid.isUncopyable(tocopy)?tocopy:fluid.transform(tocopy,function(value,key){segs.push(key);var togo=fluid.copyRecurse(value,segs);return segs.pop(),togo})},fluid.copy=function(tocopy){return fluid.copyRecurse(tocopy,[])},fluid.extend=$.extend,fluid.makeArray=function(arg){var togo=[];if(null!=arg)if(fluid.isPrimitive(arg)||fluid.isPlainObject(arg,!0)||"number"!=typeof arg.length)togo.push(arg);else for(var i=0;i<arg.length;++i)togo[i]=arg[i];return togo},fluid.pushArray=function(holder,member,topush){var array=holder[member]?holder[member]:holder[member]=[];fluid.isArrayable(topush)?array.push.apply(array,topush):array.push(topush)},fluid.transform=function(source){if(fluid.isPrimitive(source))return source;var togo=fluid.freshContainer(source);if(fluid.isArrayable(source))for(var i=0;i<source.length;++i)transformInternal(source,togo,i,arguments);else for(var key in source)transformInternal(source,togo,key,arguments);return togo},fluid.each=function(source,func){if(fluid.isArrayable(source))for(var i=0;i<source.length;++i)func(source[i],i);else for(var key in source)func(source[key],key)},fluid.make_find=function(find_if){var target=!find_if&&void 0;return function(source,func,deffolt){var disp;if(fluid.isArrayable(source)){for(var i=0;i<source.length;++i)if((disp=func(source[i],i))!==target)return find_if?source[i]:disp}else for(var key in source)if((disp=func(source[key],key))!==target)return find_if?source[key]:disp;return deffolt}},fluid.find=fluid.make_find(!1),fluid.find_if=fluid.make_find(!0),fluid.accumulate=function(list,fn,arg){for(var i=0;i<list.length;++i)arg=fn(list[i],arg,i);return arg},fluid.add=function(a,b){return a+b},fluid.remove_if=function(source,fn,target){if(fluid.isArrayable(source))for(var i=source.length-1;0<=i;--i)fn(source[i],i)&&(target&&target.unshift(source[i]),source.splice(i,1));else for(var key in source)fn(source[key],key)&&(target&&(target[key]=source[key]),delete source[key]);return target||source},fluid.generate=function(n,generator,applyFunc){for(var togo=[],i=0;i<n;++i)togo[i]=applyFunc?generator(i):generator;return togo},fluid.iota=function(count,first){first=first||0;for(var togo=[],i=0;i<count;++i)togo[togo.length]=first++;return togo},fluid.getMembers=function(holder,name){return fluid.transform(holder,function(member){return fluid.get(member,name)})},fluid.filterKeys=function(toFilter,keys,exclude){return fluid.remove_if($.extend({},toFilter),function(value,key){return exclude^-1===keys.indexOf(key)})},fluid.censorKeys=function(toCensor,keys){return fluid.filterKeys(toCensor,keys,!0)},fluid.keys=function(obj){var togo=[];for(var key in obj)togo.push(key);return togo},fluid.values=function(obj){var togo=[];for(var key in obj)togo.push(obj[key]);return togo},fluid.contains=function(obj,value){return obj?fluid.isArrayable(obj)?-1!==obj.indexOf(value):fluid.find(obj,function(thisValue){if(value===thisValue)return!0}):void 0},fluid.keyForValue=function(obj,value){return fluid.find(obj,function(thisValue,key){if(value===thisValue)return key})},fluid.arrayToHash=function(array){var togo={};return fluid.each(array,function(el){togo[el]=!0}),togo},fluid.stableSort=function(array,func){for(var i=0;i<array.length;i++){var j,k=array[i];for(j=i;0<j&&func(k,array[j-1])<0;j--)array[j]=array[j-1];array[j]=k}},fluid.hashToArray=function(hash,keyName,func){var togo=[];return fluid.each(hash,function(el,key){var newEl={};newEl[keyName]=key,func?newEl=func(newEl,el,key)||newEl:$.extend(!0,newEl,el),togo.push(newEl)}),togo},fluid.flatten=function(array){var togo=[];return fluid.each(array,function(element){fluid.isArrayable(element)?togo=togo.concat(element):togo.push(element)}),togo},fluid.clear=function(target){if(fluid.isArrayable(target))target.length=0;else for(var i in target)delete target[i]},fluid.compareStringLength=function(ascending){return ascending?function(a,b){return a.length-b.length}:function(a,b){return b.length-a.length}},fluid.parseInteger=function(string){return isFinite(string)&&string%1==0?Number(string):NaN},fluid.roundToDecimal=function(num,scale,method){return scale=scale&&0<=scale?Math.round(scale):0,"ceil"===method||"floor"===method?Number(Math[method](num+"e"+scale)+"e-"+scale):Number((0<=num?1:-1)*(Math.round(Math.abs(num)+"e"+scale)+"e-"+scale))},fluid.debounce=function(func,wait,immediate){var timeout,result;return function(){var context=this,args=arguments,callNow=immediate&&!timeout;return clearTimeout(timeout),timeout=setTimeout(function(){timeout=null,immediate||(result=func.apply(context,args))},wait),callNow&&(result=func.apply(context,args)),result}},fluid.freezeRecursive=function(tofreeze){return fluid.isPlainObject(tofreeze)?(fluid.each(tofreeze,function(value){fluid.freezeRecursive(value)}),Object.freeze(tofreeze)):tofreeze},fluid.marker=function(){},fluid.makeMarker=function(value,extra){var togo=Object.create(fluid.marker.prototype);return togo.value=value,$.extend(togo,extra),Object.freeze(togo)},fluid.VALUE=fluid.makeMarker("VALUE"),fluid.NO_VALUE=fluid.makeMarker("NO_VALUE"),fluid.EXPAND=fluid.makeMarker("EXPAND"),fluid.isMarker=function(totest,type){return totest instanceof fluid.marker&&(!type||totest.value===type.value)},fluid.logLevelsSpec={FATAL:0,FAIL:5,WARN:10,IMPORTANT:12,INFO:15,TRACE:20},fluid.logLevel=fluid.transform(fluid.logLevelsSpec,function(value,key){return fluid.makeMarker(key,{priority:value})});var logLevelStack=[fluid.logLevel.IMPORTANT];fluid.model={},fluid.model.copyModel=function(target,source){fluid.clear(target),$.extend(!0,target,source)},fluid.model.parseEL=function(EL){return""===EL?[]:String(EL).split(".")},fluid.model.composePath=function(prefix,suffix){return""===prefix?suffix:""===suffix?prefix:prefix+"."+suffix},fluid.model.composeSegments=function(){return fluid.makeArray(arguments).join(".")},fluid.lastDotIndex=function(path){return path.lastIndexOf(".")},fluid.model.getToTailPath=function(path){var lastdot=fluid.lastDotIndex(path);return-1===lastdot?"":path.substring(0,lastdot)},fluid.model.getTailPath=function(path){var lastdot=fluid.lastDotIndex(path);return path.substring(lastdot+1)},fluid.path=fluid.model.composeSegments,fluid.composePath=fluid.model.composePath,fluid.requireDataBinding=function(){fluid.fail("Please include DataBinding.js in order to operate complex model accessor configuration")},fluid.model.setWithStrategy=fluid.model.getWithStrategy=fluid.requireDataBinding,fluid.model.resolvePathSegment=function(root,segment,create,origEnv){if(!origEnv&&root.resolvePathSegment){var togo=root.resolvePathSegment(segment);if(void 0!==togo)return togo}return create&&void 0===root[segment]?root[segment]={}:root[segment]},fluid.model.parseToSegments=function(EL,parseEL,copy){return"number"==typeof EL||"string"==typeof EL?parseEL(EL):copy?fluid.makeArray(EL):EL},fluid.model.pathToSegments=function(EL,config){var parser=config&&config.parser?config.parser.parse:fluid.model.parseEL;return fluid.model.parseToSegments(EL,parser)},fluid.model.accessImpl=function(root,EL,newValue,config,initSegs,returnSegs,traverser){var segs=fluid.model.pathToSegments(EL,config),initPos=0;if(initSegs&&(initPos=initSegs.length,segs=initSegs.concat(segs)),root=traverser(root,segs,initPos,config,newValue===fluid.NO_VALUE?0:1),newValue===fluid.NO_VALUE||newValue===fluid.VALUE)return returnSegs?{root:root,segs:segs}:root;root[segs[segs.length-1]]=newValue},fluid.model.accessSimple=function(root,EL,newValue,environment,initSegs,returnSegs){return fluid.model.accessImpl(root,EL,newValue,environment,initSegs,returnSegs,fluid.model.traverseSimple)},fluid.model.traverseSimple=function(root,segs,initPos,environment,uncess){for(var origEnv=environment,limit=segs.length-uncess,i=0;i<limit;++i){if(!root)return;var segment=segs[i];root=environment&&environment[segment]?environment[segment]:fluid.model.resolvePathSegment(root,segment,1===uncess,origEnv),environment=null}return root},fluid.model.setSimple=function(root,EL,newValue,environment,initSegs){fluid.model.accessSimple(root,EL,newValue,environment,initSegs,!1)},fluid.model.getSimple=function(root,EL,environment,initSegs){return null==EL||0===EL.length?root:fluid.model.accessSimple(root,EL,fluid.NO_VALUE,environment,initSegs,!1)},fluid.getImmediate=function(root,segs,i){for(var limit=void 0===i?segs.length:i+1,j=0;j<limit;++j)root=root?root[segs[j]]:void 0;return root},fluid.decodeAccessorArg=function(arg3){return arg3&&arg3!==fluid.model.defaultGetConfig&&arg3!==fluid.model.defaultSetConfig?"environment"===arg3.type?arg3.value:void 0:null},fluid.set=function(root,EL,newValue,config,initSegs){var env=fluid.decodeAccessorArg(config);void 0===env?fluid.model.setWithStrategy(root,EL,newValue,config,initSegs):fluid.model.setSimple(root,EL,newValue,env,initSegs)},fluid.get=function(root,EL,config,initSegs){var env=fluid.decodeAccessorArg(config);return void 0===env?fluid.model.getWithStrategy(root,EL,config,initSegs):fluid.model.accessImpl(root,EL,fluid.NO_VALUE,env,null,!1,fluid.model.traverseSimple)},fluid.getGlobalValue=function(path,env){if(path)return env=env||fluid.environment,fluid.get(fluid.global,path,{type:"environment",value:env})},fluid.bind=function(obj,fnName,args){return obj[fnName].apply(obj,fluid.makeArray(args))},fluid.invokeGlobalFunction=function(functionPath,args,environment){var func=fluid.getGlobalValue(functionPath,environment);if(func)return func.apply(null,fluid.isArrayable(args)?args:fluid.makeArray(args));fluid.fail("Error invoking global function: "+functionPath+" could not be located")},fluid.registerGlobalFunction=function(functionPath,func,env){env=env||fluid.environment,fluid.set(fluid.global,functionPath,func,{type:"environment",value:env})},fluid.setGlobalValue=fluid.registerGlobalFunction,fluid.registerNamespace=function(naimspace,env){env=env||fluid.environment;var existing=fluid.getGlobalValue(naimspace,env);return existing||(existing={},fluid.setGlobalValue(naimspace,existing,env)),existing},fluid.dumpEl=fluid.identity,fluid.renderTimestamp=fluid.identity,fluid.generateUniquePrefix=function(){return Math.floor(1e12*Math.random()).toString(36)+"-"};var fluid_prefix=fluid.generateUniquePrefix();fluid.fluidInstance=fluid_prefix;var fluid_guid=1;fluid.allocateGuid=function(){return fluid_prefix+fluid_guid++},fluid.registerNamespace("fluid.event"),fluid.extremePriority=4e9,fluid.priorityTypes={first:-1,last:1,before:0,after:0},fluid.extremalPriorities={none:0,testing:10,authoring:20},fluid.parsePriorityConstraint=function(constraint,fixedOnly,site){var segs=constraint.split(":"),type=segs[0],lookup=fluid.priorityTypes[type];return void 0===lookup&&fluid.fail("Invalid constraint type in priority field "+constraint+": the only supported values are "+fluid.keys(fluid.priorityTypes).join(", ")+" or numeric"),fixedOnly&&0===lookup&&fluid.fail("Constraint type in priority field "+constraint+" is not supported in a "+site+" record - you must use either a numeric value or first, last"),{type:segs[0],target:segs[1]}},fluid.parsePriority=function(priority,count,fixedOnly,site){var togo={count:count||0,fixed:null,constraint:null,site:site};"number"==typeof(priority=priority||0)?togo.fixed=-priority:togo.constraint=fluid.parsePriorityConstraint(priority,fixedOnly,site);var multiplier=togo.constraint?fluid.priorityTypes[togo.constraint.type]:0;if(0!==multiplier){var target=togo.constraint.target||"none",extremal=fluid.extremalPriorities[target];void 0===extremal&&fluid.fail("Unrecognised extremal priority target "+target+": the currently supported values are "+fluid.keys(fluid.extremalPriorities).join(", ")+": register your value in fluid.extremalPriorities"),togo.fixed=multiplier*(fluid.extremePriority+extremal)}return null!==togo.fixed&&(togo.fixed+=togo.count/1024),togo},fluid.renderPriority=function(parsed){return parsed.constraint?parsed.constraint.target?parsed.constraint.type+":"+parsed.constraint.target:parsed.constraint.type:Math.floor(parsed.fixed)},fluid.compareByPriority=function(recA,recB){return null!==recA.priority.fixed&&null!==recB.priority.fixed?recA.priority.fixed-recB.priority.fixed:(null===recA.priority.fixed)-(null===recB.priority.fixed)},fluid.honourConstraint=function(array,firstConstraint,c){var constraint=array[c].priority.constraint,matchIndex=fluid.find(array,function(element,index){return element.namespace===constraint.target?index:void 0},-1);if(-1===matchIndex)return!0;if(firstConstraint<=matchIndex)return!1;for(var target=matchIndex+("after"===constraint.type?1:0),temp=array[c],shift=c;target<=shift;--shift)array[shift]=array[shift-1];return array[target]=temp,!0},fluid.sortByPriority=function(array){fluid.stableSort(array,fluid.compareByPriority);for(var firstConstraint=fluid.find(array,function(element,index){return element.priority.constraint&&0===fluid.priorityTypes[element.priority.constraint.type]?index:void 0},array.length);;){if(firstConstraint===array.length)return array;for(var oldFirstConstraint=firstConstraint,c=firstConstraint;c<array.length;++c){fluid.honourConstraint(array,firstConstraint,c)&&++firstConstraint}if(firstConstraint===oldFirstConstraint){var holders=array.slice(firstConstraint);fluid.fail("Could not find targets for any constraints in "+holders[0].priority.site+" ",holders,": none of the targets ("+fluid.getMembers(holders,"priority.constraint.target").join(", ")+") matched any namespaces of the elements in (",array.slice(0,firstConstraint),") - this is caused by either an invalid or circular reference")}}},fluid.parsePriorityRecords=function(records,name){var array=fluid.hashToArray(records,"namespace",function(newElement,oldElement){$.extend(newElement,oldElement),newElement.priority=fluid.parsePriority(oldElement.priority,0,!1,name)});return fluid.sortByPriority(array),array},fluid.event.identifyListener=function(listener,soft){return"string"==typeof listener||listener.$$fluid_guid||soft||(listener.$$fluid_guid=fluid.allocateGuid()),listener.$$fluid_guid},fluid.event.impersonateListener=function(origListener,newListener){fluid.event.identifyListener(origListener),newListener.$$fluid_guid=origListener.$$fluid_guid},fluid.event.sortListeners=function(listeners){var togo=[];return fluid.each(listeners,function(oneNamespace){for(var headHard,i=0;i<oneNamespace.length;++i){var thisListener=oneNamespace[i];thisListener.softNamespace||headHard||(headHard=thisListener)}headHard?togo.push(headHard):togo=togo.concat(oneNamespace)}),fluid.sortByPriority(togo)},fluid.event.resolveListener=function(listener){var listenerName=listener.globalName||("string"==typeof listener?listener:null);if(listenerName){var listenerFunc=fluid.getGlobalValue(listenerName);listenerFunc?listener=listenerFunc:fluid.fail("Unable to look up name "+listenerName+" as a global function")}return listener},fluid.nameComponent=function(that){return that?"component with typename "+that.typeName+" and id "+that.id:"[unknown component]"},fluid.event.nameEvent=function(that,eventName){return eventName+" of "+fluid.nameComponent(that)},fluid.makeEventFirer=function(options){var that,name=(options=options||{}).name||"<anonymous>";return that={eventId:fluid.allocateGuid(),name:name,ownerId:options.ownerId,typeName:"fluid.event.firer",destroy:function(){that.destroyed=!0},addListener:function(){(function(){that.listeners={},that.byId={},that.sortedListeners=[],that.addListener=function(listener,namespace,priority,softNamespace,listenerId){var record;if(that.destroyed&&fluid.fail("Cannot add listener to destroyed event firer "+that.name),listener){fluid.isPlainObject(listener,!0)&&!fluid.isApplicable(listener)&&(listener=(record=listener).listener,namespace=record.namespace,priority=record.priority,softNamespace=record.softNamespace,listenerId=record.listenerId),"string"==typeof listener&&(listener={globalName:listener});var id=listenerId||fluid.event.identifyListener(listener);namespace=namespace||id,record=$.extend(record||{},{namespace:namespace,listener:listener,softNamespace:softNamespace,listenerId:listenerId,priority:fluid.parsePriority(priority,that.sortedListeners.length,!1,"listeners")}),that.byId[id]=record,(that.listeners[namespace]=fluid.makeArray(that.listeners[namespace]))[softNamespace?"push":"unshift"](record),that.sortedListeners=fluid.event.sortListeners(that.listeners)}},that.addListener.apply(null,arguments)}).apply(null,arguments)},removeListener:function(listener){if(that.listeners){var namespace,id,record;"string"==typeof listener?(namespace=listener,(record=that.listeners[namespace])||(id=namespace,namespace=null)):"function"==typeof listener&&((id=fluid.event.identifyListener(listener,!0))||fluid.fail("Cannot remove unregistered listener function ",listener," from event "+that.name));var rec=that.byId[id],softNamespace=rec&&rec.softNamespace;namespace=namespace||rec&&rec.namespace||id,delete that.byId[id],(record=that.listeners[namespace])&&(softNamespace?fluid.remove_if(record,function(thisLis){return thisLis.listener.$$fluid_guid===id||thisLis.listenerId===id}):record.shift(),0===record.length&&delete that.listeners[namespace]),that.sortedListeners=fluid.event.sortListeners(that.listeners)}},fire:function(){var listeners=that.sortedListeners;if(listeners&&!that.destroyed)for(var i=0;i<listeners.length;++i){var lisrec=listeners[i];"function"!=typeof lisrec.listener&&(lisrec.listener=fluid.event.resolveListener(lisrec.listener));var value,ret=lisrec.listener.apply(null,arguments);if((options.preventable&&!1===ret||that.destroyed)&&(value=!1),void 0!==value)return value}}}},fluid.fireEvent=function(component,eventName,args){var firer=component.events[eventName];firer&&firer.fire.apply(null,fluid.makeArray(args))},fluid.event.addListenerToFirer=function(firer,value,namespace,wrapper){if(wrapper=wrapper||fluid.identity,fluid.isArrayable(value))for(var i=0;i<value.length;++i)fluid.event.addListenerToFirer(firer,value[i],namespace,wrapper);else"function"==typeof value||"string"==typeof value?wrapper(firer).addListener(value,namespace):value&&"object"==typeof value&&wrapper(firer).addListener(value.listener,namespace||value.namespace,value.priority,value.softNamespace,value.listenerId)},fluid.event.resolveListenerRecord=function(records){return{records:records}},fluid.expandImmediate=function(material){fluid.fail("fluid.expandImmediate could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor "+material)},fluid.mergeListeners=function(that,events,listeners){fluid.each(listeners,function(value,key){var firer,namespace;if(fluid.isIoCReference(key))(firer=fluid.expandImmediate(key,that))||fluid.fail("Error in listener record: key "+key+' could not be looked up to an event firer - did you miss out "events." when referring to an event firer?');else{var keydot=key.indexOf(".");-1!==keydot&&(namespace=key.substring(keydot+1),key=key.substring(0,keydot)),events[key]||fluid.fail("Listener registered for event "+key+" which is not defined for this component"),firer=events[key]}var record=fluid.event.resolveListenerRecord(value,that,key,namespace,!0);fluid.event.addListenerToFirer(firer,record.records,namespace,record.adderWrapper)})},fluid.eventFromRecord=function(eventSpec,eventKey,that){var event;return eventSpec&&("string"!=typeof eventSpec||fluid.isIoCReference(eventSpec))?fluid.event.resolveEvent?event=fluid.event.resolveEvent(that,eventKey,eventSpec):fluid.fail("fluid.event.resolveEvent could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor ",eventSpec):event=fluid.makeEventFirer({name:fluid.event.nameEvent(that,eventKey),preventable:"preventable"===eventSpec,ownerId:that.id}),event},fluid.instantiateFirers=function(that,options){fluid.each(options.events,function(eventSpec,eventKey){that.events[eventKey]=fluid.eventFromRecord(eventSpec,eventKey,that)})},fluid.mergeListenerPolicy=function(target,source,key){return"string"!=typeof key&&fluid.fail("Error in listeners declaration - the keys in this structure must resolve to event names - got "+key+" from ",source),!fluid.isIoCReference(key)&&-1!==key.indexOf(".")?source||target:fluid.arrayConcatPolicy(target,source)},fluid.makeMergeListenersPolicy=function(merger,modelRelay){return function(target,source){return target=target||{},modelRelay&&(fluid.isArrayable(source)||"string"==typeof source.target)?target[""]=merger(target[""],source,""):fluid.each(source,function(listeners,key){target[key]=merger(target[key],listeners,key)}),target}},fluid.validateListenersImplemented=function(that){var errors=[];return fluid.each(that.events,function(event,name){fluid.each(event.sortedListeners,function(lisrec){lisrec.listener!==fluid.notImplemented&&"fluid.notImplemented"!==lisrec.listener.globalName||errors.push({name:name,namespace:lisrec.namespace,componentSource:fluid.model.getSimple(that.options.listeners,[name+"."+lisrec.namespace,0,"componentSource"])})})}),errors},fluid.unique=function(array){return fluid.remove_if(array,function(element,i){return!element||0<i&&element===array[i-1]})},fluid.arrayConcatPolicy=function(target,source){return fluid.makeArray(target).concat(fluid.makeArray(source))},fluid.loggingEvent=fluid.makeEventFirer({name:"logging event"}),fluid.addTimestampArg=function(args){var arg0=fluid.renderTimestamp(new Date)+": ";args.unshift(arg0)},fluid.loggingEvent.addListener(fluid.doBrowserLog,"log"),fluid.loggingEvent.addListener(fluid.identity,"filterArgs","before:log"),fluid.loggingEvent.addListener(fluid.addTimestampArg,"addTimestampArg","after:filterArgs"),fluid.failureEvent=fluid.makeEventFirer({name:"failure event"}),fluid.failureEvent.addListener(fluid.builtinFail,"fail"),fluid.failureEvent.addListener(fluid.logFailure,"log","before:fail"),fluid.pushSoftFailure=function(condition){"function"==typeof condition?fluid.failureEvent.addListener(condition,"fail"):-1===condition?fluid.failureEvent.removeListener("fail"):"boolean"==typeof condition&&fluid.fail("pushSoftFailure with boolean value is no longer supported")},fluid.componentConstructor=function(){},fluid.typeTag=function(name){var that=Object.create(fluid.componentConstructor.prototype);return that.typeName=name,that.id=fluid.allocateGuid(),that};var gradeTick=1,gradeTickStore={};function regenerateCursor(source,segs,limit,sourceStrategy){for(var i=0;i<limit;++i)source=sourceStrategy(source,segs[i],i,fluid.makeArray(segs));return source}fluid.defaultsStore={},fluid.resolveGradesImpl=function(gs,gradeNames){for(var i=(gradeNames=fluid.makeArray(gradeNames)).length-1;0<=i;--i){var gradeName=gradeNames[i];if(gradeName&&!gs.gradeHash[gradeName]){var options=(fluid.isIoCReference(gradeName)?null:fluid.rawDefaults(gradeName))||{},thisTick=gradeTickStore[gradeName]||gradeTick-1;gs.lastTick=Math.max(gs.lastTick,thisTick),gs.gradeHash[gradeName]=!0,gs.gradeChain.push(gradeName);for(var oGradeNames=fluid.makeArray(options.gradeNames),j=oGradeNames.length-1;0<=j;--j)fluid.resolveGradesImpl(gs,oGradeNames[j])}}return gs},fluid.resolveGradeStructure=function(defaultName,gradeNames){var gradeStruct={lastTick:0,gradeChain:[],gradeHash:{}};return fluid.resolveGradesImpl(gradeStruct,[defaultName].concat(fluid.makeArray(gradeNames))),gradeStruct.gradeChain.reverse(),gradeStruct},fluid.hasGrade=function(options,gradeName){return!(!options||!options.gradeNames)&&fluid.contains(options.gradeNames,gradeName)},fluid.resolveGrade=function(defaults,defaultName,gradeNames){var gradeStruct=fluid.resolveGradeStructure(defaultName,gradeNames),mergeArgs=fluid.transform(gradeStruct.gradeChain,fluid.rawDefaults,fluid.copy);fluid.remove_if(mergeArgs,function(options){return!options});for(var mergePolicy={},i=0;i<mergeArgs.length;++i)mergeArgs[i]&&mergeArgs[i].mergePolicy&&(mergePolicy=$.extend(!0,mergePolicy,mergeArgs[i].mergePolicy));mergeArgs=[mergePolicy,{}].concat(mergeArgs);var mergedDefaults=fluid.merge.apply(null,mergeArgs);return mergedDefaults.gradeNames=gradeStruct.gradeChain,fluid.freezeRecursive(mergedDefaults),{defaults:mergedDefaults,lastTick:gradeStruct.lastTick}},fluid.mergedDefaultsCache={},fluid.gradeNamesToKey=function(defaultName,gradeNames){return defaultName+"|"+gradeNames.join("|")},fluid.getMergedDefaults=function(defaultName,gradeNames){gradeNames=fluid.makeArray(gradeNames);var key=fluid.gradeNamesToKey(defaultName,gradeNames),mergedDefaults=fluid.mergedDefaultsCache[key];if(mergedDefaults){for(var lastTick=0,searchGrades=mergedDefaults.defaults.gradeNames||[],i=0;i<searchGrades.length;++i)lastTick=Math.max(lastTick,gradeTickStore[searchGrades[i]]||0);lastTick>mergedDefaults.lastTick&&(fluid.passLogLevel(fluid.logLevel.TRACE)&&fluid.log(fluid.logLevel.TRACE,"Clearing cache for component "+defaultName+" with gradeNames ",searchGrades),mergedDefaults=null)}if(!mergedDefaults){var defaults=fluid.rawDefaults(defaultName);if(!defaults)return defaults;mergedDefaults=fluid.mergedDefaultsCache[key]=fluid.resolveGrade(defaults,defaultName,gradeNames)}return mergedDefaults.defaults},fluid.upgradePrimitiveFunc=function(rec,key){if(rec&&fluid.isPrimitive(rec)){var togo={};return togo[key||("string"==typeof rec&&"{"!==rec.charAt(0)?"funcName":"func")]=rec,togo.args=fluid.NO_VALUE,togo}return rec},fluid.annotateListeners=function(componentName,options){options.listeners=fluid.transform(options.listeners,function(record){var togo=fluid.makeArray(record);return fluid.transform(togo,function(onerec){return(onerec=fluid.upgradePrimitiveFunc(onerec,"listener")).componentSource=componentName,onerec})}),options.invokers=fluid.transform(options.invokers,function(record){return(record=fluid.upgradePrimitiveFunc(record))&&(record.componentSource=componentName),record})},fluid.rawDefaults=function(componentName){var entry=fluid.defaultsStore[componentName];return entry&&entry.options},fluid.registerRawDefaults=function(componentName,options){fluid.pushActivity("registerRawDefaults","registering defaults for grade %componentName with options %options",{componentName:componentName,options:options});var optionsCopy=fluid.expandCompact?fluid.expandCompact(options):fluid.copy(options);fluid.annotateListeners(componentName,optionsCopy);var callerInfo=fluid.getCallerInfo&&fluid.getCallerInfo(6);fluid.defaultsStore[componentName]={options:optionsCopy,callerInfo:callerInfo},gradeTickStore[componentName]=gradeTick++,fluid.popActivity()},fluid.doIndexDefaults=function(defaultName,defaults,index,indexSpec){for(var requiredGrades=fluid.makeArray(indexSpec.gradeNames),i=0;i<requiredGrades.length;++i)if(!fluid.hasGrade(defaults,requiredGrades[i]))return;for(var keys=("function"==typeof indexSpec.indexFunc?indexSpec.indexFunc:fluid.getGlobalValue(indexSpec.indexFunc))(defaults)||[],j=0;j<keys.length;++j)fluid.pushArray(index,keys[j],defaultName)},fluid.indexDefaults=function(indexName,indexSpec){var index={};for(var defaultName in fluid.defaultsStore){var defaults=fluid.getMergedDefaults(defaultName);fluid.doIndexDefaults(defaultName,defaults,index,indexSpec)}return index},fluid.defaults=function(componentName,options){if(void 0===options)return fluid.getMergedDefaults(componentName);options&&options.options&&fluid.fail("Probable error in options structure for "+componentName+' with option named "options" - perhaps you meant to write these options at top level in fluid.defaults? - ',options),fluid.registerRawDefaults(componentName,options);var gradedDefaults=fluid.getMergedDefaults(componentName);fluid.hasGrade(gradedDefaults,"fluid.function")||fluid.makeComponentCreator(componentName)},fluid.makeComponentCreator=function(componentName){var creator=function(){var defaults=fluid.getMergedDefaults(componentName);if(defaults.gradeNames&&0!==defaults.gradeNames.length){if(defaults.initFunction)return fluid.initComponent(componentName,arguments);for(var blankGrades=[],i=0;i<defaults.gradeNames.length;++i){var gradeName=defaults.gradeNames[i];fluid.rawDefaults(gradeName)||blankGrades.push(gradeName)}0===blankGrades.length?fluid.fail("Cannot make component creator for type "+componentName+" which does not have an initFunction defined"):fluid.fail("The grade hierarchy of component with type "+componentName+" is incomplete - it inherits from the following grade(s): "+blankGrades.join(", ")+" for which the grade definitions are corrupt or missing. Please check the files which might include these grades and ensure they are readable and have been loaded by this instance of Infusion")}else fluid.fail("Cannot make component creator for type "+componentName+" which does not have any gradeNames defined")},existing=fluid.getGlobalValue(componentName);existing&&$.extend(creator,existing),fluid.setGlobalValue(componentName,creator)},fluid.emptyPolicy=fluid.freezeRecursive({}),fluid.derefMergePolicy=function(policy){return(policy?policy["*"]:fluid.emptyPolicy)||fluid.emptyPolicy},fluid.compileMergePolicy=function(mergePolicy){var builtins={},defaultValues={},togo={builtins:builtins,defaultValues:defaultValues};return mergePolicy&&fluid.each(mergePolicy,function(value,key){var parsed={},builtin=!0;if("function"==typeof value)parsed.func=value;else if("object"==typeof value)parsed=value;else if(fluid.isDefaultValueMergePolicy(value))fluid.set(defaultValues,key,"{that}.options."+value),builtin=!(togo.hasDefaults=!0);else for(var split=value.split(/\s*,\s*/),i=0;i<split.length;++i)parsed[split[i]]=!0;builtin&&fluid.set(builtins,fluid.composePath(key,"*"),parsed)}),togo},fluid.isDefaultValueMergePolicy=function(policy){return"string"==typeof policy&&-1===policy.indexOf(",")&&!/replace|nomerge|noexpand/.test(policy)},fluid.mergeOneImpl=function(thisTarget,thisSource,j,sources,newPolicy,i,segs){var togo=thisTarget,primitiveTarget=fluid.isPrimitive(thisTarget);return void 0!==thisSource&&(newPolicy.func||null===thisSource||!fluid.isPlainObject(thisSource)||newPolicy.nomerge?(sources[j]=void 0,togo=newPolicy.func?newPolicy.func.call(null,thisTarget,thisSource,segs[i-1],segs,i):thisSource):primitiveTarget&&(togo=thisTarget=fluid.freshContainer(thisSource))),togo},fluid.fetchMergeChildren=function(target,i,segs,sources,mergePolicy,options){for(var thisPolicy=fluid.derefMergePolicy(mergePolicy),j=sources.length-1;0<=j;--j){var source=sources[j];if(void 0!==source&&(fluid.each(source,function(newSource,name){var childPolicy=fluid.concreteTrundler(mergePolicy,name);name in target&&(!options.evaluateFully||void 0!==childPolicy||fluid.isPrimitive(target[name]))||(segs[i]=name,options.strategy(target,name,i+1,segs,sources,mergePolicy))}),thisPolicy.replace))break}return target},fluid.inEvaluationMarker=Object.freeze({__CURRENTLY_IN_EVALUATION__:!0}),fluid.strategyRecursionBailout=50,fluid.makeMergeStrategy=function(options){var strategy=function(target,name,i,segs,sources,policy){if(i>fluid.strategyRecursionBailout&&fluid.fail("Overflow/circularity in options merging, current path is ",segs," at depth ",i,' - please protect components from merging using the "nomerge" merge policy'),!fluid.isPrimitive(target)){var oldTarget;if(fluid.isTracing&&fluid.tracing.pathCount.push(fluid.path(segs.slice(0,i))),name in target){if(oldTarget=target[name],!options.evaluateFully)return oldTarget}else target!==fluid.inEvaluationMarker&&(target[name]=fluid.inEvaluationMarker);void 0===sources&&(segs=fluid.makeArray(segs),sources=function(sources,segs,limit,sourceStrategies){for(var togo=[],i=0;i<sources.length;++i){var thisSource=regenerateCursor(sources[i],segs,limit,sourceStrategies[i]);void 0!==thisSource&&togo.push(thisSource)}return togo}(options.sources,segs,i-1,options.sourceStrategies),policy=regenerateCursor(options.mergePolicy,segs,i-1,fluid.concreteTrundler));var start,limit,mul,newPolicyHolder=fluid.concreteTrundler(policy,name),newPolicy=fluid.derefMergePolicy(newPolicyHolder);mul=newPolicy.replace?(start=1-sources.length,limit=0,-1):(start=0,limit=sources.length-1,1);for(var thisTarget,newSources=[],j=start;j<=limit;++j){var k=mul*j,thisSource=options.sourceStrategies[k](sources[k],name,i,segs);if(void 0!==thisSource&&(fluid.isPrimitive(thisSource)||(newSources[k]=thisSource),void 0===oldTarget)){if(-1===mul){thisTarget=target[name]=thisSource;break}thisTarget=fluid.mergeOneImpl(thisTarget,thisSource,j,newSources,newPolicy,i,segs,options),target!==fluid.inEvaluationMarker&&(target[name]=thisTarget)}}return void 0!==oldTarget&&(thisTarget=oldTarget),0<newSources.length&&fluid.isPlainObject(thisTarget)&&fluid.fetchMergeChildren(thisTarget,i,segs,newSources,newPolicyHolder,options),void 0===oldTarget&&0===newSources.length&&delete target[name],thisTarget}};return options.strategy=strategy},fluid.driveStrategy=function(root,pathSegs,strategy){pathSegs=fluid.makeArray(pathSegs);for(var i=0;i<pathSegs.length;++i){if(!root)return;root=strategy(root,pathSegs[i],i+1,pathSegs)}return root},fluid.concreteTrundler=function(source,seg){return source?source[seg]:void 0},fluid.merge=function(policy){var sources=Array.prototype.slice.call(arguments,1),compiled=fluid.compileMergePolicy(policy).builtins,options=fluid.makeMergeOptions(compiled,sources,{});return options.initter(),options.target},fluid.simpleGingerBlock=function(source,recordType){return{target:source,simple:!0,strategy:fluid.concreteTrundler,initter:fluid.identity,recordType:recordType,priority:fluid.mergeRecordTypes[recordType]}},fluid.makeMergeOptions=function(policy,sources,userOptions){var options={mergePolicy:policy,sources:sources};return(options=$.extend(options,userOptions)).target=options.target||fluid.freshContainer(options.sources[0]),options.sourceStrategies=options.sourceStrategies||fluid.generate(options.sources.length,fluid.concreteTrundler),options.initter=function(){options.evaluateFully=!0,fluid.fetchMergeChildren(options.target,0,[],options.sources,options.mergePolicy,options)},fluid.makeMergeStrategy(options),options},fluid.transformOptions=function(options,transRec){return fluid.expect("Options transformation record",transRec,["transformer","config"]),fluid.getGlobalValue(transRec.transformer).call(null,options,transRec.config)},fluid.findMergeBlocks=function(mergeBlocks,recordType){return fluid.remove_if(fluid.makeArray(mergeBlocks),function(block){return block.recordType!==recordType})},fluid.transformOptionsBlocks=function(mergeBlocks,transformOptions,recordTypes){fluid.each(recordTypes,function(recordType){var blocks=fluid.findMergeBlocks(mergeBlocks,recordType);fluid.each(blocks,function(block){var source=block.source?"source":"target";block[block.simple||"target"===source?"target":"source"]=fluid.transformOptions(block[source],transformOptions)})})},fluid.dedupeDistributionNamespaces=function(mergeBlocks){var byNamespace={};fluid.remove_if(mergeBlocks,function(mergeBlock){var ns=mergeBlock.namespace;if(ns){if(byNamespace[ns]&&byNamespace[ns]!==mergeBlock.contextThat.id)return!0;byNamespace[ns]=mergeBlock.contextThat.id}})},fluid.deliverOptionsStrategy=fluid.identity,fluid.computeComponentAccessor=fluid.identity,fluid.computeDynamicComponents=fluid.identity,fluid.mergeRecordTypes={defaults:1e3,defaultValueMerge:900,subcomponentRecord:800,user:700,distribution:100},fluid.model.applyChangeRequest=function(model,request){var segs=request.segs;if(0===segs.length)"ADD"===request.type?$.extend(!0,model,request.value):fluid.clear(model);else if("ADD"===request.type)fluid.model.setSimple(model,request.segs,request.value);else{for(var i=0;i<segs.length-1;++i)if(!(model=model[segs[i]]))return;delete model[segs[segs.length-1]]}},fluid.destroyValue=function(target,segs){target&&fluid.model.applyChangeRequest(target,{type:"DELETE",segs:segs})},fluid.mergeComponentOptions=function(that,componentName,userOptions,localOptions){var rawDefaults=fluid.rawDefaults(componentName),defaults=fluid.getMergedDefaults(componentName,rawDefaults&&rawDefaults.gradeNames?null:localOptions.gradeNames),sharedMergePolicy={},mergeBlocks=[];mergeBlocks=fluid.expandComponentOptions?mergeBlocks.concat(fluid.expandComponentOptions(sharedMergePolicy,defaults,userOptions,that)):mergeBlocks.concat([fluid.simpleGingerBlock(defaults,"defaults"),fluid.simpleGingerBlock(userOptions,"user")]);var options={},sourceStrategies=[],sources=[],baseMergeOptions={target:options,sourceStrategies:sourceStrategies},updateBlocks=function(){fluid.each(mergeBlocks,function(block){fluid.isPrimitive(block.priority)&&(block.priority=fluid.parsePriority(block.priority,0,!1,"options distribution"))}),fluid.sortByPriority(mergeBlocks),fluid.dedupeDistributionNamespaces(mergeBlocks),sourceStrategies.length=0,sources.length=0,fluid.each(mergeBlocks,function(block){sourceStrategies.push(block.strategy),sources.push(block.target)})};updateBlocks();var compiledPolicy,mergePolicy,mergeOptions=fluid.makeMergeOptions(sharedMergePolicy,sources,baseMergeOptions);function computeMergePolicy(){mergePolicy=fluid.driveStrategy(options,"mergePolicy",mergeOptions.strategy),mergePolicy=$.extend({},fluid.rootMergePolicy,mergePolicy),compiledPolicy=fluid.compileMergePolicy(mergePolicy),$.extend(!0,sharedMergePolicy,compiledPolicy.builtins)}mergeOptions.mergeBlocks=mergeBlocks,mergeOptions.updateBlocks=updateBlocks,mergeOptions.destroyValue=function(segs){for(var i=0;i<mergeBlocks.length;++i)mergeBlocks[i].immutableTarget||fluid.destroyValue(mergeBlocks[i].target,segs);fluid.destroyValue(baseMergeOptions.target,segs)},computeMergePolicy(),mergeOptions.computeMergePolicy=computeMergePolicy,compiledPolicy.hasDefaults&&(fluid.generateExpandBlock?(mergeBlocks.push(fluid.generateExpandBlock({options:compiledPolicy.defaultValues,recordType:"defaultValueMerge",priority:fluid.mergeRecordTypes.defaultValueMerge},that,{})),updateBlocks()):fluid.fail("Cannot operate mergePolicy ",mergePolicy," for component ",that," without including FluidIoC.js")),that.options=options,fluid.driveStrategy(options,"gradeNames",mergeOptions.strategy),fluid.deliverOptionsStrategy(that,options,mergeOptions),fluid.computeComponentAccessor(that,userOptions&&userOptions.localRecord);var transformOptions=fluid.driveStrategy(options,"transformOptions",mergeOptions.strategy);return transformOptions&&(fluid.transformOptionsBlocks(mergeBlocks,transformOptions,["user","subcomponentRecord"]),updateBlocks()),baseMergeOptions.target.mergePolicy||computeMergePolicy(),mergeOptions},fluid.defaults("fluid.function",{}),fluid.invokeGradedFunction=function(name,spec){var defaults=fluid.defaults(name);defaults&&defaults.argumentMap&&fluid.hasGrade(defaults,"fluid.function")||fluid.fail("Cannot look up name "+name+" to a function with registered argumentMap - got defaults ",defaults);var args=[];return fluid.each(defaults.argumentMap,function(value,key){args[value]=spec[key]}),fluid.invokeGlobalFunction(name,args)},fluid.noNamespaceDistributionPrefix="no-namespace-distribution-",fluid.mergeOneDistribution=function(target,source,key){var namespace=source.namespace||key||fluid.noNamespaceDistributionPrefix+fluid.allocateGuid();target[source.namespace=namespace]=$.extend(!0,{},target[namespace],source)},fluid.distributeOptionsPolicy=function(target,source){if(target=target||{},fluid.isArrayable(source))for(var i=0;i<source.length;++i)fluid.mergeOneDistribution(target,source[i]);else"string"==typeof source.target?fluid.mergeOneDistribution(target,source):fluid.each(source,function(oneSource,key){fluid.mergeOneDistribution(target,oneSource,key)});return target},fluid.mergingArray=function(){},fluid.mergingArray.prototype=[],fluid.membersMergePolicy=function(target,source){return target=target||{},fluid.each(source,function(oneSource,key){target[key]||(target[key]=new fluid.mergingArray),oneSource instanceof fluid.mergingArray?target[key].push.apply(target[key],oneSource):void 0!==oneSource&&target[key].push(oneSource)}),target},fluid.invokerStrategies=fluid.arrayToHash(["func","funcName","listener","this","method","changePath","value"]),fluid.invokersMergePolicy=function(target,source){return target=target||{},fluid.each(source,function(oneInvoker,name){if(oneInvoker){oneInvoker=fluid.upgradePrimitiveFunc(oneInvoker);var oneT=target[name];for(var key in oneT||(oneT=target[name]={}),fluid.invokerStrategies)if(key in oneInvoker)for(var key2 in fluid.invokerStrategies)oneT[key2]=void 0;$.extend(oneT,oneInvoker)}else target[name]=oneInvoker}),target},fluid.rootMergePolicy={gradeNames:fluid.arrayConcatPolicy,distributeOptions:fluid.distributeOptionsPolicy,members:{noexpand:!0,func:fluid.membersMergePolicy},invokers:{noexpand:!0,func:fluid.invokersMergePolicy},transformOptions:"replace",listeners:fluid.makeMergeListenersPolicy(fluid.mergeListenerPolicy)},fluid.defaults("fluid.component",{initFunction:"fluid.initLittleComponent",mergePolicy:fluid.rootMergePolicy,argumentMap:{options:0},events:{onCreate:null,onDestroy:null,afterDestroy:null}}),fluid.defaults("fluid.emptySubcomponent",{gradeNames:["fluid.component"]}),fluid.computeNickName=function(typeName){var segs=fluid.model.parseEL(typeName);return segs[segs.length-1]},fluid.defaults("fluid.typeFount",{gradeNames:["fluid.component"]}),fluid.initLittleComponent=function(name,userOptions,localOptions,receiver){var that=fluid.typeTag(name);that.lifecycleStatus="constructing",localOptions=localOptions||{gradeNames:"fluid.component"},that.destroy=fluid.makeRootDestroy(that);var mergeOptions=fluid.mergeComponentOptions(that,name,userOptions,localOptions);mergeOptions.exceptions={members:{model:!0,modelRelay:!0}};var options=that.options;that.events={},(receiver||fluid.identity)(that,options,mergeOptions.strategy),fluid.computeDynamicComponents(that,mergeOptions);for(var i=0;i<mergeOptions.mergeBlocks.length;++i)mergeOptions.mergeBlocks[i].initter();return mergeOptions.initter(),delete options.mergePolicy,fluid.instantiateFirers(that,options),fluid.mergeListeners(that,that.events,options.listeners),that},fluid.diagnoseFailedView=fluid.identity,fluid.makeRootDestroy=function(that){return function(){fluid.doDestroy(that),fluid.fireEvent(that,"afterDestroy",[that,"",null])}},fluid.isDestroyed=function(that){return"destroyed"===that.lifecycleStatus},fluid.doDestroy=function(that,name,parent){for(var key in fluid.fireEvent(that,"onDestroy",[that,name||"",parent]),that.lifecycleStatus="destroyed",that.events)"afterDestroy"!==key&&"function"==typeof that.events[key].destroy&&that.events[key].destroy();that.applier&&that.applier.destroy()},fluid.initComponent=function(componentName,initArgs){var options=fluid.defaults(componentName);options.gradeNames||fluid.fail("Cannot initialise component "+componentName+" which has no gradeName registered");var that,args=[componentName].concat(fluid.makeArray(initArgs));fluid.pushActivity("initComponent","constructing component of type %componentName with arguments %initArgs",{componentName:componentName,initArgs:initArgs}),that=fluid.invokeGlobalFunction(options.initFunction,args),fluid.diagnoseFailedView(componentName,that,options,args),fluid.initDependents&&fluid.initDependents(that);var errors=fluid.validateListenersImplemented(that);return 0<errors.length&&fluid.fail(fluid.transform(errors,function(error){return["Error constructing component ",that," - the listener for event "+error.name+" with namespace "+error.namespace+(error.componentSource?" which was defined in grade "+error.componentSource:"")+" needs to be overridden with a concrete implementation"]})).join("\n"),"constructing"===that.lifecycleStatus&&(that.lifecycleStatus="constructed"),that.events.onCreate.fire(that),fluid.popActivity(),that},fluid.initSubcomponentImpl=function(that,entry,args){var togo;if("function"!=typeof entry){var entryType="string"==typeof entry?entry:entry.type;togo="fluid.emptySubcomponent"===entryType?null:fluid.invokeGlobalFunction(entryType,args)}else togo=entry.apply(null,args);return togo};fluid.simpleCSSMatcher={regexp:new RegExp("([#.]?)((?:[\\w\\u00c0-\\uFFFF*_-]|\\\\.)+)","g"),charToTag:{"":"tag","#":"id",".":"clazz"}},fluid.IoCSSMatcher={regexp:new RegExp("([&#]?)((?:[\\w\\u00c0-\\uFFFF*_-]|\\.|\\/)+)","g"),charToTag:{"":"context","&":"context","#":"id"}};var childSeg=new RegExp("\\s*(>)?\\s*","g");fluid.parseSelector=function(selstring,strategy){var togo=[];selstring=selstring.trim();for(var regexp=strategy.regexp,lastIndex=regexp.lastIndex=0;;){for(var atNode=[],first=!0;;){var segMatch=regexp.exec(selstring);if(!segMatch)break;if(segMatch.index!==lastIndex){if(!first)break;fluid.fail("Error in selector string - cannot match child selector expression starting at "+selstring.substring(lastIndex))}var thisNode={},text=segMatch[2],targetTag=strategy.charToTag[segMatch[1]];targetTag&&(thisNode[targetTag]=text),atNode[atNode.length]=thisNode,lastIndex=regexp.lastIndex,first=!1}childSeg.lastIndex=lastIndex;var fullAtNode={predList:atNode},childMatch=childSeg.exec(selstring);if(childMatch&&childMatch.index===lastIndex||fluid.fail("Error in selector string - can not match child selector expression at "+selstring.substring(lastIndex)),">"===childMatch[1]&&(fullAtNode.child=!0),togo[togo.length]=fullAtNode,childSeg.lastIndex>=selstring.length)break;lastIndex=childSeg.lastIndex,regexp.lastIndex=childSeg.lastIndex}return togo},fluid.flattenObjectPaths=function(originalObject){var flattenedObject={};return fluid.each(originalObject,function(value,key){if(null!==value&&"object"==typeof value){var flattenedSubObject=fluid.flattenObjectPaths(value);fluid.each(flattenedSubObject,function(subValue,subKey){flattenedObject[key+"."+subKey]=subValue}),"function"==typeof fluid.get(value,"toString")&&(flattenedObject[key]=value.toString())}else flattenedObject[key]=value}),flattenedObject},fluid.stringTemplate=function(template,values){var flattenedValues=fluid.flattenObjectPaths(values),keys=fluid.keys(flattenedValues);keys=keys.sort(fluid.compareStringLength());for(var i=0;i<keys.length;++i)for(var key=keys[i],templatePlaceholder="%"+key,replacementValue=flattenedValues[key],indexOfPlaceHolder=-1;-1!==(indexOfPlaceHolder=template.indexOf(templatePlaceholder));)template=template.slice(0,indexOfPlaceHolder)+replacementValue+template.slice(indexOfPlaceHolder+templatePlaceholder.length);return template}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.promise=function(){var that={onResolve:[],onReject:[],then:function(onResolve,onReject){return onResolve&&("resolve"===that.disposition?onResolve(that.value):that.onResolve.push(onResolve)),onReject&&("reject"===that.disposition?onReject(that.value):that.onReject.push(onReject)),that},resolve:function(value){return that.disposition?fluid.fail("Error: resolving promise ",that,' which has already received "'+that.disposition+'"'):that.complete("resolve",that.onResolve,value),that},reject:function(reason){return that.disposition?fluid.fail("Error: rejecting promise ",that,'which has already received "'+that.disposition+'"'):that.complete("reject",that.onReject,reason),that},complete:function(which,queue,arg){that.disposition=which,that.value=arg;for(var i=0;i<queue.length;++i)queue[i](arg)}};return that},fluid.isPromise=function(totest){return totest&&"function"==typeof totest.then},fluid.toPromise=function(promiseOrValue){if(fluid.isPromise(promiseOrValue))return promiseOrValue;var togo=fluid.promise();return togo.resolve(promiseOrValue),togo},fluid.promise.follow=function(source,target){source.then(target.resolve,target.reject)},fluid.promise.map=function(source,func){var promise=fluid.toPromise(source),togo=fluid.promise();return promise.then(function(value){var mapped=func(value);fluid.isPromise(mapped)?fluid.promise.follow(mapped,togo):togo.resolve(mapped)},function(error){togo.reject(error)}),togo},fluid.promise.makeSequencer=function(sources,options,strategy){return fluid.isArrayable(sources)||fluid.fail("fluid.promise sequence algorithms must be supplied an array as source"),{sources:sources,resolvedSources:[],index:0,strategy:strategy,options:options,returns:[],promise:fluid.promise()}},fluid.promise.progressSequence=function(that,retValue){that.returns.push(retValue),that.index++,fluid.promise.resumeSequence(that)},fluid.promise.processSequenceReject=function(that,error){for(var i=that.index-1;0<=i;--i){var resolved=that.resolvedSources[i];error=(fluid.isPromise(resolved)&&"function"==typeof resolved.accumulateRejectionReason?resolved.accumulateRejectionReason:fluid.identity)(error)}that.promise.reject(error)},fluid.promise.resumeSequence=function(that){if(that.index===that.sources.length)that.promise.resolve(that.strategy.resolveResult(that));else{var value=that.strategy.invokeNext(that);that.resolvedSources[that.index]=value,fluid.isPromise(value)?value.then(function(retValue){fluid.promise.progressSequence(that,retValue)},function(error){fluid.promise.processSequenceReject(that,error)}):fluid.promise.progressSequence(that,value)}},fluid.promise.makeSequenceStrategy=function(){return{invokeNext:function(that){var source=that.sources[that.index];return"function"==typeof source?source(that.options):source},resolveResult:function(that){return that.returns}}},fluid.promise.sequence=function(sources,options){var sequencer=fluid.promise.makeSequencer(sources,options,fluid.promise.makeSequenceStrategy());return fluid.promise.resumeSequence(sequencer),sequencer.promise},fluid.promise.makeTransformerStrategy=function(){return{invokeNext:function(that){var lisrec=that.sources[that.index];return lisrec.listener=fluid.event.resolveListener(lisrec.listener),lisrec.listener.apply(null,[that.returns[that.index],that.options])},resolveResult:function(that){return that.returns[that.index]}}},fluid.promise.makeTransformer=function(listeners,payload,options){listeners.unshift({listener:function(){return payload}});var sequencer=fluid.promise.makeSequencer(listeners,options,fluid.promise.makeTransformerStrategy());return sequencer.returns.push(null),fluid.promise.resumeSequence(sequencer),sequencer},fluid.promise.filterNamespaces=function(listeners,namespaces){return namespaces?fluid.remove_if(fluid.makeArray(listeners),function(element){return element.namespace&&!element.softNamespace&&!fluid.contains(namespaces,element.namespace)}):listeners},fluid.promise.fireTransformEvent=function(event,payload,options){var listeners=(options=options||{}).reverse?fluid.makeArray(event.sortedListeners).reverse():fluid.makeArray(event.sortedListeners);return listeners=fluid.promise.filterNamespaces(listeners,options.filterNamespaces),fluid.promise.makeTransformer(listeners,payload,options).promise}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.dataSource.encoding.JSON",{gradeNames:"fluid.component",invokers:{parse:"fluid.dataSource.parseJSON",render:"fluid.dataSource.stringifyJSON"},contentType:"application/json"}),fluid.defaults("fluid.dataSource.encoding.none",{gradeNames:"fluid.component",invokers:{parse:"fluid.identity",render:"fluid.identity"},contentType:"text/plain"}),fluid.dataSource.parseJSON=function(string){var togo=fluid.promise();if(string)try{togo.resolve(JSON.parse(string))}catch(err){togo.reject({message:err})}else togo.resolve(void 0);return togo},fluid.dataSource.stringifyJSON=function(obj){return void 0===obj?"":JSON.stringify(obj,null,4)},fluid.defaults("fluid.dataSource",{gradeNames:["fluid.component"],events:{onRead:null,onError:null},components:{encoding:{type:"fluid.dataSource.encoding.JSON"}},listeners:{"onRead.impl":{func:"fluid.notImplemented",priority:"first"},"onRead.encoding":{func:"{encoding}.parse",priority:"after:impl"}},invokers:{get:{funcName:"fluid.dataSource.get",args:["{that}","{arguments}.0","{arguments}.1"]}}}),fluid.defaults("fluid.dataSource.writable",{gradeNames:["fluid.component"],events:{onWrite:null,onWriteResponse:null},listeners:{"onWrite.encoding":{func:"{encoding}.render"},"onWrite.impl":{func:"fluid.notImplemented",priority:"after:encoding"},"onWriteResponse.encoding":{func:"{encoding}.parse"}},invokers:{set:{funcName:"fluid.dataSource.set",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]}}}),fluid.dataSource.registerStandardPromiseHandlers=function(that,promise,options){promise.then("function"==typeof options?options:null,options.onError?options.onError:that.events.onError.fire)},fluid.dataSource.defaultiseOptions=function(componentOptions,options,directModel,isSet){return(options=options||{}).directModel=directModel,options.operation=isSet?"set":"get",options.notFoundIsEmpty=options.notFoundIsEmpty||componentOptions.notFoundIsEmpty,options},fluid.dataSource.get=function(that,directModel,options){options=fluid.dataSource.defaultiseOptions(that.options,options,directModel);var promise=fluid.promise.fireTransformEvent(that.events.onRead,void 0,options);return fluid.dataSource.registerStandardPromiseHandlers(that,promise,options),promise},fluid.dataSource.set=function(that,directModel,model,options){options=fluid.dataSource.defaultiseOptions(that.options,options,directModel,!0);var transformPromise=fluid.promise.fireTransformEvent(that.events.onWrite,model,options),togo=fluid.promise();return transformPromise.then(function(setResponse){var options2=fluid.dataSource.defaultiseOptions(that.options,fluid.copy(options),directModel),retransformed=fluid.promise.fireTransformEvent(that.events.onWriteResponse,setResponse,options2);fluid.promise.follow(retransformed,togo)},function(error){togo.reject(error)}),fluid.dataSource.registerStandardPromiseHandlers(that,togo,options),togo}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";var matched,browser;fluid.uaMatch=function(ua){ua=ua.toLowerCase();var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];return{browser:match[1]||"",version:match[2]||"0"}},$.browser||(navigator.userAgent.match(/Trident\/7\./)?browser={msie:!0,version:11}:(browser={},(matched=fluid.uaMatch(navigator.userAgent)).browser&&(browser[matched.browser]=!0,browser.version=matched.version),browser.chrome?browser.webkit=!0:browser.webkit&&(browser.safari=!0)),$.browser=browser);fluid.getScopedData=function(target,key){var data=$(target).data("fluid-scoped-data");return data?data[key]:void 0},fluid.setScopedData=function(target,key,value){$(target).each(function(){var data=$.data(this,"fluid-scoped-data")||{};data[key]=value,$.data(this,"fluid-scoped-data",data)})};var lastFocusedElement=null;$(document).on("focusin",function(event){lastFocusedElement=event.target}),fluid.getLastFocusedElement=function(){return lastFocusedElement};fluid.enabled=function(target,state){if(target=$(target),void 0===state)return!1!==fluid.getScopedData(target,"enablement");$("*",target).add(target).each(function(){void 0!==fluid.getScopedData(this,"enablement")?fluid.setScopedData(this,"enablement",state):/select|textarea|input/i.test(this.nodeName)&&$(this).prop("disabled",!state)}),fluid.setScopedData(target,"enablement",state)},fluid.initEnablement=function(target){fluid.setScopedData(target,"enablement",!0)},fluid.resolveEventTarget=function(event){for(;event.originalEvent&&event.originalEvent.target;)event=event.originalEvent;return event.target},$.each(["focus","blur"],function(i,name){fluid[name]=function(elem){return func=name,(node=$(node=elem)).trigger("fluid-"+func),node.triggerHandler(func),node[func](),node;var node,func}}),fluid.changeElementValue=function(node,value){(node=$(node)).val(value).change()}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.dom=fluid.dom||{};var getNextNode=function(iterator){if(iterator.node.firstChild)return iterator.node=iterator.node.firstChild,iterator.depth+=1,iterator;for(;iterator.node;){if(iterator.node.nextSibling)return iterator.node=iterator.node.nextSibling,iterator;iterator.node=iterator.node.parentNode,iterator.depth-=1}return iterator};fluid.dom.iterateDom=function(node,acceptor,allNodes){for(var condition,currentNode={node:node,depth:0},prevNode=node;null!==currentNode.node&&0<=currentNode.depth&&currentNode.depth<fluid.dom.iterateDom.DOM_BAIL_DEPTH;){if(condition=null,(1===currentNode.node.nodeType||allNodes)&&(condition=acceptor(currentNode.node,currentNode.depth)),condition)if("delete"===condition)currentNode.node.parentNode.removeChild(currentNode.node),currentNode.node=prevNode;else if("stop"===condition)return currentNode.node;prevNode=currentNode.node,currentNode=getNextNode(currentNode)}},fluid.dom.iterateDom.DOM_BAIL_DEPTH=256,fluid.dom.isContainer=function(container,containee){for(;containee;containee=containee.parentNode)if(container===containee)return!0;return!1},fluid.dom.getElementText=function(element){for(var nodes=element.childNodes,text="",i=0;i<nodes.length;++i){var child=nodes[i];3===child.nodeType&&(text+=child.nodeValue)}return text}}(jQuery,fluid_3_0_0),fluid_3_0_0=fluid_3_0_0||{},function($,fluid){"use strict";var unUnicode=/(\\u[\dabcdef]{4}|\\x[\dabcdef]{2})/g;fluid.unescapeProperties=function(string){string=string.replace(unUnicode,function(match){var code=match.substring(2),parsed=parseInt(code,16);return String.fromCharCode(parsed)});for(var pos=0;;){var backpos=string.indexOf("\\",pos);if(-1===backpos)break;if(backpos===string.length-1)return[string.substring(0,string.length-1),!0];var replace=string.charAt(backpos+1);"n"===replace&&(replace="\n"),"r"===replace&&(replace="\r"),"t"===replace&&(replace="\t"),string=string.substring(0,backpos)+replace+string.substring(backpos+2),pos=backpos+1}return[string,!1]};var breakPos=/[^\\][\s:=]/;fluid.parseJavaProperties=function(text){for(var contin,key,valueComp,valueRaw,valueEsc,togo={},lines=(text=(text=text.replace(/\r\n/g,"\n")).replace(/\r/g,"\n")).split("\n"),i=0;i<lines.length;++i){var line=$.trim(lines[i]);if(line&&"#"!==line.charAt(0)&&"!"!==line.charAt(0)){if(contin)valueEsc=fluid.unescapeProperties(line);else{valueComp="";var breakpos=line.search(breakPos);-1===breakpos?(key=line,valueRaw=""):(key=$.trim(line.substring(0,breakpos+1)),":"!==(valueRaw=$.trim(line.substring(breakpos+2))).charAt(0)&&"="!==valueRaw.charAt(0)||(valueRaw=$.trim(valueRaw.substring(1)))),key=fluid.unescapeProperties(key)[0],valueEsc=fluid.unescapeProperties(valueRaw)}contin=valueEsc[1],valueEsc[1]?valueComp+=valueEsc[0]:togo[key]=valueComp+valueEsc[0]}}return togo},fluid.formatMessage=function(messageString,args){if(!args)return messageString;"string"==typeof args&&(args=[args]);for(var i=0;i<args.length;++i)messageString=messageString.replace("{"+i+"}",args[i]);return messageString}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.renderTimestamp=function(date){var zeropad=function(num,width){width||(width=2);var numstr=void 0===num?"":num.toString();return"00000".substring(5-width+numstr.length)+numstr};return zeropad(date.getHours())+":"+zeropad(date.getMinutes())+":"+zeropad(date.getSeconds())+"."+zeropad(date.getMilliseconds(),3)},fluid.isTracing=!1,fluid.registerNamespace("fluid.tracing"),fluid.tracing.pathCount=[],fluid.tracing.summarisePathCount=function(pathCount){pathCount=pathCount||fluid.tracing.pathCount;for(var togo={},i=0;i<pathCount.length;++i){var path=pathCount[i];togo[path]?++togo[path]:togo[path]=1}var toReallyGo=[];return fluid.each(togo,function(el,path){toReallyGo.push({path:path,count:el})}),toReallyGo.sort(function(a,b){return b.count-a.count}),toReallyGo},fluid.tracing.condensePathCount=function(prefixes,pathCount){prefixes=fluid.makeArray(prefixes);var prefixCount={};fluid.each(prefixes,function(prefix){prefixCount[prefix]=0});var togo=[];return fluid.each(pathCount,function(el){var path=el.path;fluid.find(prefixes,function(prefix){if(0===path.indexOf(prefix))return prefixCount[prefix]+=el.count,!0})||togo.push(el)}),fluid.each(prefixCount,function(count,path){togo.unshift({path:path,count:count})}),togo},fluid.detectStackStyle=function(e){var style="other",stackStyle={offset:0};return e.arguments?style="chrome":"undefined"!=typeof window&&window.opera&&e.stacktrace?style="opera10":e.stack?(style="firefox",stackStyle.offset=-1===e.stack.indexOf("Trace exception")?1:0):"undefined"==typeof window||!window.opera||"stacktrace"in e||(style="opera"),stackStyle.style=style,stackStyle},fluid.obtainException=function(){try{throw new Error("Trace exception")}catch(e){return e}};var stackStyle=fluid.detectStackStyle(fluid.obtainException());fluid.registerNamespace("fluid.exceptionDecoders"),fluid.decodeStack=function(){if("firefox"!==stackStyle.style)return null;var e=fluid.obtainException();return fluid.exceptionDecoders[stackStyle.style](e)},fluid.exceptionDecoders.firefox=function(e){var lines=e.stack.replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n");return fluid.transform(lines,function(line){var atind=(line=line.replace(/\)/g,"")).indexOf("at ");return-1===atind?[line]:[line.substring(atind+"at ".length),line.substring(0,atind)]})},fluid.getCallerInfo=function(atDepth){atDepth=(atDepth||3)-stackStyle.offset;var stack=fluid.decodeStack(),element=stack&&stack[atDepth][0];if(element){var lastslash=element.lastIndexOf("/");-1===lastslash&&(lastslash=0);var nextColon=element.indexOf(":",lastslash);return{path:element.substring(0,lastslash),filename:element.substring(lastslash+1,nextColon),index:element.substring(nextColon+1)}}return null},fluid.generatePadding=function(c,count){for(var togo="",i=0;i<count;++i)togo+=c;return togo},fluid.SYNTHETIC_PROPERTY=Object.freeze({}),fluid.getSafeProperty=function(obj,key){var desc=Object.getOwnPropertyDescriptor(obj,key);return desc&&!desc.get?obj[key]:fluid.SYNTHETIC_PROPERTY},fluid.prettyPrintJSON=function(obj,options){return(options=$.extend({indent:4,stack:[],output:""},options)).indentChars=fluid.generatePadding(" ",options.indent),function printImpl(obj,small,options){function out(str){options.output+=str}var big=small+options.indentChars,isFunction="function"==typeof obj;if(void 0!==options.maxRenderChars&&options.output.length>options.maxRenderChars)return!0;if(null===obj)out("null");else if(void 0===obj)out("undefined");else if(obj===fluid.SYNTHETIC_PROPERTY)out("[Synthetic property]");else if(fluid.isPrimitive(obj)&&!isFunction)out(JSON.stringify(obj));else{if(-1!==options.stack.indexOf(obj))return void out("(CIRCULAR)");var i;if(options.stack.push(obj),fluid.isArrayable(obj))if(0===obj.length)out("[]");else{for(out("[\n"+big),i=0;i<obj.length;++i){if(printImpl(obj[i],big,options))return!0;i!==obj.length-1&&out(",\n"+big)}out("\n"+small+"]")}else{out("{"+(isFunction?" Function":"")+"\n"+big);var keys=fluid.keys(obj);for(i=0;i<keys.length;++i){var key=keys[i],value=fluid.getSafeProperty(obj,key);if(out(JSON.stringify(key)+": "),printImpl(value,big,options))return!0;i!==keys.length-1&&out(",\n"+big)}out("\n"+small+"}")}options.stack.pop()}}(obj,"",options),options.output},fluid.dumpEl=function(element){var togo;if(!element)return"null";if(3===element.nodeType||8===element.nodeType)return"[data: "+element.data+"]";if(9===element.nodeType)return"[document: location "+element.location+"]";if(element.nodeType||!fluid.isArrayable(element))return togo=(element=$(element)).get(0).tagName,element.id&&(togo+="#"+element.id),element.attr("class")&&(togo+="."+element.attr("class")),togo;togo="[";for(var i=0;i<element.length;++i)togo+=fluid.dumpEl(element[i]),i<element.length-1&&(togo+=", ");return togo+"]"}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.visitComponentChildren=function(that,visitor,options,segs){for(var name in segs=segs||[],that){var component=that[name];if(!(!fluid.isComponent(component)||options.visited&&options.visited[component.id])){if(segs.push(name),options.visited&&(options.visited[component.id]=!0),visitor(component,name,segs,segs.length-1))return!0;options.flat||fluid.visitComponentChildren(component,visitor,options,segs),segs.pop()}}},fluid.getContextHash=function(instantiator,that){var shadow=instantiator.idToShadow[that.id];return shadow&&shadow.contextHash},fluid.componentHasGrade=function(that,gradeName){var contextHash=fluid.getContextHash(fluid.globalInstantiator,that);return!(!contextHash||!contextHash[gradeName])},fluid.visitComponentsForMatching=function(that,options,visitor){var instantiator=fluid.getInstantiator(that);options=$.extend({visited:{},instantiator:instantiator},options);var thatStack=[that],contextHashes=[fluid.getContextHash(instantiator,that)];fluid.visitComponentChildren(that,function(component,name,segs){thatStack.length=1,contextHashes.length=1;for(var i=0;i<segs.length;++i){var child=thatStack[i][segs[i]];thatStack[i+1]=child,contextHashes[i+1]=fluid.getContextHash(instantiator,child)||{}}return visitor(component,thatStack,contextHashes,segs,segs.length)},options,[])},fluid.getMemberNames=function(instantiator,thatStack){if(0===thatStack.length)return[];var path=instantiator.idToPath(thatStack[thatStack.length-1].id),segs=instantiator.parseEL(path);return segs.unshift.apply(segs,fluid.generate(thatStack.length-segs.length,"")),segs},fluid.visitComponentsForVisibility=function(instantiator,thatStack,visitor,options){options=options||{visited:{},flat:!0,instantiator:instantiator};for(var memberNames=fluid.getMemberNames(instantiator,thatStack),i=thatStack.length-1;0<=i;--i){var that=thatStack[i];if(options.visited[that.id]=!0,visitor(that,memberNames[i],memberNames,i))return;if(fluid.visitComponentChildren(that,visitor,options,memberNames))return;memberNames.pop()}},fluid.mountStrategy=function(prefix,root,toMount){var offset=prefix.length;return function(target,name,i,segs){if(!(i<=prefix.length)){for(var j=0;j<prefix.length;++j)if(segs[j]!==prefix[j])return;return toMount(target,name,i-prefix.length,segs.slice(offset))}}},fluid.invokerFromRecord=function(invokerec,name,that){fluid.pushActivity("makeInvoker","beginning instantiation of invoker with name %name and record %record as child of %that",{name:name,record:invokerec,that:that});var invoker=invokerec?fluid.makeInvoker(that,invokerec,name):void 0;return fluid.popActivity(),invoker},fluid.memberFromRecord=function(memberrecs,name,that){for(var togo,i=0;i<memberrecs.length;++i){var expanded=fluid.expandImmediate(memberrecs[i],that);togo=fluid.isPlainObject(togo)?$.extend(!0,togo,expanded):expanded}return togo},fluid.recordStrategy=function(that,options,optionsStrategy,recordPath,recordMaker,prefix,exceptions){return prefix=prefix||[],{strategy:function(target,name,i){if(1===i){var record=fluid.driveStrategy(options,[recordPath,name],optionsStrategy);if(void 0!==record){fluid.set(target,[name],fluid.inEvaluationMarker);var member=recordMaker(record,name,that);return fluid.set(target,[name],member),member}}},initter:function(){var records=fluid.driveStrategy(options,recordPath,optionsStrategy)||{};for(var name in records)exceptions&&exceptions[name]||fluid.getForComponent(that,prefix.concat([name]))}}},fluid.instantiateFirers=function(that){var shadow=fluid.shadowForComponent(that);(fluid.get(shadow,["eventStrategyBlock","initter"])||fluid.identity)()},fluid.makeDistributionRecord=function(contextThat,sourceRecord,sourcePath,targetSegs,exclusions,sourceType){sourceType=sourceType||"distribution",fluid.pushActivity("makeDistributionRecord","Making distribution record from source record %sourceRecord path %sourcePath to target path %targetSegs",{sourceRecord:sourceRecord,sourcePath:sourcePath,targetSegs:targetSegs});var source=fluid.copy(fluid.get(sourceRecord,sourcePath));fluid.each(exclusions,function(exclusion){fluid.model.applyChangeRequest(source,{segs:exclusion,type:"DELETE"})});var record={options:{}};return fluid.model.applyChangeRequest(record,{segs:targetSegs,type:"ADD",value:source}),fluid.checkComponentRecord(record),fluid.popActivity(),$.extend(record,{contextThat:contextThat,recordType:sourceType})},fluid.filterBlocks=function(contextThat,sourceBlocks,sourceSegs,targetSegs,exclusions,removeSource){var togo=[];return fluid.each(sourceBlocks,function(block){var source=fluid.get(block.source,sourceSegs);if(void 0!==source){togo.push(fluid.makeDistributionRecord(contextThat,block.source,sourceSegs,targetSegs,exclusions,block.recordType));var rescued=$.extend({},source);removeSource&&fluid.model.applyChangeRequest(block.source,{segs:sourceSegs,type:"DELETE"}),fluid.each(exclusions,function(exclusion){var orig=fluid.get(rescued,exclusion);fluid.set(block.source,sourceSegs.concat(exclusion),orig)})}}),togo},fluid.noteCollectedDistribution=function(parentShadow,memberName,distribution){fluid.model.setSimple(parentShadow,["collectedDistributions",memberName,distribution.id],!0)},fluid.isCollectedDistribution=function(parentShadow,memberName,distribution){return fluid.model.getSimple(parentShadow,["collectedDistributions",memberName,distribution.id])},fluid.clearCollectedDistributions=function(parentShadow,memberName){fluid.model.applyChangeRequest(parentShadow,{segs:["collectedDistributions",memberName],type:"DELETE"})},fluid.collectDistributions=function(distributedBlocks,parentShadow,distribution,thatStack,contextHashes,memberNames,i){var lastMember=memberNames[memberNames.length-1];!fluid.isCollectedDistribution(parentShadow,lastMember,distribution)&&fluid.matchIoCSelector(distribution.selector,thatStack,contextHashes,memberNames,i)&&(distributedBlocks.push.apply(distributedBlocks,distribution.blocks),fluid.noteCollectedDistribution(parentShadow,lastMember,distribution))},fluid.registerCollectedClearer=function(shadow,parentShadow,memberName){!shadow.collectedClearer&&parentShadow&&(shadow.collectedClearer=function(){fluid.clearCollectedDistributions(parentShadow,memberName)})},fluid.receiveDistributions=function(parentThat,gradeNames,memberName,that){var instantiator=fluid.getInstantiator(parentThat||that),thatStack=instantiator.getThatStack(parentThat||that);thatStack.unshift(fluid.rootComponent);var memberNames=fluid.getMemberNames(instantiator,thatStack),shadows=fluid.transform(thatStack,function(thisThat){return instantiator.idToShadow[thisThat.id]}),parentShadow=shadows[shadows.length-(parentThat?1:2)],contextHashes=fluid.getMembers(shadows,"contextHash");parentThat?(memberNames.push(memberName),contextHashes.push(fluid.gradeNamesToHash(gradeNames)),thatStack.push(that)):fluid.registerCollectedClearer(shadows[shadows.length-1],parentShadow,memberNames[memberNames.length-1]);for(var distributedBlocks=[],i=0;i<thatStack.length-1;++i)fluid.each(shadows[i].distributions,function(distribution){fluid.collectDistributions(distributedBlocks,parentShadow,distribution,thatStack,contextHashes,memberNames,i)});return distributedBlocks},fluid.computeTreeDistance=function(path1,path2){for(var i=0;i<path1.length&&i<path2.length&&path1[i]===path2[i];)++i;return path1.length+path2.length-2*i},fluid.computeDistributionPriority=function(targetThat,distributedBlock){if(!distributedBlock.priority){var instantiator=fluid.getInstantiator(targetThat),targetStack=instantiator.getThatStack(targetThat),targetPath=fluid.getMemberNames(instantiator,targetStack),sourceStack=instantiator.getThatStack(distributedBlock.contextThat),sourcePath=fluid.getMemberNames(instantiator,sourceStack),distance=fluid.computeTreeDistance(targetPath,sourcePath);distributedBlock.priority=fluid.mergeRecordTypes.distribution-distance}return distributedBlock},fluid.applyDistributions=function(that,preBlocks,targetShadow){var distributedBlocks=fluid.transform(preBlocks,function(preBlock){return fluid.generateExpandBlock(preBlock,that,targetShadow.mergePolicy)},function(distributedBlock){return fluid.computeDistributionPriority(that,distributedBlock)}),mergeOptions=targetShadow.mergeOptions;return mergeOptions.mergeBlocks.push.apply(mergeOptions.mergeBlocks,distributedBlocks),mergeOptions.updateBlocks(),distributedBlocks},fluid.matchIoCSelector=function(selector,thatStack,contextHashes,memberNames,i){for(var thatpos=thatStack.length-1,selpos=selector.length-1;;){for(var isChild=selector[selpos].child,mustMatchHere=thatpos===thatStack.length-1||isChild,that=thatStack[thatpos],selel=selector[selpos],match=!0,j=0;j<selel.predList.length;++j){var pred=selel.predList[j],context=pred.context;if(context&&"*"!==context&&!contextHashes[thatpos][context]&&memberNames[thatpos]!==context){match=!1;break}if(pred.id&&that.id!==pred.id){match=!1;break}}if(0===selpos&&i<thatpos&&mustMatchHere&&isChild&&(match=!1),match){if(0===selpos)return!0;--thatpos,--selpos}else{if(mustMatchHere)return!1;--thatpos}if(thatpos<i)return!1}},fluid.queryIoCSelector=function(root,selector,flat){var parsed=fluid.parseSelector(selector,fluid.IoCSSMatcher),togo=[];return fluid.visitComponentsForMatching(root,{flat:flat},function(that,thatStack,contextHashes){fluid.matchIoCSelector(parsed,thatStack,contextHashes,[],1)&&togo.push(that)}),togo},fluid.isIoCSSSelector=function(context){return-1!==context.indexOf(" ")},fluid.pushDistributions=function(targetHead,selector,target,blocks){var targetShadow=fluid.shadowForComponent(targetHead),id=fluid.allocateGuid(),distribution={id:id,target:target,selector:selector,blocks:blocks};return Object.freeze(distribution),Object.freeze(distribution.blocks),fluid.pushArray(targetShadow,"distributions",distribution),id},fluid.clearDistribution=function(targetHeadId,id){var targetHeadShadow=fluid.globalInstantiator.idToShadow[targetHeadId];targetHeadShadow&&fluid.remove_if(targetHeadShadow.distributions,function(distribution){return distribution.id===id})},fluid.clearDistributions=function(shadow){fluid.each(shadow.outDistributions,function(outDist){fluid.clearDistribution(outDist.targetHeadId,outDist.distributionId)})},fluid.extractSelectorHead=function(parsedSelector){var predList=parsedSelector[0].predList,context=predList[0].context;return predList.length=0,context},fluid.parseExpectedOptionsPath=function(path,role){var segs=fluid.model.parseEL(path);return"options"!==segs[0]&&fluid.fail("Error in options distribution path ",path," - only "+role+' paths beginning with "options" are supported'),segs.slice(1)},fluid.replicateProperty=function(source,property,targets){void 0!==source[property]&&fluid.each(targets,function(target){target[property]=source[property]})},fluid.undistributableOptions=["gradeNames","distributeOptions","argumentMap","initFunction","mergePolicy","progressiveCheckerOptions"],fluid.distributeOptions=function(that,optionsStrategy){var thatShadow=fluid.shadowForComponent(that),records=fluid.driveStrategy(that.options,"distributeOptions",optionsStrategy);fluid.each(records,function(record){fluid.pushActivity("distributeOptions","parsing distributeOptions block %record %that ",{that:that,record:record}),"string"!=typeof record.target&&fluid.fail("Error in options distribution record ",record,' a member named "target" must be supplied holding an IoC reference'),"string"==typeof record.source^void 0===record.record&&fluid.fail("Error in options distribution record ",record,': must supply either a member "source" holding an IoC reference or a member "record" holding a literal record');var targetHead,selector,context,targetRef=fluid.parseContextReference(record.target);if(fluid.isIoCSSSelector(targetRef.context)){selector=fluid.parseSelector(targetRef.context,fluid.IoCSSMatcher);var headContext=fluid.extractSelectorHead(selector);"/"===headContext?targetHead=fluid.rootComponent:context=headContext}else context=targetRef.context;(targetHead=targetHead||fluid.resolveContext(context,that))||fluid.fail("Error in options distribution record ",record," - could not resolve context {"+context+"} to a head component");var preBlocks,targetSegs=fluid.model.parseEL(targetRef.path);if(void 0!==record.record)preBlocks=[fluid.makeDistributionRecord(that,record.record,[],targetSegs,[])];else{var source=fluid.parseContextReference(record.source);"that"!==source.context&&fluid.fail("Error in options distribution record ",record," only a context of {that} is supported");var sourceSegs=fluid.parseExpectedOptionsPath(source.path,"source"),fullExclusions=fluid.makeArray(record.exclusions).concat(0===sourceSegs.length?fluid.undistributableOptions:[]),exclusions=fluid.transform(fullExclusions,function(exclusion){return fluid.model.parseEL(exclusion)});preBlocks=fluid.filterBlocks(that,thatShadow.mergeOptions.mergeBlocks,sourceSegs,targetSegs,exclusions,record.removeSource),thatShadow.mergeOptions.updateBlocks()}if(fluid.replicateProperty(record,"priority",preBlocks),fluid.replicateProperty(record,"namespace",preBlocks),selector){var distributionId=fluid.pushDistributions(targetHead,selector,record.target,preBlocks);thatShadow.outDistributions=thatShadow.outDistributions||[],thatShadow.outDistributions.push({targetHeadId:targetHead.id,distributionId:distributionId})}else{var targetShadow=fluid.shadowForComponent(targetHead);fluid.applyDistributions(that,preBlocks,targetShadow)}fluid.popActivity()})},fluid.gradeNamesToHash=function(gradeNames){var contextHash={};return fluid.each(gradeNames,function(gradeName){contextHash[gradeName]=!0,contextHash[fluid.computeNickName(gradeName)]=!0}),contextHash},fluid.cacheShadowGrades=function(that,shadow){var contextHash=fluid.gradeNamesToHash(that.options.gradeNames);contextHash[shadow.memberName]||(contextHash[shadow.memberName]="memberName"),shadow.contextHash=contextHash,fluid.each(contextHash,function(troo,context){shadow.ownScope[context]=that,shadow.parentShadow&&"fluid.rootComponent"!==shadow.parentShadow.that.type&&(shadow.parentShadow.childrenScope[context]=that)})},fluid.deliverOptionsStrategy=function(that,target,mergeOptions){var shadow=fluid.shadowForComponent(that,shadow);fluid.cacheShadowGrades(that,shadow),shadow.mergeOptions=mergeOptions},fluid.collectDistributedGrades=function(rec){var distributedBlocks=fluid.receiveDistributions(null,null,null,rec.that);if(0<distributedBlocks.length){var readyBlocks=fluid.applyDistributions(rec.that,distributedBlocks,rec.shadow),gradeNamesList=fluid.transform(fluid.getMembers(readyBlocks,["source","gradeNames"]),fluid.makeArray);fluid.accumulateDynamicGrades(rec,fluid.flatten(gradeNamesList))}},fluid.applyDynamicGrades=function(rec){rec.oldGradeNames=fluid.makeArray(rec.gradeNames);var newDefaults=fluid.copy(fluid.getMergedDefaults(rec.that.typeName,rec.gradeNames));rec.gradeNames.length=0,rec.gradeNames.push.apply(rec.gradeNames,newDefaults.gradeNames),fluid.each(rec.gradeNames,function(gradeName){fluid.isIoCReference(gradeName)||(rec.seenGrades[gradeName]=!0)});var shadow=rec.shadow;fluid.cacheShadowGrades(rec.that,shadow),shadow.mergeOptions.destroyValue(["mergePolicy"]),shadow.mergeOptions.destroyValue(["components"]),shadow.mergeOptions.destroyValue(["invokers"]),rec.defaultsBlock.source=newDefaults,shadow.mergeOptions.updateBlocks(),shadow.mergeOptions.computeMergePolicy(),fluid.accumulateDynamicGrades(rec,newDefaults.gradeNames)},fluid.accumulateDynamicGrades=function(rec,newGradeNames){fluid.each(newGradeNames,function(gradeName){rec.seenGrades[gradeName]||(fluid.isIoCReference(gradeName)?(rec.rawDynamic.push(gradeName),rec.seenGrades[gradeName]=!0):fluid.contains(rec.oldGradeNames,gradeName)||rec.plainDynamic.push(gradeName))})},fluid.computeDynamicGrades=function(that,shadow,strategy){delete that.options.gradeNames;var gradeNames=fluid.driveStrategy(that.options,"gradeNames",strategy);gradeNames.length=0;var rec={that:that,shadow:shadow,defaultsBlock:fluid.findMergeBlocks(shadow.mergeOptions.mergeBlocks,"defaults")[0],gradeNames:gradeNames,seenGrades:{},plainDynamic:[],rawDynamic:[]};for(fluid.each(shadow.mergeOptions.mergeBlocks,function(block){gradeNames.push.apply(gradeNames,fluid.makeArray(block.target&&block.target.gradeNames)),fluid.applyDynamicGrades(rec)}),fluid.collectDistributedGrades(rec);;){for(;0<rec.plainDynamic.length;)gradeNames.push.apply(gradeNames,rec.plainDynamic),rec.plainDynamic.length=0,fluid.applyDynamicGrades(rec),fluid.collectDistributedGrades(rec);if(!(0<rec.rawDynamic.length))break;var expanded=fluid.expandImmediate(rec.rawDynamic.shift(),that,shadow.localDynamic);"function"==typeof expanded&&(expanded=expanded()),expanded&&(rec.plainDynamic=rec.plainDynamic.concat(expanded))}shadow.collectedClearer&&(shadow.collectedClearer(),delete shadow.collectedClearer)},fluid.computeDynamicComponentKey=function(recordKey,sourceKey){return recordKey+(0===sourceKey?"":"-"+sourceKey)},fluid.hasDynamicComponentCount=function(shadow,key){var hypos=key.indexOf("-");if(-1!==hypos){var recordKey=key.substring(0,hypos);return void 0!==shadow.dynamicComponentCount&&void 0!==shadow.dynamicComponentCount[recordKey]}},fluid.clearDynamicParentRecord=function(shadow,key){if(fluid.hasDynamicComponentCount(shadow,key)){var holder=fluid.get(shadow.that,["options","components"]);holder&&delete holder[key]}},fluid.registerDynamicRecord=function(that,recordKey,sourceKey,record,toCensor){var key=fluid.computeDynamicComponentKey(recordKey,sourceKey),recordCopy=fluid.copy(record);return delete recordCopy[toCensor],fluid.set(that.options,["components",key],recordCopy),key},fluid.computeDynamicComponents=function(that,mergeOptions){var shadow=fluid.shadowForComponent(that),localSub=shadow.subcomponentLocal={},records=fluid.driveStrategy(that.options,"dynamicComponents",mergeOptions.strategy);fluid.each(records,function(record,recordKey){if(record.sources||record.createOnEvent||fluid.fail("Cannot process dynamicComponents record ",record,' without a "sources" or "createOnEvent" entry'),record.sources){var sources=fluid.expandOptions(record.sources,that);fluid.each(sources,function(source,sourceKey){var key=fluid.registerDynamicRecord(that,recordKey,sourceKey,record,"sources");localSub[key]={source:source,sourcePath:sourceKey}})}else if(record.createOnEvent){var event=fluid.event.expandOneEvent(that,record.createOnEvent);fluid.set(shadow,["dynamicComponentCount",recordKey],0);var listener=function(){var key=fluid.registerDynamicRecord(that,recordKey,shadow.dynamicComponentCount[recordKey]++,record,"createOnEvent"),localRecord={arguments:fluid.makeArray(arguments)};fluid.initDependent(that,key,localRecord)};event.addListener(listener),fluid.recordListener(event,listener,shadow)}})},fluid.computeComponentAccessor=function(that,localRecord){var instantiator=fluid.globalInstantiator,shadow=fluid.shadowForComponent(that);shadow.localDynamic=localRecord;var options=that.options,strategy=shadow.mergeOptions.strategy,optionsStrategy=fluid.mountStrategy(["options"],options,strategy);shadow.invokerStrategy=fluid.recordStrategy(that,options,strategy,"invokers",fluid.invokerFromRecord),shadow.eventStrategyBlock=fluid.recordStrategy(that,options,strategy,"events",fluid.eventFromRecord,["events"]);var eventStrategy=fluid.mountStrategy(["events"],that,shadow.eventStrategyBlock.strategy,["events"]);if(shadow.memberStrategy=fluid.recordStrategy(that,options,strategy,"members",fluid.memberFromRecord,null,{model:!0,modelRelay:!0}),shadow.getConfig={strategies:[fluid.model.funcResolverStrategy,fluid.makeGingerStrategy(that),optionsStrategy,shadow.invokerStrategy.strategy,shadow.memberStrategy.strategy,eventStrategy]},fluid.computeDynamicGrades(that,shadow,strategy,shadow.mergeOptions.mergeBlocks),fluid.distributeOptions(that,strategy),shadow.contextHash["fluid.resolveRoot"]){var memberName;if(shadow.contextHash["fluid.resolveRootSingle"]){var singleRootType=fluid.getForComponent(that,["options","singleRootType"]);singleRootType||fluid.fail("Cannot register object with grades "+Object.keys(shadow.contextHash).join(", ")+" as fluid.resolveRootSingle since it has not defined option singleRootType"),memberName=fluid.typeNameToMemberName(singleRootType)}else memberName=fluid.computeGlobalMemberName(that);var parent=fluid.resolveRootComponent;parent[memberName]&&instantiator.clearComponent(parent,memberName),instantiator.recordKnownComponent(parent,that,memberName,!1)}return shadow.getConfig},fluid.shadowForComponent=function(component){var instantiator=fluid.getInstantiator(component);return instantiator&&component?instantiator.idToShadow[component.id]:null},fluid.getForComponent=function(component,path){var shadow=fluid.shadowForComponent(component),getConfig=shadow?shadow.getConfig:void 0;return fluid.get(component,path,getConfig)},fluid.makeGingerStrategy=function(that){var instantiator=fluid.getInstantiator(that);return function(component,thisSeg,index,segs){var atval=component[thisSeg];if(atval===fluid.inEvaluationMarker&&index===segs.length&&fluid.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+thisSeg+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application'),1<index)return atval;if(void 0===atval&&component.hasOwnProperty(thisSeg))return fluid.NO_VALUE;if(void 0===atval){var parentPath=instantiator.idToShadow[component.id].path,childPath=instantiator.composePath(parentPath,thisSeg);atval=instantiator.pathToComponent[childPath]}if(void 0===atval){var subRecord=fluid.getForComponent(component,["options","components",thisSeg]);subRecord&&(subRecord.createOnEvent&&fluid.fail('Error resolving path segment "'+thisSeg+'" of path '+segs.join(".")+" since component with record ",subRecord,' has annotation "createOnEvent" - this very likely represents an implementation error. Either alter the reference so it does not match this component, or alter your workflow to ensure that the component is instantiated by the time this reference resolves'),fluid.initDependent(component,thisSeg),atval=component[thisSeg])}return atval}},fluid.frameworkGrades=["fluid.component","fluid.modelComponent","fluid.viewComponent","fluid.rendererComponent"],fluid.filterBuiltinGrades=function(gradeNames){return fluid.remove_if(fluid.makeArray(gradeNames),function(gradeName){return-1!==fluid.frameworkGrades.indexOf(gradeName)})},fluid.dumpGradeNames=function(that){return that.options&&that.options.gradeNames?" gradeNames: "+JSON.stringify(fluid.filterBuiltinGrades(that.options.gradeNames)):""},fluid.dumpThat=function(that){return'{ typeName: "'+that.typeName+'"'+fluid.dumpGradeNames(that)+" id: "+that.id+"}"},fluid.dumpThatStack=function(thatStack,instantiator){return fluid.transform(thatStack,function(that){var path=instantiator.idToPath(that.id);return fluid.dumpThat(that)+(path?" - path: "+path:"")}).join("\n")},fluid.dumpComponentPath=function(that){var path=fluid.pathForComponent(that);return path?fluid.pathUtil.composeSegments(path):"** no path registered for component **"},fluid.resolveContext=function(context,that,fast){if("that"===context)return that;if("object"==typeof context){var innerContext=fluid.resolveContext(context.context,that,fast);fluid.isComponent(innerContext)||fluid.triggerMismatchedPathError(context.context,that);var rawValue=fluid.getForComponent(innerContext,context.path),expanded=fluid.expandOptions(rawValue,that);return fluid.isComponent(expanded)||fluid.fail("Unable to resolve recursive context expression "+fluid.renderContextReference(context)+": the directly resolved value of "+rawValue+" did not resolve to a component in the scope of component ",that,": got ",expanded),expanded}var foundComponent,instantiator=fluid.globalInstantiator;if(fast)return instantiator.idToShadow[that.id].ownScope[context];var thatStack=instantiator.getFullStack(that);return fluid.visitComponentsForVisibility(instantiator,thatStack,function(component,name){var shadow=fluid.shadowForComponent(component);return context===name||shadow&&shadow.contextHash&&shadow.contextHash[context]||context===component.typeName?(foundComponent=component,!0):fluid.getForComponent(component,["options","components",context])&&!component[context]?(foundComponent=fluid.getForComponent(component,context),!0):void 0}),foundComponent},fluid.triggerMismatchedPathError=function(parsed,parentThat){var ref=fluid.renderContextReference(parsed);fluid.fail("Failed to resolve reference "+ref+" - could not match context with name "+parsed.context+" from component "+fluid.dumpThat(parentThat)+" at path "+fluid.dumpComponentPath(parentThat)+" component: ",parentThat)},fluid.makeStackFetcher=function(parentThat,localRecord,fast){return function(parsed){parentThat&&"destroyed"===parentThat.lifecycleStatus&&fluid.fail("Cannot resolve reference "+fluid.renderContextReference(parsed)+" from component "+fluid.dumpThat(parentThat)+" which has been destroyed");var context=parsed.context;if(localRecord&&context in localRecord)return fluid.get(localRecord[context],parsed.path);var foundComponent=fluid.resolveContext(context,parentThat,fast);return foundComponent||""===parsed.path||fluid.triggerMismatchedPathError(parsed,parentThat),fluid.getForComponent(foundComponent,parsed.path)}},fluid.makeStackResolverOptions=function(parentThat,localRecord,fast){return $.extend(fluid.copy(fluid.rawDefaults("fluid.makeExpandOptions")),{localRecord:localRecord||{},fetcher:fluid.makeStackFetcher(parentThat,localRecord,fast),contextThat:parentThat,exceptions:{members:{model:!0,modelRelay:!0}}})},fluid.clearListeners=function(shadow){fluid.each(shadow.listeners,function(rec){rec.event.removeListener(rec.listenerId||rec.listener)}),delete shadow.listeners},fluid.recordListener=function(event,listener,shadow,listenerId){event.ownerId!==shadow.that.id&&fluid.pushArray(shadow,"listeners",{event:event,listener:listener,listenerId:listenerId})},fluid.constructScopeObjects=function(instantiator,parent,child,childShadow){var parentShadow=parent?instantiator.idToShadow[parent.id]:null;childShadow.childrenScope=parentShadow?Object.create(parentShadow.ownScope):{},childShadow.ownScope=Object.create(childShadow.childrenScope),childShadow.parentShadow=parentShadow},fluid.clearChildrenScope=function(instantiator,parentShadow,child,childShadow){fluid.each(childShadow.contextHash,function(troo,context){parentShadow.childrenScope[context]===child&&delete parentShadow.childrenScope[context]})},fluid.instantiator=function(){var that=fluid.typeTag("instantiator");function recordComponent(parent,component,path,name,created){var shadow;if(created)(shadow=that.idToShadow[component.id]={}).that=component,shadow.path=path,shadow.memberName=name,fluid.constructScopeObjects(that,parent,component,shadow);else{(shadow=that.idToShadow[component.id]).injectedPaths=shadow.injectedPaths||{},shadow.injectedPaths[path]=!0;var parentShadow=that.idToShadow[parent.id],keys=fluid.keys(shadow.contextHash);fluid.remove_if(keys,function(key){return shadow.contextHash&&"memberName"===shadow.contextHash[key]}),keys.push(name),fluid.each(keys,function(context){parentShadow.childrenScope[context]||(parentShadow.childrenScope[context]=component)})}that.pathToComponent[path]&&fluid.fail("Error during instantiation - path "+path+" which has just created component "+fluid.dumpThat(component)+" has already been used for component "+fluid.dumpThat(that.pathToComponent[path])+" - this is a circular instantiation or other oversight. Please clear the component using instantiator.clearComponent() before reusing the path."),that.pathToComponent[path]=component}return $.extend(that,{lifecycleStatus:"constructed",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:fluid.model.composePath,composeSegments:fluid.model.composeSegments,parseEL:fluid.model.parseEL,events:{onComponentAttach:fluid.makeEventFirer({name:"instantiator's onComponentAttach event"}),onComponentClear:fluid.makeEventFirer({name:"instantiator's onComponentClear event"})}}),that.idToPath=function(id){var shadow=that.idToShadow[id];return shadow?shadow.path:""},that.getThatStack=function(component){var shadow=that.idToShadow[component.id];if(shadow){for(var path=shadow.path,parsed=that.parseEL(path),root=that.pathToComponent[""],togo=[],i=0;i<parsed.length;++i)root=root[parsed[i]],togo.push(root);return togo}return[]},that.getFullStack=function(component){var thatStack=component?that.getThatStack(component):[];return thatStack.unshift(fluid.resolveRootComponent),thatStack},that.recordRoot=function(component){recordComponent(null,component,"","",!0)},that.recordKnownComponent=function(parent,component,name,created){if(parent[name]=component,fluid.isComponent(component)||"instantiator"===component.type){var parentPath=that.idToShadow[parent.id].path,path=that.composePath(parentPath,name);recordComponent(parent,component,path,name,created),that.events.onComponentAttach.fire(component,path,that,created)}else fluid.fail("Cannot record non-component with value ",component,' at path "'+name+'" of parent ',parent)},that.clearConcreteComponent=function(destroyRec){fluid.each(destroyRec.childShadow.injectedPaths,function(troo,injectedPath){var parentPath=fluid.model.getToTailPath(injectedPath),otherParent=that.pathToComponent[parentPath];that.clearComponent(otherParent,fluid.model.getTailPath(injectedPath),destroyRec.child)}),fluid.clearDistributions(destroyRec.childShadow),fluid.clearListeners(destroyRec.childShadow),fluid.clearDynamicParentRecord(destroyRec.shadow,destroyRec.name),fluid.fireEvent(destroyRec.child,"afterDestroy",[destroyRec.child,destroyRec.name,destroyRec.component]),delete that.idToShadow[destroyRec.child.id]},that.clearComponent=function(component,name,child,options,nested,path){var shadow=that.idToShadow[component.id];options=options||{flat:!0,instantiator:that,destroyRecs:[]},child=child||component[name],void 0===(path=path||shadow.path)&&fluid.fail("Cannot clear component "+name+" from component ",component," which was not created by this instantiator");var childPath=that.composePath(path,name),childShadow=that.idToShadow[child.id];if(childShadow){var created=childShadow.path===childPath;that.events.onComponentClear.fire(child,childPath,component,created),created?(fluid.visitComponentChildren(child,function(gchild,gchildname,segs,i){var parentPath=that.composeSegments.apply(null,segs.slice(0,i));that.clearComponent(child,gchildname,null,options,!0,parentPath)},options,that.parseEL(childPath)),fluid.doDestroy(child,name,component),options.destroyRecs.push({child:child,childShadow:childShadow,name:name,component:component,shadow:shadow})):fluid.remove_if(childShadow.injectedPaths,function(troo,path){return path===childPath}),fluid.clearChildrenScope(that,shadow,child,childShadow),delete that.pathToComponent[childPath],nested||(delete component[name],fluid.each(options.destroyRecs,that.clearConcreteComponent))}},that},fluid.globalInstantiator=fluid.instantiator(),fluid.getInstantiator=function(component){var instantiator=fluid.globalInstantiator;return component&&instantiator.idToShadow[component.id]?instantiator:null},fluid.defaults("fluid.resolveRoot"),fluid.defaults("fluid.resolveRootSingle",{gradeNames:"fluid.resolveRoot"}),fluid.constructRootComponents=function(instantiator){fluid.rootComponent=instantiator.rootComponent=fluid.typeTag("fluid.rootComponent"),instantiator.recordRoot(fluid.rootComponent),fluid.resolveRootComponent=instantiator.resolveRootComponent=fluid.typeTag("fluid.resolveRootComponent"),instantiator.recordKnownComponent(fluid.rootComponent,fluid.resolveRootComponent,"resolveRootComponent",!0);var rootShadow=instantiator.idToShadow[fluid.rootComponent.id];rootShadow.contextHash={};var resolveRootShadow=instantiator.idToShadow[fluid.resolveRootComponent.id];resolveRootShadow.ownScope=rootShadow.ownScope,resolveRootShadow.childrenScope=rootShadow.childrenScope,instantiator.recordKnownComponent(fluid.resolveRootComponent,instantiator,"instantiator",!0),resolveRootShadow.childrenScope.instantiator=instantiator},fluid.constructRootComponents(fluid.globalInstantiator),fluid.expandOptions=function(args,that,mergePolicy,localRecord,outerExpandOptions){if(!args)return args;fluid.pushActivity("expandOptions","expanding options %args for component %that ",{that:that,args:args});var expandOptions=fluid.makeStackResolverOptions(that,localRecord);expandOptions.mergePolicy=mergePolicy,expandOptions.defer=outerExpandOptions&&outerExpandOptions.defer;var expanded=expandOptions.defer?fluid.makeExpandOptions(args,expandOptions):fluid.expand(args,expandOptions);return fluid.popActivity(),expanded},fluid.localRecordExpected=fluid.arrayToHash(["type","options","container","createOnEvent","priority","recordType"]),fluid.checkComponentRecord=function(localRecord){fluid.each(localRecord,function(value,key){fluid.localRecordExpected[key]||fluid.fail("Probable error in subcomponent record ",localRecord,' - key "'+key+'" found, where the only legal options are '+fluid.keys(fluid.localRecordExpected).join(", "))})},fluid.mergeRecordsToList=function(that,mergeRecords){var list=[];return fluid.each(mergeRecords,function(value,key){if("distributions"===(value.recordType=key))list.push.apply(list,fluid.transform(value,function(distributedBlock){return fluid.computeDistributionPriority(that,distributedBlock)}));else{if(!value.options)return;value.priority=fluid.mergeRecordTypes[key],void 0===value.priority&&fluid.fail("Merge record with unrecognised type "+key+": ",value),list.push(value)}}),list};fluid.generateExpandBlock=function(record,that,mergePolicy,localRecord){var expanded=fluid.expandOptions(record.options,record.contextThat||that,mergePolicy,localRecord,{defer:!0});return expanded.priority=record.priority,expanded.namespace=record.namespace,expanded.recordType=record.recordType,expanded};var expandComponentOptionsImpl=function(mergePolicy,defaults,initRecord,that){var policy,defaultCopy=fluid.copy(defaults);policy=mergePolicy,fluid.each(["gradeNames","mergePolicy","argumentMap","components","dynamicComponents","events","listeners","modelListeners","modelRelay","distributeOptions","transformOptions"],function(key){fluid.set(policy,[key,"*","noexpand"],!0)}),fluid.shadowForComponent(that).mergePolicy=mergePolicy;var mergeRecords={defaults:{options:defaultCopy}};$.extend(mergeRecords,initRecord.mergeRecords),mergeRecords.subcomponentRecord&&fluid.checkComponentRecord(mergeRecords.subcomponentRecord);var expandList=fluid.mergeRecordsToList(that,mergeRecords);return fluid.transform(expandList,function(value){return fluid.generateExpandBlock(value,that,mergePolicy,initRecord.localRecord)})};fluid.fabricateDestroyMethod=function(that,name,instantiator,child){return function(){instantiator.clearComponent(that,name,child)}},fluid.computeGlobalMemberName=function(that){return fluid.computeNickName(that.typeName)+"-"+that.id},fluid.typeNameToMemberName=function(typeName){return typeName.replace(/\./g,"_")},fluid.expandComponentOptions=function(mergePolicy,defaults,userOptions,that){var initRecord=userOptions,instantiator=userOptions&&userOptions.marker===fluid.EXPAND?userOptions.instantiator:null;fluid.pushActivity("expandComponentOptions","expanding component options %options with record %record for component %that",{options:instantiator?userOptions.mergeRecords.user:userOptions,record:initRecord,that:that}),instantiator||(instantiator=fluid.globalInstantiator,initRecord={mergeRecords:{user:{options:fluid.expandCompact(userOptions,!0)}},memberName:fluid.computeGlobalMemberName(that),instantiator:instantiator,parentThat:fluid.rootComponent}),that.destroy=fluid.fabricateDestroyMethod(initRecord.parentThat,initRecord.memberName,instantiator,that),instantiator.recordKnownComponent(initRecord.parentThat,that,initRecord.memberName,!0);var togo=expandComponentOptionsImpl(mergePolicy,defaults,initRecord,that);return fluid.popActivity(),togo},fluid.assembleCreatorArguments=function(parentThat,typeName,options){var upDefaults=fluid.defaults(typeName);upDefaults&&upDefaults.argumentMap||fluid.fail("Error in assembleCreatorArguments: cannot look up component type name "+typeName+" to a component creator grade with an argumentMap");var distributions=parentThat?fluid.receiveDistributions(parentThat,upDefaults.gradeNames,options.memberName,{}):[];fluid.each(distributions,function(distribution){fluid.computeDistributionPriority(parentThat,distribution),fluid.isPrimitive(distribution.priority)&&(distribution.priority=fluid.parsePriority(distribution.priority,0,!1,"options distribution"))}),fluid.sortByPriority(distributions);var localDynamic=options.localDynamic,localRecord=$.extend({},fluid.censorKeys(options.componentRecord,["type"]),localDynamic),argMap=upDefaults.argumentMap,findKeys=Object.keys(argMap).concat(["type"]);fluid.each(findKeys,function(name){for(var i=0;i<distributions.length;++i)void 0!==distributions[i][name]&&(localRecord[name]=distributions[i][name])}),typeName=localRecord.type||typeName,delete localRecord.type,delete localRecord.options;var mergeRecords={distributions:distributions};void 0!==options.componentRecord&&(mergeRecords.subcomponentRecord=$.extend({},options.componentRecord));var args=[];return fluid.each(argMap,function(index,name){var arg;if("options"===name)arg={marker:fluid.EXPAND,localRecord:localDynamic,mergeRecords:mergeRecords,instantiator:fluid.getInstantiator(parentThat),parentThat:parentThat,memberName:options.memberName};else{var value=localRecord[name];arg=fluid.expandImmediate(value,parentThat,localRecord)}args[index]=arg}),{args:args,funcName:typeName}},fluid.initDependent=function(that,name,localRecord){if(!that[name]){var instance,component=that.options.components[name],instantiator=fluid.globalInstantiator,shadow=instantiator.idToShadow[that.id],localDynamic=localRecord||shadow.subcomponentLocal&&shadow.subcomponentLocal[name];if(fluid.pushActivity("initDependent",'instantiating dependent component at path "%path" with record %record as child of %parent',{path:shadow.path+"."+name,record:component,parent:that}),"string"==typeof component||component.expander)that[name]=fluid.inEvaluationMarker,(instance=fluid.expandImmediate(component,that))?instantiator.recordKnownComponent(that,instance,name,!1):delete that[name];else if(component.type){var type=fluid.expandImmediate(component.type,that,localDynamic);type||fluid.fail("Error in subcomponent record: ",component.type," could not be resolved to a type for component ",name," of parent ",that);var invokeSpec=fluid.assembleCreatorArguments(that,type,{componentRecord:component,memberName:name,localDynamic:localDynamic});instance=fluid.initSubcomponentImpl(that,{type:invokeSpec.funcName},invokeSpec.args)}else fluid.fail("Unrecognised material in place of subcomponent "+name+' - no "type" field found');return fluid.popActivity(),instance}},fluid.bindDeferredComponent=function(that,componentName,component){var events=fluid.makeArray(component.createOnEvent);fluid.each(events,function(eventName){var event=fluid.isIoCReference(eventName)?fluid.expandOptions(eventName,that):that.events[eventName];event&&event.addListener||fluid.fail("Error instantiating createOnEvent component with name "+componentName+" of parent ",that," since event specification "+eventName+" could not be expanded to an event - got ",event),event.addListener(function(){fluid.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:componentName,that:that,eventName:eventName}),that[componentName]&&fluid.globalInstantiator.clearComponent(that,componentName);var localRecord={arguments:fluid.makeArray(arguments)};fluid.initDependent(that,componentName,localRecord),fluid.popActivity()},null,component.priority)})},fluid.priorityForComponent=function(component){return component.priority?component.priority:"fluid.typeFount"===component.type||fluid.hasGrade(fluid.defaults(component.type),"fluid.typeFount")?"first":void 0},fluid.initDependents=function(that){fluid.pushActivity("initDependents","instantiating dependent components for component %that",{that:that});var shadow=fluid.shadowForComponent(that);if(shadow.memberStrategy.initter(),shadow.invokerStrategy.initter(),fluid.getForComponent(that,"modelRelay"),fluid.getForComponent(that,"model"),!fluid.isDestroyed(that)){var components=that.options.components||{},componentSort=[];fluid.each(components,function(component,name){if(component.createOnEvent)fluid.bindDeferredComponent(that,name,component);else{var priority=fluid.priorityForComponent(component);componentSort.push({namespace:name,priority:fluid.parsePriority(priority)})}}),fluid.sortByPriority(componentSort),fluid.each(componentSort,function(entry){fluid.initDependent(that,entry.namespace)}),shadow.subcomponentLocal&&fluid.clear(shadow.subcomponentLocal),that.lifecycleStatus="constructed",fluid.assessTreeConstruction(that,shadow),fluid.popActivity()}},fluid.assessTreeConstruction=function(that,shadow){var instantiator=fluid.globalInstantiator,thatStack=instantiator.getThatStack(that);fluid.find_if(thatStack,function(that){return"constructing"===that.lifecycleStatus})?that.lifecycleStatus="constructed":fluid.markSubtree(instantiator,that,shadow.path,"treeConstructed")},fluid.markSubtree=function(instantiator,that,path,state){that.lifecycleStatus=state,fluid.visitComponentChildren(that,function(child,name){var childPath=instantiator.composePath(path,name),childShadow=instantiator.idToShadow[child.id];childShadow&&childShadow.path===childPath&&fluid.markSubtree(instantiator,child,childPath,state)},{flat:!0})},fluid.pathForComponent=function(component,instantiator){var shadow=(instantiator=instantiator||fluid.getInstantiator(component)||fluid.globalInstantiator).idToShadow[component.id];return shadow?instantiator.parseEL(shadow.path):null},fluid.construct=function(path,options,instantiator){var record=fluid.destroy(path,instantiator);return fluid.set(record.parent,["options","components",record.memberName],{type:options.type,options:options}),fluid.initDependent(record.parent,record.memberName)},fluid.destroy=function(path,instantiator){instantiator=instantiator||fluid.globalInstantiator;var segs=fluid.model.parseToSegments(path,instantiator.parseEL,!0);0===segs.length&&fluid.fail("Cannot destroy the root component");var memberName=segs.pop(),parentPath=instantiator.composeSegments.apply(null,segs),parent=instantiator.pathToComponent[parentPath];return parent||fluid.fail("Cannot modify component with nonexistent parent at path ",path),parent[memberName]&&parent[memberName].destroy(),{parent:parent,memberName:memberName}},fluid.constructSingle=function(parentPath,options,instantiator){instantiator=instantiator||fluid.globalInstantiator,parentPath=parentPath||"";var segs=fluid.model.parseToSegments(parentPath,instantiator.parseEL,!0);"string"==typeof options&&(options={type:options});var type=options.type;type||fluid.fail("Cannot construct singleton object without a type entry");var gradeNames=(options=$.extend({},options)).gradeNames=fluid.makeArray(options.gradeNames);gradeNames.unshift(type),options.type="fluid.component",0===segs.length&&gradeNames.push("fluid.resolveRoot");var memberName=fluid.typeNameToMemberName(options.singleRootType||type);segs.push(memberName),fluid.construct(segs,options,instantiator)},fluid.destroySingle=function(parentPath,typeName,instantiator){instantiator=instantiator||fluid.globalInstantiator;var segs=fluid.model.parseToSegments(parentPath,instantiator.parseEL,!0),memberName=fluid.typeNameToMemberName(typeName);segs.push(memberName),fluid.destroy(segs,instantiator)},fluid.makeGradeLinkage=function(linkageName,inputNames,outputNames){fluid.defaults(linkageName,{gradeNames:"fluid.component",distributeOptions:{record:outputNames,target:"{/ "+inputNames.join("&")+"}.options.gradeNames"}}),fluid.constructSingle([],linkageName)},fluid.componentForPath=function(path){return fluid.globalInstantiator.pathToComponent[fluid.isArrayable(path)?path.join("."):path]},fluid.debugger=function(){},fluid.defaults("fluid.debuggingProbe",{gradeNames:["fluid.component"]}),fluid.probeToDistribution=function(probe){var instantiator=fluid.globalInstantiator,parsed=fluid.parseContextReference(probe.target),segs=fluid.model.parseToSegments(parsed.path,instantiator.parseEL,!0);"options"!==segs[0]&&segs.unshift("options");var parsedPriority=fluid.parsePriority(probe.priority);return parsedPriority.constraint&&!parsedPriority.constraint.target&&(parsedPriority.constraint.target="authoring"),{target:"{/ "+parsed.context+"}."+instantiator.composeSegments.apply(null,segs),record:{func:probe.func,funcName:probe.funcName,args:probe.args,priority:fluid.renderPriority(parsedPriority)}}},fluid.registerProbes=function(probes){var probeDistribution=fluid.transform(probes,fluid.probeToDistribution),memberName="fluid_debuggingProbe_"+fluid.allocateGuid();return fluid.construct([memberName],{type:"fluid.debuggingProbe",distributeOptions:probeDistribution}),memberName},fluid.deregisterProbes=function(probeName){fluid.destroy([probeName])},fluid.thisistToApplicable=function(record,recthis,that){return{apply:function(noThis,args){var resolvedThis=fluid.expandOptions(recthis,that);"string"==typeof resolvedThis&&(resolvedThis=fluid.getGlobalValue(resolvedThis)),resolvedThis||fluid.fail("Could not resolve reference "+recthis+" to a value");var resolvedFunc=resolvedThis[record.method];return"function"!=typeof resolvedFunc&&fluid.fail("Object ",resolvedThis," at reference "+recthis+" has no member named "+record.method+" which is a function "),fluid.passLogLevel(fluid.logLevel.TRACE)&&fluid.log(fluid.logLevel.TRACE,"Applying arguments ",args," to method "+record.method+" of instance ",resolvedThis),resolvedFunc.apply(resolvedThis,args)}}},fluid.changeToApplicable=function(record,that){return{apply:function(noThis,args,localRecord,mergeRecord){var parsed=fluid.parseValidModelReference(that,"changePath listener record",record.changePath),value=fluid.expandOptions(record.value,that,{},fluid.extend(localRecord,{arguments:args})),sources=mergeRecord&&mergeRecord.source&&mergeRecord.source.length?fluid.makeArray(record.source).concat(mergeRecord.source):record.source;parsed.applier.change(parsed.modelSegs,value,record.type,sources)}}},fluid.recordToApplicable=function(record,that,standard){if(void 0!==record.changePath)return fluid.changeToApplicable(record,that,standard);var recthis=record.this;return record.method^recthis&&fluid.fail("Record ",that,' must contain both entries "method" and "this" if it contains either'),record.method?fluid.thisistToApplicable(record,recthis,that):null},fluid.getGlobalValueNonComponent=function(funcName,context){var defaults=fluid.defaults(funcName);return defaults&&fluid.hasGrade(defaults,"fluid.component")&&fluid.fail("Error in function specification - cannot invoke function "+funcName+" in the context of "+context+": component creator functions can only be used as subcomponents"),fluid.getGlobalValue(funcName)},fluid.makeInvoker=function(that,invokerec,name){void 0===(invokerec=fluid.upgradePrimitiveFunc(invokerec)).args||invokerec.args===fluid.NO_VALUE||fluid.isArrayable(invokerec.args)||(invokerec.args=fluid.makeArray(invokerec.args));var func=fluid.recordToApplicable(invokerec,that),invokePre=fluid.preExpand(invokerec.args),localRecord={},expandOptions=fluid.makeStackResolverOptions(that,localRecord,!0);return(func=func||(invokerec.funcName?fluid.getGlobalValueNonComponent(invokerec.funcName,"an invoker"):fluid.expandImmediate(invokerec.func,that)))&&func.apply?func===fluid.notImplemented&&fluid.fail("Error constructing component ",that," - the invoker named "+name+" which was defined in grade "+invokerec.componentSource+" needs to be overridden with a concrete implementation"):fluid.fail("Error in invoker record: could not resolve members func, funcName or method to a function implementation - got "+func+" from ",invokerec),function(){var togo,finalArgs;return!1===fluid.defeatLogging&&fluid.pushActivity("invokeInvoker","invoking invoker with name %name and record %record from path %path holding component %that",{name:name,record:invokerec,path:fluid.dumpComponentPath(that),that:that}),"destroyed"===that.lifecycleStatus?fluid.log(fluid.logLevel.WARN,"Ignoring call to invoker "+name+" of component ",that," which has been destroyed"):(localRecord.arguments=arguments,finalArgs=void 0===invokerec.args||invokerec.args===fluid.NO_VALUE?arguments:(fluid.expandImmediateImpl(invokePre,expandOptions),invokePre.source),togo=func.apply(null,finalArgs)),!1===fluid.defeatLogging&&fluid.popActivity(),togo}},fluid.event.makeTrackedListenerAdder=function(source){var shadow=fluid.shadowForComponent(source);return function(event){return{addListener:function(listener,namespace,priority,softNamespace,listenerId){fluid.recordListener(event,listener,shadow,listenerId),event.addListener.apply(null,arguments)}}}},fluid.event.listenerEngine=function(eventSpec,callback,adder){var argstruc={};fluid.each(eventSpec,function(event,eventName){adder(event).addListener(function(){argstruc[eventName]=fluid.makeArray(arguments),function(){if(!fluid.find(eventSpec,function(value,key){if(void 0===argstruc[key])return!0})){var oldstruc=argstruc;argstruc={},callback(oldstruc)}}()})})},fluid.event.dispatchListener=function(that,listener,eventName,eventSpec,wrappedArgs){void 0===eventSpec.args||eventSpec.args===fluid.NO_VALUE||fluid.isArrayable(eventSpec.args)||(eventSpec.args=fluid.makeArray(eventSpec.args)),listener=fluid.event.resolveListener(listener);var dispatchPre=fluid.preExpand(eventSpec.args),localRecord={},expandOptions=fluid.makeStackResolverOptions(that,localRecord,!0),togo=function(){!1===fluid.defeatLogging&&fluid.pushActivity("dispatchListener","firing to listener to event named %eventName of component %that",{eventName:eventName,that:that});var finalArgs,args=wrappedArgs?arguments[0]:arguments;localRecord.arguments=args,finalArgs=void 0!==eventSpec.args&&eventSpec.args!==fluid.NO_VALUE?(fluid.expandImmediateImpl(dispatchPre,expandOptions),dispatchPre.source):args;var togo=listener.apply(null,finalArgs);return!1===fluid.defeatLogging&&fluid.popActivity(),togo};return fluid.event.impersonateListener(listener,togo),togo},fluid.event.resolveSoftNamespace=function(key){if("string"!=typeof key)return null;var lastpos=Math.max(key.lastIndexOf("."),key.lastIndexOf("}"));return key.substring(lastpos+1)},fluid.event.resolveListenerRecord=function(lisrec,that,eventName,namespace,standard){var badRec=function(record,extra){fluid.fail("Error in listener record - could not resolve reference ",record,' to a listener or firer. Did you miss out "events." when referring to an event firer?'+extra)};fluid.pushActivity("resolveListenerRecord","resolving listener record for event named %eventName for component %that",{eventName:eventName,that:that});var records=fluid.makeArray(lisrec),togo={records:fluid.transform(records,function(record){var expanded=fluid.isPrimitive(record)||record.expander?{listener:record}:fluid.copy(record),methodist=fluid.recordToApplicable(record,that,standard);expanded.listener=methodist||(expanded.listener||expanded.func||expanded.funcName),expanded.listener||badRec(record,' Listener record must contain a member named "listener", "func", "funcName" or "method"');var softNamespace=record.method?fluid.event.resolveSoftNamespace(record.this)+"."+record.method:fluid.event.resolveSoftNamespace(expanded.listener);expanded.namespace||namespace||!softNamespace||(expanded.softNamespace=!0,expanded.namespace=(record.componentSource?record.componentSource:that.typeName)+"."+softNamespace);var listener=expanded.listener=fluid.expandOptions(expanded.listener,that);listener||badRec(record,"");var firer=!1;return"fluid.event.firer"===listener.typeName&&(listener=listener.fire,firer=!0),expanded.listener=standard&&(expanded.args&&"fluid.notImplemented"!==listener||firer)?fluid.event.dispatchListener(that,listener,eventName,expanded):listener,expanded.listenerId=fluid.allocateGuid(),expanded}),adderWrapper:standard?fluid.event.makeTrackedListenerAdder(that):null};return fluid.popActivity(),togo},fluid.event.expandOneEvent=function(that,event){var origin;return(origin="string"==typeof event&&"{"!==event.charAt(0)?fluid.getForComponent(that,["events",event]):fluid.expandOptions(event,that))&&"fluid.event.firer"===origin.typeName||fluid.fail("Error in event specification - could not resolve base event reference ",event," to an event firer: got ",origin),origin},fluid.event.expandEvents=function(that,event){return"string"==typeof event?fluid.event.expandOneEvent(that,event):fluid.transform(event,function(oneEvent){return fluid.event.expandOneEvent(that,oneEvent)})},fluid.event.resolveEvent=function(that,eventName,eventSpec){fluid.pushActivity("resolveEvent","resolving event with name %eventName attached to component %that",{eventName:eventName,that:that});var adder=fluid.event.makeTrackedListenerAdder(that);"string"==typeof eventSpec&&(eventSpec={event:eventSpec});var event="fluid.event.firer"===eventSpec.typeName?eventSpec:eventSpec.event||eventSpec.events;event||fluid.fail("Event specification for event with name "+eventName+" does not include a base event specification: ",eventSpec);var firer,origin="fluid.event.firer"===event.typeName?event:fluid.event.expandEvents(that,event),isMultiple="fluid.event.firer"!==origin.typeName;if(eventSpec.args||isMultiple){firer=fluid.makeEventFirer({name:" [composite] "+fluid.event.nameEvent(that,eventName)});var dispatcher=fluid.event.dispatchListener(that,firer.fire,eventName,eventSpec,isMultiple);isMultiple?fluid.event.listenerEngine(origin,dispatcher,adder):adder(origin).addListener(dispatcher)}else(firer={typeName:"fluid.event.firer",fire:function(){var outerArgs=fluid.makeArray(arguments);fluid.pushActivity("fireSynthetic","firing synthetic event %eventName ",{eventName:eventName});var togo=origin.fire.apply(null,outerArgs);return fluid.popActivity(),togo},addListener:function(listener,namespace,priority,softNamespace,listenerId){var dispatcher=fluid.event.dispatchListener(that,listener,eventName,eventSpec);adder(origin).addListener(dispatcher,namespace,priority,softNamespace,listenerId)},removeListener:function(listener){origin.removeListener(listener)}}).originEvent=origin;return fluid.popActivity(),firer},fluid.withEnvironment=function(envAdd,func,root){var key;root=root||fluid.globalThreadLocal();try{for(key in envAdd)root[key]=envAdd[key];return $.extend(root,envAdd),func()}finally{for(key in envAdd)delete root[key]}},fluid.fetchContextReference=function(parsed,directModel,env,elResolver,externalFetcher){elResolver&&(parsed=elResolver(parsed,env));var base=parsed.context?env[parsed.context]:directModel;return base?parsed.noDereference?parsed.path:fluid.get(base,parsed.path):externalFetcher&&externalFetcher(parsed)||base},fluid.makeEnvironmentFetcher=function(directModel,elResolver,envGetter,externalFetcher){return envGetter=envGetter||fluid.globalThreadLocal,function(parsed){var env=envGetter();return fluid.fetchContextReference(parsed,directModel,env,elResolver,externalFetcher)}},fluid.coerceToPrimitive=function(string){return"false"!==string&&("true"===string||(isFinite(string)?Number(string):string))},fluid.compactStringToRec=function(string,type){var openPos=string.indexOf("("),closePos=string.indexOf(")");if((-1===openPos^-1===closePos||closePos<openPos)&&fluid.fail("Badly-formed compact "+type+" record without matching parentheses: "+string),-1===openPos||-1===closePos)return"expander"===type&&fluid.fail("Badly-formed compact expander record without parentheses: "+string),string;var trail=string.substring(closePos+1);""!==$.trim(trail)&&fluid.fail("Badly-formed compact "+type+" record "+string+" - unexpected material following close parenthesis: "+trail);var prefix=string.substring(0,openPos),body=$.trim(string.substring(openPos+1,closePos)),args=""===body?[]:fluid.transform(body.split(","),$.trim,fluid.coerceToPrimitive),togo=fluid.upgradePrimitiveFunc(prefix,null);return togo.args=args,togo},fluid.expandPrefix="@expand:",fluid.expandCompactString=function(string,active){var rec=string;if(0===string.indexOf(fluid.expandPrefix)){var rem=string.substring(fluid.expandPrefix.length);rec={expander:fluid.compactStringToRec(rem,"expander")}}else active&&(rec=fluid.compactStringToRec(string,active));return rec};var singularPenRecord={listeners:"listener",modelListeners:"modelListener"},singularRecord=$.extend({invokers:"invoker"},singularPenRecord);function regenerateCursor(source,segs,limit,sourceStrategy){for(var i=0;i<limit;++i)source=sourceStrategy(source,segs[i],i,fluid.makeArray(segs));return source}fluid.expandCompactRec=function(segs,target,source){fluid.guardCircularExpansion(segs,segs.length);var pen=0<segs.length?segs[segs.length-1]:"",active=singularRecord[pen];!active&&1<segs.length&&(active=singularPenRecord[segs[segs.length-2]]),fluid.each(source,function(value,key){if(fluid.isPlainObject(value))return target[key]=fluid.freshContainer(value),segs.push(key),fluid.expandCompactRec(segs,target[key],value),void segs.pop();"string"==typeof value&&(value=fluid.expandCompactString(value,active)),target[key]=value})},fluid.expandCompact=function(options){var togo={};return fluid.expandCompactRec([],togo,options),togo},fluid.extractEL=function(string,options){if("ALL"===options.ELstyle)return string;if(1===options.ELstyle.length){if(string.charAt(0)===options.ELstyle)return string.substring(1)}else if("${}"===options.ELstyle){var i1=string.indexOf("${"),i2=string.lastIndexOf("}");if(0===i1&&-1!==i2)return string.substring(2,i2)}},fluid.extractELWithContext=function(string,options){var EL=fluid.extractEL(string,options);return fluid.isIoCReference(EL)?fluid.parseContextReference(EL):EL?{path:EL}:EL},fluid.parseContextReference=function(reference,index,delimiter){index=index||0;var endcpos,context,nested,isNested="{"===reference.charAt(index+1);-1===(endcpos=isNested?(nested=fluid.parseContextReference(reference,index+1,"}")).endpos:reference.indexOf("}",index+1))&&fluid.fail('Cannot parse context reference "'+reference+'": Malformed context reference without }'),context=isNested?nested:reference.substring(index+1,endcpos);var endpos=delimiter?reference.indexOf(delimiter,endcpos+1):reference.length,path=reference.substring(endcpos+1,endpos);return"."===path.charAt(0)&&(path=path.substring(1)),{context:context,path:path,endpos:endpos}},fluid.renderContextReference=function(parsed){var context=parsed.context;return"{"+("string"==typeof context?context:fluid.renderContextReference(context))+"}"+(parsed.path?"."+parsed.path:"")},fluid.resolveContextValue=function(string,options){function fetch(parsed){fluid.pushActivity("resolveContextValue","resolving context value %parsed",{parsed:parsed});var togo=options.fetcher(parsed);return fluid.pushActivity("resolvedContextValue","resolved value %parsed to value %value",{parsed:parsed,value:togo}),fluid.popActivity(2),togo}var parsed;if(options.bareContextRefs&&fluid.isIoCReference(string))return fetch(parsed=fluid.parseContextReference(string));if(options.ELstyle&&"${}"!==options.ELstyle&&(parsed=fluid.extractELWithContext(string,options)))return fetch(parsed);for(;"string"==typeof string;){var i1=string.indexOf("${"),i2=string.indexOf("}",i1+2);if(-1===i1||-1===i2)break;"{"===string.charAt(i1+2)?i2=(parsed=fluid.parseContextReference(string,i1+2,"}")).endpos:parsed={path:string.substring(i1+2,i2)};var subs=fetch(parsed),all=0===i1&&i2===string.length-1;if(null==subs)return subs;string=all?subs:string.substring(0,i1)+subs+string.substring(i2+1)}return string},fluid.fetchExpandChildren=function(target,i,segs,source,mergePolicy,options){if(source.expander){var expanded=fluid.expandExpander(target,source,options);if(fluid.isPrimitive(expanded)||!fluid.isPlainObject(expanded)||fluid.isArrayable(expanded)^fluid.isArrayable(target))return expanded;$.extend(!0,target,expanded)}return fluid.each(source,function(newSource,key){void 0===newSource?target[key]=void 0:"expander"!==key&&(segs[i]=key,!0!==fluid.getImmediate(options.exceptions,segs,i)&&options.strategy(target,key,i+1,segs,source,mergePolicy))}),target},fluid.isUnexpandable=function(source){return fluid.isPrimitive(source)||!fluid.isPlainObject(source)},fluid.expandSource=function(options,target,i,segs,deliverer,source,policy,recurse){var expanded,isTrunk,thisPolicy=fluid.derefMergePolicy(policy);return"string"!=typeof source||thisPolicy.noexpand?thisPolicy.noexpand||fluid.isUnexpandable(source)?expanded=source:source.expander?expanded=fluid.expandExpander(deliverer,source,options):(expanded=fluid.freshContainer(source),isTrunk=!0):options.defaultEL&&"{"!==source.charAt(0)?expanded=source:(fluid.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:source,path:fluid.path.apply(null,segs.slice(0,i))}),expanded=fluid.resolveContextValue(source,options),fluid.popActivity(1)),expanded!==fluid.NO_VALUE&&deliverer(expanded),isTrunk&&recurse(expanded,source,i,segs,policy),expanded},fluid.guardCircularExpansion=function(segs,i){i>fluid.strategyRecursionBailout&&fluid.fail("Overflow/circularity in options expansion, current path is ",segs," at depth ",i,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander')},fluid.makeExpandStrategy=function(options){var recurse=function(target,source,i,segs,policy){return fluid.fetchExpandChildren(target,i||0,segs||[],source,policy,options)},strategy=function(target,name,i,segs,source,policy){if(fluid.guardCircularExpansion(segs,i),target){if(target.hasOwnProperty(name))return target[name];void 0===source&&(source=regenerateCursor(options.source,segs,i-1,options.sourceStrategy),policy=regenerateCursor(options.mergePolicy,segs,i-1,fluid.concreteTrundler));var thisSource=options.sourceStrategy(source,name,i,segs),thisPolicy=fluid.concreteTrundler(policy,name);return fluid.expandSource(options,target,i,segs,function(value){target[name]=value},thisSource,thisPolicy,recurse)}};return options.recurse=recurse,options.strategy=strategy},fluid.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:!0,target:fluid.inCreationMarker}),fluid.makeExpandOptions=function(source,options){return(options=$.extend({},fluid.rawDefaults("fluid.makeExpandOptions"),options)).defaultEL="${}"===options.ELStyle&&options.bareContextRefs,options.expandSource=function(source){return fluid.expandSource(options,null,0,[],fluid.identity,source,options.mergePolicy,!1)},fluid.isUnexpandable(source)?(options.strategy=fluid.concreteTrundler,options.initter=fluid.identity,options.target="string"==typeof source?(options.defer?fluid.copy:fluid.identity)(options.expandSource(source)):source,options.immutableTarget=!0):(options.source=source,options.target=fluid.freshContainer(source),options.sourceStrategy=options.sourceStrategy||fluid.concreteTrundler,fluid.makeExpandStrategy(options),options.initter=function(){options.target=fluid.fetchExpandChildren(options.target,0,[],options.source,options.mergePolicy,options)}),options},fluid.expand=function(source,options){var expandOptions=fluid.makeExpandOptions(source,options);return expandOptions.initter(),expandOptions.target},fluid.preExpandRecurse=function(root,source,holder,member,rootSegs){function pushExpander(expander){root.expanders.push({expander:expander,holder:holder,member:member}),delete holder[member]}if(fluid.guardCircularExpansion(rootSegs,rootSegs.length),fluid.isIoCReference(source)){var parsed=fluid.parseContextReference(source),segs=fluid.model.parseEL(parsed.path);pushExpander({typeFunc:fluid.expander.fetch,context:parsed.context,segs:segs})}else fluid.isPlainObject(source)&&(source.expander?(source.expander.typeFunc=fluid.getGlobalValue(source.expander.type||"fluid.invokeFunc"),pushExpander(source.expander)):fluid.each(source,function(value,key){rootSegs.push(key),fluid.preExpandRecurse(root,value,source,key,rootSegs),rootSegs.pop()}))},fluid.preExpand=function(source){var root={expanders:[],source:fluid.isUnexpandable(source)?source:fluid.copy(source)};return fluid.preExpandRecurse(root,root.source,root,"source",[]),root},fluid.expandImmediate=function(source,that,localRecord){var options=fluid.makeStackResolverOptions(that,localRecord,!0),root=fluid.preExpand(source);return fluid.expandImmediateImpl(root,options),root.source},fluid.expandImmediateImpl=function(root,options){for(var expanders=root.expanders,i=0;i<expanders.length;++i){var expander=expanders[i];expander.holder[expander.member]=expander.expander.typeFunc(null,expander,options)}},fluid.expandExpander=function(deliverer,source,options){var expander=fluid.getGlobalValue(source.expander.type||"fluid.invokeFunc");return expander||fluid.fail("Unknown expander with type "+source.expander.type),expander(deliverer,source,options)},fluid.registerNamespace("fluid.expander"),fluid.expander.fetch=function(deliverer,source,options){var localRecord=options.localRecord,context=source.expander.context,segs=source.expander.segs,inLocal=void 0!==localRecord[context],contextStatus=options.contextThat.lifecycleStatus,fast="treeConstructed"===contextStatus||"destroyed"===contextStatus,component=inLocal?localRecord[context]:fluid.resolveContext(context,options.contextThat,fast);if(component){var root=component;if(inLocal||"constructing"!==component.lifecycleStatus)for(var i=0;i<segs.length;++i)root=root?root[segs[i]]:void 0;else root=fluid.getForComponent(component,segs);return void 0!==root||inLocal||(root=fluid.getForComponent(component,segs)),root}0<segs.length&&fluid.triggerMismatchedPathError(source.expander,options.contextThat)},fluid.invokeFunc=function(deliverer,source,options){var expander=source.expander,args=fluid.makeArray(expander.args);expander.args=args,args=options.recurse?options.recurse([],args):(expander=fluid.expandImmediate(expander,options.contextThat,options.localRecord)).args;var funcEntry=expander.func||expander.funcName,func=(options.expandSource?options.expandSource(funcEntry):funcEntry)||fluid.recordToApplicable(expander,options.contextThat);return"string"==typeof func&&(func=fluid.getGlobalValue(func)),func||fluid.fail("Error in expander record ",expander,": "+funcEntry+" could not be resolved to a function for component ",options.contextThat),func.apply(null,args)},fluid.noexpand=function(deliverer,source){return source.expander.value?source.expander.value:source.expander.tree}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.model.makeEnvironmentStrategy=function(environment){return function(root,segment,index){return 0===index&&environment[segment]?environment[segment]:void 0}},fluid.model.defaultCreatorStrategy=function(root,segment){if(void 0===root[segment])return root[segment]={},root[segment]},fluid.model.defaultFetchStrategy=function(root,segment){return root[segment]},fluid.model.funcResolverStrategy=function(root,segment){if(root.resolvePathSegment)return root.resolvePathSegment(segment)},fluid.model.traverseWithStrategy=function(root,segs,initPos,config,uncess){for(var strategies=config.strategies,limit=segs.length-uncess,i=initPos;i<limit;++i){if(!root)return root;for(var accepted,j=0;j<strategies.length&&void 0===(accepted=strategies[j](root,segs[i],i+1,segs));++j);accepted===fluid.NO_VALUE&&(accepted=void 0),root=accepted}return root},fluid.model.getValueAndSegments=function(root,EL,config,initSegs){return fluid.model.accessWithStrategy(root,EL,fluid.NO_VALUE,config,initSegs,!0)},fluid.model.makeTrundler=function(config){return function(valueSeg,EL){return fluid.model.getValueAndSegments(valueSeg.root,EL,config,valueSeg.segs)}},fluid.model.getWithStrategy=function(root,EL,config,initSegs){return fluid.model.accessWithStrategy(root,EL,fluid.NO_VALUE,config,initSegs)},fluid.model.setWithStrategy=function(root,EL,newValue,config,initSegs){fluid.model.accessWithStrategy(root,EL,newValue,config,initSegs)},fluid.model.accessWithStrategy=function(root,EL,newValue,config,initSegs,returnSegs){if(fluid.isPrimitive(EL)||fluid.isArrayable(EL))return fluid.model.accessImpl(root,EL,newValue,config,initSegs,returnSegs,fluid.model.traverseWithStrategy);var key=EL.type||"default",resolver=config.resolvers[key];resolver||fluid.fail("Unable to find resolver of type "+key);var trundler=fluid.model.makeTrundler(config),valueSeg={root:root,segs:initSegs};return valueSeg=resolver(valueSeg,EL,trundler),EL.path&&valueSeg&&(valueSeg=trundler(valueSeg,EL.path)),returnSegs?valueSeg:valueSeg?valueSeg.root:void 0},fluid.registerNamespace("fluid.pathUtil"),fluid.pathUtil.getPathSegmentImpl=function(accept,path,i){var segment=null;accept&&(segment="");for(var escaped=!1,limit=path.length;i<limit;++i){var c=path.charAt(i);if(escaped)escaped=!1,null!==segment&&(segment+=c);else{if("."===c)break;"\\"===c?escaped=!0:null!==segment&&(segment+=c)}}return null!==segment&&(accept[0]=segment),i};var globalAccept=[];fluid.pathUtil.parseEL=function(path){for(var togo=[],index=0,limit=path.length;index<limit;){var firstdot=fluid.pathUtil.getPathSegmentImpl(globalAccept,path,index);togo.push(globalAccept[0]),index=firstdot+1}return togo},fluid.pathUtil.composeSegment=function(prefix,toappend){toappend=toappend.toString();for(var i=0;i<toappend.length;++i){var c=toappend.charAt(i);"."!==c&&"\\"!==c&&"}"!==c||(prefix+="\\"),prefix+=c}return prefix},fluid.pathUtil.escapeSegment=function(segment){return fluid.pathUtil.composeSegment("",segment)},fluid.pathUtil.composePath=function(prefix,suffix){return 0!==prefix.length&&(prefix+="."),fluid.pathUtil.composeSegment(prefix,suffix)},fluid.pathUtil.composeSegments=function(){for(var path="",i=0;i<arguments.length;++i)path=fluid.pathUtil.composePath(path,arguments[i]);return path},fluid.pathUtil.matchSegments=function(toMatch,segs,start,end){if(end-start!==toMatch.length)return!1;for(var i=start;i<end;++i)if(segs[i]!==toMatch[i-start])return!1;return!0},fluid.model.unescapedParser={parse:fluid.model.parseEL,compose:fluid.model.composeSegments},fluid.model.defaultGetConfig={parser:fluid.model.unescapedParser,strategies:[fluid.model.funcResolverStrategy,fluid.model.defaultFetchStrategy]},fluid.model.defaultSetConfig={parser:fluid.model.unescapedParser,strategies:[fluid.model.funcResolverStrategy,fluid.model.defaultFetchStrategy,fluid.model.defaultCreatorStrategy]},fluid.model.escapedParser={parse:fluid.pathUtil.parseEL,compose:fluid.pathUtil.composeSegments},fluid.model.escapedGetConfig={parser:fluid.model.escapedParser,strategies:[fluid.model.defaultFetchStrategy]},fluid.model.escapedSetConfig={parser:fluid.model.escapedParser,strategies:[fluid.model.defaultFetchStrategy,fluid.model.defaultCreatorStrategy]},fluid.stronglyConnected=function(vertices,accessor){var that={stack:[],accessor:accessor,components:[],index:0};return vertices.forEach(function(vertex){void 0===vertex.tarjanIndex&&fluid.stronglyConnectedOne(vertex,that)}),that.components},fluid.stronglyConnectedOne=function(vertex,that){if(vertex.tarjanIndex=that.index,vertex.lowIndex=that.index,++that.index,that.stack.push(vertex),vertex.onStack=!0,that.accessor(vertex).forEach(function(outVertex){void 0===outVertex.tarjanIndex?(fluid.stronglyConnectedOne(outVertex,that),vertex.lowIndex=Math.min(vertex.lowIndex,outVertex.lowIndex)):outVertex.onStack&&(vertex.lowIndex=Math.min(vertex.lowIndex,outVertex.tarjanIndex))}),vertex.lowIndex===vertex.tarjanIndex){for(var outVertex,component=[];(outVertex=that.stack.pop()).onStack=!1,component.push(outVertex),outVertex!==vertex;);that.components.push(component)}},fluid.initRelayModel=function(that){return fluid.deenlistModelComponent(that),that.model},fluid.isModelComplete=function(that){return"model"in that&&that.model!==fluid.inEvaluationMarker},fluid.enlistModelComponent=function(that){var instantiator=fluid.getInstantiator(that),enlist=instantiator.modelTransactions.init[that.id];return enlist||(enlist={that:that,applier:fluid.getForComponent(that,"applier"),complete:fluid.isModelComplete(that)},instantiator.modelTransactions.init[that.id]=enlist),enlist},fluid.clearTransactions=function(){var instantiator=fluid.globalInstantiator;fluid.clear(instantiator.modelTransactions),instantiator.modelTransactions.init={}},fluid.failureEvent.addListener(fluid.clearTransactions,"clearTransactions","before:fail"),fluid.clearLinkCounts=function(transRec,relaysAlso){fluid.each(transRec,function(value,key){"number"==typeof value?transRec[key]=0:relaysAlso&&value.options&&"number"==typeof value.relayCount&&(value.relayCount=0)})},fluid.computeInitialOutArcs=function(transacs,mrec){return fluid.transform(mrec,function(recel,id){var oneOutArcs={},listeners=recel.that.applier.listeners.sortedListeners;fluid.each(listeners,function(listener){if(listener.isRelay&&!fluid.isExcludedChangeSource(transacs[id],listener.cond)){var targetId=listener.targetId;targetId!==id&&(oneOutArcs[targetId]=!0)}});var togo=Object.keys(oneOutArcs).map(function(id){return mrec[id]});return fluid.remove_if(togo,function(rec){return void 0===rec}),togo})},fluid.sortCompleteLast=function(reca,recb){return(reca.completeOnInit?1:0)-(recb.completeOnInit?1:0)},fluid.operateInitialTransaction=function(that,mrec){var transac,transId=fluid.allocateGuid(),transRec=fluid.getModelTransactionRec(that,transId),transacs=fluid.transform(mrec,function(recel){return transac=recel.that.applier.initiate(null,"init",transId),transRec[recel.that.applier.applierId]={transaction:transac},transac}),outArcs=fluid.computeInitialOutArcs(transacs,mrec),recs=fluid.values(mrec),components=fluid.stronglyConnected(recs,function(mrec){return outArcs[mrec.that.id]}),priorityIndex=0;components.forEach(function(component){component.forEach(function(recel){recel.initPriority=recel.completeOnInit?Math.Infinity:priorityIndex++})}),recs.sort(function(reca,recb){return reca.initPriority-recb.initPriority}),recs.forEach(function(recel){var that=recel.that,transac=transacs[that.id];recel.completeOnInit?fluid.initModelEvent(that,that.applier,transac,that.applier.listeners.sortedListeners):fluid.each(recel.initModels,function(initModel){transac.fireChangeRequest({type:"ADD",segs:[],value:initModel}),fluid.clearLinkCounts(transRec,!0)});var shadow=fluid.shadowForComponent(that);shadow&&(shadow.modelComplete=!0)}),transac.commit()},fluid.deenlistModelComponent=function(that){var instantiator=fluid.getInstantiator(that),mrec=instantiator.modelTransactions.init;if(mrec[that.id]&&(that.model=void 0,mrec[that.id].complete=!0,!fluid.find_if(mrec,function(recel){return!0!==recel.complete}))){try{fluid.operateInitialTransaction(that,mrec)}catch(e){throw fluid.clearTransactions(),e}instantiator.modelTransactions.init={}}},fluid.parseModelReference=function(that,ref){var parsed=fluid.parseContextReference(ref);return parsed.segs=that.applier.parseEL(parsed.path),parsed},fluid.parseValidModelReference=function(that,name,ref,implicitRelay){var parsed,contextTarget,target,reject=function(){var failArgs=["Error in "+name+": ",ref].concat(fluid.makeArray(arguments));fluid.fail.apply(null,failArgs)},rejectNonModel=function(value){reject(" must be a reference to a component with a ChangeApplier (descended from fluid.modelComponent), instead got ",value)};if("string"==typeof ref)if(fluid.isIoCReference(ref)){var modelPoint=(parsed=fluid.parseModelReference(that,ref)).segs.indexOf("model");-1===modelPoint?implicitRelay?parsed.nonModel=!0:reject(' must be a reference into a component model via a path including the segment "model"'):(parsed.modelSegs=parsed.segs.slice(modelPoint+1),parsed.contextSegs=parsed.segs.slice(0,modelPoint),delete parsed.path)}else parsed={path:ref,modelSegs:that.applier.parseEL(ref)};else fluid.isArrayable(ref.segs)||reject(' must contain an entry "segs" holding path segments referring a model path within a component'),parsed={context:ref.context,modelSegs:fluid.expandOptions(ref.segs,that)};return target=parsed.context?((contextTarget=fluid.resolveContext(parsed.context,that))||reject(" context must be a reference to an existing component"),parsed.contextSegs?fluid.getForComponent(contextTarget,parsed.contextSegs):contextTarget):that,parsed.nonModel||(fluid.isComponent(target)||rejectNonModel(target),target.applier||fluid.getForComponent(target,["applier"]),target.applier||rejectNonModel(target)),parsed.that=target,parsed.applier=target&&target.applier,parsed.path||(parsed.path=target&&target.applier.composeSegments.apply(null,parsed.modelSegs)),parsed},fluid.getModelTransactionRec=function(that,transId){var instantiator=fluid.getInstantiator(that);if(transId||fluid.fail("Cannot get transaction record without transaction id"),!instantiator)return null;var transRec=instantiator.modelTransactions[transId];return transRec||(transRec=instantiator.modelTransactions[transId]={relays:[],sources:{},externalChanges:{}}),transRec},fluid.recordChangeListener=function(component,applier,sourceListener,listenerId){var shadow=fluid.shadowForComponent(component);fluid.recordListener(applier.modelChanged,sourceListener,shadow,listenerId)},fluid.registerRelayTransaction=function(transRec,targetApplier,transId,options,npOptions){var newTrans=targetApplier.initiate("relay",null,transId),transEl=transRec[targetApplier.applierId]={transaction:newTrans,relayCount:0,namespace:npOptions.namespace,priority:npOptions.priority,options:options};return transEl.priority=fluid.parsePriority(transEl.priority,transRec.relays.length,!1,"model relay"),transRec.relays.push(transEl),transEl},fluid.relayRecursionBailout=100,fluid.registerDirectChangeRelay=function(target,targetSegs,source,sourceSegs,linkId,transducer,options,npOptions){var targetApplier=options.targetApplier||target.applier,sourceApplier=options.sourceApplier||source.applier,applierId=targetApplier.applierId;targetSegs=fluid.makeArray(targetSegs),sourceSegs=fluid.makeArray(sourceSegs);var sourceListener=function(newValue,oldValue,path,changeRequest,trans,applier){var transId=trans.id,transRec=fluid.getModelTransactionRec(target,transId);applier&&trans&&!transRec[applier.applierId]&&(transRec[applier.applierId]={transaction:trans});var existing=transRec[applierId];transRec[linkId]=transRec[linkId]||0;++transRec[linkId],transRec[linkId]>fluid.relayRecursionBailout&&fluid.fail("Error in model relay specification at component ",target," - operated more than "+fluid.relayRecursionBailout+" relays without model value settling - current model contents are ",trans.newHolder.model),existing||(existing=fluid.registerRelayTransaction(transRec,targetApplier,transId,options,npOptions)),transducer&&!options.targetApplier?transducer(existing.transaction,options.sourceApplier?void 0:newValue,sourceSegs,targetSegs,changeRequest):(changeRequest&&"DELETE"===changeRequest.type&&existing.transaction.fireChangeRequest({type:"DELETE",segs:targetSegs}),void 0!==newValue&&existing.transaction.fireChangeRequest({type:"ADD",segs:targetSegs,value:newValue}))},spec=sourceApplier.modelChanged.addListener({isRelay:!0,cond:transducer&&transducer.cond,targetId:target.id,targetApplierId:targetApplier.id,segs:sourceSegs,transactional:options.transactional},sourceListener);fluid.passLogLevel(fluid.logLevel.TRACE)&&fluid.log(fluid.logLevel.TRACE,"Adding relay listener with listenerId "+spec.listenerId+" to source applier with id "+sourceApplier.applierId+" from target applier with id "+applierId+" for target component with id "+target.id),source&&(fluid.recordChangeListener(source,sourceApplier,sourceListener,spec.listenerId),target!==source&&fluid.recordChangeListener(target,sourceApplier,sourceListener,spec.listenerId))},fluid.connectModelRelay=function(source,sourceSegs,target,targetSegs,options){var linkId=fluid.allocateGuid();function enlistComponent(component){var enlist=fluid.enlistModelComponent(component);enlist.complete&&(fluid.shadowForComponent(component).modelComplete&&(enlist.completeOnInit=!0))}enlistComponent(target),enlistComponent(source);var npOptions=fluid.filterKeys(options,["namespace","priority"]);options.update?options.targetApplier?fluid.registerDirectChangeRelay(source,sourceSegs,target,targetSegs,linkId,null,{transactional:!1,targetApplier:options.targetApplier,update:options.update},npOptions):fluid.registerDirectChangeRelay(target,targetSegs,source,[],linkId+"-transform",options.forwardAdapter,{transactional:!0,sourceApplier:options.forwardApplier},npOptions):(fluid.registerDirectChangeRelay(target,targetSegs,source,sourceSegs,linkId,options.forwardAdapter,{transactional:!1},npOptions),fluid.registerDirectChangeRelay(source,sourceSegs,target,targetSegs,linkId,options.backwardAdapter,{transactional:!1},npOptions))},fluid.parseSourceExclusionSpec=function(targetSpec,sourceSpec){return targetSpec.excludeSource=fluid.arrayToHash(fluid.makeArray(sourceSpec.excludeSource||(sourceSpec.includeSource?"*":void 0))),targetSpec.includeSource=fluid.arrayToHash(fluid.makeArray(sourceSpec.includeSource)),targetSpec},fluid.isExcludedChangeSource=function(transaction,spec){if(!spec||!spec.excludeSource)return!1;var excluded=spec.excludeSource["*"];for(var source in transaction.fullSources)spec.excludeSource[source]&&(excluded=!0),spec.includeSource[source]&&(excluded=!1);return excluded},fluid.model.guardedAdapter=function(transaction,cond,func,args){fluid.isExcludedChangeSource(transaction,cond)||func===fluid.model.transform.uninvertibleTransform||func.apply(null,args)},fluid.transformToAdapter=function(transform,targetPath){var basedTransform={};return basedTransform[targetPath]=transform,function(trans,newValue,sourceSegs,targetSegs,changeRequest){changeRequest&&"DELETE"===changeRequest.type&&trans.fireChangeRequest({type:"DELETE",path:targetPath}),fluid.model.transformWithRules(newValue,basedTransform,{finalApplier:trans})}},fluid.makeTransformPackage=function(componentThat,transform,sourcePath,targetPath,forwardCond,backwardCond,namespace,priority){var that={forwardHolder:{model:transform},backwardHolder:{model:null},generateAdapters:function(trans){if(that.forwardAdapterImpl=fluid.transformToAdapter(trans?trans.newHolder.model:that.forwardHolder.model,targetPath),null!==sourcePath){var inverted=fluid.model.transform.invertConfiguration(transform);inverted!==fluid.model.transform.uninvertibleTransform?(that.backwardHolder.model=inverted,that.backwardAdapterImpl=fluid.transformToAdapter(that.backwardHolder.model,sourcePath)):that.backwardAdapterImpl=inverted}},forwardAdapter:function(transaction,newValue){void 0===newValue&&that.generateAdapters(),fluid.model.guardedAdapter(transaction,forwardCond,that.forwardAdapterImpl,arguments)}};that.forwardAdapter.cond=forwardCond,that.runTransform=function(trans){trans.commit(),trans.reset()},that.forwardApplier=fluid.makeHolderChangeApplier(that.forwardHolder),that.forwardApplier.isRelayApplier=!0,that.invalidator=fluid.makeEventFirer({name:"Invalidator for model relay with applier "+that.forwardApplier.applierId}),null!==sourcePath&&(that.backwardApplier=fluid.makeHolderChangeApplier(that.backwardHolder),that.backwardAdapter=function(transaction){fluid.model.guardedAdapter(transaction,backwardCond,that.backwardAdapterImpl,arguments)},that.backwardAdapter.cond=backwardCond),that.update=that.invalidator.fire;var implicitOptions={targetApplier:that.forwardApplier,update:that.update,namespace:namespace,priority:priority,refCount:0};return that.forwardHolder.model=fluid.parseImplicitRelay(componentThat,transform,[],implicitOptions),that.refCount=implicitOptions.refCount,that.namespace=namespace,that.priority=priority,that.generateAdapters(),that.invalidator.addListener(that.generateAdapters),that.invalidator.addListener(that.runTransform),that},fluid.singleTransformToFull=function(singleTransform){return{"":{transform:$.extend(!0,{inputPath:""},singleTransform)}}},fluid.model.relayConditions={initOnly:{includeSource:"init"},liveOnly:{excludeSource:"init"},never:{includeSource:[]},always:{}},fluid.model.parseRelayCondition=function(condition){var exclusionRec;return"initOnly"===condition?fluid.log(fluid.logLevel.WARN,'The relay condition "initOnly" is deprecated: Please use the form \'includeSource: "init"\' instead'):"liveOnly"===condition&&fluid.log(fluid.logLevel.WARN,'The relay condition "liveOnly" is deprecated: Please use the form \'excludeSource: "init"\' instead'),condition?"string"==typeof condition?(exclusionRec=fluid.model.relayConditions[condition])||fluid.fail('Unrecognised model relay condition string "'+condition+'": the supported values are "never" or a record with members "includeSource" and/or "excludeSource"'):exclusionRec=condition:exclusionRec={},fluid.parseSourceExclusionSpec({},exclusionRec)},fluid.parseModelRelay=function(that,mrrec,key){var parsedSource=void 0!==mrrec.source?fluid.parseValidModelReference(that,'modelRelay record member "source"',mrrec.source):{path:null,modelSegs:null},parsedTarget=fluid.parseValidModelReference(that,'modelRelay record member "target"',mrrec.target),namespace=mrrec.namespace||key,transform=mrrec.singleTransform?fluid.singleTransformToFull(mrrec.singleTransform):mrrec.transform;transform||fluid.fail('Cannot parse modelRelay record without element "singleTransform" or "transform":',mrrec);var forwardCond=fluid.model.parseRelayCondition(mrrec.forward),backwardCond=fluid.model.parseRelayCondition(mrrec.backward),transformPackage=fluid.makeTransformPackage(that,transform,parsedSource.path,parsedTarget.path,forwardCond,backwardCond,namespace,mrrec.priority);0===transformPackage.refCount?fluid.connectModelRelay(parsedSource.that||that,parsedSource.modelSegs,parsedTarget.that,parsedTarget.modelSegs,fluid.filterKeys(transformPackage,["forwardAdapter","backwardAdapter","namespace","priority"])):(parsedSource.modelSegs&&fluid.fail('Error in model relay definition: If a relay transform has a model dependency, you can not specify a "source" entry - please instead enter this as "input" in the transform specification. Definition was ',mrrec," for component ",that),fluid.connectModelRelay(that,null,parsedTarget.that,parsedTarget.modelSegs,transformPackage))},fluid.parseImplicitRelay=function(that,modelRec,segs,options){var value;if(fluid.isIoCReference(modelRec)){var parsed=fluid.parseValidModelReference(that,"model reference from model (implicit relay)",modelRec,!0);parsed.nonModel?value=fluid.getForComponent(parsed.that,parsed.segs):(++options.refCount,fluid.connectModelRelay(that,segs,parsed.that,parsed.modelSegs,options))}else fluid.isPrimitive(modelRec)||!fluid.isPlainObject(modelRec)?value=modelRec:modelRec.expander&&fluid.isPlainObject(modelRec.expander)?value=fluid.expandOptions(modelRec,that):(value=fluid.freshContainer(modelRec),fluid.each(modelRec,function(innerValue,key){segs.push(key);var innerTrans=fluid.parseImplicitRelay(that,innerValue,segs,options);void 0!==innerTrans&&(value[key]=innerTrans),segs.pop()}));return value},fluid.model.notifyExternal=function(transRec){var allChanges=transRec?fluid.values(transRec.externalChanges):[];fluid.sortByPriority(allChanges);for(var i=0;i<allChanges.length;++i){var change=allChanges[i];change.args[5].destroyed||change.listener.apply(null,change.args)}fluid.clearLinkCounts(transRec,!0)},fluid.model.commitRelays=function(instantiator,transactionId){var transRec=instantiator.modelTransactions[transactionId];fluid.each(transRec,function(transEl){transEl.transaction&&(transEl.transaction.commit("relay"),transEl.transaction.reset())})},fluid.model.updateRelays=function(instantiator,transactionId){var transRec=instantiator.modelTransactions[transactionId],updates=0;return fluid.sortByPriority(transRec.relays),fluid.each(transRec.relays,function(transEl){0<transEl.transaction.changeRecord.changes&&transEl.relayCount<2&&transEl.options.update&&(transEl.relayCount++,fluid.clearLinkCounts(transRec),transEl.options.update(transEl.transaction,transRec),++updates)}),updates},fluid.establishModelRelay=function(that,optionsModel,optionsML,optionsMR,applier){var shadow=fluid.shadowForComponent(that);shadow.modelRelayEstablished?fluid.fail("FLUID-5887 failure: Model relay initialised twice on component",that):shadow.modelRelayEstablished=!0,fluid.mergeModelListeners(that,optionsML);var enlist=fluid.enlistModelComponent(that);fluid.each(optionsMR,function(mrrec,key){for(var i=0;i<mrrec.length;++i)fluid.parseModelRelay(that,mrrec[i],key)});var initModels=fluid.transform(optionsModel,function(modelRec){return fluid.parseImplicitRelay(that,modelRec,[],{refCount:0,priority:"first"})});enlist.initModels=initModels;var instantiator=fluid.getInstantiator(that);return applier.preCommit.addListener(function(transaction){for(;0<fluid.model.updateRelays(instantiator,transaction.id););}),applier.preCommit.addListener(function(transaction,applier,code){"relay"!==code&&fluid.model.commitRelays(instantiator,transaction.id)}),applier.postCommit.addListener(function(transaction,applier,code){"relay"!==code&&(fluid.model.notifyExternal(instantiator.modelTransactions[transaction.id]),delete instantiator.modelTransactions[transaction.id])}),null},fluid.defaults("fluid.modelComponent",{gradeNames:["fluid.component"],changeApplierOptions:{relayStyle:!0,cullUnchanged:!0},members:{model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeHolderChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:!0,func:fluid.arrayConcatPolicy},modelListeners:fluid.makeMergeListenersPolicy(fluid.arrayConcatPolicy),modelRelay:fluid.makeMergeListenersPolicy(fluid.arrayConcatPolicy,!0)}}),fluid.modelChangedToChange=function(args){return{value:args[0],oldValue:args[1],path:args[2],transaction:args[4]}},fluid.event.invokeListener=function(listener,args,localRecord,mergeRecord){return"string"==typeof listener&&(listener=fluid.event.resolveListener(listener)),listener.apply(null,args,localRecord,mergeRecord)},fluid.resolveModelListener=function(that,record){var togo=function(){if(!fluid.isDestroyed(that)){var change=fluid.modelChangedToChange(arguments),args=arguments,localRecord={change:change,arguments:args},mergeRecord={source:Object.keys(change.transaction.sources)};record.args&&(args=fluid.expandOptions(record.args,that,{},localRecord)),fluid.event.invokeListener(record.listener,fluid.makeArray(args),localRecord,mergeRecord)}};return fluid.event.impersonateListener(record.listener,togo),togo},fluid.registerModelListeners=function(that,record,paths,namespace){var func=fluid.resolveModelListener(that,record);fluid.each(record.byTarget,function(parsedArray){var parsed=parsedArray[0],spec={listener:func,listenerId:fluid.allocateGuid(),segsArray:fluid.getMembers(parsedArray,"modelSegs"),pathArray:fluid.getMembers(parsedArray,"path"),includeSource:record.includeSource,excludeSource:record.excludeSource,priority:fluid.expandOptions(record.priority,that),transactional:!0};(spec=parsed.applier.modelChanged.addListener(spec,func,namespace,record.softNamespace),fluid.recordChangeListener(that,parsed.applier,func,spec.listenerId),that===parsed.that||fluid.isModelComplete(that))||fluid.getForComponent(that,["events","onCreate"]).addListener(function(){if(fluid.isModelComplete(parsed.that)){var trans=parsed.applier.initiate(null,"init");fluid.initModelEvent(that,parsed.applier,trans,[spec]),trans.commit()}})})},fluid.mergeModelListeners=function(that,listeners){fluid.each(listeners,function(value,key){"string"==typeof value&&(value={funcName:value});var records=fluid.event.resolveListenerRecord(value,that,"modelListeners",null,!1).records;fluid.each(records,function(record){record.byTarget={};var paths=fluid.makeArray(void 0===record.path?key:record.path);fluid.each(paths,function(path){var parsed=fluid.parseValidModelReference(that,"modelListeners entry",path);fluid.pushArray(record.byTarget,parsed.that.id,parsed)});var namespace=(record.namespace&&!record.softNamespace?record.namespace:null)||(void 0!==record.path?key:null);fluid.registerModelListeners(that,record,paths,namespace)})})},fluid.fireChanges=function(applier,changes){for(var i=0;i<changes.length;++i)applier.fireChangeRequest(changes[i])},fluid.model.isChangedPath=function(changeMap,segs){for(var i=0;i<=segs.length;++i){if("string"==typeof changeMap)return!0;i<segs.length&&changeMap&&(changeMap=changeMap[segs[i]])}return!1},fluid.model.setChangedPath=function(options,segs,value){var notePath=function(record){segs.unshift(record),fluid.model.setSimple(options,segs,value),segs.shift()};fluid.model.isChangedPath(options.changeMap,segs)||(++options.changes,notePath("changeMap")),fluid.model.isChangedPath(options.deltaMap,segs)||(++options.deltas,notePath("deltaMap"))},fluid.model.fetchChangeChildren=function(target,i,segs,source,options){fluid.each(source,function(value,key){segs[i]=key,fluid.model.applyChangeStrategy(target,key,i,segs,value,options),segs.length=i})},fluid.model.isSameValue=function(a,b){return"number"!=typeof a||"number"!=typeof b?a===b:a===b||a!=a&&b!=b||Math.abs((a-b)/b)<1e-12},fluid.model.applyChangeStrategy=function(target,name,i,segs,source,options){var targetSlot=target[name],sourceCode=fluid.typeCode(source),targetCode=fluid.typeCode(targetSlot),changedValue=fluid.NO_VALUE;"primitive"===sourceCode?fluid.model.isSameValue(targetSlot,source)||(changedValue=source,++options.unchanged):(targetCode!==sourceCode||"array"===sourceCode&&source.length!==targetSlot.length)&&(changedValue=fluid.freshContainer(source)),changedValue!==fluid.NO_VALUE&&(target[name]=changedValue,options.changeMap&&fluid.model.setChangedPath(options,segs,options.inverse?"DELETE":"ADD")),"primitive"!==sourceCode&&fluid.model.fetchChangeChildren(target[name],i+1,segs,source,options)},fluid.model.stepTargetAccess=function(target,type,segs,startpos,endpos,options){for(var i=startpos;i<endpos;++i){if(target)target[segs[i]]!==(target=fluid.model.traverseWithStrategy(target,segs,i,options["ADD"===type?"resolverSetConfig":"resolverGetConfig"],segs.length-i-1))&&options.changeMap&&fluid.model.setChangedPath(options,segs.slice(0,i+1),"ADD")}return{root:target,last:segs[endpos]}},fluid.model.defaultAccessorConfig=function(options){return(options=options||{}).resolverSetConfig=options.resolverSetConfig||fluid.model.escapedSetConfig,options.resolverGetConfig=options.resolverGetConfig||fluid.model.escapedGetConfig,options},fluid.model.applyHolderChangeRequest=function(holder,request,options){(options=fluid.model.defaultAccessorConfig(options)).deltaMap=options.changeMap?{}:null,options.deltas=0;var pen,length=request.segs.length,atRoot=0===length;if(pen=atRoot?{root:holder,last:"model"}:(holder.model||(holder.model={},fluid.model.setChangedPath(options,[],options.inverse?"DELETE":"ADD")),fluid.model.stepTargetAccess(holder.model,request.type,request.segs,0,length-1,options)),"ADD"===request.type){var value=request.value,segs=fluid.makeArray(request.segs);fluid.model.applyChangeStrategy(pen.root,pen.last,length-1,segs,value,options,atRoot)}else"DELETE"===request.type?pen.root&&void 0!==pen.root[pen.last]&&(delete pen.root[pen.last],options.changeMap&&fluid.model.setChangedPath(options,request.segs,"DELETE")):fluid.fail("Unrecognised change type of "+request.type);return options.deltas?options.deltaMap:null},fluid.model.diff=function(modela,modelb,options){options=options||{changes:0,unchanged:0,changeMap:{}};var togo,typea=fluid.typeCode(modela),typeb=fluid.typeCode(modelb);if("primitive"===typea&&"primitive"===typeb)togo=fluid.model.isSameValue(modela,modelb);else if("primitive"===typea^"primitive"===typeb)togo=!1;else{var holdera={model:fluid.copy(modela)};fluid.model.applyHolderChangeRequest(holdera,{value:modelb,segs:[],type:"ADD"},options);var holderb={model:fluid.copy(modelb)};options.inverse=!0,fluid.model.applyHolderChangeRequest(holderb,{value:modela,segs:[],type:"ADD"},options),togo=0===options.changes}return!1===togo&&0===options.changes?(options.changes=1,options.changeMap=void 0===modelb?"DELETE":"ADD"):!0===togo&&0===options.unchanged&&(options.unchanged=1),togo},fluid.outputMatches=function(matches,outSegs,root){fluid.each(root,function(value,key){matches.push(outSegs.concat(key))})},fluid.matchChanges=function(changeMap,specSegs,newHolder,oldHolder){for(var newRoot=newHolder.model,oldRoot=oldHolder.model,map=changeMap,outSegs=["model"],wildcard=!1,togo=[],i=0;i<specSegs.length;++i){var seg=specSegs[i];"*"===seg?i===specSegs.length-1?wildcard=!0:fluid.fail("Wildcard specification in modelChanged listener is only supported for the final path segment: "+specSegs.join(".")):(outSegs.push(seg),map=fluid.isPrimitive(map)?map:map[seg],newRoot=newRoot?newRoot[seg]:void 0,oldRoot=oldRoot?oldRoot[seg]:void 0)}return map&&(wildcard?"DELETE"===map?fluid.outputMatches(togo,outSegs,oldRoot):"ADD"===map?fluid.outputMatches(togo,outSegs,newRoot):fluid.outputMatches(togo,outSegs,map):togo.push(outSegs)),togo},fluid.storeExternalChange=function(transRec,applier,invalidPath,spec,args){var pathString=applier.composeSegments.apply(null,invalidPath),keyString=[applier.holder.id,spec.listenerId,spec.wildcard?pathString:""].join("|");transRec.externalChanges[keyString]={listener:spec.listener,namespace:spec.namespace,priority:spec.priority,args:args}},fluid.notifyModelChanges=function(listeners,changeMap,newHolder,oldHolder,changeRequest,transaction,applier,that){if(listeners)for(var transRec=transaction&&fluid.getModelTransactionRec(that,transaction.id),i=0;i<listeners.length;++i)for(var spec=listeners[i],multiplePaths=1<spec.segsArray.length,j=0;j<spec.segsArray.length;++j)for(var invalidPaths=fluid.matchChanges(changeMap,spec.segsArray[j],newHolder,oldHolder),k=0;k<invalidPaths.length;++k){if(applier.destroyed)return;var invalidPath=invalidPaths[k];spec.listener=fluid.event.resolveListener(spec.listener);var args=[multiplePaths?newHolder.model:fluid.model.getSimple(newHolder,invalidPath),multiplePaths?oldHolder.model:fluid.model.getSimple(oldHolder,invalidPath),multiplePaths?[]:invalidPath.slice(1),changeRequest,transaction,applier];if(!spec.isRelay){if(fluid.model.diff(args[0],args[1]))continue;if(fluid.isExcludedChangeSource(transaction,spec))continue}transRec&&!spec.isRelay&&spec.transactional?fluid.storeExternalChange(transRec,applier,invalidPath,spec,args):spec.listener.apply(null,args)}},fluid.bindELMethods=function(applier){applier.parseEL=function(EL){return fluid.model.pathToSegments(EL,applier.options.resolverSetConfig)},applier.composeSegments=function(){return applier.options.resolverSetConfig.parser.compose.apply(null,arguments)}},fluid.initModelEvent=function(that,applier,trans,listeners){fluid.notifyModelChanges(listeners,"ADD",trans.oldHolder,fluid.emptyHolder,null,trans,applier,that)},fluid.emptyHolder=fluid.freezeRecursive({model:void 0}),fluid.preFireChangeRequest=function(applier,changeRequest){changeRequest.type||(changeRequest.type="ADD"),changeRequest.segs=changeRequest.segs||applier.parseEL(changeRequest.path)},fluid.bindRequestChange=function(that){that.change=function(path,value,type,source){var changeRequest={path:path,value:value,type:type,source:source};that.fireChangeRequest(changeRequest)}},fluid.isObjectSimple=function(totest){return"[object Object]"===Object.prototype.toString.call(totest)},fluid.mergeChangeSources=function(target,globalSources){fluid.isObjectSimple(globalSources)?fluid.extend(target,globalSources):fluid.each(fluid.makeArray(globalSources),function(globalSource){target[globalSource]=!0})},fluid.ChangeApplier=function(){},fluid.makeHolderChangeApplier=function(holder,options){options=fluid.model.defaultAccessorConfig(options);var applierId=fluid.allocateGuid(),that=new fluid.ChangeApplier,name=fluid.isComponent(holder)?"ChangeApplier for component "+fluid.dumpThat(holder):"ChangeApplier with id "+applierId;return $.extend(that,{applierId:applierId,holder:holder,listeners:fluid.makeEventFirer({name:"Internal change listeners for "+name}),transListeners:fluid.makeEventFirer({name:"External change listeners for "+name}),options:options,modelChanged:{},preCommit:fluid.makeEventFirer({name:"preCommit event for "+name}),postCommit:fluid.makeEventFirer({name:"postCommit event for "+name})}),that.destroy=function(){that.preCommit.destroy(),that.postCommit.destroy(),that.destroyed=!0},that.modelChanged.addListener=function(spec,listener,namespace,softNamespace){return(spec="string"==typeof spec?{path:spec}:fluid.copy(spec)).listenerId=spec.listenerId||fluid.allocateGuid(),spec.namespace=namespace,spec.softNamespace=softNamespace,"string"==typeof listener&&(listener={globalName:listener}),spec.listener=listener,!1!==spec.transactional&&(spec.transactional=!0),spec.segsArray||(void 0!==spec.path&&(spec.segs=spec.segs||that.parseEL(spec.path)),spec.segsArray||(spec.segsArray=[spec.segs])),spec.isRelay||(fluid.parseSourceExclusionSpec(spec,spec),spec.wildcard=fluid.accumulate(fluid.transform(spec.segsArray,function(segs){return fluid.contains(segs,"*")}),fluid.add,0),spec.wildcard&&1<spec.segsArray.length&&fluid.fail("Error in model listener specification ",spec," - you may not supply a wildcard pattern as one of a set of multiple paths to be matched")),that[spec.transactional?"transListeners":"listeners"].addListener(spec),spec},that.modelChanged.removeListener=function(listener){that.listeners.removeListener(listener),that.transListeners.removeListener(listener)},that.fireChangeRequest=function(changeRequest){var ation=that.initiate("local",changeRequest.source);ation.fireChangeRequest(changeRequest),ation.commit()},that.initiate=function(localSource,globalSources,transactionId){var defeatPost="relay"===(localSource="init"===globalSources?null:localSource||"local"),trans={instanceId:fluid.allocateGuid(),id:transactionId||fluid.allocateGuid(),changeRecord:{resolverSetConfig:options.resolverSetConfig,resolverGetConfig:options.resolverGetConfig},reset:function(){trans.oldHolder=holder,trans.newHolder={model:fluid.copy(holder.model)},trans.changeRecord.changes=0,trans.changeRecord.unchanged=0,trans.changeRecord.changeMap={}},commit:function(code){if(that.preCommit.fire(trans,that,code),0<trans.changeRecord.changes){var oldHolder={model:holder.model};holder.model=trans.newHolder.model,fluid.notifyModelChanges(that.transListeners.sortedListeners,trans.changeRecord.changeMap,holder,oldHolder,null,trans,that,holder)}defeatPost||that.postCommit.fire(trans,that,code)},fireChangeRequest:function(changeRequest){fluid.preFireChangeRequest(that,changeRequest),changeRequest.transactionId=trans.id;var deltaMap=fluid.model.applyHolderChangeRequest(trans.newHolder,changeRequest,trans.changeRecord);fluid.notifyModelChanges(that.listeners.sortedListeners,deltaMap,trans.newHolder,holder,changeRequest,trans,that,holder)},hasChangeSource:function(source){return trans.fullSources[source]}},transRec=fluid.getModelTransactionRec(holder,trans.id);return transRec&&(fluid.mergeChangeSources(transRec.sources,globalSources),trans.sources=transRec.sources,trans.fullSources=Object.create(transRec.sources),trans.fullSources[localSource]=!0),trans.reset(),fluid.bindRequestChange(trans),trans},fluid.bindRequestChange(that),fluid.bindELMethods(that),that},fluid.modelPairToChanges=function(value,oldValue,changePathPrefix){changePathPrefix=changePathPrefix||"";var diffOptions={changes:0,unchanged:0,changeMap:{}};fluid.model.diff(oldValue,value,diffOptions);var changes=[];return fluid.modelPairToChangesImpl(value,fluid.pathUtil.parseEL(changePathPrefix),diffOptions.changeMap,[],changes),changes},fluid.modelPairToChangesImpl=function(value,changePathPrefixSegs,changeMap,changeSegs,changes){"ADD"===changeMap?changes.push({path:changePathPrefixSegs,value:value,type:"ADD"}):"DELETE"===changeMap?changes.push({path:changePathPrefixSegs,value:null,type:"DELETE"}):fluid.isPlainObject(changeMap,!0)&&fluid.each(changeMap,function(change,seg){var currentChangeSegs=changeSegs.concat([seg]);"ADD"===change?changes.push({path:changePathPrefixSegs.concat(currentChangeSegs),value:fluid.get(value,currentChangeSegs),type:"ADD"}):"DELETE"===change?changes.push({path:changePathPrefixSegs.concat(currentChangeSegs),value:null,type:"DELETE"}):fluid.isPlainObject(change,!0)&&fluid.modelPairToChangesImpl(value,changePathPrefixSegs,change,currentChangeSegs,changes)})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.remoteModelComponent",{gradeNames:["fluid.modelComponent"],events:{afterFetch:null,onFetch:null,onFetchError:null,afterWrite:null,onWrite:null,onWriteError:null},members:{pendingRequests:{write:null,fetch:null}},model:{local:{},remote:{},requestInFlight:!1},modelListeners:{requestInFlight:{listener:"fluid.remoteModelComponent.launchPendingRequest",args:["{that}"]}},listeners:{"afterFetch.updateModel":{listener:"fluid.remoteModelComponent.updateModelFromFetch",args:["{that}","{arguments}.0"],priority:"before:unblock"},"afterFetch.unblock":{listener:"fluid.remoteModelComponent.unblockFetchReq",args:["{that}"]},"onFetchError.unblock":{listener:"fluid.remoteModelComponent.unblockFetchReq",args:["{that}"]},"afterWrite.updateRemoteModel":{listener:"fluid.remoteModelComponent.updateRemoteFromLocal",args:["{that}"]},"afterWrite.unblock":{changePath:"requestInFlight",value:!1,priority:"after:updateRemoteModel"},"onWriteError.unblock":{changePath:"requestInFlight",value:!1}},invokers:{fetch:{funcName:"fluid.remoteModelComponent.fetch",args:["{that}"]},fetchImpl:"fluid.notImplemented",write:{funcName:"fluid.remoteModelComponent.write",args:["{that}"]},writeImpl:"fluid.notImplemented"}}),fluid.remoteModelComponent.launchPendingRequest=function(that){that.model.requestInFlight||(that.pendingRequests.fetch?that.fetch():that.pendingRequests.write&&that.write())},fluid.remoteModelComponent.updateModelFromFetch=function(that,fetchedModel){var remoteChanges=fluid.modelPairToChanges(fetchedModel,that.model.remote,"local"),localChanges=fluid.modelPairToChanges(that.model.local,that.model.remote,"local"),changes=remoteChanges.concat(localChanges),transaction=that.applier.initiate();transaction.fireChangeRequest({path:"local",type:"DELETE"}),transaction.change("local",that.model.remote),transaction.fireChangeRequest({path:"remote",type:"DELETE"}),transaction.change("remote",fetchedModel),fluid.fireChanges(transaction,changes),transaction.commit()},fluid.remoteModelComponent.updateRemoteFromLocal=function(that){var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"remote",type:"DELETE"}),transaction.change("remote",that.model.local),transaction.commit()},fluid.remoteModelComponent.makeSequenceStrategy=function(payload){return{invokeNext:function(that){var lisrec=that.sources[that.index];return lisrec.listener=fluid.event.resolveListener(lisrec.listener),lisrec.listener.apply(null,[payload,that.options])},resolveResult:function(){return payload}}},fluid.remoteModelComponent.makeSequence=function(listeners,payload,options){var sequencer=fluid.promise.makeSequencer(listeners,options,fluid.remoteModelComponent.makeSequenceStrategy(payload));return fluid.promise.resumeSequence(sequencer),sequencer},fluid.remoteModelComponent.fireEventSequence=function(event,payload,options){var listeners=fluid.makeArray(event.sortedListeners);return fluid.remoteModelComponent.makeSequence(listeners,payload,options).promise},fluid.remoteModelComponent.fetch=function(that){var activePromise,promise=fluid.promise();(that.pendingRequests.fetch?(activePromise=that.pendingRequests.fetch,fluid.promise.follow(activePromise,promise)):(activePromise=promise,that.pendingRequests.fetch=promise),that.model.requestInFlight)||fluid.remoteModelComponent.fireEventSequence(that.events.onFetch).then(function(){that.applier.change("requestInFlight",!0),that.fetchImpl().then(function(data){var afterFetchSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterFetch,data);fluid.promise.follow(afterFetchSeqPromise,activePromise)},that.events.onFetchError.fire)},that.events.onFetchError.fire);return promise},fluid.remoteModelComponent.unblockFetchReq=function(that){that.pendingRequests.fetch=null,that.applier.change("requestInFlight",!1)},fluid.remoteModelComponent.write=function(that){var activePromise,promise=fluid.promise();(that.pendingRequests.write?(activePromise=that.pendingRequests.write,fluid.promise.follow(that.pendingRequests.write,promise)):activePromise=promise,that.model.requestInFlight)?that.pendingRequests.write=activePromise:fluid.remoteModelComponent.fireEventSequence(that.events.onWrite).then(function(){if(that.applier.change("requestInFlight",!0),that.pendingRequests.write=null,fluid.model.diff(that.model.local,that.model.remote)){var afterWriteSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterWrite,that.model.local);fluid.promise.follow(afterWriteSeqPromise,activePromise)}else{that.writeImpl(that.model.local).then(function(data){var afterWriteSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterWrite,data);fluid.promise.follow(afterWriteSeqPromise,activePromise)},that.events.onWriteError.fire)}},that.events.onWriteError.fire);return promise}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.model.transform"),fluid.defaults("fluid.transformFunction",{gradeNames:"fluid.function"}),fluid.defaults("fluid.standardInputTransformFunction",{gradeNames:"fluid.transformFunction"}),fluid.defaults("fluid.standardOutputTransformFunction",{gradeNames:"fluid.transformFunction"}),fluid.defaults("fluid.multiInputTransformFunction",{gradeNames:"fluid.transformFunction"}),fluid.defaults("fluid.standardTransformFunction",{gradeNames:["fluid.standardInputTransformFunction","fluid.standardOutputTransformFunction"]}),fluid.defaults("fluid.lens",{gradeNames:"fluid.transformFunction",invertConfiguration:null}),fluid.model.transform.pathToRule=function(inputPath){return{transform:{type:"fluid.transforms.value",inputPath:inputPath}}},fluid.model.transform.literalValueToRule=function(input){return{transform:{type:"fluid.transforms.literalValue",input:input}}},fluid.model.composePaths=function(prefix,suffix){return suffix=0===suffix?"0":suffix||"",(prefix=0===prefix?"0":prefix||"")?suffix?prefix+"."+suffix:prefix:suffix},fluid.model.transform.accumulateInputPath=function(inputPath,transformer,paths){void 0!==inputPath&&paths.push(fluid.model.composePaths(transformer.inputPrefix,inputPath))},fluid.model.transform.accumulateStandardInputPath=function(input,transformSpec,transformer,paths){fluid.model.transform.getValue(void 0,transformSpec[input],transformer),fluid.model.transform.accumulateInputPath(transformSpec[input+"Path"],transformer,paths)},fluid.model.transform.accumulateMultiInputPaths=function(inputVariables,transformSpec,transformer,paths){fluid.each(inputVariables,function(v,k){fluid.model.transform.accumulateStandardInputPath(k,transformSpec,transformer,paths)})},fluid.model.transform.getValue=function(inputPath,value,transformer){var togo;return void 0!==inputPath&&(togo=fluid.get(transformer.source,fluid.model.composePaths(transformer.inputPrefix,inputPath),transformer.resolverGetConfig)),void 0===togo&&(togo=fluid.isPrimitive(value)?value:"literalValue"in value?value.literalValue:void 0===value.transform?value:transformer.expand(value)),togo},fluid.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN={},fluid.model.transform.setValue=function(userOutputPath,value,transformer){var toset=fluid.copy(value),outputPath=fluid.model.composePaths(transformer.outputPrefix,userOutputPath);return void 0!==toset&&transformer.applier.change(outputPath,toset),userOutputPath?fluid.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN:toset},fluid.model.transform.resolveParam=function(transformSpec,transformer,key,def){var val=fluid.model.transform.getValue(transformSpec[key+"Path"],transformSpec[key],transformer);return void 0!==val?val:def},fluid.model.transform.matchValue=function(expected,actual,partialMatches){var stats={changes:0,unchanged:0,changeMap:{}};return fluid.model.diff(expected,actual,stats),0===stats.unchanged?0:partialMatches?0xffffff000000-16777216*stats.changes+stats.unchanged:stats.changes?0:0xffffff000000+stats.unchanged},fluid.model.transform.invertPaths=function(transformSpec,transformer){var oldOutput=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath);return transformSpec.outputPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.inputPath),transformSpec.inputPath=oldOutput,transformSpec},fluid.model.transform.prefixApplier=function(transformSpec,transformer){transformSpec.inputPrefix&&transformer.inputPrefixOp.push(transformSpec.inputPrefix),transformSpec.outputPrefix&&transformer.outputPrefixOp.push(transformSpec.outputPrefix),transformer.expand(transformSpec.input),transformSpec.inputPrefix&&transformer.inputPrefixOp.pop(),transformSpec.outputPrefix&&transformer.outputPrefixOp.pop()},fluid.defaults("fluid.model.transform.prefixApplier",{gradeNames:["fluid.transformFunction"]}),fluid.model.makePathStack=function(transform,prefixName){var stack=transform[prefixName+"Stack"]=[];return transform[prefixName]="",{push:function(prefix){var newPath=fluid.model.composePaths(transform[prefixName],prefix);stack.push(transform[prefixName]),transform[prefixName]=newPath},pop:function(){transform[prefixName]=stack.pop()}}},fluid.model.transform.doTransform=function(transformSpec,transformer,transformOpts){var expdef=transformOpts.defaults,transformFn=fluid.getGlobalValue(transformOpts.typeName);"function"!=typeof transformFn&&fluid.fail("Transformation record specifies transformation function with name "+transformSpec.type+" which is not a function - ",transformFn),fluid.hasGrade(expdef,"fluid.transformFunction")||(expdef=fluid.defaults("fluid.standardTransformFunction"));var transformArgs=[transformSpec,transformer];if(fluid.hasGrade(expdef,"fluid.multiInputTransformFunction")){var inputs={};fluid.each(expdef.inputVariables,function(v,k){inputs[k]=function(){var input=fluid.model.transform.getValue(transformSpec[k+"Path"],transformSpec[k],transformer);return input=void 0===input&&null!==v?v:input}}),transformArgs.unshift(inputs)}if(fluid.hasGrade(expdef,"fluid.standardInputTransformFunction")){"input"in transformSpec||"inputPath"in transformSpec||fluid.fail('Error in transform specification. Either "input" or "inputPath" must be specified for a standardInputTransformFunction: received ',transformSpec);var expanded=fluid.model.transform.getValue(transformSpec.inputPath,transformSpec.input,transformer);if(transformArgs.unshift(expanded),void 0===expanded)return}var transformed=transformFn.apply(null,transformArgs);fluid.hasGrade(expdef,"fluid.standardOutputTransformFunction")&&(void 0!==(void 0!==transformSpec.outputPath?transformSpec.outputPath:transformOpts.doOutput?"":void 0)&&void 0!==transformed&&(fluid.model.transform.setValue(transformSpec.outputPath,transformed,transformer),transformed=void 0));return transformed};var globalAccept=[];fluid.registerNamespace("fluid.pathUtil"),fluid.pathUtil.getPathSegment=function(path,i){return fluid.pathUtil.getPathSegmentImpl(globalAccept,path,i),globalAccept[0]},fluid.pathUtil.getHeadPath=function(path){return fluid.pathUtil.getPathSegment(path,0)},fluid.pathUtil.getFromHeadPath=function(path){var firstdot=fluid.pathUtil.getPathSegmentImpl(null,path,0);return firstdot===path.length?"":path.substring(firstdot+1)},fluid.pathUtil.matchPath=function(spec,path,exact){for(var togo=[];;){if(""===path^""===spec&&exact)return null;if(!spec||!path)break;var spechead=fluid.pathUtil.getHeadPath(spec),pathhead=fluid.pathUtil.getHeadPath(path);if("*"!==spechead&&spechead!==pathhead)return null;togo.push(pathhead),spec=fluid.pathUtil.getFromHeadPath(spec),path=fluid.pathUtil.getFromHeadPath(path)}return togo},fluid.model.transform.expandWildcards=function(transformer,source){fluid.each(source,function(value,key){var q=transformer.queuedTransforms;transformer.pathOp.push(fluid.pathUtil.escapeSegment(key.toString()));for(var i=0;i<q.length;++i)if(fluid.pathUtil.matchPath(q[i].matchPath,transformer.path,!0)){var esCopy=fluid.copy(q[i].transformSpec);(void 0===esCopy.inputPath||fluid.model.transform.hasWildcard(esCopy.inputPath))&&(esCopy.inputPath=""),transformer.inputPrefixOp.push(transformer.path),transformer.outputPrefixOp.push(transformer.path);var transformOpts=fluid.model.transform.lookupType(esCopy.type),result=fluid.model.transform.doTransform(esCopy,transformer,transformOpts);void 0!==result&&fluid.model.transform.setValue(null,result,transformer),transformer.outputPrefixOp.pop(),transformer.inputPrefixOp.pop()}fluid.isPrimitive(value)||fluid.model.transform.expandWildcards(transformer,value),transformer.pathOp.pop()})},fluid.model.transform.hasWildcard=function(path){return"string"==typeof path&&-1!==path.indexOf("*")},fluid.model.transform.maybePushWildcard=function(transformSpec,transformer){var matchPath,hw=fluid.model.transform.hasWildcard;return hw(transformSpec.inputPath)?matchPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.inputPath):(hw(transformer.outputPrefix)||hw(transformSpec.outputPath))&&(matchPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath)),!!matchPath&&(transformer.queuedTransforms.push({transformSpec:transformSpec,outputPrefix:transformer.outputPrefix,inputPrefix:transformer.inputPrefix,matchPath:matchPath}),!0)},fluid.model.sortByKeyLength=function(inObject){return fluid.keys(inObject).sort(fluid.compareStringLength(!0))},fluid.model.transform.handleTransformStrategy=function(transformSpec,transformer,transformOpts){return fluid.model.transform.maybePushWildcard(transformSpec,transformer)?void 0:fluid.model.transform.doTransform(transformSpec,transformer,transformOpts)},fluid.model.transform.handleInvertStrategy=function(transformSpec,transformer,transformOpts){transformSpec=fluid.copy(transformSpec),fluid.hasGrade(transformOpts.defaults,"fluid.standardTransformFunction")&&(transformSpec=fluid.model.transform.invertPaths(transformSpec,transformer));var invertor=transformOpts.defaults&&transformOpts.defaults.invertConfiguration;if(invertor){var inverted=fluid.invokeGlobalFunction(invertor,[transformSpec,transformer]);transformer.inverted.push(inverted)}else transformer.inverted.push(fluid.model.transform.uninvertibleTransform)},fluid.model.transform.handleCollectStrategy=function(transformSpec,transformer,transformOpts){var defaults=transformOpts.defaults,standardInput=fluid.hasGrade(defaults,"fluid.standardInputTransformFunction"),multiInput=fluid.hasGrade(defaults,"fluid.multiInputTransformFunction");standardInput&&fluid.model.transform.accumulateStandardInputPath("input",transformSpec,transformer,transformer.inputPaths),multiInput&&fluid.model.transform.accumulateMultiInputPaths(defaults.inputVariables,transformSpec,transformer,transformer.inputPaths);var collector=defaults.collectInputPaths;if(collector){var collected=fluid.makeArray(fluid.invokeGlobalFunction(collector,[transformSpec,transformer]));Array.prototype.push.apply(transformer.inputPaths,collected)}},fluid.model.transform.lookupType=function(typeName,transformSpec){return typeName||fluid.fail("Transformation record is missing a type name: ",transformSpec),-1===typeName.indexOf(".")&&(typeName="fluid.transforms."+typeName),{defaults:fluid.defaults(typeName),typeName:typeName}},fluid.model.transform.processRule=function(rule,transformer){var togo,transformSpec,transformOpts;if("string"==typeof rule?rule=fluid.model.transform.pathToRule(rule):void 0!==rule.literalValue&&(rule=fluid.model.transform.literalValueToRule(rule.literalValue)),rule.transform)if(fluid.isArrayable(rule.transform)){var transforms=rule.transform;togo=void 0;for(var i=0;i<transforms.length;++i)transformSpec=transforms[i],transformOpts=fluid.model.transform.lookupType(transformSpec.type),transformer.transformHandler(transformSpec,transformer,transformOpts)}else transformSpec=rule.transform,transformOpts=fluid.model.transform.lookupType(transformSpec.type),togo=transformer.transformHandler(transformSpec,transformer,transformOpts);return fluid.isArrayable(rule)&&(transformer.collectedFlatSchemaOpts=transformer.collectedFlatSchemaOpts||{},transformer.collectedFlatSchemaOpts[transformer.outputPrefix]="array"),fluid.each(rule,function(value,key){if("transform"!==key){transformer.outputPrefixOp.push(key);var togo=transformer.expand(value,transformer);void 0!==togo&&(fluid.model.transform.setValue(null,togo,transformer),togo=void 0),transformer.outputPrefixOp.pop()}}),togo},fluid.model.transform.makeStrategy=function(transformer,handleFn,transformFn){transformFn=transformFn||fluid.model.transform.processRule,transformer.expand=function(rules){return transformFn(rules,transformer)},transformer.outputPrefixOp=fluid.model.makePathStack(transformer,"outputPrefix"),transformer.inputPrefixOp=fluid.model.makePathStack(transformer,"inputPrefix"),transformer.transformHandler=handleFn},fluid.model.transform.uninvertibleTransform=Object.freeze({}),fluid.model.transform.invertConfiguration=function(rules){var transformer={inverted:[]};return fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleInvertStrategy),transformer.expand(rules),-1===transformer.inverted.indexOf(fluid.model.transform.uninvertibleTransform)?{transform:transformer.inverted}:fluid.model.transform.uninvertibleTransform},fluid.model.transform.collectInputPaths=function(rules){var transformer={inputPaths:[]};fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleCollectStrategy),transformer.expand(rules);var inputPathHash=fluid.arrayToHash(transformer.inputPaths);return Object.keys(inputPathHash)},fluid.model.transform.flatSchemaStrategy=function(flatSchema,getConfig){var keys=fluid.model.sortByKeyLength(flatSchema);return function(root,segment,index,segs){for(var path=getConfig.parser.compose.apply(null,segs.slice(0,index)),i=0;i<keys.length;++i){var key=keys[i];if(null!==fluid.pathUtil.matchPath(key,path,!0))return flatSchema[key]}}},fluid.model.transform.defaultSchemaValue=function(schemaValue){return"array"===(fluid.isPrimitive(schemaValue)?schemaValue:schemaValue.type)?[]:{}},fluid.model.transform.isomorphicSchemaStrategy=function(source,getConfig){return function(root,segment,index,segs){var existing=fluid.get(source,segs.slice(0,index),getConfig);return fluid.isArrayable(existing)?"array":"object"}},fluid.model.transform.decodeStrategy=function(source,options,getConfig){return options.isomorphic?fluid.model.transform.isomorphicSchemaStrategy(source,getConfig):options.flatSchema?fluid.model.transform.flatSchemaStrategy(options.flatSchema,getConfig):void 0},fluid.model.transform.schemaToCreatorStrategy=function(strategy){return function(root,segment,index,segs){if(void 0===root[segment]){var schemaValue=strategy(root,segment,index,segs);return root[segment]=fluid.model.transform.defaultSchemaValue(schemaValue),root[segment]}}},fluid.model.transform.sequence=function(source,rules,options){for(var i=0;i<rules.length;++i)source=fluid.model.transform(source,rules[i],options);return source},fluid.model.compareByPathLength=function(changea,changeb){var pdiff=changea.path.length-changeb.path.length;return 0===pdiff?changea.sequence-changeb.sequence:pdiff},fluid.model.fireSortedChanges=function(changes,applier){changes.sort(fluid.model.compareByPathLength),fluid.fireChanges(applier,changes)},fluid.model.transformWithRules=function(source,rules,options){options=options||{};var getConfig=fluid.model.escapedGetConfig,setConfig=fluid.model.escapedSetConfig,schemaStrategy=fluid.model.transform.decodeStrategy(source,options,getConfig),transformer={source:source,target:{model:schemaStrategy?fluid.model.transform.defaultSchemaValue(schemaStrategy(null,"",0,[""])):{}},resolverGetConfig:getConfig,resolverSetConfig:setConfig,collectedFlatSchemaOpts:void 0,queuedChanges:[],queuedTransforms:[]};fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleTransformStrategy),transformer.applier={fireChangeRequest:function(changeRequest){changeRequest.sequence=transformer.queuedChanges.length,transformer.queuedChanges.push(changeRequest)}},fluid.bindRequestChange(transformer.applier),transformer.expand(rules);var rootSetConfig=fluid.copy(setConfig);return void 0!==transformer.collectedFlatSchemaOpts&&($.extend(transformer.collectedFlatSchemaOpts,options.flatSchema),schemaStrategy=fluid.model.transform.flatSchemaStrategy(transformer.collectedFlatSchemaOpts,getConfig)),rootSetConfig.strategies=[fluid.model.defaultFetchStrategy,schemaStrategy?fluid.model.transform.schemaToCreatorStrategy(schemaStrategy):fluid.model.defaultCreatorStrategy],transformer.finalApplier=options.finalApplier||fluid.makeHolderChangeApplier(transformer.target,{resolverSetConfig:rootSetConfig}),0<transformer.queuedTransforms.length&&(transformer.typeStack=[],transformer.pathOp=fluid.model.makePathStack(transformer,"path"),fluid.model.transform.expandWildcards(transformer,source)),fluid.model.fireSortedChanges(transformer.queuedChanges,transformer.finalApplier),transformer.target.model},$.extend(fluid.model.transformWithRules,fluid.model.transform),fluid.model.transform=fluid.model.transformWithRules,fluid.transformOne=function(rules){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:rules}}},fluid.transformMany=function(rules){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:rules}}}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.model.transform"),fluid.registerNamespace("fluid.transforms"),fluid.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.identity"}),fluid.transforms.value=fluid.identity,fluid.transforms.identity=fluid.transforms.value,fluid.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"}),fluid.transforms.invertToIdentity=function(transformSpec){return transformSpec.type="fluid.transforms.identity",transformSpec},fluid.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"}),fluid.transforms.literalValue=function(transformSpec){return transformSpec.input},fluid.defaults("fluid.transforms.stringToNumber",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToNumber.invert"}),fluid.transforms.stringToNumber=function(value){var newValue=Number(value);return isNaN(newValue)?void 0:newValue},fluid.transforms.stringToNumber.invert=function(transformSpec){return transformSpec.type="fluid.transforms.numberToString",transformSpec},fluid.defaults("fluid.transforms.numberToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.numberToString.invert"}),fluid.transforms.numberToString=function(value,transformSpec){if("number"==typeof value)return"number"!=typeof transformSpec.scale||isNaN(transformSpec.scale)?value.toString():fluid.roundToDecimal(value,transformSpec.scale,transformSpec.method).toString()},fluid.transforms.numberToString.invert=function(transformSpec){return transformSpec.type="fluid.transforms.stringToNumber",transformSpec},fluid.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"}),fluid.transforms.count=function(value){return fluid.makeArray(value).length},fluid.defaults("fluid.transforms.round",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.invertToIdentity"}),fluid.transforms.round=function(value,transformSpec){return fluid.roundToDecimal(value,transformSpec.scale,transformSpec.method)},fluid.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"}),fluid.transforms.delete=function(transformSpec,transformer){var outputPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath);transformer.applier.change(outputPath,null,"DELETE")},fluid.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.standardOutputTransformFunction"}),fluid.transforms.firstValue=function(transformSpec,transformer){transformSpec.values&&transformSpec.values.length||fluid.fail('firstValue transformer requires an array of values at path named "values", supplied',transformSpec);for(var i=0;i<transformSpec.values.length;i++){var value=transformSpec.values[i],expanded=transformer.expand(value);if(void 0!==expanded)return expanded}},fluid.defaults("fluid.transforms.linearScale",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.linearScale.invert",inputVariables:{factor:1,offset:0}}),fluid.transforms.linearScale=function(input,extraInputs){var factor=extraInputs.factor(),offset=extraInputs.offset();if("number"==typeof input&&"number"==typeof factor&&"number"==typeof offset)return input*factor+offset},fluid.transforms.linearScale.invert=function(transformSpec){return delete transformSpec.factorPath,delete transformSpec.offsetPath,void 0!==transformSpec.factor&&(transformSpec.factor=0===transformSpec.factor?0:1/transformSpec.factor),void 0!==transformSpec.offset&&(transformSpec.offset=-transformSpec.offset*(void 0!==transformSpec.factor?transformSpec.factor:1)),transformSpec},fluid.defaults("fluid.transforms.binaryOp",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{left:null,right:null}}),fluid.transforms.binaryLookup={"===":function(a,b){return fluid.model.isSameValue(a,b)},"!==":function(a,b){return!fluid.model.isSameValue(a,b)},"<=":function(a,b){return a<=b},"<":function(a,b){return a<b},">=":function(a,b){return b<=a},">":function(a,b){return b<a},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}},fluid.transforms.binaryOp=function(inputs,transformSpec,transformer){var left=inputs.left(),right=inputs.right(),operator=fluid.model.transform.getValue(void 0,transformSpec.operator,transformer),fun=fluid.transforms.binaryLookup[operator];return void 0===fun||void 0===left||void 0===right?void 0:fun(left,right)},fluid.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{true:null,false:null,condition:null}}),fluid.transforms.condition=function(inputs){var condition=inputs.condition();if(null!==condition)return inputs[condition?"true":"false"]()},fluid.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"}),fluid.model.transform.compareMatches=function(speca,specb){var matchDiff=specb.matchValue-speca.matchValue;return 0===matchDiff?speca.index-specb.index:matchDiff},fluid.transforms.valueMapper=function(transformSpec,transformer){transformSpec.match||fluid.fail('valueMapper requires an array or hash of matches at path named "match", supplied ',transformSpec);var value=fluid.model.transform.getValue(transformSpec.defaultInputPath,transformSpec.defaultInput,transformer),matchedEntry=fluid.isArrayable(transformSpec.match)?fluid.transforms.valueMapper.longFormMatch(value,transformSpec,transformer):transformSpec.match[value];if(void 0===matchedEntry&&(matchedEntry=transformSpec.noMatch),void 0!==matchedEntry){var outputValue,outputPath=void 0===matchedEntry.outputPath?transformSpec.defaultOutputPath:matchedEntry.outputPath;return transformer.outputPrefixOp.push(outputPath),outputValue=fluid.isPrimitive(matchedEntry)?matchedEntry:matchedEntry.outputUndefinedValue?void 0:void 0===(outputValue=fluid.model.transform.resolveParam(matchedEntry,transformer,"outputValue",void 0))?transformSpec.defaultOutputValue:outputValue,"string"==typeof outputPath&&void 0!==outputValue&&(fluid.model.transform.setValue(void 0,outputValue,transformer,transformSpec.merge),outputValue=void 0),transformer.outputPrefixOp.pop(),outputValue}},fluid.transforms.valueMapper.longFormMatch=function(valueFromDefaultPath,transformSpec,transformer){var o=transformSpec.match;0===o.length&&fluid.fail("valueMapper supplied empty list of matches: ",transformSpec);for(var matchPower=[],i=0;i<o.length;++i){var option=o[i],value=option.inputPath?fluid.model.transform.getValue(option.inputPath,void 0,transformer):valueFromDefaultPath,matchValue=fluid.model.transform.matchValue(option.inputValue,value,option.partialMatches);matchPower[i]={index:i,matchValue:matchValue}}return matchPower.sort(fluid.model.transform.compareMatches),matchPower[0].matchValue<=0?void 0:o[matchPower[0].index]},fluid.transforms.valueMapper.invert=function(transformSpec,transformer){var match=[],togo={type:"fluid.transforms.valueMapper",match:match},isArray=fluid.isArrayable(transformSpec.match);togo.defaultInputPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.defaultOutputPath),togo.defaultOutputPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.defaultInputPath);var def=fluid.firstDefined;return fluid.each(transformSpec.match,function(option,key){if(!0!==option.outputUndefinedValue){var outOption={},origInputValue=def(isArray?option.inputValue:key,transformSpec.defaultInputValue);void 0===origInputValue&&fluid.fail("Failure inverting configuration for valueMapper - inputValue could not be resolved for record "+key+": ",transformSpec),outOption.outputValue=origInputValue,outOption.inputValue=!isArray&&fluid.isPrimitive(option)?option:def(option.outputValue,transformSpec.defaultOutputValue),option.outputPath&&(outOption.inputPath=fluid.model.composePaths(transformer.outputPrefix,def(option.outputPath,transformSpec.outputPath))),option.inputPath&&(outOption.outputPath=fluid.model.composePaths(transformer.inputPrefix,def(option.inputPath,transformSpec.inputPath))),match.push(outOption)}}),togo},fluid.transforms.valueMapper.collect=function(transformSpec,transformer){var togo=[];return fluid.model.transform.accumulateStandardInputPath("defaultInput",transformSpec,transformer,togo),fluid.each(transformSpec.match,function(option){fluid.model.transform.accumulateInputPath(option.inputPath,transformer,togo)}),togo},fluid.defaults("fluid.transforms.arrayToSetMembership",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToSetMembership.invert"}),fluid.transforms.arrayToSetMembership=function(value,transformSpec,transformer){var output={},options=transformSpec.options;return value&&fluid.isArrayable(value)||fluid.fail("arrayToSetMembership didn't find array at inputPath nor passed as value.",transformSpec),options||fluid.fail("arrayToSetMembership requires an options block set"),void 0===transformSpec.presentValue&&(transformSpec.presentValue=!0),void 0===transformSpec.missingValue&&(transformSpec.missingValue=!1),fluid.each(options,function(outPath,key){var outVal=-1!==value.indexOf(key)?transformSpec.presentValue:transformSpec.missingValue;fluid.set(output,outPath,outVal,transformer.resolverSetConfig)}),output},fluid.transforms.arrayToSetMembership.invertWithType=function(transformSpec,transformer,newType){transformSpec.type=newType;var newOptions={};return fluid.each(transformSpec.options,function(path,oldKey){newOptions[path]=oldKey}),transformSpec.options=newOptions,transformSpec},fluid.transforms.arrayToSetMembership.invert=function(transformSpec,transformer){return fluid.transforms.arrayToSetMembership.invertWithType(transformSpec,transformer,"fluid.transforms.setMembershipToArray")},fluid.defaults("fluid.transforms.setMembershipToArray",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.setMembershipToArray.invert"}),fluid.transforms.setMembershipToArray=function(input,transformSpec,transformer){var options=transformSpec.options;options||fluid.fail("setMembershipToArray requires an options block specified"),void 0===transformSpec.presentValue&&(transformSpec.presentValue=!0),void 0===transformSpec.missingValue&&(transformSpec.missingValue=!1);var outputArr=[];return fluid.each(options,function(outputVal,key){fluid.get(input,key,transformer.resolverGetConfig)===transformSpec.presentValue&&outputArr.push(outputVal)}),outputArr},fluid.transforms.setMembershipToArray.invert=function(transformSpec,transformer){return fluid.transforms.arrayToSetMembership.invertWithType(transformSpec,transformer,"fluid.transforms.arrayToSetMembership")},fluid.model.transform.applyPaths=function(operation,pathOp,paths){for(var i=0;i<paths.length;++i)"push"===operation?pathOp.push(paths[i]):pathOp.pop()},fluid.model.transform.expandInnerValues=function(inputPath,outputPath,transformer,innerValues){var inputPrefixOp=transformer.inputPrefixOp,outputPrefixOp=transformer.outputPrefixOp,apply=fluid.model.transform.applyPaths;apply("push",inputPrefixOp,inputPath),apply("push",outputPrefixOp,outputPath);var expanded={};return fluid.each(innerValues,function(innerValue){var expandedInner=transformer.expand(innerValue);fluid.isPrimitive(expandedInner)?expanded=expandedInner:$.extend(!0,expanded,expandedInner)}),apply("pop",outputPrefixOp,outputPath),apply("pop",inputPrefixOp,inputPath),expanded},fluid.defaults("fluid.transforms.indexArrayByKey",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.indexArrayByKey.invert"}),fluid.transforms.indexArrayByKey=function(arr,transformSpec,transformer){void 0===transformSpec.key&&fluid.fail("indexArrayByKey requires a 'key' option.",transformSpec),fluid.isArrayable(arr)||fluid.fail("indexArrayByKey didn't find array at inputPath.",transformSpec);var newHash={},pivot=transformSpec.key;return fluid.each(arr,function(v,k){var newKey=v[pivot],keyType=typeof newKey;"string"!==keyType&&"boolean"!==keyType&&"number"!==keyType&&fluid.fail("indexArrayByKey encountered untransformable array due to missing or invalid key",v);var content=fluid.copy(v);delete content[pivot],transformSpec.innerValue&&(content=fluid.model.transform.expandInnerValues([transformer.inputPrefix,transformSpec.inputPath,k.toString()],[transformSpec.outputPath,newKey],transformer,transformSpec.innerValue)),newHash[newKey]=content}),newHash},fluid.transforms.indexArrayByKey.invert=function(transformSpec){if(transformSpec.type="fluid.transforms.deindexIntoArrayByKey",transformSpec.innerValue)for(var innerValue=transformSpec.innerValue,i=0;i<innerValue.length;++i){var inverted=fluid.model.transform.invertConfiguration(innerValue[i]);if(inverted===fluid.model.transform.uninvertibleTransform)return inverted;innerValue[i]=inverted}return transformSpec},fluid.defaults("fluid.transforms.deindexIntoArrayByKey",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.deindexIntoArrayByKey.invert"}),fluid.transforms.deindexIntoArrayByKey=function(hash,transformSpec,transformer){void 0===transformSpec.key&&fluid.fail('deindexIntoArrayByKey requires a "key" option.',transformSpec);var newArray=[],pivot=transformSpec.key;return fluid.each(hash,function(v,k){var content={};content[pivot]=k,transformSpec.innerValue&&(v=fluid.model.transform.expandInnerValues([transformSpec.inputPath,k],[transformSpec.outputPath,newArray.length.toString()],transformer,transformSpec.innerValue)),$.extend(!0,content,v),newArray.push(content)}),newArray},fluid.transforms.deindexIntoArrayByKey.invert=function(transformSpec){if(transformSpec.type="fluid.transforms.indexArrayByKey",transformSpec.innerValue)for(var innerValue=transformSpec.innerValue,i=0;i<innerValue.length;++i)innerValue[i]=fluid.model.transform.invertConfiguration(innerValue[i]);return transformSpec},fluid.defaults("fluid.transforms.limitRange",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.invertToIdentity"}),fluid.transforms.limitRange=function(value,transformSpec){var min=transformSpec.min;void 0!==min&&(value<(min+=transformSpec.excludeMin||0)&&(value=min));var max=transformSpec.max;void 0!==max&&((max-=transformSpec.excludeMax||0)<value&&(value=max));return value},fluid.defaults("fluid.transforms.indexOf",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.indexOf.invert"}),fluid.transforms.indexOf=function(value,transformSpec){"number"==typeof transformSpec.notFound&&0<=transformSpec.notFound&&fluid.fail("A positive number is not allowed as 'notFound' value for indexOf");var offset=fluid.transforms.parseIndexationOffset(transformSpec.offset,"indexOf"),originalIndex=fluid.makeArray(transformSpec.array).indexOf(value);return-1===originalIndex&&transformSpec.notFound?transformSpec.notFound:originalIndex+offset},fluid.transforms.indexOf.invert=function(transformSpec,transformer){var togo=fluid.transforms.invertArrayIndexation(transformSpec,transformer);return togo.type="fluid.transforms.dereference",togo},fluid.defaults("fluid.transforms.dereference",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dereference.invert"}),fluid.transforms.dereference=function(value,transformSpec){if("number"==typeof value){var offset=fluid.transforms.parseIndexationOffset(transformSpec.offset,"dereference");return fluid.makeArray(transformSpec.array)[value+offset]}},fluid.transforms.dereference.invert=function(transformSpec,transformer){var togo=fluid.transforms.invertArrayIndexation(transformSpec,transformer);return togo.type="fluid.transforms.indexOf",togo},fluid.transforms.parseIndexationOffset=function(offset,transformName){var parsedOffset=0;return void 0!==offset&&(parsedOffset=fluid.parseInteger(offset),isNaN(parsedOffset)&&fluid.fail(transformName+' requires the value of "offset" to be an integer or a string that can be converted to an integer. '+offset+" is invalid.")),parsedOffset},fluid.transforms.invertArrayIndexation=function(transformSpec){return isNaN(Number(transformSpec.offset))||(transformSpec.offset=-1*Number(transformSpec.offset)),transformSpec},fluid.defaults("fluid.transforms.stringTemplate",{gradeNames:"fluid.standardOutputTransformFunction"}),fluid.transforms.stringTemplate=function(transformSpec){return fluid.stringTemplate(transformSpec.template,transformSpec.terms)},fluid.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"}),fluid.transforms.free=function(transformSpec){var args=fluid.makeArray(transformSpec.args);return fluid.invokeGlobalFunction(transformSpec.func,args)},fluid.defaults("fluid.transforms.quantize",{gradeNames:"fluid.standardTransformFunction",collectInputPaths:"fluid.transforms.quantize.collect"}),fluid.transforms.quantize=function(value,transformSpec,transformer){transformSpec.ranges&&transformSpec.ranges.length||fluid.fail("fluid.transforms.quantize should have a key called ranges containing an array defining ranges to quantize");for(var i=0;i<transformSpec.ranges.length;i++){var rangeSpec=transformSpec.ranges[i];if(value<=rangeSpec.upperBound||void 0===rangeSpec.upperBound&&value>=Number.NEGATIVE_INFINITY)return fluid.isPrimitive(rangeSpec.output)?rangeSpec.output:transformer.expand(rangeSpec.output)}},fluid.transforms.quantize.collect=function(transformSpec,transformer){transformSpec.ranges.forEach(function(rangeSpec){fluid.isPrimitive(rangeSpec.output)||transformer.expand(rangeSpec.output)})},fluid.defaults("fluid.transforms.inRange",{gradeNames:"fluid.standardTransformFunction"}),fluid.transforms.inRange=function(value,transformSpec){return(void 0===transformSpec.min||transformSpec.min<=value)&&(void 0===transformSpec.max||transformSpec.max>=value)},fluid.transforms.stringToBoolean=function(value){return!!value&&!("0"===value||"false"===value)},fluid.transforms.stringToBoolean.invert=function(transformSpec){return transformSpec.type="fluid.transforms.booleanToString",transformSpec},fluid.defaults("fluid.transforms.stringToBoolean",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToBoolean.invert"}),fluid.transforms.booleanToString=function(value){return value?"true":"false"},fluid.transforms.booleanToString.invert=function(transformSpec){return transformSpec.type="fluid.transforms.stringToBoolean",transformSpec},fluid.defaults("fluid.transforms.booleanToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.booleanToString.invert"}),fluid.transforms.JSONstringToObject=function(value){try{return JSON.parse(value)}catch(e){return}},fluid.transforms.JSONstringToObject.invert=function(transformSpec){return transformSpec.type="fluid.transforms.objectToJSONString",transformSpec},fluid.defaults("fluid.transforms.JSONstringToObject",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.JSONstringToObject.invert"}),fluid.transforms.objectToJSONString=function(value,transformSpec){var space=transformSpec.space||0;return JSON.stringify(value,null,space)},fluid.transforms.objectToJSONString.invert=function(transformSpec){return transformSpec.type="fluid.transforms.JSONstringToObject",transformSpec},fluid.defaults("fluid.transforms.objectToJSONString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.objectToJSONString.invert"}),fluid.transforms.stringToDate=function(value){var date=new Date(value);return isNaN(date.getTime())?void 0:date},fluid.transforms.stringToDate.invert=function(transformSpec){return transformSpec.type="fluid.transforms.dateToString",transformSpec},fluid.defaults("fluid.transforms.stringToDate",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToDate.invert"}),fluid.transforms.dateToString=function(value){if(value instanceof Date){var isoString=value.toISOString();return isoString.substring(0,isoString.indexOf("T"))}},fluid.transforms.dateToString.invert=function(transformSpec){return transformSpec.type="fluid.transforms.stringToDate",transformSpec},fluid.defaults("fluid.transforms.dateToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dateToString.invert"}),fluid.transforms.dateTimeToString=function(value){return value instanceof Date?value.toISOString():void 0},fluid.defaults("fluid.transforms.dateTimeToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dateToString.invert"})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{},fluid=fluid||fluid_3_0_0;!function($,fluid){"use strict";fluid.thatistBridge=function(name,peer){var togo=function(funcname){for(var segs=funcname.split("."),move=peer,i=0;i<segs.length;++i)move=move[segs[i]];var args=[this];2===arguments.length&&(args=args.concat($.makeArray(arguments[1])));var ret=move.apply(null,args);this.that=function(){return ret};var type=typeof ret;return!ret||"string"===type||"number"===type||"boolean"===type||ret&&void 0!==ret.length?ret:this};return $.fn[name]=togo},fluid.thatistBridge("fluid",fluid),fluid.thatistBridge("fluid_3_0_0",fluid_3_0_0);var normalizeTabindexName=function(){return $.browser.msie?"tabIndex":"tabindex"},canHaveDefaultTabindex=function(elements){return!(elements.length<=0)&&$(elements[0]).is("a, input, button, select, area, textarea, object")};fluid.tabindex=function(target,toIndex){return target=$(target),null!=toIndex?function(elements,toIndex){return elements.each(function(i,item){$(item).attr(normalizeTabindexName(),toIndex)})}(target,toIndex):function(elements){if(!(elements.length<=0)){if(!fluid.tabindex.hasAttr(elements))return canHaveDefaultTabindex(elements)?Number(0):void 0;var value=elements.attr(normalizeTabindexName());return Number(value)}}(target)},fluid.tabindex.remove=function(target){return(target=$(target)).each(function(i,item){$(item).removeAttr(normalizeTabindexName())})},fluid.tabindex.hasAttr=function(target){if((target=$(target)).length<=0)return!1;var togo=target.map(function(){var attributeNode=this.getAttributeNode(normalizeTabindexName());return!!attributeNode&&attributeNode.specified});return 1===togo.length?togo[0]:togo},fluid.tabindex.has=function(target){return target=$(target),fluid.tabindex.hasAttr(target)||canHaveDefaultTabindex(target)},fluid.a11y=$.a11y||{},fluid.a11y.orientation={HORIZONTAL:0,VERTICAL:1,BOTH:2};var UP_DOWN_KEYMAP={next:$.ui.keyCode.DOWN,previous:$.ui.keyCode.UP},LEFT_RIGHT_KEYMAP={next:$.ui.keyCode.RIGHT,previous:$.ui.keyCode.LEFT};fluid.tabbable=function(target){target=$(target),target.each(function(idx,item){(!(item=$(item)).fluid("tabindex.has")||item.fluid("tabindex")<0)&&item.fluid("tabindex",0)})};var CONTEXT_KEY="selectionContext",unselectElement=function(selectedElement,selectionContext){!function(selectedElement,handler){handler&&selectedElement&&handler(selectedElement)}(selectedElement,selectionContext.options.onUnselect)},selectElement=function(elementToSelect,selectionContext){var element;unselectElement(selectionContext.selectedElement(),selectionContext),elementToSelect=(element=elementToSelect).jquery?element[0]:element;var newIndex=selectionContext.selectables.index(elementToSelect);-1!==newIndex&&(selectionContext.activeItemIndex=newIndex,function(elementToSelect,handler){handler&&handler(elementToSelect)}(elementToSelect,selectionContext.options.onSelect))},reifyIndex=function(sc_that){var elements=sc_that.selectables;sc_that.activeItemIndex>=elements.length&&(sc_that.activeItemIndex=sc_that.options.noWrap?elements.length-1:0),sc_that.activeItemIndex<0&&-32768!==sc_that.activeItemIndex&&(sc_that.activeItemIndex=sc_that.options.noWrap?0:elements.length-1),0<=sc_that.activeItemIndex&&fluid.focus(elements[sc_that.activeItemIndex])},prepareShift=function(selectionContext){var selElm=selectionContext.selectedElement();selElm&&fluid.blur(selElm),unselectElement(selectionContext.selectedElement(),selectionContext),-32768===selectionContext.activeItemIndex&&(selectionContext.activeItemIndex=-1)},focusNextElement=function(selectionContext){prepareShift(selectionContext),++selectionContext.activeItemIndex,reifyIndex(selectionContext)},focusPreviousElement=function(selectionContext){prepareShift(selectionContext),--selectionContext.activeItemIndex,reifyIndex(selectionContext)},arrowKeyHandler=function(selectionContext,keyMap){return function(evt){evt.which===keyMap.next?(focusNextElement(selectionContext),evt.preventDefault()):evt.which===keyMap.previous&&(focusPreviousElement(selectionContext),evt.preventDefault())}},makeElementsSelectable=function(container,defaults,userOptions){var selectionContext,options=$.extend(!0,{},defaults,userOptions),keyMap=function(direction){var keyMap;return direction===fluid.a11y.orientation.HORIZONTAL?keyMap=LEFT_RIGHT_KEYMAP:direction===fluid.a11y.orientation.VERTICAL&&(keyMap=UP_DOWN_KEYMAP),keyMap}(options.direction),selectableElements=options.selectableElements?options.selectableElements:container.find(options.selectableSelector),that={container:container,activeItemIndex:-32768,selectables:selectableElements,focusIsLeavingContainer:!1,options:options};return that.selectablesUpdated=function(focusedItem){var selectionContext;"number"==typeof that.options.selectablesTabindex&&that.selectables.fluid("tabindex",that.options.selectablesTabindex),that.selectables.off("focus."+CONTEXT_KEY),that.selectables.off("blur."+CONTEXT_KEY),that.selectables.on("focus."+CONTEXT_KEY,(selectionContext=that,function(evt){return $(evt.target).fluid("tabindex",0),selectElement(evt.target,selectionContext),evt.stopPropagation()})),that.selectables.on("blur."+CONTEXT_KEY,function(selectionContext){return function(evt){return $(evt.target).fluid("tabindex",selectionContext.options.selectablesTabindex),unselectElement(evt.target,selectionContext),evt.stopPropagation()}}(that)),keyMap&&that.options.noBubbleListeners&&(that.selectables.off("keydown."+CONTEXT_KEY),that.selectables.on("keydown."+CONTEXT_KEY,arrowKeyHandler(that,keyMap))),focusedItem?selectElement(focusedItem,that):reifyIndex(that)},that.refresh=function(){that.options.selectableSelector||fluid.fail("Cannot refresh selectable context which was not initialised by a selector"),that.selectables=container.find(options.selectableSelector),that.selectablesUpdated()},that.selectedElement=function(){return that.activeItemIndex<0?null:that.selectables[that.activeItemIndex]},keyMap&&!that.options.noBubbleListeners&&container.keydown(arrowKeyHandler(that,keyMap)),container.keydown((selectionContext=that,function(evt){evt.which===$.ui.keyCode.TAB&&(function(selectionContext){-32768!==selectionContext.activeItemIndex&&(selectionContext.options.onLeaveContainer?selectionContext.options.onLeaveContainer(selectionContext.selectables[selectionContext.activeItemIndex]):selectionContext.options.onUnselect&&selectionContext.options.onUnselect(selectionContext.selectables[selectionContext.activeItemIndex])),selectionContext.options.rememberSelectionState||(selectionContext.activeItemIndex=-32768)}(selectionContext),evt.shiftKey&&(selectionContext.focusIsLeavingContainer=!0))})),container.focus(function(selectionContext){return function(evt){var shouldOrig=selectionContext.options.autoSelectFirstItem,shouldSelect="function"==typeof shouldOrig?shouldOrig():shouldOrig;return selectionContext.focusIsLeavingContainer&&(shouldSelect=!1),shouldSelect&&evt.target===selectionContext.container.get(0)&&(-32768===selectionContext.activeItemIndex&&(selectionContext.activeItemIndex=0),fluid.focus(selectionContext.selectables[selectionContext.activeItemIndex])),evt.stopPropagation()}}(that)),container.blur(function(selectionContext){return function(evt){return selectionContext.focusIsLeavingContainer=!1,evt.stopPropagation()}}(that)),that.selectablesUpdated(),that};fluid.selectable=function(target,options){target=$(target);var that=makeElementsSelectable(target,fluid.selectable.defaults,options);return fluid.setScopedData(target,CONTEXT_KEY,that),that},fluid.selectable.select=function(target,toSelect){fluid.focus(toSelect)},fluid.selectable.selectNext=function(target){target=$(target),focusNextElement(fluid.getScopedData(target,CONTEXT_KEY))},fluid.selectable.selectPrevious=function(target){target=$(target),focusPreviousElement(fluid.getScopedData(target,CONTEXT_KEY))},fluid.selectable.currentSelection=function(target){target=$(target);var that=fluid.getScopedData(target,CONTEXT_KEY);return $(that.selectedElement())},fluid.selectable.defaults={direction:fluid.a11y.orientation.VERTICAL,selectablesTabindex:-1,autoSelectFirstItem:!0,rememberSelectionState:!0,selectableSelector:".selectable",selectableElements:null,onSelect:null,onUnselect:null,onLeaveContainer:null,noWrap:!1};var makeActivationHandler=function(binding){return function(evt){var target=evt.target;if(fluid.enabled(target)&&((evt.which?evt.which:evt.keyCode)===binding.key&&binding.activateHandler&&function(binding,evt){if(!binding.modifier)return!0;var modifierKey=binding.modifier,isCtrlKeyPresent=modifierKey&&evt.ctrlKey,isAltKeyPresent=modifierKey&&evt.altKey,isShiftKeyPresent=modifierKey&&evt.shiftKey;return isCtrlKeyPresent||isAltKeyPresent||isShiftKeyPresent}(binding,evt))){var event=$.Event("fluid-activate");$(target).trigger(event,[binding.activateHandler]),event.isDefaultPrevented()&&evt.preventDefault()}}};fluid.activatable=function(target,fn,options){!function(elements,onActivateHandler,defaultKeys,options){var bindings=[];$(defaultKeys).each(function(index,key){bindings.push({modifier:null,key:key,activateHandler:onActivateHandler})}),options&&options.additionalBindings&&(bindings=bindings.concat(options.additionalBindings)),fluid.initEnablement(elements);for(var i=0;i<bindings.length;++i){var binding=bindings[i];elements.keydown(makeActivationHandler(binding))}elements.on("fluid-activate",function(evt,handler){return(handler=handler||onActivateHandler)?handler(evt):null})}(target=$(target),fn,fluid.activatable.defaults.keys,options)},fluid.activate=function(target){$(target).trigger("fluid-activate")},fluid.activatable.defaults={keys:[$.ui.keyCode.ENTER,$.ui.keyCode.SPACE]}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.viewComponent",{gradeNames:["fluid.modelComponent"],initFunction:"fluid.initView",argumentMap:{container:0,options:1},members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors)"}}),fluid.dumpSelector=function(selectable){return"string"==typeof selectable?selectable:selectable.selector?selectable.selector:""},fluid.diagnoseFailedView=function(componentName,that,options,args){if(!that&&fluid.hasGrade(options,"fluid.viewComponent")){var container=fluid.wrap(args[1]),message1="Instantiation of view component with type "+componentName+" failed, since ";container?0===container.length?fluid.fail(message1+'selector "',fluid.dumpSelector(args[1]),'" did not match any markup in the document'):fluid.fail(message1+" component creator function did not return a value"):fluid.fail(message1+" container argument is empty")}},fluid.checkTryCatchParameter=function(){var GETparams=(window.location||{search:"",protocol:"file:"}).search.slice(1).split("&");return!0===fluid.find(GETparams,function(param){if(0===param.indexOf("notrycatch"))return!0})},fluid.notrycatch=fluid.checkTryCatchParameter(),fluid.wrap=function(obj,userJQuery){return userJQuery=userJQuery||$,!obj||obj.jquery?obj:userJQuery(obj)},fluid.unwrap=function(obj){return obj&&obj.jquery?obj[0]:obj},fluid.container=function(containerSpec,fallible,userJQuery){var selector=containerSpec.selector||containerSpec;userJQuery&&(containerSpec=fluid.unwrap(containerSpec));var container=fluid.wrap(containerSpec,userJQuery);if(fallible&&(!container||0===container.length))return null;if(!container||!container.jquery||1!==container.length){"string"!=typeof containerSpec&&(containerSpec=container.selector);var count=void 0!==container.length?container.length:0;fluid.fail((1<count?"More than one ("+count+") container elements were":"No container element was")+" found for selector "+containerSpec)}return fluid.isDOMNode(container[0])||fluid.fail("fluid.container was supplied a non-jQueryable element"),container.selector=selector,container.context=container.context||containerSpec.ownerDocument||document,container},fluid.createDomBinder=function(container,selectors){var that={id:fluid.allocateGuid(),cache:{}},userJQuery=container.constructor;function cacheKey(name,thisContainer){return fluid.allocateSimpleId(thisContainer)+"-"+name}return that.locate=function(name,localContainer){var selector,thisContainer,togo;if(void 0!==(selector=selectors[name]))return(thisContainer=localContainer?$(localContainer):container)||fluid.fail("DOM binder invoked for selector "+name+" without container"),(togo=""===selector?thisContainer:selector?"function"==typeof selector?userJQuery(selector.call(null,fluid.unwrap(thisContainer))):userJQuery(selector,thisContainer):userJQuery()).selector||(togo.selector=selector,togo.context=thisContainer),function(name,thisContainer,result){that.cache[cacheKey(name,thisContainer)]=result}(togo.selectorName=name,thisContainer,togo),togo},that.fastLocate=function(name,localContainer){var key=cacheKey(name,localContainer||container),togo=that.cache[key];return togo||that.locate(name,localContainer)},that.clear=function(){that.cache={}},that.refresh=function(names,localContainer){var thisContainer=localContainer||container;"string"==typeof names&&(names=[names]),void 0===thisContainer.length&&(thisContainer=[thisContainer]);for(var i=0;i<names.length;++i)for(var j=0;j<thisContainer.length;++j)that.locate(names[i],thisContainer[j])},that.resolvePathSegment=that.locate,that},fluid.expectFilledSelector=function(result,message){result&&0===result.length&&result.jquery&&fluid.fail(message+': selector "'+result.selector+'" with name '+result.selectorName+" returned no results in context "+fluid.dumpEl(result.context))},fluid.initView=function(componentName,containerSpec,userOptions,localOptions){var container=fluid.container(containerSpec,!0);if(fluid.expectFilledSelector(container,'Error instantiating component with name "'+componentName),!container)return null;var that=fluid.initLittleComponent(componentName,userOptions,localOptions||{gradeNames:["fluid.viewComponent"]},function(that){that.container=container});that.dom||fluid.initDomBinder(that);var userJQuery=that.options.jQuery;return fluid.log("Constructing view component "+componentName+" with container "+container.constructor.expando+(userJQuery?" user jQuery "+userJQuery.expando:"")+" env: "+$.expando),that},fluid.initDomBinder=function(that,selectors){return that.container||fluid.fail("fluid.initDomBinder called for component with typeName "+that.typeName+' without an initialised container - this has probably resulted from placing "fluid.viewComponent" in incorrect position in grade merging order. Make sure to place it to the right of any non-view grades in the gradeNames list to ensure that it overrides properly: resolved gradeNames is ',that.options.gradeNames," for component ",that),that.dom=fluid.createDomBinder(that.container,selectors||that.options.selectors||{}),that.locate=that.dom.locate,that.dom},fluid.findAncestor=function(element,test){for(element=fluid.unwrap(element);element;){if(test(element))return element;element=element.parentNode}},fluid.findForm=function(node){return fluid.findAncestor(node,function(element){return"form"===element.nodeName.toLowerCase()})},fluid.each(["text","html"],function(method){fluid[method]=function(node,newValue){return node=$(node),void 0===newValue?node[method]():node[method](newValue)}}),fluid.value=function(nodeIn,newValue){var node=fluid.unwrap(nodeIn),multiple=!1;if(void 0===node.nodeType&&1<node.length&&(node=node[0],multiple=!0),"input"!==node.nodeName.toLowerCase()||!/radio|checkbox/.test(node.type))return void 0===newValue?$(node).val():$(node).val(newValue);var elements,name=node.name;if(void 0===name&&fluid.fail("Cannot acquire value from node "+fluid.dumpEl(node)+" which does not have name attribute set"),multiple)elements=nodeIn;else{elements=node.ownerDocument.getElementsByName(name);var scope=fluid.findForm(node);elements=$.grep(elements,function(element){return element.name===name&&(!scope||fluid.dom.isContainer(scope,element))})}if(void 0===newValue){var checked=$.map(elements,function(element){return element.checked?element.value:null});return"radio"===node.type?checked[0]:checked}"boolean"==typeof newValue&&(newValue=newValue?"true":"false"),$.each(elements,function(){this.checked=newValue instanceof Array?-1!==newValue.indexOf(this.value):newValue===this.value})},fluid.BINDING_ROOT_KEY="fluid-binding-root",fluid.findData=function(elem,name){for(;elem;){var data=$.data(elem,name);if(data)return data;elem=elem.parentNode}},fluid.bindFossils=function(node,data,fossils){$.data(node,fluid.BINDING_ROOT_KEY,{data:data,fossils:fossils})},fluid.boundPathForNode=function(node,fossils){var record=fossils[(node=fluid.unwrap(node)).name||node.id];return record?record.EL:null},fluid.applyBoundChange=function(node,newValue,applier){node=fluid.unwrap(node),void 0===newValue&&(newValue=fluid.value(node)),void 0===node.nodeType&&0<node.length&&(node=node[0]);var root=fluid.findData(node,fluid.BINDING_ROOT_KEY);root||fluid.fail("Bound data could not be discovered in any node above "+fluid.dumpEl(node));var name=node.name,fossil=root.fossils[name];fossil||fluid.fail("No fossil discovered for name "+name+" in fossil record above "+fluid.dumpEl(node)),"boolean"==typeof fossil.oldvalue&&(newValue=!!newValue[0]);var EL=root.fossils[name].EL;applier?applier.fireChangeRequest({path:EL,value:newValue,source:"DOM:"+node.id}):fluid.set(root.data,EL,newValue)},fluid.jById=function(id,dokkument){dokkument=dokkument&&9===dokkument.nodeType?dokkument:document;var element=fluid.byId(id,dokkument),togo=element?$(element):[];return togo.selector="#"+id,togo.context=dokkument,togo},fluid.byId=function(id,dokkument){var el=(dokkument=dokkument&&9===dokkument.nodeType?dokkument:document).getElementById(id);return el?(el.id!==id&&fluid.fail("Problem in document structure - picked up element "+fluid.dumpEl(el)+" for id "+id+" without this id - most likely the element has a name which conflicts with this id"),el):null},fluid.getId=function(element){return fluid.unwrap(element).id},fluid.allocateSimpleId=function(element){if(!(element=fluid.unwrap(element))||fluid.isPrimitive(element))return null;if(!element.id){var simpleId="fluid-id-"+fluid.allocateGuid();element.id=simpleId}return element.id},fluid.getDocument=function(element){var node=fluid.unwrap(element);return 9===node.nodeType?node:node.ownerDocument},fluid.defaults("fluid.ariaLabeller",{gradeNames:["fluid.viewComponent"],labelAttribute:"aria-label",liveRegionMarkup:'<div class="liveRegion fl-hidden-accessible" aria-live="polite"></div>',liveRegionId:"fluid-ariaLabeller-liveRegion",invokers:{generateLiveElement:{funcName:"fluid.ariaLabeller.generateLiveElement",args:"{that}"},update:{funcName:"fluid.ariaLabeller.update",args:["{that}","{arguments}.0"]}},listeners:{onCreate:{func:"{that}.update",args:[null]}}}),fluid.ariaLabeller.update=function(that,newOptions){if(newOptions=newOptions||that.options,that.container.attr(that.options.labelAttribute,newOptions.text),newOptions.dynamicLabel){var live=fluid.jById(that.options.liveRegionId);0===live.length&&(live=that.generateLiveElement()),live.text(newOptions.text)}},fluid.ariaLabeller.generateLiveElement=function(that){var liveEl=$(that.options.liveRegionMarkup);return liveEl.prop("id",that.options.liveRegionId),$("body").append(liveEl),liveEl};fluid.getAriaLabeller=function(element){return element=$(element),fluid.getScopedData(element,"aria-labelling")},fluid.updateAriaLabel=function(element,text,options){options=$.extend({},options||{},{text:text});var that=fluid.getAriaLabeller(element);return that?that.update(options):(that=fluid.ariaLabeller(element,options),fluid.setScopedData(element,"aria-labelling",that)),that};var dismissList={};$(document).click(function(event){for(var target=fluid.resolveEventTarget(event);target;){if(dismissList[target.id])return;target=target.parentNode}fluid.each(dismissList,function(dismissFunc,key){dismissFunc(event),delete dismissList[key]})}),fluid.globalDismissal=function(nodes,dismissFunc){fluid.each(nodes,function(node){var id=fluid.unwrap(node).ownerDocument===document?fluid.allocateSimpleId(node):fluid.allocateGuid();dismissFunc?dismissList[id]=dismissFunc:delete dismissList[id]})},fluid.now=function(){return Date.now?Date.now():(new Date).getTime()},fluid.deadMansBlur=function(control,options){var that={options:$.extend(!0,{},fluid.defaults("fluid.deadMansBlur"),options),blurPending:!1,lastCancel:0,canceller:function(event){fluid.log("Cancellation through "+event.type+" on "+fluid.dumpEl(event.target)),that.lastCancel=fluid.now(),that.blurPending=!1},noteProceeded:function(){fluid.globalDismissal(that.options.exclusions)},reArm:function(){fluid.globalDismissal(that.options.exclusions,that.proceed)},addExclusion:function(exclusions){fluid.globalDismissal(exclusions,that.proceed)},proceed:function(event){fluid.log("Direct proceed through "+event.type+" on "+fluid.dumpEl(event.target)),that.blurPending=!1,that.options.handler(control)}};return fluid.each(that.options.exclusions,function(exclusion){exclusion=$(exclusion),fluid.each(exclusion,function(excludeEl){$(excludeEl).on("focusin",that.canceller).on("fluid-focus",that.canceller).click(that.canceller).mousedown(that.canceller)})}),that.options.cancelByDefault?that.reArm():$(control).on("focusout",function(event){fluid.log("Starting blur timer for element "+fluid.dumpEl(event.target));var now=fluid.now();fluid.log("back delay: "+(now-that.lastCancel)),now-that.lastCancel>that.options.backDelay&&(that.blurPending=!0),setTimeout(function(){that.blurPending&&that.options.handler(control)},that.options.delay)}),that},fluid.defaults("fluid.deadMansBlur",{gradeNames:"fluid.function",delay:150,backDelay:100})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.explodeLocalisedName=function(fileName,locale,defaultLocale){var lastDot=fileName.lastIndexOf(".");-1!==lastDot&&0!==lastDot||(lastDot=fileName.length);var baseName=fileName.substring(0,lastDot),extension=fileName.substring(lastDot),segs=locale.split("_"),exploded=fluid.transform(segs,function(seg,index){var shortSegs=segs.slice(0,index+1);return baseName+"_"+shortSegs.join("_")+extension});return defaultLocale&&exploded.unshift(baseName+"_"+defaultLocale+extension),exploded};var resourceCache={},pendingClass={};function canonUrl(url){return url}fluid.fetchResources=function(resourceSpecs,callback,options){var that={options:fluid.copy(options||{})};return that.resourceSpecs=resourceSpecs,that.callback=callback,that.operate=function(){fluid.fetchResources.fetchResourcesImpl(that)},fluid.each(resourceSpecs,function(resourceSpec,key){resourceSpec.recurseFirer=fluid.makeEventFirer({name:'I/O completion for resource "'+key+'"'}),resourceSpec.recurseFirer.addListener(that.operate),resourceSpec.url&&!resourceSpec.href&&(resourceSpec.href=resourceSpec.url),that.options.defaultLocale&&(resourceSpec.defaultLocale=that.options.defaultLocale),resourceSpec.locale||(resourceSpec.locale=resourceSpec.defaultLocale)}),that.options.amalgamateClasses&&fluid.fetchResources.amalgamateClasses(resourceSpecs,that.options.amalgamateClasses,that.operate),fluid.fetchResources.explodeForLocales(resourceSpecs),that.operate(),that},fluid.fetchResources.explodeForLocales=function(resourceSpecs){return fluid.each(resourceSpecs,function(resourceSpec,key){if(resourceSpec.locale){for(var exploded=fluid.explodeLocalisedName(resourceSpec.href,resourceSpec.locale,resourceSpec.defaultLocale),i=0;i<exploded.length;++i){var newKey=key+"$localised-"+i,newRecord=$.extend(!0,{},resourceSpec,{href:exploded[i],localeExploded:!0});resourceSpecs[newKey]=newRecord}resourceSpec.localeExploded=exploded.length}}),resourceSpecs},fluid.fetchResources.condenseOneResource=function(resourceSpecs,resourceSpec,key,localeCount){for(var localeSpecs=[resourceSpec],i=0;i<localeCount;++i){var localKey=key+"$localised-"+i;localeSpecs.unshift(resourceSpecs[localKey]),delete resourceSpecs[localKey]}var lastNonError=fluid.find_if(localeSpecs,function(spec){return!spec.fetchError});lastNonError&&(resourceSpecs[key]=lastNonError)},fluid.fetchResources.condenseForLocales=function(resourceSpecs){fluid.each(resourceSpecs,function(resourceSpec,key){"number"==typeof resourceSpec.localeExploded&&fluid.fetchResources.condenseOneResource(resourceSpecs,resourceSpec,key,resourceSpec.localeExploded)})},fluid.fetchResources.notifyResources=function(that,resourceSpecs,callback){fluid.fetchResources.condenseForLocales(resourceSpecs),callback(resourceSpecs)},fluid.fetchResources.amalgamateClasses=function(specs,classes,operator){fluid.each(classes,function(clazz){var pending=pendingClass[clazz];fluid.each(pending,function(pendingrec,canon){(specs[clazz+"!"+canon]=pendingrec).recurseFirer.addListener(operator)})})},fluid.fetchResources.timeSuccessCallback=function(resourceSpec){if(resourceSpec.timeSuccess&&resourceSpec.options&&resourceSpec.options.success){var success=resourceSpec.options.success;resourceSpec.options.success=function(){var startTime=new Date,ret=success.apply(null,arguments);return fluid.log("External callback for URL "+resourceSpec.href+" completed - callback time: "+((new Date).getTime()-startTime.getTime())+"ms"),ret}}},fluid.fetchResources.clearResourceCache=function(url){url?delete resourceCache[canonUrl(url)]:fluid.clear(resourceCache)},fluid.fetchResources.handleCachedRequest=function(resourceSpec,response,fetchError){var canon=canonUrl(resourceSpec.href),cached=resourceCache[canon];if(cached.$$firer$$){fluid.log("Handling request for "+canon+" from cache");var fetchClass=resourceSpec.fetchClass;fetchClass&&pendingClass[fetchClass]&&(fluid.log("Clearing pendingClass entry for class "+fetchClass),delete pendingClass[fetchClass][canon]);var result={response:response,fetchError:fetchError};resourceCache[canon]=result,cached.fire(response,fetchError)}},fluid.fetchResources.completeRequest=function(thisSpec){thisSpec.queued=!1,thisSpec.completeTime=new Date,fluid.log("Request to URL "+thisSpec.href+" completed - total elapsed time: "+(thisSpec.completeTime.getTime()-thisSpec.initTime.getTime())+"ms"),thisSpec.recurseFirer.fire()},fluid.fetchResources.makeResourceCallback=function(thisSpec){return{success:function(response){thisSpec.resourceText=response,thisSpec.resourceKey=thisSpec.href,thisSpec.forceCache&&fluid.fetchResources.handleCachedRequest(thisSpec,response),fluid.fetchResources.completeRequest(thisSpec)},error:function(response,textStatus,errorThrown){thisSpec.fetchError={status:response.status,textStatus:response.textStatus,errorThrown:errorThrown},thisSpec.forceCache&&fluid.fetchResources.handleCachedRequest(thisSpec,null,thisSpec.fetchError),fluid.fetchResources.completeRequest(thisSpec)}}},fluid.fetchResources.issueCachedRequest=function(resourceSpec,options){var canon=canonUrl(resourceSpec.href),cached=resourceCache[canon];if(cached)cached.$$firer$$?(fluid.log("Request for cached resource which is in flight: url "+canon),cached.addListener(function(response,fetchError){response?options.success(response):options.error(fetchError)})):cached.response?options.success(cached.response):options.error(cached.fetchError);else{fluid.log("First request for cached resource with url "+canon),(cached=fluid.makeEventFirer({name:"cache notifier for resource URL "+canon})).$$firer$$=!0,resourceCache[canon]=cached;var fetchClass=resourceSpec.fetchClass;fetchClass&&(pendingClass[fetchClass]||(pendingClass[fetchClass]={}),pendingClass[fetchClass][canon]=resourceSpec),options.cache=!1,$.ajax(options)}},fluid.fetchResources.composeCallbacks=function(internal,external){return external?internal?function(){try{external.apply(null,arguments)}catch(e){fluid.log("Exception applying external fetchResources callback: "+e)}internal.apply(null,arguments)}:external:internal},fluid.fetchResources.composePolicy=function(target,source){return fluid.fetchResources.composeCallbacks(target,source)},fluid.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:fluid.fetchResources.composePolicy,error:fluid.fetchResources.composePolicy,url:"reverse"}}),fluid.fetchResources.issueRequest=function(resourceSpec,key){var thisCallback=fluid.fetchResources.makeResourceCallback(resourceSpec),options={url:resourceSpec.href,success:thisCallback.success,error:thisCallback.error,dataType:resourceSpec.dataType||"text"};fluid.fetchResources.timeSuccessCallback(resourceSpec),options=fluid.merge(fluid.defaults("fluid.fetchResources.issueRequest").mergePolicy,options,resourceSpec.options),resourceSpec.queued=!0,resourceSpec.initTime=new Date,fluid.log("Request with key "+key+" queued for "+resourceSpec.href),resourceSpec.forceCache?fluid.fetchResources.issueCachedRequest(resourceSpec,options):$.ajax(options)},fluid.fetchResources.fetchResourcesImpl=function(that){var complete=!0,resourceSpecs=that.resourceSpecs;for(var key in resourceSpecs){var resourceSpec=resourceSpecs[key];if(resourceSpec.href&&!resourceSpec.completeTime)resourceSpec.queued||fluid.fetchResources.issueRequest(resourceSpec,key),resourceSpec.queued&&(complete=!1);else if(resourceSpec.nodeId&&!resourceSpec.resourceText){var node=document.getElementById(resourceSpec.nodeId);resourceSpec.resourceText=fluid.dom.getElementText(node),resourceSpec.resourceKey=resourceSpec.nodeId}}complete&&that.callback&&!that.callbackCalled&&(that.callbackCalled=!0,setTimeout(function(){fluid.fetchResources.notifyResources(that,resourceSpecs,that.callback)},1))},fluid.fetchResources.primeCacheFromResources=function(componentName){var resources=fluid.defaults(componentName).resources,expanded=(fluid.expandOptions?fluid.expandOptions:fluid.identity)(fluid.copy(resources));fluid.fetchResources(expanded)},fluid.registerNamespace("fluid.expander"),fluid.expander.makeDefaultFetchOptions=function(successdisposer,failid,options){return $.extend(!0,{dataType:"text"},options,{success:function(response,environmentdisposer){var json=JSON.parse(response);environmentdisposer(successdisposer(json))},error:function(response,textStatus){fluid.log("Error fetching "+failid+": "+textStatus)}})},fluid.expander.makeFetchExpander=function(options){return{expander:{type:"fluid.expander.deferredFetcher",href:options.url,options:fluid.expander.makeDefaultFetchOptions(options.disposer,options.url,options.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:options.fetchKey}}},fluid.expander.deferredFetcher=function(deliverer,source,expandOptions){var expander=source.expander,spec=fluid.copy(expander),collector=fluid.expand(expander.resourceSpecCollector,expandOptions);delete spec.type,delete spec.resourceSpecCollector,delete spec.fetchKey;var environmentdisposer=function(disposed){deliverer(disposed)};return spec.options.success=function(response){expander.options.success(response,environmentdisposer)},collector[expander.fetchKey||fluid.allocateGuid()]=spec,fluid.NO_VALUE}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.messageResolver",{gradeNames:["fluid.component"],mergePolicy:{messageBase:"nomerge",parents:"nomerge"},resolveFunc:fluid.stringTemplate,parseFunc:fluid.identity,messageBase:{},members:{messageBase:"@expand:{that}.options.parseFunc({that}.options.messageBase)"},invokers:{lookup:"fluid.messageResolver.lookup({that}, {arguments}.0)",resolve:"fluid.messageResolver.resolve({that}, {arguments}.0, {arguments}.1)"},parents:[]}),fluid.messageResolver.lookup=function(that,messagecodes){var resolved=fluid.messageResolver.resolveOne(that.messageBase,messagecodes);return void 0===resolved?fluid.find(that.options.parents,function(parent){return parent?parent.lookup(messagecodes):void 0}):{template:resolved,resolveFunc:that.options.resolveFunc}},fluid.messageResolver.resolve=function(that,messagecodes,args){if(!messagecodes)return"[No messagecodes provided]";messagecodes=fluid.makeArray(messagecodes);var looked=that.lookup(messagecodes);return looked?looked.resolveFunc(looked.template,args):"[Message string for key "+messagecodes[0]+" not found]"},fluid.messageResolver.resolveOne=function(messageBase,messagecodes){for(var i=0;i<messagecodes.length;++i){var message=messageBase[messagecodes[i]];if(void 0!==message)return message}},fluid.messageLocator=function(messageBase,resolveFunc){var resolver=fluid.messageResolver({messageBase:messageBase,resolveFunc:resolveFunc});return function(messagecodes,args){return resolver.resolve(messagecodes,args)}},fluid.resolveMessageSource=function(messageSource){if("data"===messageSource.type){if(void 0===messageSource.url)return fluid.messageLocator(messageSource.messages,messageSource.resolveFunc)}else if("resolver"===messageSource.type)return messageSource.resolver.resolve}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.resourceLoader",{gradeNames:["fluid.component"],listeners:{"onCreate.loadResources":{listener:"fluid.resourceLoader.loadResources",args:["{that}",{expander:{func:"{that}.resolveResources"}}]}},defaultLocale:null,locale:null,terms:{},resources:{},resourceOptions:{},invokers:{transformURL:{funcName:"fluid.stringTemplate",args:["{arguments}.0","{that}.options.terms"]},resolveResources:{funcName:"fluid.resourceLoader.resolveResources",args:"{that}"}},events:{onResourcesLoaded:null}}),fluid.resourceLoader.resolveResources=function(that){var mapped=fluid.transform(that.options.resources,that.transformURL);return fluid.transform(mapped,function(url){var resourceSpec={url:url,forceCache:!0,options:that.options.resourceOptions};return $.extend(resourceSpec,fluid.filterKeys(that.options,["defaultLocale","locale"]))})},fluid.resourceLoader.loadResources=function(that,resources){fluid.fetchResources(resources,function(){that.resources=resources,that.events.onResourcesLoaded.fire(resources)})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.newViewComponent",{gradeNames:["fluid.modelComponent"],members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors, {that}.container)",container:"@expand:fluid.container({that}.options.container)"}}),fluid.newViewComponent.addToParent=function(parentContainer,elm,method){method=method||"append",$(parentContainer)[method](elm)},fluid.defaults("fluid.containerRenderingView",{gradeNames:["fluid.newViewComponent"],container:"@expand:{that}.renderContainer()",parentContainer:"fluid.notImplemented",injectionType:"append",invokers:{renderMarkup:"fluid.identity({that}.options.markup.container)",renderContainer:"fluid.containerRenderingView.renderContainer({that}, {that}.renderMarkup, {that}.addToParent)",addToParent:{funcName:"fluid.newViewComponent.addToParent",args:["{that}.options.parentContainer","{arguments}.0","{that}.options.injectionType"]}}}),fluid.containerRenderingView.renderContainer=function(that,renderMarkup,addToParent){fluid.log("Rendering container for "+that.id);var containerMarkup=renderMarkup(),container=$(containerMarkup);return addToParent(container),container},fluid.defaults("fluid.templateRenderingView",{gradeNames:["fluid.newViewComponent","fluid.resourceLoader"],resources:{template:"fluid.notImplemented"},injectionType:"append",events:{afterRender:null},listeners:{"onResourcesLoaded.render":"{that}.render","onResourcesLoaded.afterRender":{listener:"{that}.events.afterRender",args:["{that}"],priority:"after:render"}},invokers:{render:{funcName:"fluid.newViewComponent.addToParent",args:["{that}.container","{that}.resources.template.resourceText","{that}.options.injectionType"]}},distributeOptions:{mapTemplateSource:{source:"{that}.options.template",removeSource:!0,target:"{that}.options.resources.template"}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.mutationObserver",{gradeNames:["fluid.viewComponent"],events:{onNodeAdded:null,onNodeRemoved:null,onAttributeChanged:null},listeners:{"onDestroy.disconnect":"{that}.disconnect"},members:{observer:{expander:{func:"{that}.createObserver"}}},defaultObserveConfig:{attributes:!0,childList:!0,subtree:!0},invokers:{observe:{funcName:"fluid.mutationObserver.observe",args:["{that}","{arguments}.0","{arguments}.1"]},disconnect:{this:"{that}.observer",method:"disconnect"},takeRecords:{this:"{that}.observer",method:"takeRecords"},createObserver:{funcName:"fluid.mutationObserver.createObserver",args:["{that}"]}}}),fluid.mutationObserver.createObserver=function(that){return new MutationObserver(function(mutationRecords){fluid.each(mutationRecords,function(mutationRecord){for(var i=0;i<mutationRecord.addedNodes.length;i++)that.events.onNodeAdded.fire(mutationRecord.addedNodes[i],mutationRecord);for(var j=0;j<mutationRecord.removedNodes.length;j++)that.events.onNodeRemoved.fire(mutationRecord.removedNodes[j],mutationRecord);"attributes"===mutationRecord.type&&that.events.onAttributeChanged.fire(mutationRecord.target,mutationRecord)})})},fluid.mutationObserver.observe=function(that,target,options){target=fluid.unwrap(target||that.container),that.observer.observe(target,options||that.options.defaultObserveConfig)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.textNodeParser",{gradeNames:["fluid.component"],events:{onParsedTextNode:null,afterParse:null},invokers:{parse:{funcName:"fluid.textNodeParser.parse",args:["{that}","{arguments}.0","{arguments}.1","{that}.events.afterParse.fire"]},hasTextToRead:"fluid.textNodeParser.hasTextToRead",isWord:"fluid.textNodeParser.isWord",getLang:"fluid.textNodeParser.getLang"}}),fluid.textNodeParser.isWord=function(str){return fluid.isValue(str)&&/\S/.test(str)},fluid.textNodeParser.hasTextToRead=function(elm){return(elm=fluid.unwrap(elm))&&!!elm.offsetHeight&&fluid.textNodeParser.isWord(elm.innerText)},fluid.textNodeParser.hasVisibleText=function(elm){return fluid.textNodeParser.hasTextToRead(elm)&&!$(elm).closest('[aria-hidden="true"]').length},fluid.textNodeParser.getLang=function(elm){return $(elm).closest("[lang]").attr("lang")},fluid.textNodeParser.parse=function(that,elm,lang,afterParseEvent){if(elm=fluid.unwrap(elm),lang=lang||that.getLang(elm),that.hasTextToRead(elm)){var childNodes=elm.childNodes,elementLang=elm.getAttribute("lang")||lang;$.each(childNodes,function(childIndex,childNode){childNode.nodeType===Node.TEXT_NODE?that.events.onParsedTextNode.fire(childNode,elementLang,childIndex):childNode.nodeType===Node.ELEMENT_NODE&&fluid.textNodeParser.parse(that,childNode,elementLang)})}afterParseEvent&&afterParseEvent(that)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.undo"),fluid.undo.STATE_INITIAL="state_initial",fluid.undo.STATE_CHANGED="state_changed",fluid.undo.STATE_REVERTED="state_reverted",fluid.undo.defaultRenderer=function(that,targetContainer){var str=that.options.strings,markup="<span class='flc-undo'><a href='#' class='flc-undo-undoControl'>"+str.undo+"</a><a href='#' class='flc-undo-redoControl'>"+str.redo+"</a></span>",markupNode=$(markup).attr({role:"region","aria-live":"polite","aria-relevant":"all"});return targetContainer.append(markupNode),markupNode},fluid.undo.refreshView=function(that){that.state===fluid.undo.STATE_INITIAL?(that.locate("undoContainer").hide(),that.locate("redoContainer").hide()):that.state===fluid.undo.STATE_CHANGED?(that.locate("undoContainer").show(),that.locate("redoContainer").hide()):that.state===fluid.undo.STATE_REVERTED&&(that.locate("undoContainer").hide(),that.locate("redoContainer").show())},fluid.undo.undoControlClick=function(that){return that.state!==fluid.undo.STATE_REVERTED&&(fluid.model.copyModel(that.extremalModel,that.component.model),that.component.updateModel(that.initialModel,that),that.state=fluid.undo.STATE_REVERTED,fluid.undo.refreshView(that),that.locate("redoControl").focus()),!1},fluid.undo.redoControlClick=function(that){return that.state!==fluid.undo.STATE_CHANGED&&(that.component.updateModel(that.extremalModel,that),that.state=fluid.undo.STATE_CHANGED,fluid.undo.refreshView(that),that.locate("undoControl").focus()),!1},fluid.undo.modelChanged=function(that,newModel,oldModel,source){source!==that&&(that.state=fluid.undo.STATE_CHANGED,fluid.model.copyModel(that.initialModel,oldModel),fluid.undo.refreshView(that))},fluid.undo.copyInitialModel=function(that){fluid.model.copyModel(that.initialModel,that.component.model),fluid.model.copyModel(that.extremalModel,that.component.model)},fluid.undo.setTabindex=function(that){fluid.tabindex(that.locate("undoControl"),0),fluid.tabindex(that.locate("redoControl"),0)},fluid.defaults("fluid.undo",{gradeNames:["fluid.component"],members:{state:fluid.undo.STATE_INITIAL,initialModel:{},extremalModel:{},component:"{fluid.undoable}",container:{expander:{func:"{that}.options.renderer",args:["{that}","{that}.component.container"]}},dom:{expander:{funcName:"fluid.initDomBinder",args:["{that}","{that}.options.selectors"]}}},invokers:{undoControlClick:{funcName:"fluid.undo.undoControlClick",args:"{that}"},redoControlClick:{funcName:"fluid.undo.redoControlClick",args:"{that}"}},listeners:{"onCreate.copyInitialModel":{funcName:"fluid.undo.copyInitialModel",priority:"before:refreshView"},"onCreate.setTabindex":"fluid.undo.setTabindex","onCreate.refreshView":"fluid.undo.refreshView","onCreate.bindUndoClick":{this:"{that}.dom.undoControl",method:"click",args:"{that}.undoControlClick"},"onCreate.bindRedoClick":{this:"{that}.dom.redoControl",method:"click",args:"{that}.redoControlClick"},"{fluid.undoable}.events.modelChanged":{funcName:"fluid.undo.modelChanged",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]}},selectors:{undoContainer:".flc-undo-undoControl",undoControl:".flc-undo-undoControl",redoContainer:".flc-undo-redoControl",redoControl:".flc-undo-redoControl"},strings:{undo:"undo edit",redo:"redo edit"},renderer:fluid.undo.defaultRenderer}),fluid.defaults("fluid.undoable",{gradeNames:["fluid.modelComponent"],invokers:{updateModel:{}},events:{modelChanged:null}}),fluid.defaults("fluid.undoDecorator",{gradeNames:["fluid.undo"]})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.tooltip"),fluid.tooltip.computeContentFunc=function(that){that.contentFunc=that.options.contentFunc?that.options.contentFunc:that.modelToContentFunc()},fluid.tooltip.updateContentImpl=function(that){that.computeContentFunc(),that.initialised&&that.container.tooltip("option","content",that.contentFunc)},fluid.tooltip.idSearchFunc=function(idToContentFunc){return function(){if($.contains(this.ownerDocument,this)){var idToContent=idToContentFunc(),ancestor=fluid.findAncestor(this,function(element){return idToContent[element.id]});return ancestor?idToContent[ancestor.id]:null}return null}},fluid.tooltip.modelToContentFunc=function(that){var model=that.model;return model.idToContent?fluid.tooltip.idSearchFunc(function(){return that.model.idToContent}):model.content?function(){return model.content}:void 0},fluid.tooltip.resolveTooltipTarget=function(items,event){var originalTarget=fluid.resolveEventTarget(event);return $(originalTarget).closest(items)[0]},fluid.tooltip.makeOpenHandler=function(that){return function(event,tooltip){fluid.tooltip.closeAll(that);var originalTarget=fluid.tooltip.resolveTooltipTarget(that.options.items,event),key=fluid.allocateSimpleId(originalTarget);that.openIdMap[key]=!0,that.initialised&&that.events.afterOpen.fire(that,originalTarget,tooltip.tooltip,event)}},fluid.tooltip.makeCloseHandler=function(that){return function(event,tooltip){if(that.initialised){var originalTarget=fluid.tooltip.resolveTooltipTarget(that.options.items,event);delete that.openIdMap[originalTarget.id],that.events.afterClose.fire(that,originalTarget,tooltip.tooltip,event)}}},fluid.tooltip.closeAll=function(that){var dokkument=fluid.getDocument(that.container);fluid.each(that.openIdMap,function(value,key){var target=fluid.byId(key,dokkument);that.container.tooltip("close",{type:"close",currentTarget:target,target:target})}),fluid.clear(that.openIdMap)},fluid.tooltip.setup=function(that){fluid.tooltip.updateContentImpl(that);var directOptions={content:that.contentFunc,open:fluid.tooltip.makeOpenHandler(that),close:fluid.tooltip.makeCloseHandler(that)},fullOptions=$.extend(!0,directOptions,that.options.widgetOptions);that.container.tooltip(fullOptions),that.initialised=!0},fluid.tooltip.doDestroy=function(that){if(that.initialised){fluid.tooltip.closeAll(that,!0);var dokkument=fluid.getDocument(that.container),container=that.container[0];($.contains(dokkument,container)||dokkument===container)&&that.container.tooltip("destroy"),that.initialised=!1}},fluid.defaults("fluid.tooltip",{gradeNames:["fluid.viewComponent"],widgetOptions:{tooltipClass:"{that}.options.styles.tooltip",position:"{that}.options.position",items:"{that}.options.items",show:{duration:"{that}.options.duration",delay:"{that}.options.delay"},hide:{duration:"{that}.options.duration",delay:"{that}.options.delay"}},invokers:{open:{this:"{that}.container",method:"tooltip",args:"open"},close:{funcName:"fluid.tooltip.closeAll",args:"{that}"},updateContent:{changePath:"content",value:"{arguments}.0"},computeContentFunc:{funcName:"fluid.tooltip.computeContentFunc",args:["{that}"]},modelToContentFunc:{funcName:"fluid.tooltip.modelToContentFunc",args:"{that}"}},model:{content:"{that}.options.content"},members:{openIdMap:{}},styles:{tooltip:""},events:{afterOpen:null,afterClose:null},listeners:{"onCreate.setup":"fluid.tooltip.setup","onDestroy.doDestroy":"fluid.tooltip.doDestroy"},modelListeners:{"":{funcName:"fluid.tooltip.updateContentImpl",excludeSource:"init",args:"{that}"}},position:{my:"left top",at:"left bottom"},items:"*",delay:300})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.inlineEdit"),fluid.inlineEdit.sendKey=function(control,event,virtualCode,charCode){var kE=document.createEvent("KeyEvents");kE.initKeyEvent(event,1,1,null,0,0,0,0,virtualCode,charCode),control.dispatchEvent(kE)},fluid.inlineEdit.switchToViewMode=function(that){that.editContainer.hide(),that.displayModeRenderer.show()},fluid.inlineEdit.cancel=function(that){that.isEditing()&&(setTimeout(function(){that.editView.value(that.model.value)},1),fluid.inlineEdit.switchToViewMode(that),that.events.afterFinishEdit.fire(that.model.value,that.model.value,that.editField[0],that.viewEl[0]))},fluid.inlineEdit.finish=function(that){var newValue=that.editView.value(),oldValue=that.model.value,viewNode=that.viewEl[0],editNode=that.editField[0];!1!==that.events.onFinishEdit.fire(newValue,oldValue,editNode,viewNode)&&(that.updateModelValue(newValue),that.events.afterFinishEdit.fire(newValue,oldValue,editNode,viewNode),fluid.inlineEdit.switchToViewMode(that))},fluid.inlineEdit.bindEditFinish=function(that){function keyCode(evt){return evt.keyCode?evt.keyCode:evt.which?evt.which:0}void 0===that.options.submitOnEnter&&(that.options.submitOnEnter="textarea"!==fluid.unwrap(that.editField).nodeName.toLowerCase());var button=that.textEditButton||$();that.options.submitOnEnter&&that.editContainer.keypress(function(evt){return keyCode(evt)!==$.ui.keyCode.ENTER?(button.blur(),!0):(fluid.inlineEdit.finish(that),button.focus(),!1)}),that.editContainer.keydown(function(evt){if(keyCode(evt)===$.ui.keyCode.ESCAPE)return button.focus(),fluid.inlineEdit.cancel(that),!1})},fluid.inlineEdit.bindBlurHandler=function(that){if(that.options.blurHandlerBinder)that.options.blurHandlerBinder(that);else{that.editField.blur(function(){return that.isEditing()&&fluid.inlineEdit.finish(that),!1})}},fluid.inlineEdit.initializeEditView=function(that,initial){that.editInitialized||(fluid.inlineEdit.renderEditContainer(that,!that.options.lazyEditView||!initial),that.options.lazyEditView&&initial||(that.events.onCreateEditView.fire(),that.textEditButton&&fluid.inlineEdit.bindEditFinish(that),fluid.inlineEdit.bindBlurHandler(that),that.editView.refreshView(that),that.editInitialized=!0))},fluid.inlineEdit.edit=function(that){fluid.inlineEdit.initializeEditView(that,!1);var viewEl=that.viewEl,displayText=that.displayView.value();that.updateModelValue(""===that.model.value?"":displayText),that.options.applyEditPadding&&that.editField.width(Math.max(viewEl.width()+that.options.paddings.edit,that.options.paddings.minimumEdit)),that.displayModeRenderer.hide(),that.editContainer.show(),setTimeout(function(){that.editField.focus(),that.options.selectOnEdit&&that.editField[0].select()},0),that.events.afterBeginEdit.fire()},fluid.inlineEdit.clearEmptyViewStyles=function(textEl,styles,originalViewPadding){textEl.removeClass(styles.defaultViewStyle),textEl.css("padding-right",originalViewPadding),textEl.removeClass(styles.emptyDefaultViewText)},fluid.inlineEdit.showDefaultViewText=function(that){that.displayView.value(that.options.strings.defaultViewText),that.viewEl.css("padding-right",that.existingPadding),that.viewEl.addClass(that.options.styles.defaultViewStyle)},fluid.inlineEdit.showNothing=function(that){that.displayView.value(""),$.browser.msie&&"inline"===that.viewEl.css("display")&&that.viewEl.css("display","inline-block")},fluid.inlineEdit.showEditedText=function(that){that.displayView.value(that.model.value),fluid.inlineEdit.clearEmptyViewStyles(that.viewEl,that.options.styles,that.existingPadding)},fluid.inlineEdit.refreshView=function(that,source){that.displayView.refreshView(that,source),that.editView&&that.editView.refreshView(that,source)},fluid.inlineEdit.updateModelValue=function(that,newValue,source){var comparator=that.options.modelComparator;if(!(comparator?comparator(that.model.value,newValue):that.model.value===newValue)){var oldModel=$.extend(!0,{},that.model);that.model.value=newValue,that.events.modelChanged.fire(that.model,oldModel,source),that.refreshView(source)}},fluid.inlineEdit.editHandler=function(that){return!1!==that.events.onBeginEdit.fire()&&(fluid.inlineEdit.edit(that),!0)},fluid.inlineEdit.initTooltips=function(that){var tooltipOptions={content:that.options.tooltipText,position:{my:"left top",at:"left bottom+25%",of:that.viewEl},target:"*",delay:that.options.tooltipDelay,styles:{tooltip:that.options.styles.tooltip}};fluid.tooltip(that.viewEl,tooltipOptions),that.textEditButton&&fluid.tooltip(that.textEditButton,tooltipOptions)},fluid.inlineEdit.calculateInitialPadding=function(viewEl){var padding=viewEl.css("padding-right");return padding?parseFloat(padding):0},fluid.inlineEdit.setupEditField=function(editStyle,editField,editFieldMarkup){var eField=$(editField);return(eField=eField.length?eField:$(editFieldMarkup)).addClass(editStyle),eField},fluid.inlineEdit.setupEditContainer=function(displayContainer,editField,editContainer,editContainerMarkup){var eContainer=$(editContainer);return eContainer=eContainer.length?eContainer:$(editContainerMarkup),displayContainer.after(eContainer),eContainer.append(editField),eContainer},fluid.inlineEdit.defaultEditModeRenderer=function(that){var editField=fluid.inlineEdit.setupEditField(that.options.styles.edit,that.editField,that.options.markup.editField),editContainer=fluid.inlineEdit.setupEditContainer(that.displayModeRenderer,editField,that.editContainer,that.options.markup.editContainer),editModeInstruction=fluid.inlineEdit.setupEditModeInstruction(that.options.styles.editModeInstruction,that.options.strings.editModeInstruction,that.options.markup.editModeInstruction),id=fluid.allocateSimpleId(editModeInstruction);return editField.attr("aria-describedby",id),fluid.inlineEdit.positionEditModeInstruction(editModeInstruction,editContainer,editField),{container:editContainer,field:editField}},fluid.inlineEdit.renderEditContainer=function(that,lazyEditView){if(that.editContainer=that.locate("editContainer"),that.editField=that.locate("edit"),1!==that.editContainer.length&&1<that.editContainer.length&&fluid.fail("InlineEdit did not find a unique container for selector "+that.options.selectors.editContainer+": "+fluid.dumpEl(that.editContainer)),lazyEditView){var editElms=that.options.editModeRenderer(that);editElms&&(that.editContainer=editElms.container,that.editField=editElms.field)}},fluid.inlineEdit.setupEditModeInstruction=function(editModeInstructionStyle,editModeInstructionText,editModeInstructionMarkup){var editModeInstruction=$(editModeInstructionMarkup);return editModeInstruction.addClass(editModeInstructionStyle),editModeInstruction.text(editModeInstructionText),editModeInstruction},fluid.inlineEdit.positionEditModeInstruction=function(editModeInstruction,editContainer,editField){editContainer.append(editModeInstruction),editField.focus(function(){editModeInstruction.show();var editFieldPosition=editField.offset(),editFieldHeight=parseInt(editField.css("height"),10);editModeInstruction.css({left:editFieldPosition.left}),editModeInstruction.css({top:editFieldPosition.top+editFieldHeight+5})})},fluid.inlineEdit.setupDisplayModeContainer=function(styles,displayModeWrapper){var displayModeContainer=$(displayModeWrapper);return(displayModeContainer=displayModeContainer.length?displayModeContainer:$("<span></span>")).addClass(styles.displayView),displayModeContainer},fluid.inlineEdit.setupDisplayText=function(viewEl,textStyle){return viewEl.attr("tabindex","-1"),viewEl.addClass(textStyle),viewEl},fluid.inlineEdit.setupTextEditButton=function(that,model){var opts=that.options,textEditButton=that.locate("textEditButton");if(0===textEditButton.length){var markup=$(that.options.markup.textEditButton);markup.addClass(opts.styles.textEditButton),markup.text(opts.tooltipText),fluid.inlineEdit.updateTextEditButton(markup,model.value||opts.strings.defaultViewText,opts.strings.textEditButton),that.events.modelChanged.addListener(function(){fluid.inlineEdit.updateTextEditButton(markup,model.value||opts.strings.defaultViewText,opts.strings.textEditButton)}),that.locate("text").after(markup),textEditButton=that.locate("textEditButton")}return textEditButton},fluid.inlineEdit.updateTextEditButton=function(textEditButton,value,stringTemplate){var buttonText=fluid.stringTemplate(stringTemplate,{text:value});textEditButton.text(buttonText)},fluid.inlineEdit.bindHoverHandlers=function(displayModeRenderer,invitationStyle){displayModeRenderer.hover(function(){displayModeRenderer.addClass(invitationStyle)},function(){displayModeRenderer.removeClass(invitationStyle)})},fluid.inlineEdit.bindHighlightHandler=function(element,displayModeRenderer,styles,strings,model){var makeFocusSwitcher=function(focusOn){return function(){displayModeRenderer.toggleClass(styles.focus,focusOn),displayModeRenderer.toggleClass(styles.invitation,focusOn),model&&model.value||displayModeRenderer.prevObject.text(focusOn?strings.defaultFocussedViewText:strings.defaultViewText)}};(element=$(element)).focus(makeFocusSwitcher(!0)),element.blur(makeFocusSwitcher(!1))},fluid.inlineEdit.bindMouseHandlers=function(element,edit){element=$(element);var triggerGuard=fluid.inlineEdit.makeEditTriggerGuard(element,edit);element.click(function(e){return triggerGuard(e),!1})},fluid.inlineEdit.bindKeyboardHandlers=function(element,edit){(element=$(element)).attr("role","button");var guard=fluid.inlineEdit.makeEditTriggerGuard(element,edit);fluid.activatable(element,function(event){return guard(event)})},fluid.inlineEdit.makeEditTriggerGuard=function(jElement,edit){var element=fluid.unwrap(jElement);return function(event){if(fluid.findAncestor(event.target,function(elem){if(/input|select|textarea|button|a/i.test(elem.nodeName)||elem===element)return!0})===element)return edit(),!1}},fluid.inlineEdit.bindEventHandlers=function(that,edit,displayModeContainer){var styles=that.options.styles;fluid.inlineEdit.bindHoverHandlers(displayModeContainer,styles.invitation),fluid.inlineEdit.bindMouseHandlers(that.viewEl,edit),fluid.inlineEdit.bindMouseHandlers(that.textEditButton,edit),fluid.inlineEdit.bindKeyboardHandlers(that.textEditButton,edit),fluid.inlineEdit.bindHighlightHandler(that.viewEl,displayModeContainer,that.options.styles,that.options.strings,that.model),fluid.inlineEdit.bindHighlightHandler(that.textEditButton,displayModeContainer,that.options.styles,that.options.strings,that.model)},fluid.inlineEdit.defaultDisplayModeRenderer=function(that,edit,model){var styles=that.options.styles,displayModeWrapper=fluid.inlineEdit.setupDisplayModeContainer(styles),displayModeContainer=that.viewEl.wrap(displayModeWrapper).parent();return that.textEditButton=fluid.inlineEdit.setupTextEditButton(that,model),displayModeContainer.append(that.textEditButton),fluid.inlineEdit.bindEventHandlers(that,edit,displayModeContainer),displayModeContainer},fluid.inlineEdit.getNodeName=function(element){return fluid.unwrap(element).nodeName.toLowerCase()},fluid.defaults("fluid.inlineEdit.standardAccessor",{gradeNames:["fluid.viewComponent"],members:{nodeName:{expander:{funcName:"fluid.inlineEdit.getNodeName",args:"{that}.container"}}},invokers:{value:{funcName:"fluid.inlineEdit.standardAccessor.value",args:["{that}.nodeName","{that}.container","{arguments}.0"]}}}),fluid.inlineEdit.standardAccessor.value=function(nodeName,element,newValue){return fluid["input"===nodeName||"textarea"===nodeName?"value":"text"]($(element),newValue)},fluid.defaults("fluid.inlineEdit.standardDisplayView",{gradeNames:["fluid.viewComponent"],invokers:{refreshView:{funcName:"fluid.inlineEdit.standardDisplayView.refreshView",args:["{fluid.inlineEdit}","{that}.container","{arguments}.0"]}}}),fluid.inlineEdit.standardDisplayView.refreshView=function(componentThat){componentThat.model.value?fluid.inlineEdit.showEditedText(componentThat):componentThat.options.strings.defaultViewText?fluid.inlineEdit.showDefaultViewText(componentThat):fluid.inlineEdit.showNothing(componentThat),0===$.trim(componentThat.viewEl.text()).length&&(componentThat.viewEl.addClass(componentThat.options.styles.emptyDefaultViewText),componentThat.existingPadding<componentThat.options.paddings.minimumView&&componentThat.viewEl.css("padding-right",componentThat.options.paddings.minimumView))},fluid.defaults("fluid.inlineEdit.standardEditView",{gradeNames:["fluid.viewComponent"],invokers:{refreshView:{funcName:"fluid.inlineEdit.standardEditView.refreshView",args:["{fluid.inlineEdit}","{that}.container","{arguments}.0"]}}}),fluid.inlineEdit.standardEditView.refreshView=function(componentThat,editField,source){(!source||editField&&-1===editField.index(source))&&componentThat.editView.value(componentThat.model.value)},fluid.inlineEdit.setup=function(that){that.editContainer&&that.editContainer.hide(),that.tooltipEnabled()&&fluid.inlineEdit.initTooltips(that)},fluid.inlineEdit.setIsEditing=function(that,state){that.isEditingState=state},fluid.inlineEdit.tooltipEnabled=function(useTooltip){return useTooltip&&$.fn.tooltip},fluid.inlineEdit.processUndoDecorator=function(that){if(that.options.componentDecorators){var decorator=fluid.makeArray(that.options.componentDecorators)[0];"string"==typeof decorator&&(decorator={type:decorator}),"fluid.undoDecorator"===decorator.type&&(fluid.set(that.options,["components","undo"],{type:"fluid.undo",options:decorator.options}),that.decorators=[fluid.initDependent(that,"undo")])}},fluid.defaults("fluid.inlineEdit",{gradeNames:["fluid.undoable","fluid.viewComponent"],mergePolicy:{"strings.defaultViewText":"defaultViewText"},members:{isEditingState:!1,viewEl:{expander:{funcName:"fluid.inlineEdit.setupDisplayText",args:["{that}.dom.text","{that}.options.styles.text"]}},existingPadding:{expander:{funcName:"fluid.inlineEdit.calculateInitialPadding",args:"{that}.viewEl"}},displayModeRenderer:{expander:{func:"{that}.options.displayModeRenderer",args:["{that}","{that}.edit","{that}.model"]}}},invokers:{edit:{funcName:"fluid.inlineEdit.editHandler",args:"{that}"},isEditing:{funcName:"fluid.identity",args:"{that}.isEditingState"},finish:{funcName:"fluid.inlineEdit.finish",args:"{that}"},cancel:{funcName:"fluid.inlineEdit.cancel",args:"{that}"},tooltipEnabled:{funcName:"fluid.inlineEdit.tooltipEnabled",args:"{that}.options.useTooltip"},refreshView:{funcName:"fluid.inlineEdit.refreshView",args:["{that}","{arguments}.0"]},updateModelValue:{funcName:"fluid.inlineEdit.updateModelValue",args:["{that}","{arguments}.0","{arguments}.1"]},updateModel:{funcName:"fluid.inlineEdit.updateModelValue",args:["{that}","{arguments}.0.value","{arguments}.1"]}},components:{displayView:{type:"{that}.options.displayView.type",container:"{that}.viewEl",options:{gradeNames:"{fluid.inlineEdit}.options.displayAccessor.type"}},editView:{type:"{that}.options.editView.type",createOnEvent:"onCreateEditView",container:"{that}.editField",options:{gradeNames:"{fluid.inlineEdit}.options.editAccessor.type"}}},model:{value:{expander:{func:"{that}.displayView.value"}}},selectors:{text:".flc-inlineEdit-text",editContainer:".flc-inlineEdit-editContainer",edit:".flc-inlineEdit-edit",textEditButton:".flc-inlineEdit-textEditButton"},styles:{text:"fl-inlineEdit-text",edit:"fl-inlineEdit-edit",invitation:"fl-inlineEdit-invitation",defaultViewStyle:"fl-inlineEdit-emptyText-invitation",emptyDefaultViewText:"fl-inlineEdit-emptyDefaultViewText",focus:"fl-inlineEdit-focus",tooltip:"fl-inlineEdit-tooltip",editModeInstruction:"fl-inlineEdit-editModeInstruction",displayView:"fl-inlineEdit-simple-editableText fl-inlineEdit-textContainer",textEditButton:"fl-hidden-accessible"},events:{modelChanged:null,onBeginEdit:"preventable",afterBeginEdit:null,onFinishEdit:"preventable",afterFinishEdit:null,afterInitEdit:null,onCreateEditView:null},listeners:{onCreate:[{func:"{that}.refreshView"},{funcName:"fluid.inlineEdit.initializeEditView",args:["{that}",!0]},{funcName:"fluid.inlineEdit.setup",args:"{that}"},{funcName:"fluid.inlineEdit.processUndoDecorator",args:"{that}"}],onBeginEdit:{funcName:"fluid.inlineEdit.setIsEditing",args:["{that}",!0]},afterFinishEdit:{funcName:"fluid.inlineEdit.setIsEditing",args:["{that}",!1]}},strings:{textEditButton:"Edit text %text",editModeInstruction:"Escape to cancel, Enter or Tab when finished",defaultViewText:"Click here to edit",defaultFocussedViewText:"Click here or press enter to edit"},markup:{editField:"<input type='text' class='flc-inlineEdit-edit'/>",editContainer:"<span></span>",editModeInstruction:"<p></p>",textEditButton:"<a href='#_' class='flc-inlineEdit-textEditButton'></a>"},paddings:{edit:10,minimumEdit:80,minimumView:60},applyEditPadding:!0,blurHandlerBinder:null,submitOnEnter:void 0,modelComparator:null,displayAccessor:{type:"fluid.inlineEdit.standardAccessor"},displayView:{type:"fluid.inlineEdit.standardDisplayView"},editAccessor:{type:"fluid.inlineEdit.standardAccessor"},editView:{type:"fluid.inlineEdit.standardEditView"},displayModeRenderer:fluid.inlineEdit.defaultDisplayModeRenderer,editModeRenderer:fluid.inlineEdit.defaultEditModeRenderer,lazyEditView:!1,useTooltip:!0,tooltipText:"Select or press Enter to edit",tooltipDelay:1e3,selectOnEdit:!1}),fluid.setupInlineEdits=function(that,editables){return fluid.transform(editables,function(editable,i){var componentDef={type:"fluid.inlineEdit",container:editable},name="inlineEdit-"+i;return fluid.set(that.options,["components",name],componentDef),fluid.initDependent(that,name)})},fluid.defaults("fluid.inlineEditsComponent",{gradeNames:["fluid.viewComponent"],distributeOptions:{source:"{that}.options",exclusions:["members.inlineEdits","members.modelRelay","members.applier","members.model","selectors.editables","events"],removeSource:!0,target:"{that > fluid.inlineEdit}.options"},members:{inlineEdits:{expander:{funcName:"fluid.setupInlineEdits",args:["{that}","{that}.dom.editables"]}}},selectors:{editables:".flc-inlineEditable"}}),fluid.inlineEdits=function(container,options){return fluid.inlineEditsComponent(container,options).inlineEdits}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.inlineEdit.editorViewAccessor",{gradeNames:["fluid.viewComponent"],invokers:{value:{funcName:"fluid.inlineEdit.editorViewAccessor.value",args:["{that}.container","{that}.options","{arguments}.0"]}}}),fluid.inlineEdit.editorViewAccessor.value=function(editField,options,newValue){var editor=options.editorGetFn(editField);return editor&&0!==editor.length?void 0===newValue?options.getValueFn(editor):void options.setValueFn(editField,editor,newValue):(void 0!==newValue&&$(editField).val(newValue),"")},fluid.defaults("fluid.inlineEdit.richTextViewAccessor",{gradeNames:["fluid.viewComponent"],invokers:{value:{funcName:"fluid.inlineEdit.richTextViewAccessor.value",args:["{that}.container","{arguments}.0"]}}}),fluid.inlineEdit.richTextViewAccessor.value=function(element,newValue){return fluid.html(element,newValue)},fluid.inlineEdit.normalizeHTML=function(value){var togo=$.trim(value.replace(/\s+/g," "));return togo=(togo=togo.replace(/\s+<\//g,"</")).replace(/<([a-z0-9A-Z\/]+)>/g,function(match){return match.toLowerCase()})},fluid.inlineEdit.htmlComparator=function(el1,el2){return fluid.inlineEdit.normalizeHTML(el1)===fluid.inlineEdit.normalizeHTML(el2)},fluid.inlineEdit.bindRichTextHighlightHandler=function(element,displayModeRenderer,invitationStyle){(element=$(element)).focus(function(){displayModeRenderer.addClass(invitationStyle)}),element.blur(function(){displayModeRenderer.removeClass(invitationStyle)})},fluid.inlineEdit.setupRichTextEditButton=function(that){var opts=that.options,textEditButton=that.locate("textEditButton");if(0===textEditButton.length){var markup=$("<a href='#_' class='flc-inlineEdit-textEditButton'></a>");markup.text(opts.strings.textEditButton),that.locate("text").after(markup),textEditButton=that.locate("textEditButton")}return textEditButton},fluid.inlineEdit.richTextDisplayModeRenderer=function(that,edit){var styles=that.options.styles,displayModeWrapper=fluid.inlineEdit.setupDisplayModeContainer(styles),displayModeRenderer=that.viewEl.wrap(displayModeWrapper).parent();return that.textEditButton=fluid.inlineEdit.setupRichTextEditButton(that),displayModeRenderer.append(that.textEditButton),displayModeRenderer.addClass(styles.focus),fluid.inlineEdit.bindHoverHandlers(displayModeRenderer,styles.invitation),fluid.inlineEdit.bindMouseHandlers(that.textEditButton,edit),fluid.inlineEdit.bindKeyboardHandlers(that.textEditButton,edit),fluid.inlineEdit.bindRichTextHighlightHandler(that.viewEl,displayModeRenderer,styles.invitation),fluid.inlineEdit.bindRichTextHighlightHandler(that.textEditButton,displayModeRenderer,styles.invitation),displayModeRenderer};var flTinyMCE=fluid.registerNamespace("fluid.inlineEdit.tinyMCE");fluid.inlineEdit.tinyMCE.getEditor=function(editField){return tinyMCE.get(editField.prop("id"))},fluid.inlineEdit.tinyMCE.setValue=function(editField,editor,value){$(editField).val(value),editor.setContent(value,{format:"raw"})},fluid.inlineEdit.tinyMCE.getValue=function(editor){return editor.getContent()},fluid.defaults("fluid.inlineEdit.tinyMCE.viewAccessor",{gradeNames:["fluid.inlineEdit.editorViewAccessor"],editorGetFn:flTinyMCE.getEditor,setValueFn:flTinyMCE.setValue,getValueFn:flTinyMCE.getValue}),fluid.inlineEdit.tinyMCE.blurHandlerBinder=function(that){function focusEditor(editor){setTimeout(function(){tinyMCE.execCommand("mceFocus",!1,that.editField[0].id),editor.selection.select(editor.getBody(),1),editor.selection.collapse(0)},10)}that.events.afterInitEdit.addListener(function(editor){focusEditor(editor);var editorBody=editor.getBody();that.deadMansBlur=fluid.deadMansBlur(that.editField,{cancelByDefault:!0,exclusions:{body:$(editorBody),container:that.container},handler:function(){that[that.options.onBlur]()}})}),that.events.afterBeginEdit.addListener(function(){var editor=tinyMCE.get(that.editField[0].id);editor&&focusEditor(editor),that.deadMansBlur&&that.deadMansBlur.reArm()}),that.events.afterFinishEdit.addListener(function(){that.deadMansBlur.noteProceeded()})},fluid.inlineEdit.tinyMCE.editModeRenderer=function(that){var options=that.options.tinyMCE;options.elements=fluid.allocateSimpleId(that.editField);var oldinit=options.init_instance_callback;options.init_instance_callback=function(instance){that.events.afterInitEdit.fire(instance),oldinit&&oldinit()},setTimeout(function(){tinyMCE.init(options)},1)},fluid.defaults("fluid.inlineEdit.tinyMCE",{gradeNames:["fluid.inlineEdit"],tinyMCE:{mode:"exact",theme:"simple"},listeners:{onCreate:{this:"tinyMCE",method:"init",namespace:"initTinyMCE",args:"{that}.options.tinyMCE"}},useTooltip:!0,selectors:{edit:"textarea"},styles:{invitation:"fl-inlineEdit-richText-invitation",displayView:"fl-inlineEdit-textContainer",text:""},strings:{textEditButton:"Edit"},displayAccessor:{type:"fluid.inlineEdit.richTextViewAccessor"},editAccessor:{type:"fluid.inlineEdit.tinyMCE.viewAccessor"},lazyEditView:!0,defaultViewText:"Click Edit",modelComparator:fluid.inlineEdit.htmlComparator,onBlur:"finish",blurHandlerBinder:fluid.inlineEdit.tinyMCE.blurHandlerBinder,displayModeRenderer:fluid.inlineEdit.richTextDisplayModeRenderer,editModeRenderer:fluid.inlineEdit.tinyMCE.editModeRenderer});var flCKEditor=fluid.registerNamespace("fluid.inlineEdit.CKEditor");fluid.inlineEdit.CKEditor.getEditor=function(editField){return CKEDITOR.instances[editField.prop("id")]},fluid.inlineEdit.CKEditor.setValue=function(editField,editor,value){editor.setData(value)},fluid.inlineEdit.CKEditor.getValue=function(editor){return editor.getData()},fluid.defaults("fluid.inlineEdit.CKEditor.viewAccessor",{gradeNames:["fluid.inlineEdit.editorViewAccessor"],editorGetFn:flCKEditor.getEditor,setValueFn:flCKEditor.setValue,getValueFn:flCKEditor.getValue}),fluid.inlineEdit.CKEditor.focus=function(editor){setTimeout(function(){editor.focus()},0)},fluid.inlineEdit.CKEditor.normalizeHTML=function(value){var togo=fluid.inlineEdit.normalizeHTML(value),angpos=togo.indexOf(">");return-1!==angpos&&angpos<togo.length-1&&" "!==togo.charAt(angpos+1)&&(togo=togo.substring(0,angpos+1)+" "+togo.substring(angpos+1)),togo},fluid.inlineEdit.CKEditor.htmlComparator=function(el1,el2){return fluid.inlineEdit.CKEditor.normalizeHTML(el1)===fluid.inlineEdit.CKEditor.normalizeHTML(el2)},fluid.inlineEdit.CKEditor.blurHandlerBinder=function(that){that.events.afterInitEdit.addListener(fluid.inlineEdit.CKEditor.focus),that.events.afterBeginEdit.addListener(function(){var editor=fluid.inlineEdit.CKEditor.getEditor(that.editField);editor&&fluid.inlineEdit.CKEditor.focus(editor)})},fluid.inlineEdit.CKEditor.editModeRenderer=function(that){var id=fluid.allocateSimpleId(that.editField);$.data(fluid.unwrap(that.editField),"fluid.inlineEdit.CKEditor",that),CKEDITOR.replace(id,that.options.CKEditor).on("instanceReady",function(e){fluid.inlineEdit.CKEditor.focus(e.editor),that.events.afterInitEdit.fire(e.editor)})},fluid.defaults("fluid.inlineEdit.CKEditor",{gradeNames:["fluid.inlineEdit"],selectors:{edit:"textarea"},styles:{invitation:"fl-inlineEdit-richText-invitation",displayView:"fl-inlineEdit-textContainer",text:""},strings:{textEditButton:"Edit"},displayAccessor:{type:"fluid.inlineEdit.richTextViewAccessor"},editAccessor:{type:"fluid.inlineEdit.CKEditor.viewAccessor"},lazyEditView:!0,defaultViewText:"Click Edit",modelComparator:fluid.inlineEdit.CKEditor.htmlComparator,blurHandlerBinder:fluid.inlineEdit.CKEditor.blurHandlerBinder,displayModeRenderer:fluid.inlineEdit.richTextDisplayModeRenderer,editModeRenderer:fluid.inlineEdit.CKEditor.editModeRenderer,CKEditor:{}}),fluid.registerNamespace("fluid.inlineEdit.dropdown"),fluid.inlineEdit.dropdown.editModeRenderer=function(that){return fluid.allocateSimpleId(that.editField),that.editField.selectbox({finishHandler:function(){that.finish()}}),{container:that.editContainer,field:$("input.selectbox",that.editContainer)}},fluid.inlineEdit.dropdown.blurHandlerBinder=function(that){fluid.deadMansBlur(that.editField,{exclusions:{selectBox:$("div.selectbox-wrapper",that.editContainer)},handler:function(){that.cancel()}})},fluid.defaults("fluid.inlineEdit.dropdown",{gradeNames:["fluid.inlineEdit"],applyEditPadding:!1,blurHandlerBinder:fluid.inlineEdit.dropdown.blurHandlerBinder,editModeRenderer:fluid.inlineEdit.dropdown.editModeRenderer})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.window",{gradeNames:["fluid.component","fluid.resolveRootSingle"],singleRootType:"fluid.window",members:{window:window},listeners:{"onCreate.bindEvents":{funcName:"fluid.window.bindEvents",args:["{that}"]}}}),fluid.window.bindEvents=function(that){fluid.each(that.options.events,function(type,eventName){window.addEventListener(eventName,that.events[eventName].fire)})},fluid.registerNamespace("fluid.textToSpeech"),fluid.textToSpeech.isSupported=function(){return!(!window||!window.speechSynthesis)},fluid.textToSpeech.checkTTSSupport=function(delay){var promise=fluid.promise();if(fluid.textToSpeech.isSupported()){var toSpeak=new SpeechSynthesisUtterance("short");toSpeak.volume=0;var timeout=setTimeout(function(){fluid.textToSpeech.invokeSpeechSynthesisFunc("cancel"),promise.reject()},delay||5e3);toSpeak.onend=function(){clearTimeout(timeout),fluid.textToSpeech.invokeSpeechSynthesisFunc("cancel"),promise.resolve()},fluid.textToSpeech.invokeSpeechSynthesisFunc("speak",toSpeak)}else fluid.invokeLater(promise.reject);return promise},fluid.defaults("fluid.textToSpeech",{gradeNames:["fluid.modelComponent","fluid.resolveRootSingle"],singleRootType:"fluid.textToSpeech",events:{onStart:null,onStop:null,onError:null,onSpeechQueued:null,utteranceOnBoundary:null,utteranceOnEnd:null,utteranceOnError:null,utteranceOnMark:null,utteranceOnPause:null,utteranceOnResume:null,utteranceOnStart:null},members:{queue:[]},components:{wndw:{type:"fluid.window",options:{events:{beforeunload:null}}}},dynamicComponents:{utterance:{type:"fluid.textToSpeech.utterance",createOnEvent:"onSpeechQueued",options:{listeners:{"onBoundary.relay":"{textToSpeech}.events.utteranceOnBoundary.fire","onEnd.relay":"{textToSpeech}.events.utteranceOnEnd.fire","onError.relay":"{textToSpeech}.events.utteranceOnError.fire","onMark.relay":"{textToSpeech}.events.utteranceOnMark.fire","onPause.relay":"{textToSpeech}.events.utteranceOnPause.fire","onResume.relay":"{textToSpeech}.events.utteranceOnResume.fire","onStart.relay":"{textToSpeech}.events.utteranceOnStart.fire","onCreate.queue":{this:"{fluid.textToSpeech}.queue",method:"push",args:["{that}"]},"onEnd.destroy":{func:"{that}.destroy",priority:"last"}},utterance:"{arguments}.0"}}},model:{utteranceOpts:{}},modelListeners:{speaking:{listener:"fluid.textToSpeech.toggleSpeak",args:["{that}","{change}.value"]},pauseRequested:{listener:"fluid.textToSpeech.requestControl",args:["{that}","pause","{change}"]},resumeRequested:{listener:"fluid.textToSpeech.requestControl",args:["{that}","resume","{change}"]}},invokers:{queueSpeech:{funcName:"fluid.textToSpeech.queueSpeech",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},cancel:{funcName:"fluid.textToSpeech.cancel",args:["{that}"]},pause:{changePath:"pauseRequested",value:!0,source:"pause"},resume:{changePath:"resumeRequested",value:!0,source:"resume"},getVoices:{func:"{that}.invokeSpeechSynthesisFunc",args:["getVoices"]},speak:{func:"{that}.invokeSpeechSynthesisFunc",args:["speak","{that}.queue.0.utterance"]},invokeSpeechSynthesisFunc:"fluid.textToSpeech.invokeSpeechSynthesisFunc"},listeners:{"onSpeechQueued.speak":{func:"{that}.speak",priority:"last"},"utteranceOnStart.speaking":{changePath:"speaking",value:!0,source:"utteranceOnStart"},"utteranceOnEnd.stop":{funcName:"fluid.textToSpeech.handleEnd",args:["{that}"]},"utteranceOnError.forward":"{that}.events.onError","utteranceOnPause.pause":{changePath:"paused",value:!0,source:"utteranceOnPause"},"utteranceOnResume.resume":{changePath:"paused",value:!1,source:"utteranceOnResume"},"onDestroy.cleanup":{func:"{that}.invokeSpeechSynthesisFunc",args:["cancel"]},"{wndw}.events.beforeunload":{funcName:"{that}.invokeSpeechSynthesisFunc",args:["cancel"],namespace:"cancelSpeechSynthesisOnUnload"}}}),fluid.textToSpeech.invokeSpeechSynthesisFunc=function(method,args){args=fluid.makeArray(args),speechSynthesis[method].apply(speechSynthesis,args)},fluid.textToSpeech.toggleSpeak=function(that,speaking){that.events[speaking?"onStart":"onStop"].fire()},fluid.textToSpeech.requestControl=function(that,control,change){change.value&&(that.applier.change(change.path,!1,"ADD","requestControl"),that.invokeSpeechSynthesisFunc(control))},fluid.textToSpeech.handleEnd=function(that){that.queue.shift();if(that.queue.length)that.applier.change("pending",!0,"ADD","handleEnd.pending");else if(!that.queue.length){var newModel=$.extend({},that.model,{speaking:!1,pending:!1,paused:!1});that.applier.change("",newModel,"ADD","handleEnd.reset")}},fluid.textToSpeech.queueSpeech=function(that,text,interrupt,options){var promise=fluid.promise();interrupt&&that.cancel();var utteranceOpts=$.extend({},that.model.utteranceOpts,options,{text:text});return setTimeout(function(){that.events.onSpeechQueued.fire(utteranceOpts,interrupt),promise.resolve(text)},100),promise},fluid.textToSpeech.cancel=function(that){for(;that.queue.length;){that.queue.shift().events.onEnd.fire()}that.invokeSpeechSynthesisFunc("cancel"),that.invokeSpeechSynthesisFunc("resume")},fluid.defaults("fluid.textToSpeech.utterance",{gradeNames:["fluid.modelComponent"],members:{utterance:{expander:{funcName:"fluid.textToSpeech.utterance.construct",args:["{that}","{that}.options.utteranceEventMap","{that}.options.utterance"]}}},model:{boundary:0},utterance:{},utteranceEventMap:{onboundary:"onBoundary",onend:"onEnd",onerror:"onError",onmark:"onMark",onpause:"onPause",onresume:"onResume",onstart:"onStart"},events:{onBoundary:null,onEnd:null,onError:null,onMark:null,onPause:null,onResume:null,onStart:null},listeners:{"onBoundary.updateModel":{changePath:"boundary",value:"{arguments}.0.charIndex"}}}),fluid.textToSpeech.utterance.construct=function(that,utteranceEventMap,utteranceOpts){var utterance=new SpeechSynthesisUtterance;return $.extend(utterance,utteranceOpts),fluid.each(utteranceEventMap,function(compEventName,utteranceEvent){var compEvent=that.events[compEventName],origHandler=utteranceOpts[utteranceEvent];utterance[utteranceEvent]=compEvent.fire,origHandler&&compEvent.addListener(origHandler,"external")}),utterance}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.orator",{gradeNames:["fluid.viewComponent"],selectors:{controller:".flc-orator-controller",content:".flc-orator-content"},model:{enabled:!0,play:!1},components:{tts:{type:"fluid.textToSpeech"},controller:{type:"fluid.orator.controller",options:{parentContainer:"{orator}.container",model:{playing:"{orator}.model.play",enabled:"{orator}.model.enabled"}}},selectionReader:{type:"fluid.orator.selectionReader",container:"{that}.container",options:{model:{enabled:"{orator}.model.enabled"}}},domReader:{type:"fluid.orator.domReader",container:"{that}.dom.content",options:{model:{tts:{enabled:"{orator}.model.enabled"}},listeners:{"utteranceOnEnd.domReaderStop":{changePath:"{orator}.model.play",value:!1,source:"domReader.utteranceOnEnd",priority:"after:removeHighlight"}},modelListeners:{"{orator}.model.play":{funcName:"fluid.orator.handlePlayToggle",args:["{that}","{change}.value"],namespace:"domReader.handlePlayToggle"}}}}},modelListeners:{enabled:{listener:"fluid.orator.cancelWhenDisabled",args:["{tts}.cancel","{change}.value"],namespace:"orator.clearSpeech"}},distributeOptions:[{source:"{that}.options.tts",target:"{that tts}.options",removeSource:!0,namespace:"ttsOpts"},{source:"{that}.options.controller",target:"{that controller}.options",removeSource:!0,namespace:"controllerOpts"},{source:"{that}.options.domReader",target:"{that domReader}.options",removeSource:!0,namespace:"domReaderOpts"},{source:"{that}.options.selectionReader",target:"{that selectionReader}.options",removeSource:!0,namespace:"selectionReaderOpts"}]}),fluid.orator.cancelWhenDisabled=function(cancelFn,state){state||cancelFn()},fluid.orator.handlePlayToggle=function(that,state){state?that.play():that.pause()},fluid.defaults("fluid.orator.controller",{gradeNames:["fluid.containerRenderingView"],selectors:{playToggle:".flc-orator-controller-playToggle"},styles:{play:"fl-orator-controller-play"},strings:{play:"play",pause:"pause"},model:{playing:!1,enabled:!0},injectionType:"prepend",markup:{container:'<div class="flc-orator-controller fl-orator-controller"><div class="fl-icon-orator" aria-hidden="true"></div><button class="flc-orator-controller-playToggle"><span class="fl-orator-controller-playToggle fl-icon-orator-playToggle" aria-hidden="true"></span></button></div>'},invokers:{play:{changePath:"playing",value:!0,source:"play"},pause:{changePath:"playing",value:!1,source:"pause"},toggle:{funcName:"fluid.orator.controller.toggleState",args:["{that}","{arguments}.0","{arguments}.1"]}},listeners:{"onCreate.bindClick":{listener:"fluid.orator.controller.bindClick",args:["{that}"]}},modelListeners:{playing:{listener:"fluid.orator.controller.setToggleView",args:["{that}","{change}.value"]},enabled:{this:"{that}.container",method:"toggle",args:["{change}.value"],namespace:"toggleView"}}}),fluid.orator.controller.bindClick=function(that){that.locate("playToggle").click(function(){that.toggle("playing")})},fluid.orator.controller.toggleState=function(that,path,state){var newState=fluid.isValue(state)?state:!fluid.get(that.model,path);that.applier.change(path,!!newState,"ADD","toggleState")},fluid.orator.controller.setToggleView=function(that,state){var playToggle=that.locate("playToggle");playToggle.toggleClass(that.options.styles.play,state),playToggle.attr({"aria-label":that.options.strings[state?"pause":"play"]})},fluid.defaults("fluid.orator.domReader",{gradeNames:["fluid.viewComponent"],selectors:{highlight:".flc-orator-highlight"},markup:{highlight:'<mark class="flc-orator-highlight fl-orator-highlight"></mark>'},events:{onQueueSpeech:null,onReadFromDOM:null,utteranceOnEnd:null,utteranceOnBoundary:null,utteranceOnError:null,utteranceOnMark:null,utteranceOnPause:null,utteranceOnResume:null,utteranceOnStart:null},utteranceEventMap:{onboundary:"utteranceOnBoundary",onend:"utteranceOnEnd",onerror:"utteranceOnError",onmark:"utteranceOnMark",onpause:"utteranceOnPause",onresume:"utteranceOnResume",onstart:"utteranceOnStart"},model:{tts:{paused:!1,speaking:!1,enabled:!0},parseQueueLength:0,parseIndex:null,ttsBoundary:null},modelRelay:[{target:"parseIndex",backward:"never",namespace:"getClosestIndex",singleTransform:{type:"fluid.transforms.free",func:"fluid.orator.domReader.getClosestIndex",args:["{that}","{that}.model.ttsBoundary"]}}],members:{parseQueue:[],range:{expander:{this:"document",method:"createRange"}}},components:{parser:{type:"fluid.textNodeParser",options:{invokers:{hasTextToRead:"fluid.textNodeParser.hasVisibleText"},listeners:{"onParsedTextNode.addToParseQueue":"{domReader}.addToParseQueue"}}}},invokers:{parsedToString:"fluid.orator.domReader.parsedToString",readFromDOM:{funcName:"fluid.orator.domReader.readFromDOM",args:["{that}","{that}.container"]},removeHighlight:{funcName:"fluid.orator.domReader.unWrap",args:["{that}.dom.highlight"]},addToParseQueue:{funcName:"fluid.orator.domReader.addToParseQueue",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},resetParseQueue:{funcName:"fluid.orator.domReader.resetParseQueue",args:["{that}"]},highlight:{funcName:"fluid.orator.domReader.highlight",args:["{that}","{arguments}.0"]},play:{funcName:"fluid.orator.domReader.play",args:["{that}","{fluid.textToSpeech}.resume"]},pause:{funcName:"fluid.orator.domReader.pause",args:["{that}","{fluid.textToSpeech}.pause"]},queueSpeech:{funcName:"fluid.orator.domReader.queueSpeech",args:["{that}","{arguments}.0",!0,"{arguments}.1"]},isWord:"fluid.textNodeParser.isWord"},modelListeners:{highlight:{listener:"{that}.highlight",path:["parseIndex","parseQueueLength"]}},listeners:{"onQueueSpeech.removeExtraWhiteSpace":"fluid.orator.domReader.removeExtraWhiteSpace","onQueueSpeech.queueSpeech":{func:"{fluid.textToSpeech}.queueSpeech",args:["{arguments}.0","{arguments}.1.interrupt","{arguments}.1"],priority:"after:removeExtraWhiteSpace"},"utteranceOnEnd.resetParseQueue":{listener:"{that}.resetParseQueue"},"utteranceOnEnd.removeHighlight":{listener:"{that}.removeHighlight",priority:"after:resetParseQueue"},"utteranceOnEnd.updateTTSModel":{changePath:"tts",value:{speaking:!1,paused:!1}},"utteranceOnStart.updateTTSModel":{changePath:"tts",value:{speaking:!0,paused:!1}},"utteranceOnPause.updateTTSModel":{changePath:"tts",value:{speaking:!0,paused:!0}},"utteranceOnResume.updateTTSModel":{changePath:"tts",value:{speaking:!0,paused:!1}},"utteranceOnBoundary.setCurrentBoundary":{changePath:"ttsBoundary",value:"{arguments}.0.charIndex",source:"utteranceOnBoundary"},"onDestroy.detachRange":{this:"{that}.range",method:"detach"}}}),fluid.orator.domReader.play=function(that,resumeFn){that.model.tts.enabled&&(that.model.tts.paused?resumeFn():that.model.tts.speaking||that.readFromDOM())},fluid.orator.domReader.pause=function(that,pauseFn){that.model.tts.speaking&&!that.model.tts.paused&&pauseFn()},fluid.orator.domReader.mapUtteranceEvents=function(that,utterance,utteranceEventMap){fluid.each(utteranceEventMap,function(compEventName,utteranceEvent){var compEvent=that.events[compEventName];utterance[utteranceEvent]=compEvent.fire})},fluid.orator.domReader.removeExtraWhiteSpace=function(text){var promise=fluid.promise(),str=text.toString();return(str=str.trim())?promise.resolve(str):promise.reject("The text is empty"),promise},fluid.orator.domReader.queueSpeech=function(that,text,interrupt,options){return(options=options||{}).interrupt=interrupt||options.interrupt,fluid.orator.domReader.mapUtteranceEvents(that,options,that.options.utteranceEventMap),fluid.promise.fireTransformEvent(that.events.onQueueSpeech,text,options)},fluid.orator.domReader.unWrap=function(elm){if((elm=$(elm)).length){var parent=elm.parent();elm.contents().unwrap(),parent[0].normalize()}},fluid.orator.domReader.addToParseQueue=function(that,textNode,lang,childIndex){var lastParsed=that.parseQueue[that.parseQueue.length-1]||{},words=textNode.textContent.split(/(\s+)/),parsed={blockIndex:(lastParsed.blockIndex||0)+(fluid.get(lastParsed,["word","length"])||0),startOffset:0,node:textNode,childIndex:childIndex,parentNode:textNode.parentNode,lang:lang};fluid.each(words,function(word){var lastIsWord=that.isWord(lastParsed.word),currentIsWord=that.isWord(word);lastIsWord&&currentIsWord?(lastParsed.word+=word,lastParsed.endOffset+=word.length,parsed.blockIndex+=word.length,parsed.startOffset+=word.length):(parsed.word=word,parsed.endOffset=parsed.startOffset+word.length,(currentIsWord||word&&lastIsWord)&&(lastParsed=fluid.copy(parsed),that.parseQueue.push(lastParsed),that.applier.change("parseQueueLength",that.parseQueue.length,"ADD","addToParseQueue"),parsed.blockIndex+=word.length),parsed.startOffset=parsed.endOffset)})},fluid.orator.domReader.resetParseQueue=function(that){that.parseQueue=[],that.applier.change("",{parseQueueLength:0,parseIndex:null,ttsBoundary:null},"ADD","resetParseQueue")},fluid.orator.domReader.parsedToString=function(parsed){return fluid.transform(parsed,function(block){return block.word}).join("")},fluid.orator.domReader.readFromDOM=function(that,elm){(elm=$(elm)).length&&(that.resetParseQueue(),that.parser.parse(elm[0]),that.queueSpeech(that.parsedToString(that.parseQueue)))},fluid.orator.domReader.getClosestIndex=function(that,boundary){var parseQueue=that.parseQueue;if(parseQueue.length&&fluid.isValue(boundary)){var maxIndex=Math.max(parseQueue.length-1,0),index=Math.max(Math.min(that.model.parseIndex||0,maxIndex),0),maxBoundary=parseQueue[maxIndex].blockIndex+parseQueue[maxIndex].word.length;if(!(maxBoundary<boundary||boundary<0)){for(;0<=index;){var nextIndex=index+1,prevIndex=index-1,currentBlockIndex=parseQueue[index].blockIndex,nextBlockIndex=index<maxIndex?parseQueue[nextIndex].blockIndex:maxBoundary+1;if(currentBlockIndex<=boundary&&boundary<nextBlockIndex)break;index=boundary<currentBlockIndex?prevIndex:nextIndex}return index}}},fluid.orator.domReader.findTextNode=function(node){if(node){if(node.nodeType===Node.TEXT_NODE)return node;for(var children=node.childNodes,i=0;i<children.length;i++){var textNode=fluid.orator.domReader.findTextNode(children[i]);if(void 0!==textNode)return textNode}}},fluid.orator.domReader.getTextNodeFromSibling=function(node){for(;node.nextSibling;){node=node.nextSibling;var textNode=fluid.orator.domReader.findTextNode(node);if(textNode)return textNode}},fluid.orator.domReader.getNextTextNode=function(node){var nextTextNode=fluid.orator.domReader.getTextNodeFromSibling(node);if(nextTextNode)return nextTextNode;var parent=node.parentNode;return parent?fluid.orator.domReader.getNextTextNode(parent):void 0},fluid.orator.domReader.setRangeEnd=function(range,node,end){if(end<=node.length)range.setEnd(node,end);else{var nextTextNode=fluid.orator.domReader.getNextTextNode(node);fluid.orator.domReader.setRangeEnd(range,nextTextNode,end-node.length)}},fluid.orator.domReader.highlight=function(that){if(that.removeHighlight(),that.model.parseQueueLength&&fluid.isValue(that.model.parseIndex)){var data=that.parseQueue[that.model.parseIndex],rangeNode=data.parentNode.childNodes[data.childIndex];that.range.selectNode(rangeNode),that.range.setStart(rangeNode,data.startOffset),fluid.orator.domReader.setRangeEnd(that.range,rangeNode,data.endOffset),that.range.surroundContents($(that.options.markup.highlight)[0])}},fluid.defaults("fluid.orator.selectionReader",{gradeNames:["fluid.viewComponent"],selectors:{control:".flc-orator-selectionReader-control",controlLabel:".flc-orator-selectionReader-controlLabel"},strings:{play:"play",stop:"stop"},styles:{above:"fl-orator-selectionReader-above",below:"fl-orator-selectionReader-below",control:"fl-orator-selectionReader-control"},markup:{control:'<button class="flc-orator-selectionReader-control"><span class="fl-icon-orator"></span><span class="flc-orator-selectionReader-controlLabel"></span></button>'},model:{enabled:!0,showUI:!1,play:!1,text:""},offsetScale:{edge:3,pointer:3},events:{onSelectionChanged:null,utteranceOnEnd:null,onToggleControl:null},listeners:{"onCreate.bindEvents":{funcName:"fluid.orator.selectionReader.bindSelectionEvents",args:["{that}"]},"onSelectionChanged.updateText":"{that}.getSelectedText","utteranceOnEnd.stop":{changePath:"play",value:!1,source:"stopMethod"},"onToggleControl.togglePlay":"{that}.toggle"},modelListeners:{showUI:{funcName:"fluid.orator.selectionReader.renderControl",args:["{that}","{change}.value"],namespace:"render"},text:{func:"{that}.stop",namespace:"stopPlayingWhenTextChanges"},play:[{func:"fluid.orator.selectionReader.queueSpeech",args:["{that}","{change}.value","{fluid.textToSpeech}.queueSpeech"],namespace:"queueSpeech"},{func:"fluid.orator.selectionReader.renderControlState",args:["{that}","{that}.dom.control","{arguments}.0"],namespace:"renderControlState"}],enabled:{funcName:"fluid.orator.selectionReader.updateText",args:["{that}","{change}.value"],namespace:"updateText"}},modelRelay:[{source:"text",target:"showUI",backward:"never",namespace:"showUIControl",singleTransform:{type:"fluid.transforms.stringToBoolean"}}],invokers:{getSelectedText:{changePath:"text",value:{expander:{funcName:"fluid.orator.selectionReader.getSelectedText"}},source:"getSelectedText"},play:{changePath:"play",value:!0,source:"playMethod"},stop:{funcName:"fluid.orator.selectionReader.stopSpeech",args:["{that}.model.play","{fluid.textToSpeech}.cancel"]},toggle:{funcName:"fluid.orator.selectionReader.togglePlay",args:["{that}","{arguments}.0"]}}}),fluid.orator.selectionReader.stopSpeech=function(state,cancelFn){state&&cancelFn()},fluid.orator.selectionReader.queueSpeech=function(that,state,speechFn){state&&speechFn(that.model.text,!0,{onend:that.events.utteranceOnEnd.fire})},fluid.orator.selectionReader.bindSelectionEvents=function(that){$(document).on("selectionchange",function(e){that.model.enabled&&that.events.onSelectionChanged.fire(e)})},fluid.orator.selectionReader.updateText=function(that,state){state?that.getSelectedText():that.applier.change("text","","ADD","updateText")},fluid.orator.selectionReader.getSelectedText=function(){return window.getSelection().toString()},fluid.orator.selectionReader.location={TOP:0,RIGHT:1,BOTTOM:2,LEFT:3},fluid.orator.selectionReader.calculatePosition=function(rect,margin,fontSize,offsetScale){var edgeOffset=fontSize*(fluid.get(offsetScale,"edge")||1),pointerOffset=fontSize*(fluid.get(offsetScale,"pointer")||1),scrollTop=document.documentElement.scrollTop||document.body.scrollTop,scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft,position={top:scrollTop-margin.top,left:Math.min(Math.max(rect.left+scrollLeft-margin.left,edgeOffset+scrollLeft),document.documentElement.clientWidth+scrollLeft-margin.left-edgeOffset)};return rect.top<edgeOffset?(position.top=position.top+rect.bottom,position.location=fluid.orator.selectionReader.location.BOTTOM):(position.top=position.top+rect.top-pointerOffset,position.location=fluid.orator.selectionReader.location.TOP),position},fluid.orator.selectionReader.renderControlState=function(that,control){var text=that.options.strings[that.model.play?"stop":"play"];control.find(that.options.selectors.controlLabel).text(text)},fluid.orator.selectionReader.renderControl=function(that,state){if(state){var selectionRange=window.getSelection().getRangeAt(0),rect=selectionRange.getClientRects()[0],fontSize=parseFloat(that.container.css("font-size")),margin={top:parseFloat(that.container.css("margin-top")),left:parseFloat(that.container.css("margin-left"))},position=fluid.orator.selectionReader.calculatePosition(rect,margin,fontSize,that.options.offsetScale),control=$(that.options.markup.control);control.addClass(that.options.styles.control),fluid.orator.selectionReader.renderControlState(that,control),control.css({top:position.top,left:position.left});var positionClass=that.options.styles[position.location===fluid.orator.selectionReader.location.TOP?"above":"below"];control.addClass(positionClass),control.click(function(){that.events.onToggleControl.fire()}),control.appendTo(that.container),selectionRange.detach()}else that.locate("control").remove()},fluid.orator.selectionReader.togglePlay=function(that,state){that[state||!that.model.play?"play":"stop"]()}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.XMLP=function(strXML){return fluid.XMLP.XMLPImpl(strXML)},fluid.XMLP.closedTags={abbr:!0,br:!0,col:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,hr:!0,area:!0,embed:!0},fluid.XMLP._NONE=0,fluid.XMLP._ELM_B=1,fluid.XMLP._ELM_E=2,fluid.XMLP._ELM_EMP=3,fluid.XMLP._ATT=4,fluid.XMLP._TEXT=5,fluid.XMLP._ENTITY=6,fluid.XMLP._PI=7,fluid.XMLP._CDATA=8,fluid.XMLP._COMMENT=9,fluid.XMLP._DTD=10,fluid.XMLP._ERROR=11,fluid.XMLP._CONT_XML=0,fluid.XMLP._CONT_ALT=1,fluid.XMLP._ATT_NAME=0,fluid.XMLP._ATT_VAL=1,fluid.XMLP._STATE_PROLOG=1,fluid.XMLP._STATE_DOCUMENT=2,fluid.XMLP._STATE_MISC=3,fluid.XMLP._errs=[],fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_PI=0]="PI: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_DTD=1]="DTD: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_COMMENT=2]="Comment: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_CDATA=3]="CDATA: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_ELM=4]="Element: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_ENTITY=5]="Entity: missing closing sequence",fluid.XMLP._errs[fluid.XMLP.ERR_PI_TARGET=6]="PI: target is required",fluid.XMLP._errs[fluid.XMLP.ERR_ELM_EMPTY=7]="Element: cannot be both empty and closing",fluid.XMLP._errs[fluid.XMLP.ERR_ELM_NAME=8]='Element: name must immediately follow "<"',fluid.XMLP._errs[fluid.XMLP.ERR_ELM_LT_NAME=9]='Element: "<" not allowed in element names',fluid.XMLP._errs[fluid.XMLP.ERR_ATT_VALUES=10]="Attribute: values are required and must be in quotes",fluid.XMLP._errs[fluid.XMLP.ERR_ATT_LT_NAME=11]='Element: "<" not allowed in attribute names',fluid.XMLP._errs[fluid.XMLP.ERR_ATT_LT_VALUE=12]='Attribute: "<" not allowed in attribute values',fluid.XMLP._errs[fluid.XMLP.ERR_ATT_DUP=13]="Attribute: duplicate attributes not allowed",fluid.XMLP._errs[fluid.XMLP.ERR_ENTITY_UNKNOWN=14]="Entity: unknown entity",fluid.XMLP._errs[fluid.XMLP.ERR_INFINITELOOP=15]="Infinite loop",fluid.XMLP._errs[fluid.XMLP.ERR_DOC_STRUCTURE=16]="Document: only comments, processing instructions, or whitespace allowed outside of document element",fluid.XMLP._errs[fluid.XMLP.ERR_ELM_NESTING=17]="Element: must be nested correctly",fluid.XMLP._checkStructure=function(that,iEvent){var stack=that.m_stack;if(fluid.XMLP._STATE_PROLOG==that.m_iState&&(that.m_iState=fluid.XMLP._STATE_DOCUMENT),fluid.XMLP._STATE_DOCUMENT===that.m_iState&&(fluid.XMLP._ELM_B!=iEvent&&fluid.XMLP._ELM_EMP!=iEvent||(that.m_stack[stack.length]=that.getName()),fluid.XMLP._ELM_E==iEvent||fluid.XMLP._ELM_EMP==iEvent)){if(0===stack.length)return fluid.XMLP._NONE;var strTop=stack[stack.length-1];if(that.m_stack.length--,null===strTop||strTop!==that.getName())return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_NESTING)}return iEvent},fluid.XMLP._parseCDATA=function(that,iB){var iE=that.m_xml.indexOf("]]>",iB);return-1==iE?fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_CDATA):(fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB,iE),that.m_iP=iE+3,fluid.XMLP._CDATA)},fluid.XMLP._parseComment=function(that,iB){var iE=that.m_xml.indexOf("--\x3e",iB);return-1==iE?fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_COMMENT):(fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB-4,iE+3),that.m_iP=iE+3,fluid.XMLP._COMMENT)},fluid.XMLP._parseDTD=function(that,iB){var iE,strClose,iInt,iLast;if(-1==(iE=that.m_xml.indexOf(">",iB)))return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_DTD);for(strClose=-1!=(iInt=that.m_xml.indexOf("[",iB))&&iInt<iE?"]>":">";;){if(iE==iLast)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_INFINITELOOP);if(iLast=iE,-1==(iE=that.m_xml.indexOf(strClose,iB)))return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_DTD);if("]]>"!=that.m_xml.substring(iE-1,iE+2))break}return that.m_iP=iE+strClose.length,fluid.XMLP._DTD},fluid.XMLP._parsePI=function(that,iB){var iE,iTB,iTE,iCB,iCE;return-1==(iE=that.m_xml.indexOf("?>",iB))?fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_PI):-1==(iTB=fluid.SAXStrings.indexOfNonWhitespace(that.m_xml,iB,iE))?fluid.XMLP._setErr(that,fluid.XMLP.ERR_PI_TARGET):(-1==(iTE=fluid.SAXStrings.indexOfWhitespace(that.m_xml,iTB,iE))&&(iTE=iE),-1==(iCB=fluid.SAXStrings.indexOfNonWhitespace(that.m_xml,iTE,iE))&&(iCB=iE),-1==(iCE=fluid.SAXStrings.lastIndexOfNonWhitespace(that.m_xml,iCB,iE))&&(iCE=iE-1),that.m_name=that.m_xml.substring(iTB,iTE),fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iCB,iCE+1),that.m_iP=iE+2,fluid.XMLP._PI)},fluid.XMLP._parseText=function(that,iB){var iE=that.m_xml.indexOf("<",iB);return-1==iE&&(iE=that.m_xml.length),fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB,iE),that.m_iP=iE,fluid.XMLP._TEXT},fluid.XMLP._setContent=function(that,iSrc){var args=arguments;fluid.XMLP._CONT_XML==iSrc?(that.m_cAlt=null,that.m_cB=args[2],that.m_cE=args[3]):(that.m_cAlt=args[2],that.m_cB=0,that.m_cE=args[2].length),that.m_cSrc=iSrc},fluid.XMLP._setErr=function(that,iErr){var strErr=fluid.XMLP._errs[iErr];return that.m_cAlt=strErr,that.m_cB=0,that.m_cE=strErr.length,that.m_cSrc=fluid.XMLP._CONT_ALT,fluid.XMLP._ERROR},fluid.XMLP._parseElement=function(that,iB){var iE,iDE,iType,strN;if(iDE=iE=that.m_xml.indexOf(">",iB),-1==iE)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_ELM);if("/"==that.m_xml.charAt(iB)?(iType=fluid.XMLP._ELM_E,iB++):iType=fluid.XMLP._ELM_B,"/"==that.m_xml.charAt(iE-1)){if(iType==fluid.XMLP._ELM_E)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_EMPTY);iType=fluid.XMLP._ELM_EMP,iDE--}that.nameRegex.lastIndex=iB;var nameMatch=that.nameRegex.exec(that.m_xml);if(!nameMatch)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_NAME);if("li"===(strN=nameMatch[1].toLowerCase())&&iType!==fluid.XMLP._ELM_E&&0<that.m_stack.length&&"li"===that.m_stack[that.m_stack.length-1]&&!that.m_emitSynthetic)return that.m_name="li",that.m_emitSynthetic=!0,fluid.XMLP._ELM_E;if(that.m_attributes={},that.m_cAlt="",that.nameRegex.lastIndex<iDE)for(that.m_iP=that.nameRegex.lastIndex;that.m_iP<iDE;){that.attrStartRegex.lastIndex=that.m_iP;var attrMatch=that.attrStartRegex.exec(that.m_xml);if(!attrMatch)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_VALUES);var attrval,attrname=attrMatch[1].toLowerCase();if(61===that.m_xml.charCodeAt(that.attrStartRegex.lastIndex)){var valRegex=34===that.m_xml.charCodeAt(that.attrStartRegex.lastIndex+1)?that.attrValRegex:that.attrValIERegex;if(valRegex.lastIndex=that.attrStartRegex.lastIndex+1,!(attrMatch=valRegex.exec(that.m_xml)))return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_VALUES);attrval=attrMatch[1]}else attrval=attrname,valRegex=that.attrStartRegex;if(that.m_attributes[attrname]&&that.m_attributes[attrname]!==attrval)return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_DUP);that.m_attributes[attrname]=attrval,that.m_iP=valRegex.lastIndex}if(-1!=strN.indexOf("<"))return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_LT_NAME);if(that.m_name=strN,that.m_iP=iE+1,fluid.XMLP.closedTags[strN]){that.closeRegex.lastIndex=iE+1;var closeMatch=that.closeRegex.exec;if(closeMatch)return that.m_xml.indexOf(strN,closeMatch.lastIndex)===closeMatch.lastIndex?iType:fluid.XMLP._ELM_EMP}return that.m_emitSynthetic=!1,iType},fluid.XMLP._parse=function(that){var iP=that.m_iP,xml=that.m_xml;if(iP===xml.length)return fluid.XMLP._NONE;if("<"!==xml.charAt(iP))return fluid.XMLP._parseText(that,iP);var c2=xml.charAt(iP+1);return"?"===c2?fluid.XMLP._parsePI(that,iP+2):"!"!==c2?fluid.XMLP._parseElement(that,iP+1):iP===xml.indexOf("<!DOCTYPE",iP)?fluid.XMLP._parseDTD(that,iP+9):iP===xml.indexOf("\x3c!--",iP)?fluid.XMLP._parseComment(that,iP+4):iP===xml.indexOf("<![CDATA[",iP)?fluid.XMLP._parseCDATA(that,iP+9):void 0},fluid.XMLP.XMLPImpl=function(strXML){var that={};return that.m_xml=strXML,that.m_iP=0,that.m_iState=fluid.XMLP._STATE_PROLOG,that.m_stack=[],that.m_attributes={},that.m_emitSynthetic=!1,that.getColumnNumber=function(){return fluid.SAXStrings.getColumnNumber(that.m_xml,that.m_iP)},that.getContent=function(){return that.m_cSrc==fluid.XMLP._CONT_XML?that.m_xml:that.m_cAlt},that.getContentBegin=function(){return that.m_cB},that.getContentEnd=function(){return that.m_cE},that.getLineNumber=function(){return fluid.SAXStrings.getLineNumber(that.m_xml,that.m_iP)},that.getName=function(){return that.m_name},that.next=function(){return fluid.XMLP._checkStructure(that,fluid.XMLP._parse(that))},that.nameRegex=/([^\s\/>]+)/g,that.attrStartRegex=/\s*([\w:_][\w:_\-\.]*)/gm,that.attrValRegex=/\"([^\"]*)\"\s*/gm,that.attrValIERegex=/([^\>\s]+)\s*/gm,that.closeRegex=/\s*<\//g,that},fluid.SAXStrings={},fluid.SAXStrings.WHITESPACE=" \t\n\r",fluid.SAXStrings.QUOTES="\"'",fluid.SAXStrings.getColumnNumber=function(strD,iP){if(!strD)return-1;iP=iP||strD.length;var arrD=strD.substring(0,iP).split("\n");return arrD.length--,iP-arrD.join("\n").length},fluid.SAXStrings.getLineNumber=function(strD,iP){return strD?(iP=iP||strD.length,strD.substring(0,iP).split("\n").length):-1},fluid.SAXStrings.indexOfNonWhitespace=function(strD,iB,iE){if(!strD)return-1;iB=iB||0,iE=iE||strD.length;for(var i=iB;i<iE;++i){var c=strD.charAt(i);if(" "!==c&&"\t"!==c&&"\n"!==c&&"\r"!==c)return i}return-1},fluid.SAXStrings.indexOfWhitespace=function(strD,iB,iE){if(!strD)return-1;iB=iB||0,iE=iE||strD.length;for(var i=iB;i<iE;i++)if(-1!=fluid.SAXStrings.WHITESPACE.indexOf(strD.charAt(i)))return i;return-1},fluid.SAXStrings.lastIndexOfNonWhitespace=function(strD,iB,iE){if(!strD)return-1;iB=iB||0;for(var i=(iE=iE||strD.length)-1;iB<=i;i--)if(-1==fluid.SAXStrings.WHITESPACE.indexOf(strD.charAt(i)))return i;return-1},fluid.SAXStrings.replace=function(strD,iB,iE,strF,strR){return strD?(iB=iB||0,iE=iE||strD.length,strD.substring(iB,iE).split(strF).join(strR)):""}}(jQuery,fluid_3_0_0),fluid_3_0_0=fluid_3_0_0||{},function($,fluid){"use strict";fluid.parseTemplate=function(template,baseURL,scanStart,cutpoints_in,opts){var t,parser,tagstack;opts=opts||{},template||fluid.fail("empty template supplied to fluid.parseTemplate");var lumpindex=0,nestingdepth=0,justended=!1,defstart=-1,defend=-1,debugMode=!1,cutpoints=[],simpleClassCutpoints={},cutstatus=[],XMLLump=function(lumpindex,nestingdepth){return{nestingdepth:nestingdepth,lumpindex:lumpindex,parent:t}};function isSimpleClassCutpoint(tree){return 1===tree.length&&1===tree[0].predList.length&&tree[0].predList[0].clazz}function newLump(){var togo=XMLLump(lumpindex,nestingdepth);return debugMode&&(togo.line=parser.getLineNumber(),togo.column=parser.getColumnNumber()),t.lumps[lumpindex]=togo,++lumpindex,togo}function addLump(mmap,ID,lump){var list=mmap[ID];list||(list=[],mmap[ID]=list),list[list.length]=lump}function debugLump(lump){return"<"+lump.tagname+">"}function matchNode(term,headlump,headclazz){if(term.predList){for(var i=0;i<term.predList.length;++i){var pred=term.predList[i];if(pred.id&&headlump.attributemap.id!==pred.id)return!1;if(pred.clazz&&(clazz=pred.clazz,!(totest=headclazz)||-1===(" "+totest+" ").indexOf(" "+clazz+" ")))return!1;if(pred.tag&&headlump.tagname!==pred.tag)return!1}return!0}var clazz,totest}function processTagEnd(){!function(){if(cutpoints)for(var i=0;i<cutpoints.length;++i){var cutstat=cutstatus[i];0<cutstat.length&&cutstat[cutstat.length-1]===nestingdepth&&cutstat.length--}}();var endlump=newLump();--nestingdepth,endlump.text="</"+parser.getName()+">",tagstack[tagstack.length-1].close_tag=t.lumps[lumpindex-1],tagstack.length--,justended=!0}function processTagStart(isempty){(++nestingdepth,justended)&&(justended=!1,newLump().nestingdepth--);-1===t.firstdocumentindex&&(t.firstdocumentindex=lumpindex);var headlump=newLump(),stacktop=tagstack[tagstack.length-1];headlump.uplump=stacktop;var tagname=parser.getName();headlump.tagname=tagname;var attrs=headlump.attributemap=parser.m_attributes,ID=attrs[fluid.ID_ATTRIBUTE];for(var attrname in void 0===ID&&(ID=function(headlump){var togo,i,headclazz=headlump.attributemap.class;if(headclazz){var split=headclazz.split(" ");for(i=0;i<split.length;++i){var simpleCut=simpleClassCutpoints[$.trim(split[i])];if(simpleCut)return simpleCut}}for(i=0;i<cutpoints.length;++i){var cut=cutpoints[i],cutstat=cutstatus[i],nextterm=cutstat.length;if(nextterm<cut.tree.length){var term=cut.tree[nextterm];if(0<nextterm&&cut.tree[nextterm-1].child&&cutstat[nextterm-1]!==headlump.nestingdepth-1)continue;matchNode(term,headlump,headclazz)&&(cutstat[cutstat.length]=headlump.nestingdepth,cutstat.length===cut.tree.length&&(void 0!==togo&&fluid.fail("Cutpoint specification error - node "+debugLump(headlump)+" has already matched with rsf:id of "+togo),void 0!==cut.id&&null!==cut.id||fluid.fail("Error in cutpoints list - entry at position "+i+" does not have an id set"),togo=cut.id))}}return togo}(headlump)),attrs)void 0===ID&&(/href|src|codebase|action/.test(attrname)?ID="scr=rewrite-url":void 0===ID&&/for|headers/.test(attrname)&&(ID="scr=null"));if(ID){126===ID.charCodeAt(0)&&(ID=ID.substring(1),headlump.elide=!0),function(ID,lump){if(-1!==ID.indexOf("scr=contribute-")){var scr=ID.substring("scr=contribute-".length);addLump(t.collectmap,scr,lump)}}(ID,headlump),headlump.rsfID=ID;var downreg=function(){for(var i=tagstack.length-1;0<=i;--i){var lump=tagstack[i];if(void 0!==lump.rsfID)return lump}return t.rootlump}();for(downreg.downmap||(downreg.downmap={});downreg;)downreg.downmap&&addLump(downreg.downmap,ID,headlump),downreg=downreg.uplump;addLump(t.globalmap,ID,headlump);var colpos=ID.indexOf(":");if(-1!==colpos){var prefix=ID.substring(0,colpos);stacktop.finallump||(stacktop.finallump={}),stacktop.finallump[prefix]=headlump}}headlump.text="<"+tagname+fluid.dumpAttributes(attrs)+(isempty&&!ID?"/>":">"),tagstack[tagstack.length]=headlump,isempty&&(ID?processTagEnd():(--nestingdepth,tagstack.length--))}function processDefaultTag(){if(-1!==defstart){-1===t.firstdocumentindex&&(t.firstdocumentindex=lumpindex);var text=parser.getContent().substr(defstart,defend-defstart);justended=!1,newLump().text=text,defstart=-1}}t=fluid.XMLViewTemplate(),function(baseURLin,debugModeIn,cutpointsIn){if(t.rootlump=XMLLump(0,-1),tagstack=[t.rootlump],nestingdepth=lumpindex=0,justended=!1,defend=defstart=-1,baseURL=baseURLin,debugMode=debugModeIn,cutpointsIn)for(var i=0;i<cutpointsIn.length;++i){var tree=fluid.parseSelector(cutpointsIn[i].selector,fluid.simpleCSSMatcher),clazz=isSimpleClassCutpoint(tree);clazz?simpleClassCutpoints[clazz]=cutpointsIn[i].id:(cutstatus.push([]),cutpoints.push($.extend({},cutpointsIn[i],{tree:tree})))}}(baseURL,opts.debugMode,cutpoints_in);var idpos=template.indexOf(fluid.ID_ATTRIBUTE);if(scanStart){var brackpos=template.indexOf(">",idpos);parser=fluid.XMLP(template.substring(brackpos+1))}else parser=fluid.XMLP(template);parseloop:for(;;){switch(parser.next()){case fluid.XMLP._ELM_B:processDefaultTag(),processTagStart(!1);break;case fluid.XMLP._ELM_E:processDefaultTag(),processTagEnd();break;case fluid.XMLP._ELM_EMP:processDefaultTag(),processTagStart(!0);break;case fluid.XMLP._PI:case fluid.XMLP._DTD:defstart=-1;continue;case fluid.XMLP._TEXT:case fluid.XMLP._ENTITY:case fluid.XMLP._CDATA:case fluid.XMLP._COMMENT:-1===defstart&&(defstart=parser.m_cB),defend=parser.m_cE;break;case fluid.XMLP._ERROR:fluid.setLogging(!0);var message="Error parsing template: "+parser.m_cAlt+" at line "+parser.getLineNumber();fluid.log(message),fluid.log("Just read: "+parser.m_xml.substring(parser.m_iP-30,parser.m_iP)),fluid.log("Still to read: "+parser.m_xml.substring(parser.m_iP,parser.m_iP+30)),fluid.fail(message);break parseloop;case fluid.XMLP._NONE:break parseloop}}processDefaultTag();var excess=tagstack.length-1;return excess&&fluid.fail("Error parsing template - unclosed tag(s) of depth "+excess+": "+fluid.transform(tagstack.splice(1,excess),function(lump){return debugLump(lump)}).join(", ")),t},fluid.debugLump=function(lump){var togo=lump.text;return togo+=" at ",togo+="lump line "+lump.line+" column "+lump.column+" index "+lump.lumpindex,togo+=null===lump.parent.href?"":" in file "+lump.parent.href},fluid.ID_ATTRIBUTE="rsf:id",fluid.getPrefix=function(id){var colpos=id.indexOf(":");return-1===colpos?id:id.substring(0,colpos)},fluid.SplitID=function(id){var that={},colpos=id.indexOf(":");return-1===colpos?that.prefix=id:(that.prefix=id.substring(0,colpos),that.suffix=id.substring(colpos+1)),that},fluid.XMLViewTemplate=function(){return{globalmap:{},collectmap:{},lumps:[],firstdocumentindex:-1}},fluid.XMLEncode=function(text){return text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;")},fluid.dumpAttributes=function(attrcopy){var togo="";for(var attrname in attrcopy){var attrvalue=attrcopy[attrname];null!=attrvalue&&(togo+=" "+attrname+'="'+attrvalue+'"')}return togo},fluid.aggregateMMap=function(target,source){for(var key in source){target[key]||(target[key]=[]),target[key]=target[key].concat(source[key])}},fluid.parseTemplates=function(resourceSpec,templateList,opts){var togo=[];opts=opts||{},togo.globalmap={};for(var i=0;i<templateList.length;++i){var resource=resourceSpec[templateList[i]],lastslash=resource.href.lastIndexOf("/"),baseURL=-1===lastslash?"":resource.href.substring(0,lastslash+1),template=fluid.parseTemplate(resource.resourceText,baseURL,opts.scanStart&&0===i,resource.cutpoints,opts);0===i&&fluid.aggregateMMap(togo.globalmap,template.globalmap),template.href=resource.href,template.baseURL=baseURL,template.resourceKey=resource.resourceKey,togo[i]=template,fluid.aggregateMMap(togo.globalmap,template.rootlump.downmap)}return togo}}(jQuery,fluid_3_0_0),fluid_3_0_0=fluid_3_0_0||{},function($,fluid){"use strict";function debugPosition(component){return"as child of "+(component.parent.fullID?"component with full ID "+component.parent.fullID:"root")}function computeFullID(component){var togo="",move=component;for(void 0===component.children&&(togo=component.ID+(void 0!==component.localID?component.localID:""),move=component.parent);move.parent;){var parent=move.parent;if(void 0!==move.fullID)return togo=move.fullID+togo;if(void 0===move.noID){var ID=move.ID;void 0===ID&&fluid.fail("Error in component tree - component found with no ID "+debugPosition(parent)+": please check structure");var colpos=ID.indexOf(":");togo=(-1===colpos?ID:ID.substring(0,colpos))+":"+(void 0===move.localID?"":move.localID)+":"+togo}move=parent}return togo}var unzipComponent,renderer={};function processChild(value,key){if(renderer.isBoundPrimitive(value))return{componentType:"UIBound",value:value,ID:key};var unzip=unzipComponent(value);return unzip.ID?{ID:key,componentType:"UIContainer",children:[unzip]}:(unzip.ID=key,unzip)}function fixupValue(uibound,model,resolverGetConfig){void 0===uibound.value&&void 0!==uibound.valuebinding&&(uibound.value=fluid.get(model,uibound.valuebinding,resolverGetConfig))}function upgradeBound(holder,property,model,resolverGetConfig){void 0!==holder[property]?renderer.isBoundPrimitive(holder[property])?holder[property]={value:holder[property]}:holder[property].messagekey&&(holder[property].componentType="UIMessage"):holder[property]={value:null},fixupValue(holder[property],model,resolverGetConfig)}renderer.isBoundPrimitive=function(value){return fluid.isPrimitive(value)||fluid.isArrayable(value)&&(0===value.length||"string"==typeof value[0])},renderer.duckMap={children:"UIContainer",value:"UIBound",valuebinding:"UIBound",messagekey:"UIMessage",markup:"UIVerbatim",selection:"UISelect",target:"UILink",choiceindex:"UISelectChoice",functionname:"UIInitBlock"};renderer.boundMap=fluid.transform({UISelect:["selection","optionlist","optionnames"],UILink:["target","linktext"],UIVerbatim:["markup"],UIMessage:["messagekey"]},fluid.arrayToHash),renderer.inferComponentType=function(component){for(var key in renderer.duckMap)if(void 0!==component[key])return renderer.duckMap[key]},renderer.applyComponentType=function(component){component.componentType=renderer.inferComponentType(component),void 0===component.componentType&&void 0!==component.ID&&(component.componentType="UIBound")},unzipComponent=function(component,model,resolverGetConfig){if(component&&renderer.applyComponentType(component),!component||void 0===component.componentType){var decorators=component.decorators;decorators&&delete component.decorators,(component={componentType:"UIContainer",children:component}).decorators=decorators}var cType=component.componentType;if("UIContainer"===cType)component.children=function(children){if(fluid.isArrayable(children))return children;var togo=[];for(var key in children){var value=children[key];if(fluid.isArrayable(value))for(var i=0;i<value.length;++i){var processed=processChild(value[i],key);togo[togo.length]=processed}else togo[togo.length]=processChild(value,key)}return togo}(component.children);else{var map=renderer.boundMap[cType];map&&fluid.each(map,function(value,key){upgradeBound(component,key,model,resolverGetConfig)})}return component},fluid.NULL_STRING="▩null▩";var LINK_ATTRIBUTES={a:"href",link:"href",img:"src",frame:"src",script:"src",style:"src",input:"src",embed:"src",form:"action",applet:"codebase",object:"codebase"};renderer.decoratorComponentPrefix="**-renderer-",renderer.IDtoComponentName=function(ID,num){return renderer.decoratorComponentPrefix+ID.replace(/\./g,"")+"-"+num},renderer.invokeFluidDecorator=function(func,args,ID,num,options){var that;if(options.parentComponent){var parent=options.parentComponent,name=renderer.IDtoComponentName(ID,num);fluid.set(parent,["options","components",name],{type:func,container:args[0],options:args[1]}),that=fluid.initDependent(options.parentComponent,name)}else that=fluid.invokeGlobalFunction(func,args);return that},fluid.renderer=function(templates,tree,options,fossilsIn){tree=tree||{};var debugMode=(options=options||{}).debugMode;!options.messageLocator&&options.messageSource&&(options.messageLocator=fluid.resolveMessageSource(options.messageSource)),options.document=options.document||document,options.jQuery=options.jQuery||$,options.fossils=options.fossils||fossilsIn||{};var fetchComponent,globalmap={},branchmap={},rewritemap={},seenset={},collected={},out="",renderOptions=options,decoratorQueue=[],renderedbindings={},usedIDs={},that={options:options};function getRewriteKey(template,parent,id){return template.resourceKey+parent.fullID+id}function resolveInScope(searchID,defprefix,scope){var deflump,scopelook=scope?scope[searchID]:null;if(scopelook)for(var i=0;i<scopelook.length;++i){var scopelump=scopelook[i];if(deflump||scopelump.rsfID!==defprefix||(deflump=scopelump),scopelump.rsfID===searchID)return scopelump}return deflump}function resolveBranches(globalmapp,basecontainer,parentlump){rewritemap={},seenset={},collected={},globalmap=globalmapp,function resolveRecurse(basecontainer,parentlump){var i,id,resolved,template,sourcescope,child,searchID,defprefix,match;for(i=0;i<basecontainer.children.length;++i){var branch=basecontainer.children[i];branch.children&&(sourcescope=parentlump,match=void 0,searchID=(child=branch).jointID?child.jointID:child.ID,defprefix=fluid.SplitID(searchID).prefix+":",(resolved=(match=resolveInScope(searchID,defprefix,sourcescope.downmap))||(child.children&&(match=resolveInScope(searchID,defprefix,globalmap))?match:null))&&(void 0!==(id=(branchmap[branch.fullID]=resolved).attributemap.id)&&(rewritemap[getRewriteKey(parentlump.parent,basecontainer,id)]=branch.fullID),template=resolved.parent,seenset[template.href]||(fluid.aggregateMMap(collected,template.collectmap),seenset[template.href]=!0),resolveRecurse(branch,resolved)))}if(parentlump.downmap)for(id in parentlump.downmap){var lumps=parentlump.downmap[id];for(i=0;i<lumps.length;++i){var lump=lumps[i],lumpid=lump.attributemap.id;if(void 0!==lumpid&&void 0!==lump.rsfID&&null!==(resolved=fetchComponent(basecontainer,lump.rsfID))){var resolveID=resolved.fullID;rewritemap[getRewriteKey(parentlump.parent,basecontainer,lumpid)]=resolveID}}}}(basecontainer,(branchmap={})[basecontainer.fullID]=parentlump)}function dumpTillLump(lumps,start,limit){for(;start<limit;++start){lumps[start].text&&(out+=lumps[start].text)}}function dumpScan(lumps,renderindex,basedepth,closeparent,insideleaf){for(var start=renderindex;renderindex!==lumps.length;){var lump=lumps[renderindex];if(lump.nestingdepth<basedepth)break;if(void 0!==lump.rsfID){if(!insideleaf)break;if(!(insideleaf&&lump.nestingdepth>basedepth+(closeparent?0:1)))break;fluid.log("Error in component tree - leaf component found to contain further components - at "+lump.toString())}++renderindex}return closeparent||renderindex!==lumps.length&&lumps[renderindex].rsfID||--renderindex,dumpTillLump(lumps,start,renderindex),renderindex}function isValue(value){return null!=value&&!0}var outDecoratorsImpl,renderRecurse,trc={};function openTag(){trc.iselide||(out+="<"+trc.uselump.tagname)}function closeTag(){trc.iselide||(out+="</"+trc.uselump.tagname+">")}function renderUnchanged(){dumpTillLump(trc.uselump.parent.lumps,trc.uselump.lumpindex+1,trc.close.lumpindex+(trc.iselide?0:1))}function isSelfClose(){return trc.endopen.lumpindex===trc.close.lumpindex&&fluid.XMLP.closedTags[trc.uselump.tagname]}function dumpTemplateBody(){isSelfClose()?trc.iselide||(out+="/>"):(trc.iselide||(out+=">"),dumpTillLump(trc.uselump.parent.lumps,trc.endopen.lumpindex,trc.close.lumpindex+(trc.iselide?0:1)))}function replaceAttributes(){trc.iselide||(out+=fluid.dumpAttributes(trc.attrcopy)),dumpTemplateBody()}function replaceAttributesOpen(){if(trc.iselide)replaceAttributes();else{out+=fluid.dumpAttributes(trc.attrcopy);var selfClose=isSelfClose();out+=selfClose?"/>":">",trc.nextpos=selfClose?trc.close.lumpindex+1:trc.endopen.lumpindex}}function replaceBody(value){out+=fluid.dumpAttributes(trc.attrcopy),trc.iselide||(out+=">"),out+=fluid.XMLEncode(value.toString()),closeTag()}function rewriteLeaf(value){isValue(value)?replaceBody(value):replaceAttributes()}function dumpHiddenField(todump){out+='<input type="hidden" ';var outattrs={};outattrs[todump.virtual?"id":"name"]=todump.name,outattrs.value=todump.value,out+=fluid.dumpAttributes(outattrs),out+=" />\n"}function applyAutoBind(torender,finalID){if(finalID){var tagname=trc.uselump.tagname,applier=renderOptions.applier;if(renderOptions.autoBind&&/input|select|textarea/.test(tagname)&&!renderedbindings[finalID]){var decorators=[{jQuery:["change",applyFunc]}];$.browser.msie&&"input"===tagname&&/radio|checkbox/.test(trc.attrcopy.type)&&decorators.push({jQuery:["click",applyFunc]}),$.browser.safari&&"input"===tagname&&"radio"===trc.attrcopy.type&&decorators.push({jQuery:["keyup",applyFunc]}),outDecoratorsImpl(torender,decorators,trc.attrcopy,finalID)}}function applyFunc(){fluid.applyBoundChange(fluid.byId(finalID,renderOptions.document),void 0,applier)}}function dumpBoundFields(torender,parent){if(torender){var holder=parent||torender;if(renderOptions.fossils&&void 0!==holder.valuebinding){var fossilKey=holder.submittingname||torender.finalID;renderOptions.fossils[fossilKey]={name:fossilKey,EL:holder.valuebinding,oldvalue:holder.value},applyAutoBind(torender,torender.finalID)}torender.fossilizedbinding&&dumpHiddenField(torender.fossilizedbinding),torender.fossilizedshaper&&dumpHiddenField(torender.fossilizedshaper)}}function dumpSelectionBindings(uiselect){renderedbindings[uiselect.selection.fullID]||(renderedbindings[uiselect.selection.fullID]=!0,dumpBoundFields(uiselect.selection),dumpBoundFields(uiselect.optionlist),dumpBoundFields(uiselect.optionnames))}function isSelectedValue(torender,value){var selection=torender.selection;return fluid.isArrayable(selection.value)?-1!==selection.value.indexOf(value):selection.value===value}function adjustForID(attrcopy,component,late,forceID){late||delete attrcopy["rsf:id"],void 0!==component.finalID?attrcopy.id=component.finalID:void 0!==forceID?attrcopy.id=forceID:(attrcopy.id||late)&&(attrcopy.id=component.fullID);for(var from,to,count=1,baseid=attrcopy.id;renderOptions.document.getElementById(attrcopy.id)||usedIDs[attrcopy.id];)attrcopy.id=baseid+"-"+count++;return 1!==count&&(from=baseid,to=attrcopy.id,fluid.each(rewritemap,function(value,key){value===from&&(rewritemap[key]=to)})),component.finalID=attrcopy.id,attrcopy.id}function assignSubmittingName(attrcopy,component,parent){var submitting=parent||component;return adjustForID(attrcopy,component,!0,component.fullID),void 0===submitting.submittingname&&!1!==submitting.willinput&&(submitting.submittingname=submitting.finalID||submitting.fullID),submitting.submittingname}function explodeDecorators(decorators){var togo=[];if(decorators.type)togo[0]=decorators;else for(var key in decorators){"$"===key&&(key="jQuery");var value=decorators[key],decorator={type:key};"jQuery"===key?(decorator.func=value[0],decorator.args=value.slice(1)):"addClass"===key||"removeClass"===key?decorator.classes=value:"attrs"===key?decorator.attributes=value:"identify"===key&&(decorator.key=value),togo[togo.length]=decorator}return togo}function outDecorators(torender,attrcopy){torender.decorators&&(void 0===torender.decorators.length&&(torender.decorators=explodeDecorators(torender.decorators)),outDecoratorsImpl(torender,torender.decorators,attrcopy))}function degradeMessage(torender){if("UIMessage"===torender.componentType)if(torender.componentType="UIBound",renderOptions.messageLocator){upgradeBound(torender,"messagekey",renderOptions.model,renderOptions.resolverGetConfig);var resArgs=(args=torender.args)?(args=fluid.copy(args),fluid.transform(args,function(arg,index){return upgradeBound(args,index,renderOptions.model,renderOptions.resolverGetConfig),args[index].value})):args;torender.value=renderOptions.messageLocator(torender.messagekey.value,resArgs)}else torender.value="[No messageLocator is configured in options - please consult documentation on options.messageSource]";var args}function renderComponent(torender){var value,attrcopy=trc.attrcopy;degradeMessage(torender);var componentType=torender.componentType,tagname=trc.uselump.tagname;function makeFail(torender,end){fluid.fail("Error in component tree - UISelectChoice with id "+torender.fullID+end)}if(outDecorators(torender,attrcopy),"UIBound"===componentType||"UISelectChoice"===componentType){var parent;void 0!==torender.choiceindex&&(void 0!==torender.parentRelativeID?(parent=function(component,relativeID){for(component=component.parent;0===relativeID.indexOf("..::");)relativeID=relativeID.substring(4),component=component.parent;return component.childmap[relativeID]}(torender,torender.parentRelativeID))||makeFail(torender," has parentRelativeID of "+torender.parentRelativeID+" which cannot be resolved"):makeFail(torender," does not have parentRelativeID set"),assignSubmittingName(attrcopy,torender,parent.selection),dumpSelectionBindings(parent));var submittingname=parent?parent.selection.submittingname:torender.submittingname;if(!parent&&torender.valuebinding&&(submittingname=assignSubmittingName(attrcopy,torender)),"input"!==tagname&&"textarea"!==tagname||void 0!==submittingname&&(attrcopy.name=submittingname),dumpBoundFields(torender,parent?parent.selection:null),"boolean"==typeof torender.value||"radio"===attrcopy.type||"checkbox"===attrcopy.type){var underlyingValue,directValue=torender.value;void 0!==torender.choiceindex&&(parent.optionlist.value||fluid.fail("Error in component tree - selection control with full ID "+parent.fullID+" has no values"),directValue=isSelectedValue(parent,underlyingValue=parent.optionlist.value[torender.choiceindex])),isValue(directValue)&&(directValue?attrcopy.checked="checked":delete attrcopy.checked),attrcopy.value=fluid.XMLEncode(underlyingValue||"true"),rewriteLeaf(null)}else fluid.isArrayable(torender.value)?renderUnchanged():(value=parent?parent["textarea"===tagname||"input"===tagname?"optionlist":"optionnames"].value[torender.choiceindex]:torender.value,"textarea"===tagname?rewriteLeaf(value):"input"===tagname?((torender.willinput||isValue(value))&&(attrcopy.value=fluid.XMLEncode(String(value))),rewriteLeaf(null)):(delete attrcopy.name,function(value){trc.iselide?rewriteLeaf(trc.value):isValue(value)?replaceBody(value):replaceAttributesOpen()}(value)))}else if("UISelect"===componentType){var ishtmlselect="select"===tagname;if(fluid.isArrayable(torender.selection.value)&&(!0,ishtmlselect&&(attrcopy.multiple="multiple")),assignSubmittingName(attrcopy,torender.selection),ishtmlselect&&(!1!==torender.selection.willinput&&(attrcopy.name=torender.selection.submittingname),applyAutoBind(torender,attrcopy.id)),out+=fluid.dumpAttributes(attrcopy),ishtmlselect){out+=">";var values=torender.optionlist.value,names=null!==torender.optionnames&&void 0!==torender.optionnames&&torender.optionnames.value?torender.optionnames.value:values;names&&names.length||fluid.fail("Error in component tree - UISelect component with fullID "+torender.fullID+" does not have optionnames set");for(var i=0;i<names.length;++i)out+='<option value="',null===(value=values[i])&&(value=fluid.NULL_STRING),out+=fluid.XMLEncode(value),isSelectedValue(torender,value)&&(out+='" selected="selected'),out+='">',out+=fluid.XMLEncode(names[i]),out+="</option>\n";closeTag()}else dumpTemplateBody();dumpSelectionBindings(torender)}else if("UILink"===componentType){var attrname=LINK_ATTRIBUTES[tagname];if(attrname){degradeMessage(torender.target);var target=torender.target.value;isValue(target)||(target=attrcopy[attrname]),target=function(template,url){if(renderOptions.urlRewriter){var rewritten=renderOptions.urlRewriter(url);if(rewritten)return rewritten}if(!renderOptions.rebaseURLs)return url;var protpos=url.indexOf(":/");return"/"===url.charAt(0)||-1!==protpos&&protpos<7?url:renderOptions.baseURL+url}(trc.uselump.parent,target),attrcopy[attrname]=fluid.XMLEncode(target)}value=void 0,torender.linktext&&(degradeMessage(torender.linktext),value=torender.linktext.value),isValue(value)?rewriteLeaf(value):replaceAttributesOpen()}else if(void 0!==torender.markup){degradeMessage(torender.markup);var rendered=torender.markup.value;null===rendered?(out+=fluid.dumpAttributes(attrcopy),out+=">",renderUnchanged()):(trc.iselide||(out+=fluid.dumpAttributes(attrcopy),out+=">"),out+=rendered,closeTag())}void 0!==attrcopy.id&&(usedIDs[attrcopy.id]=!0)}function renderComment(message){out+="\x3c!-- "+fluid.XMLEncode(message)+"--\x3e"}function renderDebugMessage(message){out+='<span style="background-color:#FF466B;color:white;padding:1px;">',out+=message,out+="</span><br/>"}function renderComponentSystem(context,torendero,lump){var lumpindex=lump.lumpindex,lumps=lump.parent.lumps,nextpos=-1,outerendopen=lumps[lumpindex+1],outerclose=lump.close_tag;nextpos=outerclose.lumpindex+1;var payloadlist=lump.downmap?lump.downmap["payload-component"]:null,payload=payloadlist?payloadlist[0]:null,iselide=126===lump.rsfID.charCodeAt(0),endopen=outerendopen,close=outerclose,uselump=lump,attrcopy={};if($.extend(!0,attrcopy,(null===payload?lump:payload).attributemap),trc.attrcopy=attrcopy,trc.uselump=uselump,trc.endopen=endopen,trc.close=close,trc.nextpos=nextpos,trc.iselide=iselide,function(context){var attrname,attrval=trc.attrcopy.for;if(void 0!==attrval?attrname="for":void 0!==(attrval=trc.attrcopy.headers)&&(attrname="headers"),attrname){var tagname=trc.uselump.tagname;if(!("for"===attrname&&"label"!==tagname||"headers"===attrname&&"td"!==tagname&&"th"!==tagname)){var rewritten=rewritemap[getRewriteKey(trc.uselump.parent,context,attrval)];void 0!==rewritten&&(trc.attrcopy[attrname]=rewritten)}}}(context),null===torendero&&lump.rsfID.indexOf("scr=")===(iselide?1:0)){var scrname=lump.rsfID.substring(4+(iselide?1:0));"ignore"===scrname?nextpos=trc.close.lumpindex+1:"rewrite-url"===scrname?torendero={componentType:"UILink",target:{}}:(openTag(),replaceAttributesOpen(),nextpos=trc.endopen.lumpindex)}return null!==torendero&&(payload&&(trc.endopen=lumps[payload.lumpindex+1],trc.close=payload.close_tag,dumpTillLump(lumps,lumpindex,(trc.uselump=payload).lumpindex),lumpindex=payload.lumpindex),adjustForID(attrcopy,torendero),openTag(),renderComponent(torendero),null!==payload&&trc.nextpos===nextpos&&dumpTillLump(lumps,trc.close.lumpindex+1,outerclose.lumpindex+1),nextpos=trc.nextpos),nextpos}function renderContainer(child,targetlump){var firstchild=targetlump.parent.lumps[targetlump.lumpindex+1];void 0!==child.children?function(branch,targetlump){if(!targetlump.elide){var attrcopy={};$.extend(!0,attrcopy,targetlump.attributemap),adjustForID(attrcopy,branch),outDecorators(branch,attrcopy),out+="<"+targetlump.tagname+" ",out+=fluid.dumpAttributes(attrcopy),out+=">"}}(child,targetlump):renderComponentSystem(child.parent,child,targetlump),renderRecurse(child,targetlump,firstchild)}function fetchComponents(basecontainer,id){for(var togo;basecontainer&&!(togo=basecontainer.childmap[id]);)basecontainer=basecontainer.parent;return togo}function findChild(sourcescope,child){var split=fluid.SplitID(child.ID),headlumps=sourcescope.downmap[child.ID];return headlumps||(headlumps=sourcescope.downmap[split.prefix+":"]),headlumps?headlumps[0]:null}return outDecoratorsImpl=function(torender,decorators,attrcopy,finalID){var id,sanitizeAttrs=function(value,key){null==value?delete attrcopy[key]:attrcopy[key]=fluid.XMLEncode(value)};renderOptions.idMap=renderOptions.idMap||{};for(var i=0;i<decorators.length;++i){var decorator=decorators[i],type=decorator.type;if(type)if("$"===type&&(type=decorator.type="jQuery"),"jQuery"===type||"event"===type||"fluid"===type)id=adjustForID(attrcopy,torender,!0,finalID),void 0===decorator.ids&&(decorator.ids=[],decoratorQueue[decoratorQueue.length]=decorator),decorator.ids.push(id);else if("attrs"===type)fluid.each(decorator.attributes,sanitizeAttrs);else if("addClass"===type||"removeClass"===type){var fakeNode=$("<div>",{class:attrcopy.class})[0];renderOptions.jQuery(fakeNode)[type](decorator.classes),attrcopy.class=fakeNode.className}else"identify"===type?(id=adjustForID(attrcopy,torender,!0,finalID),renderOptions.idMap[decorator.key]=id):"null"!==type&&fluid.log("Unrecognised decorator of type "+type+" found at component of ID "+finalID);else{var explodedDecorators=explodeDecorators(decorator);outDecoratorsImpl(torender,explodedDecorators,attrcopy,finalID)}}},fetchComponent=function(basecontainer,id){if(0===id.indexOf("msg="))return{componentType:"UIMessage",messagekey:id.substring(4)};for(;basecontainer;){var togo=basecontainer.childmap[id];if(togo)return togo;basecontainer=basecontainer.parent}return null},renderRecurse=function(basecontainer,parentlump,baselump){var children,targetlump,child,rendered,path,renderindex=baselump.lumpindex,basedepth=parentlump.nestingdepth,t1=parentlump.parent;for(debugMode&&(rendered={});(renderindex=dumpScan(t1.lumps,renderindex,basedepth,!parentlump.elide,!1))!==t1.lumps.length;){var lump=t1.lumps[renderindex],id=lump.rsfID;if(lump.nestingdepth<basedepth||void 0===id)break;if(126===id.charCodeAt(0)&&(id=id.substring(1)),-1!==id.indexOf(":")){var prefix=fluid.getPrefix(id);children=fetchComponents(basecontainer,prefix);var closefinal=lump.uplump.finallump[prefix].close_tag;if(children)for(var i=0;i<children.length;++i)if((child=children[i]).children)debugMode&&(rendered[child.fullID]=!0),(targetlump=branchmap[child.fullID])?(debugMode&&renderComment("Branching for "+child.fullID+" from "+fluid.debugLump(lump)+" to "+fluid.debugLump(targetlump)),renderContainer(child,targetlump),debugMode&&renderComment("Branch returned for "+child.fullID+fluid.debugLump(lump)+" to "+fluid.debugLump(targetlump))):debugMode&&renderDebugMessage("No matching template branch found for branch container with full ID "+child.fullID+" rendering from parent template branch "+fluid.debugLump(baselump));else{if(!(targetlump=findChild(parentlump,child))){debugMode&&renderDebugMessage("Repetitive leaf with full ID "+child.fullID+" could not be rendered from parent template branch "+fluid.debugLump(baselump));continue}var renderend=renderComponentSystem(basecontainer,child,targetlump),wasopentag=renderend<t1.lumps.lengtn&&t1.lumps[renderend].nestingdepth>=targetlump.nestingdepth,newbase=child.children?child:basecontainer;wasopentag&&(renderRecurse(newbase,targetlump,t1.lumps[renderend]),renderend=targetlump.close_tag.lumpindex+1),i!==children.length-1?renderend<closefinal.lumpindex&&dumpScan(t1.lumps,renderend,targetlump.nestingdepth-1,!1,!1):dumpScan(t1.lumps,renderend,targetlump.nestingdepth,!0,!1)}else debugMode&&renderDebugMessage("No branch container with prefix "+prefix+": found in container "+(void 0,(path=basecontainer.fullID)?"full path "+path:"component tree root")+" rendering at template position "+fluid.debugLump(baselump)+", skipping");renderindex=closefinal.lumpindex+1,debugMode&&renderComment("Stack returned from branch for ID "+id+" to "+fluid.debugLump(baselump)+": skipping from "+fluid.debugLump(lump)+" to "+fluid.debugLump(closefinal))}else{var component;id&&(component=fetchComponent(basecontainer,id,lump),debugMode&&component&&(rendered[component.fullID]=!0)),renderindex=component&&void 0!==component.children?(renderContainer(component),lump.close_tag.lumpindex+1):renderComponentSystem(basecontainer,component,lump)}if(renderindex===t1.lumps.length)break}if(debugMode){children=basecontainer.children;for(var key=0;key<children.length;++key)rendered[(child=children[key]).fullID]||renderDebugMessage("Component "+child.componentType+" with full ID "+child.fullID+" could not be found within template "+fluid.debugLump(baselump))}},that.renderTemplates=function(){tree=function fixupTree(tree,model,resolverGetConfig){if(void 0===tree.componentType&&(tree=unzipComponent(tree,model,resolverGetConfig)),"UIContainer"===tree.componentType||tree.parent||(tree={children:[tree]}),tree.children){tree.childmap={};for(var i=0;i<tree.children.length;++i){var child=tree.children[i];void 0===child.componentType&&(child=unzipComponent(child,model,resolverGetConfig),tree.children[i]=child),child.parent=tree,void 0===child.ID&&fluid.fail("Error in component tree: component found with no ID "+debugPosition(child));var colpos=(tree.childmap[child.ID]=child).ID.indexOf(":");if(-1===colpos);else{var prefix=child.ID.substring(0,colpos),childlist=tree.childmap[prefix];childlist||(childlist=[],tree.childmap[prefix]=childlist),void 0===child.localID&&0!==childlist.length&&(child.localID=childlist.length),childlist[childlist.length]=child}child.fullID=computeFullID(child);var componentType=child.componentType;if("UISelect"===componentType)child.selection.fullID=child.fullID;else if("UIInitBlock"===componentType){for(var call=child.functionname+"(",childArgs=child.arguments,j=0;j<childArgs.length;++j)childArgs[j]instanceof fluid.ComponentReference&&(childArgs[j]=child.parent.fullID+childArgs[j].reference),call+=JSON.stringify(childArgs[j]),j<childArgs.length-1&&(call+=", ");child.markup={value:call+")\n"},child.componentType="UIVerbatim"}else"UIBound"===componentType&&fixupValue(child,model,resolverGetConfig);fixupTree(child,model,resolverGetConfig)}}return tree}(tree,options.model,options.resolverGetConfig);var template=templates[0];return resolveBranches(templates.globalmap,tree,template.rootlump),renderedbindings={},function(){for(var key in collected)for(var collist=collected[key],i=0;i<collist.length;++i)dumpTillLump((collump=collist[i]).parent.lumps,collump.lumpindex,collump.close_tag.lumpindex+1);var collump}(),renderRecurse(tree,template.rootlump,template.lumps[template.firstdocumentindex]),out},that.processDecoratorQueue=function(){!function(){for(var i=0;i<decoratorQueue.length;++i)for(var decorator=decoratorQueue[i],j=0;j<decorator.ids.length;++j){var id=decorator.ids[j],node=fluid.byId(id,renderOptions.document);if(node||fluid.fail("Error during rendering - component with id "+id+" which has a queued decorator was not found in the output markup"),"jQuery"===decorator.type){var jnode=renderOptions.jQuery(node);jnode[decorator.func].apply(jnode,fluid.makeArray(decorator.args))}else if("fluid"===decorator.type){var args=decorator.args;if(!args){var thisContainer=renderOptions.jQuery(node);decorator.container?decorator.container.push(node):decorator.container=thisContainer,args=[thisContainer,decorator.options]}var that=renderer.invokeFluidDecorator(decorator.func,args,id,i,options);decorator.that=that}else"event"===decorator.type&&(node[decorator.event]=decorator.handler)}}()},that},jQuery.extend(!0,fluid.renderer,renderer),fluid.ComponentReference=function(reference){this.reference=reference},fluid.explode=function(hash,basepath){var togo=[];for(var key in hash){var binding=void 0===basepath?key:basepath+"."+key;togo[togo.length]={ID:key,value:hash[key],valuebinding:binding}}return togo},fluid.explodeSelectionToInputs=function(optionlist,opts){return fluid.transform(optionlist,function(option,index){return{ID:opts.rowID,children:[{ID:opts.inputID,parentRelativeID:"..::"+opts.selectID,choiceindex:index},{ID:opts.labelID,parentRelativeID:"..::"+opts.selectID,choiceindex:index}]}})},fluid.renderTemplates=function(templates,tree,options,fossilsIn){return fluid.renderer(templates,tree,options,fossilsIn).renderTemplates()},fluid.reRender=function(templates,node,tree,options){options=options||{};var renderer=fluid.renderer(templates,tree,options,options.fossils);options=renderer.options,node=fluid.unwrap(node);var lastId,lastFocusedElement=fluid.getLastFocusedElement?fluid.getLastFocusedElement():null;lastFocusedElement&&fluid.dom.isContainer(node,lastFocusedElement)&&(lastId=lastFocusedElement.id),$.browser.msie?options.jQuery(node).empty():node.innerHTML="";var rendered=renderer.renderTemplates();if(options.renderRaw&&(rendered=(rendered=fluid.XMLEncode(rendered)).replace(/\n/g,"<br/>")),options.model&&fluid.bindFossils(node,options.model,options.fossils),$.browser.msie?options.jQuery(node).html(rendered):node.innerHTML=rendered,renderer.processDecoratorQueue(),lastId){var element=fluid.byId(lastId,options.document);element&&options.jQuery(element).focus()}return templates},fluid.extractTemplate=function(node,armouring){return armouring?(rootNode=node,0===(value=fluid.dom.iterateDom(rootNode,function(node){return 8===node.nodeType||4===node.nodeType?"stop":null},!0).nodeValue).indexOf("[CDATA[")?value.substring(6,value.length-2):value):node.innerHTML;var rootNode,value},fluid.render=function(source,target,tree,options){options=options||{};var template=source;"object"==typeof source&&(template=fluid.extractTemplate(fluid.unwrap(source.node),source.armouring)),target=fluid.unwrap(target);var resourceSpec={base:{resourceText:template,href:".",resourceKey:".",cutpoints:options.cutpoints}},templates=fluid.parseTemplates(resourceSpec,["base"],options);return fluid.reRender(templates,target,tree,options)},fluid.selfRender=function(node,tree,options){return options=options||{},fluid.render({node:node,armouring:options.armouring},node,tree,options)}}(jQuery,fluid_3_0_0),fluid_3_0_0=fluid_3_0_0||{},function($,fluid){"use strict";fluid.renderer||fluid.fail("fluidRenderer.js is a necessary dependency of RendererUtilities"),fluid.renderer.visitDecorators=function(that,visitor){fluid.visitComponentChildren(that,function(component,name){0===name.indexOf(fluid.renderer.decoratorComponentPrefix)&&visitor(component,name)},{flat:!0},[])},fluid.renderer.clearDecorators=function(that){var instantiator=fluid.getInstantiator(that);fluid.renderer.visitDecorators(that,function(component,name){instantiator.clearComponent(that,name)})},fluid.renderer.getDecoratorComponents=function(that){var togo={};return fluid.renderer.visitDecorators(that,function(component,name){togo[name]=component}),togo},fluid.renderer.modeliseOptions=function(options,defaults,baseOptions){return $.extend({},defaults,fluid.filterKeys(baseOptions,["model","applier"]),options)},fluid.renderer.reverseMerge=function(target,source,names){names=fluid.makeArray(names),fluid.each(names,function(name){void 0===target[name]&&void 0!==source[name]&&(target[name]=source[name])})},fluid.renderer.createRendererSubcomponent=function(container,selectors,options,parentThat,fossils){var source=(options=options||{}).templateSource?options.templateSource:{node:$(container)},nativeModel=void 0===options.rendererOptions.model,rendererOptions=fluid.renderer.modeliseOptions(options.rendererOptions,null,parentThat);if(rendererOptions.fossils=fossils||{},rendererOptions.parentComponent=parentThat,container.jquery){var cascadeOptions={document:container[0].ownerDocument,jQuery:container.constructor};fluid.renderer.reverseMerge(rendererOptions,cascadeOptions,fluid.keys(cascadeOptions))}var that={},templates=null;return that.render=function(tree){var cutpointFn=options.cutpointGenerator||"fluid.renderer.selectorsToCutpoints";rendererOptions.cutpoints=rendererOptions.cutpoints||fluid.invokeGlobalFunction(cutpointFn,[selectors,options]),nativeModel&&(rendererOptions.model=parentThat.model);var renderTarget=$(options.renderTarget?options.renderTarget:container);templates?(fluid.clear(rendererOptions.fossils),fluid.reRender(templates,renderTarget,tree,rendererOptions)):("function"==typeof source&&(source=source()),templates=fluid.render(source,renderTarget,tree,rendererOptions))},that},fluid.defaults("fluid.rendererComponent",{gradeNames:["fluid.viewComponent"],initFunction:"fluid.initRendererComponent",mergePolicy:{"rendererOptions.idMap":"nomerge",protoTree:"noexpand, replace",parentBundle:"nomerge","changeApplierOptions.resolverSetConfig":"resolverSetConfig"},invokers:{refreshView:{funcName:"fluid.rendererComponent.refreshView",args:"{that}"},produceTree:{funcName:"fluid.rendererComponent.produceTree",args:"{that}"}},rendererOptions:{autoBind:!0},events:{onResourcesFetched:null,prepareModelForRender:null,onRenderTree:null,afterRender:null},listeners:{onCreate:{funcName:"fluid.rendererComponent.renderOnInit",args:["{that}.options.renderOnInit","{that}"],priority:"last"}}}),fluid.rendererComponent.renderOnInit=function(renderOnInit,that){(renderOnInit||that.renderOnInit)&&that.refreshView()},fluid.protoExpanderForComponent=function(parentThat,options){var expanderOptions=fluid.renderer.modeliseOptions(options.expanderOptions,{ELstyle:"${}"},parentThat);return fluid.renderer.reverseMerge(expanderOptions,options,["resolverGetConfig","resolverSetConfig"]),fluid.renderer.makeProtoExpander(expanderOptions,parentThat)},fluid.rendererComponent.refreshView=function(that){if(that.renderer){fluid.renderer.clearDecorators(that),that.events.prepareModelForRender.fire(that.model,that.applier,that);var tree=that.produceTree(that),rendererFnOptions=that.renderer.rendererFnOptions;rendererFnOptions.noexpand||(tree=fluid.protoExpanderForComponent(that,rendererFnOptions)(tree)),that.events.onRenderTree.fire(that,tree),that.renderer.render(tree),that.events.afterRender.fire(that)}else that.renderOnInit=!0},fluid.rendererComponent.produceTree=function(that){var produceTreeOption=that.options.produceTree;return produceTreeOption?("string"==typeof produceTreeOption?fluid.getGlobalValue(produceTreeOption):produceTreeOption)(that):that.options.protoTree},fluid.initRendererComponent=function(componentName,container,options){var that=fluid.initView(componentName,container,options,{gradeNames:["fluid.rendererComponent"]});fluid.getForComponent(that,"model"),fluid.getForComponent(that,"applier"),fluid.diagnoseFailedView(componentName,that,fluid.defaults(componentName),arguments),fluid.fetchResources(that.options.resources,that.events.onResourcesFetched.fire);var messageResolver,rendererOptions=fluid.renderer.modeliseOptions(that.options.rendererOptions,null,that);!rendererOptions.messageSource&&that.options.strings&&(messageResolver=fluid.messageResolver({messageBase:that.options.strings,resolveFunc:that.options.messageResolverFunction,parents:fluid.makeArray(that.options.parentBundle)}),rendererOptions.messageSource={type:"resolver",resolver:messageResolver}),fluid.renderer.reverseMerge(rendererOptions,that.options,["resolverGetConfig","resolverSetConfig"]),that.rendererOptions=rendererOptions;var rendererFnOptions=$.extend({},that.options.rendererFnOptions,{rendererOptions:rendererOptions,repeatingSelectors:that.options.repeatingSelectors,selectorsToIgnore:that.options.selectorsToIgnore,expanderOptions:{envAdd:{styles:that.options.styles}}});that.options.resources&&that.options.resources.template&&(rendererFnOptions.templateSource=function(){return that.options.resources.template.resourceText}),fluid.renderer.reverseMerge(rendererFnOptions,that.options,["resolverGetConfig","resolverSetConfig"]),rendererFnOptions.rendererTargetSelector&&(container=function(){return that.dom.locate(rendererFnOptions.rendererTargetSelector)});var renderer={fossils:{},rendererFnOptions:rendererFnOptions,boundPathForNode:function(node){return fluid.boundPathForNode(node,renderer.fossils)}},rendererSub=fluid.renderer.createRendererSubcomponent(container,that.options.selectors,rendererFnOptions,that,renderer.fossils);return that.renderer=$.extend(renderer,rendererSub),messageResolver&&(that.messageResolver=messageResolver),renderer.refreshView=fluid.getForComponent(that,"refreshView"),that};var markRepeated=function(selectorKey,repeatingSelectors){return repeatingSelectors&&fluid.each(repeatingSelectors,function(repeatingSelector){selectorKey===repeatingSelector&&(selectorKey+=":")}),selectorKey};fluid.renderer.selectorsToCutpoints=function(selectors,options){var togo=[];for(var selectorKey in options=options||{},selectors=fluid.copy(selectors),options.selectorsToIgnore&&(selectors=function(selectors,selectorsToIgnore){return fluid.each(fluid.makeArray(selectorsToIgnore),function(selectorToIgnore){delete selectors[selectorToIgnore]}),selectors}(selectors,options.selectorsToIgnore)),selectors)togo.push({id:markRepeated(selectorKey,options.repeatingSelectors),selector:selectors[selectorKey]});return togo},fluid.renderer.NO_COMPONENT={},fluid.renderer.mergeComponents=function(target,source){for(var key in source)target[key]=source[key];return target},fluid.registerNamespace("fluid.renderer.selection"),fluid.renderer.selection.inputs=function(options,container,key,config){fluid.expect("Selection to inputs expander",options,["selectID","inputID","labelID","rowID"]);var selection=config.expander(options.tree),optsToExpand=fluid.censorKeys(options,["tree"]),expandedOpts=config.expandLight(optsToExpand),rows=fluid.transform(selection.optionlist.value,function(option,index){var togo={},element={parentRelativeID:"..::"+expandedOpts.selectID,choiceindex:index};return togo[expandedOpts.inputID]=element,togo[expandedOpts.labelID]=fluid.copy(element),togo}),togo={};return togo[expandedOpts.selectID]=selection,togo[expandedOpts.rowID]={children:rows},togo=config.expander(togo)},fluid.renderer.repeat=function(options,container,key,config){fluid.expect("Repetition expander",options,["controlledBy","tree"]);var env=config.threadLocal(),path=fluid.extractContextualPath(options.controlledBy,{ELstyle:"ALL"},env),list=fluid.get(config.model,path,config.resolverGetConfig);if(!list||0===list.length)return options.ifEmpty?config.expander(options.ifEmpty):{};var expanded=[];fluid.each(list,function(element,i){var EL=fluid.model.composePath(path,i),envAdd={};options.pathAs&&(envAdd[options.pathAs]="${"+EL+"}"),options.valueAs&&(envAdd[options.valueAs]=fluid.get(config.model,EL,config.resolverGetConfig));var expandrow=fluid.withEnvironment(envAdd,function(){return config.expander(options.tree)},env);fluid.isArrayable(expandrow)?0<expandrow.length&&expanded.push({children:expandrow}):expandrow!==fluid.renderer.NO_COMPONENT&&expanded.push(expandrow)});var repeatID=options.repeatID;return-1===repeatID.indexOf(":")&&(repeatID+=":"),fluid.each(expanded,function(entry){entry.ID=repeatID}),expanded},fluid.renderer.condition=function(options,container,key,config){var condition;if(fluid.expect("Selection to condition expander",options,["condition"]),options.condition.funcName){var args=config.expandLight(options.condition.args);condition=fluid.invokeGlobalFunction(options.condition.funcName,args)}else condition=options.condition.expander?config.expander(options.condition):config.expandLight(options.condition);var tree=condition?options.trueTree:options.falseTree;return tree||(tree=fluid.renderer.NO_COMPONENT),config.expander(tree)},fluid.extractContextualPath=function(string,options,env,externalFetcher){var parsed=fluid.extractELWithContext(string,options);if(parsed)return parsed.context?env[parsed.context]?fluid.transformContextPath(parsed,env).path:{value:externalFetcher(parsed)}:parsed.path},fluid.transformContextPath=function(parsed,env){if(parsed.context){var EL,fetched=env[parsed.context];if("string"==typeof fetched&&(EL=fluid.extractEL(fetched,{ELstyle:"${}"})),EL)return{noDereference:""===parsed.path,path:fluid.model.composePath(EL,parsed.path)}}return parsed},fluid.renderer.makeExternalFetcher=function(contextThat){return function(parsed){var foundComponent=fluid.resolveContext(parsed.context,contextThat);return foundComponent?fluid.getForComponent(foundComponent,parsed.path):void 0}},fluid.renderer.makeProtoExpander=function(expandOptions,parentThat){var threadLocal,options=$.extend({ELstyle:"${}"},expandOptions);parentThat&&(options.externalFetcher=fluid.renderer.makeExternalFetcher(parentThat));var expandCond,expandLeafOrCond,IDescape=options.IDescape||"\\",expandLight=function(source){return fluid.expand(source,options)},expandBound=function(value,concrete){if(void 0!==value.messagekey)return{componentType:"UIMessage",messagekey:expandBound(value.messagekey),args:expandLight(value.args)};var proto,EL,string,env;if(fluid.isPrimitive(value)||fluid.isArrayable(value)?proto={}:((proto=$.extend({},value)).decorators&&(proto.decorators=expandLight(proto.decorators)),value=proto.value,delete proto.value),"string"==typeof value){var fetched=(string=value,env=threadLocal(),fluid.extractContextualPath(string,options,env,options.externalFetcher));EL="string"==typeof fetched?fetched:null,value=fluid.get(fetched,"value")||value}return EL?proto.valuebinding=EL:void 0!==value&&(proto.value=value),options.model&&proto.valuebinding&&void 0===proto.value&&(proto.value=fluid.get(options.model,proto.valuebinding,options.resolverGetConfig)),concrete&&(proto.componentType="UIBound"),proto};options.filter=fluid.expander.lightFilter;var expandConfig={model:options.model,resolverGetConfig:options.resolverGetConfig,resolverSetConfig:options.resolverSetConfig,expander:function(entry){if(entry===fluid.renderer.NO_COMPONENT)return entry;var singleTarget,target=[];return expandLeafOrCond(entry,target,function(comp){singleTarget=comp}),singleTarget||target},expandLight:expandLight},expandChildren=function(entry,pusher){for(var children=entry.children,i=0;i<children.length;++i){var target=[],comp={children:target},child=children[i];expandLeafOrCond(child,target,function(comp){target[target.length]=comp}),1!==comp.children.length||comp.children[0].ID||(comp=comp.children[0]),pusher(comp)}};return expandLeafOrCond=function(entry,target,pusher){var componentType=fluid.renderer.inferComponentType(entry);componentType||!fluid.isPrimitive(entry)&&!function(entry){return!1!==fluid.find(entry,function(value,key){return"decorators"===key})}(entry)||(componentType="UIBound"),componentType?pusher("UIBound"===componentType?expandBound(entry,!0):function(leaf,componentType){var togo={componentType:componentType},map=fluid.renderer.boundMap[componentType]||{};for(var key in leaf)/decorators|args/.test(key)?togo[key]=expandLight(leaf[key]):map[key]?togo[key]=expandBound(leaf[key]):togo[key]=leaf[key];return togo}(entry,componentType)):(target||fluid.fail("Illegal cond->cond transition"),expandCond(entry,target))},expandCond=function(proto,target){var key,expandToTarget=function(expander){var expanded=fluid.invokeGlobalFunction(expander.type,[expander,proto,key,expandConfig]);expanded!==fluid.renderer.NO_COMPONENT&&fluid.each(expanded,function(el){target[target.length]=el})},condPusher=function(comp){comp.ID=key,target[target.length]=comp};for(key in proto){var entry=proto[key];if(key.charAt(0)===IDescape&&(key=key.substring(1)),"expander"===key){var expanders=fluid.makeArray(entry);fluid.each(expanders,expandToTarget)}else entry&&(entry.children?(-1===key.indexOf(":")&&(key+=":"),expandChildren(entry,condPusher)):fluid.renderer.isBoundPrimitive(entry)?condPusher(expandBound(entry,!0)):expandLeafOrCond(entry,null,condPusher))}},function(entry){return threadLocal=fluid.threadLocal(function(){return $.extend({},options.envAdd)}),options.fetcher=fluid.makeEnvironmentFetcher(options.model,fluid.transformContextPath,threadLocal,options.externalFetcher),expandConfig.threadLocal=threadLocal,function(entry){var comp=[];return expandCond(entry,comp),{children:comp}}(entry)}}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.overviewPanel"),fluid.overviewPanel.makeBooleanListener=function(that,selector,method,path,value){that.locate(selector)[method](function(evt){that.applier.change(path,"toggle"===value?!that.model[path]:value),evt.preventDefault()})},fluid.defaults("fluid.overviewPanel",{gradeNames:["fluid.rendererComponent"],resources:{template:{href:"../html/overviewPanelTemplate.html"}},listeners:{"onCreate.setVisibility":"{that}.setVisibility","onCreate.showTemplate":"fluid.overviewPanel.showTemplate","afterRender.registerToggleListener":{funcName:"fluid.overviewPanel.makeBooleanListener",args:["{that}","toggleControl","click","showPanel","toggle"]},"afterRender.registerCloseListener":{funcName:"fluid.overviewPanel.makeBooleanListener",args:["{that}","closeControl","click","showPanel",!1]},"afterRender.setLinkHrefs":{funcName:"fluid.overviewPanel.setLinkHrefs",args:["{that}","{that}.options.links"]},"afterRender.setToggleControlAria":{this:"{that}.dom.toggleControl",method:"attr",args:{role:"button","aria-controls":"{that}.containerId"}},"afterRender.setCloseControlAria":{this:"{that}.dom.closeControl",method:"attr",args:{role:"button","aria-label":"{that}.options.strings.closePanelLabel","aria-controls":"{that}.containerId"}},"afterRender.setAriaStates":"{that}.setAriaStates"},model:{showPanel:!0},modelListeners:{setVisibility:{path:"showPanel",func:"{that}.setVisibility"},setAriaStates:{path:"showPanel",func:"{that}.setAriaStates"}},members:{containerId:{expander:{funcName:"fluid.allocateSimpleId",args:"{that}.container"}}},invokers:{setVisibility:{funcName:"fluid.overviewPanel.setVisibility",args:["{that}","{that}.model.showPanel"]},setAriaStates:{funcName:"fluid.overviewPanel.setAriaStates",args:["{that}","{that}.model.showPanel"]}},selectors:{toggleControl:".flc-overviewPanel-toggleControl",titleBegin:".flc-overviewPanel-title-begin",titleLink:".flc-overviewPanel-titleLink",titleLinkText:".flc-overviewPanel-title-linkText",titleEnd:".flc-overviewPanel-title-end",componentName:".flc-overviewPanel-componentName",description:".flc-overviewPanel-description",instructionsHeading:".flc-overviewPanel-instructionsHeading",instructions:".flc-overviewPanel-instructions",demoCodeLink:".flc-overviewPanel-demoCodeLink",demoCodeLinkText:".flc-overviewPanel-demoCodeLinkText",infusionCodeLink:".flc-overviewPanel-infusionCodeLink",infusionCodeLinkText:".flc-overviewPanel-infusionCodeLinkText",apiLink:".flc-overviewPanel-apiLink",apiLinkText:".flc-overviewPanel-apiLinkText",designLink:".flc-overviewPanel-designLink",designLinkText:".flc-overviewPanel-designLinkText",feedbackText:".flc-overviewPanel-feedbackText",feedbackLink:".flc-overviewPanel-feedbackLink",feedbackLinkText:".flc-overviewPanel-feedbackLinkText",closeControl:".flc-overviewPanel-closeControl",closeText:".flc-overviewPanel-closeText"},selectorsToIgnore:["toggleControl","titleLink","demoCodeLink","infusionCodeLink","apiLink","designLink","feedbackLink","closeControl"],protoTree:{titleBegin:{messagekey:"titleBegin"},titleLinkText:{messagekey:"titleLinkText"},titleEnd:{messagekey:"titleEnd"},componentName:{messagekey:"componentName"},description:{markup:"${{that}.options.markup.description}"},instructionsHeading:{messagekey:"instructionsHeading"},instructions:{markup:"${{that}.options.markup.instructions}"},demoCodeLinkText:{messagekey:"demoCodeLinkText"},infusionCodeLinkText:{messagekey:"infusionCodeLinkText"},apiLinkText:{messagekey:"apiLinkText"},designLinkText:{messagekey:"designLinkText"},feedbackText:{messagekey:"feedbackText"},feedbackLinkText:{messagekey:"feedbackLinkText"},closeText:{messagekey:"closeText"}},styles:{hidden:"fl-overviewPanel-hidden"},strings:{titleBegin:"An",titleLinkText:"Infusion",titleEnd:"component demo",componentName:"Component Name",instructionsHeading:"Instructions",demoCodeLinkText:"demo code",infusionCodeLinkText:"get Infusion",apiLinkText:"API",designLinkText:"design",feedbackText:"Found a bug? Have a question?",feedbackLinkText:"Let us know!",closeText:"close",openPanelLabel:"Open the overview panel",closePanelLabel:"Close the overview panel"},markup:{description:"A description of the component should appear here. It should say: <ul><li>What the component does.</li><li>Why it is interesting / useful.</li></ul>",instructions:"<p>Do this to do this. Do that to do that.</p>"},links:{titleLink:"http://fluidproject.org/infusion.html",demoCodeLink:"#",infusionCodeLink:"https://github.com/fluid-project/infusion/",apiLink:"#",designLink:"#",feedbackLink:"#"}}),fluid.overviewPanel.setVisibility=function(that,showPanel){that.container.toggleClass(that.options.styles.hidden,!showPanel)},fluid.overviewPanel.showTemplate=function(that){fluid.fetchResources(that.options.resources,function(){that.refreshView()})},fluid.overviewPanel.setLinkHrefs=function(that,linkMap){fluid.each(linkMap,function(linkHref,selector){that.locate(selector).attr("href",linkHref)})},fluid.overviewPanel.setAriaStates=function(that,showPanel){that.locate("toggleControl").attr("aria-pressed",!showPanel),that.locate("toggleControl").attr("aria-expanded",showPanel),that.locate("closeControl").attr("aria-expanded",showPanel),showPanel?that.locate("toggleControl").attr("aria-label",that.options.strings.closePanelLabel):that.locate("toggleControl").attr("aria-label",that.options.strings.openPanelLabel)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.pager"),fluid.pager.updateStyles=function(pageListThat,newModel,oldModel){oldModel&&void 0!==oldModel.pageIndex&&pageListThat.pageLinks.eq(oldModel.pageIndex).removeClass(pageListThat.options.styles.currentPage);pageListThat.pageLinks.eq(newModel.pageIndex).addClass(pageListThat.options.styles.currentPage)},fluid.pager.bindLinkClick=function(link,initiatePageChange,eventArg){link.off("click.fluid.pager"),link.on("click.fluid.pager",function(){return initiatePageChange.fire(eventArg),!1})},fluid.pager.computePageCount=function(model){return Math.max(1,Math.floor((model.totalRange-1)/model.pageSize)+1)},fluid.pager.computePageLimit=function(model){return Math.min(model.totalRange,(model.pageIndex+1)*model.pageSize)},fluid.pager.bindLinkClicks=function(pageLinks,initiatePageChange){fluid.each(pageLinks,function(pageLink,i){fluid.pager.bindLinkClick($(pageLink),initiatePageChange,{pageIndex:i})})},fluid.defaults("fluid.pager.pageList",{gradeNames:["fluid.viewComponent"]}),fluid.defaults("fluid.pager.directPageList",{gradeNames:["fluid.pager.pageList"],listeners:{onCreate:{funcName:"fluid.pager.bindLinkClicks",args:["{that}.pageLinks","{pager}.events.initiatePageChange"]}},modelListeners:{"{pager}.model":"fluid.pager.updateStyles({that}, {change}.value, {change}.oldValue)"},members:{pageLinks:"{that}.dom.pageLinks",defaultModel:{totalRange:"{that}.pageLinks.length"}}}),fluid.pager.everyPageStrategy=fluid.iota,fluid.pager.gappedPageStrategy=function(locality,midLocality){return locality||(locality=3),midLocality||(midLocality=locality),function(count,first,mid){for(var togo=[],j=0,lastSkip=!1,i=0;i<count;++i)i<locality||count-i-1<locality||mid-midLocality<=i&&i<=mid+midLocality?(togo[j++]=i,lastSkip=!1):lastSkip||(togo[j++]=-1,lastSkip=!0);return togo}},fluid.pager.consistentGappedPageStrategy=function(endLinkCount,midLinkCount){endLinkCount||(endLinkCount=1),midLinkCount||(midLinkCount=endLinkCount);var endWidth=endLinkCount+2+midLinkCount;return function(count,first,mid){for(var pages=[],anchoredLeft=mid<endWidth,anchoredRight=count-endWidth<=mid,anchoredEndWidth=endWidth+midLinkCount,midStart=mid-midLinkCount,midEnd=mid+midLinkCount,lastSkip=!1,page=0;page<count;page++)page<endLinkCount||count-page<=endLinkCount||anchoredLeft&&page<anchoredEndWidth||anchoredRight&&count-anchoredEndWidth<=page||midStart<=page&&page<=midEnd?(pages.push(page),lastSkip=!1):lastSkip||(pages.push(-1),lastSkip=!0);return pages}},fluid.registerNamespace("fluid.pager.renderedPageList"),fluid.pager.renderedPageList.assembleComponent=function(page,isCurrent,initiatePageChange,currentPageStyle,currentPageIndexMsg){var obj={ID:"page-link:link",localID:page+1,value:page+1,pageIndex:page,decorators:[{identify:"pageLink:"+page},{type:"jQuery",func:"click",args:function(event){initiatePageChange.fire({pageIndex:page}),event.preventDefault()}}]};return isCurrent&&(obj.current=!0,obj.decorators=obj.decorators.concat([{type:"addClass",classes:currentPageStyle},{type:"jQuery",func:"attr",args:["aria-label",currentPageIndexMsg]}])),obj},fluid.pager.renderedPageList.onModelChange=function(that,newModel){var current,pages=that.options.pageStrategy(newModel.pageCount,0,newModel.pageIndex),pageTree=fluid.transform(pages,(current=newModel.pageIndex,function(page){return-1===page?{ID:"page-link:skip"}:that.assembleComponent(page,page===current)}));1<pageTree.length&&(pageTree[pageTree.length-1].value=pageTree[pageTree.length-1].value+that.options.strings.last),that.events.onRenderPageLinks.fire(pageTree,newModel),that.pageTree=pageTree,that.refreshView()},fluid.pager.renderedPageList.renderLinkBody=function(linkBody,rendererOptions){linkBody&&rendererOptions.cutpoints.push({id:"payload-component",selector:linkBody})},fluid.defaults("fluid.pager.renderedPageList",{gradeNames:["fluid.pager.pageList","fluid.rendererComponent"],rendererOptions:{idMap:{},cutpoints:[{id:"page-link:link",selector:"{that}.options.selectors.pageLinks"},{id:"page-link:skip",selector:"{that}.options.selectors.pageLinkSkip"}]},rendererFnOptions:{noexpand:!0,templateSource:{node:"{that}.dom.root"},renderTarget:"{that}.dom.root"},events:{onRenderPageLinks:"{pager}.events.onRenderPageLinks"},listeners:{onCreate:{funcName:"fluid.pager.renderedPageList.renderLinkBody",args:["{that}.options.linkBody","{that}.options.rendererOptions"]}},modelListeners:{"{pager}.model":"fluid.pager.renderedPageList.onModelChange({that}, {change}.value)"},invokers:{produceTree:{funcName:"fluid.identity",args:"{that}.pageTree"},assembleComponent:{funcName:"fluid.pager.renderedPageList.assembleComponent",args:["{arguments}.0","{arguments}.1","{pager}.events.initiatePageChange","{pagerBar}.options.styles.currentPage","{pagerBar}.options.strings.currentPageIndexMsg"]}},selectors:{root:".flc-pager-links",pageLinks:"{pagerBar}.options.selectors.pageLinks",pageLinkSkip:"{pagerBar}.options.selectors.pageLinkSkip"},strings:"{pager}.options.strings",linkBody:"a",pageStrategy:fluid.pager.everyPageStrategy}),fluid.defaults("fluid.pager.previousNext",{gradeNames:["fluid.viewComponent"],members:{previous:"{that}.dom.previous",next:"{that}.dom.next"},selectors:{previous:".flc-pager-previous",next:".flc-pager-next"},listeners:{onCreate:[{funcName:"fluid.pager.bindLinkClick",args:["{that}.previous","{pager}.events.initiatePageChange",{relativePage:-1}]},{funcName:"fluid.pager.bindLinkClick",args:["{that}.next","{pager}.events.initiatePageChange",{relativePage:1}]}]},modelListeners:{"{pager}.model":"fluid.pager.previousNext.update({that}, {that}.options.styles.disabled, {change}.value)"}}),fluid.pager.previousNext.update=function(that,disabledStyle,newModel){that.previous.toggleClass(disabledStyle,0===newModel.pageIndex),that.next.toggleClass(disabledStyle,newModel.pageIndex===newModel.pageCount-1)},fluid.defaults("fluid.pager.pagerBar",{gradeNames:["fluid.viewComponent"],components:{pageList:{type:"fluid.pager.pageList",container:"{pagerBar}.container",options:{selectors:{pageLinks:"{pagerBar}.options.selectors.pageLinks"},styles:"{pagerBar}.options.styles"}},previousNext:{type:"fluid.pager.previousNext",container:"{pagerBar}.container",options:{selectors:{previous:"{pagerBar}.options.selectors.previous",next:"{pagerBar}.options.selectors.next"},styles:"{pagerBar}.options.styles"}}},events:{initiatePageChange:null,onModelChange:null},selectors:{pageLinks:".flc-pager-pageLink",pageLinkSkip:".flc-pager-pageLink-skip",previous:".flc-pager-previous",next:".flc-pager-next"},styles:{currentPage:"fl-pager-currentPage",disabled:"fl-pager-disabled"},strings:{currentPageIndexMsg:"Current page"}}),fluid.pager.summaryAria=function(element){element.attr({"aria-relevant":"all","aria-atomic":"false","aria-live":"assertive",role:"status"})},fluid.defaults("fluid.pager.summary",{gradeNames:["fluid.viewComponent"],listeners:{onCreate:{funcName:"fluid.pager.summaryAria",args:"{that}.container"}},modelListeners:{"{pager}.model":{funcName:"fluid.pager.summary.onModelChange",args:["{that}.container","{that}.options.strings.message","{change}.value"]}}}),fluid.pager.summary.onModelChange=function(node,message,newModel){var text=fluid.stringTemplate(message,{first:newModel.pageIndex*newModel.pageSize+1,last:fluid.pager.computePageLimit(newModel),total:newModel.totalRange,currentPage:newModel.pageIndex+1});node.text(text)},fluid.defaults("fluid.pager.directPageSize",{gradeNames:["fluid.viewComponent"],listeners:{onCreate:{this:"{that}.container",method:"change",args:{expander:{funcName:"fluid.pager.directPageSize.onChange",args:["{pager}.events.initiatePageSizeChange","{that}.container"]}}}},modelListeners:{"{pager}.model.pageSize":"fluid.pager.updateNodeValue({that}.container, {change}.value)"}}),fluid.pager.directPageSize.onChange=function(initiatePageSizeChange,node){return function(){initiatePageSizeChange.fire(node.val()||1)}},fluid.pager.updateNodeValue=function(node,value){node.val(value)},fluid.pager.initiatePageChangeListener=function(that,arg){var newPageIndex=arg.pageIndex;void 0!==arg.relativePage&&(newPageIndex=that.model.pageIndex+arg.relativePage),that.applier.change("pageIndex",newPageIndex)},fluid.defaults("fluid.pager",{gradeNames:["fluid.viewComponent"],events:{initiatePageChange:null,initiatePageSizeChange:null,onModelChange:null,onRenderPageLinks:null,afterRender:null},model:{pageIndex:0,pageSize:1,totalRange:{expander:{func:"{that}.acquireDefaultRange"}}},selectors:{pagerBar:".flc-pager-top, .flc-pager-bottom",summary:".flc-pager-summary",pageSize:".flc-pager-page-size"},strings:{last:" (last)"},markup:{rangeAnnotation:"<b> %first </b><br/>&mdash;<br/><b> %last </b>"},distributeOptions:{source:"{that}.options.pageList",removeSource:!0,target:"{that fluid.pager.pageList}"},pageList:{type:"fluid.pager.renderedPageList",options:{pageStrategy:fluid.pager.gappedPageStrategy(3,1)}},modelRelay:[{target:"pageCount",singleTransform:{type:"fluid.transforms.free",args:{totalRange:"{that}.model.totalRange",pageSize:"{that}.model.pageSize"},func:"fluid.pager.computePageCount"}},{target:"pageIndex",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.pageIndex",min:0,max:"{that}.model.pageCount",excludeMax:1}}],modelListeners:{"":"{that}.events.onModelChange.fire({change}.value, {change}.oldValue, {that})"},listeners:{"initiatePageChange.updatePageIndex":{funcName:"fluid.pager.initiatePageChangeListener",args:["{that}","{arguments}.0"]},"initiatePageSizeChange.updateModel":{changePath:"pageSize",value:"{arguments}.0"}},invokers:{acquireDefaultRange:{funcName:"fluid.identity",args:"{that}.pagerBar.pageList.defaultModel.totalRange"}},dynamicComponents:{summary:{sources:"{that}.dom.summary",type:"fluid.pager.summary",container:"{source}",options:{strings:{message:"Viewing page %currentPage. Showing records %first - %last of %total items."},events:{onModelChange:"{pager}.events.onModelChange"}}},pageSize:{sources:"{that}.dom.pageSize",type:"fluid.pager.directPageSize",container:"{source}"},pagerBar:{sources:"{that}.dom.pagerBar",type:"fluid.pager.pagerBar",container:"{source}",options:{strings:"{pager}.options.strings",events:{initiatePageChange:"{pager}.events.initiatePageChange",onModelChange:"{pager}.events.onModelChange"}}}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.table"),fluid.table.findColumnDef=function(columnDefs,key){return fluid.find_if(columnDefs,function(def){return def.key===key})},fluid.table.getRoots=function(target,dataOffset,index){target.shortRoot=index,target.longRoot=fluid.pathUtil.composePath(dataOffset,target.shortRoot)},fluid.table.expandPath=function(EL,shortRoot,longRoot){return"*"===EL.charAt(0)?longRoot+EL.substring(1):EL.replace("*",shortRoot)},fluid.table.fetchValue=function(dataOffset,dataModel,index,valuebinding,roots){fluid.table.getRoots(roots,dataOffset,index);var path=fluid.table.expandPath(valuebinding,roots.shortRoot,roots.longRoot);return fluid.get(dataModel,path)},fluid.table.rowComparator=function(sortDir){return function(arec,brec){return(arec.value>brec.value?1:arec.value<brec.value?-1:0)*sortDir}},fluid.table.basicSorter=function(columnDefs,dataModel,dataOffset,model){for(var roots={},columnDef=fluid.table.findColumnDef(columnDefs,model.sortKey),sortrecs=[],i=0;i<model.totalRange;++i)sortrecs[i]={index:i,value:fluid.table.fetchValue(dataOffset,dataModel,i,columnDef.valuebinding,roots)};return sortrecs.sort(fluid.table.rowComparator(model.sortDir)),fluid.getMembers(sortrecs,"index")},fluid.table.IDforColumn=function(columnDef,keyPrefix,roots){var EL=columnDef.valuebinding,key=columnDef.key;if(EL||fluid.fail("Error in definition for column with key "+key+": valuebinding is not set"),!key){var segs=fluid.model.parseEL(EL);key=segs[segs.length-1]}return{ID:(keyPrefix||"")+key,EL:fluid.table.expandPath(EL,roots.shortRoot,roots.longRoot)}},fluid.table.bigHeaderForKey=function(key,options){var id=options.rendererOptions.idMap["header:"+key],smallHeader=fluid.jById(id);if(0===smallHeader.length)return null;var headerSortStylisticOffset=options.selectors.headerSortStylisticOffset;return fluid.findAncestor(smallHeader,function(element){return $(element).is(headerSortStylisticOffset)})},fluid.table.setSortHeaderClass=function(styles,element,sort){(element=$(element)).removeClass(styles.ascendingHeader),element.removeClass(styles.descendingHeader),0!==sort&&(element.addClass(1===sort?styles.ascendingHeader:styles.descendingHeader),element.attr("aria-sort",1===sort?"ascending":"descending"))},fluid.table.isCurrentColumnSortable=function(columnDefs,model){var columnDef=model.sortKey?fluid.table.findColumnDef(columnDefs,model.sortKey):null;return!!columnDef&&columnDef.sortable},fluid.table.setModelSortHeaderClass=function(columnDefs,newModel,options){var styles=options.styles,sort=fluid.table.isCurrentColumnSortable(columnDefs,newModel)?newModel.sortDir:0;fluid.table.setSortHeaderClass(styles,fluid.table.bigHeaderForKey(newModel.sortKey,options),sort)},fluid.table.generateColumnClick=function(tableThat,options,model,columnDef){return function(){if(!0===columnDef.sortable){var model=tableThat.model,newModel=fluid.copy(model),styles=tableThat.options.styles,oldKey=model.sortKey;if(columnDef.key!==model.sortKey){newModel.sortKey=columnDef.key,newModel.sortDir=1;var oldBig=fluid.table.bigHeaderForKey(oldKey,options);oldBig&&fluid.table.setSortHeaderClass(styles,oldBig,0)}else{if(newModel.sortKey!==columnDef.key)return!1;newModel.sortDir=-1*newModel.sortDir}newModel.pageIndex=0,tableThat.applier.change("",newModel)}return!1}},fluid.table.fetchHeaderDecorators=function(decorators,columnDef){return decorators[columnDef.sortable?"sortableHeader":"unsortableHeader"]},fluid.table.generateHeader=function(tableThat,options,newModel){var sortableColumnTxt=options.strings.sortableColumnText;1===newModel.sortDir?sortableColumnTxt=options.strings.sortableColumnTextAsc:-1===newModel.sortDir&&(sortableColumnTxt=options.strings.sortableColumnTextDesc);var columnDefs=tableThat.options.columnDefs;return{children:fluid.transform(columnDefs,function(columnDef){return{ID:fluid.table.IDforColumn(columnDef,options.keyPrefix,{}).ID,value:columnDef.label,decorators:[{jQuery:["click",fluid.table.generateColumnClick(tableThat,options,newModel,columnDef)]},{identify:"header:"+columnDef.key},{type:"attrs",attributes:{title:columnDef.key===newModel.sortKey?sortableColumnTxt:options.strings.sortableColumnText}}].concat(fluid.table.fetchHeaderDecorators(options.decorators,columnDef))}})}},fluid.table.expandVariables=function(value,opts){for(var togo="",index=0;;){var nextindex=value.indexOf("${",index);if(-1===nextindex){togo+=value.substring(index);break}togo+=value.substring(index,nextindex);var endi=value.indexOf("}",nextindex+2),EL=value.substring(nextindex+2,endi);EL="VALUE"===EL?opts.EL:fluid.table.expandPath(EL,opts.shortRoot,opts.longRoot),togo+=fluid.get(opts.dataModel,EL),index=endi+1}return togo},fluid.table.expandPaths=function(target,tree,opts){for(var i in tree){var val=tree[i];fluid.isMarker(val,fluid.VALUE)?target[i]="valuebinding"===i?opts.EL:{valuebinding:opts.EL}:"valuebinding"===i?target[i]=fluid.table.expandPath(tree[i],opts):"object"==typeof val?(target[i]=void 0!==val.length?[]:{},fluid.table.expandPaths(target[i],val,opts)):target[i]="string"==typeof val?fluid.table.expandVariables(val,opts):tree[i]}return target},fluid.table.expandColumnDefs=function(columnDefs,keyPrefix,dataModel,filteredRow,roots){return fluid.transform(columnDefs,function(columnDef){var togo,record=fluid.table.IDforColumn(columnDef,keyPrefix,roots),opts=$.extend({dataModel:dataModel},roots,record);return columnDef.components?(togo="function"==typeof columnDef.components?columnDef.components(filteredRow.row,filteredRow.index):columnDef.components,(togo=fluid.table.expandPaths({},togo,opts)).ID=record.ID,togo):{ID:record.ID,valuebinding:record.EL}})},fluid.table.fetchDataModel=function(dataModel,dataOffset){return fluid.get(dataModel,dataOffset)},fluid.table.produceTree=function(tableThat,renderThat){var options=renderThat.options,columnDefs=tableThat.options.columnDefs,roots={},tree=fluid.transform(tableThat.filtered,function(filteredRow){return fluid.table.getRoots(roots,tableThat.options.dataOffset,filteredRow.index),"explode"===columnDefs?fluid.explode(filteredRow.row,roots.longRoot):columnDefs.length?fluid.table.expandColumnDefs(columnDefs,renderThat.options.keyPrefix,tableThat.dataModel,filteredRow,roots):void 0}),fullTree={};return fullTree[options.row]=tree,"object"==typeof columnDefs&&(fullTree[options.header]=fluid.table.generateHeader(tableThat,renderThat.options,tableThat.model)),fullTree},fluid.table.sortInvoker=function(tableThat,newModel){var columnDefs=tableThat.options.columnDefs,sorted=fluid.table.isCurrentColumnSortable(columnDefs,newModel)?tableThat.options.sorter(columnDefs,tableThat.options.dataModel,tableThat.options.dataOffset,newModel):null;tableThat.permutation=sorted},fluid.table.onModelChange=function(tableThat,renderThat,newModel){renderThat.sortInvoker(newModel),tableThat.dataModel=tableThat.fetchDataModel(),tableThat.filtered=tableThat.options.modelFilter(tableThat.dataModel,newModel,tableThat.permutation)},fluid.defaults("fluid.table.selfRender",{gradeNames:["fluid.rendererComponent"],listeners:{onCreate:[{this:"{that}.root",method:"addClass",args:"{that}.options.styles.root"}],onIndexModelChange:[{funcName:"fluid.table.onModelChange",namespace:"onModelChange",args:["{fluid.table}","{fluid.table.selfRender}","{arguments}.0","{arguments}.1"]},{func:"{that}.sortInvoker",namespace:"sortInvoker",args:"{arguments}.0"},{priority:"last",namespace:"refreshView",func:"{that}.refreshView"}],afterRender:{funcName:"fluid.table.setModelSortHeaderClass",args:["{that}.options.columnDefs","{fluid.table}.model","{that}.options"]}},modelListeners:{"{fluid.table}.model":"{that}.events.onIndexModelChange.fire({change}.value, {change}.oldValue)"},events:{onIndexModelChange:null},invokers:{sortInvoker:{funcName:"fluid.table.sortInvoker",args:["{fluid.table}","{arguments}.0"]},produceTree:{funcName:"fluid.table.produceTree",args:["{fluid.table}","{fluid.table.selfRender}"]}},selectors:{root:".flc-pager-body-template",headerSortStylisticOffset:"{table}.options.selectors.headerSortStylisticOffset",header:".flc-table-header",row:".flc-table-row"},repeatingSelectors:["header","row"],selectorsToIgnore:["root","headerSortStylisticOffset"],styles:{root:"fl-pager",ascendingHeader:"{table}.options.styles.ascendingHeader",descendingHeader:"{table}.options.styles.descendingHeader"},members:{root:"{that}.dom.root"},decorators:{sortableHeader:[],unsortableHeader:[]},keyStrategy:"id",keyPrefix:"",row:"row:",header:"header:",strings:"{table}.options.strings",columnDefs:"{table}.options.columnDefs",rendererFnOptions:{templateSource:{node:"{that}.dom.root"},renderTarget:"{that}.dom.root",noexpand:!0},rendererOptions:{model:"{table}.options.dataModel",idMap:{}}}),fluid.table.checkTotalRange=function(totalRange,pagerBar){void 0!==totalRange||pagerBar||fluid.fail("Error in Pager configuration - cannot determine total range, since not configured in model.totalRange and no PagerBar is configured")},fluid.defaults("fluid.table",{gradeNames:["fluid.viewComponent"],mergePolicy:{dataModel:"preserve",columnDefs:"noexpand"},components:{bodyRenderer:{type:"fluid.table.selfRender",container:"{table}.container"}},listeners:{onCreate:{funcName:"fluid.table.checkTotalRange",namespace:"checkTotalRange",args:["{that}.model.totalRange","{that}.pagerBar"]}},modelFilter:fluid.table.directModelFilter,sorter:fluid.table.basicSorter,members:{dataModel:{expander:{func:"{that}.fetchDataModel"}}},invokers:{fetchDataModel:{funcName:"fluid.table.fetchDataModel",args:["{that}.options.dataModel","{that}.options.dataOffset"]}},styles:{ascendingHeader:"fl-pager-asc",descendingHeader:"fl-pager-desc"},selectors:{headerSortStylisticOffset:".flc-pager-sort-header"},strings:{sortableColumnText:"Select to sort",sortableColumnTextDesc:"Select to sort in ascending, currently in descending order.",sortableColumnTextAsc:"Select to sort in descending, currently in ascending order."},dataOffset:"",columnDefs:[]})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.pagedTable"),fluid.defaults("fluid.pagedTable.rangeAnnotator",{gradeNames:["fluid.component"]}),fluid.pagedTable.rangeAnnotator.onRenderPageLinks=function(that,tree,newModel,pagerBar){pagerBar.tooltip.close();var roots={},column=that.options.annotateColumnRange||(that.options.annotateSortedColumn?newModel.sortKey:null);if(column){var dataModel=that.options.dataModel,columnDefs=that.options.columnDefs,columnDef=fluid.table.findColumnDef(columnDefs,column),tModel={};fluid.model.copyModel(tModel,newModel);var tooltipInfo={};fluid.each(tree,function(cell){if("page-link:link"===cell.ID){var page=cell.pageIndex,start=page*tModel.pageSize;tModel.pageIndex=page;var limit=fluid.pager.computePageLimit(tModel),iValue=fetchValue(start),lValue=fetchValue(limit-1);tooltipInfo[page]={first:iValue,last:lValue}}}),pagerBar.tooltipInfo=tooltipInfo}function fetchValue(index){return index=that.permutation?that.permutation[index]:index,fluid.table.fetchValue(that.options.dataOffset,dataModel,index,columnDef.valuebinding,roots)}},fluid.pagedTable.directModelFilter=function(model,pagerModel,perm){for(var togo=[],limit=fluid.pager.computePageLimit(pagerModel),i=pagerModel.pageIndex*pagerModel.pageSize;i<limit;++i){var index=perm?perm[i]:i;togo[togo.length]={index:index,row:model[index]}}return togo},fluid.pagedTable.configureTooltip=function(pagedTable,pagerBar,renderedPageList){var idMap=renderedPageList.rendererOptions.idMap,idToContent={};fluid.each(pagerBar.tooltipInfo,function(value,index){idToContent[idMap["pageLink:"+index]]=fluid.stringTemplate(pagedTable.options.markup.rangeAnnotation,value)}),pagerBar.tooltip.applier.change("idToContent",idToContent)},fluid.defaults("fluid.pagedTable",{gradeNames:["fluid.pager","fluid.table"],distributeOptions:[{target:"{that renderedPageList}.options.listeners.afterRender",record:{funcName:"fluid.pagedTable.configureTooltip",args:["{pagedTable}","{pagerBar}","{arguments}.0"]}},{target:"{that renderedPageList}.options.listeners.onRenderPageLinks",record:{funcName:"fluid.pagedTable.rangeAnnotator.onRenderPageLinks",args:["{pagedTable}","{arguments}.0","{arguments}.1","{pagerBar}"]}},{target:"{that pagerBar}.options.components.tooltip",source:"{that}.options.tooltip"}],annotateSortedColumn:!1,annotateColumnRange:void 0,markup:{rangeAnnotation:"<b> %first </b><br/>&mdash;<br/><b> %last </b>"},tooltip:{type:"fluid.tooltip",container:"{that}.container",options:{}},invokers:{acquireDefaultRange:{funcName:"fluid.identity",args:"{that}.dataModel.length"}},modelFilter:fluid.pagedTable.directModelFilter,model:{pageSize:10}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.progress"),fluid.progress.animateDisplay=function(elm,animation,defaultAnimation,callback){animation=animation||defaultAnimation,elm.animate(animation.params,animation.duration,callback)},fluid.progress.animateProgress=function(elm,width,speed){elm.queue("fx",[]),elm.animate({width:width,queue:!1},speed)},fluid.progress.showProgress=function(that,animation){var firer=that.events.onProgressBegin.fire;!1===animation?(that.displayElement.show(),firer()):fluid.progress.animateDisplay(that.displayElement,animation,that.options.showAnimation,firer)},fluid.progress.hideProgress=function(that,delay,animation){if(delay)setTimeout(function(){fluid.progress.hideProgress(that,0,animation)},delay);else{var firer=that.events.afterProgressHidden.fire;!1===animation?(that.displayElement.hide(),firer()):fluid.progress.animateDisplay(that.displayElement,animation,that.options.hideAnimation,firer)}},fluid.progress.updateWidth=function(that,newWidth,dontAnimate){var currWidth=that.indicator.width(),direction=that.options.animate;currWidth<newWidth&&("both"===direction||"forward"===direction)&&!dontAnimate?fluid.progress.animateProgress(that.indicator,newWidth,that.options.speed):newWidth<currWidth&&("both"===direction||"backward"===direction)&&!dontAnimate?fluid.progress.animateProgress(that.indicator,newWidth,that.options.speed):that.indicator.width(newWidth)},fluid.progress.percentToPixels=function(that,percent){return Math.round(Math.min(percent,100)*that.progressBar.innerWidth()/100)},fluid.progress.refreshRelativeWidth=function(that){var pixels=Math.max(fluid.progress.percentToPixels(that,parseFloat(that.storedPercent)),that.options.minWidth);fluid.progress.updateWidth(that,pixels,!0)},fluid.progress.initARIA=function(ariaElement,ariaBusyText){ariaElement.attr("role","progressbar"),ariaElement.attr("aria-valuemin","0"),ariaElement.attr("aria-valuemax","100"),ariaElement.attr("aria-valuenow","0"),ariaBusyText&&ariaElement.attr("aria-valuetext",""),ariaElement.attr("aria-busy","false")},fluid.progress.updateARIA=function(that,percent){var str=that.options.strings,busy=percent<100&&0<percent;if(that.ariaElement.attr("aria-busy",busy),that.ariaElement.attr("aria-valuenow",percent),str.ariaBusyText)if(busy){var busyString=fluid.stringTemplate(str.ariaBusyText,{percentComplete:percent});that.ariaElement.attr("aria-valuetext",busyString)}else 100===percent&&that.ariaElement.attr("aria-valuetext",str.ariaDoneText)},fluid.progress.updateText=function(label,value){label.html(value)},fluid.progress.repositionIndicator=function(that){that.indicator.css("top",that.progressBar.position().top).css("left",0).height(that.progressBar.height()),fluid.progress.refreshRelativeWidth(that)},fluid.progress.updateProgress=function(that,percent,labelText,animationForShow){if(fluid.progress.showProgress(that,animationForShow),null!==percent){that.storedPercent=percent;var pixels=Math.max(fluid.progress.percentToPixels(that,parseFloat(percent)),that.options.minWidth);fluid.progress.updateWidth(that,pixels)}if(fluid.isValue(labelText)){var text=fluid.stringTemplate(labelText,{percentComplete:percent});fluid.progress.updateText(that.label,text)}that.ariaElement&&fluid.progress.updateARIA(that,percent)},fluid.progress.hideElement=function(element,shouldHide){element.toggle(!shouldHide)},fluid.defaults("fluid.progress",{gradeNames:["fluid.viewComponent"],members:{displayElement:"{that}.dom.displayElement",progressBar:"{that}.dom.progressBar",label:"{that}.dom.label",indicator:"{that}.dom.indicator",ariaElement:"{that}.dom.ariaElement",storedPercent:0},events:{onProgressBegin:null,afterProgressHidden:null},listeners:{onCreate:[{this:"{that}.dom.indicator",method:"width",args:"{that}.options.minWidth"},{funcName:"fluid.progress.hideElement",args:["{that}.dom.displayElement","{that}.options.initiallyHidden"]},{funcName:"fluid.progress.initARIA",args:["{that}.ariaElement","{that}.options.strings.ariaBusyText"]}],onProgressBegin:{func:"{that}.options.showAnimation.onProgressBegin"},afterProgressHidden:{func:"{that}.options.hideAnimation.afterProgressHidden"}},invokers:{show:{funcName:"fluid.progress.showProgress",args:["{that}","{arguments}.0"]},hide:{funcName:"fluid.progress.hideProgress",args:["{that}","{arguments}.0","{arguments}.1"]},update:{funcName:"fluid.progress.updateProgress",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},refreshView:{funcName:"fluid.progress.repositionIndicator",args:"{that}"}},selectors:{displayElement:".flc-progress",progressBar:".flc-progress-bar",indicator:".flc-progress-indicator",label:".flc-progress-label",ariaElement:".flc-progress-bar"},strings:{ariaBusyText:"Progress is %percentComplete percent complete",ariaDoneText:"Progress is complete."},showAnimation:{params:{opacity:"show"},duration:"slow",onProgressBegin:fluid.identity},hideAnimation:{params:{opacity:"hide"},duration:"slow",afterProgressHidden:fluid.identity},minWidth:5,delay:0,speed:200,animate:"forward",initiallyHidden:!0,updatePosition:!1})}(jQuery,fluid_3_0_0),function($){if($.support.touch="ontouchend"in document,$.support.touch){var touchHandled,mouseProto=$.ui.mouse.prototype,_mouseInit=mouseProto._mouseInit,_mouseDestroy=mouseProto._mouseDestroy;mouseProto._touchStart=function(event){!touchHandled&&this._mouseCapture(event.originalEvent.changedTouches[0])&&(touchHandled=!0,this._touchMoved=!1,simulateMouseEvent(event,"mouseover"),simulateMouseEvent(event,"mousemove"),simulateMouseEvent(event,"mousedown"))},mouseProto._touchMove=function(event){touchHandled&&(this._touchMoved=!0,simulateMouseEvent(event,"mousemove"))},mouseProto._touchEnd=function(event){touchHandled&&(simulateMouseEvent(event,"mouseup"),simulateMouseEvent(event,"mouseout"),this._touchMoved||simulateMouseEvent(event,"click"),touchHandled=!1)},mouseProto._mouseInit=function(){this.element.bind({touchstart:$.proxy(this,"_touchStart"),touchmove:$.proxy(this,"_touchMove"),touchend:$.proxy(this,"_touchEnd")}),_mouseInit.call(this)},mouseProto._mouseDestroy=function(){this.element.unbind({touchstart:$.proxy(this,"_touchStart"),touchmove:$.proxy(this,"_touchMove"),touchend:$.proxy(this,"_touchEnd")}),_mouseDestroy.call(this)}}function simulateMouseEvent(event,simulatedType){if(!(1<event.originalEvent.touches.length)){event.preventDefault();var touch=event.originalEvent.changedTouches[0],simulatedEvent=document.createEvent("MouseEvents");simulatedEvent.initMouseEvent(simulatedType,!0,!0,window,1,touch.screenX,touch.screenY,touch.clientX,touch.clientY,!1,!1,!1,!1,0,null),event.target.dispatchEvent(simulatedEvent)}}}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.dom.computeAbsolutePosition=function(element){var curleft=0,curtop=0;if(element.offsetParent){for(;curleft+=element.offsetLeft,curtop+=element.offsetTop,element=element.offsetParent;);return[curleft,curtop]}},fluid.dom.cleanseScripts=function(element){$.data(element,fluid.dom.cleanseScripts.MARKER)||(fluid.dom.iterateDom(element,function(node){return"script"===node.tagName.toLowerCase()?"delete":null}),$.data(element,fluid.dom.cleanseScripts.MARKER,!0))},fluid.dom.cleanseScripts.MARKER="fluid-scripts-cleansed",fluid.dom.insertAfter=function(newChild,refChild){var nextSib=refChild.nextSibling;nextSib?refChild.parentNode.insertBefore(newChild,nextSib):refChild.parentNode.appendChild(newChild)},fluid.dom.isWhitespaceNode=function(node){return!/[^\t\n\r ]/.test(node.data)},fluid.dom.isIgnorableNode=function(node){return 8===node.nodeType||3===node.nodeType&&fluid.dom.isWhitespaceNode(node)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.orientation={HORIZONTAL:4,VERTICAL:1},fluid.rectSides={4:["left","right"],1:["top","bottom"],8:"top",12:"bottom",2:"left",3:"right"},fluid.position={BEFORE:-1,AFTER:1,INSIDE:2,REPLACE:3},fluid.direction={NEXT:1,PREVIOUS:-1,UP:8,DOWN:12,LEFT:2,RIGHT:3},fluid.directionSign=function(direction){return direction===fluid.direction.UP||direction===fluid.direction.LEFT?fluid.direction.PREVIOUS:fluid.direction.NEXT},fluid.directionAxis=function(direction){return direction===fluid.direction.LEFT||direction===fluid.direction.RIGHT?0:1},fluid.directionOrientation=function(direction){return fluid.directionAxis(direction)?fluid.orientation.VERTICAL:fluid.orientation.HORIZONTAL},fluid.keycodeDirection={up:fluid.direction.UP,down:fluid.direction.DOWN,left:fluid.direction.LEFT,right:fluid.direction.RIGHT},fluid.registerNamespace("fluid.dom"),fluid.dom.moveDom=function(source,target,position){var scan;if(source=fluid.unwrap(source),target=fluid.unwrap(target),position===fluid.position.INSIDE)target.appendChild(source);else if(position===fluid.position.BEFORE){for(scan=target.previousSibling;;scan=scan.previousSibling)if(!scan||!fluid.dom.isIgnorableNode(scan)){scan!==source&&(fluid.dom.cleanseScripts(source),target.parentNode.insertBefore(source,target));break}}else if(position===fluid.position.AFTER){for(scan=target.nextSibling;;scan=scan.nextSibling)if(!scan||!fluid.dom.isIgnorableNode(scan)){scan!==source&&(fluid.dom.cleanseScripts(source),fluid.dom.insertAfter(source,target));break}}else fluid.fail("Unrecognised position supplied to fluid.moveDom: "+position)},fluid.dom.normalisePosition=function(position,samespan,targeti,sourcei){return position===fluid.position.REPLACE&&(position=samespan&&sourcei<=targeti?fluid.position.AFTER:fluid.position.BEFORE),position},fluid.dom.permuteDom=function(element,target,position,sourceelements,targetelements){element=fluid.unwrap(element),target=fluid.unwrap(target);var sourcei=$.inArray(element,sourceelements);-1===sourcei&&fluid.fail("Error in permuteDom: source element "+fluid.dumpEl(element)+" not found in source list "+fluid.dumpEl(sourceelements));var targeti=$.inArray(target,targetelements);-1===targeti&&fluid.fail("Error in permuteDom: target element "+fluid.dumpEl(target)+" not found in source list "+fluid.dumpEl(targetelements));var samespan=sourceelements===targetelements;position=fluid.dom.normalisePosition(position,samespan,targeti,sourcei);var oldn={};oldn[fluid.position.AFTER]=element.nextSibling,oldn[fluid.position.BEFORE]=element.previousSibling,fluid.dom.moveDom(sourceelements[sourcei],targetelements[targeti],position);var i,frontlimit=samespan?targeti-1:sourceelements.length-2;if(position===fluid.position.BEFORE&&samespan&&frontlimit--,!samespan||sourcei<targeti){for(i=frontlimit;sourcei<i;--i)fluid.dom.moveDom(sourceelements[i+1],sourceelements[i],fluid.position.AFTER);sourcei+1<sourceelements.length&&fluid.dom.moveDom(sourceelements[sourcei+1],oldn[fluid.position.AFTER],fluid.position.BEFORE)}var backlimit=samespan?sourcei-1:targetelements.length-1;if(position===fluid.position.AFTER&&targeti++,!samespan||targeti<sourcei){for(i=targeti;i<backlimit;++i)fluid.dom.moveDom(targetelements[i],targetelements[i+1],fluid.position.BEFORE);0<=backlimit&&backlimit<targetelements.length-1&&fluid.dom.moveDom(targetelements[backlimit],oldn[fluid.position.BEFORE],fluid.position.AFTER)}};var curCss=function(a,name){return window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(name):a.currentStyle[name]};fluid.dom.isAttached=function(node){for(;node&&node.nodeName;){if("BODY"===node.nodeName)return!0;node=node.parentNode}return!1},fluid.dom.generalHidden=function(a){return"hidden"===a.type||"none"===curCss(a,"display")||"hidden"===curCss(a,"visibility")||!fluid.dom.isAttached(a)},fluid.registerNamespace("fluid.geometricManager"),fluid.geometricManager.computeGeometry=function(element,orientation,disposition){var elem={};elem.element=element,elem.orientation=orientation,disposition===fluid.position.INSIDE&&(elem.position=disposition),fluid.dom.generalHidden(element)&&(elem.clazz="hidden");var pos=fluid.dom.computeAbsolutePosition(element)||[0,0],width=element.offsetWidth,height=element.offsetHeight;return elem.rect={left:pos[0],top:pos[1]},elem.rect.right=pos[0]+width,elem.rect.bottom=pos[1]+height,elem};fluid.geometricManager.dumprect=function(rect){return"Rect top: "+rect.top+" left: "+rect.left+" bottom: "+rect.bottom+" right: "+rect.right},fluid.geometricManager.dumpelem=function(cacheelem){return cacheelem&&cacheelem.rect?fluid.geometricManager.dumprect(cacheelem.rect)+" position: "+cacheelem.position+" for "+fluid.dumpEl(cacheelem.element):"null"},fluid.dropManager=function(){var lastClosest,lastGeometry,displacementX,displacementY,targets=[],cache={},that={};that.updateGeometry=function(geometricInfo){targets=[],cache={};for(var mapper=(lastGeometry=geometricInfo).elementMapper,geometryComputor=geometricInfo.geometryComputor||fluid.geometricManager.computeGeometry,processElement=function(element,extent,sentB,sentF,disposition,index){var orientation=extent.orientation,sides=fluid.rectSides[orientation],cacheelem=geometryComputor(element,orientation,disposition);cacheelem.owner=extent,"hidden"!==cacheelem.clazz&&mapper&&(cacheelem.clazz=mapper(element)),cache[fluid.dropManager.cacheKey(element)]=cacheelem;var backClass=fluid.dropManager.getRelativeClass(extent.elements,index,fluid.position.BEFORE,cacheelem.clazz,mapper),frontClass=fluid.dropManager.getRelativeClass(extent.elements,index,fluid.position.AFTER,cacheelem.clazz,mapper);return disposition===fluid.position.INSIDE?targets[targets.length]=cacheelem:fluid.dropManager.splitElement(targets,sides,cacheelem,disposition,backClass,frontClass),sentB&&geometricInfo.sentinelize&&fluid.dropManager.sentinelizeElement(targets,sides,cacheelem,1,disposition,backClass),sentF&&geometricInfo.sentinelize&&fluid.dropManager.sentinelizeElement(targets,sides,cacheelem,0,disposition,frontClass),cacheelem},i=0;i<geometricInfo.extents.length;++i){for(var thisInfo=geometricInfo.extents[i],allHidden=!0,j=0;j<thisInfo.elements.length;++j){"hidden"!==processElement(thisInfo.elements[j],thisInfo,0===j,j===thisInfo.elements.length-1,fluid.position.INTERLEAVED,j).clazz&&(allHidden=!1)}allHidden&&thisInfo.parentElement&&processElement(thisInfo.parentElement,thisInfo,!0,!0,fluid.position.INSIDE)}fluid.dropManager.normalizeSentinels(targets)},that.startDrag=function(event,handlePos,handleWidth,handleHeight){var handleMidX=handlePos[0]+handleWidth/2,handleMidY=handlePos[1]+handleHeight/2,dX=handleMidX-event.pageX,dY=handleMidY-event.pageY;that.updateGeometry(lastGeometry),lastClosest=null,displacementX=dX,displacementY=dY,$("body").on("mousemove.fluid-dropManager",that.mouseMove)},that.lastPosition=function(){return lastClosest},that.endDrag=function(){$("body").off("mousemove.fluid-dropManager")},that.mouseMove=function(evt){var x=evt.pageX+displacementX,y=evt.pageY+displacementY,closestTarget=that.closestTarget(x,y,lastClosest);closestTarget&&closestTarget!==fluid.dropManager.NO_CHANGE&&(lastClosest=closestTarget,that.dropChangeFirer.fire(closestTarget))},that.dropChangeFirer=fluid.makeEventFirer();var blankHolder={element:null};return that.closestTarget=function(x,y,lastClosest){for(var mindistance=Number.MAX_VALUE,minelem=blankHolder,minlockeddistance=Number.MAX_VALUE,minlockedelem=blankHolder,i=0;i<targets.length;++i){var cacheelem=targets[i];if("hidden"!==cacheelem.clazz){var distance=fluid.geom.minPointRectangle(x,y,cacheelem.rect);if("locked"===cacheelem.clazz)distance<minlockeddistance&&(minlockeddistance=distance,minlockedelem=cacheelem);else if(distance<mindistance&&(mindistance=distance,minelem=cacheelem),0===distance)break}}return minelem?(mindistance<=minlockeddistance&&(minlockedelem=blankHolder),lastClosest&&lastClosest.position===minelem.position&&fluid.unwrap(lastClosest.element)===fluid.unwrap(minelem.element)&&fluid.unwrap(lastClosest.lockedelem)===fluid.unwrap(minlockedelem.element)?fluid.dropManager.NO_CHANGE:{position:minelem.position,element:minelem.element,lockedelem:minlockedelem.element}):minelem},that.shuffleProjectFrom=function(element,direction,includeLocked,disableWrap){var togo=that.projectFrom(element,direction,includeLocked,disableWrap);return togo&&(togo.position=fluid.position.REPLACE),togo},that.projectFrom=function(element,direction,includeLocked,disableWrap){that.updateGeometry(lastGeometry);var cacheelem=cache[fluid.dropManager.cacheKey(element)],projected=fluid.geom.projectFrom(cacheelem.rect,direction,targets,includeLocked,disableWrap);if(!projected.cacheelem)return null;var retpos=projected.cacheelem.position;return{element:projected.cacheelem.element,position:retpos||fluid.position.BEFORE}},that.logicalFrom=function(element,direction,includeLocked,disableWrap){var orderables=that.getOwningSpan(element,fluid.position.INTERLEAVED,includeLocked);return{element:fluid.dropManager.getRelativeElement(element,direction,orderables,disableWrap),position:fluid.position.REPLACE}},that.lockedWrapFrom=function(element,direction,includeLocked,disableWrap){var base=that.logicalFrom(element,direction,includeLocked,disableWrap),selectables=that.getOwningSpan(element,fluid.position.INTERLEAVED,includeLocked),allElements=cache[fluid.dropManager.cacheKey(element)].owner.elements;if(includeLocked||selectables[0]===allElements[0])return base;var directElement=fluid.dropManager.getRelativeElement(element,direction,allElements,disableWrap);return"locked"===lastGeometry.elementMapper(directElement)&&(base.element=null,base.clazz="locked"),base},that.getOwningSpan=function(element,position,includeLocked){var owner=cache[fluid.dropManager.cacheKey(element)].owner,elements=position===fluid.position.INSIDE?[owner.parentElement]:owner.elements;return!includeLocked&&lastGeometry.elementMapper&&(elements=fluid.makeArray(elements),fluid.remove_if(elements,function(element){return"locked"===lastGeometry.elementMapper(element)})),elements},that.geometricMove=function(element,target,position){var sourceElements=that.getOwningSpan(element,null,!0),targetElements=that.getOwningSpan(target,position,!0);fluid.dom.permuteDom(element,target,position,sourceElements,targetElements)},that},fluid.dropManager.NO_CHANGE="no change",fluid.dropManager.cacheKey=function(element){return fluid.allocateSimpleId(element)},fluid.dropManager.sentinelizeElement=function(targets,sides,cacheelem,fc,disposition,clazz){var elemCopy=$.extend(!0,{},cacheelem);elemCopy.origRect=fluid.copy(elemCopy.rect),elemCopy.rect[sides[fc]]=elemCopy.rect[sides[1-fc]]+(fc?1:-1),elemCopy.rect[sides[1-fc]]=1e4*(fc?-1:1),elemCopy.position=disposition===fluid.position.INSIDE?disposition:fc?fluid.position.BEFORE:fluid.position.AFTER,elemCopy.clazz=clazz,targets[targets.length]=elemCopy},fluid.dropManager.normalizeSentinels=function(targets){for(var i=0;i<targets.length;++i)for(var j=0;j<targets.length;++j){var ti=targets[i],tj=targets[j],jrect=tj.origRect||tj.rect;ti.element!==tj.element&&ti.origRect&&0===fluid.geom.minRectRect(ti.rect,jrect)&&(ti.rect=ti.origRect,delete ti.origRect)}},fluid.dropManager.splitElement=function(targets,sides,cacheelem,disposition,clazz1,clazz2){var elem1=$.extend(!0,{},cacheelem),elem2=$.extend(!0,{},cacheelem),midpoint=(elem1.rect[sides[0]]+elem1.rect[sides[1]])/2;elem1.rect[sides[1]]=midpoint,elem1.position=fluid.position.BEFORE,elem2.rect[sides[0]]=midpoint,elem2.position=fluid.position.AFTER,elem1.clazz=clazz1,elem2.clazz=clazz2,targets[targets.length]=elem1,targets[targets.length]=elem2},fluid.dropManager.getRelativeClass=function(thisElements,index,relative,thisclazz,mapper){return(index+=relative)<0&&"locked"===thisclazz?"locked":index>=thisElements.length||null===mapper?null:"locked"===mapper(relative=thisElements[index])&&"locked"===thisclazz?"locked":null},fluid.dropManager.getRelativeElement=function(element,direction,elements,disableWrap){var folded=fluid.directionSign(direction),index=$(elements).index(element)+folded;return index<0&&(index+=elements.length),!disableWrap||index!==elements.length&&index!==elements.length+folded?elements[index%=elements.length]:element},fluid.geom=fluid.geom||{},fluid.geom.minPointRectangle=function(x,y,rectangle){var dx=x<rectangle.left?rectangle.left-x:x>rectangle.right?x-rectangle.right:0,dy=y<rectangle.top?rectangle.top-y:y>rectangle.bottom?y-rectangle.bottom:0;return dx*dx+dy*dy},fluid.geom.minRectRect=function(rect1,rect2){var dx=rect1.right<rect2.left?rect2.left-rect1.right:rect2.right<rect1.left?rect1.left-rect2.right:0,dy=rect1.bottom<rect2.top?rect2.top-rect1.bottom:rect2.bottom<rect1.top?rect1.top-rect2.bottom:0;return dx*dx+dy*dy};var makePenCollect=function(){return{mindist:Number.MAX_VALUE,minrdist:Number.MAX_VALUE}};fluid.geom.projectFrom=function(baserect,direction,targets,forSelection,disableWrap){var axis=fluid.directionAxis(direction),frontSide=fluid.rectSides[direction],backSide=fluid.rectSides[15*axis+5-direction],dirSign=fluid.directionSign(direction),penrect={left:(7*baserect.left+1*baserect.right)/8,right:(5*baserect.left+3*baserect.right)/8,top:(7*baserect.top+1*baserect.bottom)/8,bottom:(5*baserect.top+3*baserect.bottom)/8};function accPen(collect,cacheelem,backSign){var thisrect=cacheelem.rect,pdist=fluid.geom.minRectRect(penrect,thisrect),rdist=-dirSign*backSign*(baserect[1===backSign?frontSide:backSide]-thisrect[1===backSign?backSide:frontSide]);if(pdist<=collect.mindist&&0<=rdist){if(pdist===collect.mindist&&rdist*backSign>collect.minrdist)return;collect.minrdist=rdist*backSign,collect.mindist=pdist,collect.minelem=cacheelem}}penrect[frontSide]=1e4*dirSign,penrect[backSide]=-penrect[frontSide];for(var collect=makePenCollect(),backcollect=makePenCollect(),lockedcollect=makePenCollect(),i=0;i<targets.length;++i){var elem=targets[i],isPure=elem.owner&&elem.element===elem.owner.parentElement;"hidden"===elem.clazz||forSelection&&isPure||(forSelection||"locked"!==elem.clazz?(accPen(collect,elem,1),accPen(backcollect,elem,-1)):accPen(lockedcollect,elem,1))}var wrap=!collect.minelem||backcollect.mindist<collect.mindist,mincollect=(wrap=wrap&&!disableWrap)?backcollect:collect,togo={wrapped:wrap,cacheelem:mincollect.minelem};return lockedcollect.mindist<mincollect.mindist&&(togo.lockedelem=lockedcollect.minelem),togo}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.reorderer"),fluid.reorderer.defaultAvatarCreator=function(item,cssClass,dropWarning){fluid.dom.cleanseScripts(fluid.unwrap(item));var avatar=$(item).clone();if(fluid.dom.iterateDom(avatar.get(0),function(node){node.removeAttribute("id"),"input"===node.tagName.toLowerCase()&&node.setAttribute("disabled","disabled")}),avatar.removeProp("id"),avatar.removeClass("ui-droppable"),avatar.addClass(cssClass),dropWarning){var avatarContainer=$(document.createElement("div"));avatarContainer.append(avatar),avatarContainer.append(dropWarning),avatar=avatarContainer}return $("body").append(avatar),$.browser.safari||avatar.css("display","block").width(item.offsetWidth).height(item.offsetHeight),$.browser.opera&&avatar.hide(),avatar},fluid.reorderer.bindHandlersToContainer=function(container,keyDownHandler,keyUpHandler){var actualKeyDown=keyDownHandler,advancedPrevention=!1;$.browser.opera&&(container.keypress(function(evt){if(advancedPrevention)return advancedPrevention=!1,evt.preventDefault(),!1}),actualKeyDown=function(evt){!1===keyDownHandler(evt)&&(advancedPrevention=!0)}),container.keydown(actualKeyDown),container.keyup(keyUpHandler)},fluid.reorderer.addRolesToContainer=function(that){that.container.attr("role",that.options.containerRole.container),that.container.attr("aria-multiselectable","false"),that.container.attr("aria-readonly","false"),that.container.attr("aria-disabled","false")},fluid.reorderer.createAvatarId=function(parentId){return parentId+"_avatar"},fluid.reorderer.keys={TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:19,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,i:73,j:74,k:75,m:77},fluid.reorderer.defaultKeysets=[{modifier:function(evt){return evt.ctrlKey},up:fluid.reorderer.keys.UP,down:fluid.reorderer.keys.DOWN,right:fluid.reorderer.keys.RIGHT,left:fluid.reorderer.keys.LEFT},{modifier:function(evt){return evt.ctrlKey},up:fluid.reorderer.keys.i,down:fluid.reorderer.keys.m,right:fluid.reorderer.keys.k,left:fluid.reorderer.keys.j}],fluid.reorderer.keysetsPolicy=function(target,source){var value=source||target;return fluid.makeArray(value)},fluid.reorderer.copyDropWarning=function(dropWarning){return dropWarning?dropWarning.clone():dropWarning},fluid.defaults("fluid.reorderer",{gradeNames:["fluid.viewComponent"],styles:{defaultStyle:"fl-reorderer-movable-default",selected:"fl-reorderer-movable-selected",dragging:"fl-reorderer-movable-dragging",mouseDrag:"fl-reorderer-movable-dragging",hover:"fl-reorderer-movable-hover",dropMarker:"fl-reorderer-dropMarker",avatar:"fl-reorderer-avatar"},selectors:{dropWarning:".flc-reorderer-dropWarning",movables:".flc-reorderer-movable",selectables:".flc-reorderer-movable",dropTargets:".flc-reorderer-movable",grabHandle:""},avatarCreator:fluid.reorderer.defaultAvatarCreator,keysets:fluid.reorderer.defaultKeysets,containerRole:"{that}.layoutHandler.options.containerRole",selectablesTabindex:"{that}.layoutHandler.options.selectablesTabindex",layoutHandler:"fluid.listLayoutHandler",members:{dropManager:"@expand:fluid.dropManager()",activeItem:null,kbDropWarning:"{that}.dom.dropWarning",mouseDropWarning:"@expand:fluid.reorderer.copyDropWarning({that}.kbDropWarning)"},events:{onShowKeyboardDropWarning:null,onSelect:null,onBeginMove:"preventable",onMove:null,afterMove:null,onHover:null,onRefresh:null},listeners:{onCreate:[{namespace:"bindKeyHandlers",funcName:"fluid.reorderer.bindHandlersToContainer",args:["{that}.container","{that}.handleKeyDown","{that}.handleKeyUp"]},{namespace:"addContainerRoles",funcName:"fluid.reorderer.addRolesToContainer",args:"{that}"},{namespace:"makeTabbable",funcName:"fluid.tabbable",args:"{that}.container"},{namespace:"processAfterMoveCallback",funcName:"fluid.reorderer.processAfterMoveCallbackUrl",args:"{that}"},"{that}.refresh"],onRefresh:{listener:"fluid.reorderer.initItems",args:"{that}",priority:-1e3},onHover:{funcName:"fluid.reorderer.hoverStyleHandler",args:["{that}.dom","{that}.options.styles","{arguments}.0","{arguments}.1"]}},invokers:{changeSelectedToDefault:{funcName:"fluid.reorderer.changeSelectedToDefault",args:["{arguments}.0","{that}.options.styles"]},setDropEffects:{funcName:"fluid.reorderer.setDropEffects",args:["{that}.dom","{arguments}.0"]},createDropMarker:{funcName:"fluid.reorderer.createDropMarker",args:["{arguments}.0","{that}.options.styles.dropMarker"]},refresh:{funcName:"fluid.reorderer.refresh",args:["{that}.dom","{that}.events","{that}.selectableContext","{that}.activeItem"]},selectItem:{funcName:"fluid.reorderer.selectItem",args:["{that}","{arguments}.0"]},initSelectables:{funcName:"fluid.reorderer.initSelectables",args:["{that}"]},initMovable:{funcName:"fluid.reorderer.initMovable",args:["{that}","{that}.dropManager","{arguments}.0"]},isMove:{funcName:"fluid.reorderer.isMove",args:["{that}.options.keysets","{arguments}.0"]},isActiveItemMovable:{funcName:"fluid.reorderer.isActiveItemMovable",args:["{that}.activeItem","{that}.dom"]},handleKeyDown:{funcName:"fluid.reorderer.handleKeyDown",args:["{that}","{that}.options.styles","{arguments}.0"]},handleDirectionKeyDown:{funcName:"fluid.reorderer.handleDirectionKeyDown",args:["{that}","{arguments}.0"]},handleKeyUp:{funcName:"fluid.reorderer.handleKeyUp",args:["{that}","{that}.options.styles","{arguments}.0"]},requestMovement:{funcName:"fluid.reorderer.requestMovement",args:["{that}","{arguments}.0","{arguments}.1"]}},mergePolicy:{keysets:fluid.reorderer.keysetsPolicy,"selectors.labelSource":"selectors.grabHandle","selectors.selectables":"selectors.movables","selectors.dropTargets":"selectors.movables"},components:{layoutHandler:{type:"{that}.options.layoutHandler",container:"{reorderer}.container"},labeller:{type:"fluid.reorderer.labeller",options:{members:{dom:"{reorderer}.dom"},getGeometricInfo:"{reorderer}.layoutHandler.getGeometricInfo",orientation:"{reorderer}.layoutHandler.options.orientation",layoutType:"{reorderer}.options.layoutHandler"}}},disableWrap:!1}),fluid.reorderer.noModifier=function(evt){return!(evt.ctrlKey||evt.altKey||evt.shiftKey||evt.metaKey)},fluid.reorderer.isMove=function(keysets,evt){for(var i=0;i<keysets.length;i++)if(keysets[i].modifier(evt))return!0;return!1},fluid.reorderer.isActiveItemMovable=function(activeItem,dom){return 0<=$.inArray(activeItem,dom.fastLocate("movables"))},fluid.reorderer.handleKeyDown=function(thatReorderer,styles,evt){if(!thatReorderer.activeItem||thatReorderer.activeItem!==evt.target)return!0;var jActiveItem=$(thatReorderer.activeItem);return!jActiveItem.hasClass(styles.dragging)&&thatReorderer.isMove(evt)?(thatReorderer.isActiveItemMovable()&&(jActiveItem.removeClass(styles.selected),jActiveItem.addClass(styles.dragging),jActiveItem.attr("aria-grabbed","true"),thatReorderer.setDropEffects("move")),!1):thatReorderer.handleDirectionKeyDown(evt)},fluid.reorderer.handleDirectionKeyDown=function(thatReorderer,evt){var item=thatReorderer.activeItem;if(!item)return!0;for(var keysets=thatReorderer.options.keysets,i=0;i<keysets.length;i++){var keyset=keysets[i],keydir=fluid.keyForValue(keyset,evt.keyCode);if(keydir){var isMovement=keyset.modifier(evt),dirnum=fluid.keycodeDirection[keydir],relativeItem=thatReorderer.layoutHandler.getRelativePosition(item,dirnum,!isMovement);if(relativeItem){if(isMovement){if(!1===thatReorderer.events.onBeginMove.fire(item))return!1;var kbDropWarning=thatReorderer.kbDropWarning;0<kbDropWarning.length&&("locked"===relativeItem.clazz?(thatReorderer.events.onShowKeyboardDropWarning.fire(item,kbDropWarning),kbDropWarning.show()):kbDropWarning.hide()),relativeItem.element&&thatReorderer.requestMovement(relativeItem,item)}else fluid.reorderer.noModifier(evt)&&(fluid.blur(item),fluid.focus($(relativeItem.element)));return!1}}}return!0},fluid.reorderer.handleKeyUp=function(thatReorderer,styles,evt){if(!thatReorderer.activeItem||thatReorderer.activeItem!==evt.target)return!0;var jActiveItem=$(thatReorderer.activeItem);return jActiveItem.hasClass(styles.dragging)&&!thatReorderer.isMove(evt)&&(thatReorderer.kbDropWarning&&thatReorderer.kbDropWarning.hide(),jActiveItem.removeClass(styles.dragging),jActiveItem.addClass(styles.selected),jActiveItem.attr("aria-grabbed","false"),thatReorderer.setDropEffects("none")),!1},fluid.reorderer.requestMovement=function(thatReorderer,requestedPosition,item){if(item=fluid.unwrap(item),requestedPosition&&fluid.unwrap(requestedPosition.element)!==item){var activeItem=$(thatReorderer.activeItem);activeItem.off("blur.fluid.reorderer"),thatReorderer.events.onMove.fire(item,requestedPosition),thatReorderer.dropManager.geometricMove(item,requestedPosition.element,requestedPosition.position),fluid.focus(activeItem),thatReorderer.refresh(),thatReorderer.dropManager.updateGeometry(thatReorderer.layoutHandler.getGeometricInfo()),thatReorderer.events.afterMove.fire(item,requestedPosition,thatReorderer.dom.fastLocate("movables"))}},fluid.reorderer.hoverStyleHandler=function(dom,styles,item,state){dom.fastLocate("grabHandle",item)[state?"addClass":"removeClass"](styles.hover)},fluid.reorderer.processAfterMoveCallbackUrl=function(thatReorderer){var options=thatReorderer.options;options.afterMoveCallbackUrl&&thatReorderer.events.afterMove.addListener(function(){var layoutHandler=thatReorderer.layoutHandler,model=layoutHandler.getModel?layoutHandler.getModel():options.acquireModel(thatReorderer);$.post(options.afterMoveCallbackUrl,JSON.stringify(model))},"postModel")},fluid.reorderer.setDropEffects=function(dom,value){dom.fastLocate("dropTargets").attr("aria-dropeffect",value)},fluid.reorderer.createDropMarker=function(tagName,dropClass){var dropMarker=$(document.createElement(tagName));return dropMarker.addClass(dropClass),dropMarker.hide(),dropMarker},fluid.reorderer.changeSelectedToDefault=function(jItem,styles){jItem.removeClass(styles.selected),jItem.removeClass(styles.dragging),jItem.addClass(styles.defaultStyle),jItem.attr("aria-selected","false")},fluid.reorderer.initSelectables=function(thatReorderer){for(var handleBlur=function(evt){return thatReorderer.changeSelectedToDefault($(this)),evt.stopPropagation()},handleFocus=function(evt){return thatReorderer.selectItem(this),evt.stopPropagation()},handleClick=function(evt){var handle=fluid.unwrap(thatReorderer.dom.fastLocate("grabHandle",this));fluid.dom.isContainer(handle,evt.target)&&$(this).focus()},selectables=thatReorderer.dom.fastLocate("selectables"),i=0;i<selectables.length;++i){var selectable=$(selectables[i]);$.data(selectable[0],"fluid.reorderer.selectable-initialised")||(selectable.addClass(thatReorderer.options.styles.defaultStyle),selectable.on("blur.fluid.reorderer",handleBlur),selectable.focus(handleFocus),selectable.click(handleClick),selectable.attr("role",thatReorderer.options.containerRole.item),selectable.attr("aria-selected","false"),selectable.attr("aria-disabled","false"),$.data(selectable[0],"fluid.reorderer.selectable-initialised",!0))}thatReorderer.selectableContext||(thatReorderer.selectableContext=fluid.selectable(thatReorderer.container,{selectableElements:selectables,selectablesTabindex:thatReorderer.options.selectablesTabindex,direction:null}))},fluid.reorderer.selectItem=function(thatReorderer,anItem){thatReorderer.events.onSelect.fire(anItem),thatReorderer.activeItem&&thatReorderer.activeItem!==anItem&&thatReorderer.changeSelectedToDefault($(thatReorderer.activeItem)),thatReorderer.activeItem=anItem;var jItem=$(anItem),styles=thatReorderer.options.styles;jItem.removeClass(styles.defaultStyle),jItem.addClass(styles.selected),jItem.attr("aria-selected","true")},fluid.reorderer.initMovable=function(thatReorderer,dropManager,item){var avatar,options=thatReorderer.options,styles=options.styles;item.attr("aria-grabbed","false"),item.mouseover(function(){thatReorderer.events.onHover.fire(item,!0)}),item.mouseout(function(){thatReorderer.events.onHover.fire(item,!1)});var handle=thatReorderer.dom.fastLocate("grabHandle",item);item.draggable({refreshPositions:!1,scroll:!0,helper:function(){var dropWarningEl;return thatReorderer.mouseDropWarning&&(dropWarningEl=thatReorderer.mouseDropWarning[0]),(avatar=$(options.avatarCreator(item[0],styles.avatar,dropWarningEl))).prop("id",fluid.reorderer.createAvatarId(thatReorderer.container.id)),avatar},start:function(e){if(!1===thatReorderer.events.onBeginMove.fire(item))return!1;var handle=thatReorderer.dom.fastLocate("grabHandle",item)[0],handlePos=fluid.dom.computeAbsolutePosition(handle),handleWidth=handle.offsetWidth,handleHeight=handle.offsetHeight;item.focus(),item.removeClass(options.styles.selected),item.addClass(options.styles.mouseDrag),item.attr("aria-grabbed","true"),thatReorderer.setDropEffects("move"),dropManager.startDrag(e,handlePos,handleWidth,handleHeight),avatar.show()},stop:function(e,ui){item.removeClass(options.styles.mouseDrag),item.addClass(options.styles.selected),$(thatReorderer.activeItem).attr("aria-grabbed","false");var markerNode=fluid.unwrap(thatReorderer.dropMarker);markerNode.parentNode&&markerNode.parentNode.removeChild(markerNode),avatar.hide(),ui.helper=null,thatReorderer.setDropEffects("none"),dropManager.endDrag(),thatReorderer.requestMovement(dropManager.lastPosition(),item),thatReorderer.activeItem.focus()},handle:fluid.unwrap(handle)===fluid.unwrap(item)?null:handle})},fluid.reorderer.initItems=function(thatReorderer){var movables=thatReorderer.dom.fastLocate("movables"),dropTargets=thatReorderer.dom.fastLocate("dropTargets");thatReorderer.initSelectables();for(var i=0;i<movables.length;i++){var item=movables[i];$.data(item,"fluid.reorderer.movable-initialised")||(thatReorderer.initMovable($(item)),$.data(item,"fluid.reorderer.movable-initialised",!0))}0<movables.length&&!thatReorderer.dropMarker&&(thatReorderer.dropMarker=thatReorderer.createDropMarker(movables[0].tagName)),thatReorderer.dropManager.updateGeometry(thatReorderer.layoutHandler.getGeometricInfo());thatReorderer.dropManager.dropChangeFirer.addListener(function(dropTarget){fluid.dom.moveDom(thatReorderer.dropMarker,dropTarget.element,dropTarget.position),thatReorderer.dropMarker.css("display",""),thatReorderer.mouseDropWarning&&(dropTarget.lockedelem?thatReorderer.mouseDropWarning.show():thatReorderer.mouseDropWarning.hide())},"fluid.reorderer"),dropTargets.attr("aria-dropeffect","none")},fluid.reorderer.refresh=function(dom,events,selectableContext,activeItem){dom.refresh("movables"),dom.refresh("selectables"),dom.refresh("grabHandle",dom.fastLocate("movables")),dom.refresh("dropTargets"),selectableContext&&(selectableContext.selectables=dom.fastLocate("selectables"),selectableContext.selectablesUpdated(activeItem)),events.onRefresh.fire()},fluid.reorderer.roles={GRID:{container:"grid",item:"gridcell"},LIST:{container:"list",item:"listitem"},REGIONS:{container:"main",item:"article"}},fluid.defaults("fluid.reorderList",{gradeNames:["fluid.reorderer"],layoutHandler:"fluid.listLayoutHandler"}),fluid.defaults("fluid.reorderGrid",{gradeNames:["fluid.reorderer"],layoutHandler:"fluid.gridLayoutHandler"}),fluid.reorderer.SHUFFLE_GEOMETRIC_STRATEGY="shuffleProjectFrom",fluid.reorderer.GEOMETRIC_STRATEGY="projectFrom",fluid.reorderer.LOGICAL_STRATEGY="logicalFrom",fluid.reorderer.WRAP_LOCKED_STRATEGY="lockedWrapFrom",fluid.reorderer.NO_STRATEGY=null,fluid.reorderer.relativeInfoGetter=function(orientation,coStrategy,contraStrategy,dropManager,disableWrap){return function(item,direction,forSelection){var strategy=fluid.directionOrientation(direction)===orientation?coStrategy:contraStrategy;return null!==strategy?dropManager[strategy](item,direction,forSelection,disableWrap):null}},fluid.reorderer.makeGeometricInfoGetter=function(orientation,sentinelize,dom){var that={sentinelize:sentinelize,extents:[{orientation:orientation,elements:dom.fastLocate("dropTargets")}],elementMapper:function(element){return-1===$.inArray(element,dom.fastLocate("movables"))?"locked":null},elementIndexer:function(element){var selectables=dom.fastLocate("selectables");return{elementClass:that.elementMapper(element),index:$.inArray(element,selectables),length:selectables.length}}};return that},fluid.defaults("fluid.layoutHandler",{gradeNames:["fluid.viewComponent"],disableWrap:"{reorderer}.options.disableWrap",members:{reordererDom:"{reorderer}.dom",dropManager:"{reorderer}.dropManager"},invokers:{getGeometricInfo:"fluid.reorderer.makeGeometricInfoGetter({that}.options.orientation, {that}.options.sentinelize, {that}.reordererDom)"}}),fluid.defaults("fluid.listLayoutHandler",{gradeNames:["fluid.layoutHandler"],orientation:fluid.orientation.VERTICAL,containerRole:fluid.reorderer.roles.LIST,selectablesTabindex:-1,sentinelize:!0,members:{getRelativePosition:{expander:{funcName:"fluid.reorderer.relativeInfoGetter",args:["{that}.options.orientation",fluid.reorderer.LOGICAL_STRATEGY,null,"{that}.dropManager","{that}.options.disableWrap"]}}}}),fluid.defaults("fluid.gridLayoutHandler",{gradeNames:["fluid.layoutHandler"],orientation:fluid.orientation.HORIZONTAL,containerRole:fluid.reorderer.roles.GRID,selectablesTabindex:-1,sentinelize:!1,coStrategy:"@expand:fluid.gridLayoutHandler.computeCoStrategy({that}.options.disableWrap)",members:{getRelativePosition:{expander:{funcName:"fluid.reorderer.relativeInfoGetter",args:["{that}.options.orientation","{that}.options.coStrategy",fluid.reorderer.SHUFFLE_GEOMETRIC_STRATEGY,"{that}.dropManager","{that}.options.disableWrap"]}}}}),fluid.gridLayoutHandler.computeCoStrategy=function(disableWrap){return disableWrap?fluid.reorderer.SHUFFLE_GEOMETRIC_STRATEGY:fluid.reorderer.LOGICAL_STRATEGY},fluid.defaults("fluid.reorderer.labeller",{gradeNames:["fluid.component"],members:{movedMap:{},moduleCell:{expander:{funcName:"fluid.reorderer.labeller.computeModuleCell",args:["{that}.resolver","{that}.options.orientation"]}},layoutType:{expander:{funcName:"fluid.computeNickName",args:"{that}.options.layoutType"}},positionTemplate:{expander:{funcName:"fluid.reorderer.labeller.computePositionTemplate",args:["{that}.resolver","{that}.layoutType"]}}},strings:{overallTemplate:"%recentStatus %item %position %movable",position:"%index of %length",position_moduleLayoutHandler:"%index of %length in %moduleCell %moduleIndex of %moduleLength",moduleCell_0:"row",moduleCell_1:"column",movable:"movable",fixed:"fixed",recentStatus:"moved from position %position"},components:{resolver:{type:"fluid.messageResolver",options:{messageBase:"{labeller}.options.strings"}}},invokers:{renderLabel:{funcName:"fluid.reorderer.labeller.renderLabel",args:["{labeller}","{arguments}.0","{arguments}.1"]}},listeners:{"{reorderer}.events.onRefresh":{listener:"fluid.reorderer.labeller.onRefresh",args:"{that}"},"{reorderer}.events.onMove":{listener:"fluid.reorderer.labeller.onMove",args:["{that}","{arguments}.0","{arguments}.1"]}}}),fluid.reorderer.labeller.computeModuleCell=function(resolver,orientation){return resolver.resolve("moduleCell_"+orientation)},fluid.reorderer.labeller.computePositionTemplate=function(resolver,layoutType){return resolver.lookup(["position_"+layoutType,"position"])},fluid.reorderer.labeller.onRefresh=function(that){var selectables=that.dom.locate("selectables"),movedMap=that.movedMap;fluid.each(selectables,function(selectable){var labelOptions={},id=fluid.allocateSimpleId(selectable),moved=movedMap[id],label=that.renderLabel(selectable),plainLabel=label;moved&&(moved.newRender=plainLabel,label=that.renderLabel(selectable,moved.oldRender.position),$(selectable).one("focusout.ariaLabeller",function(){if(movedMap[id]){var oldLabel=movedMap[id].newRender.label;delete movedMap[id],fluid.updateAriaLabel(selectable,oldLabel)}}),labelOptions.dynamicLabel=!0),fluid.updateAriaLabel(selectable,label.label,labelOptions)})},fluid.reorderer.labeller.onMove=function(that,item){fluid.clear(that.movedMap),$(item).off("focusout.ariaLabeller");var movingId=fluid.allocateSimpleId(item);that.movedMap[movingId]={oldRender:that.renderLabel(item)}},fluid.reorderer.indexRebaser=function(indices){return indices.index++,void 0!==indices.moduleIndex&&indices.moduleIndex++,indices},fluid.reorderer.labeller.renderLabel=function(that,selectable,recentPosition){var geom=that.options.getGeometricInfo(),indices=fluid.reorderer.indexRebaser(geom.elementIndexer(selectable));indices.moduleCell=that.moduleCell;var recentStatus,elementClass=geom.elementMapper(selectable),labelSource=that.dom.locate("labelSource",selectable);recentPosition&&(recentStatus=that.resolver.resolve("recentStatus",{position:recentPosition}));var topModel={item:"string"==typeof labelSource?labelSource:fluid.dom.getElementText(fluid.unwrap(labelSource)),position:that.positionTemplate.resolveFunc(that.positionTemplate.template,indices),movable:that.resolver.resolve("locked"===elementClass?"fixed":"movable"),recentStatus:recentStatus||""},template=that.resolver.lookup(["overallTemplate"]),label=template.resolveFunc(template.template,topModel);return{position:topModel.position,label:label}}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.reorderImages"),fluid.reorderImages.deriveLightboxCellBase=function(namebase,index){return namebase+"lightbox-cell:"+index+":"},fluid.reorderImages.addThumbnailActivateHandler=function(container){container.keypress(function(evt){if(evt.which===fluid.reorderer.keys.ENTER){var thumbnailAnchors=$("a",evt.target);document.location=thumbnailAnchors.attr("href")}})},fluid.reorderImages.seekNodesById=function(rootnode,tagname,idmatch){for(var inputs=rootnode.getElementsByTagName(tagname),togo=[],i=0;i<inputs.length;i+=1){var input=inputs[i],id=input.id;id&&id.match(idmatch)&&togo.push(input)}return togo},fluid.reorderImages.createImageCellFinder=function(parentNode,containerId){containerId=containerId||parentNode.prop("id"),parentNode=fluid.unwrap(parentNode);var lightboxCellNamePattern="^"+fluid.reorderImages.deriveLightboxCellBase(containerId,"[0-9]+")+"$";return function(){return fluid.reorderImages.seekNodesById(parentNode,"div",lightboxCellNamePattern)}},fluid.reorderImages.seekForm=function(container){return fluid.findAncestor(container,function(element){return $(element).is("form")})},fluid.reorderImages.seekInputs=function(container,reorderform){return fluid.reorderImages.seekNodesById(reorderform,"input","^"+fluid.reorderImages.deriveLightboxCellBase(container.prop("id"),"[^:]*")+"reorder-index$")},fluid.reorderImages.mapIdsToNames=function(container,reorderform){for(var inputs=fluid.reorderImages.seekInputs(container,reorderform),i=0;i<inputs.length;i++){var input=inputs[i],name=input.name;input.name=name||input.id}},fluid.reorderImages.createIDAfterMoveListener=function(container){var reorderform=fluid.reorderImages.seekForm(container);return fluid.reorderImages.mapIdsToNames(container,reorderform),function(){var inputs,i;for(inputs=fluid.reorderImages.seekInputs(container,reorderform),i=0;i<inputs.length;i+=1)inputs[i].value=i;if(reorderform&&reorderform.action){var order=$(reorderform).serialize();$.post(reorderform.action,order,function(){})}}},fluid.defaults("fluid.reorderImages",{gradeNames:["fluid.reorderer"],layoutHandler:"fluid.gridLayoutHandler",listeners:{"afterMove.postModel":{expander:{funcName:"fluid.reorderImages.createIDAfterMoveListener",args:"{that}.container"}}},selectors:{movables:{expander:{funcName:"fluid.reorderImages.createImageCellFinder",args:"{that}.container"}},labelSource:".flc-reorderer-imageTitle"}}),fluid.lightbox=fluid.reorderImages}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.moduleLayout"),fluid.moduleLayout.findColumnAndItemIndices=function(item,layout){return fluid.find(layout.columns,function(column,colIndex){var index=$.inArray(item,column.elements);return-1===index?void 0:{columnIndex:colIndex,itemIndex:index}},{columnIndex:-1,itemIndex:-1})},fluid.moduleLayout.findColIndex=function(item,layout){return fluid.find(layout.columns,function(column,colIndex){return item===column.container?colIndex:void 0},-1)},fluid.moduleLayout.updateLayout=function(item,target,position,layout){item=fluid.unwrap(item),target=fluid.unwrap(target);var targetCol,itemIndices=fluid.moduleLayout.findColumnAndItemIndices(item,layout);if(layout.columns[itemIndices.columnIndex].elements.splice(itemIndices.itemIndex,1),position===fluid.position.INSIDE)(targetCol=layout.columns[fluid.moduleLayout.findColIndex(target,layout)].elements).splice(targetCol.length,0,item);else{var relativeItemIndices=fluid.moduleLayout.findColumnAndItemIndices(target,layout);targetCol=layout.columns[relativeItemIndices.columnIndex].elements;var relative=(position=fluid.dom.normalisePosition(position,itemIndices.columnIndex===relativeItemIndices.columnIndex,relativeItemIndices.itemIndex,itemIndices.itemIndex))===fluid.position.BEFORE?0:1;targetCol.splice(relativeItemIndices.itemIndex+relative,0,item)}},fluid.moduleLayout.layoutFromFlat=function(container,columns,portlets){var layout={};return layout.container=container,layout.columns=fluid.transform(columns,function(column){return{container:column,elements:fluid.makeArray(portlets.filter(function(){return fluid.dom.isContainer(column,this)}))}}),layout},fluid.moduleLayout.layoutFromIds=function(idLayout){return{container:fluid.byId(idLayout.id),columns:fluid.transform(idLayout.columns,function(column){return{container:fluid.byId(column.id),elements:fluid.transform(column.children,fluid.byId)}})}},fluid.moduleLayout.layoutToIds=function(idLayout){return{id:fluid.getId(idLayout.container),columns:fluid.transform(idLayout.columns,function(column){return{id:fluid.getId(column.container),children:fluid.transform(column.elements,fluid.getId)}})}},fluid.moduleLayout.defaultOnShowKeyboardDropWarning=function(item,dropWarning){if(dropWarning){var offset=$(item).offset();(dropWarning=$(dropWarning)).css("position","absolute"),dropWarning.css("top",offset.top),dropWarning.css("left",offset.left)}},fluid.defaults("fluid.moduleLayoutHandler",{gradeNames:["fluid.layoutHandler"],orientation:fluid.orientation.VERTICAL,containerRole:fluid.reorderer.roles.REGIONS,selectablesTabindex:-1,sentinelize:!0,events:{onMove:"{reorderer}.events.onMove",onRefresh:"{reorderer}.events.onRefresh",onShowKeyboardDropWarning:"{reorderer}.events.onShowKeyboardDropWarning"},listeners:{"onShowKeyboardDropWarning.setPosition":"fluid.moduleLayout.defaultOnShowKeyboardDropWarning",onRefresh:{priority:"first",listener:"{that}.computeLayout"},onMove:{priority:"last",listener:"fluid.moduleLayout.onMoveListener",args:["{arguments}.0","{arguments}.1","{that}.layout"]}},members:{layout:{expander:{func:"{that}.computeLayout"}},getRelativePosition:{expander:{funcName:"fluid.reorderer.relativeInfoGetter",args:["{that}.options.orientation",fluid.reorderer.WRAP_LOCKED_STRATEGY,fluid.reorderer.GEOMETRIC_STRATEGY,"{that}.dropManager","{that}.options.disableWrap"]}}},invokers:{computeLayout:{funcName:"fluid.moduleLayout.computeLayout",args:["{that}","{reorderer}.options.selectors.modules","{that}.dom"]},computeModules:{funcName:"fluid.moduleLayout.computeModules",args:["{that}.layout","{that}.isLocked","{arguments}.0"]},makeComputeModules:{funcName:"fluid.moduleLayout.makeComputeModules",args:["{that}","{arguments}.0"]},isLocked:{funcName:"fluid.moduleLayout.isLocked",args:["{arguments}.0","{reorderer}.options.selectors.lockedModules","{that}.reordererDom"]},getGeometricInfo:"fluid.moduleLayout.getGeometricInfo({that})",getModel:"fluid.moduleLayout.getModel({that})"},selectors:{modules:"{reorderer}.options.selectors.modules",columns:"{reorderer}.options.selectors.columns"},distributeOptions:{target:"{reorderer}.options",record:{selectors:{movables:{expander:{func:"{that}.makeComputeModules",args:[!1]}},dropTargets:{expander:{func:"{that}.makeComputeModules",args:[!1]}},selectables:{expander:{func:"{that}.makeComputeModules",args:[!0]}}}}}}),fluid.moduleLayout.getGeometricInfo=function(that){for(var options=that.options,extents=[],togo={extents:extents,sentinelize:options.sentinelize,elementMapper:function(element){return that.isLocked(element)?"locked":null},elementIndexer:function(element){var indices=fluid.moduleLayout.findColumnAndItemIndices(element,that.layout);return{index:indices.itemIndex,length:that.layout.columns[indices.columnIndex].elements.length,moduleIndex:indices.columnIndex,moduleLength:that.layout.columns.length}}},col=0;col<that.layout.columns.length;col++){var column=that.layout.columns[col],thisEls={orientation:options.orientation,elements:fluid.makeArray(column.elements),parentElement:column.container};extents.push(thisEls)}return togo},fluid.moduleLayout.getModel=function(that){return fluid.moduleLayout.layoutToIds(that.layout)},fluid.moduleLayout.computeLayout=function(that,modulesSelector,dom){var togo;if(modulesSelector&&(togo=fluid.moduleLayout.layoutFromFlat(that.container,dom.locate("columns"),dom.locate("modules"))),!togo){var idLayout=fluid.get(that.options,"moduleLayout.layout");togo=fluid.moduleLayout.layoutFromIds(idLayout)}return that.layout=togo},fluid.moduleLayout.computeModules=function(layout,isLocked,all){var modules=fluid.accumulate(layout.columns,function(column,list){return list.concat(column.elements)},[]);return all||fluid.remove_if(modules,isLocked),modules},fluid.moduleLayout.makeComputeModules=function(that,all){return function(){return that.computeModules(all)}},fluid.moduleLayout.isLocked=function(item,lockedModulesSelector,dom){var lockedModules=lockedModulesSelector?dom.fastLocate("lockedModules"):[];return-1!==$.inArray(item,lockedModules)},fluid.moduleLayout.onMoveListener=function(item,requestedPosition,layout){fluid.moduleLayout.updateLayout(item,requestedPosition.element,requestedPosition.position,layout)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.reorderLayout=function(container,userOptions){var options=$.extend(!0,{layoutHandler:"fluid.moduleLayoutHandler",selectors:{columns:".flc-reorderer-column",modules:".flc-reorderer-module"}},userOptions);return fluid.reorderer(container,options)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.slidingPanel",{gradeNames:["fluid.viewComponent"],selectors:{panel:".flc-slidingPanel-panel",toggleButton:".flc-slidingPanel-toggleButton",toggleButtonLabel:".flc-slidingPanel-toggleButton"},strings:{showText:"show",hideText:"hide",panelLabel:"panel"},events:{onPanelHide:null,onPanelShow:null,afterPanelHide:null,afterPanelShow:null},listeners:{"onCreate.bindClick":{this:"{that}.dom.toggleButton",method:"click",args:["{that}.togglePanel"]},"onCreate.bindModelChange":{listener:"{that}.applier.modelChanged.addListener",args:["isShowing","{that}.refreshView"]},"onCreate.setAriaProps":"{that}.setAriaProps","onCreate.setInitialState":{listener:"{that}.refreshView"},"onPanelHide.setText":{this:"{that}.dom.toggleButtonLabel",method:"text",args:["{that}.options.strings.showText"],priority:"first"},"onPanelHide.setAriaLabel":{this:"{that}.dom.toggleButtonLabel",method:"attr",args:["aria-label","{that}.options.strings.showTextAriaLabel"]},"onPanelShow.setText":{this:"{that}.dom.toggleButtonLabel",method:"text",args:["{that}.options.strings.hideText"],priority:"first"},"onPanelShow.setAriaLabel":{this:"{that}.dom.toggleButtonLabel",method:"attr",args:["aria-label","{that}.options.strings.hideTextAriaLabel"]},"onPanelHide.operate":{listener:"{that}.operateHide"},"onPanelShow.operate":{listener:"{that}.operateShow"},"onCreate.setAriaStates":"{that}.setAriaStates"},members:{panelId:{expander:{funcName:"fluid.allocateSimpleId",args:"{that}.dom.panel"}}},model:{isShowing:!1},modelListeners:{isShowing:{funcName:"{that}.setAriaStates",excludeSource:"init"}},invokers:{operateHide:{this:"{that}.dom.panel",method:"slideUp",args:["{that}.options.animationDurations.hide","{that}.events.afterPanelHide.fire"]},operateShow:{this:"{that}.dom.panel",method:"slideDown",args:["{that}.options.animationDurations.show","{that}.events.afterPanelShow.fire"]},hidePanel:{func:"{that}.applier.change",args:["isShowing",!1]},showPanel:{func:"{that}.applier.change",args:["isShowing",!0]},setAriaStates:{funcName:"fluid.slidingPanel.setAriaStates",args:["{that}","{that}.model.isShowing"]},setAriaProps:{funcName:"fluid.slidingPanel.setAriaProperties",args:["{that}","{that}.panelId"]},togglePanel:{funcName:"fluid.slidingPanel.togglePanel",args:["{that}"]},refreshView:{funcName:"fluid.slidingPanel.refreshView",args:["{that}"]}},animationDurations:{hide:400,show:400}}),fluid.slidingPanel.togglePanel=function(that){that.applier.change("isShowing",!that.model.isShowing)},fluid.slidingPanel.refreshView=function(that){that.events[that.model.isShowing?"onPanelShow":"onPanelHide"].fire()},fluid.slidingPanel.setAriaProperties=function(that,panelId){that.locate("toggleButton").attr({role:"button","aria-controls":panelId}),that.locate("panel").attr({"aria-label":that.options.strings.panelLabel,role:"group"})},fluid.slidingPanel.setAriaStates=function(that,isShowing){that.locate("toggleButton").attr({"aria-pressed":isShowing,"aria-expanded":isShowing})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.switchUI",{gradeNames:["fluid.viewComponent"],selectors:{on:".flc-switchUI-on",off:".flc-switchUI-off",control:".flc-switchUI-control"},strings:{label:"",on:"on",off:"off"},attrs:{role:"switch",tabindex:0},model:{enabled:!1},modelListeners:{enabled:{this:"{that}.dom.control",method:"attr",args:["aria-checked","{change}.value"]}},listeners:{"onCreate.addAttrs":{this:"{that}.dom.control",method:"attr",args:["{that}.options.attrs"]},"onCreate.addOnText":{this:"{that}.dom.on",method:"text",args:["{that}.options.strings.on"]},"onCreate.addOffText":{this:"{that}.dom.off",method:"text",args:["{that}.options.strings.off"]},"onCreate.activateable":{listener:"fluid.activatable",args:["{that}.dom.control","{that}.activateHandler"]},"onCreate.bindClick":{this:"{that}.dom.control",method:"on",args:["click","{that}.toggleModel"]}},invokers:{toggleModel:{funcName:"fluid.switchUI.toggleModel",args:["{that}"]},activateHandler:{funcName:"fluid.switchUI.activateHandler",args:["{arguments}.0","{that}.toggleModel"]}}}),fluid.switchUI.toggleModel=function(that){that.applier.change("enabled",!that.model.enabled)},fluid.switchUI.activateHandler=function(event,fn){event.preventDefault(),fn()}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.tableOfContents"),fluid.tableOfContents.headingTextToAnchorInfo=function(heading){var id=fluid.allocateSimpleId(heading);return{id:id,url:"#"+id}},fluid.tableOfContents.locateHeadings=function(that){var headings=that.locate("headings");return fluid.each(that.options.ignoreForToC,function(sel){headings=headings.not(sel).not(sel+" :header")}),headings},fluid.tableOfContents.refreshView=function(that){var headings=that.locateHeadings();that.anchorInfo=fluid.transform(headings,function(heading){return that.headingTextToAnchorInfo(heading)});var headingsModel=that.modelBuilder.assembleModel(headings,that.anchorInfo);that.applier.change("",headingsModel),that.events.onRefresh.fire()},fluid.defaults("fluid.tableOfContents",{gradeNames:["fluid.viewComponent"],components:{levels:{type:"fluid.tableOfContents.levels",createOnEvent:"onCreate",container:"{tableOfContents}.dom.tocContainer",options:{model:{headings:"{tableOfContents}.model"},events:{afterRender:"{tableOfContents}.events.afterRender"},listeners:{"{tableOfContents}.events.onRefresh":"{that}.refreshView"},strings:"{tableOfContents}.options.strings"}},modelBuilder:{type:"fluid.tableOfContents.modelBuilder"}},model:[],invokers:{headingTextToAnchorInfo:"fluid.tableOfContents.headingTextToAnchorInfo",locateHeadings:{funcName:"fluid.tableOfContents.locateHeadings",args:["{that}"]},refreshView:{funcName:"fluid.tableOfContents.refreshView",args:["{that}"]},hide:{this:"{that}.dom.tocContainer",method:"hide"},show:{this:"{that}.dom.tocContainer",method:"show"}},strings:{tocHeader:"Table of Contents"},selectors:{headings:":header:visible",tocContainer:".flc-toc-tocContainer"},ignoreForToC:{tocContainer:"{that}.options.selectors.tocContainer"},events:{onRefresh:null,afterRender:null,onReady:{events:{onCreate:"onCreate",afterRender:"afterRender"},args:["{that}"]}},listeners:{"onCreate.refreshView":"{that}.refreshView"}}),fluid.registerNamespace("fluid.tableOfContents.modelBuilder"),fluid.tableOfContents.modelBuilder.toModel=function(headingInfo,modelLevelFn){var headings=fluid.copy(headingInfo),buildModelLevel=function(headings,level){for(var modelLevel=[];0<headings.length;){var heading=headings[0];if(heading.level<level)break;if(heading.level>level){var subHeadings=buildModelLevel(headings,level+1);0<modelLevel.length?modelLevel[modelLevel.length-1].headings=subHeadings:modelLevel=modelLevelFn(modelLevel,subHeadings)}heading.level===level&&(modelLevel.push(heading),headings.shift())}return modelLevel};return buildModelLevel(headings,1)},fluid.tableOfContents.modelBuilder.gradualModelLevelFn=function(modelLevel,subHeadings){var subHeadingsClone=fluid.copy(subHeadings);return subHeadingsClone[0].level--,subHeadingsClone},fluid.tableOfContents.modelBuilder.skippedModelLevelFn=function(modelLevel,subHeadings){return modelLevel.push({headings:subHeadings}),modelLevel},fluid.tableOfContents.modelBuilder.convertToHeadingObjects=function(that,headings,anchorInfo){return headings=$(headings),fluid.transform(headings,function(heading,index){return{level:that.headingCalculator.getHeadingLevel(heading),text:$(heading).text(),url:anchorInfo[index].url}})},fluid.tableOfContents.modelBuilder.assembleModel=function(that,headings,anchorInfo){var headingInfo=that.convertToHeadingObjects(headings,anchorInfo);return that.toModel(headingInfo)},fluid.defaults("fluid.tableOfContents.modelBuilder",{gradeNames:["fluid.component"],components:{headingCalculator:{type:"fluid.tableOfContents.modelBuilder.headingCalculator"}},invokers:{toModel:{funcName:"fluid.tableOfContents.modelBuilder.toModel",args:["{arguments}.0","{modelBuilder}.modelLevelFn"]},modelLevelFn:"fluid.tableOfContents.modelBuilder.gradualModelLevelFn",convertToHeadingObjects:"fluid.tableOfContents.modelBuilder.convertToHeadingObjects({that}, {arguments}.0, {arguments}.1)",assembleModel:"fluid.tableOfContents.modelBuilder.assembleModel({that}, {arguments}.0, {arguments}.1)"}}),fluid.registerNamespace("fluid.tableOfContents.modelBuilder.headingCalculator"),fluid.tableOfContents.modelBuilder.headingCalculator.getHeadingLevel=function(that,heading){return that.options.levels.indexOf(heading.tagName)+1},fluid.defaults("fluid.tableOfContents.modelBuilder.headingCalculator",{gradeNames:["fluid.component"],invokers:{getHeadingLevel:"fluid.tableOfContents.modelBuilder.headingCalculator.getHeadingLevel({that}, {arguments}.0)"},levels:["H1","H2","H3","H4","H5","H6"]}),fluid.registerNamespace("fluid.tableOfContents.levels"),fluid.tableOfContents.levels.objModel=function(type,ID){return{ID:type+ID+":",children:[]}},fluid.tableOfContents.levels.handleEmptyItemObj=function(itemObj){itemObj.decorators=[{type:"addClass",classes:"fl-tableOfContents-hide-bullet"}]},fluid.tableOfContents.levels.generateTree=function(headingsModel,currentLevel){currentLevel=currentLevel||0;var levelObj=fluid.tableOfContents.levels.objModel("level",currentLevel);return 0===headingsModel.headings.length?currentLevel?[]:{children:[]}:0===currentLevel?{children:[fluid.tableOfContents.levels.generateTree(headingsModel,currentLevel+1)]}:($.each(headingsModel.headings,function(index,model){var itemObj=fluid.tableOfContents.levels.objModel("items",currentLevel),linkObj={ID:"link"+currentLevel,target:model.url,linktext:model.text};model.level?itemObj.children.push(linkObj):fluid.tableOfContents.levels.handleEmptyItemObj(itemObj),model.headings&&itemObj.children.push(fluid.tableOfContents.levels.generateTree(model,currentLevel+1)),levelObj.children.push(itemObj)}),levelObj)},fluid.tableOfContents.levels.produceTree=function(that){var tree=fluid.tableOfContents.levels.generateTree(that.model);return tree.children.push({ID:"tocHeader",messagekey:"tocHeader"}),tree},fluid.tableOfContents.levels.fetchResources=function(that){fluid.fetchResources(that.options.resources,function(){that.container.append(that.options.resources.template.resourceText),that.refreshView()})},fluid.defaults("fluid.tableOfContents.levels",{gradeNames:["fluid.rendererComponent"],produceTree:"fluid.tableOfContents.levels.produceTree",strings:{tocHeader:"Table of Contents"},selectors:{tocHeader:".flc-toc-header",level1:".flc-toc-levels-level1",level2:".flc-toc-levels-level2",level3:".flc-toc-levels-level3",level4:".flc-toc-levels-level4",level5:".flc-toc-levels-level5",level6:".flc-toc-levels-level6",items1:".flc-toc-levels-items1",items2:".flc-toc-levels-items2",items3:".flc-toc-levels-items3",items4:".flc-toc-levels-items4",items5:".flc-toc-levels-items5",items6:".flc-toc-levels-items6",link1:".flc-toc-levels-link1",link2:".flc-toc-levels-link2",link3:".flc-toc-levels-link3",link4:".flc-toc-levels-link4",link5:".flc-toc-levels-link5",link6:".flc-toc-levels-link6"},repeatingSelectors:["level1","level2","level3","level4","level5","level6","items1","items2","items3","items4","items5","items6"],model:{headings:[]},listeners:{"onCreate.fetchResources":"fluid.tableOfContents.levels.fetchResources"},resources:{template:{forceCache:!0,url:"../html/TableOfContents.html"}},rendererFnOptions:{noexpand:!0},rendererOptions:{debugMode:!1}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.textfield",{gradeNames:["fluid.viewComponent"],attrs:{},strings:{},modelListeners:{value:{this:"{that}.container",method:"val",args:["{change}.value"]}},listeners:{"onCreate.bindChangeEvt":{this:"{that}.container",method:"change",args:["{that}.setModel"]},"onCreate.initTextfieldAttributes":{this:"{that}.container",method:"attr",args:["{that}.options.attrs"]}},invokers:{setModel:{changePath:"value",value:"{arguments}.0.target.value"}}}),fluid.textfield.setModelRestrictToNumbers=function(that,value,path){!isNaN(Number(value))&&that.applier.change(path,value),that.container.val(that.model.value)},fluid.defaults("fluid.textfield.rangeController",{gradeNames:["fluid.textfield"],components:{controller:{type:"fluid.modelComponent",options:{model:{value:null},modelRelay:[{source:"value",target:"{fluid.textfield}.model.value",singleTransform:{type:"fluid.transforms.numberToString",scale:"{that}.options.scale"}},{target:"value",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.value",min:"{that}.model.range.min",max:"{that}.model.range.max"}}]}}},invokers:{setModel:{funcName:"fluid.textfield.setModelRestrictToNumbers",args:["{that}","{arguments}.0.target.value","value"]}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.textfieldSlider",{gradeNames:["fluid.viewComponent"],components:{textfield:{type:"fluid.textfield.rangeController",container:"{that}.dom.textfield",options:{components:{controller:{options:{model:"{textfieldSlider}.model"}}},attrs:"{textfieldSlider}.options.attrs",strings:"{textfieldSlider}.options.strings"}},slider:{type:"fluid.slider",container:"{textfieldSlider}.dom.slider",options:{model:"{textfieldSlider}.model",attrs:"{textfieldSlider}.options.attrs",strings:"{textfieldSlider}.options.strings"}}},selectors:{textfield:".flc-textfieldSlider-field",slider:".flc-textfieldSlider-slider"},styles:{container:"fl-textfieldSlider fl-focus"},model:{value:null,step:1,range:{min:0,max:100}},modelRelay:{target:"value",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.value",min:"{that}.options.range.min",max:"{that}.options.range.max"}},attrs:{},strings:{},listeners:{"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]}},distributeOptions:[{source:"{that}.options.scale",target:"{that > fluid.textfield > controller}.options.scale"}]}),fluid.defaults("fluid.slider",{gradeNames:["fluid.viewComponent"],modelRelay:{target:"value",singleTransform:{type:"fluid.transforms.stringToNumber",input:"{that}.model.stringValue"}},invokers:{setModel:{changePath:"stringValue",value:{expander:{this:"{that}.container",method:"val"}}},updateSliderAttributes:{this:"{that}.container",method:"attr",args:[{min:"{that}.model.range.min",max:"{that}.model.range.max",step:"{that}.model.step",type:"range",value:"{that}.model.value","aria-labelledby":"{that}.options.attrs.aria-labelledby","aria-label":"{that}.options.attrs.aria-label"}]}},listeners:{"onCreate.initSliderAttributes":"{that}.updateSliderAttributes","onCreate.bindSlideEvt":{this:"{that}.container",method:"on",args:["input","{that}.setModel"]},"onCreate.bindRangeChangeEvt":{this:"{that}.container",method:"on",args:["change","{that}.setModel"]}},modelListeners:{value:[{this:"{that}.container",method:"val",args:["{change}.value"],excludeSource:"init"}],range:{listener:"{that}.updateSliderAttributes",excludeSource:"init"},step:{listener:"{that}.updateSliderAttributes",excludeSource:"init"}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.textfieldStepper",{gradeNames:["fluid.viewComponent"],strings:{increaseLabel:"increment",decreaseLabel:"decrement"},selectors:{textfield:".flc-textfieldStepper-field",focusContainer:".flc-textfieldStepper-focusContainer",increaseButton:".flc-textfieldStepper-increase",decreaseButton:".flc-textfieldStepper-decrease"},styles:{container:"fl-textfieldStepper",focus:"fl-textfieldStepper-focus"},components:{textfield:{type:"fluid.textfield.rangeController",container:"{that}.dom.textfield",options:{components:{controller:{options:{model:"{textfieldStepper}.model",modelListeners:{"range.min":{this:"{textfield}.container",method:"attr",args:["aria-valuemin","{change}.value"]},"range.max":{this:"{textfield}.container",method:"attr",args:["aria-valuemax","{change}.value"]}}}}},attrs:"{textfieldStepper}.options.attrs",strings:"{textfieldStepper}.options.strings",listeners:{"onCreate.bindUpArrow":{listener:"fluid.textfieldStepper.bindKeyEvent",args:["{that}.container","keydown",38,"{textfieldStepper}.increase"]},"onCreate.bindDownArrow":{listener:"fluid.textfieldStepper.bindKeyEvent",args:["{that}.container","keydown",40,"{textfieldStepper}.decrease"]},"onCreate.addRole":{this:"{that}.container",method:"attr",args:["role","spinbutton"]}},modelListeners:{value:{this:"{that}.container",method:"attr",args:["aria-valuenow","{change}.value"]}}}},increaseButton:{type:"fluid.textfieldStepper.button",container:"{textfieldStepper}.dom.increaseButton",options:{strings:{label:"{textfieldStepper}.options.strings.increaseLabel"},listeners:{"onClick.increase":"{textfieldStepper}.increase"},modelRelay:{target:"disabled",singleTransform:{type:"fluid.transforms.binaryOp",left:"{textfieldStepper}.model.value",right:"{textfieldStepper}.model.range.max",operator:">="}}}},decreaseButton:{type:"fluid.textfieldStepper.button",container:"{textfieldStepper}.dom.decreaseButton",options:{strings:{label:"{textfieldStepper}.options.strings.decreaseLabel"},listeners:{"onClick.decrease":"{textfieldStepper}.decrease"},modelRelay:{target:"disabled",singleTransform:{type:"fluid.transforms.binaryOp",left:"{textfieldStepper}.model.value",right:"{textfieldStepper}.model.range.min",operator:"<="}}}}},invokers:{increase:{funcName:"fluid.textfieldStepper.step",args:["{that}"]},decrease:{funcName:"fluid.textfieldStepper.step",args:["{that}",-1]},addFocus:{this:"{that}.dom.focusContainer",method:"addClass",args:["{that}.options.styles.focus"]},removeFocus:{this:"{that}.dom.focusContainer",method:"removeClass",args:["{that}.options.styles.focus"]}},listeners:{"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]},"onCreate.bindFocusin":{this:"{that}.container",method:"on",args:["focusin","{that}.addFocus"]},"onCreate.bindFocusout":{this:"{that}.container",method:"on",args:["focusout","{that}.removeFocus"]}},model:{value:null,step:1,range:{min:0,max:100}},attrs:{},distributeOptions:[{source:"{that}.options.scale",target:"{that > fluid.textfield > controller}.options.scale"}]}),fluid.textfieldStepper.step=function(that,coefficient){coefficient=coefficient||1;var newValue=that.model.value+coefficient*that.model.step;that.applier.change("value",newValue)},fluid.textfieldStepper.bindKeyEvent=function(elm,keyEvent,keyCode,fn){$(elm).on(keyEvent,function(event){event.which===keyCode&&(fn(),event.preventDefault())})},fluid.defaults("fluid.textfieldStepper.button",{gradeNames:["fluid.viewComponent"],strings:{},styles:{container:"fl-textfieldStepper-button"},model:{disabled:!1},events:{onClick:null},listeners:{"onCreate.bindClick":{this:"{that}.container",method:"click",args:"{that}.events.onClick.fire"},"onCreate.addLabel":{this:"{that}.container",method:"attr",args:["aria-label","{that}.options.strings.label"]},"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]},"onCreate.removeFromTabOrder":{this:"{that}.container",method:"attr",args:["tabindex","-1"]}},modelListeners:{disabled:{this:"{that}.container",method:"prop",args:["disabled","{change}.value"]}}})}(jQuery,fluid_3_0_0),function(){var module={exports:null};function Hypher(language){var exceptions=[],i=0;if(this.trie=this.createTrie(language.patterns),this.leftMin=language.leftmin,this.rightMin=language.rightmin,this.exceptions={},language.exceptions)for(exceptions=language.exceptions.split(/,\s?/g);i<exceptions.length;i+=1)this.exceptions[exceptions[i].replace(/\u2027/g,"").toLowerCase()]=new RegExp("("+exceptions[i].split("‧").join(")(")+")","i")}Hypher.prototype.createTrie=function(patternObject){var patterns,size=0,i=0,c=0,p=0,chars=null,points=null,codePoint=null,t=null,tree={_points:[]};for(size in patternObject)if(patternObject.hasOwnProperty(size))for(patterns=patternObject[size].match(new RegExp(".{1,"+ +size+"}","g")),i=0;i<patterns.length;i+=1){for(chars=patterns[i].replace(/[0-9]/g,"").split(""),points=patterns[i].split(/\D/),t=tree,c=0;c<chars.length;c+=1)t[codePoint=chars[c].charCodeAt(0)]||(t[codePoint]={}),t=t[codePoint];for(t._points=[],p=0;p<points.length;p+=1)t._points[p]=points[p]||0}return tree},Hypher.prototype.hyphenateText=function(str,minLength){minLength=minLength||4;for(var words=str.split(/([a-zA-Z0-9_\u0027\u00DF-\u00EA\u00EC-\u00EF\u00F1-\u00F6\u00F8-\u00FD\u0101\u0103\u0105\u0107\u0109\u010D\u010F\u0111\u0113\u0117\u0119\u011B\u011D\u011F\u0123\u0125\u012B\u012F\u0131\u0135\u0137\u013C\u013E\u0142\u0144\u0146\u0148\u0151\u0153\u0155\u0159\u015B\u015D\u015F\u0161\u0165\u016B\u016D\u016F\u0171\u0173\u017A\u017C\u017E\u017F\u0219\u021B\u02BC\u0390\u03AC-\u03CE\u03F2\u0401\u0410-\u044F\u0451\u0454\u0456\u0457\u045E\u0491\u0531-\u0556\u0561-\u0587\u0902\u0903\u0905-\u090B\u090E-\u0910\u0912\u0914-\u0928\u092A-\u0939\u093E-\u0943\u0946-\u0948\u094A-\u094D\u0982\u0983\u0985-\u098B\u098F\u0990\u0994-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BE-\u09C3\u09C7\u09C8\u09CB-\u09CD\u09D7\u0A02\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A14-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A82\u0A83\u0A85-\u0A8B\u0A8F\u0A90\u0A94-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABE-\u0AC3\u0AC7\u0AC8\u0ACB-\u0ACD\u0B02\u0B03\u0B05-\u0B0B\u0B0F\u0B10\u0B14-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3E-\u0B43\u0B47\u0B48\u0B4B-\u0B4D\u0B57\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C02\u0C03\u0C05-\u0C0B\u0C0E-\u0C10\u0C12\u0C14-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C43\u0C46-\u0C48\u0C4A-\u0C4D\u0C82\u0C83\u0C85-\u0C8B\u0C8E-\u0C90\u0C92\u0C94-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC3\u0CC6-\u0CC8\u0CCA-\u0CCD\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60\u0D61\u0D7A-\u0D7F\u1F00-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB2-\u1FB4\u1FB6\u1FB7\u1FBD\u1FBF\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u200D\u2019]+)/g),i=0;i<words.length;i+=1)-1!==words[i].indexOf("/")?0===i||i===words.length-1||/\s+\/|\/\s+/.test(words[i])||(words[i]+="​"):words[i].length>minLength&&(words[i]=this.hyphenate(words[i]).join("­"));return words.join("")},Hypher.prototype.hyphenate=function(word){var characters,originalCharacters,i,j,k,node,wordLength,nodePoints,nodePointsLength,characterPoints=[],points=[],lowerCaseWord=word.toLowerCase(),m=Math.max,trie=this.trie,result=[""];if(this.exceptions.hasOwnProperty(lowerCaseWord))return word.match(this.exceptions[lowerCaseWord]).slice(1);if(-1!==word.indexOf("­"))return[word];for(characters=(word="_"+word+"_").toLowerCase().split(""),originalCharacters=word.split(""),wordLength=characters.length,i=0;i<wordLength;i+=1)points[i]=0,characterPoints[i]=characters[i].charCodeAt(0);for(i=0;i<wordLength;i+=1)for(node=trie,j=i;j<wordLength&&(node=node[characterPoints[j]]);j+=1)if(nodePoints=node._points)for(k=0,nodePointsLength=nodePoints.length;k<nodePointsLength;k+=1)points[i+k]=m(points[i+k],nodePoints[k]);for(i=1;i<wordLength-1;i+=1)i>this.leftMin&&i<wordLength-this.rightMin&&points[i]%2?result.push(originalCharacters[i]):result[result.length-1]+=originalCharacters[i];return result},module.exports=Hypher,window.Hypher=module.exports,window.Hypher.languages={}}(),jQuery.fn.hyphenate=function(language){if(window.Hypher.languages[language])return this.each(function(){for(var i=0,len=this.childNodes.length;i<len;i+=1)3===this.childNodes[i].nodeType&&(this.childNodes[i].nodeValue=window.Hypher.languages[language].hyphenateText(this.childNodes[i].nodeValue))})},function(global){var iteratorSupported=function(){try{return!!Symbol.iterator}catch(error){return!1}}(),createIterator=function(items){var iterator={next:function(){var value=items.shift();return{done:void 0===value,value:value}}};return iteratorSupported&&(iterator[Symbol.iterator]=function(){return iterator}),iterator},serializeParam=function(value){return encodeURIComponent(value).replace(/%20/g,"+")},deserializeParam=function(value){return decodeURIComponent(value).replace(/\+/g," ")};"URLSearchParams"in global&&"a=1"===new URLSearchParams("?a=1").toString()||function(){var URLSearchParams=function(searchString){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var typeofSearchString=typeof searchString;if("undefined"===typeofSearchString);else if("string"===typeofSearchString)""!==searchString&&this._fromString(searchString);else if(searchString instanceof URLSearchParams){var _this=this;searchString.forEach(function(value,name){_this.append(name,value)})}else{if(null===searchString||"object"!==typeofSearchString)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(searchString))for(var i=0;i<searchString.length;i++){var entry=searchString[i];if("[object Array]"!==Object.prototype.toString.call(entry)&&2===entry.length)throw new TypeError("Expected [string, any] as entry at index "+i+" of URLSearchParams's input");this.append(entry[0],entry[1])}else for(var key in searchString)searchString.hasOwnProperty(key)&&this.append(key,searchString[key])}},proto=URLSearchParams.prototype;proto.append=function(name,value){name in this._entries?this._entries[name].push(String(value)):this._entries[name]=[String(value)]},proto.delete=function(name){delete this._entries[name]},proto.get=function(name){return name in this._entries?this._entries[name][0]:null},proto.getAll=function(name){return name in this._entries?this._entries[name].slice(0):[]},proto.has=function(name){return name in this._entries},proto.set=function(name,value){this._entries[name]=[String(value)]},proto.forEach=function(callback,thisArg){var entries;for(var name in this._entries)if(this._entries.hasOwnProperty(name)){entries=this._entries[name];for(var i=0;i<entries.length;i++)callback.call(thisArg,entries[i],name,this)}},proto.keys=function(){var items=[];return this.forEach(function(value,name){items.push(name)}),createIterator(items)},proto.values=function(){var items=[];return this.forEach(function(value){items.push(value)}),createIterator(items)},proto.entries=function(){var items=[];return this.forEach(function(value,name){items.push([name,value])}),createIterator(items)},iteratorSupported&&(proto[Symbol.iterator]=proto.entries),proto.toString=function(){var searchArray=[];return this.forEach(function(value,name){searchArray.push(serializeParam(name)+"="+serializeParam(value))}),searchArray.join("&")},global.URLSearchParams=URLSearchParams}();var proto=URLSearchParams.prototype;"function"!=typeof proto.sort&&(proto.sort=function(){var _this=this,items=[];this.forEach(function(value,name){items.push([name,value]),_this._entries||_this.delete(name)}),items.sort(function(a,b){return a[0]<b[0]?-1:a[0]>b[0]?1:0}),_this._entries&&(_this._entries={});for(var i=0;i<items.length;i++)this.append(items[i][0],items[i][1])}),"function"!=typeof proto._fromString&&Object.defineProperty(proto,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(searchString){if(this._entries)this._entries={};else{var keys=[];this.forEach(function(value,name){keys.push(name)});for(var i=0;i<keys.length;i++)this.delete(keys[i])}var attribute,attributes=(searchString=searchString.replace(/^\?/,"")).split("&");for(i=0;i<attributes.length;i++)attribute=attributes[i].split("="),this.append(deserializeParam(attribute[0]),1<attribute.length?deserializeParam(attribute[1]):"")}})}("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this),function(global){if(function(){try{var u=new URL("b","http://a");return u.pathname="c%20d","http://a/c%20d"===u.href&&u.searchParams}catch(e){return!1}}()||function(){var _URL=global.URL,URL=function(url,base){"string"!=typeof url&&(url=String(url));var baseElement,doc=document;if(base&&(void 0===global.location||base!==global.location.href)){(baseElement=(doc=document.implementation.createHTMLDocument("")).createElement("base")).href=base,doc.head.appendChild(baseElement);try{if(0!==baseElement.href.indexOf(base))throw new Error(baseElement.href)}catch(err){throw new Error("URL unable to set base "+base+" due to "+err)}}var anchorElement=doc.createElement("a");if(anchorElement.href=url,baseElement&&(doc.body.appendChild(anchorElement),anchorElement.href=anchorElement.href),":"===anchorElement.protocol||!/:/.test(anchorElement.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:anchorElement});var searchParams=new URLSearchParams(this.search),enableSearchUpdate=!0,enableSearchParamsUpdate=!0,_this=this;["append","delete","set"].forEach(function(methodName){var method=searchParams[methodName];searchParams[methodName]=function(){method.apply(searchParams,arguments),enableSearchUpdate&&(enableSearchParamsUpdate=!1,_this.search=searchParams.toString(),enableSearchParamsUpdate=!0)}}),Object.defineProperty(this,"searchParams",{value:searchParams,enumerable:!0});var search=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==search&&(search=this.search,enableSearchParamsUpdate&&(enableSearchUpdate=!1,this.searchParams._fromString(this.search),enableSearchUpdate=!0))}})},proto=URL.prototype;["hash","host","hostname","port","protocol"].forEach(function(attributeName){!function(attributeName){Object.defineProperty(proto,attributeName,{get:function(){return this._anchorElement[attributeName]},set:function(value){this._anchorElement[attributeName]=value},enumerable:!0})}(attributeName)}),Object.defineProperty(proto,"search",{get:function(){return this._anchorElement.search},set:function(value){this._anchorElement.search=value,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(proto,{toString:{get:function(){var _this=this;return function(){return _this.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(value){this._anchorElement.href=value,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(value){this._anchorElement.pathname=value},enumerable:!0},origin:{get:function(){var expectedPort={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],addPortToOrigin=this._anchorElement.port!=expectedPort&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(addPortToOrigin?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(value){},enumerable:!0},username:{get:function(){return""},set:function(value){},enumerable:!0}}),URL.createObjectURL=function(blob){return _URL.createObjectURL.apply(_URL,arguments)},URL.revokeObjectURL=function(url){return _URL.revokeObjectURL.apply(_URL,arguments)},global.URL=URL}(),void 0!==global.location&&!("origin"in global.location)){var getOrigin=function(){return global.location.protocol+"//"+global.location.hostname+(global.location.port?":"+global.location.port:"")};try{Object.defineProperty(global.location,"origin",{get:getOrigin,enumerable:!0})}catch(e){setInterval(function(){global.location.origin=getOrigin()},100)}}}("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.contextAware"),fluid.defaults("fluid.contextAware.marker",{gradeNames:["fluid.component"]}),fluid.contextAware.makeCheckMarkers=function(checks,path,instantiator){fluid.each(checks,function(value,markerTypeName){fluid.constructSingle(path,{type:markerTypeName,gradeNames:"fluid.contextAware.marker",value:value},instantiator)})},fluid.contextAware.performChecks=function(checkHash){return fluid.transform(checkHash,function(checkRecord){return"function"==typeof checkRecord?checkRecord={func:checkRecord}:"string"==typeof checkRecord&&(checkRecord={funcName:checkRecord}),fluid.isPrimitive(checkRecord)?checkRecord:"value"in checkRecord?checkRecord.value:"func"in checkRecord?checkRecord.func():"funcName"in checkRecord?fluid.invokeGlobalFunction(checkRecord.funcName):void fluid.fail("Error in contextAwareness check record ",checkRecord," - must contain an entry with name value, func, or funcName")})},fluid.contextAware.makeChecks=function(checkHash,path,instantiator){var checkOptions=fluid.contextAware.performChecks(checkHash);fluid.contextAware.makeCheckMarkers(checkOptions,path,instantiator)},fluid.contextAware.forgetChecks=function(markerNames,path,instantiator){instantiator=instantiator||fluid.globalInstantiator,path=path||[];var markerArray=fluid.makeArray(markerNames);fluid.each(markerArray,function(markerName){var memberName=fluid.typeNameToMemberName(markerName),segs=fluid.model.parseToSegments(path,instantiator.parseEL,!0);segs.push(memberName),fluid.destroy(segs,instantiator)})},fluid.defaults("fluid.contextAware",{gradeNames:["{that}.check"],mergePolicy:{contextAwareness:"noexpand"},contextAwareness:{},invokers:{check:{funcName:"fluid.contextAware.check",args:["{that}","{that}.options.contextAwareness"]}}}),fluid.contextAware.getCheckValue=function(that,reference){var targetRef=fluid.parseContextReference(reference),targetComponent=fluid.resolveContext(targetRef.context,that),path=targetRef.path||["options","value"];return fluid.getForComponent(targetComponent,path)},fluid.contextAware.checkOne=function(that,contextAwareRecord){contextAwareRecord.checks&&contextAwareRecord.checks.contextValue&&fluid.fail("Nesting error in contextAwareness record ",contextAwareRecord,' - the "checks" entry must contain a hash and not a contextValue/gradeNames record at top level');var checkList=fluid.parsePriorityRecords(contextAwareRecord.checks,"contextAwareness checkRecord");return fluid.find(checkList,function(check){check.contextValue||fluid.fail("Cannot perform check for contextAwareness record ",check,' without a valid field named "contextValue"');var value=fluid.contextAware.getCheckValue(that,check.contextValue);if(void 0===check.equals?value:value===check.equals)return check.gradeNames},contextAwareRecord.defaultGradeNames)},fluid.contextAware.check=function(that,contextAwarenessOptions){var gradeNames=[],contextAwareList=fluid.parsePriorityRecords(contextAwarenessOptions,"contextAwareness adaptationRecord");return fluid.each(contextAwareList,function(record){var matched=fluid.contextAware.checkOne(that,record);gradeNames=gradeNames.concat(fluid.makeArray(matched))}),gradeNames},fluid.contextAware.makeAdaptation=function(options){fluid.expect("fluid.contextAware.makeAdaptation",options,["distributionName","targetName","adaptationName","checkName","record"]),fluid.defaults(options.distributionName,{gradeNames:["fluid.component"],distributeOptions:{target:"{/ "+options.targetName+"}.options.contextAwareness."+options.adaptationName+".checks."+options.checkName,record:options.record}}),fluid.constructSingle([],options.distributionName)},fluid.contextAware.isBrowser=function(){return"undefined"!=typeof window&&!!window.document},fluid.contextAware.makeChecks({"fluid.browser":{funcName:"fluid.contextAware.isBrowser"}}),fluid.registerNamespace("fluid.contextAware.browser"),fluid.contextAware.browser.getPlatformName=function(){return"undefined"!=typeof navigator&&navigator.platform?navigator.platform:void 0},fluid.contextAware.browser.getUserAgent=function(){return"undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent:void 0},fluid.contextAware.makeChecks({"fluid.browser.platformName":{funcName:"fluid.contextAware.browser.getPlatformName"},"fluid.browser.userAgent":{funcName:"fluid.contextAware.browser.getUserAgent"}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.enhance"),fluid.contextAware.isBrowser()&&$.fn&&$("head").append("<style type='text/css'>.fl-progEnhance-basic, .fl-ProgEnhance-basic { display: none; } .fl-progEnhance-enhanced, .fl-ProgEnhance-enhanced { display: block; }</style>")}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.url"),fluid.url.generateDepth=function(depth){return fluid.generate(depth,"../").join("")},fluid.url.parsePathInfo=function(pathInfo){var togo={},segs=pathInfo.split("/");if(0<segs.length){var top=segs.length-1,dotpos=segs[top].indexOf(".");-1!==dotpos&&(togo.extension=segs[top].substring(dotpos+1),segs[top]=segs[top].substring(0,dotpos))}return togo.pathInfo=segs,togo},fluid.url.parsePathInfoTrim=function(pathInfo){var togo=fluid.url.parsePathInfo(pathInfo);return""===togo.pathInfo[togo.pathInfo.length-1]&&togo.pathInfo.length--,togo},fluid.url.collapseSegs=function(segs,from,to){var togo="";void 0===from&&(from=0),void 0===to&&(to=segs.length);for(var i=from;i<to-1;++i)togo+=segs[i]+"/";return from<to&&(togo+=segs[to-1]),togo},fluid.url.makeRelPath=function(parsed,index){var togo=fluid.kettle.collapseSegs(parsed.pathInfo,index);return parsed.extension&&(togo+="."+parsed.extension),togo},fluid.url.cononocolosePath=function(pathInfo){for(var consume=0,i=0;i<pathInfo.length;++i)".."===pathInfo[i]?++consume:0!==consume&&(pathInfo.splice(i-2*consume,2*consume),i-=2*consume,consume=0);return pathInfo},fluid.url.parseUri=function(str){for(var o=fluid.url.parseUri.options,m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;i--;)uri[o.key[i]]=m[i]||"";return uri[o.q.name]={},uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){$1&&(uri[o.q.name][$1]=$2)}),uri},fluid.url.parseUri.options={strictMode:!0,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}},fluid.url.parseSegs=function(url){var parsed=fluid.url.parseUri(url);return fluid.url.parsePathInfoTrim(parsed.directory).pathInfo},fluid.url.isAbsoluteUrl=function(url){var parseRel=fluid.url.parseUri(url);return parseRel.host||parseRel.protocol||"/"===parseRel.directory.charAt(0)},fluid.url.computeRelativePrefix=function(outerLocation,iframeLocation,relPath){if(fluid.url.isAbsoluteUrl(relPath))return relPath;var relSegs=fluid.url.parsePathInfo(relPath).pathInfo,parsedRel=fluid.url.parseSegs(outerLocation).concat(relSegs);fluid.url.cononocolosePath(parsedRel);for(var parsedInner=fluid.url.parseSegs(iframeLocation),seg=0;seg<parsedRel.length&&parsedRel[seg]===parsedInner[seg];++seg);var excess=parsedInner.length-seg;return fluid.url.generateDepth(excess)+fluid.url.collapseSegs(parsedRel,seg)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.store",{gradeNames:["fluid.dataSource","fluid.contextAware"],contextAwareness:{strategy:{defaultGradeNames:"fluid.prefs.cookieStore"}}}),fluid.prefs.store.decodeURIComponent=function(payload){if("string"==typeof payload)return decodeURIComponent(payload)},fluid.prefs.store.encodeURIComponent=function(payload){if("string"==typeof payload)return encodeURIComponent(payload)},fluid.defaults("fluid.prefs.cookieStore",{gradeNames:["fluid.dataSource"],cookie:{name:"fluid-ui-settings",path:"/",expires:""},listeners:{"onRead.impl":{listener:"fluid.prefs.cookieStore.getCookie",args:["{arguments}.1"]},"onRead.decodeURI":{listener:"fluid.prefs.store.decodeURIComponent",priority:"before:encoding"}},invokers:{get:{args:["{that}","{arguments}.0","{that}.options.cookie"]}}}),fluid.defaults("fluid.prefs.cookieStore.writable",{gradeNames:["fluid.dataSource.writable"],listeners:{"onWrite.encodeURI":{func:"fluid.prefs.store.encodeURIComponent",priority:"before:impl"},"onWrite.impl":{listener:"fluid.prefs.cookieStore.writeCookie"},"onWriteResponse.decodeURI":{listener:"fluid.prefs.store.decodeURIComponent",priority:"before:encoding"}},invokers:{set:{args:["{that}","{arguments}.0","{arguments}.1","{that}.options.cookie"]}}}),fluid.makeGradeLinkage("fluid.prefs.cookieStore.linkage",["fluid.dataSource.writable","fluid.prefs.cookieStore"],"fluid.prefs.cookieStore.writable"),fluid.prefs.cookieStore.getCookie=function(options){var cookieName=fluid.get(options,["directModel","cookieName"])||options.name,cookie=document.cookie;if(!(cookie.length<=0)){var cookiePrefix=cookieName+"=",startIndex=cookie.indexOf(cookiePrefix);if(!(startIndex<0)){startIndex+=cookiePrefix.length;var endIndex=cookie.indexOf(";",startIndex);return endIndex<startIndex&&(endIndex=cookie.length),cookie.substring(startIndex,endIndex)}}},fluid.prefs.cookieStore.assembleCookie=function(cookieName,data,options){var cookieStr=cookieName+"="+data;return(options=options||{}).expires&&(cookieStr+="; expires="+options.expires),options.path&&(cookieStr+="; path="+options.path),cookieStr},fluid.prefs.cookieStore.writeCookie=function(payload,options){var cookieName=fluid.get(options,["directModel","cookieName"])||options.name,cookieStr=fluid.prefs.cookieStore.assembleCookie(cookieName,payload,options);return document.cookie=cookieStr,payload},fluid.defaults("fluid.dataSource.encoding.model",{gradeNames:"fluid.component",invokers:{parse:"fluid.identity",render:"fluid.identity"},contentType:"application/json"}),fluid.defaults("fluid.prefs.tempStore",{gradeNames:["fluid.dataSource","fluid.modelComponent"],components:{encoding:{type:"fluid.dataSource.encoding.model"}},listeners:{"onRead.impl":{listener:"fluid.identity",args:["{that}.model"]}}}),fluid.defaults("fluid.prefs.tempStore.writable",{gradeNames:["fluid.dataSource.writable","fluid.modelComponent"],components:{encoding:{type:"fluid.dataSource.encoding.model"}},listeners:{"onWrite.impl":{listener:"fluid.prefs.tempStore.write",args:["{that}","{arguments}.0","{arguments}.1"]}}}),fluid.prefs.tempStore.write=function(that,settings){var transaction=that.applier.initiate();return transaction.fireChangeRequest({path:"",type:"DELETE"}),transaction.change("",settings),transaction.commit(),that.model},fluid.makeGradeLinkage("fluid.prefs.tempStore.linkage",["fluid.dataSource.writable","fluid.prefs.tempStore"],"fluid.prefs.tempStore.writable"),fluid.defaults("fluid.prefs.globalSettingsStore",{gradeNames:["fluid.component"],components:{settingsStore:{type:"fluid.prefs.store",options:{gradeNames:["fluid.resolveRootSingle","fluid.dataSource.writable"],singleRootType:"fluid.prefs.store"}}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.initialModel",{gradeNames:["fluid.component"],members:{initialModel:{preferences:{}}}}),fluid.defaults("fluid.uiEnhancer",{gradeNames:["fluid.viewComponent"],defaultLocale:"en",invokers:{updateModel:{func:"{that}.applier.change",args:["","{arguments}.0"]}},userGrades:"@expand:fluid.prefs.filterEnhancerGrades({that}.options.gradeNames)",distributeOptions:{"uiEnhancer.messageLoader.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that messageLoader}.options.defaultLocale"},"uiEnhancer.messageLoader.locale":{source:"{that}.options.locale",target:"{that messageLoader}.model.locale"}}}),fluid.defaults("fluid.uiEnhancer.root",{gradeNames:["fluid.uiEnhancer","fluid.resolveRootSingle"],singleRootType:"fluid.uiEnhancer"}),fluid.uiEnhancer.ignorableGrades=["fluid.uiEnhancer","fluid.uiEnhancer.root","fluid.resolveRoot","fluid.resolveRootSingle"],fluid.prefs.filterEnhancerGrades=function(gradeNames){return fluid.remove_if(fluid.makeArray(gradeNames),function(gradeName){return-1!==fluid.frameworkGrades.indexOf(gradeName)||-1!==fluid.uiEnhancer.ignorableGrades.indexOf(gradeName)})},fluid.prefs.filterEnhancerOptions=function(options){return fluid.filterKeys(options,["classnameMap","fontSizeMap","tocTemplate","tocMessage","components"])},fluid.defaults("fluid.pageEnhancer",{gradeNames:["fluid.component","fluid.originalEnhancerOptions","fluid.prefs.initialModel","fluid.prefs.settingsGetter","fluid.resolveRootSingle"],distributeOptions:{"pageEnhancer.uiEnhancer":{source:"{that}.options.uiEnhancer",target:"{that > uiEnhancer}.options"}},singleRootType:"fluid.pageEnhancer",components:{uiEnhancer:{type:"fluid.uiEnhancer.root",container:"body"}},originalUserOptions:"@expand:fluid.prefs.filterEnhancerOptions({uiEnhancer}.options)",listeners:{"onCreate.initModel":"fluid.pageEnhancer.init"}}),fluid.pageEnhancer.init=function(that){that.getSettings().then(function(fetchedSettings){that.uiEnhancer.updateModel(fluid.get(fetchedSettings,"preferences"))})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.prefsEditorLoader",{gradeNames:["fluid.prefs.settingsGetter","fluid.prefs.initialModel","fluid.viewComponent"],defaultLocale:"en",components:{prefsEditor:{priority:"last",type:"fluid.prefs.prefsEditor",createOnEvent:"onCreatePrefsEditorReady",options:{members:{initialModel:"{prefsEditorLoader}.initialModel"},invokers:{getSettings:"{prefsEditorLoader}.getSettings"},listeners:{"onReady.boil":{listener:"{prefsEditorLoader}.events.onReady",args:["{prefsEditorLoader}"]}}}},templateLoader:{type:"fluid.resourceLoader",options:{events:{onResourcesLoaded:"{prefsEditorLoader}.events.onPrefsEditorTemplatesLoaded"}}},messageLoader:{type:"fluid.resourceLoader",createOnEvent:"afterInitialSettingsFetched",options:{defaultLocale:"{prefsEditorLoader}.options.defaultLocale",locale:"{prefsEditorLoader}.settings.preferences.locale",resourceOptions:{dataType:"json"},events:{onResourcesLoaded:"{prefsEditorLoader}.events.onPrefsEditorMessagesLoaded"}}}},listeners:{"onCreate.getInitialSettings":{listener:"fluid.prefs.prefsEditorLoader.getInitialSettings",args:["{that}"]}},events:{afterInitialSettingsFetched:null,onPrefsEditorTemplatesLoaded:null,onPrefsEditorMessagesLoaded:null,onCreatePrefsEditorReady:{events:{templateLoaded:"onPrefsEditorTemplatesLoaded",prefsEditorMessagesLoaded:"onPrefsEditorMessagesLoaded"}},onReady:null},distributeOptions:{"prefsEditorLoader.templateLoader":{source:"{that}.options.templateLoader",removeSource:!0,target:"{that > templateLoader}.options"},"prefsEditorLoader.templateLoader.terms":{source:"{that}.options.terms",target:"{that > templateLoader}.options.terms"},"prefsEditorLoader.messageLoader":{source:"{that}.options.messageLoader",removeSource:!0,target:"{that > messageLoader}.options"},"prefsEditorLoader.messageLoader.terms":{source:"{that}.options.terms",target:"{that > messageLoader}.options.terms"},"prefsEditorLoader.prefsEditor":{source:"{that}.options.prefsEditor",removeSource:!0,target:"{that > prefsEditor}.options"}}}),fluid.prefs.prefsEditorLoader.getInitialSettings=function(that){var promise=fluid.promise(),fetchPromise=that.getSettings();return fetchPromise.then(function(savedSettings){that.settings=$.extend(!0,{},that.initialModel,savedSettings),that.events.afterInitialSettingsFetched.fire(that.settings)},function(error){fluid.log(fluid.logLevel.WARN,error),that.settings=that.initialModel,that.events.afterInitialSettingsFetched.fire(that.settings)}),fluid.promise.follow(fetchPromise,promise),promise},fluid.defaults("fluid.prefs.transformDefaultPanelsOptions",{gradeNames:["fluid.viewComponent"],distributeOptions:{"transformDefaultPanelsOptions.textSize":{source:"{that}.options.textSize",removeSource:!0,target:"{that textSize}.options"},"transformDefaultPanelsOptions.lineSpace":{source:"{that}.options.lineSpace",removeSource:!0,target:"{that lineSpace}.options"},"transformDefaultPanelsOptions.textFont":{source:"{that}.options.textFont",removeSource:!0,target:"{that textFont}.options"},"transformDefaultPanelsOptions.contrast":{source:"{that}.options.contrast",removeSource:!0,target:"{that contrast}.options"},"transformDefaultPanelsOptions.layoutControls":{source:"{that}.options.layoutControls",removeSource:!0,target:"{that layoutControls}.options"},"transformDefaultPanelsOptions.enhanceInputs":{source:"{that}.options.enhanceInputs",removeSource:!0,target:"{that enhanceInputs}.options"}}}),fluid.defaults("fluid.prefs.settingsGetter",{gradeNames:["fluid.component"],members:{getSettings:"{fluid.prefs.store}.get"}}),fluid.defaults("fluid.prefs.settingsSetter",{gradeNames:["fluid.component"],invokers:{setSettings:{funcName:"fluid.prefs.settingsSetter.setSettings",args:["{arguments}.0","{arguments}.1","{fluid.prefs.store}.set"]}}}),fluid.prefs.settingsSetter.setSettings=function(model,directModel,set){return set(directModel,fluid.copy(model))},fluid.defaults("fluid.prefs.uiEnhancerRelay",{gradeNames:["fluid.modelComponent"],listeners:{"onCreate.addListener":"{that}.addListener","onDestroy.removeListener":"{that}.removeListener"},events:{updateEnhancerModel:"{fluid.prefs.prefsEditor}.events.onUpdateEnhancerModel"},invokers:{addListener:{funcName:"fluid.prefs.uiEnhancerRelay.addListener",args:["{that}.events.updateEnhancerModel","{that}.updateEnhancerModel"]},removeListener:{funcName:"fluid.prefs.uiEnhancerRelay.removeListener",args:["{that}.events.updateEnhancerModel","{that}.updateEnhancerModel"]},updateEnhancerModel:{funcName:"fluid.prefs.uiEnhancerRelay.updateEnhancerModel",args:["{uiEnhancer}","{fluid.prefs.prefsEditor}.model.preferences"]}}}),fluid.prefs.uiEnhancerRelay.addListener=function(modelChanged,listener){modelChanged.addListener(listener)},fluid.prefs.uiEnhancerRelay.removeListener=function(modelChanged,listener){modelChanged.removeListener(listener)},fluid.prefs.uiEnhancerRelay.updateEnhancerModel=function(uiEnhancer,newModel){uiEnhancer.updateModel(newModel)},fluid.defaults("fluid.prefs.prefsEditor",{gradeNames:["fluid.prefs.settingsGetter","fluid.prefs.settingsSetter","fluid.prefs.initialModel","fluid.remoteModelComponent","fluid.viewComponent"],invokers:{fetchImpl:{funcName:"fluid.prefs.prefsEditor.fetchImpl",args:["{that}"]},writeImpl:{funcName:"fluid.prefs.prefsEditor.writeImpl",args:["{that}","{arguments}.0"]},applyChanges:{funcName:"fluid.prefs.prefsEditor.applyChanges",args:["{that}"]},save:{funcName:"fluid.prefs.prefsEditor.save",args:["{that}"]},saveAndApply:{funcName:"fluid.prefs.prefsEditor.saveAndApply",args:["{that}"]},reset:{funcName:"fluid.prefs.prefsEditor.reset",args:["{that}"]},cancel:{funcName:"fluid.prefs.prefsEditor.cancel",args:["{that}"]}},selectors:{panels:".flc-prefsEditor-panel",cancel:".flc-prefsEditor-cancel",reset:".flc-prefsEditor-reset",save:".flc-prefsEditor-save",previewFrame:".flc-prefsEditor-preview-frame"},events:{onSave:null,onCancel:null,beforeReset:null,afterReset:null,onAutoSave:null,modelChanged:null,onPrefsEditorRefresh:null,onUpdateEnhancerModel:null,onPrefsEditorMarkupReady:null,onReady:null},listeners:{"onCreate.init":"fluid.prefs.prefsEditor.init","onAutoSave.save":"{that}.save"},model:{local:{preferences:"{that}.model.preferences"}},modelListeners:{preferences:[{listener:"fluid.prefs.prefsEditor.handleAutoSave",args:["{that}"],namespace:"autoSave",excludeSource:["init"]},{listener:"{that}.events.modelChanged.fire",args:["{change}.value"],namespace:"modelChange"}]},resources:{template:"{templateLoader}.resources.prefsEditor"},autoSave:!1}),fluid.prefs.prefsEditor.applyChanges=function(that){that.events.onUpdateEnhancerModel.fire()},fluid.prefs.prefsEditor.fetchImpl=function(that){var promise=fluid.promise();return that.getSettings().then(function(savedModel){var completeModel=$.extend(!0,{},that.initialModel,savedModel);promise.resolve(completeModel)},promise.reject),promise},fluid.prefs.prefsEditor.writeImpl=function(that,modelToSave){var promise=fluid.promise(),stats={changes:0,unchanged:0,changeMap:{}},changedPrefs={};modelToSave=fluid.copy(modelToSave),fluid.model.diff(modelToSave.preferences,fluid.get(that.initialModel,["preferences"]),stats),0===stats.changes?delete modelToSave.preferences:(fluid.each(stats.changeMap,function(state,pref){fluid.set(changedPrefs,pref,modelToSave.preferences[pref])}),modelToSave.preferences=changedPrefs),that.events.onSave.fire(modelToSave);var setPromise=that.setSettings(modelToSave);return fluid.promise.follow(setPromise,promise),promise},fluid.prefs.prefsEditor.save=function(that){var promise=fluid.promise();if(!that.model||$.isEmptyObject(that.model))promise.resolve({});else{var writePromise=that.write();fluid.promise.follow(writePromise,promise)}return promise},fluid.prefs.prefsEditor.saveAndApply=function(that){var promise=fluid.promise(),prevSettingsPromise=that.getSettings(),savePromise=that.save();return prevSettingsPromise.then(function(prevSettings){savePromise.then(function(changedSelections){fluid.model.diff(fluid.get(changedSelections,"preferences"),fluid.get(prevSettings,"preferences"))||(that.events.onPrefsEditorRefresh.fire(),that.applyChanges())}),fluid.promise.follow(savePromise,promise)}),promise},fluid.prefs.prefsEditor.reset=function(that){var transaction=that.applier.initiate();that.events.beforeReset.fire(that),transaction.fireChangeRequest({path:"preferences",type:"DELETE"}),transaction.change("",fluid.copy(that.initialModel)),transaction.commit(),that.events.onPrefsEditorRefresh.fire(),that.events.afterReset.fire(that)},fluid.prefs.prefsEditor.cancel=function(that){that.events.onCancel.fire(),that.fetch().then(function(){var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"preferences",type:"DELETE"}),transaction.change("",that.model.remote),transaction.commit(),that.events.onPrefsEditorRefresh.fire()})},fluid.prefs.prefsEditor.finishInit=function(that){that.container.append(that.options.resources.template.resourceText),function(that){var saveButton=that.locate("save");if(0<saveButton.length){saveButton.click(that.saveAndApply);var form=fluid.findForm(saveButton);$(form).submit(function(){that.saveAndApply()})}that.locate("reset").click(that.reset),that.locate("cancel").click(that.cancel)}(that),that.fetch().then(function(){that.events.onPrefsEditorMarkupReady.fire(),that.events.onPrefsEditorRefresh.fire(),that.applyChanges(),that.events.onReady.fire(that)})},fluid.prefs.prefsEditor.handleAutoSave=function(that){that.options.autoSave&&that.events.onAutoSave.fire()},fluid.prefs.prefsEditor.init=function(that){setTimeout(function(){fluid.isDestroyed(that)||fluid.prefs.prefsEditor.finishInit(that)},1)},fluid.defaults("fluid.prefs.preview",{gradeNames:["fluid.viewComponent"],components:{enhancer:{type:"fluid.uiEnhancer",container:"{preview}.enhancerContainer",createOnEvent:"onReady"},templateLoader:"{templateLoader}"},invokers:{updateModel:{funcName:"fluid.prefs.preview.updateModel",args:["{preview}","{prefsEditor}.model.preferences"]}},events:{onReady:null},listeners:{"onCreate.startLoadingContainer":"fluid.prefs.preview.startLoadingContainer","{prefsEditor}.events.modelChanged":{listener:"{that}.updateModel",namespace:"updateModel"},"onReady.updateModel":"{that}.updateModel"},templateUrl:"%prefix/PrefsEditorPreview.html"}),fluid.prefs.preview.updateModel=function(that,preferences){setTimeout(function(){that.enhancer&&that.enhancer.updateModel(preferences)},0)},fluid.prefs.preview.startLoadingContainer=function(that){var templateUrl=that.templateLoader.transformURL(that.options.templateUrl);that.container.on("load",function(){that.enhancerContainer=$("body",that.container.contents()),that.events.onReady.fire()}),that.container.attr("src",templateUrl)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.msgLookup",{gradeNames:["fluid.component"],members:{msgLookup:{expander:{funcName:"fluid.prefs.stringLookup",args:["{msgResolver}","{that}.options.stringArrayIndex"]}}},stringArrayIndex:{}}),fluid.prefs.stringLookup=function(messageResolver,stringArrayIndex){var that={id:fluid.allocateGuid(),singleLookup:function(value){var looked=messageResolver.lookup([value]);return fluid.get(looked,"template")},multiLookup:function(values){return fluid.transform(values,function(value){return that.singleLookup(value)})},lookup:function(value){var values=fluid.get(stringArrayIndex,value)||value,lookupFn=fluid.isArrayable(values)?"multiLookup":"singleLookup";return that[lookupFn](values)}};return that.resolvePathSegment=that.lookup,that},fluid.defaults("fluid.prefs.panel",{gradeNames:["fluid.prefs.msgLookup","fluid.rendererComponent"],events:{onDomBind:null},listeners:{"onCreate.onDomBind":"{that}.events.onDomBind"},components:{msgResolver:{type:"fluid.messageResolver"}},rendererOptions:{messageLocator:"{msgResolver}.resolve"},distributeOptions:{"panel.msgResolver.messageBase":{source:"{that}.options.messageBase",target:"{that > msgResolver}.options.messageBase"}}}),fluid.defaults("fluid.prefs.subPanel",{gradeNames:["fluid.prefs.panel","{that}.getDomBindGrade"],listeners:{"{compositePanel}.events.afterRender":{listener:"{that}.events.afterRender",args:["{that}"],namespce:"boilAfterRender"},"onCreate.onDomBind":null,"afterRender.onDomBind":"{that}.resetDomBinder"},rules:{expander:{func:"fluid.prefs.subPanel.generateRules",args:["{that}.options.preferenceMap"]}},invokers:{refreshView:"{compositePanel}.refreshView",resetDomBinder:{funcName:"fluid.prefs.subPanel.resetDomBinder",args:["{that}"]},getDomBindGrade:{funcName:"fluid.prefs.subPanel.getDomBindGrade",args:["{prefsEditor}"]}},strings:{},parentBundle:"{compositePanel}.messageResolver",renderOnInit:!1}),fluid.defaults("fluid.prefs.subPanel.domBind",{gradeNames:["fluid.component"],listeners:{"onDomBind.domChange":{listener:"{prefsEditor}.events.onSignificantDOMChange"}}}),fluid.prefs.subPanel.getDomBindGrade=function(prefsEditor){if(void 0!==fluid.get(prefsEditor,"options.events.onSignificantDOMChange"))return"fluid.prefs.subPanel.domBind"},fluid.prefs.subPanel.resetDomBinder=function(that){var userJQuery=that.container.constructor,context=that.container[0].ownerDocument,selector=that.container.selector;that.container=userJQuery(selector,context),that.container.selector=selector,that.container.context=context,0===that.container.length&&fluid.fail("resetDomBinder got no elements in DOM for container searching for selector "+that.container.selector),fluid.initDomBinder(that,that.options.selectors),that.events.onDomBind.fire(that)},fluid.prefs.subPanel.safePrefKey=function(prefKey){return prefKey.replace(/[.]/g,"_")},fluid.prefs.subPanel.generateRules=function(preferenceMap){var rules={};return fluid.each(preferenceMap,function(prefObj,prefKey){fluid.each(prefObj,function(value,prefRule){0===prefRule.indexOf("model.")&&(rules[fluid.prefs.subPanel.safePrefKey(prefKey)]=prefRule.slice("model.".length))})}),rules},fluid.registerNamespace("fluid.prefs.compositePanel"),fluid.prefs.compositePanel.arrayMergePolicy=function(target,source){return target=fluid.makeArray(target),source=fluid.makeArray(source),fluid.each(source,function(selector){target.indexOf(selector)<0&&target.push(selector)}),target},fluid.defaults("fluid.prefs.compositePanel",{gradeNames:["fluid.prefs.panel","{that}.getDistributeOptionsGrade","{that}.getSubPanelLifecycleBindings"],mergePolicy:{subPanelOverrides:"noexpand",selectorsToIgnore:fluid.prefs.compositePanel.arrayMergePolicy},selectors:{},selectorsToIgnore:[],repeatingSelectors:[],events:{initSubPanels:null},listeners:{"onCreate.combineResources":"{that}.combineResources","onCreate.appendTemplate":{this:"{that}.container",method:"append",args:["{that}.options.resources.template.resourceText"]},"onCreate.initSubPanels":"{that}.events.initSubPanels","onCreate.hideInactive":"{that}.hideInactive","onCreate.surfaceSubpanelRendererSelectors":"{that}.surfaceSubpanelRendererSelectors","afterRender.hideInactive":"{that}.hideInactive"},invokers:{getDistributeOptionsGrade:{funcName:"fluid.prefs.compositePanel.assembleDistributeOptions",args:["{that}.options.components"]},getSubPanelLifecycleBindings:{funcName:"fluid.prefs.compositePanel.subPanelLifecycleBindings",args:["{that}.options.components"]},combineResources:{funcName:"fluid.prefs.compositePanel.combineTemplates",args:["{that}.options.resources","{that}.options.selectors"]},surfaceSubpanelRendererSelectors:{funcName:"fluid.prefs.compositePanel.surfaceSubpanelRendererSelectors",args:["{that}","{that}.options.components","{that}.options.selectors"]},produceSubPanelTrees:{funcName:"fluid.prefs.compositePanel.produceSubPanelTrees",args:["{that}"]},expandProtoTree:{funcName:"fluid.prefs.compositePanel.expandProtoTree",args:["{that}"]},produceTree:{funcName:"fluid.prefs.compositePanel.produceTree",args:["{that}"]},hideInactive:{funcName:"fluid.prefs.compositePanel.hideInactive",args:["{that}"]},handleRenderOnPreference:{funcName:"fluid.prefs.compositePanel.handleRenderOnPreference",args:["{that}","{that}.refreshView","{that}.conditionalCreateEvent","{arguments}.0","{arguments}.1","{arguments}.2"]},conditionalCreateEvent:{funcName:"fluid.prefs.compositePanel.conditionalCreateEvent"}},subPanelOverrides:{gradeNames:["fluid.prefs.subPanel"]},rendererFnOptions:{noexpand:!0,cutpointGenerator:"fluid.prefs.compositePanel.cutpointGenerator",subPanelRepeatingSelectors:{expander:{funcName:"fluid.prefs.compositePanel.surfaceRepeatingSelectors",args:["{that}.options.components"]}}},components:{},resources:{}}),fluid.prefs.compositePanel.prefetchComponentOptions=function(type,options){var baseOptions=fluid.getMergedDefaults(type,fluid.get(options,"gradeNames"));return fluid.merge(baseOptions.mergePolicy,fluid.copy(baseOptions),options)},fluid.prefs.compositePanel.isPanel=function(type,options){var opts=fluid.prefs.compositePanel.prefetchComponentOptions(type,options);return fluid.hasGrade(opts,"fluid.prefs.panel")},fluid.prefs.compositePanel.isActivePanel=function(comp){return comp&&fluid.hasGrade(comp.options,"fluid.prefs.panel")},fluid.prefs.compositePanel.assembleDistributeOptions=function(components){var gradeName="fluid.prefs.compositePanel.distributeOptions_"+fluid.allocateGuid(),distributeOptions={},relayOption={};return fluid.each(components,function(componentOptions,componentName){fluid.prefs.compositePanel.isPanel(componentOptions.type,componentOptions.options)&&(distributeOptions[componentName+".subPanelOverrides"]={source:"{that}.options.subPanelOverrides",target:"{that > "+componentName+"}.options"});var componentRelayRules={},definedOptions=fluid.prefs.compositePanel.prefetchComponentOptions(componentOptions.type,componentOptions.options),preferenceMap=fluid.get(definedOptions,["preferenceMap"]);fluid.each(preferenceMap,function(prefObj,prefKey){fluid.each(prefObj,function(value,prefRule){0===prefRule.indexOf("model.")&&fluid.set(componentRelayRules,prefRule.slice("model.".length),"{compositePanel}.model."+fluid.prefs.subPanel.safePrefKey(prefKey))})}),relayOption[componentName]=componentRelayRules,distributeOptions[componentName+".modelRelay"]={source:"{that}.options.relayOption."+componentName,target:"{that > "+componentName+"}.options.model"}}),fluid.defaults(gradeName,{gradeNames:["fluid.component"],relayOption:relayOption,distributeOptions:distributeOptions}),gradeName},fluid.prefs.compositePanel.conditionalCreateEvent=function(value,createEvent){value&&createEvent()},fluid.prefs.compositePanel.handleRenderOnPreference=function(that,refreshViewFunc,conditionalCreateEventFunc,value,createEvent,componentNames){componentNames=fluid.makeArray(componentNames),conditionalCreateEventFunc(value,createEvent),fluid.each(componentNames,function(componentName){var comp=that[componentName];!value&&comp&&comp.destroy()}),refreshViewFunc()},fluid.prefs.compositePanel.creationEventName=function(pref){return"initOn_"+pref},fluid.prefs.compositePanel.generateModelListeners=function(conditionals){return fluid.transform(conditionals,function(componentNames,pref){return{func:"{that}.handleRenderOnPreference",args:["{change}.value","{that}.events."+fluid.prefs.compositePanel.creationEventName(pref)+".fire",componentNames],namespace:"handleRenderOnPreference_"+pref}})},fluid.prefs.compositePanel.subPanelLifecycleBindings=function(components){var gradeName="fluid.prefs.compositePanel.subPanelCreationTimingDistibution_"+fluid.allocateGuid(),distributeOptions={},subPanelCreationOpts={default:"initSubPanels"},conditionals={},listeners={},events={};return fluid.each(components,function(componentOptions,componentName){if(fluid.prefs.compositePanel.isPanel(componentOptions.type,componentOptions.options)){var creationEventOpt="default",renderOnPreference=fluid.get(componentOptions,"options.renderOnPreference");if(renderOnPreference){var pref=fluid.prefs.subPanel.safePrefKey(renderOnPreference),onCreateListener="onCreate."+pref;creationEventOpt=fluid.prefs.compositePanel.creationEventName(pref),subPanelCreationOpts[creationEventOpt]=creationEventOpt,events[creationEventOpt]=null,conditionals[pref]=conditionals[pref]||[],conditionals[pref].push(componentName),listeners[onCreateListener]={listener:"{that}.conditionalCreateEvent",args:["{that}.model."+pref,"{that}.events."+creationEventOpt+".fire"]}}distributeOptions[componentName+".subPanelCreationOpts"]={source:"{that}.options.subPanelCreationOpts."+creationEventOpt,target:"{that}.options.components."+componentName+".createOnEvent"}}}),fluid.defaults(gradeName,{gradeNames:["fluid.component"],events:events,listeners:listeners,modelListeners:fluid.prefs.compositePanel.generateModelListeners(conditionals),subPanelCreationOpts:subPanelCreationOpts,distributeOptions:distributeOptions}),gradeName},fluid.prefs.compositePanel.hideInactive=function(that){fluid.each(that.options.components,function(componentOpts,componentName){fluid.prefs.compositePanel.isPanel(componentOpts.type,componentOpts.options)&&!fluid.prefs.compositePanel.isActivePanel(that[componentName])&&that.locate(componentName).hide()})},fluid.prefs.compositePanel.combineTemplates=function(resources,selectors){var cutpoints=[],tree={children:[]};fluid.each(resources,function(resource,resourceName){"template"!==resourceName&&(tree.children.push({ID:resourceName,markup:resource.resourceText}),cutpoints.push({id:resourceName,selector:selectors[resourceName]}))});var resourceSpec={base:{resourceText:resources.template.resourceText,href:".",resourceKey:".",cutpoints:cutpoints}},templates=fluid.parseTemplates(resourceSpec,["base"]),renderer=fluid.renderer(templates,tree,{cutpoints:cutpoints,debugMode:!0});resources.template.resourceText=renderer.renderTemplates()},fluid.prefs.compositePanel.rebaseSelectorName=function(memberName,selectorName){return memberName+"_"+selectorName},fluid.prefs.compositePanel.surfaceSubpanelRendererSelectors=function(that,components,selectors){fluid.each(components,function(compOpts,compName){if(fluid.prefs.compositePanel.isPanel(compOpts.type,compOpts.options)){var opts=fluid.prefs.compositePanel.prefetchComponentOptions(compOpts.type,compOpts.options);fluid.each(opts.selectors,function(selector,selName){(!opts.selectorsToIgnore||opts.selectorsToIgnore.indexOf(selName)<0)&&fluid.set(selectors,fluid.prefs.compositePanel.rebaseSelectorName(compName,selName),selectors[compName]+" "+selector)})}})},fluid.prefs.compositePanel.surfaceRepeatingSelectors=function(components){var repeatingSelectors=[];return fluid.each(components,function(compOpts,compName){if(fluid.prefs.compositePanel.isPanel(compOpts.type,compOpts.options)){var opts=fluid.prefs.compositePanel.prefetchComponentOptions(compOpts.type,compOpts.options),rebasedRepeatingSelectors=fluid.transform(opts.repeatingSelectors,function(selector){return fluid.prefs.compositePanel.rebaseSelectorName(compName,selector)});repeatingSelectors=repeatingSelectors.concat(rebasedRepeatingSelectors)}}),repeatingSelectors},fluid.prefs.compositePanel.cutpointGenerator=function(selectors,options){var opts={selectorsToIgnore:options.selectorsToIgnore,repeatingSelectors:options.repeatingSelectors.concat(options.subPanelRepeatingSelectors)};return fluid.renderer.selectorsToCutpoints(selectors,opts)},fluid.prefs.compositePanel.rebaseID=function(value,memberName){return memberName+"_"+value},fluid.prefs.compositePanel.rebaseParentRelativeID=function(val,memberName){var slicePos="..::".length;return val.slice(0,slicePos)+fluid.prefs.compositePanel.rebaseID(val.slice(slicePos),memberName)},fluid.prefs.compositePanel.rebaseValueBinding=function(value,modelRelayRules){return fluid.find(modelRelayRules,function(oldModelPath,newModelPath){return value===oldModelPath?newModelPath:0===value.indexOf(oldModelPath)?value.replace(oldModelPath,newModelPath):void 0})||value},fluid.prefs.compositePanel.rebaseTreeComp=function(msgResolver,model,treeComp,memberName,modelRelayRules){var rebased=fluid.copy(treeComp);if(rebased.ID&&(rebased.ID=fluid.prefs.compositePanel.rebaseID(rebased.ID,memberName)),rebased.children)rebased.children=fluid.prefs.compositePanel.rebaseTree(msgResolver,model,rebased.children,memberName,modelRelayRules);else if(rebased.selection)rebased.selection=fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,rebased.selection,memberName,modelRelayRules);else if(rebased.messagekey)rebased.componentType="UIBound",rebased.value=msgResolver.resolve(rebased.messagekey.value,rebased.messagekey.args),delete rebased.messagekey;else if(rebased.parentRelativeID)rebased.parentRelativeID=fluid.prefs.compositePanel.rebaseParentRelativeID(rebased.parentRelativeID,memberName);else if(rebased.valuebinding&&(rebased.valuebinding=fluid.prefs.compositePanel.rebaseValueBinding(rebased.valuebinding,modelRelayRules),rebased.value)){var modelValue=fluid.get(model,rebased.valuebinding);rebased.value=void 0!==modelValue?modelValue:rebased.value}return rebased},fluid.prefs.compositePanel.rebaseTree=function(msgResolver,model,tree,memberName,modelRelayRules){return fluid.isArrayable(tree)?fluid.transform(tree,function(treeComp){return fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,treeComp,memberName,modelRelayRules)}):fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,tree,memberName,modelRelayRules)},fluid.prefs.compositePanel.produceTree=function(that){var produceTreeOption=that.options.produceTree,ownTree=produceTreeOption?("string"==typeof produceTreeOption?fluid.getGlobalValue(produceTreeOption):produceTreeOption)(that):that.expandProtoTree(),subPanelTree=that.produceSubPanelTrees();return{children:ownTree.children.concat(subPanelTree.children)}},fluid.prefs.compositePanel.expandProtoTree=function(that){var expanderOptions=fluid.renderer.modeliseOptions(that.options.expanderOptions,{ELstyle:"${}"},that);return fluid.renderer.makeProtoExpander(expanderOptions,that)(that.options.protoTree||{})},fluid.prefs.compositePanel.produceSubPanelTrees=function(that){var tree={children:[]};return fluid.each(that.options.components,function(options,componentName){var subPanel=that[componentName];if(fluid.prefs.compositePanel.isActivePanel(subPanel)){var expanderOptions=fluid.renderer.modeliseOptions(subPanel.options.expanderOptions,{ELstyle:"${}"},subPanel),expander=fluid.renderer.makeProtoExpander(expanderOptions,subPanel),subTree=subPanel.produceTree();subTree=fluid.get(subPanel.options,"rendererFnOptions.noexpand")?subTree:expander(subTree);var rebasedTree=fluid.prefs.compositePanel.rebaseTree(subPanel.msgResolver,that.model,subTree,componentName,subPanel.options.rules);tree.children=tree.children.concat(rebasedTree.children)}}),tree},fluid.defaults("fluid.prefs.prefsEditorConnections",{gradeNames:["fluid.component"],listeners:{"{fluid.prefs.prefsEditor}.events.onPrefsEditorRefresh":"{fluid.prefs.panel}.refreshView"},strings:{},parentBundle:"{fluid.prefs.prefsEditorLoader}.msgResolver"}),fluid.defaults("fluid.prefs.panel.switchAdjuster",{gradeNames:["fluid.prefs.panel"],selectors:{header:".flc-prefsEditor-header",switchContainer:".flc-prefsEditor-switch",label:".flc-prefsEditor-label",description:".flc-prefsEditor-description"},selectorsToIgnore:["header","switchContainer"],components:{switchUI:{type:"fluid.switchUI",container:"{that}.dom.switchContainer",createOnEvent:"afterRender",options:{strings:{on:"{fluid.prefs.panel.switchAdjuster}.msgLookup.switchOn",off:"{fluid.prefs.panel.switchAdjuster}.msgLookup.switchOff"},model:{enabled:"{fluid.prefs.panel.switchAdjuster}.model.value"},attrs:{"aria-labelledby":{expander:{funcName:"fluid.allocateSimpleId",args:["{fluid.prefs.panel.switchAdjuster}.dom.description"]}}}}}},protoTree:{label:{messagekey:"label"},description:{messagekey:"description"}}}),fluid.defaults("fluid.prefs.panel.themePicker",{gradeNames:["fluid.prefs.panel"],mergePolicy:{"controlValues.theme":"replace","stringArrayIndex.theme":"replace"},controlValues:{theme:[]},stringArrayIndex:{theme:[]},selectID:"{that}.id",listeners:{"afterRender.style":"{that}.style"},selectors:{themeRow:".flc-prefsEditor-themeRow",themeLabel:".flc-prefsEditor-theme-label",themeInput:".flc-prefsEditor-themeInput",label:".flc-prefsEditor-themePicker-label",description:".flc-prefsEditor-themePicker-descr"},styles:{defaultThemeLabel:"fl-prefsEditor-themePicker-defaultThemeLabel"},repeatingSelectors:["themeRow"],protoTree:{label:{messagekey:"label"},description:{messagekey:"description"},expander:{type:"fluid.renderer.selection.inputs",rowID:"themeRow",labelID:"themeLabel",inputID:"themeInput",selectID:"{that}.options.selectID",tree:{optionnames:"${{that}.msgLookup.theme}",optionlist:"${{that}.options.controlValues.theme}",selection:"${value}"}}},markup:{label:'<span class="fl-preview-A" aria-hidden="true"></span><span class="fl-hidden-accessible">%theme</span><div class="fl-crossout" aria-hidden="true"></div>'},invokers:{style:{funcName:"fluid.prefs.panel.themePicker.style",args:["{that}.dom.themeLabel","{that}.msgLookup.theme","{that}.options.markup.label","{that}.options.controlValues.theme","default","{that}.options.classnameMap.theme","{that}.options.styles.defaultThemeLabel"]}}}),fluid.prefs.panel.themePicker.style=function(labels,strings,markup,theme,defaultThemeName,style,defaultLabelStyle){fluid.each(labels,function(label,index){label=$(label);var themeValue=strings[index];label.html(fluid.stringTemplate(markup,{theme:themeValue})),label.attr("aria-label",themeValue);var labelTheme=theme[index];labelTheme===defaultThemeName&&label.addClass(defaultLabelStyle),label.addClass(style[labelTheme])})},fluid.defaults("fluid.prefs.panel.stepperAdjuster",{gradeNames:["fluid.prefs.panel"],selectors:{header:".flc-prefsEditor-header",textfieldStepperContainer:".flc-prefsEditor-textfieldStepper",label:".flc-prefsEditor-label",descr:".flc-prefsEditor-descr"},selectorsToIgnore:["header","textfieldStepperContainer"],components:{textfieldStepper:{type:"fluid.textfieldStepper",container:"{that}.dom.textfieldStepperContainer",createOnEvent:"afterRender",options:{model:{value:"{fluid.prefs.panel.stepperAdjuster}.model.value",range:{min:"{fluid.prefs.panel.stepperAdjuster}.options.range.min",max:"{fluid.prefs.panel.stepperAdjuster}.options.range.max"},step:"{fluid.prefs.panel.stepperAdjuster}.options.step"},scale:1,strings:{increaseLabel:"{fluid.prefs.panel.stepperAdjuster}.msgLookup.increaseLabel",decreaseLabel:"{fluid.prefs.panel.stepperAdjuster}.msgLookup.decreaseLabel"},attrs:{"aria-labelledby":"{fluid.prefs.panel.stepperAdjuster}.options.panelOptions.labelId"}}}},protoTree:{label:{messagekey:"label",decorators:{attrs:{id:"{that}.options.panelOptions.labelId"}}},descr:{messagekey:"description"}},panelOptions:{labelIdTemplate:"%guid",labelId:{expander:{funcName:"fluid.prefs.panel.stepperAdjuster.setLabelID",args:["{that}.options.panelOptions.labelIdTemplate"]}}}}),fluid.prefs.panel.stepperAdjuster.setLabelID=function(template){return fluid.stringTemplate(template,{guid:fluid.allocateGuid()})},fluid.defaults("fluid.prefs.panel.textSize",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.textSize":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"divisibleBy"}},panelOptions:{labelIdTemplate:"textSize-label-%guid"}}),fluid.defaults("fluid.prefs.panel.textFont",{gradeNames:["fluid.prefs.panel"],preferenceMap:{"fluid.prefs.textFont":{"model.value":"value","controlValues.textFont":"enum"}},mergePolicy:{"controlValues.textFont":"replace","stringArrayIndex.textFont":"replace"},selectors:{header:".flc-prefsEditor-text-font-header",textFont:".flc-prefsEditor-text-font",label:".flc-prefsEditor-text-font-label",textFontDescr:".flc-prefsEditor-text-font-descr"},selectorsToIgnore:["header"],stringArrayIndex:{textFont:["textFont-default","textFont-times","textFont-comic","textFont-arial","textFont-verdana","textFont-open-dyslexic"]},protoTree:{label:{messagekey:"textFontLabel"},textFontDescr:{messagekey:"textFontDescr"},textFont:{optionnames:"${{that}.msgLookup.textFont}",optionlist:"${{that}.options.controlValues.textFont}",selection:"${value}",decorators:{type:"fluid",func:"fluid.prefs.selectDecorator",options:{styles:"{that}.options.classnameMap.textFont"}}}},classnameMap:null,controlValues:{textFont:["default","times","comic","arial","verdana","open-dyslexic"]}}),fluid.defaults("fluid.prefs.panel.lineSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.lineSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"divisibleBy"}},panelOptions:{labelIdTemplate:"lineSpace-label-%guid"}}),fluid.defaults("fluid.prefs.panel.contrast",{gradeNames:["fluid.prefs.panel.themePicker"],preferenceMap:{"fluid.prefs.contrast":{"model.value":"value","controlValues.theme":"enum"}},listeners:{"afterRender.style":"{that}.style"},selectors:{header:".flc-prefsEditor-contrast-header",themeRow:".flc-prefsEditor-themeRow",themeLabel:".flc-prefsEditor-theme-label",themeInput:".flc-prefsEditor-themeInput",label:".flc-prefsEditor-themePicker-label",contrastDescr:".flc-prefsEditor-themePicker-descr"},selectorsToIgnore:["header"],styles:{defaultThemeLabel:"fl-prefsEditor-themePicker-defaultThemeLabel"},stringArrayIndex:{theme:["contrast-default","contrast-bw","contrast-wb","contrast-by","contrast-yb","contrast-lgdg","contrast-gw","contrast-gd","contrast-bbr"]},controlValues:{theme:["default","bw","wb","by","yb","lgdg","gw","gd","bbr"]}}),fluid.defaults("fluid.prefs.panel.layoutControls",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.tableOfContents":{"model.value":"value"}}}),fluid.defaults("fluid.prefs.panel.enhanceInputs",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.enhanceInputs":{"model.value":"value"}}}),fluid.defaults("fluid.prefs.selectDecorator",{gradeNames:["fluid.viewComponent"],listeners:{"onCreate.decorateOptions":"fluid.prefs.selectDecorator.decorateOptions"},styles:{preview:"fl-preview-theme"}}),fluid.prefs.selectDecorator.decorateOptions=function(that){fluid.each($("option",that.container),function(option){var styles=that.options.styles;$(option).addClass(styles.preview+" "+styles[fluid.value(option)])})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.captions",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.captions":{"model.value":"value"}}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.letterSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.letterSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"divisibleBy"}},panelOptions:{labelIdTemplate:"letterSpace-label-%guid"}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.speak",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.speak":{"model.value":"value"}}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.syllabification",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.syllabification":{"model.value":"value"}}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.localization",{gradeNames:["fluid.prefs.panel"],preferenceMap:{"fluid.prefs.localization":{"model.value":"value","controlValues.localization":"enum"}},mergePolicy:{"controlValues.localization":"replace","stringArrayIndex.localization":"replace"},selectors:{header:".flc-prefsEditor-localization-header",localization:".flc-prefsEditor-localization",label:".flc-prefsEditor-localization-label",localizationDescr:".flc-prefsEditor-localization-descr"},selectorsToIgnore:["header"],stringArrayIndex:{localization:["localization-default","localization-en","localization-fr","localization-es","localization-fa"]},protoTree:{label:{messagekey:"label"},localizationDescr:{messagekey:"description"},localization:{optionnames:"${{that}.msgLookup.localization}",optionlist:"${{that}.options.controlValues.localization}",selection:"${value}"}},controlValues:{localization:["default","en","fr","es","fa"]}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.panel.wordSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.wordSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"divisibleBy"}},panelOptions:{labelIdTemplate:"wordSpace-label-%guid"}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor",{gradeNames:["fluid.modelComponent"]}),fluid.defaults("fluid.prefs.enactor.styleElements",{gradeNames:["fluid.prefs.enactor"],cssClass:null,elementsToStyle:null,invokers:{applyStyle:{funcName:"fluid.prefs.enactor.styleElements.applyStyle",args:["{arguments}.0","{arguments}.1"]},resetStyle:{funcName:"fluid.prefs.enactor.styleElements.resetStyle",args:["{arguments}.0","{arguments}.1"]},handleStyle:{funcName:"fluid.prefs.enactor.styleElements.handleStyle",args:["{arguments}.0","{that}.options.elementsToStyle","{that}.options.cssClass","{that}.applyStyle","{that}.resetStyle"]}},modelListeners:{value:{listener:"{that}.handleStyle",args:["{change}.value"],namespace:"handleStyle"}}}),fluid.prefs.enactor.styleElements.applyStyle=function(elements,cssClass){elements.addClass(cssClass)},fluid.prefs.enactor.styleElements.resetStyle=function(elements,cssClass){$(elements,"."+cssClass).addBack().removeClass(cssClass)},fluid.prefs.enactor.styleElements.handleStyle=function(value,elements,cssClass,applyStyleFunc,resetStyleFunc){(value?applyStyleFunc:resetStyleFunc)(elements,cssClass)},fluid.defaults("fluid.prefs.enactor.classSwapper",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],classes:{},invokers:{clearClasses:{funcName:"fluid.prefs.enactor.classSwapper.clearClasses",args:["{that}.container","{that}.classStr"]},swap:{funcName:"fluid.prefs.enactor.classSwapper.swap",args:["{arguments}.0","{that}","{that}.clearClasses"]}},modelListeners:{value:{listener:"{that}.swap",args:["{change}.value"],namespace:"swapClass"}},members:{classStr:{expander:{func:"fluid.prefs.enactor.classSwapper.joinClassStr",args:"{that}.options.classes"}}}}),fluid.prefs.enactor.classSwapper.clearClasses=function(container,classStr){container.removeClass(classStr)},fluid.prefs.enactor.classSwapper.swap=function(value,that,clearClassesFunc){clearClassesFunc(),that.container.addClass(that.options.classes[value])},fluid.prefs.enactor.classSwapper.joinClassStr=function(classes){var classStr="";return fluid.each(classes,function(oneClassName){oneClassName&&(classStr+=classStr?" "+oneClassName:oneClassName)}),classStr},fluid.defaults("fluid.prefs.enactor.enhanceInputs",{gradeNames:["fluid.prefs.enactor.styleElements","fluid.viewComponent"],preferenceMap:{"fluid.prefs.enhanceInputs":{"model.value":"value"}},cssClass:null,elementsToStyle:"{that}.container"}),fluid.defaults("fluid.prefs.enactor.textFont",{gradeNames:["fluid.prefs.enactor.classSwapper"],preferenceMap:{"fluid.prefs.textFont":{"model.value":"value"}}}),fluid.defaults("fluid.prefs.enactor.contrast",{gradeNames:["fluid.prefs.enactor.classSwapper"],preferenceMap:{"fluid.prefs.contrast":{"model.value":"value"}}}),fluid.prefs.enactor.getTextSizeInPx=function(container,fontSizeMap){var fontSize=container.css("font-size");return fontSizeMap[fontSize]&&(fontSize=fontSizeMap[fontSize]),parseFloat(fontSize)},fluid.defaults("fluid.prefs.enactor.textRelatedSizer",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],fontSizeMap:{},invokers:{set:"fluid.notImplemented",getTextSizeInPx:{funcName:"fluid.prefs.enactor.getTextSizeInPx",args:["{that}.container","{that}.options.fontSizeMap"]}},modelListeners:{value:{listener:"{that}.set",args:["{change}.value"],namespace:"setAdaptation"}}}),fluid.defaults("fluid.prefs.enactor.spacingSetter",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],members:{originalSpacing:{expander:{func:"{that}.getSpacing"}}},cssProp:"",invokers:{set:{funcName:"fluid.prefs.enactor.spacingSetter.set",args:["{that}","{that}.options.cssProp","{arguments}.0"]},getSpacing:{funcName:"fluid.prefs.enactor.spacingSetter.getSpacing",args:["{that}","{that}.options.cssProp","{that}.getTextSizeInPx"]}},modelListeners:{unit:{listener:"{that}.set",args:["{change}.value"],namespace:"setAdaptation"},value:{listener:"fluid.identity",namespace:"setAdaptation"}},modelRelay:{target:"unit",namespace:"toUnit",singleTransform:{type:"fluid.transforms.round",scale:1,input:{transform:{type:"fluid.transforms.linearScale",offset:-1,input:"{that}.model.value"}}}}}),fluid.prefs.enactor.spacingSetter.getSpacing=function(that,cssProp,getTextSizeFn){var current=parseFloat(that.container.css(cssProp)),textSize=getTextSizeFn();return fluid.roundToDecimal(current/textSize,2)},fluid.prefs.enactor.spacingSetter.set=function(that,cssProp,units){var targetSize=that.originalSpacing;units&&(targetSize+=units);var spacingSetter=targetSize?fluid.roundToDecimal(targetSize,2)+"em":"";that.container.css(cssProp,spacingSetter)},fluid.defaults("fluid.prefs.enactor.textSize",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],preferenceMap:{"fluid.prefs.textSize":{"model.value":"value"}},members:{root:{expander:{this:"{that}.container",method:"closest",args:["html"]}}},invokers:{set:{funcName:"fluid.prefs.enactor.textSize.set",args:["{arguments}.0","{that}","{that}.getTextSizeInPx"]},getTextSizeInPx:{args:["{that}.root","{that}.options.fontSizeMap"]}}}),fluid.prefs.enactor.textSize.set=function(times,that,getTextSizeInPxFunc){if(times=times||1,that.initialSize||(that.initialSize=getTextSizeInPxFunc()),that.initialSize){var targetSize=times*that.initialSize;that.root.css("font-size",targetSize+"px")}},fluid.defaults("fluid.prefs.enactor.lineSpace",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],preferenceMap:{"fluid.prefs.lineSpace":{"model.value":"value"}},invokers:{set:{funcName:"fluid.prefs.enactor.lineSpace.set",args:["{that}","{arguments}.0"]},getLineHeight:{funcName:"fluid.prefs.enactor.lineSpace.getLineHeight",args:"{that}.container"},getLineHeightMultiplier:{funcName:"fluid.prefs.enactor.lineSpace.getLineHeightMultiplier",args:[{expander:{func:"{that}.getLineHeight"}},{expander:{func:"{that}.getTextSizeInPx"}}]}}}),fluid.prefs.enactor.lineSpace.getLineHeight=function(container){return container.css("line-height")},fluid.prefs.enactor.lineSpace.getLineHeightMultiplier=function(lineHeight,fontSize){return lineHeight?"normal"===lineHeight?1.2:lineHeight.match(/[0-9]$/)?Number(lineHeight):fluid.roundToDecimal(parseFloat(lineHeight)/fontSize,2):0},fluid.prefs.enactor.lineSpace.set=function(that,times){if(that.initialSize||(that.initialSize=that.getLineHeight(),that.lineHeightMultiplier=that.getLineHeightMultiplier()),that.lineHeightMultiplier){var targetLineSpace="normal"===that.initialSize&&1===times?that.initialSize:times*that.lineHeightMultiplier;that.container.css("line-height",targetLineSpace)}},fluid.defaults("fluid.prefs.enactor.tableOfContents",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.tableOfContents":{"model.toc":"value"}},tocTemplate:null,tocMessage:null,components:{messageLoader:{type:"fluid.resourceLoader",options:{resourceOptions:{dataType:"json"},events:{onResourcesLoaded:"{fluid.prefs.enactor.tableOfContents}.events.onMessagesLoaded"}}},tableOfContents:{type:"fluid.tableOfContents",container:"{fluid.prefs.enactor.tableOfContents}.container",createOnEvent:"onCreateTOCReady",options:{listeners:{"afterRender.boilAfterTocRender":"{fluid.prefs.enactor.tableOfContents}.events.afterTocRender"},strings:{tocHeader:"{messageLoader}.resources.tocMessage.resourceText.tocHeader"}}}},invokers:{applyToc:{funcName:"fluid.prefs.enactor.tableOfContents.applyToc",args:["{arguments}.0","{that}"]}},events:{afterTocRender:null,onCreateTOC:null,onMessagesLoaded:null,onCreateTOCReady:{events:{onCreateTOC:"onCreateTOC",onMessagesLoaded:"onMessagesLoaded"}}},modelListeners:{toc:{listener:"{that}.applyToc",args:["{change}.value"],namespace:"toggleToc"}},distributeOptions:{"tocEnactor.tableOfContents.ignoreForToC":{source:"{that}.options.ignoreForToC",target:"{that tableOfContents}.options.ignoreForToC"},"tocEnactor.tableOfContents.tocTemplate":{source:"{that}.options.tocTemplate",target:"{that > tableOfContents > levels}.options.resources.template.url"},"tocEnactor.messageLoader.tocMessage":{source:"{that}.options.tocMessage",target:"{that messageLoader}.options.resources.tocMessage"}}}),fluid.prefs.enactor.tableOfContents.applyToc=function(value,that){value?that.tableOfContents?that.tableOfContents.show():that.events.onCreateTOC.fire():that.tableOfContents&&that.tableOfContents.hide()}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.captions",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.captions":{"model.enabled":"value"}},events:{onVideoElementLocated:null},selectors:{videos:'iframe[src^="https://www.youtube.com/embed/"]'},model:{enabled:!1},components:{ytAPI:{type:"fluid.prefs.enactor.captions.ytAPI"}},dynamicComponents:{player:{type:"fluid.prefs.enactor.captions.youTubePlayer",createOnEvent:"onVideoElementLocated",container:"{arguments}.0",options:{model:{captions:"{captions}.model.enabled"}}}},listeners:{"onCreate.initPlayers":"{that}.initPlayers"},invokers:{initPlayers:{funcName:"fluid.prefs.enactor.captions.initPlayers",args:["{that}","{ytAPI}.notifyWhenLoaded","{that}.dom.videos"]}}}),fluid.prefs.enactor.captions.initPlayers=function(that,getYtApi,videos){var promise=fluid.promise(),ytAPINotice=getYtApi();return promise.then(function(){$(videos).each(function(index,elm){that.events.onVideoElementLocated.fire($(elm))})}),fluid.promise.follow(ytAPINotice,promise),promise},fluid.defaults("fluid.prefs.enactor.captions.ytAPI",{gradeNames:["fluid.component","fluid.resolveRootSingle"],singleRootType:"fluid.prefs.enactor.captions.window",events:{onYouTubeAPILoaded:null},members:{global:window},invokers:{notifyWhenLoaded:{funcName:"fluid.prefs.enactor.captions.ytAPI.notifyWhenLoaded",args:["{that}"]}}}),fluid.prefs.enactor.captions.ytAPI.notifyWhenLoaded=function(that){var promise=fluid.promise();return promise.then(function(){that.events.onYouTubeAPILoaded.fire()},function(error){fluid.log(fluid.logLevel.WARN,error)}),fluid.get(window,["YT","Player"])?promise.resolve():fluid.set(that.global,"onYouTubeIframeAPIReady",promise.resolve),promise},fluid.defaults("fluid.prefs.enactor.captions.youTubePlayer",{gradeNames:["fluid.viewComponent"],events:{onReady:null,onStateChange:null,onPlaybackQualityChange:null,onPlaybackRateChange:null,onError:null,onApiChange:null},model:{captions:!1,track:{}},members:{player:{expander:{funcName:"fluid.prefs.enactor.captions.youTubePlayer.initYTPlayer",args:["{that}"]}},tracklist:[]},invokers:{applyCaptions:{funcName:"fluid.prefs.enactor.captions.youTubePlayer.applyCaptions",args:["{that}.player","{that}.model.track","{that}.model.captions"]}},modelListeners:{setCaptions:{listener:"{that}.applyCaptions",path:["captions","track"],excludeSource:"init"}},listeners:{"onApiChange.prepTrack":{listener:"fluid.prefs.enactor.captions.youTubePlayer.prepTrack",args:["{that}","{that}.player"]},"onApiChange.applyCaptions":{listener:"{that}.applyCaptions",priority:"after:prepTrack"}}}),fluid.prefs.enactor.captions.youTubePlayer.enableJSAPI=function(videoElm){videoElm=$(videoElm);var url=new URL(videoElm.attr("src"));url.searchParams.set("enablejsapi",1),videoElm.attr("src",url.toString())},fluid.prefs.enactor.captions.youTubePlayer.initYTPlayer=function(that){var id=fluid.allocateSimpleId(that.container);return fluid.prefs.enactor.captions.youTubePlayer.enableJSAPI(that.container),new YT.Player(id,{events:{onReady:that.events.onReady.fire,onStateChange:that.events.onStateChange.fire,onPlaybackQualityChange:that.events.onPlaybackQualityChange.fire,onPlaybackRateChange:that.events.onPlaybackRateChange.fire,onError:that.events.onError.fire,onApiChange:that.events.onApiChange.fire}})},fluid.prefs.enactor.captions.youTubePlayer.applyCaptions=function(player,track,state){player.loadModule&&(state?(player.loadModule("captions"),player.setOption("captions","track",track)):player.unloadModule("captions"))},fluid.prefs.enactor.captions.youTubePlayer.prepTrack=function(that,player){player.loadModule("captions");var tracklist=player.getOption("captions","tracklist");tracklist.length&&!that.tracklist.length&&(that.tracklist=tracklist,that.applier.change("track",tracklist[0],"ADD","prepTrack"))}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.enactor.letterSpace",{gradeNames:["fluid.prefs.enactor.spacingSetter"],preferenceMap:{"fluid.prefs.letterSpace":{"model.value":"value"}},cssProp:"letter-spacing"})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.selfVoicing",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.speak":{"model.enabled":"value"}},selectors:{controller:".flc-prefs-selfVoicingWidget"},events:{onInitOrator:null},modelListeners:{enabled:{funcName:"fluid.prefs.enactor.selfVoicing.initOrator",args:["{that}","{change}.value"],namespace:"initOrator"}},components:{orator:{type:"fluid.orator",createOnEvent:"onInitOrator",container:"{fluid.prefs.enactor.selfVoicing}.container",options:{model:{enabled:"{selfVoicing}.model.enabled"},controller:{parentContainer:"{fluid.prefs.enactor.selfVoicing}.dom.controller"}}}},distributeOptions:[{source:"{that}.options.orator",target:"{that > orator}.options",removeSource:!0,namespace:"oratorOpts"}]}),fluid.prefs.enactor.selfVoicing.initOrator=function(that,enabled){enabled&&!that.orator&&that.events.onInitOrator.fire()}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.syllabification",{gradeNames:["fluid.prefs.enactor","fluid.prefs.enactor.syllabification.patterns","fluid.viewComponent"],preferenceMap:{"fluid.prefs.syllabification":{"model.enabled":"value"}},selectors:{separator:".flc-syllabification-separator"},strings:{languageUnavailable:"Syllabification not available for %lang",patternLoadError:"The pattern file %src could not be loaded. %errorMsg"},markup:{separator:'<span class="flc-syllabification-separator fl-syllabification-separator"></span>'},model:{enabled:!1},events:{afterParse:null,afterSyllabification:null,onParsedTextNode:null,onNodeAdded:null,onError:null},listeners:{"afterParse.waitForHyphenators":{listener:"fluid.prefs.enactor.syllabification.waitForHyphenators",args:["{that}"]},"onParsedTextNode.syllabify":{listener:"{that}.apply",args:["{arguments}.0","{arguments}.1"]},"onNodeAdded.syllabify":{listener:"{that}.parse",args:["{arguments}.0","{that}.model.enabled"]}},components:{parser:{type:"fluid.textNodeParser",options:{listeners:{"afterParse.boil":"{syllabification}.events.afterParse","onParsedTextNode.boil":"{syllabification}.events.onParsedTextNode"}}},observer:{type:"fluid.mutationObserver",container:"{that}.container",options:{defaultObserveConfig:{attributes:!1},modelListeners:{"{syllabification}.model.enabled":{funcName:"fluid.prefs.enactor.syllabification.disconnectObserver",priority:"before:setPresentation",args:["{that}","{change}.value"],namespace:"disconnectObserver"}},listeners:{"onNodeAdded.boil":"{syllabification}.events.onNodeAdded","{syllabification}.events.afterSyllabification":{listener:"{that}.observe",namespace:"enableObserver"}}}}},members:{hyphenators:{}},modelListeners:{enabled:{listener:"{that}.setPresentation",args:["{that}.container","{change}.value"],namespace:"setPresentation"}},invokers:{apply:{funcName:"fluid.prefs.enactor.syllabification.syllabify",args:["{that}","{arguments}.0","{arguments}.1"]},remove:{funcName:"fluid.prefs.enactor.syllabification.removeSyllabification",args:["{that}"]},setPresentation:{funcName:"fluid.prefs.enactor.syllabification.setPresentation",args:["{that}","{arguments}.0","{arguments}.1"]},parse:{funcName:"fluid.prefs.enactor.syllabification.parse",args:["{that}","{arguments}.0"]},createHyphenator:{funcName:"fluid.prefs.enactor.syllabification.createHyphenator",args:["{that}","{arguments}.0","{arguments}.1"]},getHyphenator:{funcName:"fluid.prefs.enactor.syllabification.getHyphenator",args:["{that}","{arguments}.0"]},getPattern:"fluid.prefs.enactor.syllabification.getPattern",hyphenateNode:{funcName:"fluid.prefs.enactor.syllabification.hyphenateNode",args:["{arguments}.0","{arguments}.1","{that}.options.markup.separator"]},injectScript:{this:"$",method:"ajax",args:[{url:"{arguments}.0",dataType:"script",cache:!0}]}}}),fluid.prefs.enactor.syllabification.disconnectObserver=function(that,state){state||that.disconnect()},fluid.prefs.enactor.syllabification.waitForHyphenators=function(that){var hyphenatorPromises=fluid.values(that.hyphenators),promise=fluid.promise.sequence(hyphenatorPromises);return promise.then(function(){that.events.afterSyllabification.fire()},that.events.onError.fire),promise},fluid.prefs.enactor.syllabification.parse=function(that,elm){elm=(elm=fluid.unwrap(elm)).nodeType===Node.ELEMENT_NODE?$(elm):$(elm.parentNode),that.parser.parse(elm)},fluid.prefs.enactor.syllabification.createHyphenator=function(that,pattern,lang){var promise=fluid.promise(),globalPath=["Hypher","languages",lang],hyphenator=fluid.getGlobalValue(globalPath);if(hyphenator)return promise.resolve(hyphenator),promise;var src=fluid.stringTemplate(pattern,that.options.terms);return that.injectScript(src).then(function(){hyphenator=fluid.getGlobalValue(globalPath),promise.resolve(hyphenator)},function(error){var errorInfo={src:src,errorMsg:"string"==typeof error?error:""},errorMessage=fluid.stringTemplate(that.options.strings.patternLoadError,errorInfo);fluid.log(fluid.logLevel.WARN,errorMessage,error),that.events.onError.fire(errorMessage,error),promise.resolve()}),promise},fluid.prefs.enactor.syllabification.getPattern=function(lang,patterns){var src=patterns[lang];return src||(src=patterns[lang=lang.split("-")[0]]),{lang:lang,src:src}},fluid.prefs.enactor.syllabification.getHyphenator=function(that,lang){var hyphenatorPromise,promise=fluid.promise();if(!lang)return promise.resolve(),promise;var pattern=that.getPattern(lang.toLowerCase(),that.options.patterns);return pattern.src?that.hyphenators[pattern.src]?that.hyphenators[pattern.src]:(hyphenatorPromise=that.createHyphenator(pattern.src,pattern.lang),fluid.promise.follow(hyphenatorPromise,promise),that.hyphenators[pattern.src]=hyphenatorPromise,promise):((hyphenatorPromise=promise).resolve(),promise)},fluid.prefs.enactor.syllabification.syllabify=function(that,node,lang){that.getHyphenator(lang).then(function(hyphenator){that.hyphenateNode(hyphenator,node)})},fluid.prefs.enactor.syllabification.hyphenateNode=function(hyphenator,node,separatorMarkup){if(hyphenator){var segs=hyphenator.hyphenateText(node.textContent).replace(/\u200B/gi,"").split("­");segs.pop(),fluid.each(segs,function(seg){var separator=$(separatorMarkup)[0];(node=node.splitText(seg.length)).parentNode.insertBefore(separator,node)})}},fluid.prefs.enactor.syllabification.normalize=function(elm){for(var childNode=(elm=fluid.unwrap(elm)).childNodes[0];childNode&&childNode.nextSibling;){var nextSibling=childNode.nextSibling;childNode.nodeType===Node.TEXT_NODE&&nextSibling.nodeType===Node.TEXT_NODE?(childNode.textContent+=nextSibling.textContent,elm.removeChild(nextSibling)):childNode=nextSibling}},fluid.prefs.enactor.syllabification.removeSyllabification=function(that){that.locate("separator").each(function(index,elm){var parent=elm.parentNode;$(elm).remove(),fluid.prefs.enactor.syllabification.normalize(parent)})},fluid.prefs.enactor.syllabification.setPresentation=function(that,elm,state){state?that.parse(elm):that.remove()},fluid.defaults("fluid.prefs.enactor.syllabification.patterns",{terms:{patternPrefix:"../../../lib/hypher/patterns"},patterns:{be:"%patternPrefix/bg.js",bn:"%patternPrefix/bn.js",ca:"%patternPrefix/ca.js",cs:"%patternPrefix/cs.js",da:"%patternPrefix/da.js",de:"%patternPrefix/de.js",el:"%patternPrefix/el-monoton.js","el-monoton":"%patternPrefix/el-monoton.js","el-polyton":"%patternPrefix/el-polyton.js",en:"%patternPrefix/en-us.js","en-gb":"%patternPrefix/en-gb.js","en-us":"%patternPrefix/en-us.js",es:"%patternPrefix/es.js",fi:"%patternPrefix/fi.js",fr:"%patternPrefix/fr.js",grc:"%patternPrefix/grc.js",gu:"%patternPrefix/gu.js",hi:"%patternPrefix/hi.js",hu:"%patternPrefix/hu.js",hy:"%patternPrefix/hy.js",is:"%patternPrefix/is.js",it:"%patternPrefix/it.js",kn:"%patternPrefix/kn.js",la:"%patternPrefix/la.js",lt:"%patternPrefix/lt.js",lv:"%patternPrefix/lv.js",ml:"%patternPrefix/ml.js",nb:"%patternPrefix/nb-no.js","nb-no":"%patternPrefix/nb-no.js",no:"%patternPrefix/nb-no.js",nl:"%patternPrefix/nl.js",or:"%patternPrefix/or.js",pa:"%patternPrefix/pa.js",pl:"%patternPrefix/pl.js",pt:"%patternPrefix/pt.js",ru:"%patternPrefix/ru.js",sk:"%patternPrefix/sk.js",sl:"%patternPrefix/sl.js",sv:"%patternPrefix/sv.js",ta:"%patternPrefix/ta.js",te:"%patternPrefix/te.js",tr:"%patternPrefix/tr.js",uk:"%patternPrefix/uk.js"}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.localization",{gradeNames:["fluid.prefs.enactor","fluid.contextAware","fluid.resolveRoot"],preferenceMap:{"fluid.prefs.localization":{"model.lang":"value"}},contextAwareness:{localeChange:{checks:{inPanel:{contextValue:"{iframeRenderer}.id",gradeNames:"fluid.prefs.enactor.localization.inPanel"},urlPath:{contextValue:"{localization}.options.localizationScheme",equals:"urlPath",gradeNames:"fluid.prefs.enactor.localization.urlPathLocale",priority:"after:inPanel"}}}}}),fluid.defaults("fluid.prefs.enactor.localization.urlPathLocale",{langMap:{},langSegValues:{expander:{funcName:"fluid.values",args:["{that}.options.langMap"]}},modelRelay:[{target:"urlLangSeg",singleTransform:{type:"fluid.transforms.valueMapper",defaultInput:"{that}.model.lang",match:"{that}.options.langMap"}}],modelListeners:{urlLangSeg:{funcName:"{that}.updatePathname",args:["{change}.value"],namespace:"updateURLPathname"}},invokers:{updatePathname:{funcName:"fluid.prefs.enactor.localization.urlPathLocale.updatePathname",args:["{that}","{arguments}.0","{that}.options.langSegValues","{that}.options.langSegIndex"]},getPathname:"fluid.prefs.enactor.localization.urlPathLocale.getPathname",setPathname:"fluid.prefs.enactor.localization.urlPathLocale.setPathname"}}),fluid.prefs.enactor.localization.urlPathLocale.getPathname=function(){return location.pathname},fluid.prefs.enactor.localization.urlPathLocale.setPathname=function(pathname){location.pathname=pathname},fluid.prefs.enactor.localization.urlPathLocale.updatePathname=function(that,urlLangSeg,langSegValues,langSegIndex){if(fluid.isValue(urlLangSeg)){langSegIndex=langSegIndex||1;var pathname=that.getPathname(),pathSegs=pathname.split("/"),currentLang=pathSegs[langSegIndex];!!currentLang&&0<=langSegValues.indexOf(currentLang)?urlLangSeg?pathSegs[langSegIndex]=urlLangSeg:langSegIndex===pathSegs.length-1?pathSegs.pop():pathSegs.splice(langSegIndex,1):urlLangSeg&&pathSegs.splice(langSegIndex,0,urlLangSeg);var newPathname=pathSegs.join("/");newPathname!==pathname&&that.setPathname(newPathname)}}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.enactor.wordSpace",{gradeNames:["fluid.prefs.enactor.spacingSetter"],preferenceMap:{"fluid.prefs.wordSpace":{"model.value":"value"}},cssProp:"word-spacing"})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.initialModel.starter",{gradeNames:["fluid.prefs.initialModel"],members:{initialModel:{preferences:{textFont:"default",theme:"default",textSize:1,lineSpace:1,toc:!1,inputs:!1}}}}),fluid.defaults("fluid.uiEnhancer.cssClassEnhancerBase",{gradeNames:["fluid.component"],classnameMap:{textFont:{default:"",times:"fl-font-times",comic:"fl-font-comic-sans",arial:"fl-font-arial",verdana:"fl-font-verdana","open-dyslexic":"fl-font-open-dyslexic"},theme:{default:"fl-theme-prefsEditor-default",bw:"fl-theme-bw",wb:"fl-theme-wb",by:"fl-theme-by",yb:"fl-theme-yb",lgdg:"fl-theme-lgdg",gd:"fl-theme-gd",gw:"fl-theme-gw",bbr:"fl-theme-bbr"},inputs:"fl-input-enhanced"}}),fluid.defaults("fluid.uiEnhancer.browserTextEnhancerBase",{gradeNames:["fluid.component"],fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}}),fluid.defaults("fluid.uiEnhancer.starterEnactors",{gradeNames:["fluid.uiEnhancer","fluid.uiEnhancer.cssClassEnhancerBase","fluid.uiEnhancer.browserTextEnhancerBase"],model:"{fluid.prefs.initialModel}.initialModel.preferences",components:{textSize:{type:"fluid.prefs.enactor.textSize",container:"{uiEnhancer}.container",options:{fontSizeMap:"{uiEnhancer}.options.fontSizeMap",model:{value:"{uiEnhancer}.model.textSize"}}},textFont:{type:"fluid.prefs.enactor.textFont",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.textFont",model:{value:"{uiEnhancer}.model.textFont"}}},lineSpace:{type:"fluid.prefs.enactor.lineSpace",container:"{uiEnhancer}.container",options:{fontSizeMap:"{uiEnhancer}.options.fontSizeMap",model:{value:"{uiEnhancer}.model.lineSpace"}}},contrast:{type:"fluid.prefs.enactor.contrast",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.theme",model:{value:"{uiEnhancer}.model.theme"}}},enhanceInputs:{type:"fluid.prefs.enactor.enhanceInputs",container:"{uiEnhancer}.container",options:{cssClass:"{uiEnhancer}.options.classnameMap.inputs",model:{value:"{uiEnhancer}.model.inputs"}}},tableOfContents:{type:"fluid.prefs.enactor.tableOfContents",container:"{uiEnhancer}.container",options:{tocTemplate:"{uiEnhancer}.options.tocTemplate",tocMessage:"{uiEnhancer}.options.tocMessage",model:{toc:"{uiEnhancer}.model.toc"}}}}}),fluid.defaults("fluid.prefs.starterPanels",{gradeNames:["fluid.prefs.prefsEditor"],selectors:{textSize:".flc-prefsEditor-text-size",textFont:".flc-prefsEditor-text-font",lineSpace:".flc-prefsEditor-line-space",contrast:".flc-prefsEditor-contrast",layoutControls:".flc-prefsEditor-layout-controls",enhanceInputs:".flc-prefsEditor-enhanceInputs"},components:{textSize:{type:"fluid.prefs.panel.textSize",container:"{prefsEditor}.dom.textSize",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.textSize"},messageBase:"{messageLoader}.resources.textSize.resourceText",resources:{template:"{templateLoader}.resources.textSize"},step:.1,range:{min:1,max:2}}},lineSpace:{type:"fluid.prefs.panel.lineSpace",container:"{prefsEditor}.dom.lineSpace",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.lineSpace"},messageBase:"{messageLoader}.resources.lineSpace.resourceText",resources:{template:"{templateLoader}.resources.lineSpace"},step:.1,range:{min:1,max:2}}},textFont:{type:"fluid.prefs.panel.textFont",container:"{prefsEditor}.dom.textFont",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",classnameMap:"{uiEnhancer}.options.classnameMap",model:{value:"{prefsEditor}.model.preferences.textFont"},messageBase:"{messageLoader}.resources.textFont.resourceText",resources:{template:"{templateLoader}.resources.textFont"}}},contrast:{type:"fluid.prefs.panel.contrast",container:"{prefsEditor}.dom.contrast",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",classnameMap:"{uiEnhancer}.options.classnameMap",model:{value:"{prefsEditor}.model.preferences.theme"},messageBase:"{messageLoader}.resources.contrast.resourceText",resources:{template:"{templateLoader}.resources.contrast"}}},layoutControls:{type:"fluid.prefs.panel.layoutControls",container:"{prefsEditor}.dom.layoutControls",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.toc"},messageBase:"{messageLoader}.resources.layoutControls.resourceText",resources:{template:"{templateLoader}.resources.layoutControls"}}},enhanceInputs:{type:"fluid.prefs.panel.enhanceInputs",container:"{prefsEditor}.dom.enhanceInputs",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.inputs"},messageBase:"{messageLoader}.resources.enhanceInputs.resourceText",resources:{template:"{templateLoader}.resources.enhanceInputs"}}}}}),fluid.defaults("fluid.prefs.starterTemplateLoader",{gradeNames:["fluid.resourceLoader"],resources:{textSize:"%templatePrefix/PrefsEditorTemplate-textSize.html",lineSpace:"%templatePrefix/PrefsEditorTemplate-lineSpace.html",textFont:"%templatePrefix/PrefsEditorTemplate-textFont.html",contrast:"%templatePrefix/PrefsEditorTemplate-contrast.html",layoutControls:"%templatePrefix/PrefsEditorTemplate-layout.html",enhanceInputs:"%templatePrefix/PrefsEditorTemplate-enhanceInputs.html"}}),fluid.defaults("fluid.prefs.starterSeparatedPanelTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/SeparatedPanelPrefsEditor.html"}}),fluid.defaults("fluid.prefs.starterFullPreviewTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/FullPreviewPrefsEditor.html"}}),fluid.defaults("fluid.prefs.starterFullNoPreviewTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/FullNoPreviewPrefsEditor.html"}}),fluid.defaults("fluid.prefs.starterMessageLoader",{gradeNames:["fluid.resourceLoader"],resources:{prefsEditor:"%messagePrefix/prefsEditor.json",textSize:"%messagePrefix/textSize.json",textFont:"%messagePrefix/textFont.json",lineSpace:"%messagePrefix/lineSpace.json",contrast:"%messagePrefix/contrast.json",layoutControls:"%messagePrefix/tableOfContents.json",enhanceInputs:"%messagePrefix/enhanceInputs.json"}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.prefs.arrowScrolling",{gradeNames:["fluid.modelComponent"],selectors:{scrollContainer:".flc-prefsEditor-scrollContainer"},onScrollDelay:100,model:{},events:{beforeReset:null,onScroll:null},modelRelay:{target:"panelIndex",forward:{excludeSource:"init"},namespace:"limitPanelIndex",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.panelIndex",min:0,max:"{that}.model.panelMaxIndex"}},modelListeners:{panelIndex:{listener:"fluid.prefs.arrowScrolling.scrollToPanel",args:["{that}","{change}.value"],excludeSource:["scrollEvent"],namespace:"scrollToPanel"}},listeners:{"onReady.scrollEvent":{this:"{that}.dom.scrollContainer",method:"scroll",args:[{expander:{func:"fluid.debounce",args:["{that}.events.onScroll.fire","{that}.options.onScrollDelay"]}}]},"onReady.windowResize":{this:window,method:"addEventListener",args:["resize","{that}.events.onSignificantDOMChange.fire"]},"onDestroy.removeWindowResize":{this:window,method:"removeEventListener",args:["resize","{that}.events.onSignificantDOMChange.fire"]},"onPrefsEditorMarkupReady.setPanelMaxIndex":{changePath:"panelMaxIndex",value:{expander:{funcName:"fluid.prefs.arrowScrolling.calculatePanelMaxIndex",args:["{that}.dom.panels"]}}},"beforeReset.resetPanelIndex":{listener:"{that}.applier.fireChangeRequest",args:{path:"panelIndex",value:0,type:"ADD",source:"reset"}},"onScroll.setPanelIndex":{changePath:"panelIndex",value:{expander:{funcName:"fluid.prefs.arrowScrolling.getClosestPanelIndex",args:"{that}.dom.panels"}},source:"scrollEvent"}},invokers:{eventToScrollIndex:{funcName:"fluid.prefs.arrowScrolling.eventToScrollIndex",args:["{that}","{arguments}.0"]}},distributeOptions:{"arrowScrolling.panel.listeners.bindScrollArrows":{record:{"afterRender.bindScrollArrows":{this:"{that}.dom.header",method:"click",args:["{prefsEditor}.eventToScrollIndex"]}},target:"{that > fluid.prefs.panel}.options.listeners"}}}),fluid.prefs.arrowScrolling.calculatePanelMaxIndex=function(panels){return Math.max(0,panels.length-1)},fluid.prefs.arrowScrolling.eventToScrollIndex=function(that,event){event.preventDefault();var midPoint=$(event.target).width()/2,scrollToIndex=(that.model.panelIndex||0)+(event.offsetX<midPoint?-1:1);that.applier.change("panelIndex",scrollToIndex,"ADD","eventToScrollIndex")},fluid.prefs.arrowScrolling.scrollToPanel=function(that,panelIndex){panelIndex=panelIndex||0;var panels=that.locate("panels"),scrollContainer=that.locate("scrollContainer");panels.eq(panelIndex).width()&&scrollContainer.scrollLeft(scrollContainer.scrollLeft()+panels.eq(panelIndex).offset().left)},fluid.prefs.arrowScrolling.getClosestPanelIndex=function(panels){var panelArray=fluid.transform(panels,function(panel,idx){return{index:idx,offset:Math.abs($(panel).offset().left)}});return panelArray.sort(function(a,b){return a.offset-b.offset}),fluid.get(panelArray,["0","index"])||0}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.dom"),fluid.dom.getDocumentHeight=function(dokkument){return $("body",dokkument)[0].offsetHeight},fluid.defaults("fluid.prefs.separatedPanel",{gradeNames:["fluid.prefs.prefsEditorLoader","fluid.contextAware"],events:{afterRender:null,onReady:null,onCreateSlidingPanelReady:{events:{iframeRendered:"afterRender",onPrefsEditorMessagesLoaded:"onPrefsEditorMessagesLoaded"}},templatesAndIframeReady:{events:{iframeReady:"afterRender",templatesLoaded:"onPrefsEditorTemplatesLoaded",messagesLoaded:"onPrefsEditorMessagesLoaded"}}},lazyLoad:!1,contextAwareness:{lazyLoad:{checks:{lazyLoad:{contextValue:"{fluid.prefs.separatedPanel}.options.lazyLoad",gradeNames:"fluid.prefs.separatedPanel.lazyLoad"}}}},selectors:{reset:".flc-prefsEditor-reset",iframe:".flc-prefsEditor-iframe"},listeners:{"onReady.bindEvents":{listener:"fluid.prefs.separatedPanel.bindEvents",args:["{separatedPanel}.prefsEditor","{iframeRenderer}.iframeEnhancer","{separatedPanel}"]},"onCreate.hideReset":{listener:"fluid.prefs.separatedPanel.hideReset",args:["{separatedPanel}"]}},invokers:{bindReset:{funcName:"fluid.bind",args:["{separatedPanel}.dom.reset","click","{arguments}.0"]}},components:{slidingPanel:{type:"fluid.slidingPanel",container:"{separatedPanel}.container",createOnEvent:"onCreateSlidingPanelReady",options:{gradeNames:["fluid.prefs.msgLookup"],strings:{showText:"{that}.msgLookup.slidingPanelShowText",hideText:"{that}.msgLookup.slidingPanelHideText",showTextAriaLabel:"{that}.msgLookup.showTextAriaLabel",hideTextAriaLabel:"{that}.msgLookup.hideTextAriaLabel",panelLabel:"{that}.msgLookup.slidingPanelPanelLabel"},invokers:{operateShow:{funcName:"fluid.prefs.separatedPanel.showPanel",args:["{that}.dom.panel","{that}.events.afterPanelShow.fire"],this:null,method:null},operateHide:{funcName:"fluid.prefs.separatedPanel.hidePanel",args:["{that}.dom.panel","{iframeRenderer}.iframe","{that}.events.afterPanelHide.fire"],this:null,method:null}},components:{msgResolver:{type:"fluid.messageResolver",options:{messageBase:"{messageLoader}.resources.prefsEditor.resourceText"}}}}},iframeRenderer:{type:"fluid.prefs.separatedPanel.renderIframe",container:"{separatedPanel}.dom.iframe",options:{events:{afterRender:"{separatedPanel}.events.afterRender"},components:{iframeEnhancer:{type:"fluid.uiEnhancer",container:"{iframeRenderer}.renderPrefsEditorContainer",createOnEvent:"afterRender",options:{gradeNames:["{pageEnhancer}.uiEnhancer.options.userGrades"],jQuery:"{iframeRenderer}.jQuery",tocTemplate:"{pageEnhancer}.uiEnhancer.options.tocTemplate",inSeparatedPanel:!0}}}}},prefsEditor:{createOnEvent:"templatesAndIframeReady",container:"{iframeRenderer}.renderPrefsEditorContainer",options:{gradeNames:["fluid.prefs.uiEnhancerRelay","fluid.prefs.arrowScrolling"],model:{preferences:"{separatedPanel}.model.preferences",panelIndex:"{separatedPanel}.model.panelIndex",panelMaxIndex:"{separatedPanel}.model.panelMaxIndex",local:{panelIndex:"{that}.model.panelIndex"}},autoSave:!0,events:{onSignificantDOMChange:null,updateEnhancerModel:"{that}.events.modelChanged"},modelListeners:{panelIndex:[{listener:"fluid.prefs.prefsEditor.handleAutoSave",args:["{that}"],namespace:"autoSavePanelIndex"}]},listeners:{"onCreate.bindReset":{listener:"{separatedPanel}.bindReset",args:["{that}.reset"]},"afterReset.applyChanges":"{that}.applyChanges","{separatedPanel}.slidingPanel.events.afterPanelShow":{listener:"fluid.prefs.arrowScrolling.scrollToPanel",args:["{that}","{that}.model.panelIndex"],priority:"after:updateView",namespace:"scrollToPanel"}}}}},outerEnhancerOptions:"{originalEnhancerOptions}.options.originalUserOptions",distributeOptions:{"separatedPanel.slidingPanel":{source:"{that}.options.slidingPanel",removeSource:!0,target:"{that > slidingPanel}.options"},"separatedPanel.iframeRenderer":{source:"{that}.options.iframeRenderer",removeSource:!0,target:"{that > iframeRenderer}.options"},"separatedPanel.iframeRendered.terms":{source:"{that}.options.terms",target:"{that > iframeRenderer}.options.terms"},"separatedPanel.selectors.iframe":{source:"{that}.options.iframe",removeSource:!0,target:"{that}.options.selectors.iframe"},"separatedPanel.iframeEnhancer.outerEnhancerOptions":{source:"{that}.options.outerEnhancerOptions",removeSource:!0,target:"{that iframeEnhancer}.options"}}}),fluid.prefs.separatedPanel.hideReset=function(separatedPanel){separatedPanel.locate("reset").hide()},fluid.defaults("fluid.prefs.separatedPanel.renderIframe",{gradeNames:["fluid.viewComponent"],events:{afterRender:null},styles:{container:"fl-prefsEditor-separatedPanel-iframe"},terms:{templatePrefix:"."},markupProps:{class:"flc-iframe",src:"%templatePrefix/SeparatedPanelPrefsEditorFrame.html"},listeners:{"onCreate.startLoadingIframe":"fluid.prefs.separatedPanel.renderIframe.startLoadingIframe"}}),fluid.prefs.separatedPanel.renderIframe.startLoadingIframe=function(that){var styles=that.options.styles;that.options.markupProps.src=fluid.stringTemplate(that.options.markupProps.src,that.options.terms),that.iframeSrc=that.options.markupProps.src,that.iframe=$("<iframe/>"),that.iframe.on("load",function(){var iframeWindow=that.iframe[0].contentWindow;that.iframeDocument=iframeWindow.document,that.jQuery=iframeWindow.jQuery||$,that.renderPrefsEditorContainer=that.jQuery("body",that.iframeDocument),that.jQuery(that.iframeDocument).ready(that.events.afterRender.fire)}),that.iframe.attr(that.options.markupProps),that.iframe.addClass(styles.container),that.iframe.hide(),that.iframe.appendTo(that.container)},fluid.prefs.separatedPanel.updateView=function(prefsEditor){prefsEditor.events.onPrefsEditorRefresh.fire(),prefsEditor.events.onSignificantDOMChange.fire()},fluid.prefs.separatedPanel.bindEvents=function(prefsEditor,iframeEnhancer,separatedPanel){var separatedPanelId=separatedPanel.slidingPanel.panelId;separatedPanel.locate("reset").attr({"aria-controls":separatedPanelId,role:"button"}),separatedPanel.slidingPanel.events.afterPanelShow.addListener(function(){fluid.prefs.separatedPanel.updateView(prefsEditor)},"updateView","after:openPanel"),prefsEditor.events.onPrefsEditorRefresh.addListener(function(){iframeEnhancer.updateModel(prefsEditor.model.preferences)},"updateModel"),prefsEditor.events.afterReset.addListener(function(prefsEditor){fluid.prefs.separatedPanel.updateView(prefsEditor)},"updateView"),prefsEditor.events.onSignificantDOMChange.addListener(function(){if(fluid.get(separatedPanel,"slidingPanel.model.isShowing")){var dokkument=prefsEditor.container[0].ownerDocument,height=fluid.dom.getDocumentHeight(dokkument),iframe=separatedPanel.iframeRenderer.iframe,attrs={height:height};separatedPanel.slidingPanel.locate("panel").css({height:""}),iframe.clearQueue(),iframe.animate(attrs,400)}},"adjustHeight"),separatedPanel.slidingPanel.events.afterPanelHide.addListener(function(){separatedPanel.iframeRenderer.iframe.height(0),separatedPanel.iframeRenderer.iframe.hide()},"collapseFrame"),separatedPanel.slidingPanel.events.afterPanelShow.addListener(function(){separatedPanel.iframeRenderer.iframe.show(),separatedPanel.iframeRenderer.iframe.height(),separatedPanel.locate("reset").show()},"openPanel"),separatedPanel.slidingPanel.events.onPanelHide.addListener(function(){separatedPanel.locate("reset").hide()},"hideReset")},fluid.prefs.separatedPanel.hidePanel=function(panel,iframe,callback){iframe.clearQueue(),$(panel).animate({height:0},{duration:400,complete:callback})},fluid.prefs.separatedPanel.showPanel=function(panel,callback){fluid.invokeLater(callback)},fluid.defaults("fluid.prefs.separatedPanel.lazyLoad",{events:{onLazyLoad:null,onPrefsEditorMessagesPreloaded:null,onCreateSlidingPanelReady:{events:{onPrefsEditorMessagesLoaded:"onPrefsEditorMessagesPreloaded"}},templatesAndIframeReady:{events:{onLazyLoad:"onLazyLoad"}}},components:{templateLoader:{createOnEvent:"onLazyLoad"},messageLoader:{options:{events:{onResourcesPreloaded:"{separatedPanel}.events.onPrefsEditorMessagesPreloaded"},preloadResources:"prefsEditor",listeners:{"onCreate.loadResources":{listener:"fluid.prefs.separatedPanel.lazyLoad.preloadResources",args:["{that}",{expander:{func:"{that}.resolveResources"}},"{that}.options.preloadResources"]},"{separatedPanel}.events.onLazyLoad":{listener:"fluid.resourceLoader.loadResources",args:["{messageLoader}",{expander:{func:"{messageLoader}.resolveResources"}}],namespace:"loadResources"}}}},slidingPanel:{options:{invokers:{operateShow:{funcName:"fluid.prefs.separatedPanel.lazyLoad.showPanel",args:["{separatedPanel}","{that}.events.afterPanelShow.fire"]}}}}}}),fluid.prefs.separatedPanel.lazyLoad.showPanel=function(separatedPanel,callback){separatedPanel.prefsEditor?fluid.invokeLater(callback):(separatedPanel.events.onReady.addListener(function(that){that.events.onReady.removeListener("showPanelCallBack"),fluid.invokeLater(callback)},"showPanelCallBack"),separatedPanel.events.onLazyLoad.fire())},fluid.prefs.separatedPanel.lazyLoad.preloadResources=function(that,resources,toPreload){toPreload=fluid.makeArray(toPreload);var preloadResources={};fluid.each(toPreload,function(resourceName){preloadResources[resourceName]=resources[resourceName]}),fluid.fetchResources(preloadResources,function(){that.resources=preloadResources,that.events.onResourcesPreloaded.fire(preloadResources)})}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.fullNoPreview",{gradeNames:["fluid.prefs.prefsEditorLoader"],components:{prefsEditor:{container:"{that}.container",options:{listeners:{"afterReset.applyChanges":{listener:"{that}.applyChanges"},"afterReset.save":{listener:"{that}.save",priority:"after:applyChanges"}}}}},events:{onReady:null}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid_3_0_0.defaults("fluid.prefs.fullPreview",{gradeNames:["fluid.prefs.prefsEditorLoader"],outerUiEnhancerOptions:"{originalEnhancerOptions}.options.originalUserOptions",outerUiEnhancerGrades:"{originalEnhancerOptions}.uiEnhancer.options.userGrades",components:{prefsEditor:{container:"{that}.container",options:{components:{preview:{type:"fluid.prefs.preview",createOnEvent:"onReady",container:"{prefsEditor}.dom.previewFrame",options:{listeners:{"onReady.boilOnPreviewReady":"{fullPreview}.events.onPreviewReady"}}}},listeners:{"onReady.boil":{listener:"{prefsEditorLoader}.events.onPrefsEditorReady"}},distributeOptions:{"fullPreview.prefsEditor.preview":{source:"{that}.options.preview",removeSource:!0,target:"{that > preview}.options"}}}}},events:{onPrefsEditorReady:null,onPreviewReady:null,onReady:{events:{onPrefsEditorReady:"onPrefsEditorReady",onPreviewReady:"onPreviewReady"},args:"{that}"}},distributeOptions:{"fullPreview.enhancer.outerUiEnhancerOptions":{source:"{that}.options.outerUiEnhancerOptions",target:"{that enhancer}.options"},"fullPreview.enhancer.previewEnhancer":{source:"{that}.options.previewEnhancer",target:"{that enhancer}.options"},"fullPreviw.preview":{source:"{that}.options.preview",target:"{that preview}.options"},"fullPreview.enhancer.outerUiEnhancerGrades":{source:"{that}.options.outerUiEnhancerGrades",target:"{that enhancer}.options.gradeNames"}}})}(jQuery);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs.schemas"),fluid.prefs.schemas.merge=function(target,source){return target||(target={type:"object",properties:{}}),source=source.properties||source,$.extend(!0,target.properties,source),target},fluid.defaults("fluid.prefs.primaryBuilder",{gradeNames:["fluid.component","{that}.buildPrimary"],schemaIndex:{expander:{func:"fluid.indexDefaults",args:["schemaIndex",{gradeNames:"fluid.prefs.schemas",indexFunc:"fluid.prefs.primaryBuilder.defaultSchemaIndexer"}]}},primarySchema:{},typeFilter:[],invokers:{buildPrimary:{funcName:"fluid.prefs.primaryBuilder.buildPrimary",args:["{that}.options.schemaIndex","{that}.options.typeFilter","{that}.options.primarySchema"]}}}),fluid.prefs.primaryBuilder.buildPrimary=function(schemaIndex,typeFilter,primarySchema){var suppliedPrimaryGradeName="fluid.prefs.schemas.suppliedPrimary"+fluid.allocateGuid();fluid.defaults(suppliedPrimaryGradeName,{gradeNames:["fluid.prefs.schemas"],schema:fluid.filterKeys(primarySchema.properties||primarySchema,typeFilter,!1)});var primary=[];return fluid.each(typeFilter,function(type){var schemaGrades=schemaIndex[type];schemaGrades&&primary.push.apply(primary,schemaGrades)}),primary.push(suppliedPrimaryGradeName),primary},fluid.prefs.primaryBuilder.defaultSchemaIndexer=function(defaults){if(defaults.schema)return fluid.keys(defaults.schema.properties)},fluid.defaults("fluid.prefs.schemas",{gradeNames:["fluid.component"],mergePolicy:{schema:fluid.prefs.schemas.merge}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs"),fluid.defaults("fluid.prefs.auxSchema",{gradeNames:["fluid.component"],auxiliarySchema:{loaderGrades:["fluid.prefs.separatedPanel"]}}),fluid.prefs.expandSchemaValue=function(root,pathRef){return"@"!==pathRef.charAt(0)?pathRef:fluid.get(root,pathRef.substring(1))},fluid.prefs.addAtPath=function(root,path,object){var existingObject=fluid.get(root,path);return fluid.set(root,path,$.extend(!0,{},existingObject,object)),root},fluid.prefs.removeKey=function(root,key){var value=root[key];return delete root[key],value},fluid.prefs.rearrangeDirect=function(root,toPath,sourcePath){var result={},sourceValue=fluid.prefs.removeKey(root,sourcePath);return sourceValue&&fluid.set(result,toPath,sourceValue),result},fluid.prefs.addCommonOptions=function(root,path,commonOptions,templateValues){templateValues=templateValues||{};var existingValue=fluid.get(root,path);if(!existingValue)return root;var opts={},mergePolicy={};return fluid.each(commonOptions,function(value,key){if("container"===key){var componentType=fluid.get(root,[path,"type"]),componentOptions=fluid.defaults(componentType);if(void 0===fluid.get(componentOptions,["argumentMap","container"]))return!1}-1!==key.indexOf("gradeNames")&&(mergePolicy[key]=fluid.arrayConcatPolicy),key=fluid.stringTemplate(key,templateValues),value="string"==typeof value?fluid.stringTemplate(value,templateValues):value,fluid.set(opts,key,value)}),fluid.set(root,path,fluid.merge(mergePolicy,existingValue,opts)),root},fluid.prefs.containerNeeded=function(root,path){var componentType=fluid.get(root,[path,"type"]),componentOptions=fluid.defaults(componentType);return fluid.hasGrade(componentOptions,"fluid.viewComponent")||fluid.hasGrade(componentOptions,"fluid.rendererComponent")},fluid.prefs.checkPrimarySchema=function(primarySchema,prefKey){return primarySchema||fluid.fail("The primary schema for "+prefKey+" is not defined."),!!primarySchema},fluid.prefs.flattenName=function(name){var regexp=new RegExp("\\.","g");return name.replace(regexp,"_")},fluid.prefs.constructAliases=function(auxSchema,flattenedPrefKey,aliases){aliases=fluid.makeArray(aliases);var prefsEditorModel={},enhancerModel={};fluid.each(aliases,function(alias){prefsEditorModel[alias]="{that}.model.preferences."+flattenedPrefKey,enhancerModel[alias]="{that}.model."+flattenedPrefKey}),fluid.prefs.addAtPath(auxSchema,["aliases_prefsEditor","model","preferences"],prefsEditorModel),fluid.prefs.addAtPath(auxSchema,["aliases_enhancer","model"],enhancerModel)},fluid.prefs.expandSchemaComponents=function(auxSchema,type,prefKey,alias,componentConfig,index,commonOptions,modelCommonOptions,mappedDefaults){var componentOptions=fluid.copy(componentConfig)||{},components={},initialModel={},componentName=fluid.prefs.removeKey(componentOptions,"type"),memberName=fluid.prefs.flattenName(componentName),flattenedPrefKey=fluid.prefs.flattenName(prefKey);if(componentName){components[memberName]={type:componentName,options:componentOptions};var selectors=fluid.prefs.rearrangeDirect(componentOptions,memberName,"container"),templates=fluid.prefs.rearrangeDirect(componentOptions,memberName,"template"),messages=fluid.prefs.rearrangeDirect(componentOptions,memberName,"message"),map=fluid.defaults(componentName).preferenceMap[prefKey],prefSchema=mappedDefaults[prefKey];fluid.each(map,function(primaryPath,internalPath){if(fluid.prefs.checkPrimarySchema(prefSchema,prefKey)){var opts={};if(0===internalPath.indexOf("model.")&&"value"===primaryPath){var internalModelName=internalPath.slice(6);fluid.set(opts,"model",fluid.get(opts,"model")||{}),fluid.prefs.addCommonOptions(opts,"model",modelCommonOptions,{internalModelName:internalModelName,externalModelName:flattenedPrefKey}),fluid.set(initialModel,["members","initialModel","preferences",flattenedPrefKey],prefSchema.default),alias&&fluid.set(initialModel,["members","initialModel","preferences",alias],prefSchema.default)}else fluid.set(opts,internalPath,prefSchema[primaryPath]);$.extend(!0,componentOptions,opts)}}),fluid.prefs.addCommonOptions(components,memberName,commonOptions,{prefKey:memberName}),fluid.prefs.addAtPath(auxSchema,[type,"components"],components),fluid.prefs.addAtPath(auxSchema,[type,"selectors"],selectors),fluid.prefs.addAtPath(auxSchema,["templateLoader","resources"],templates),fluid.prefs.addAtPath(auxSchema,["messageLoader","resources"],messages),fluid.prefs.addAtPath(auxSchema,"initialModel",initialModel),fluid.prefs.constructAliases(auxSchema,flattenedPrefKey,alias)}return auxSchema},fluid.prefs.expandSchemaImpl=function(schemaToExpand,altSource){var expandedSchema=fluid.copy(schemaToExpand);return altSource=altSource||expandedSchema,fluid.each(expandedSchema,function(value,key){if("object"==typeof value)expandedSchema[key]=fluid.prefs.expandSchemaImpl(value,altSource);else if("string"==typeof value){var expandedVal=fluid.prefs.expandSchemaValue(altSource,value);void 0!==expandedVal?expandedSchema[key]=expandedVal:delete expandedSchema[key]}}),expandedSchema},fluid.prefs.expandCompositePanels=function(auxSchema,compositePanelList,panelIndex,panelCommonOptions,subPanelCommonOptions,compositePanelBasedOnSubCommonOptions,panelModelCommonOptions,mappedDefaults){var panelsToIgnore=[];return fluid.each(compositePanelList,function(compositeDetail,compositeKey){var selectors,templates,messages,compositePanelOptions={},components={},initialModel={},selectorsToIgnore=[],thisCompositeOptions=fluid.copy(compositeDetail);fluid.set(compositePanelOptions,"type",thisCompositeOptions.type),delete thisCompositeOptions.type,selectors=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"container"),templates=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"template"),messages=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"message");var subPanelList=[],subPanels={},subPanelRenderOn={};fluid.isPlainObject(thisCompositeOptions.panels)&&!fluid.isArrayable(thisCompositeOptions.panels)?fluid.each(thisCompositeOptions.panels,function(subpanelArray,pref){subPanelList=subPanelList.concat(subpanelArray),"always"!==pref&&fluid.each(subpanelArray,function(onePanel){fluid.set(subPanelRenderOn,onePanel,pref)})}):subPanelList=thisCompositeOptions.panels,fluid.each(subPanelList,function(subPanelID){panelsToIgnore.push(subPanelID);var subPanelPrefsKey=fluid.get(auxSchema,[subPanelID,"type"]),safeSubPanelPrefsKey=fluid.prefs.subPanel.safePrefKey(subPanelPrefsKey);selectorsToIgnore.push(safeSubPanelPrefsKey);var subPanelOptions=fluid.copy(fluid.get(auxSchema,[subPanelID,"panel"])),subPanelType=fluid.get(subPanelOptions,"type");fluid.set(subPanels,[safeSubPanelPrefsKey,"type"],subPanelType);var renderOn=fluid.get(subPanelRenderOn,subPanelID);renderOn&&fluid.set(subPanels,[safeSubPanelPrefsKey,"options","renderOnPreference"],renderOn);var map=fluid.defaults(subPanelType).preferenceMap[subPanelPrefsKey],prefSchema=mappedDefaults[subPanelPrefsKey];fluid.each(map,function(primaryPath,internalPath){var opts;fluid.prefs.checkPrimarySchema(prefSchema,subPanelPrefsKey)&&(0===internalPath.indexOf("model.")&&"value"===primaryPath?(fluid.set(compositePanelOptions,["options","model"],fluid.get(compositePanelOptions,["options","model"])||{}),fluid.prefs.addCommonOptions(compositePanelOptions,["options","model"],panelModelCommonOptions,{internalModelName:safeSubPanelPrefsKey,externalModelName:safeSubPanelPrefsKey}),fluid.set(initialModel,["members","initialModel","preferences",safeSubPanelPrefsKey],prefSchema.default)):(opts=opts||{options:{}},fluid.set(opts,"options."+internalPath,prefSchema[primaryPath])),$.extend(!0,subPanels[safeSubPanelPrefsKey],opts))}),fluid.set(templates,safeSubPanelPrefsKey,fluid.get(subPanelOptions,"template")),fluid.set(messages,safeSubPanelPrefsKey,fluid.get(subPanelOptions,"message")),fluid.set(compositePanelOptions,["options","selectors",safeSubPanelPrefsKey],fluid.get(subPanelOptions,"container")),fluid.set(compositePanelOptions,["options","resources"],fluid.get(compositePanelOptions,["options","resources"])||{}),fluid.prefs.addCommonOptions(compositePanelOptions.options,"resources",compositePanelBasedOnSubCommonOptions,{subPrefKey:safeSubPanelPrefsKey}),delete subPanelOptions.type,delete subPanelOptions.template,delete subPanelOptions.message,delete subPanelOptions.container,fluid.set(subPanels,[safeSubPanelPrefsKey,"options"],$.extend(!0,{},fluid.get(subPanels,[safeSubPanelPrefsKey,"options"]),subPanelOptions)),fluid.prefs.addCommonOptions(subPanels,safeSubPanelPrefsKey,subPanelCommonOptions,{compositePanel:compositeKey,prefKey:safeSubPanelPrefsKey})}),delete thisCompositeOptions.panels,fluid.set(compositePanelOptions,["options"],$.extend(!0,{},compositePanelOptions.options,thisCompositeOptions)),fluid.set(compositePanelOptions,["options","selectorsToIgnore"],selectorsToIgnore),fluid.set(compositePanelOptions,["options","components"],subPanels),components[compositeKey]=compositePanelOptions,fluid.prefs.addCommonOptions(components,compositeKey,panelCommonOptions,{prefKey:compositeKey}),fluid.prefs.addAtPath(auxSchema,["panels","components"],components),fluid.prefs.addAtPath(auxSchema,["panels","selectors"],selectors),fluid.prefs.addAtPath(auxSchema,["templateLoader","resources"],templates),fluid.prefs.addAtPath(auxSchema,["messageLoader","resources"],messages),fluid.prefs.addAtPath(auxSchema,"initialModel",initialModel),$.extend(!0,auxSchema,{panelsToIgnore:panelsToIgnore})}),auxSchema},fluid.prefs.expandSchema=function(schemaToExpand,indexes,topCommonOptions,elementCommonOptions,mappedDefaults){var auxSchema=fluid.prefs.expandSchemaImpl(schemaToExpand);auxSchema.namespace=auxSchema.namespace||"fluid.prefs.created_"+fluid.allocateGuid();var terms=fluid.get(auxSchema,"terms");terms&&(delete auxSchema.terms,fluid.set(auxSchema,["terms","terms"],terms));var compositePanelList=fluid.get(auxSchema,"groups");return compositePanelList&&fluid.prefs.expandCompositePanels(auxSchema,compositePanelList,fluid.get(indexes,"panel"),fluid.get(elementCommonOptions,"panel"),fluid.get(elementCommonOptions,"subPanel"),fluid.get(elementCommonOptions,"compositePanelBasedOnSub"),fluid.get(elementCommonOptions,"panelModel"),mappedDefaults),fluid.each(auxSchema,function(category,prefName){var type="panel";category[type]&&!fluid.contains(auxSchema.panelsToIgnore,prefName)&&fluid.prefs.expandSchemaComponents(auxSchema,"panels",category.type,category.alias,category[type],fluid.get(indexes,type),fluid.get(elementCommonOptions,type),fluid.get(elementCommonOptions,type+"Model"),mappedDefaults),category[type="enactor"]&&fluid.prefs.expandSchemaComponents(auxSchema,"enactors",category.type,category.alias,category[type],fluid.get(indexes,type),fluid.get(elementCommonOptions,type),fluid.get(elementCommonOptions,type+"Model"),mappedDefaults),fluid.each(["template","message"],function(type){prefName===type&&(fluid.set(auxSchema,[type+"Loader","resources","prefsEditor"],auxSchema[type]),delete auxSchema[type])})}),auxSchema.panelsToIgnore&&delete auxSchema.panelsToIgnore,fluid.each(topCommonOptions,function(topOptions,type){fluid.prefs.addCommonOptions(auxSchema,type,topOptions)}),auxSchema},fluid.defaults("fluid.prefs.auxBuilder",{gradeNames:["fluid.prefs.auxSchema"],mergePolicy:{elementCommonOptions:"noexpand"},topCommonOptions:{panels:{gradeNames:["fluid.prefs.prefsEditor"]},enactors:{gradeNames:["fluid.uiEnhancer"]},templateLoader:{gradeNames:["fluid.resourceLoader"]},messageLoader:{gradeNames:["fluid.resourceLoader"]},initialModel:{gradeNames:["fluid.prefs.initialModel"]},terms:{gradeNames:["fluid.component"]},aliases_prefsEditor:{gradeNames:["fluid.modelComponent"]},aliases_enhancer:{gradeNames:["fluid.modelComponent"]}},elementCommonOptions:{panel:{createOnEvent:"onPrefsEditorMarkupReady",container:"{prefsEditor}.dom.%prefKey","options.gradeNames":"fluid.prefs.prefsEditorConnections","options.resources.template":"{templateLoader}.resources.%prefKey","options.messageBase":"{messageLoader}.resources.%prefKey.resourceText"},panelModel:{"%internalModelName":"{prefsEditor}.model.preferences.%externalModelName"},compositePanelBasedOnSub:{"%subPrefKey":"{templateLoader}.resources.%subPrefKey"},subPanel:{container:"{%compositePanel}.dom.%prefKey","options.messageBase":"{messageLoader}.resources.%prefKey.resourceText"},enactor:{container:"{uiEnhancer}.container"},enactorModel:{"%internalModelName":"{uiEnhancer}.model.%externalModelName"}},indexes:{panel:{expander:{func:"fluid.indexDefaults",args:["panelsIndex",{gradeNames:"fluid.prefs.panel",indexFunc:"fluid.prefs.auxBuilder.prefMapIndexer"}]}},enactor:{expander:{func:"fluid.indexDefaults",args:["enactorsIndex",{gradeNames:"fluid.prefs.enactor",indexFunc:"fluid.prefs.auxBuilder.prefMapIndexer"}]}}},mappedDefaults:{},expandedAuxSchema:{expander:{func:"fluid.prefs.expandSchema",args:["{that}.options.auxiliarySchema","{that}.options.indexes","{that}.options.topCommonOptions","{that}.options.elementCommonOptions","{that}.options.mappedDefaults"]}}}),fluid.prefs.auxBuilder.prefMapIndexer=function(defaults){return fluid.keys(defaults.preferenceMap)}}(jQuery,fluid_3_0_0),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.starter",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{loaderGrades:["fluid.prefs.separatedPanel"],namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",defaultLocale:"en",textSize:{type:"fluid.prefs.textSize",alias:"textSize",enactor:{type:"fluid.prefs.enactor.textSize"},panel:{type:"fluid.prefs.panel.textSize",container:".flc-prefsEditor-text-size",message:"%messagePrefix/textSize.json",template:"%templatePrefix/PrefsEditorTemplate-textSize.html"}},textFont:{type:"fluid.prefs.textFont",alias:"textFont",classes:{default:"",times:"fl-font-times",comic:"fl-font-comic-sans",arial:"fl-font-arial",verdana:"fl-font-verdana","open-dyslexic":"fl-font-open-dyslexic"},enactor:{type:"fluid.prefs.enactor.textFont",classes:"@textFont.classes"},panel:{type:"fluid.prefs.panel.textFont",container:".flc-prefsEditor-text-font",classnameMap:{textFont:"@textFont.classes"},template:"%templatePrefix/PrefsEditorTemplate-textFont.html",message:"%messagePrefix/textFont.json"}},lineSpace:{type:"fluid.prefs.lineSpace",alias:"lineSpace",enactor:{type:"fluid.prefs.enactor.lineSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.lineSpace",container:".flc-prefsEditor-line-space",message:"%messagePrefix/lineSpace.json",template:"%templatePrefix/PrefsEditorTemplate-lineSpace.html"}},contrast:{type:"fluid.prefs.contrast",alias:"theme",classes:{default:"fl-theme-prefsEditor-default",bw:"fl-theme-bw",wb:"fl-theme-wb",by:"fl-theme-by",yb:"fl-theme-yb",lgdg:"fl-theme-lgdg",gd:"fl-theme-gd",gw:"fl-theme-gw",bbr:"fl-theme-bbr"},enactor:{type:"fluid.prefs.enactor.contrast",classes:"@contrast.classes"},panel:{type:"fluid.prefs.panel.contrast",container:".flc-prefsEditor-contrast",classnameMap:{theme:"@contrast.classes"},template:"%templatePrefix/PrefsEditorTemplate-contrast.html",message:"%messagePrefix/contrast.json"}},tableOfContents:{type:"fluid.prefs.tableOfContents",alias:"toc",enactor:{type:"fluid.prefs.enactor.tableOfContents",tocTemplate:"../../components/tableOfContents/html/TableOfContents.html",tocMessage:"../../framework/preferences/messages/tableOfContents-enactor.json"},panel:{type:"fluid.prefs.panel.layoutControls",container:".flc-prefsEditor-layout-controls",template:"%templatePrefix/PrefsEditorTemplate-layout.html",message:"%messagePrefix/tableOfContents.json"}},enhanceInputs:{type:"fluid.prefs.enhanceInputs",alias:"inputs",enactor:{type:"fluid.prefs.enactor.enhanceInputs",cssClass:"fl-input-enhanced"},panel:{type:"fluid.prefs.panel.enhanceInputs",container:".flc-prefsEditor-enhanceInputs",template:"%templatePrefix/PrefsEditorTemplate-enhanceInputs.html",message:"%messagePrefix/enhanceInputs.json"}}}}),fluid.defaults("fluid.prefs.schemas.textSize",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.textSize":{type:"number",default:1,minimum:.5,maximum:2,divisibleBy:.1}}}),fluid.defaults("fluid.prefs.schemas.lineSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.lineSpace":{type:"number",default:1,minimum:.7,maximum:2,divisibleBy:.1}}}),fluid.defaults("fluid.prefs.schemas.textFont",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.textFont":{type:"string",default:"default",enum:["default","times","comic","arial","verdana","open-dyslexic"]}}}),fluid.defaults("fluid.prefs.schemas.contrast",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.contrast":{type:"string",default:"default",enum:["default","bw","wb","by","yb","lgdg","gw","gd","bbr"]}}}),fluid.defaults("fluid.prefs.schemas.tableOfContents",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.tableOfContents":{type:"boolean",default:!1}}}),fluid.defaults("fluid.prefs.schemas.enhanceInputs",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.enhanceInputs":{type:"boolean",default:!1}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.captions",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",captions:{type:"fluid.prefs.captions",enactor:{type:"fluid.prefs.enactor.captions",container:"body"},panel:{type:"fluid.prefs.panel.captions",container:".flc-prefsEditor-captions",template:"%templatePrefix/PrefsEditorTemplate-captions.html",message:"%messagePrefix/captions.json"}}}}),fluid.defaults("fluid.prefs.schemas.captions",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.captions":{type:"boolean",default:!1}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.letterSpace",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",letterSpace:{type:"fluid.prefs.letterSpace",enactor:{type:"fluid.prefs.enactor.letterSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.letterSpace",container:".flc-prefsEditor-letter-space",template:"%templatePrefix/PrefsEditorTemplate-letterSpace.html",message:"%messagePrefix/letterSpace.json"}}}}),fluid.defaults("fluid.prefs.schemas.letterSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.letterSpace":{type:"number",default:1,minimum:.9,maximum:2,divisibleBy:.1}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.speak",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",speak:{type:"fluid.prefs.speak",enactor:{type:"fluid.prefs.enactor.selfVoicing"},panel:{type:"fluid.prefs.panel.speak",container:".flc-prefsEditor-speak",template:"%templatePrefix/PrefsEditorTemplate-speak.html",message:"%messagePrefix/speak.json"}}}}),fluid.defaults("fluid.prefs.schemas.speak",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.speak":{type:"boolean",default:!1}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.syllabification",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",syllabification:{type:"fluid.prefs.syllabification",enactor:{type:"fluid.prefs.enactor.syllabification",container:"body"},panel:{type:"fluid.prefs.panel.syllabification",container:".flc-prefsEditor-syllabification",template:"%templatePrefix/PrefsEditorTemplate-syllabification.html",message:"%messagePrefix/syllabification.json"}}}}),fluid.defaults("fluid.prefs.schemas.syllabification",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.syllabification":{type:"boolean",default:!1}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.localization",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",localization:{type:"fluid.prefs.localization",alias:"locale",enactor:{type:"fluid.prefs.enactor.localization"},panel:{type:"fluid.prefs.panel.localization",container:".flc-prefsEditor-localization",template:"%templatePrefix/PrefsEditorTemplate-localization.html",message:"%messagePrefix/localization.json"}}}}),fluid.defaults("fluid.prefs.schemas.localization",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.localization":{type:"string",default:"",enum:["","en","en_CA","en_US","fr","es","fa"]}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.constructed.localizationPrefsEditorConfig",{gradeNames:["fluid.contextAware"],contextAwareness:{localeChange:{checks:{urlPath:{contextValue:"{localizationPrefsEditorConfig}.options.localizationScheme",equals:"urlPath",gradeNames:"fluid.prefs.constructed.localizationPrefsEditorConfig.urlPathLocale"}}}},distributeOptions:{"prefsEditor.localization.enactor.localizationScheme":{source:"{that}.options.localizationScheme",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.localizationScheme"},"prefsEditor.localization.panel.locales":{source:"{that}.options.locales",target:"{that prefsEditor fluid.prefs.panel.localization}.options.controlValues.localization"},"prefsEditor.localization.panel.localeNames":{source:"{that}.options.localeNames",target:"{that prefsEditor fluid.prefs.panel.localization}.options.stringArrayIndex.localization"}}}),fluid.defaults("fluid.prefs.constructed.localizationPrefsEditorConfig.urlPathLocale",{distributeOptions:{"prefsEditor.localization.enactor.langMap":{source:"{that}.options.langMap",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.langMap"},"prefsEditor.localization.enactor.langSegIndex":{source:"{that}.options.langSegIndex",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.langSegIndex"}}})}(fluid_3_0_0=fluid_3_0_0||{}),function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.wordSpace",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",wordSpace:{type:"fluid.prefs.wordSpace",enactor:{type:"fluid.prefs.enactor.wordSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.wordSpace",container:".flc-prefsEditor-word-space",template:"%templatePrefix/PrefsEditorTemplate-wordSpace.html",message:"%messagePrefix/wordSpace.json"}}}}),fluid.defaults("fluid.prefs.schemas.wordSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.wordSpace":{type:"number",default:1,minimum:.7,maximum:2,divisibleBy:.1}}})}(fluid_3_0_0=fluid_3_0_0||{});fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs"),fluid.defaults("fluid.prefs.builder",{gradeNames:["fluid.component","fluid.prefs.auxBuilder"],mergePolicy:{auxSchema:"expandedAuxSchema"},assembledPrefsEditorGrade:{expander:{func:"fluid.prefs.builder.generateGrade",args:["prefsEditor","{that}.options.auxSchema.namespace",{gradeNames:["fluid.prefs.assembler.prefsEd","fluid.viewComponent"],componentGrades:"{that}.options.constructedGrades",loaderGrades:"{that}.options.auxSchema.loaderGrades",defaultLocale:"{that}.options.auxSchema.defaultLocale",enhancer:{defaultLocale:"{that}.options.auxSchema.defaultLocale"}}]}},assembledUIEGrade:{expander:{func:"fluid.prefs.builder.generateGrade",args:["uie","{that}.options.auxSchema.namespace",{gradeNames:["fluid.viewComponent","fluid.prefs.assembler.uie"],componentGrades:"{that}.options.constructedGrades"}]}},constructedGrades:{expander:{func:"fluid.prefs.builder.constructGrades",args:["{that}.options.auxSchema",["enactors","messages","panels","initialModel","templateLoader","messageLoader","terms","aliases_prefsEditor","aliases_enhancer"]]}},mappedDefaults:"{primaryBuilder}.options.schema.properties",components:{primaryBuilder:{type:"fluid.prefs.primaryBuilder",options:{typeFilter:{expander:{func:"fluid.prefs.builder.parseAuxSchema",args:"{builder}.options.auxiliarySchema"}}}}},distributeOptions:{"builder.primaryBuilder.primarySchema":{source:"{that}.options.primarySchema",removeSource:!0,target:"{that > primaryBuilder}.options.primarySchema"}}}),fluid.defaults("fluid.prefs.assembler.uie",{gradeNames:["fluid.viewComponent"],components:{store:{type:"fluid.prefs.globalSettingsStore",options:{distributeOptions:{"uie.store.context.checkUser":{target:"{that fluid.prefs.store}.options.contextAwareness.strategy.checks.user",record:{contextValue:"{fluid.prefs.assembler.uie}.options.storeType",gradeNames:"{fluid.prefs.assembler.uie}.options.storeType"}}}}},enhancer:{type:"fluid.component",options:{gradeNames:"{that}.options.enhancerType",enhancerType:"fluid.pageEnhancer",components:{uiEnhancer:{options:{gradeNames:["{fluid.prefs.assembler.uie}.options.componentGrades.enactors","{fluid.prefs.assembler.prefsEd}.options.componentGrades.aliases_enhancer"]}}}}}},distributeOptions:{"uie.enhancer":{source:"{that}.options.enhancer",target:"{that uiEnhancer}.options",removeSource:!0},"uie.enhancer.enhancerType":{source:"{that}.options.enhancerType",target:"{that > enhancer}.options.enhancerType"},"uie.store":{source:"{that}.options.store",target:"{that fluid.prefs.store}.options"}}}),fluid.defaults("fluid.prefs.assembler.prefsEd",{gradeNames:["fluid.viewComponent","fluid.prefs.assembler.uie"],components:{prefsEditorLoader:{type:"fluid.viewComponent",container:"{fluid.prefs.assembler.prefsEd}.container",priority:"last",options:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.terms","{fluid.prefs.assembler.prefsEd}.options.componentGrades.messages","{fluid.prefs.assembler.prefsEd}.options.componentGrades.initialModel","{that}.options.loaderGrades"],templateLoader:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.templateLoader"]},messageLoader:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.messageLoader"]},prefsEditor:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.panels","{fluid.prefs.assembler.prefsEd}.options.componentGrades.aliases_prefsEditor","fluid.prefs.uiEnhancerRelay"]},events:{onReady:"{fluid.prefs.assembler.prefsEd}.events.onPrefsEditorReady"}}}},events:{onPrefsEditorReady:null,onReady:{events:{onPrefsEditorReady:"onPrefsEditorReady",onCreate:"onCreate"},args:["{that}"]}},distributeOptions:{"prefsEdAssembler.prefsEditorLoader.loaderGrades":{source:"{that}.options.loaderGrades",removeSource:!0,target:"{that > prefsEditorLoader}.options.loaderGrades"},"prefsEdAssembler.prefsEditorLoader.terms":{source:"{that}.options.terms",removeSource:!0,target:"{that prefsEditorLoader}.options.terms"},"prefsEdAssembler.prefsEditorLoader.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that prefsEditorLoader}.options.defaultLocale"},"prefsEdAssembler.uiEnhancer.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that uiEnhancer}.options.defaultLocale"},"prefsEdAssembler.prefsEditor":{source:"{that}.options.prefsEditor",removeSource:!0,target:"{that prefsEditor}.options"}}}),fluid.prefs.builder.generateGrade=function(name,namespace,options){var gradeName=fluid.stringTemplate("%namespace.%name",{name:name,namespace:namespace});return fluid.defaults(gradeName,options),gradeName},fluid.prefs.builder.constructGrades=function(auxSchema,gradeCategories){var constructedGrades={};return fluid.each(gradeCategories,function(category){var gradeOpts=auxSchema[category];fluid.get(gradeOpts,"gradeNames")&&(constructedGrades[category]=fluid.prefs.builder.generateGrade(category,auxSchema.namespace,gradeOpts))}),constructedGrades},fluid.prefs.builder.parseAuxSchema=function(auxSchema){var auxTypes=[];return fluid.each(auxSchema,function(field){var type=field.type;type&&auxTypes.push(type)}),auxTypes},fluid.prefs.create=function(container,options){options=options||{};var builder=fluid.prefs.builder(options.build);return fluid.invokeGlobalFunction(builder.options.assembledPrefsEditorGrade,[container,options.prefsEditor])}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.prefs.builder({gradeNames:["fluid.prefs.auxSchema.starter"]}),fluid.defaults("fluid.uiOptions.prefsEditor",{gradeNames:["fluid.prefs.constructed.prefsEditor"],lazyLoad:!1,distributeOptions:{"uio.separatedPanel.lazyLoad":{record:"{that}.options.lazyLoad",target:"{that separatedPanel}.options.lazyLoad"},"uio.uiEnhancer.tocTemplate":{source:"{that}.options.tocTemplate",target:"{that uiEnhancer > tableOfContents}.options.tocTemplate"},"uio.uiEnhancer.tocMessage":{source:"{that}.options.tocMessage",target:"{that uiEnhancer > tableOfContents}.options.tocMessage"},"uio.uiEnhancer.ignoreForToC":{source:"{that}.options.ignoreForToC",target:"{that uiEnhancer > tableOfContents}.options.ignoreForToC"}}})}(jQuery,fluid_3_0_0),function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery"],factory):"undefined"!=typeof module&&module.exports?module.exports=factory(require("jquery")):factory(jQuery)}(function($){"use strict";var $scrollTo=$.scrollTo=function(target,duration,settings){return $(window).scrollTo(target,duration,settings)};function isWin(elem){return!elem.nodeName||-1!==$.inArray(elem.nodeName.toLowerCase(),["iframe","#document","html","body"])}function both(val){return $.isFunction(val)||$.isPlainObject(val)?val:{top:val,left:val}}return $scrollTo.defaults={axis:"xy",duration:0,limit:!0},$.fn.scrollTo=function(target,duration,settings){"object"==typeof duration&&(settings=duration,duration=0),"function"==typeof settings&&(settings={onAfter:settings}),"max"===target&&(target=9e9),settings=$.extend({},$scrollTo.defaults,settings),duration=duration||settings.duration;var queue=settings.queue&&1<settings.axis.length;return queue&&(duration/=2),settings.offset=both(settings.offset),settings.over=both(settings.over),this.each(function(){if(null!==target){var toff,win=isWin(this),elem=win?this.contentWindow||window:this,$elem=$(elem),targ=target,attr={};switch(typeof targ){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=win?$(targ):$(targ,elem);case"object":if(0===targ.length)return;(targ.is||targ.style)&&(toff=(targ=$(targ)).offset())}var offset=$.isFunction(settings.offset)&&settings.offset(elem,targ)||settings.offset;$.each(settings.axis.split(""),function(i,axis){var Pos="x"===axis?"Left":"Top",pos=Pos.toLowerCase(),key="scroll"+Pos,prev=$elem[key](),max=$scrollTo.max(elem,axis);if(toff)attr[key]=toff[pos]+(win?0:prev-$elem.offset()[pos]),settings.margin&&(attr[key]-=parseInt(targ.css("margin"+Pos),10)||0,attr[key]-=parseInt(targ.css("border"+Pos+"Width"),10)||0),attr[key]+=offset[pos]||0,settings.over[pos]&&(attr[key]+=targ["x"===axis?"width":"height"]()*settings.over[pos]);else{var val=targ[pos];attr[key]=val.slice&&"%"===val.slice(-1)?parseFloat(val)/100*max:val}settings.limit&&/^\d+$/.test(attr[key])&&(attr[key]=attr[key]<=0?0:Math.min(attr[key],max)),!i&&1<settings.axis.length&&(prev===attr[key]?attr={}:queue&&(animate(settings.onAfterFirst),attr={}))}),animate(settings.onAfter)}function animate(callback){var opts=$.extend({},settings,{queue:!0,duration:duration,complete:callback&&function(){callback.call(elem,targ,settings)}});$elem.animate(attr,opts)}})},$scrollTo.max=function(elem,axis){var Dim="x"===axis?"Width":"Height",scroll="scroll"+Dim;if(!isWin(elem))return elem[scroll]-$(elem)[Dim.toLowerCase()]();var size="client"+Dim,doc=elem.ownerDocument||elem.document,html=doc.documentElement,body=doc.body;return Math.max(html[scroll],body[scroll])-Math.min(html[size],body[size])},$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(t){return $(t.elem)[t.prop]()},set:function(t){var curr=this.get(t);if(t.options.interrupt&&t._last&&t._last!==curr)return $(t.elem).stop();var next=Math.round(t.now);curr!==next&&($(t.elem)[t.prop](next),t._last=this.get(t))}},$scrollTo});fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.enhance.supportsBinaryXHR=function(){return window.FormData||window.XMLHttpRequest&&window.XMLHttpRequest.prototype&&window.XMLHttpRequest.prototype.sendAsBinary},fluid.enhance.supportsFormData=function(){return!!window.FormData},fluid.contextAware.makeChecks({"fluid.browser.supportsBinaryXHR":{funcName:"fluid.enhance.supportsBinaryXHR"},"fluid.browser.supportsFormData":{funcName:"fluid.enhance.supportsFormData"}}),fluid.registerNamespace("fluid.uploader"),fluid.uploader.fileOrFiles=function(that,numFiles){return 1===numFiles?that.options.strings.progress.singleFile:that.options.strings.progress.pluralFiles},fluid.uploader.enableElement=function(that,elm){elm.prop("disabled",!1),elm.removeClass(that.options.styles.dim)},fluid.uploader.disableElement=function(that,elm){elm.prop("disabled",!0),elm.addClass(that.options.styles.dim)},fluid.uploader.showElement=function(that,elm){elm.removeClass(that.options.styles.hidden)},fluid.uploader.hideElement=function(that,elm){elm.addClass(that.options.styles.hidden)},fluid.uploader.maxFilesUploaded=function(that){return that.queue.getUploadedFiles().length+that.queue.getReadyFiles().length+that.queue.getErroredFiles().length===that.options.queueSettings.fileUploadLimit},fluid.uploader.setTotalProgressStyle=function(that,didError){didError=didError||!1;var indicator=that.totalProgress.indicator;indicator.toggleClass(that.options.styles.totalProgress,!didError),indicator.toggleClass(that.options.styles.totalProgressError,didError)},fluid.uploader.setStateEmpty=function(that){fluid.uploader.disableElement(that,that.locate("uploadButton")),0===that.queue.files.length&&(that.locate("browseButtonText").text(that.options.strings.buttons.browse),that.locate("browseButton").removeClass(that.options.styles.browseButton),fluid.uploader.showElement(that,that.locate("instructions")))},fluid.uploader.enableBrowseButton=function(that){fluid.uploader.maxFilesUploaded(that)||(fluid.uploader.enableElement(that,that.locate("browseButton")),that.strategy.local.enableBrowseButton())},fluid.uploader.setStateDone=function(that){fluid.uploader.disableElement(that,that.locate("uploadButton")),fluid.uploader.hideElement(that,that.locate("pauseButton")),fluid.uploader.showElement(that,that.locate("uploadButton")),fluid.uploader.enableBrowseButton(that)},fluid.uploader.setStateLoaded=function(that){that.locate("browseButtonText").text(that.options.strings.buttons.addMore),that.locate("browseButton").addClass(that.options.styles.browseButton),fluid.uploader.hideElement(that,that.locate("pauseButton")),fluid.uploader.showElement(that,that.locate("uploadButton")),fluid.uploader.enableElement(that,that.locate("uploadButton")),fluid.uploader.hideElement(that,that.locate("instructions")),that.totalProgress.hide(),fluid.uploader.enableBrowseButton(that)},fluid.uploader.setStateUploading=function(that){that.totalProgress.hide(!1,!1),fluid.uploader.setTotalProgressStyle(that),fluid.uploader.hideElement(that,that.locate("uploadButton")),fluid.uploader.disableElement(that,that.locate("browseButton")),that.strategy.local.disableBrowseButton(),fluid.uploader.enableElement(that,that.locate("pauseButton")),fluid.uploader.showElement(that,that.locate("pauseButton"))},fluid.uploader.setStateFull=function(that){that.locate("browseButtonText").text(that.options.strings.buttons.addMore),that.locate("browseButton").addClass(that.options.styles.browseButton),fluid.uploader.hideElement(that,that.locate("pauseButton")),fluid.uploader.showElement(that,that.locate("uploadButton")),fluid.uploader.enableElement(that,that.locate("uploadButton")),fluid.uploader.disableElement(that,that.locate("browseButton")),that.strategy.local.disableBrowseButton(),fluid.uploader.hideElement(that,that.locate("instructions")),that.totalProgress.hide()},fluid.uploader.renderUploadTotalMessage=function(that){var numReadyFiles=that.queue.getReadyFiles().length,bytesReadyFiles=that.queue.sizeOfReadyFiles(),fileLabelStr=fluid.uploader.fileOrFiles(that,numReadyFiles),totalCount=that.queue.files.length,noFilesMsg=that.options.strings.progress.noFiles,totalStateStr=fluid.stringTemplate(that.options.strings.progress.toUploadLabel,{fileCount:numReadyFiles,fileLabel:fileLabelStr,totalBytes:fluid.uploader.formatFileSize(bytesReadyFiles),uploadedCount:that.queue.getUploadedFiles().length,uploadedSize:fluid.uploader.formatFileSize(that.queue.sizeOfUploadedFiles()),totalCount:totalCount,totalSize:fluid.uploader.formatFileSize(that.queue.totalBytes())});!totalCount&&noFilesMsg&&(totalStateStr=noFilesMsg),that.locate("totalFileStatusText").html(totalStateStr)},fluid.uploader.renderFileUploadLimit=function(that){if(0<that.options.queueSettings.fileUploadLimit){var fileUploadLimitText=fluid.stringTemplate(that.options.strings.progress.fileUploadLimitLabel,{fileUploadLimit:that.options.queueSettings.fileUploadLimit,fileLabel:fluid.uploader.fileOrFiles(that,that.options.queueSettings.fileUploadLimit)});that.locate("fileUploadLimitText").html(fileUploadLimitText)}},fluid.uploader.formatFileSize=function(bytes){if("number"==typeof bytes){if(0===bytes)return"0.0 KB";if(0<bytes)return bytes<1048576?(Math.ceil(bytes/1024*10)/10).toFixed(1)+" KB":(Math.ceil(bytes/1048576*10)/10).toFixed(1)+" MB"}return""},fluid.uploader.derivePercent=function(num,total){return Math.round(100*num/total)},fluid.uploader.updateTotalProgress=function(that){var batch=that.queue.currentBatch,totalPercent=fluid.uploader.derivePercent(batch.totalBytesUploaded,batch.totalBytes),numFilesInBatch=batch.files.length,fileLabelStr=fluid.uploader.fileOrFiles(that,numFilesInBatch),uploadingSize=batch.totalBytesUploaded+that.queue.sizeOfUploadedFiles(),totalProgressStr=fluid.stringTemplate(that.options.strings.progress.totalProgressLabel,{curFileN:batch.fileIdx,totalFilesN:numFilesInBatch,fileLabel:fileLabelStr,currBytes:fluid.uploader.formatFileSize(batch.totalBytesUploaded),totalBytes:fluid.uploader.formatFileSize(batch.totalBytes),uploadedCount:that.queue.getUploadedFiles().length,uploadedSize:fluid.uploader.formatFileSize(uploadingSize),totalCount:that.queue.files.length,totalSize:fluid.uploader.formatFileSize(that.queue.totalBytes())});that.totalProgress.update(totalPercent,totalProgressStr)},fluid.uploader.updateTotalAtCompletion=function(that){var numErroredFiles=that.queue.getErroredFiles().length,numTotalFiles=that.queue.files.length,fileLabelStr=fluid.uploader.fileOrFiles(that,numTotalFiles),errorStr="";if(0<numErroredFiles){var errorLabelString=1===numErroredFiles?that.options.strings.progress.singleError:that.options.strings.progress.pluralErrors;fluid.uploader.setTotalProgressStyle(that,!0),errorStr=fluid.stringTemplate(that.options.strings.progress.numberOfErrors,{errorsN:numErroredFiles,errorLabel:errorLabelString})}var totalProgressStr=fluid.stringTemplate(that.options.strings.progress.completedLabel,{curFileN:that.queue.getUploadedFiles().length,totalFilesN:numTotalFiles,errorString:errorStr,fileLabel:fileLabelStr,totalCurrBytes:fluid.uploader.formatFileSize(that.queue.sizeOfUploadedFiles()),uploadedCount:that.queue.getUploadedFiles().length,uploadedSize:fluid.uploader.formatFileSize(that.queue.sizeOfUploadedFiles()),totalCount:that.queue.files.length,totalSize:fluid.uploader.formatFileSize(that.queue.totalBytes())});that.totalProgress.update(100,totalProgressStr)},fluid.uploader.updateStateAfterFileDialog=function(that){var queueLength=that.queue.getReadyFiles().length;0<queueLength&&(fluid.uploader[queueLength===that.options.queueSettings.fileUploadLimit?"setStateFull":"setStateLoaded"](that),fluid.uploader.renderUploadTotalMessage(that),that.locate(that.options.focusWithEvent.afterFileDialog).focus())},fluid.uploader.updateStateAfterFileRemoval=function(that){fluid.uploader[0===that.queue.getReadyFiles().length?"setStateEmpty":"setStateLoaded"](that),fluid.uploader.renderUploadTotalMessage(that)},fluid.uploader.updateStateAfterCompletion=function(that){fluid.uploader[0===that.queue.getReadyFiles().length?"setStateDone":"setStateLoaded"](that),fluid.uploader.updateTotalAtCompletion(that)},fluid.uploader.uploadNextOrFinish=function(that){that.queue.shouldUploadNextFile()?that.strategy.remote.uploadNextFile():(that.events.afterUploadComplete.fire(that.queue.currentBatch.files),that.queue.clearCurrentBatch())},fluid.uploader.onFileStart=function(file,queue){file.filestatus=fluid.uploader.fileStatusConstants.IN_PROGRESS,queue.startFile()},fluid.uploader.onFileProgress=function(that,currentBytes){that.queue.updateBatchStatus(currentBytes),fluid.uploader.updateTotalProgress(that)},fluid.uploader.onFileComplete=function(file,that){that.queue.finishFile(file),that.events.afterFileComplete.fire(file),fluid.uploader.uploadNextOrFinish(that)},fluid.uploader.onFileSuccess=function(file,that){file.filestatus=fluid.uploader.fileStatusConstants.COMPLETE,0===that.queue.currentBatch.bytesUploadedForFile&&(that.queue.currentBatch.totalBytesUploaded+=file.size),fluid.uploader.updateTotalProgress(that)},fluid.uploader.onFileError=function(file,error,that){error===fluid.uploader.errorConstants.UPLOAD_STOPPED?file.filestatus=fluid.uploader.fileStatusConstants.CANCELLED:(file.filestatus=fluid.uploader.fileStatusConstants.ERROR,that.queue.isUploading&&(that.queue.currentBatch.totalBytesUploaded+=file.size,that.queue.currentBatch.numFilesErrored++,fluid.uploader.uploadNextOrFinish(that)))},fluid.uploader.afterUploadComplete=function(that){that.queue.isUploading=!1,fluid.uploader.updateStateAfterCompletion(that)},fluid.defaults("fluid.uploader",{gradeNames:["fluid.viewComponent","fluid.contextAware"],contextAwareness:{technology:{defaultGradeNames:"fluid.uploader.singleFile"},liveness:{priority:"before:technology",checks:{localDemoOption:{contextValue:"{uploader}.options.demo",gradeNames:"fluid.uploader.demo"}},defaultGradeNames:"fluid.uploader.live"}}}),fluid.defaults("fluid.uploader.builtinStrategyDistributor",{gradeNames:["fluid.component"],distributeOptions:{record:{contextValue:"{fluid.browser.supportsBinaryXHR}",gradeNames:"fluid.uploader.html5"},target:"{/ fluid.uploader}.options.contextAwareness.technology.checks.supportsBinaryXHR"}}),fluid.constructSingle([],"fluid.uploader.builtinStrategyDistributor"),fluid.uploader.browse=function(queue,localStrategy){queue.isUploading||localStrategy.browse()},fluid.uploader.removeFile=function(queue,localStrategy,afterFileRemoved,file){queue.removeFile(file),localStrategy.removeFile(file),afterFileRemoved.fire(file)},fluid.uploader.start=function(queue,remoteStrategy,onUploadStart){queue.start(),onUploadStart.fire(queue.currentBatch.files),remoteStrategy.uploadNextFile()},fluid.uploader.stop=function(remoteStrategy,onUploadStop){onUploadStop.fire(),remoteStrategy.stop()},fluid.uploader.defaultQueueSettings={uploadURL:"",postParams:{},fileSizeLimit:"20480",fileTypes:null,fileTypesDescription:null,fileUploadLimit:0,fileQueueLimit:0},fluid.uploader.bindFocus=function(focusWithEvent,noAutoFocus,events,dom){fluid.each(focusWithEvent,function(element,event){noAutoFocus[event]||events[event].addListener(function(){dom.locate(element).focus()})})},fluid.defaults("fluid.uploader.multiFileUploader",{gradeNames:["fluid.viewComponent"],members:{totalFileStatusTextId:{expander:{funcName:"fluid.allocateSimpleId",args:"{that}.dom.totalFileStatusText"}}},invokers:{browse:{funcName:"fluid.uploader.browse",args:["{that}.queue","{that}.strategy.local"]},removeFile:{funcName:"fluid.uploader.removeFile",args:["{that}.queue","{that}.strategy.local","{that}.events.afterFileRemoved","{arguments}.0"]},start:{funcName:"fluid.uploader.start",args:["{that}.queue","{that}.strategy.remote","{that}.events.onUploadStart"]},stop:{funcName:"fluid.uploader.stop",args:["{that}.strategy.remote","{that}.events.onUploadStop"]}},components:{queue:{type:"fluid.uploader.fileQueue"},strategy:{type:"fluid.uploader.strategy"},errorPanel:{type:"fluid.uploader.errorPanel",container:"{uploader}.dom.errorsPanel",options:{gradeNames:"fluid.uploader.errorPanel.bindUploader"}},fileQueueView:{type:"fluid.uploader.fileQueueView",container:"{uploader}.dom.fileQueue",options:{gradeNames:"fluid.uploader.fileQueueView.bindUploader",members:{queueFiles:"{uploader}.queue.files"},uploaderContainer:"{uploader}.container",strings:{buttons:{remove:"{uploader}.options.strings.buttons.remove"}}}},totalProgress:{type:"fluid.progress",container:"{uploader}.container",options:{selectors:{progressBar:".flc-uploader-queue-footer",displayElement:".flc-uploader-total-progress",label:".flc-uploader-total-progress-text",indicator:".flc-uploader-total-progress",ariaElement:".flc-uploader-total-progress"}}}},queueSettings:fluid.uploader.defaultQueueSettings,demo:!1,selectors:{fileQueue:".flc-uploader-queue",browseButton:".flc-uploader-button-browse",browseButtonText:".flc-uploader-button-browse-text",uploadButton:".flc-uploader-button-upload",pauseButton:".flc-uploader-button-pause",totalFileStatusText:".flc-uploader-total-progress-text",fileUploadLimitText:".flc-uploader-upload-limit-text",instructions:".flc-uploader-browse-instructions",errorsPanel:".flc-uploader-errorsPanel"},noAutoFocus:{afterFileDialog:!0},focusWithEvent:{afterFileDialog:"uploadButton",onUploadStart:"pauseButton",onUploadStop:"uploadButton"},styles:{disabled:"fl-uploader-disabled",hidden:"fl-uploader-hidden",dim:"fl-uploader-dim",totalProgress:"fl-uploader-total-progress-okay",totalProgressError:"fl-uploader-total-progress-errored",browseButton:"fl-uploader-browseMore"},events:{afterReady:null,onFileDialog:null,onFilesSelected:null,onFileQueued:null,afterFileQueued:null,onFileRemoved:null,afterFileRemoved:null,afterFileDialog:null,onUploadStart:null,onUploadStop:null,onFileStart:null,onFileProgress:null,onFileError:null,onQueueError:null,onFileSuccess:null,onFileComplete:null,afterFileComplete:null,afterUploadComplete:null},listeners:{onCreate:[{listener:"fluid.uploader.bindFocus",args:["{that}.options.focusWithEvent","{that}.options.noAutoFocus","{that}.events","{that}.dom"]},{funcName:"fluid.uploader.multiFileUploader.setupMarkup",namespace:"setupMarkup"},{this:"{that}.dom.uploadButton",method:"click",args:"{that}.start"},{this:"{that}.dom.pauseButton",method:"click",args:"{that}.stop"},{this:"{that}.dom.totalFileStatusText",method:"attr",args:[{role:"log","aria-live":"assertive","aria-relevant":"text","aria-atomic":"true"}]},{this:"{that}.dom.fileQueue",method:"attr",args:[{"aria-controls":"{that}.totalFileStatusTextId","aria-labelledby":"{that}.totalFileStatusTextId"}]}],"afterFileDialog.uploader":{listener:"fluid.uploader.updateStateAfterFileDialog",args:"{that}"},"afterFileQueued.uploader":{listener:"{that}.queue.addFile",args:"{arguments}.0"},"onFileRemoved.uploader":{listener:"{that}.removeFile",args:"{arguments}.0"},"afterFileRemoved.uploader":{listener:"fluid.uploader.updateStateAfterFileRemoval",args:"{that}"},"onUploadStart.uploader":{listener:"fluid.uploader.setStateUploading",args:"{that}"},"onFileStart.uploader":{listener:"fluid.uploader.onFileStart",args:["{arguments}.0","{that}.queue"]},"onFileProgress.uploader":{listener:"fluid.uploader.onFileProgress",args:["{that}","{arguments}.1"]},"onFileComplete.uploader":{listener:"fluid.uploader.onFileComplete",args:["{arguments}.0","{that}"]},"onFileSuccess.uploader":{listener:"fluid.uploader.onFileSuccess",args:["{arguments}.0","{that}"]},"onFileError.uploader":{listener:"fluid.uploader.onFileError",args:["{arguments}.0","{arguments}.1","{that}"]},"afterUploadComplete.uploader":{listener:"fluid.uploader.afterUploadComplete",args:"{that}"}},strings:{progress:{fileUploadLimitLabel:"%fileUploadLimit %fileLabel maximum",noFiles:"0 files",toUploadLabel:"%uploadedCount out of %totalCount files uploaded (%uploadedSize of %totalSize)",totalProgressLabel:"%uploadedCount out of %totalCount files uploaded (%uploadedSize of %totalSize)",completedLabel:"%uploadedCount out of %totalCount files uploaded (%uploadedSize of %totalSize)%errorString",numberOfErrors:", %errorsN %errorLabel",singleFile:"file",pluralFiles:"files",singleError:"error",pluralErrors:"errors"},buttons:{browse:"Browse Files",addMore:"Add More",stopUpload:"Stop Upload",cancelRemaning:"Cancel remaining Uploads",resumeUpload:"Resume Upload",remove:"Remove"}}}),fluid.uploader.multiFileUploader.setupMarkup=function(that){fluid.uploader.disableElement(that,that.locate("uploadButton")),fluid.uploader.renderFileUploadLimit(that);var noFilesMsg=that.options.strings.progress.noFiles;noFilesMsg&&that.locate("totalFileStatusText").text(noFilesMsg)},fluid.defaults("fluid.uploader.strategy",{gradeNames:["fluid.component"],components:{local:{type:"fluid.uploader.local"},remote:{type:"fluid.uploader.remote"}}}),fluid.defaults("fluid.uploader.local",{gradeNames:["fluid.component"],queueSettings:"{uploader}.options.queueSettings",members:{queue:"{uploader}.queue"},events:{onFileDialog:"{uploader}.events.onFileDialog",onFilesSelected:"{uploader}.events.onFilesSelected",afterFileDialog:"{uploader}.events.afterFileDialog",afterFileQueued:"{uploader}.events.afterFileQueued",onQueueError:"{uploader}.events.onQueueError"},invokers:{enableBrowseButton:"fluid.uploader.local.enableBrowseButton",disableBrowseButton:"fluid.uploader.local.disableBrowseButton"}}),fluid.defaults("fluid.uploader.remote",{gradeNames:["fluid.component"],members:{queue:"{uploader}.queue",queueSettings:"{uploader}.options.queueSettings"},events:{onFileStart:"{uploader}.events.onFileStart",onFileProgress:"{uploader}.events.onFileProgress",onFileSuccess:"{uploader}.events.onFileSuccess",onFileError:"{uploader}.events.onFileError",onFileComplete:"{uploader}.events.onFileComplete",onUploadStop:"{uploader}.events.onUploadStop",afterFileComplete:"{uploader}.events.afterFileComplete",afterUploadComplete:"{uploader}.events.afterUploadComplete"},invokers:{uploadNextFile:"fluid.uploader.uploadNextFile",stop:"fluid.uploader.stop"}}),fluid.uploader.queueErrorConstants={QUEUE_LIMIT_EXCEEDED:"queue limit exceeded",FILE_EXCEEDS_SIZE_LIMIT:"file exceeds size limit",ZERO_BYTE_FILE:"zero byte file",INVALID_FILETYPE:"invalid filetype"},fluid.uploader.errorConstants={HTTP_ERROR:"HTTP error",MISSING_UPLOAD_URL:"Missing upload URL",IO_ERROR:"I/O error",SECURITY_ERROR:"Security error",UPLOAD_LIMIT_EXCEEDED:"Upload limit exceeded",UPLOAD_FAILED:"Uploader failed",SPECIFIED_FILE_ID_NOT_FOUND:"Specified file ID not found",FILE_VALIDATION_FAILED:"File validation failed",FILE_CANCELLED:"File cancelled",UPLOAD_STOPPED:"Upload stopped"},fluid.uploader.fileStatusConstants={QUEUED:"queued",IN_PROGRESS:"in progress",ERROR:"error",COMPLETE:"complete",CANCELLED:"cancelled"},fluid.defaults("fluid.uploader.singleFile",{gradeNames:["fluid.viewComponent"],selectors:{basicUpload:".fl-progEnhance-basic"},listeners:{"onCreate.showMarkup":"fluid.uploader.singleFile.showMarkup"}}),fluid.uploader.singleFile.toggleVisibility=function(toShow,toHide){window.opera?(toShow.show().removeClass("hideUploaderForOpera"),toHide.show().addClass("hideUploaderForOpera")):(toShow.show(),toHide.hide())},fluid.uploader.singleFile.showMarkup=function(that){fluid.uploader.singleFile.toggleVisibility($(that.options.selectors.basicUpload),that.container)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.uploader"),fluid.defaults("fluid.uploader.fileQueue",{gradeNames:["fluid.component"],members:{files:[],isUploading:!1},invokers:{start:{funcName:"fluid.uploader.fileQueue.start",args:"{that}"},startFile:{funcName:"fluid.uploader.fileQueue.startFile",args:"{that}.currentBatch"},finishFile:{funcName:"fluid.uploader.fileQueue.finishFile",args:"{that}.currentBatch"},shouldUploadNextFile:{funcName:"fluid.uploader.fileQueue.shouldUploadNextFile",args:"{that}"},addFile:{funcName:"fluid.uploader.fileQueue.addFile",args:["{that}.files","{arguments}.0"]},removeFile:{funcName:"fluid.uploader.fileQueue.removeFile",args:["{that}.files","{arguments}.0"]},totalBytes:{funcName:"fluid.uploader.fileQueue.sizeOfFiles",args:"{that}.files"},getReadyFiles:{funcName:"fluid.uploader.fileQueue.filesByStatus",args:["{that}.files",["QUEUED","CANCELLED"]]},getErroredFiles:{funcName:"fluid.uploader.fileQueue.filesByStatus",args:["{that}.files","ERROR"]},getUploadedFiles:{funcName:"fluid.uploader.fileQueue.filesByStatus",args:["{that}.files","COMPLETE"]},sizeOfReadyFiles:{funcName:"fluid.uploader.fileQueue.sizeOfFilesByStatus",args:["{that}.files",["QUEUED","CANCELLED"]]},sizeOfUploadedFiles:{funcName:"fluid.uploader.fileQueue.sizeOfFilesByStatus",args:["{that}.files","COMPLETE"]},setupCurrentBatch:{funcName:"fluid.uploader.fileQueue.setupCurrentBatch",args:"{that}"},clearCurrentBatch:{funcName:"fluid.uploader.fileQueue.clearCurrentBatch",args:"{that}"},updateCurrentBatch:{funcName:"fluid.uploader.fileQueue.updateCurrentBatch",args:[{expander:{func:"{that}.getReadyFiles"}},"{that}.currentBatch"]},updateBatchStatus:{funcName:"fluid.uploader.fileQueue.updateBatchStatus",args:["{arguments}.0","{that}.currentBatch"]}}}),fluid.uploader.fileQueue.start=function(that){that.setupCurrentBatch(),that.isUploading=!0,that.shouldStop=!1},fluid.uploader.fileQueue.startFile=function(currentBatch){currentBatch.fileIdx++,currentBatch.bytesUploadedForFile=0,currentBatch.previousBytesUploadedForFile=0},fluid.uploader.fileQueue.finishFile=function(currentBatch){currentBatch.numFilesCompleted++},fluid.uploader.fileQueue.shouldUploadNextFile=function(that){return!that.shouldStop&&that.isUploading&&that.currentBatch.numFilesCompleted+that.currentBatch.numFilesErrored<that.currentBatch.files.length},fluid.uploader.fileQueue.addFile=function(files,file){files.push(file)},fluid.uploader.fileQueue.removeFile=function(files,file){fluid.remove_if(files,function(thisFile){return file===thisFile})},fluid.uploader.fileQueue.sizeOfFiles=function(files){return fluid.accumulate(files,function(file,totalBytes){return totalBytes+file.size},0)},fluid.uploader.fileQueue.filterFiles=function(files,filterFn){return fluid.remove_if(fluid.makeArray(files),filterFn,[])},fluid.uploader.fileQueue.filesByStatus=function(files,statuses){return statuses=fluid.makeArray(statuses),fluid.uploader.fileQueue.filterFiles(files,function(file){return fluid.find_if(statuses,function(status){return file.filestatus===fluid.uploader.fileStatusConstants[status]})})},fluid.uploader.fileQueue.sizeOfFilesByStatus=function(files,statuses){return files=fluid.uploader.fileQueue.filesByStatus(files,statuses),fluid.uploader.fileQueue.sizeOfFiles(files)},fluid.uploader.fileQueue.setupCurrentBatch=function(that){that.clearCurrentBatch(),that.updateCurrentBatch()},fluid.uploader.fileQueue.clearCurrentBatch=function(that){that.currentBatch={fileIdx:0,files:[],totalBytes:0,numFilesCompleted:0,numFilesErrored:0,bytesUploadedForFile:0,previousBytesUploadedForFile:0,totalBytesUploaded:0}},fluid.uploader.fileQueue.updateCurrentBatch=function(readyFiles,currentBatch){currentBatch.files=readyFiles,currentBatch.totalBytes=fluid.uploader.fileQueue.sizeOfFiles(readyFiles)},fluid.uploader.fileQueue.updateBatchStatus=function(currentBytes,currentBatch){var byteIncrement=currentBytes-currentBatch.previousBytesUploadedForFile;currentBatch.totalBytesUploaded+=byteIncrement,currentBatch.bytesUploadedForFile+=byteIncrement,currentBatch.previousBytesUploadedForFile=currentBytes}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.uploader.fileQueueView"),fluid.uploader.fileQueueView.rowForFile=function(that,file){return that.container.find("#"+file.id)},fluid.uploader.fileQueueView.errorRowForFile=function(that,file){return $("#"+file.id+"_error",that.container)},fluid.uploader.fileQueueView.fileForRow=function(that,row){return fluid.find_if(that.queueFiles,function(file){return file.id.toString()===row.prop("id")})},fluid.uploader.fileQueueView.progressorForFile=function(that,file){var progressId=file.id+"_progress";return that.fileProgressors[progressId]},fluid.uploader.fileQueueView.startFileProgress=function(that,file){var fileRowElm=fluid.uploader.fileQueueView.rowForFile(that,file);that.scroller.scrollTo(fileRowElm);var fileProgressor=fluid.uploader.fileQueueView.progressorForFile(that,file);fileProgressor.refreshView(),fileProgressor.show()},fluid.uploader.fileQueueView.updateFileProgress=function(that,file,fileBytesComplete,fileTotalBytes){var filePercent=fluid.uploader.derivePercent(fileBytesComplete,fileTotalBytes),filePercentStr=filePercent+"%";fluid.uploader.fileQueueView.progressorForFile(that,file).update(filePercent,filePercentStr)},fluid.uploader.fileQueueView.hideFileProgress=function(that,file){var fileRowElm=fluid.uploader.fileQueueView.rowForFile(that,file);fluid.uploader.fileQueueView.progressorForFile(that,file).hide(),file.filestatus===fluid.uploader.fileStatusConstants.COMPLETE&&that.locate("fileIconBtn",fileRowElm).removeClass(that.options.styles.dim)},fluid.uploader.fileQueueView.removeFileProgress=function(that,file){var fileProgressor=fluid.uploader.fileQueueView.progressorForFile(that,file);fileProgressor&&fileProgressor.displayElement.remove()},fluid.uploader.fileQueueView.animateRowRemoval=function(that,row){row.fadeOut("fast",function(){row.remove(),that.refreshView()})},fluid.uploader.fileQueueView.removeFileErrorRow=function(that,file){file.filestatus===fluid.uploader.fileStatusConstants.ERROR&&fluid.uploader.fileQueueView.animateRowRemoval(that,fluid.uploader.fileQueueView.errorRowForFile(that,file))},fluid.uploader.fileQueueView.removeFileAndRow=function(that,file,row){fluid.uploader.fileQueueView.removeFileProgress(that,file),fluid.uploader.fileQueueView.removeFileErrorRow(that,file),that.events.onFileRemoved.fire(file),fluid.uploader.fileQueueView.animateRowRemoval(that,row)},fluid.uploader.fileQueueView.removeFileForRow=function(that,row){var file=fluid.uploader.fileQueueView.fileForRow(that,row);file&&file.filestatus!==fluid.uploader.fileStatusConstants.COMPLETE&&fluid.uploader.fileQueueView.removeFileAndRow(that,file,row)},fluid.uploader.fileQueueView.removeRowForFile=function(that,file){var row=fluid.uploader.fileQueueView.rowForFile(that,file);fluid.uploader.fileQueueView.removeFileAndRow(that,file,row)},fluid.uploader.fileQueueView.bindHover=function(row,styles){row.hover(function(){row.hasClass(styles.ready)&&!row.hasClass(styles.uploading)&&row.addClass(styles.hover)},function(){row.hasClass(styles.ready)&&!row.hasClass(styles.uploading)&&row.removeClass(styles.hover)})},fluid.uploader.fileQueueView.bindDeleteKey=function(that,row){fluid.activatable(row,null,{additionalBindings:[{key:$.ui.keyCode.DELETE,activateHandler:function(){fluid.uploader.fileQueueView.removeFileForRow(that,row)}}]})},fluid.uploader.fileQueueView.bindRowHandlers=function(that,row){$.browser.msie&&$.browser.version<7&&fluid.uploader.fileQueueView.bindHover(row,that.options.styles),that.locate("fileIconBtn",row).click(function(){fluid.uploader.fileQueueView.removeFileForRow(that,row)}),fluid.uploader.fileQueueView.bindDeleteKey(that,row)},fluid.uploader.fileQueueView.renderRowFromTemplate=function(that,file){var row=that.rowTemplate.clone(),fileName=file.name,fileSize=fluid.uploader.formatFileSize(file.size);row.removeClass(that.options.styles.hiddenTemplate),that.locate("fileName",row).text(fileName),that.locate("fileSize",row).text(fileSize);var fileIconBtn=that.locate("fileIconBtn",row);return fileIconBtn.addClass(that.options.styles.remove),fluid.updateAriaLabel(fileIconBtn,that.options.strings.buttons.remove),row.prop("id",file.id),row.addClass(that.options.styles.ready),fluid.uploader.fileQueueView.bindRowHandlers(that,row),fluid.updateAriaLabel(row,fileName+" "+fileSize),row},fluid.uploader.fileQueueView.createProgressorFromTemplate=function(that,row){var rowProgressor=that.rowProgressorTemplate.clone(),rowId=row.prop("id"),progressId=rowId+"_progress";rowProgressor.prop("id",progressId),rowProgressor.css("top",row.position().top),rowProgressor.height(row.height()).width(5),that.container.after(rowProgressor),that.fileProgressors[progressId]=fluid.progress(that.options.uploaderContainer,{selectors:{progressBar:"#"+rowId,displayElement:"#"+progressId,label:"#"+progressId+" .fl-uploader-file-progress-text",indicator:"#"+progressId}})},fluid.uploader.fileQueueView.addFile=function(that,file){var row=fluid.uploader.fileQueueView.renderRowFromTemplate(that,file);$.browser.msie&&8<=$.browser.version||row.hide(),that.container.append(row),row.attr("title",that.options.strings.status.remove),row.fadeIn("slow"),fluid.uploader.fileQueueView.createProgressorFromTemplate(that,row),that.refreshView(),that.scroller.scrollTo("max")},fluid.uploader.fileQueueView.enableRows=function(rows,state){for(var i=0;i<rows.length;i++)fluid.enabled(rows[i],state)},fluid.uploader.fileQueueView.prepareForUpload=function(that){var rowButtons=that.locate("fileIconBtn",that.locate("fileRows"));rowButtons.prop("disabled",!0),rowButtons.addClass(that.options.styles.dim),fluid.uploader.fileQueueView.enableRows(that.locate("fileRows"),!1)},fluid.uploader.fileQueueView.refreshAfterUpload=function(that){var rows=that.locate("fileRows"),rowButtons=that.locate("fileIconBtn",rows);rowButtons.each(function(index,rowButton){$(rowButton).prop("disabled",rows.eq(index).hasClass(that.options.styles.uploaded))}),rowButtons.removeClass(that.options.styles.dim),fluid.uploader.fileQueueView.enableRows(that.locate("fileRows"),!0)},fluid.uploader.fileQueueView.changeRowState=function(that,row,newState){row.removeClass(that.options.styles.ready).removeClass(that.options.styles.error).addClass(newState)},fluid.uploader.fileQueueView.markRowAsComplete=function(that,file){var row=fluid.uploader.fileQueueView.rowForFile(that,file);fluid.uploader.fileQueueView.changeRowState(that,row,that.options.styles.uploaded),row.attr("title",that.options.strings.status.success),fluid.enabled(row,!1);var rowButton=that.locate("fileIconBtn",row);rowButton.off("click"),rowButton.removeClass(that.options.styles.remove),rowButton.attr("title",that.options.strings.status.success)},fluid.uploader.fileQueueView.renderErrorInfoFromTemplate=function(that,fileRow,error){var errorRow=that.errorInfoTemplate.clone();errorRow.prop("id",fileRow.prop("id")+"_error");var errorType=fluid.keyForValue(fluid.uploader.errorConstants,error),errorMsg=that.options.strings.errors[errorType];that.locate("errorText",errorRow).text(errorMsg),that.locate("fileName",fileRow).after(errorRow),that.scroller.scrollTo(errorRow)},fluid.uploader.fileQueueView.showErrorForFile=function(that,file,error){if(fluid.uploader.fileQueueView.hideFileProgress(that,file),file.filestatus===fluid.uploader.fileStatusConstants.ERROR){var fileRowElm=fluid.uploader.fileQueueView.rowForFile(that,file);fluid.uploader.fileQueueView.changeRowState(that,fileRowElm,that.options.styles.error),fluid.uploader.fileQueueView.renderErrorInfoFromTemplate(that,fileRowElm,error)}},fluid.uploader.fileQueueView.addKeyboardNavigation=function(that){fluid.tabbable(that.container),that.selectableContext=fluid.selectable(that.container,{selectableSelector:that.options.selectors.fileRows,onSelect:function(itemToSelect){$(itemToSelect).addClass(that.options.styles.selected)},onUnselect:function(selectedItem){$(selectedItem).removeClass(that.options.styles.selected)}})},fluid.uploader.fileQueueView.prepareTemplateElements=function(that){that.errorInfoTemplate=that.locate("errorInfoTemplate").remove(),that.errorInfoTemplate.removeClass(that.options.styles.hiddenTemplate),that.rowTemplate=that.locate("rowTemplate").remove(),that.rowProgressorTemplate=that.locate("rowProgressorTemplate",that.options.uploaderContainer).remove()},fluid.uploader.fileQueueView.markFileComplete=function(that,file){fluid.uploader.fileQueueView.progressorForFile(that,file).update(100,"100%"),fluid.uploader.fileQueueView.markRowAsComplete(that,file)},fluid.uploader.fileQueueView.refreshView=function(that){that.selectableContext.refresh(),that.scroller.refreshView()},fluid.defaults("fluid.uploader.fileQueueView",{gradeNames:["fluid.viewComponent"],mergePolicy:{},members:{fileProgressors:{}},invokers:{addFile:{funcName:"fluid.uploader.fileQueueView.addFile",args:["{that}","{arguments}.0"]},removeFile:{funcName:"fluid.uploader.fileQueueView.removeRowForFile",args:["{that}","{arguments}.0"]},prepareForUpload:{funcName:"fluid.uploader.fileQueueView.prepareForUpload",args:"{that}"},refreshAfterUpload:{funcName:"fluid.uploader.fileQueueView.refreshAfterUpload",args:"{that}"},showFileProgress:{funcName:"fluid.uploader.fileQueueView.startFileProgress",args:["{that}","{arguments}.0"]},updateFileProgress:{funcName:"fluid.uploader.fileQueueView.updateFileProgress",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},markFileComplete:{funcName:"fluid.uploader.fileQueueView.markFileComplete",args:["{that}","{arguments}.0"]},showErrorForFile:{funcName:"fluid.uploader.fileQueueView.showErrorForFile",args:["{that}","{arguments}.0","{arguments}.1"]},hideFileProgress:{funcName:"fluid.uploader.fileQueueView.hideFileProgress",args:["{that}","{arguments}.0"]},refreshView:{funcName:"fluid.uploader.fileQueueView.refreshView",args:"{that}"}},components:{scroller:{type:"fluid.scrollableTable",container:"{fileQueueView}.container"}},selectors:{fileRows:".flc-uploader-file",fileName:".flc-uploader-file-name",fileSize:".flc-uploader-file-size",fileIconBtn:".flc-uploader-file-action",errorText:".flc-uploader-file-error",rowTemplate:".flc-uploader-file-tmplt",errorInfoTemplate:".flc-uploader-file-error-tmplt",rowProgressorTemplate:".flc-uploader-file-progressor-tmplt"},styles:{hover:"fl-uploader-file-hover",selected:"fl-uploader-file-focus",ready:"fl-uploader-file-state-ready",uploading:"fl-uploader-file-state-uploading",uploaded:"fl-uploader-file-state-uploaded",error:"fl-uploader-file-state-error",remove:"fl-uploader-file-action-remove",dim:"fl-uploader-dim",hiddenTemplate:"fl-uploader-hidden-templates"},strings:{progress:{toUploadLabel:"To upload: %fileCount %fileLabel (%totalBytes)",singleFile:"file",pluralFiles:"files"},status:{success:"File Uploaded",error:"File Upload Error",remove:"Press Delete key to remove file"},errors:{HTTP_ERROR:"File upload error: a network error occured or the file was rejected (reason unknown).",IO_ERROR:"File upload error: a network error occured.",UPLOAD_LIMIT_EXCEEDED:"File upload error: you have uploaded as many files as you are allowed during this session",UPLOAD_FAILED:"File upload error: the upload failed for an unknown reason.",QUEUE_LIMIT_EXCEEDED:"You have as many files in the queue as can be added at one time. Removing files from the queue may allow you to add different files.",FILE_EXCEEDS_SIZE_LIMIT:"One or more of the files that you attempted to add to the queue exceeded the limit of %fileSizeLimit.",ZERO_BYTE_FILE:"One or more of the files that you attempted to add contained no data.",INVALID_FILETYPE:"One or more files were not added to the queue because they were of the wrong type."},buttons:{remove:"Remove"}},events:{onFileRemoved:null},listeners:{"onCreate.prepareTemplateElement":"fluid.uploader.fileQueueView.prepareTemplateElements","onCreate.addKeyboardNavigation":"fluid.uploader.fileQueueView.addKeyboardNavigation","onCreate.addAriaRole":{this:"{that}.container",method:"attr",args:{role:"application"}}}}),fluid.defaults("fluid.uploader.fileQueueView.bindUploader",{events:{onFileRemoved:"{uploader}.events.onFileRemoved"},listeners:{"{uploader}.events.afterFileQueued":"{fileQueueView}.addFile","{uploader}.events.onUploadStart":"{fileQueueView}.prepareForUpload","{uploader}.events.onFileStart":"{fileQueueView}.showFileProgress","{uploader}.events.onFileProgress":"{fileQueueView}.updateFileProgress","{uploader}.events.onFileSuccess":"{fileQueueView}.markFileComplete","{uploader}.events.onFileError":"{fileQueueView}.showErrorForFile","{uploader}.events.afterFileComplete":"{fileQueueView}.hideFileProgress","{uploader}.events.afterUploadComplete":"{fileQueueView}.refreshAfterUpload"}}),fluid.registerNamespace("fluid.scrollable"),fluid.scrollable.makeSimple=function(element){return fluid.container(element)},fluid.scrollable.makeTable=function(table,wrapperMarkup){return table.wrap(wrapperMarkup),table.closest(".fl-scrollable-scroller")},fluid.defaults("fluid.scrollable",{gradeNames:["fluid.viewComponent"],makeScrollableFn:fluid.scrollable.makeSimple,members:{scrollable:{expander:{func:"{that}.options.makeScrollableFn",args:["{that}.container","{that}.options.wrapperMarkup"]}},maxHeight:{expander:{this:"{that}.scrollable",method:"css",args:"max-height"}}},invokers:{scrollTo:{this:"{that}.scrollable",method:"scrollTo",args:"{arguments}.0"},refreshView:{funcName:"fluid.scrollable.refreshView",args:"{that}"}},listeners:{onCreate:"{that}.refreshView"}}),fluid.scrollable.refreshView=function(that){$.browser.msie&&"6.0"===$.browser.version&&(that.scrollable.css("height",""),that.scrollable.height()>=parseInt(that.maxHeight,10)&&that.scrollable.css("height",that.maxHeight))},fluid.defaults("fluid.scrollableTable",{gradeNames:["fluid.scrollable"],makeScrollableFn:fluid.scrollable.makeTable,wrapperMarkup:"<div class='fl-scrollable-scroller'><div class='fl-scrollable-inner'></div></div>"})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.uploader.errorPanel",{gradeNames:["fluid.viewComponent","fluid.contextAware"],invokers:{refreshView:"fluid.uploader.errorPanel.refreshView({that})"},events:{afterRender:null},components:{fileSizeErrorSection:{type:"fluid.uploader.errorPanel.section",createOnEvent:"afterRender",container:"{errorPanel}.dom.fileSizeErrorSection",options:{model:{errorCode:fluid.uploader.queueErrorConstants.FILE_EXCEEDS_SIZE_LIMIT},strings:{header:"{errorPanel}.options.strings.exceedsFileSize"}}},numFilesErrorSection:{type:"fluid.uploader.errorPanel.section",createOnEvent:"afterRender",container:"{errorPanel}.dom.numFilesErrorSection",options:{model:{errorCode:fluid.uploader.queueErrorConstants.QUEUE_LIMIT_EXCEEDED},strings:{header:"{errorPanel}.options.strings.exceedsNumFilesLimit"}}}},selectors:{header:".flc-uploader-errorPanel-header",sectionTemplate:".flc-uploader-errorPanel-section-tmplt",fileSizeErrorSection:".flc-uploader-errorPanel-section-fileSize",numFilesErrorSection:".flc-uploader-errorPanel-section-numFiles"},strings:{headerText:"Warning(s)",exceedsNumFilesLimit:"Too many files were selected. %numFiles were not added to the queue.",exceedsFileSize:"%numFiles files were too large and were not added to the queue."},listeners:{"onCreate.renderSectionTemplates":{funcName:"fluid.uploader.errorPanel.renderSectionTemplates",args:"{that}",priority:"before:domComplete"},"onCreate.domComplete":{funcName:"fluid.uploader.errorPanel.domComplete",args:"{that}"}},styles:{hiddenTemplate:"fl-hidden-templates"}}),fluid.uploader.errorPanel.refreshView=function(that){for(var i=0;i<that.sections.length;i++)if(0<that.sections[i].model.files.length)return void that.container.show();that.container.hide()},fluid.uploader.errorPanel.renderSectionTemplates=function(that){var sectionTmpl=that.locate("sectionTemplate").remove().removeClass(that.options.styles.hiddenTemplate);that.locate("fileSizeErrorSection").append(sectionTmpl.clone()),that.locate("numFilesErrorSection").append(sectionTmpl.clone()),that.events.afterRender.fire(that)},fluid.uploader.errorPanel.domComplete=function(that){that.sections=[that.fileSizeErrorSection,that.numFilesErrorSection],that.locate("header").text(that.options.strings.headerText),that.container.hide()},fluid.defaults("fluid.uploader.errorPanel.bindUploader",{listeners:{"{uploader}.events.afterFileDialog":"{errorPanel}.refreshView"},distributeOptions:{target:"{that fluid.uploader.errorPanel.section}.options.listeners",record:{"{uploader}.events.onQueueError":"{section}.addFile","{uploader}.events.onFilesSelected":"{section}.clear","{uploader}.events.onUploadStart":"{section}.clear","{section}.events.afterErrorsCleared":"{errorPanel}.refreshView"}}}),fluid.defaults("fluid.uploader.errorPanel.section",{gradeNames:["fluid.viewComponent"],model:{errorCode:void 0,files:[],showingDetails:!1},events:{afterErrorsCleared:null},selectors:{errorTitle:".fl-uploader-errorPanel-section-title",deleteErrorButton:".flc-uploader-errorPanel-section-removeButton",errorDetails:".flc-uploader-errorPanel-section-details",erroredFiles:".flc-uploader-errorPanel-section-files",showHideFilesToggle:".flc-uploader-errorPanel-section-toggleDetails"},strings:{hideFiles:"Hide files",showFiles:"Show files",fileListDelimiter:", "},invokers:{toggleDetails:"fluid.uploader.errorPanel.section.toggleDetails({that})",showDetails:"fluid.uploader.errorPanel.section.showDetails({that})",hideDetails:"fluid.uploader.errorPanel.section.hideDetails({that})",addFile:"fluid.uploader.errorPanel.section.addFile({that}, {arguments}.0, {arguments}.1)",clear:"fluid.uploader.errorPanel.section.clear({that})",refreshView:"fluid.uploader.errorPanel.section.refreshView({that})"},listeners:{"onCreate.bindHandlers":{funcName:"fluid.uploader.errorPanel.section.bindHandlers",priority:"after:refreshView"},"onCreate.refreshView":"{that}.refreshView"}}),fluid.uploader.errorPanel.section.toggleDetails=function(that){(that.model.showingDetails?that.hideDetails:that.showDetails)()},fluid.uploader.errorPanel.section.showDetails=function(that){that.locate("errorDetails").show(),that.locate("showHideFilesToggle").text(that.options.strings.hideFiles),that.model.showingDetails=!0},fluid.uploader.errorPanel.section.hideDetails=function(that){that.locate("errorDetails").hide(),that.locate("showHideFilesToggle").text(that.options.strings.showFiles),that.model.showingDetails=!1},fluid.uploader.errorPanel.section.addFile=function(that,file,errorCode){errorCode===that.model.errorCode&&(that.model.files.push(file.name),that.refreshView())},fluid.uploader.errorPanel.section.clear=function(that){that.model.files=[],that.refreshView(),that.events.afterErrorsCleared.fire()},fluid.uploader.errorPanel.section.refreshView=function(that){fluid.uploader.errorPanel.section.renderHeader(that),fluid.uploader.errorPanel.section.renderErrorDetails(that),that.hideDetails(),that.model.files.length<=0?that.container.hide():that.container.show()},fluid.uploader.errorPanel.section.bindHandlers=function(that){that.locate("deleteErrorButton").click(that.clear),that.locate("showHideFilesToggle").click(that.toggleDetails)},fluid.uploader.errorPanel.section.renderHeader=function(that){var errorTitle=fluid.stringTemplate(that.options.strings.header,{numFiles:that.model.files.length});that.locate("errorTitle").text(errorTitle)},fluid.uploader.errorPanel.section.renderErrorDetails=function(that){var files=that.model.files,filesList=0<files.length?files.join(that.options.strings.fileListDelimiter):"";that.locate("erroredFiles").text(filesList)}}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.defaults("fluid.uploader.html5",{gradeNames:"fluid.uploader.multiFileUploader",components:{strategy:{type:"fluid.uploader.html5Strategy"}}}),fluid.defaults("fluid.uploader.html5Strategy",{gradeNames:["fluid.uploader.strategy"],components:{local:{type:"fluid.uploader.html5Strategy.local"},remote:{type:"fluid.uploader.html5Strategy.remote"}}}),fluid.registerNamespace("fluid.uploader.html5.browser"),fluid.uploader.html5.browser.isMS=!!navigator.msLaunchUri,fluid.uploader.html5Strategy.fileSuccessHandler=function(file,events,xhr){events.onFileSuccess.fire(file,xhr.responseText,xhr),events.onFileComplete.fire(file)},fluid.uploader.html5Strategy.fileErrorHandler=function(file,events,xhr){events.onFileError.fire(file,fluid.uploader.errorConstants.UPLOAD_FAILED,xhr.status,xhr),events.onFileComplete.fire(file)},fluid.uploader.html5Strategy.fileStopHandler=function(file,events,xhr){events.onFileError.fire(file,fluid.uploader.errorConstants.UPLOAD_STOPPED,xhr.status,xhr),events.onFileComplete.fire(file)},fluid.uploader.html5Strategy.monitorFileUploadXHR=function(file,events,xhr){xhr.onreadystatechange=function(){if(4===xhr.readyState){var status=xhr.status;200<=status&&status<=204?fluid.uploader.html5Strategy.fileSuccessHandler(file,events,xhr):0===status?fluid.uploader.html5Strategy.fileStopHandler(file,events,xhr):fluid.uploader.html5Strategy.fileErrorHandler(file,events,xhr)}},xhr.upload.onprogress=function(pe){events.onFileProgress.fire(file,pe.loaded,pe.total)}},fluid.uploader.html5Strategy.uploadNextFile=function(queue,uploadFile){var batch=queue.currentBatch;uploadFile(batch.files[batch.fileIdx])},fluid.uploader.html5Strategy.uploadFile=function(that,file){that.events.onFileStart.fire(file),that.currentXHR=that.createXHR(),fluid.uploader.html5Strategy.monitorFileUploadXHR(file,that.events,that.currentXHR),that.fileSender.send(file,that.queueSettings,that.currentXHR)},fluid.uploader.html5Strategy.stop=function(that){that.queue.isUploading=!1,that.currentXHR.abort(),that.events.onUploadStop.fire()},fluid.defaults("fluid.uploader.html5Strategy.remote",{gradeNames:["fluid.uploader.remote"],components:{fileSender:{type:"fluid.uploader.html5Strategy.fileSender"}},invokers:{createXHR:"fluid.uploader.html5Strategy.createXHR",uploadNextFile:{funcName:"fluid.uploader.html5Strategy.uploadNextFile",args:["{that}.queue","{that}.uploadFile"]},uploadFile:{funcName:"fluid.uploader.html5Strategy.uploadFile",args:["{that}","{arguments}.0"]},stop:{funcName:"fluid.uploader.html5Strategy.stop",args:["{that}"]}}}),fluid.uploader.html5Strategy.createXHR=function(){return new XMLHttpRequest},fluid.uploader.html5Strategy.createFormData=function(){return new FormData},fluid.uploader.html5Strategy.setPostParams=function(formData,postParams){$.each(postParams,function(key,value){formData.append(key,value)})},fluid.defaults("fluid.uploader.html5Strategy.fileSender",{gradeNames:["fluid.component","fluid.contextAware"],invokers:{send:{funcName:"fluid.fail",args:"Error instantiating HTML5 Uploader - browser does not support FormData feature. Please try version 1.4 or earlier of Uploader which has Firefox 3.x support"}},contextAwareness:{technology:{checks:{formData:{contextValue:"{fluid.browser.supportsFormData}",gradeNames:"fluid.uploader.html5Strategy.formDataSender"}}}}}),fluid.defaults("fluid.uploader.html5Strategy.formDataSender",{gradeNames:["fluid.component"],invokers:{createFormData:"fluid.uploader.html5Strategy.createFormData",send:{funcName:"fluid.uploader.html5Strategy.sendFormData",args:["{that}.createFormData","{arguments}.0","{arguments}.1","{arguments}.2"]}}}),fluid.uploader.html5Strategy.sendFormData=function(formCreator,file,queueSettings,xhr){var formData=formCreator();return formData.append("file",file),fluid.uploader.html5Strategy.setPostParams(formData,queueSettings.postParams),xhr.open("POST",queueSettings.uploadURL,!0),xhr.send(formData),formData},fluid.defaults("fluid.uploader.html5Strategy.local",{gradeNames:["fluid.uploader.local"],invokers:{addFiles:{funcName:"fluid.uploader.html5Strategy.local.addFiles",args:["{that}","{arguments}.0"]},removeFile:"fluid.identity",enableBrowseButton:"{that}.browseButtonView.enable",disableBrowseButton:"{that}.browseButtonView.disable"},components:{browseButtonView:{type:"fluid.uploader.html5Strategy.browseButtonView",container:"{uploader}.container",options:{strings:"{uploader}.options.strings.buttons",queueSettings:"{uploader}.options.queueSettings",selectors:{browseButton:"{uploader}.options.selectors.browseButton"},events:{onBrowse:"{local}.events.onFileDialog"},listeners:{onFilesQueued:"{local}.addFiles"}}}}}),fluid.uploader.html5Strategy.local.addFiles=function(that,files){var queueSettings=that.options.queueSettings,sizeLimit=1024*queueSettings.fileSizeLimit,fileLimit=queueSettings.fileUploadLimit,remainingUploadLimit=fileLimit-that.queue.getUploadedFiles().length-that.queue.getReadyFiles().length;that.events.onFilesSelected.fire(files.length);for(var numFilesAdded=0,i=0;i<files.length;i++){var file=files[i];fileLimit&&0===remainingUploadLimit?that.events.onQueueError.fire(file,fluid.uploader.queueErrorConstants.QUEUE_LIMIT_EXCEEDED):file.size>sizeLimit?(file.filestatus=fluid.uploader.fileStatusConstants.ERROR,that.events.onQueueError.fire(file,fluid.uploader.queueErrorConstants.FILE_EXCEEDS_SIZE_LIMIT)):(!fileLimit||0<remainingUploadLimit)&&(file.id="file-"+fluid.allocateGuid(),file.filestatus=fluid.uploader.fileStatusConstants.QUEUED,that.events.afterFileQueued.fire(file),remainingUploadLimit--,numFilesAdded++)}that.events.afterFileDialog.fire(numFilesAdded)},fluid.uploader.bindEventsToFileInput=function(that,fileInput){fileInput.click(function(){that.events.onBrowse.fire()}),fluid.uploader.html5.browser.isMS&&fileInput.on("keydown",function(event){event.keyCode===$.ui.keyCode.ENTER&&(event.preventDefault(),fileInput.trigger("click"))}),fileInput.change(function(){var files=fileInput[0].files;that.renderFreshMultiFileInput(),that.events.onFilesQueued.fire(files)}),fileInput.focus(function(){that.browseButton.addClass("focus"),that.events.onFocusFileInput.fire(that,fileInput,!0)}),fileInput.blur(function(){that.browseButton.removeClass("focus"),that.events.onFocusFileInput.fire(that,fileInput,!1)})},fluid.uploader.renderMultiFileInput=function(that){var multiFileInput=$(that.options.multiFileInputMarkup),fileTypes=that.options.queueSettings.fileTypes;return fluid.isArrayable(fileTypes)&&(fileTypes=fileTypes.join(),multiFileInput.attr("accept",fileTypes)),multiFileInput},fluid.uploader.renderFreshMultiFileInput=function(that){var previousInput=that.locate("fileInputs").last();previousInput.hide(),previousInput.prop("tabindex",-1);var newInput=fluid.uploader.renderMultiFileInput(that);newInput.attr("aria-label",that.options.strings.addMore),previousInput.after(newInput),fluid.uploader.bindEventsToFileInput(that,newInput)},fluid.uploader.setupBrowseButtonView=function(that){var multiFileInput=fluid.uploader.renderMultiFileInput(that);multiFileInput.attr("aria-label",that.options.strings.browse),that.browseButton.append(multiFileInput),fluid.uploader.bindEventsToFileInput(that,multiFileInput),that.browseButton.prop("tabindex",-1)},fluid.uploader.isEnabled=function(element){return!element.prop("disabled")},fluid.defaults("fluid.uploader.html5Strategy.browseButtonView",{gradeNames:["fluid.viewComponent"],strings:{browse:"Browse files",addMore:"Add more"},multiFileInputMarkup:"<input type='file' multiple='' class='flc-uploader-html5-input' />",queueSettings:{},members:{browseButton:"{that}.dom.browseButton"},invokers:{enable:{this:"{that}.dom.fileInputs",method:"prop",args:["disabled",!1]},disable:{this:"{that}.dom.fileInputs",method:"prop",args:["disabled",!0]},isEnabled:{funcName:"fluid.uploader.isEnabled",args:"{that}.dom.fileInputs"},renderFreshMultiFileInput:{funcName:"fluid.uploader.renderFreshMultiFileInput",args:"{that}"}},selectors:{browseButton:".flc-uploader-button-browse",fileInputs:".flc-uploader-html5-input"},events:{onFocusFileInput:null,onBrowse:null,onFilesQueued:null},listeners:{onCreate:{funcName:"fluid.uploader.setupBrowseButtonView",args:"{that}"}}})}(jQuery,fluid_3_0_0);fluid_3_0_0=fluid_3_0_0||{};!function($,fluid){"use strict";fluid.registerNamespace("fluid.uploader.demo"),fluid.defaults("fluid.uploader.demo",{distributeOptions:{record:"fluid.uploader.demo.remote",target:"{that strategy remote}.type"}}),fluid.uploader.demo.uploadNextFile=function(that){that.demoState.currentFile=that.queue.files[that.demoState.fileIdx],that.demoState.chunksForCurrentFile=Math.ceil(that.demoState.currentFile/that.demoState.chunkSize),that.demoState.bytesUploaded=0,that.queue.isUploading=!0,that.events.onFileStart.fire(that.demoState.currentFile),fluid.uploader.demo.simulateUpload(that)},fluid.uploader.demo.updateProgress=function(file,events,demoState,isUploading){if(isUploading){var chunk=Math.min(demoState.chunkSize,file.size);demoState.bytesUploaded=Math.min(demoState.bytesUploaded+chunk,file.size),events.onFileProgress.fire(file,demoState.bytesUploaded,file.size)}},fluid.uploader.demo.finishAndContinueOrCleanup=function(that,file){that.queue.finishFile(file),that.events.afterFileComplete.fire(file),that.queue.shouldUploadNextFile()?fluid.uploader.demo.uploadNextFile(that):(that.events.afterUploadComplete.fire(that.queue.currentBatch.files),file.status!==fluid.uploader.fileStatusConstants.CANCELLED&&that.queue.clearCurrentBatch())},fluid.uploader.demo.finishUploading=function(that){if(that.queue.isUploading){var file=that.demoState.currentFile;that.events.onFileSuccess.fire(file),that.demoState.fileIdx++,fluid.uploader.demo.finishAndContinueOrCleanup(that,file)}},fluid.uploader.demo.simulateUpload=function(that){if(that.queue.isUploading){var file=that.demoState.currentFile;that.demoState.bytesUploaded<file.size?fluid.invokeAfterRandomDelay(function(){fluid.uploader.demo.updateProgress(file,that.events,that.demoState,that.queue.isUploading),fluid.uploader.demo.simulateUpload(that)}):fluid.uploader.demo.finishUploading(that)}},fluid.uploader.demo.stop=function(that){var file=that.demoState.currentFile;file.filestatus=fluid.uploader.fileStatusConstants.CANCELLED,that.queue.shouldStop=!0,that.events.onFileError.fire(file,fluid.uploader.errorConstants.UPLOAD_STOPPED,"The demo upload was paused by the user."),fluid.uploader.demo.finishAndContinueOrCleanup(that,file),that.events.onUploadStop.fire()},fluid.invokeAfterRandomDelay=function(fn){var delay=Math.floor(200*Math.random()+100);setTimeout(fn,delay)},fluid.defaults("fluid.uploader.demo.remote",{gradeNames:["fluid.uploader.remote"],members:{demoState:{fileIdx:0,chunkSize:2e5}},invokers:{uploadNextFile:{funcName:"fluid.uploader.demo.uploadNextFile",args:"{that}"},stop:{funcName:"fluid.uploader.demo.stop",args:"{that}"}}})}(jQuery,fluid_3_0_0),function(fluid){"use strict";fluid.registerNamespace("fluid.uploader"),fluid.uploader.mimeTypeRegistry={jpg:"image/jpeg",jpeg:"image/jpeg",bmp:"image/bmp",png:"image/png",tif:"image/tiff",tiff:"image/tiff",mp3:"audio/mpeg",m4a:"audio/mp4a-latm",ogg:"audio/ogg",wav:"audio/x-wav",aiff:"audio/x-aiff",mpg:"video/mpeg",mpeg:"video/mpeg",m4v:"video/x-m4v",ogv:"video/ogg",mov:"video/quicktime",avi:"video/x-msvideo",html:"text/html",htm:"text/html",text:"text/plain",doc:"application/msword",docx:"application/msword",xls:"application/vnd.ms-excel",xlsx:"application/vnd.ms-excel",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.ms-powerpoint"}}(fluid_3_0_0=fluid_3_0_0||{});
9//# sourceMappingURL=infusion-all.js.map
\No newline at end of file