UNPKG

json-object-editor

Version:

JOE the Json Object Editor | Platform Edition

7 lines 135 kB
/*/---------------------------------------------------------/*/ /*/ Craydent LLC v1.8.0 /*/ /*/ Copyright 2011 (http://craydent.com/about) /*/ /*/ Dual licensed under the MIT or GPL Version 2 licenses. /*/ /*/ (http://craydent.com/license) /*/ /*/---------------------------------------------------------/*/ var __version="1.8.0",__thisIsNewer=true,$w=typeof window!="undefined"?window:{location:(typeof location!="undefined"?location:{href:""}),console:(typeof console!="undefined"?console:{})},$g=$w,$d=typeof document!="undefined"?document:{},$l=$w.location;if($w.__craydentLoaded||typeof($c)!="undefined"){var __current=($w.__craydentVersion||$c.VERSION||"").split("."),__thisVersion=__version.split(".");if(__thisIsNewer=__isNewer(__current,__thisVersion)){$c.VERSION=__version}}function __isNewer(b,a){if(b[0]==a[0]){b.splice(0,1);a.splice(0,1);if(!a.length||!b.length){return false}return __isNewer(b,a)}return parseInt(b[0])<parseInt(a[0])}function __cleanUp(){try{delete $w.__current;delete $w.__thisVersion;delete $w.__thisIsNewer;delete $w.__isNewer;delete $w.__version;delete $w._ie;delete $w._droid;delete $w._amay;delete $w._browser;delete $w._os;delete $w._device;delete $w._engine}catch(a){$w.__current=undefined;$w.__thisVersion=undefined;$w.__thisIsNewer=undefined;$w.__isNewer=undefined;$w.__version=undefined;$w._ie=undefined;$w._droid=undefined;$w._amay=undefined;$w._browser=undefined;$w._os=undefined;$w._device=undefined;$w._engine=undefined}}$w.__craydentVersion=__version;if(__thisIsNewer){var _ao,_ah,_df,_irregularNouns={addendum:"addenda",alga:"algae",alumna:"alumnae",apparatus:"apparatuses",appendix:"appendices",bacillus:"bacilli",bacterium:"bacteria",beau:"beaux",bison:"bison",bureau:"bureaus",child:"children",corps:"corps",corpus:"corpora",curriculum:"curricula",datum:"data",deer:"deer",die:"dice",diagnosis:"diagnoses",erratum:"errata",fireman:"firemen",focus:"focuses",foot:"feet",genus:"genera",goose:"geese",index:"indices",louse:"lice",man:"men",matrix:"matrices",means:"means",medium:"media",memo:"memos",memorandum:"memoranda",moose:"moose",mouse:"mice",nebula:"nebulae",ovum:"ova",ox:"oxen",person:"people",radius:"radii",series:"series",sheep:"sheep",scissors:"scissors",species:"species",stratum:"strata",syllabus:"syllabi",tableau:"tableaux",that:"those","this":"these",tooth:"teeth",vertebra:"vertebrae",vita:"vitae",woman:"women",zero:"zeros"};function __add_fillTemplate_ref(c){try{var a=suid();fillTemplate.refs["ref_"+fillTemplate.refs.length]=a;fillTemplate.refs[a]=c;fillTemplate.refs.push(c);return a}catch(b){error("fillTemplate.__add_fillTemplate_ref",b)}}function __and(){try{var b=arguments.length;for(var c=0;c<b;c++){if(!arguments[c]){return arguments[c-1]||""}}return arguments[b-1]}catch(d){error("fillTemplate.__and",d)}}function __andNotHelper(b,g,d,c){try{for(var f=0,a=g.length;f<a;f++){for(var j in g[f]){if(!g[f].hasOwnProperty(j)){continue}if(!(j in d&&_subQuery(b,g[f][j],j,c)||_subQuery(b,g[f][j],"$equals",j,c))){return false}}}return true}catch(h){error("where.__andNotHelper",h)}}function __clean_micro_templates(){var a=fillTemplate._micro_templates;for(var b in a){if(!a.hasOwnProperty(b)){continue}if(!$CSS("[data-craydent-bind*='"+b+"']").length){delete a[b]}}}function __convert_regex_safe(a){try{return a.replace(/\\/gi,"\\\\").replace(/\$/gi,"\\$").replace(/\//gi,"\\/").replace(/\^/gi,"\\^").replace(/\./gi,"\\.").replace(/\|/gi,"\\|").replace(/\*/gi,"\\*").replace(/\+/gi,"\\+").replace(/\?/gi,"\\?").replace(/\!/gi,"\\!").replace(/\{/gi,"\\{").replace(/\}/gi,"\\}").replace(/\[/gi,"\\[").replace(/\]/gi,"\\]").replace(/\(/gi,"\\(").replace(/\)/gi,"\\)").replace("\n","\\n")}catch(b){error("__convert_regex_safe",b)}}function __count(a){try{return a.length}catch(b){error("fillTemplate.count",b)}}function __dup(a){try{for(var c in a){if(!a.hasOwnProperty(c)){continue}this[c]=a[c]}}catch(b){error("__dup",b)}}function __enum(f,c,b){try{c=c||", ";b=b||["",""];var l=[],k="";if($c.isArray(f)){l=f.slice(0)}if($c.isObject(f)){for(var a in f){if(f.hasOwnProperty(a)){l.push(a)}}}for(var g=0,h=l.length;g<h;g++){var d=b[0].replace_all(["{ENUM_VAR}","{ENUM_VAL}"],[l[g],f[l[g]]]),m=b[1].replace_all(["{ENUM_VAR}","{ENUM_VAL}"],[l[g],f[l[g]]]);k+=d+l[g]+m+c}return k.slice(0,-1*c.length)}catch(j){error("fillTemplate.enum",j)}}function __interpreter(q,f){try{var c=/\$\{if .*?\}([\s\S]*)\$\{end_if\}/g.exec(q),a="${if(",b="${end_if}";q=q.replace_all(["${if (",") }"],["${if(",")}"]);var n=0;var m=0;var o=q.indexOf(a),l=q.indexOf(b);if(o==-1){return q}n++,m++;var p=q.substring(0,o);q=q.substring(o);o=0;var k=q.indexOf(")}"),j=q.substring(5,k).strip();while(n==1||n!=m){o=q.indexOf(a,o+1);if(o>-1){if(o<l){n++}else{m++;l=q.indexOf(b,l+1)}}else{l++;break}}if(n==1){l=q.indexOf(b)}var d=q.substring(k+2,l),h=q.substring(0,l+b.length);if(j.contains("${")){j=fillTemplate(j.replace_all(["${","}"],['"${','}"']),f)}if(!tryEval(j)){q=p+q.replace(h,"")}else{q=p+q.replace(h,__interpreter(d,f))}return __interpreter(q,f)}catch(g){error("fillTemplate.interpreter",g)}}function __logic_parser(d,f,h){if(!d){return""}var g=$c.TEMPLATE_TAG_CONFIG,c=[],a={};d=d.replace_all(g.IGNORE_CHARS,[""]);$c.eachProperty(g,function(k){if(!k.begin){return}var j=d.indexOfAlt(k.begin);c.push(j);a[j]=k});var b=Math.min.apply(Math,c.condense([-1]));if(!a[b]){return d}return d.substring(0,b)+a[b].parser(d.substring(b),f,h)}function __observe_helper(g,h,b,d){try{if($c.isObject(g)){return observe(g,h,b,d)}if(!$c.isArray(g)){return}for(var c=0,a=g.length;c<a;c++){if(!$c.isObject(g[c])){continue}observe(g[c],h,b,d)}}catch(f){error("observe.observe_helper",f)}}function __on_observable_change(p){try{var o=p[0],j=o.object,b=o.name,q=o.oldValue;var f=fillTemplate._observing,n=fillTemplate._micro_templates;if(j[b]!=q){var r=f.indexOf(j);var h=f["hash_"+r],m=new RegExp(h+"[a-zA-Z0-9,]*."+b+";?|$"),a=Array.prototype.slice.call($CSS("[data-craydent-bind*='"+h+"']")||[]).filter(function(s){return m.test(s.getAttribute("data-craydent-bind"))});if(!$CSS("[data-craydent-bind*='"+h+"']").length){delete f["hash_"+r];return}for(var g=0,k=a.length;g<k;g++){if(a[g].isOrphan()){continue}var c=a[g].getAttribute("data-craydent-bind").split(":")[0],d=$c.getProperty(f,"parents_"+r+".0")||j;a[g].replace(fillTemplate(n[c].template.replace_all("${craydent_bind}",h),d).toDomElement())}}}catch(l){error("observe.on_observable_change",l)}}function __or(){try{for(var c=0,b=arguments.length;c<b;c++){if(arguments[c]){return arguments[c]}}return""}catch(d){error("fillTemplate.__or",d)}}function __processBlocks(f,b,a,x){x=x||{};var w=[],c=[],n=0,d=[],p=0;while((n=a.indexOfAlt(f,n))!=-1&&(p=a.indexOfAlt(b,p))!=-1){n!=-1&&(c.push(n),n++);p!=-1&&(d.push(p),p++)}if(c.length!=d.length){w.push({id:l,block:"",body:"",code:a});return w}var s,y=OrderedList([],function(k,j){if(k.end<j.end){return -1}if(k.end>j.end){return 1}return 0});s=0;while(s<c.length){var v=0;while(d[0]>c[v]){v++}v--;y.add({begin:c[v],end:d[0]});c.removeAt(v);d.removeAt(0)}var q=a.match(b)[0].length;for(var r=0,u=y.size();r<u;r++){var l="##"+suid()+"##",m=a.slice(y[r].begin,y[r].end+q),g=m.match(f)[0].length,o=a.slice(y[r].begin+g,y[r].end);a=a.replace(m,l);w.push({id:l,block:m,body:o,code:a});x[l]=m;for(var t=r+1;t<u;t++){var h=m.length-l.length;y[t].end-=h;if(y[t].begin>y[r].end){y[t].begin-=h}}}return w.reverse()}function __parseArithmeticExpr(h,g,f){try{var c;switch(f){case"$add":c=0;for(var b=0,a=g["$add"].length;b<a;b++){c+=__processExpression(h,g["$add"][b])}return c;case"$subtract":return __processExpression(h,g["$subtract"][0])-__processExpression(h,g["$subtract"][1]);case"$multiply":c=1;for(var b=0,a=g["$multiply"].length;b<a;b++){c*=__processExpression(h,g["$multiply"][b])}return c;case"$divide":return __processExpression(h,g["$divide"][0])/__processExpression(h,g["$divide"][1]);case"$mod":return __processExpression(h,g["$mod"][0])%__processExpression(h,g["$mod"][1])}}catch(d){error("aggregate.__parseArithmeticExpr",d)}}function __parseArrayExpr(d,c,b){try{switch(b){case"$size":return(__processExpression(d,c,b)||[]).length}}catch(a){error("aggregate.__parseArrayExpr",a)}}function __parseBooleanExpr(h,g,f){try{var b=[];switch(f){case"$and":b=g["$and"];for(var c=0,a=b.length;c<a;c++){if(!__processExpression(h,g[c])){return false}}return true;case"$or":b=g["$or"];for(var c=0,a=b.length;c<a;c++){if(__processExpression(h,g[c])){return true}}return false;case"$not":b=g["$not"];return !__processExpression(h,g[0])}}catch(d){error("aggregate.__parseBooleanExpr",d)}}function __parseComparisonExpr(j,h,g){try{var c=[undefined,null,Number,typeof Symbol!="undefined"?Symbol:"Symbol",String,Object,Array,typeof BinData!="undefined"?BinData:"BinData",typeof ObjectId!="undefined"?ObjectId:"ObjectId",Boolean,Date,typeof Timestamp!="undefined"?Timestamp:"Timestamp",RegExp],b=__processExpression(j,h[g][0]),a=__processExpression(j,h[g][1]),d=null;if(b==a){d=0}if(b<a){d=-1}if(b>a){d=1}if(isNull(d)){b=c.indexOf([null,undefined].contains(b)?b:b.constructor);a=c.indexOf([null,undefined].contains(a)?a:a.constructor);if(b<a){d=-1}if(b>a){d=1}}switch(g){case"$cmp":return d;case"$eq":return d===0;case"$gt":return d===1;case"$gte":return d===1||d===0;case"$lt":return d===-1;case"$lte":return d===-1||d===0;case"$ne":return d!==0}}catch(f){error("aggregate.__parse",f)}}function __parseCond(g,f){try{if(!$c.isObject(f)||!f["$cond"]){return f}var h=f["$cond"],c,b,a;if($c.isArray(h)){c=h[0];b=h[1];a=h[2]}else{c=h["if"];b=h.then;a=h["else"]}return __processExpression(g,c)?b:a}catch(d){error("aggregate.__parseCond",d)}}function __parseConditionalExpr(f,d,c){try{switch(c){case"$cond":return __parseCond(f,d);case"$ifNull":var a=__processExpression(f,d["$ifNull"][0]);return isNull(a)?__processExpression(f,d["$ifNull"][1]):a}}catch(b){error("aggregate.__parseConditionExpr",b)}}function __parseDateExpr(f,d,c){var a=__processExpression(f,d[c]);try{switch(c){case"$dayOfYear":return a.getDayOfYear();case"$dayOfMonth":return a.getDate();case"$dayOfWeek":return a.getDay()+1;case"$year":return a.getFullYear();case"$month":return a.getMonth()+1;case"$week":return a.getWeek();case"$hour":return a.getHours();case"$minute":return a.getMinutes();case"$second":return a.getSeconds();case"$millisecond":return a.getMilliseconds();case"$dateToString":a=__processExpression(f,d[c].date);return a.format(d[c].format)}}catch(b){error("aggregate.__parseDateExpr",b)}}function __parseSetExpr(u,c,b){try{switch(b){case"$setEquals":for(var p=1,q=c[b].length;p<q;p++){var k=$c.duplicate(__processExpression(u,c[b][p-1])),h=$c.duplicate(__processExpression(u,c[b][p]));if(!$c.isArray(k)||!$c.isArray(h)){throw"Exception: All operands of $setEquals must be arrays. One argument is of type: "+(typeof(!$c.isArray(k)?k:h)).captialize()}k.toSet();h.toSet();if(k.length!=h.length){return false}for(var o=0,l=k.length;o<l;o++){if(!h.contains(k[o])){return false}}}return true;case"$setIntersection":var r=$c.duplicate(__processExpression(u,c[b][0])),n="Exception: All operands of $setIntersection must be arrays. One argument is of type: ";if(!$c.isArray(r)){throw n+(typeof r).captialize()}r.toSet();for(var p=1,q=c[b].length;p<q;p++){var k=$c.duplicate(__processExpression(u,c[b][p]));if(!$c.isArray(k)){throw n+ +(typeof k).captialize()}k.toSet();if(k.length<r.length){var m=k;k=r;r=m}for(var o=0;o<r.length;o++){if(!k.contains(r[o])){r.removeAt(o);o--}}if(!r.length){return r}}return r;case"$setUnion":var r=$c.duplicate(__processExpression(u,c[b][0])),n="Exception: All operands of $setUnion must be arrays. One argument is of type: ";if(!$c.isArray(r)){throw n+(typeof r).captialize()}for(var p=1,q=c[b].length;p<q;p++){var a=$c.duplicate(__processExpression(u,c[b][p]));if(!$c.isArray(a)){throw n+ +(typeof a).captialize()}r=r.concat(a)}return r.toSet();case"$setDifference":var g=$c.duplicate(__processExpression(u,c[b][0])),f=$c.duplicate(__processExpression(u,c[b][1])),r=[];if(!$c.isArray(g)||!$c.isArray(f)){throw"Exception: All operands of $setEquals must be arrays. One argument is of type: "+(typeof(!$c.isArray(g)?g:f)).captialize()}for(var p=0,q=g.length;p<q;p++){var t=g[p];if(!f.contains(t)&&!r.contains(t)){r.push(t)}}return r;case"$setIsSubset":var g=$c.duplicate(__processExpression(u,c[b][0])),f=$c.duplicate(__processExpression(u,c[b][1])),r=[];if(!$c.isArray(g)||!$c.isArray(f)){throw"Exception: All operands of $setEquals must be arrays. One argument is of type: "+(typeof(!$c.isArray(g)?g:f)).captialize()}return $c.isSubset(g,f);case"$anyElementTrue":var g=$c.duplicate(__processExpression(u,c[b][0])),d=[undefined,null,0,false];for(var p=0,q=g.length;p<q;p++){var t=g[p];if(!d.contains(t)){return true}}return false;case"$allElementsTrue":var g=$c.duplicate(__processExpression(u,c[b][0])),d=[undefined,null,0,false];for(var p=0,q=g.length;p<q;p++){var t=g[p];if(d.contains(t)){return false}}return true}}catch(s){error("aggregate.__parseSetExpr",s)}}function __parseStringExpr(k,l,j){try{switch(j){case"$concat":var m="";for(var b=0,d=l["$concat"].length;b<d;b++){m+=__processExpression(k,l["$concat"][b])}return m;case"$substr":var c=l["$substr"][1],a=l["$substr"][2]<0?undefined:l["$substr"][2];return __processExpression(k,l["$substr"][0]).substr(c,a);case"$toLower":return(__processExpression(k,l["$toLower"])||"").toLowerCase();case"$toUpper":return(__processExpression(k,l["$toLower"])||"").toUpperCase();case"$strcasecmp":var h=(__processExpression(k,l["$strcasecmp"][0])||"").toString(),g=(__processExpression(k,l["$strcasecmp"][1])||"").toString();if(h==g){return 0}if(h<g){return -1}if(h>g){return 1}}}catch(f){error("aggregate.__parseStringExpr",f)}}function __parseVariableExpr(n,o,l){try{switch(l){case"$map":var m=__processExpression(n,o[l].input),b="$"+o[l].as,d=o[l]["in"];for(var c=0,f=m.length;c<f;c++){n[b]=m[c];m[c]=__processExpression(n,d);delete n[b]}return m;case"$let":var j=o[l].vars,k=[],h=null;for(var a in j){if(!j.hasOwnProperty(a)){continue}n["$"+a]=__processExpression(n,j[a]);k.push(a)}h=__processExpression(n,o[l]["in"]);for(var c=0,f=k.length;c<f;c++){delete n[k[c]]}return h}}catch(g){error("aggregate.__parseVariableExpr",g)}}function __processAccumulator(g,b,a,f){try{var c=__processExpression(g,b["$sum"]||b["$avg"]||b["$first"]||b["$last"]||b["$max"]||b["$min"]||b["$push"]||b["$addToSet"]);switch(true){case !!b["$sum"]:return c+(a||0);case !!b["$avg"]:a=a||{n:0,avg:0};a.avg=((a.avg/(a.n||1))+c)/a.n;if(f.length==f.index+1){a=a.avg}return a;case !!b["$first"]:if(isNull(a)){a=c}return a;case !!b["$last"]:return c;case !!b["$max"]:return Math.max(c,(a||-9007199254740991));case !!b["$min"]:return Math.min(c,(a||9007199254740991));case !!b["$push"]:return(a||[]).push(c);case !!b["$addToSet"]:a=a||[];if(!a.contains(c)){a.push(c)}return a}}catch(d){error("aggregate.__processAccumulator",d)}}function __processExpression(n,o){try{if($c.isString(o)){if(o[0]=="$"){o=o.substr(1)}return $c.getProperty(n,o.replace("$CURRENT.",""))}else{if(!$c.isObject(o)){return o}}for(var l in o){if(!o.hasOwnProperty(l)){continue}var p=o[l],b=["$literal"],d=["$and","$or","$not"],f=["$setEquals","$setIntersection","$setUnion","$setDifference","$setIsSubset","$anyElementTrue","$allElementsTrue"],m=["$cmp","$eq","$gt","$gte","$lt","$lte","$ne"],c=["$add","$subtract","$multiply","$divide","$mod"],a=["$concat","$substr","$toLower","$toUpper","$strcasecmp"],q=["$size"],j=["$map","$let"],k=["$dayOfYear","$dayOfMonth","$dayOfWeek","$year","$month","$week","$hour","$minute","$second","$millisecond","$dateToString"],h=["$cond","$ifNull"];switch(true){case b.contains(l):return o;case d.contains(l):return __parseBooleanExpr(n,o,l);case f.contains(l):return __parseSetExpr(n,o,l);case m.contains(l):return __parseComparisonExpr(n,o,l);case c.contains(l):return __parseArithmeticExpr(n,o,l);case a.contains(l):return __parseStringExpr(n,o,l);case q.contains(l):return __parseArrayExpr(n,o,l);case j.contains(l):return __parseVariableExpr(n,o,l);case k.contains(l):return __parseDateExpr(n,o,l);case h.contains(l):return __parseConditionalExpr(n,o,l);default:__processExpression(n,p);break}}}catch(g){error("aggregate.__parseExpression",g)}}function __processGroup(j,k){try{var c=k._id,l,d=0,b={},f=[],o={index:0,length:j.length};for(var d=0,g=j.length;d<g;d++,o.index=d){var l=j[d],p,m="null",n;if(c){n={};for(var a in c){if(!c.hasOwnProperty(a)){continue}n[a]=__processExpression(l,c[a])}m=JSON.stringify(n)}if(!b[m]){p=b[m]={_id:n};f.push(p)}else{p=b[m]}for(var a in k){if(!k.hasOwnProperty(a)||a=="_id"){continue}p[a]=__processAccumulator(l,k[a],p[a],o)}}return f}catch(h){error("aggregate.__processGroup",h)}}function __processStage(j,k){try{var c="",n={};for(var a in k){if(!k.hasOwnProperty(a)){continue}if(c){throw"Exception: A pipeline stage specification object must contain exactly one field."}c=a;n=k[a]}switch(a){case"$project":for(var f=0,g=j.length;f<g;f++){var m={};for(var b in n){if(!n.hasOwnProperty(b)){continue}if($c.parseBoolean(n[b])){m[b]=j[f]}else{m[b]=__processExpression(j[f],n[b])}}j.replaceAt(f,m)}return j.where({},n);case"$match":return j.where(n);case"$redact":return _redact(j,n);case"$limit":return j.slice(0,n);case"$skip":return j.slice(n);case"$unwind":return _unwind(j,n);case"$group":return __processGroup(j,n);case"$sort":var o=[];for(var b in n){if(!n.hasOwnProperty(b)){continue}var d="";if(n[b]==-1){d="!"}o.push(d+b)}return j.sortBy(o);case"$out":var l=$c.duplicate(j,true);if($c.isString(n)){$w[n]=l}else{if($c.isArray(n)){n.removeAll();$c.merge(n,l)}}return l}return j}catch(h){error("aggregate.__processStage",h)}}function __run_replace(reg,template,use_run,obj){try{var pre="",post="",split_param="|",match;use_run&&(pre="RUN[",post="]",split_param=/;(?!\\)/);while((match=reg.exec(template))&&match[1]){var funcValue=[],func="";funcValue=match[1].replace_all(["\\[","\\]"],["[","]"]).split(split_param);while(funcValue[0].count("{")!=funcValue[0].count("}")){funcValue[0]+=funcValue[1]+($c.isString(split_param)?split_param:";");funcValue.splice(1,1)}func=funcValue.splice(0,1)[0].strip(";");for(var i=0,len=funcValue.length;i<len;i++){if(funcValue[i].contains("${")){funcValue[i]=fillTemplate(funcValue[i],obj)}try{funcValue[i]=eval("("+funcValue[i].replace_all([";\\"],[";"])+")")}catch(e){}}template=template.contains(match[1])?template.replace(match[1],(match[1]=match[1].replace_all(["\\[","\\]"],["[","]"]))):template;template=template.replace_all("${"+pre+match[1]+post+"}",$w.getProperty(func)?$w.getProperty(func).apply(obj,funcValue):(tryEval("("+func+")")||foo)()||"")}return template}catch(e){error("fillTemplate.__run_replace",e)}}function _ajaxServerResponse(response){try{if(response.readyState==4&&response.status==200){var objResponse={};try{objResponse=eval(response.responseText.trim())}catch(e){objResponse=eval("("+response.responseText.trim()+")")}if(!objResponse||objResponse.hasErrors){return false}return objResponse}return false}catch(e){error("ajax._ajaxServerResponse",e);return false}}function _condense(b,a){try{var j=[],d=[],k=false;if(a&&a.constructor==Array){k=true}for(var c=0,g=b.length;c<g;c++){if(a){var f=c;if(k&&a.contains(b[c])){j.push(c);continue}if(j.indexOf(c)!=-1){continue}while((f=b.indexOf(b[c],f+1))!=-1){j.push(f)}}(j.indexOf&&j.indexOf(c)||_indexOf(j,c))==-1&&!isNull(b[c])&&d.push(b[c])}return d}catch(h){error("_condence",h);return false}}function _copyWithProjection(j,g){var a={},k=0;j=j||"*";if($c.isString(j)){j=j.split(",")}if($c.isArray(j)){if(!(k=j.length)){a=$c.duplicate(g);return a}var h=j;j={};for(var f=0;f<k;f++){j[h[f]]=1}}for(var b in j){if(j.has(b)){if(b=="*"){a=$c.duplicate(g)}else{if(g[b]&&!$c.isArray(g[b])){a[b]=g[b]}else{if(g[b]){var l=true;if(b.slice(-2)==".$"){b=b.slice(0,-2);a[b]=g[b].slice(0,1)}else{if(j[b]["$elemMatch"]){a[b]=g[b].where(j[b]["$elemMatch"]).slice(0,1)}else{if(j[b]["$slice"]){var c=0,d=$c.isInt(j[b]["$slice"])?j[b]["$slice"]:0;if($c.isArray(j[b]["$slice"])){c=j[b]["$slice"][0];d=j[b]["$slice"][1]}a[b]=g[b].slice(c,d)}else{if(j[b]){l=false;a[b]=g[b]}}}}if(l&&!a[b].length){delete a[b]}}else{a[b]=j[b]}}}}}return a}function _copyWithProjectionHelper(a,c){for(var b in a){if(a.has(b)){c[b]=a[b]}}}function _craydentSelector(f,b,a,g){try{if(!a||a===true){return undefined}var c=$d[f](a);if(g){return((c&&((c.length&&c[0])||c))||$w[b](a)[0])}return(c||$w[b](a))}catch(d){error("_craydentSelector",d)}}function _dataset(){try{var a=this.attributes,d={};for(var b in a){if(!a.hasOwnProperty(b)){continue}var c=a[b];if(c.name.indexOf("data-")==0){d[c.name.substring(5)]=c.value}}return d}catch(f){error("DOM._dataset",f)}}function _defineFunction(name,func,override){try{var args=_getFuncArgs(func),fstr=func.toString().replace(/this/g,"obj"),exec="",extra_code="if(isNull(obj) && this == $c){return;}",fnew=args.length===0||(args.length===1&&!_trim(args[0]))?fstr.toString().replace(/(\(\s*?\)\s*?\{)/," (obj){"+extra_code):"("+fstr.toString().replace(/\((.*?)\)\s*?\{/,"(obj,$1){"+extra_code)+")";if(!override&&eval("typeof("+name+")")!=="undefined"){eval("$c."+name+" = "+fnew);return}eval("$c."+name+" = "+fnew)}catch(ex){error("_defineFunction",ex)}}function _displayHelper(a,b){try{return(($d.getElementById(a)&&$(a)[b]())||(a instanceof HTMLElement&&a[b]())||$w["_"+b+"overwrite"](a))}catch(c){error("_displayHelper."+b,c)}}function _duplicate(obj,original,recursive){try{if($c.isString(obj)||$c.isString(original)||$c.isInt(obj)||$c.isInt(original)||$c.isFloat(obj)||$c.isFloat(original)||$c.isNumber(obj)||$c.isNumber(original)){return original}var argIndex=3;var ref=arguments[argIndex]||{objects:[{obj:original,path:"this"}]},current_path=arguments[argIndex+1]||"this";(arguments[argIndex+2]||(arguments[argIndex+2]={}))&&(arguments[argIndex+2].command=arguments[argIndex+2].command||"");if(!(ref.objects.length==1)){for(var prop in obj){if(obj.hasOwnProperty(prop)){delete obj[prop]}}}var loop_func=function(prop,original){if(original.hasOwnProperty(prop)&&original[prop]&&(!$c.isFunction(original[prop])||!recursive)){var index=ref.objects.indexOfAlt(original[prop],function(obj,value){return obj.obj===value}),new_path=current_path+"["+parseRaw(prop)+"]";if(index!=-1){arguments[argIndex+1].command+=new_path+"="+ref.objects[index].path+";";return}if(typeof(original[prop])=="object"&&recursive){obj[prop]=typeof(original[prop].constructor)=="function"?new original[prop].constructor():{};ref.objects.push({obj:original[prop],path:new_path});_duplicate(obj[prop],original[prop],true,ref,new_path,arguments[argIndex+1]);return}}else{if(!original.hasOwnProperty(prop)){return}}obj[prop]=original[prop]};if($c.isArray(original)){for(var i=0,len=original.length;i<len;i++){loop_func.call(obj,i,original,ref,current_path,arguments[argIndex+2])}}else{for(var prop in original){if(!original.hasOwnProperty(prop)){continue}loop_func.call(obj,prop,original,ref,current_path,arguments[argIndex+2])}}if(!arguments[argIndex+1]){eval(arguments[argIndex+2].command)}return obj}catch(e){error("_duplicate",e)}}function _endsWith(){try{for(var b=0,a=arguments.length;b<a;b++){if(arguments[b]==this){continue}if(arguments[b]==this.slice(-arguments[b].length)){return arguments[b]}}return false}catch(c){error("String.endsWith",c)}}function _ext(a,d,c,b){try{a.prototype[d]=a.prototype[d]||c;_df(d,c,b)}catch(f){error("_ext",f)}}function _even(a){try{if(isNaN(a)){return false}return !(a&1)}catch(b){error("_even",b)}}function _firstElementChild(){try{var c=this.childNodes;for(var b=0,a=c.length;b<a;b++){if(c[b].nodeType==1){return c[b]}}return false}catch(d){error("DOM._firstElementChild",d);return false}}function _getBrowserVersion(b){try{var d=navigator.userAgent;if(b=="safari"){d=navigator.vendor}else{if(b=="Opera"){d=$w.opera}}var a=navigator.userAgent.indexOf(b);if(a==-1&&$w["is"+b]()){return -1}return parseFloat(navigator.userAgent.substring(a+b.length+1))}catch(c){error("_getBrowserVersion",c)}}function _getDimension(a,j){try{if(!a&&this.tagName.toLowerCase()=="body"){var h,d=$d.body.style[j];$d.body.style[j]="100%";h=$d.body[j](true);$d.body.style[j]=d}var c=this.getClientRects&&this.getClientRects()[0];return(c&&c[j])||this["offset"+j.capitalize()]||this["scroll"+j.capitalize()]}catch(g){if(!this.parentNode&&this!=$d){var b=this.cloneNode(true),f;b.style.visible="hidden";b.style.position="absolute";b["get"+j.capitalize()]=$d.body[j];$d.body.appendChild(b);f=b["get"+j.capitalize()]();b.remove();return f}error("_getDimension",g);return false}}function _getFuncName(a){try{return _trim(a.toString().replace(/\/\/.*?[\r\n]/gi,"").replace(/[\t\r\n]*/gi,"").replace(/\/\*.*?\*\//gi,"").replace(/.*?function\s*?(.*?)\s*?\(.*/,"$1"))}catch(b){error("_getFuncName",b)}}function _getFuncArgs(a){try{return _condense(_trim(_strip(a.toString(),"(")).replace(/\s*/gi,"").replace(/\/\*.*?\*\//g,"").replace(/.*?\((.*?)\).*/,"$1").split(","))||[]}catch(b){error("_getFuncArgs",b)}}function _getGMTOffset(){try{return this.getHours()-24-this.getUTCHours()}catch(a){error("_getGMTOffset",a)}}function _groupFieldHelper(d,a){var f="";for(var c=0,b=a.length;c<b;c++){f+=a[c]+":"+d[a[c]]+","}return f}function _indexOf(f,c){try{var a=f.length,b=0;while(b<a){if(f[b]===c){return b}++b}return -1}catch(d){error("_indexOf",d)}}function _invokeHashChange(){try{var b=$COMMIT.onhashchange||$c.onhashchange;b&&$c.isFunction(b)&&b()}catch(a){error("_invokeHashChange",a)}}function _isArray(b){try{if(isNull(b)){return false}return(b.constructor==Array)}catch(a){error("_isArray",a)}}function _isString(b){try{if(isNull(b)){return false}return(b.constructor==String)}catch(a){error("_isString",a)}}function _joinHelper(m,o,q,d){var g=[],a=[],f=o[0]||{};if($c.isString(q)){q=q.split("=");if(q.length==1){q=[q,q]}var c=arguments.callee.caller.getName();q=q.trim();c=="joinRight"&&(q=[q[1],q[0]])}for(var b in f){if(f.hasOwnProperty(b)){a.push(b)}}for(var l=0,p=m.length;l<p;l++){var n=$c.copyObject(m[l]),r={},k;r[q[1]]=n[q[0]];k=o.where(r);if(k.length>0){g.push($c.merge(n,k[0]))}else{if(!d){for(var h=0,s=a.length;h<s;h++){n[a[h]]=n[a[h]]||null}g.push(n)}}}return g}function _makePrecedenceBlocks(f){try{var a=f.indexOf("("),d={before:"",after:"",block:{}};if(a!=-1){var b=f.lastIndexOf("(");d.before=f.substring(0,a).trim();d.after=f.substring(b).trim();d.block=_makePrecedenceBlocks(f.substring(a+1,b-1));return d}d.block=f;return d}catch(c){error("_makePrecedenceBlocks",c)}}function _nextElementSibling(){try{var a=this.nextSibling;while(a&&a.nodeType!=1){a=a.nextSibling}return a}catch(b){error("DOM._nextElementSibling",b);return false}}function _orderListHelper(g,j,c){try{var f=0,d=0,b=c.length;if(j(g,c[0])==-1){return 0}if(j(g,c[b-1])===1){return b}while(b>1){b=Math.ceil(b/2);f=d+b;var a=j(g,c[f]);if(a===0){return f}if(a===1){d=f++}}return f}catch(h){error("OrderedList._orderListHelper",h);return false}}function _processClause(q){try{var k=q.indexOfAlt(/between/i);if(k!=-1){q.replace(/between( .*? )and( .*?)( |$)/gi,"between$1&and$2$3")}var n=q.split(/ or /i),p={"$or":[]};for(var d=0,l=n.length;d<l;d++){var b=n[d].split(/ and /i),g={"$and":[]};for(var c=0,s=b.length;c<s;c++){var f=b[c],o={};switch(true){case (k=f.indexOf("="))!=-1:o[f.substring(0,k).trim()]={"$equals":tryEval(f.substring(k+1).trim())};g["$and"].push(o);break;case (k=f.indexOf("<>"))!=-1:o[f.substring(0,k).trim()]={"$ne":tryEval(f.substring(k+1).trim())};g["$and"].push(o);break;case (k=f.indexOf(">"))!=-1:o[f.substring(0,k).trim()]={"$gt":tryEval(f.substring(k+1).trim())};g["$and"].push(o);break;case (k=f.indexOf(">="))!=-1:o[f.substring(0,k).trim()]={"$gte":tryEval(f.substring(k+1).trim())};g["$and"].push({"$gte":o});break;case (k=f.indexOf("<"))!=-1:o[f.substring(0,k).trim()]={"$lt":tryEval(f.substring(k+1).trim())};g["$and"].push(o);break;case (k=f.indexOf("<="))!=-1:o[f.substring(0,k).trim()]={"$lte":tryEval(f.substring(k+1).trim())};g["$and"].push(o);break;case f.indexOfAlt(/between/i)==0:var r=f.replace(/between (.*?) &and (.*?) ( |$)/i,"$1,$2").split(",");g["$and"].push({"$gte":tryEval(r[0])});g["$and"].push({"$lte":tryEval(r[1])});break;case (k=f.indexOfAlt(/ in /i))!=-1:var a=tryEval(f.substring(k+4).trim().replace(/\((.*)\)/,"[$1]"));if(!a){throw"Invalid syntax near 'in'"}o[f.substring(0,k).trim()]=a;g["$and"].push({"$in":o});break;case (k=f.indexOfAlt(/is null/i))!=-1:o[f.substring(0,k).trim()]=null;g["$and"].push({"$equals":o});break;case (k=f.indexOfAlt(/is not null/i))!=-1:o[f.substring(0,k).trim()]=null;g["$and"].push({"$ne":o});break;case (k=f.indexOfAlt(/ like /i))!=-1:var h="^"+_trim(f.substring(k+6),null,[" ","'",'"']).replace_all("%",".*?")+"$";o[f.substring(0,k).trim()]={"$regex":new RegExp(h,"i")};g["$and"].push(o);break}}p["$or"].push(g)}return p}catch(m){error("where.processClause",m)}}function _querySelectorAll(c,b){var f=document.createStyleSheet(),a=[],h=document.all,d=0,g;f.addRule(c,"k:v");while(g=h[d++]&&a.length<b){if(g.currentStyle.foo==="bar"){a.push(g)}}f.removeRule(0);return a}function _redact(g,h){try{g=$c.isArray(g)?g:[g];var k=[];for(var c=0,d=g.length;c<d;c++){var j=g[c],b=__parseCond(j,h);if(b=="$$KEEP"){k.push(j)}else{if(b=="$$DESCEND"){k.push(j);for(var a in j){if(!j.hasOwnProperty(a)||$c.isArray(j[a])&&!$c.isObject(j[a][0])||!$c.isArray(j[a])&&!$c.isObject(j[a])){continue}j[a]=_redact(j[a],h);if(j[a]===undefined){delete j[a]}}}else{if(b=="$$PRUNE"){}else{throw"exception: $redact's expression should not return anything aside from the variables $$KEEP, $$DESCEND, and $$PRUNE, but returned "+parseRaw(b)}}}}return k.length?k:undefined}catch(f){error("aggregate._redact",f)}}function _replace_all(f,d,b){try{if(!$c.isArray(f)&&!$c.isArray(d)){f=[f];d=[d]}var j=this;for(var c=0,a=f.length;c<a;c++){var g=new RegExp(__convert_regex_safe(f[c]),b);if(!j.contains(g)){continue}j=j.replace(g,d[c]||d[0])}return j.toString()}catch(h){error("_replace_all",h)}}function _run_func_array(b,c){try{!$c.isArray(b)&&(b=[b]);for(var d=0,a=b.length;d<a;d++){b[d].apply(this,c)}}catch(f){error("_run_func_array",f)}}function _set(c,l,a,m,f){try{l=encodeURI(l);var h=m.ignoreCase||m=="ignoreCase"?"i":"",k=new RegExp("(.*)?("+c+"=)(.*?)(([&]|[@])(.*)|$)",h),j="search",b="&",d="";j=c.indexOf("@")==0?(b="","hash"):j;$COMMIT[j]=$COMMIT[j]||"";if(a){$COMMIT[j]=($COMMIT[j]||$l[j]);d=k.test($COMMIT[j])?$COMMIT[j].replace(k,"$1$2"+l+"$4"):$COMMIT[j]+b+c+"="+l;if(b=="&"&&d.indexOf("&")==0){d="?"+d.substring(1)}$COMMIT[j]=d;$COMMIT.update=true}else{d=k.test(f[j])?f[j].replace(k,"$1$2"+l+"$4"):f[j]+b+c+"="+l;if(b=="&"&&d.indexOf("&")==0){d="?"+d.substring(1)}f[j]=d;if(j=="hash"){$COOKIE("CRAYDENTHASH",f.hash[0]=="#"?f.hash.substring(1):f.hash);_invokeHashChange()}}return f}catch(g){error("_set",g)}}function _setDOMElementProperties(a){try{if(!a){return}for(var c in $w.HTMLElement.prototype){if($w.HTMLElement.prototype.hasOwnProperty(c)){try{if(c=="dataset"||c=="firstElementChild"||c=="nextElementSibling"){a[c]=$w["_"+c]()}a[c]=$w.HTMLElement.prototype[c]}catch(b){}}}}catch(b){error("_setDOMElementProperties",b)}}function _startsWith(){try{for(var b=0,a=arguments.length;b<a;b++){if(arguments[b]==this){continue}if(arguments[b]==this.slice(0,arguments[b].length)){return arguments[b]}}return false}catch(c){error("String.startsWith",c)}}function _strip(c,a){try{return _trim(c,undefined,a)}catch(b){error("_strip",b)}}function _subFieldHelper(c,a){try{if(!$c.isObject(c)){return false}for(var d in c){if(!c.hasOwnProperty(d)){continue}if(d in a){return d}}return false}catch(b){error("_subFieldHelper",b)}}function _subQuery(c,h,p,b,n){try{if(isNull(n)){n=b;b=null}var l={"$or":1,"$and":1,"$in":1,"$nin":1,"$regex":1,"$gt":1,"$lt":1,"$gte":1,"$lte":1,"$exists":1,"$equals":1,"$ne":1,"$nor":1,"$type":1,"$text":1,"$mod":1,"$all":1,"$size":1,"$where":1,"$elemMatch":1,"$not":1},v=$c.getProperty(c,b||""),a=p,f=false;for(var d in h){if(h.hasOwnProperty(d)&&d in l){if(!$c.isArray(a)){a=[]}a.push(d)}}if(!$c.isArray(a)){a=[a]}for(var z=0,A=a.length;z<A;z++){if(!f&&z>0){return f}switch(a[z]){case"$equals":if(isNull(h)||isNull(v)){return false}var u=$c.getValue(h.hasOwnProperty("$equals")?h["$equals"]:h);f=$c.isRegExp(u)?u.test(v):($c.isFunction(u)?u(c,b,n):v==u);break;case"$ne":if(isNull(h)||isNull(v)){return false}var u=h["$ne"];f=!($c.isRegExp(u)?u.test(v):v==u);break;case"$lt":if(isNull(v)){return false}f=v<h["$lt"];break;case"$lte":if(isNull(v)){return false}f=v<=h["$lte"];break;case"$gt":if(isNull(v)){return false}f=v>h["$gt"];break;case"$gte":if(isNull(v)){return false}f=v>=h["$gte"];break;case"$nor":for(var z=0,A=h.length;z<A;z++){if(_subQuery(c,[h[z]],"$or",b,n)){return false}}f=true;break;case"$regex":if(isNull(v)){return false}f=h["$regex"].test(v);break;case"$exists":var o={validPath:0};$c.getProperty(c,b,".",o);f=o.validPath==h["$exists"];break;case"$type":if(isNull(v)&&isNull(h)||!isNull(v)&&v.constructor==h){f=true;break}return false;break;case"$text":break;case"$mod":if(!$c.isArray(h)||isNull(v)){return false}f=v%h[0]==h[1];break;case"$all":if(!$c.isArray(v)||!$c.isArray(h)){return false}for(var z=0,A=h.length;z<A;z++){if(!$c.contains(v,h[z])){return false}}f=true;break;case"$size":var D=parseInt(h);if(!$c.isArray(v)||!D&&D!==0){return false}f=v.length==D;break;case"$where":f=$c.isFunction(h)?h.call(c):tryEval.call(c,"(function(){"+h+"}).call(this)");break;case"$elemMatch":if(!$c.isArray(v)){return false}for(var z=0,y=false,A=v.length;z<A&&!y;z++){var r=v[z],D,C;for(var d in h){if(!h.hasOwnProperty(d)){continue}if($c.isObject(h[d])){D=[h[d]];C="$or"}else{D=h[d];C="$equals"}if(_subQuery(c,D,C,d,n)){y=true;break}}}f=y;break;case"$or":if(!$c.isArray(h)){return false}var t=false;for(var z=0,A=h.length;z<A&&!t;z++){for(var d in h[z]){if(!h[z].hasOwnProperty(d)){continue}var s=_subFieldHelper(h[z][d],l);if(!(t=d in l?_subQuery(c,h[z][d],d,n):(s?_subQuery(c,h[z][d],s,d,n):_subQuery(c,h[z][d],"$equals",d,n)))){break}}}f=t;break;case"$and":f=__andNotHelper(c,h,l,n);break;case"$not":if($c.isObject(h)){f=!__andNotHelper(c,h,l,n);break}f=$c.isRegExp(h)?h.test(v):v==h;break;case"$in":case"$nin":var g=p=="$nin";f=g;for(var j in h){if(!h.hasOwnProperty(j)){continue}v=$c.getProperty(c,b);for(var x=0,w=h[j].length;x<w;x++){var m=$c.isRegExp(h[j][x]&&h[j][x]);if(($c.isArray(v)&&v.contains(h[j][x]))||(m?h[j][x].test(v):v==h[j][x])){f=true;if(g){return !f}break}}break}break}}return f}catch(B){error("_subQuery",B)}}function _trim(str,side,characters){try{var temp=str,trimChars={" ":1,"\t":1,"\n":1};if(characters){if(_isArray(characters)){var ch,i=0;trimChars={};while(ch=characters[i++]){trimChars[ch]=1}}else{if(_isString(characters)){trimChars=eval('({"'+characters+'":1})')}}}if(!side||side=="l"){while(temp.charAt(0) in trimChars){temp=temp.substring(1)}}if(!side||side=="r"){while(temp.charAt(temp.length-1) in trimChars){temp=temp.substring(0,temp.length-1)}}return temp.toString()}catch(e){error("_trim",e)}}function _unwind(h,m){try{var c=[],k,d=0;while(k=h[d++]){var f=__processExpression(k,m);if(isNull(f)||$c.isArray(f)&&f.isEmpty()){continue}else{if(!$c.isArray(f)){throw"Exception: Value at end of $unwind field path '"+m+"' must be an Array, but is a "+(typeof f).capitalize()+"."}}for(var b=0,l=f.length;b<l;b++){var a=$c.duplicate(k);$c.setProperty(a,m,f[b]);c.push(a)}}return c}catch(g){error("aggregate._unwind",g)}}function _whereHelper(d,h,g){var b=true;for(var f in h){if(h.hasOwnProperty(f)){b=false;break}}if($c.isString(h)&&h){h=_processClause(h);b=false}for(var c=0,a=d.length;c<a;c++){if(b||_subQuery(d[c],[h],"$or",c)){if(!g.call(d,d[c],c)){break}}}}function addObjectPrototype(name,fn,override){try{var shouldOverride=false;if(eval("typeof("+name+")")=="undefined"){shouldOverride=true}(!override&&Object.prototype[name])||Object.defineProperty(Object.prototype,name,{writable:true,enumerable:false,configurable:true,value:fn});override=shouldOverride}catch(e){error("addPrototype",e);try{Array.prototype[name]=!override&&Array.prototype[name]||fn;Function.prototype[name]=!override&&Function.prototype[name]||fn;String.prototype[name]=!override&&String.prototype[name]||fn;Number.prototype[name]=!override&&Number.prototype[name]||fn;Boolean.prototype[name]=!override&&Boolean.prototype[name]||fn;if(navigator.geolocation){var GeoLocation=navigator.geolocation.constructor;GeoLocation.prototype[name]=!override&&GeoLocation.prototype[name]||fn}}catch(ex){error("addPrototype:Non-ECMAScript 5",e)}}_df(name,fn,override)}function addHTMLPrototype(name,fn,override){try{var prototypeDefined=!!HTMLElement.prototype[name];if(prototypeDefined&&HTMLElement.prototype[name].overwritten){override=true}var original=override?"":"HTMLElement.prototype."+name+" || ";eval("HTMLElement.prototype."+name+" = "+original+"fn");if(!prototypeDefined||override){HTMLElement.prototype[name].overwritten=true}if($c.isFunction($w.HTMLElement)){$d.body&&(!$d.body[name]||override)&&($d.body[name]=fn)}_df(name,fn,override)}catch(e){error("addHTMLPrototype",e)}}_ao=addObjectPrototype;_ah=addHTMLPrototype;_df=_defineFunction;function Benchmarker(){try{this.executionTime=0;this.start=function(){this._start=new Date();this._end=0};this.stop=function(){this._end=new Date();return this.executionTime=(this._end-this._start)/1000};this.start()}catch(a){error("BenchMarker",a)}}function Cursor(d){try{var g=[],c=0,b=$c.copyObject(d||[]);if($c.isObject(b)){for(var j in b){if(!b.hasOwnProperty(j)){continue}g.push(j)}g.sort()}else{if($c.isArray(b)){for(var f=0,a=b.length;f<a;f++){g.push(f)}}}b.hasNext=function(){return c<g.length};b.next=function(){this.current=this[g[c]];return{value:this[g[c++]],done:c>=this.size()}};b.reset=function(){c=0};b.setIndex=function(k){c=parseInt(k)||0};b.current=b[g[c]];b.size=function(){return isNull(this.length)?$c.itemCount(this):this.length};return b}catch(h){error("Cursor",h)}}function OrderedList(c,f){try{f=f||function(h,g){if(h<g){return -1}if(h>g){return 1}return 0};var b=$c.copyObject(c||[]).sort(f),a=0;b.add=function(h){if(!this.length){return this.push(h)}var g=_orderListHelper(h,f,this);return this.insertBefore(g,h)};b.next=function(){return{value:this[a++],done:a>=this.size()}};b.hasNext=function(){return a<this.size()};b.size=function(){return this.length};return b}catch(d){error("OrderedList",d)}}function Queue(c){try{var b=$c.copyObject(c||[]),a=0;b.enqueue=function(f){this.push(f)};b.dequeue=function(){return this.slice(0,1)};b.next=function(){return{value:this[a++],done:a>=this.size()}};b.hasNext=function(){return a<this.size()};b.size=function(){return this.length};return b}catch(d){error("Queue",d)}}function Set(c){try{var b=$c.copyObject(c||[]),a=0;b.add=function(f){if(!this.contains(f)){return !!b.push(f)}return false};b.clear=b.removeAll;b.clean=b.toSet;b.next=function(){return{value:this[a++],done:a>=this.size()}};b.hasNext=function(){return a<this.size()};b.size=function(){return this.length};b.clean();return b}catch(d){error("Set",d)}}function ajax(params){try{var need_to_shard=false,browser_url_limit=1500,query,url,rtn;params.dataType=params.dataType||"json";params.hitch=params.hitch||"";params.oncomplete=params.oncomplete||foo;params.onbefore=params.onbefore||foo;params.onerror=params.onerror||params.onresponse||foo;params.onsuccess=params.onsuccess||params.onresponse||foo;params.query=params.data||params.query||"";params.jsonp=(params.jsonp||"callback")+"=";params.thiss=this;params.url=params.url||"";if(params.dataType.toLowerCase()=="jsonp"){var head=$d.getElementsByTagName("head")[0],func=params.jsonpCallback||"_cjson"+Math.floor(Math.random()*1000000),insert="insertBefore",tag=$d.createElement("script");while(!params.jsonpCallback&&$w[func]){func="_cjson"+Math.floor(Math.random()*1000000)}params.jsonpCallback&&(params.onsuccess=$w[func]);$w[func]=function(data){if(params.query){var thiss=params.thiss;delete params.thiss;ajax.call(thiss,params)}else{(!data.hasErrors&&(_run_func_array.call((params.context||params.thiss),params.onsuccess,[data,params.hitch,params.thiss,params.context])||true))||_run_func_array.call((params.context||params.thiss),params.onerror,[data,params.hitch,params.thiss,params.context]);_run_func_array.call((params.context||this),params.oncomplete);if(params.jsonpCallback){$w[func]=params.onsuccess}else{try{delete $w[func]}catch(e){$w[func]=undefined}}}};if(params.shard_data&&params.query&&!$c.isObject(params.query)&&params.query.length>browser_url_limit){need_to_shard=true;var query_parts=params.query;params.query={};query_parts=query_parts.indexOf("?")==0?query_parts.substr(1):query_parts;query_parts=query_parts.split("&");query_parts.map(function(str){var name_value=str.split("=");this[encodeURIComponent(name_value[0])]=encodeURIComponent(name_value[1])},params.query)}else{if(params.query&&$c.isObject(params.query)){query=$c.toStringAlt(params.query,"=","&",true);if(query.length>browser_url_limit){need_to_shard=true}else{params.query=query}}}query=params.query;url=params.url;if(need_to_shard){params.__FIRST=isNull(params.__FIRST);params.__EOF=true;query="&EOQ=false";for(var prop in params.query){if((query+prop+"xxx").length>browser_url_limit){break}query+="&"+encodeURIComponent(prop)+"="+encodeURIComponent(params.query[prop]);if(query.length>browser_url_limit){var left_over=query.substr(browser_url_limit);query=query.substr(0,browser_url_limit);params.query[prop]=left_over;break}delete params.query[prop]}}else{params.__EOF&&(params.__EOF="true");delete params.query}query=(params.run?"&run="+params.run:"")+(query||"")+((params.__EOF&&params.__EOF==="true"&&("&EOQ=true"))||"")+((params.__FIRST&&("&FIRST=true"))||"");url+=(params.url.indexOf("?")!=-1?"&":"?")+(params.jsonp||"callback=")+func+(query||"");tag.type="text/javascript";tag.async="async";tag.src=url;tag.onload=tag.onreadystatechange=function(ev){try{if(!this.readyState||/complete|loaded/.test(this.readyState.toString())){this.onload=this.onreadystatechange=null;if(head&&this.parentNode&&IEVersion()==-1){head.removeChild(this)}}}catch(e){error("ajax.tag.statechange",e)}};_run_func_array.call((params.context||this),params.onbefore,[tag,this]);head[insert](tag,head.firstChild);rtn=tag}else{var httpRequest=new Request(),fileUpload=httpRequest.upload||{};params.method=params.method||"POST";params.headers=params.headers||[];if(params.query&&$c.isObject(params.query)){params.query=$c.toStringAlt(params.query,"=","&",true)}params.query=(params.run?"run="+params.run:"")+(params.query||"");params.contentType=params.contentType||"application/x-www-form-urlencoded";params.onstatechange=params.onstatechange||foo;fileUpload.onload=params.onfileload||foo;fileUpload.onprogress=params.onprogress||foo;fileUpload.onabort=params.onabort||foo;fileUpload.onerror=params.onerror||foo;fileUpload.onloadstart=params.onloadstart||foo;if(params.method=="GET"){params.url+=params.query?"?"+params.query:"";params.query=undefined}_run_func_array.call((params.context||this),params.onbefore,[httpRequest,this]);httpRequest.onreadystatechange=function(xp){params.onstatechange(xp);var data=_ajaxServerResponse(this);if(data){_run_func_array.call((params.context||this),params.onsuccess,[data,params.hitch,params.thiss,params.context,this.status])}else{if(this.readyState==4){try{_run_func_array.call((params.context||this),params.onerror,[eval(this.responseText),params.hitch,params.thiss,params.context,this.status])}catch(e){_run_func_array.call((params.context||this),params.onerror,[this.responseText,params.hitch,params.thiss,params.context,this.status])}}}_run_func_array.call((params.context||this),params.oncomplete)};httpRequest.open(params.method,params.url,true);httpRequest.setRequestHeader("Content-type",params.contentType);for(var i=0;i<params.headers.length;i++){var header=params.headers[i];httpRequest.setRequestHeader(header.type,header.value)}httpRequest.send(params.query);rtn=httpRequest}rtn.then=function(callback){return params.onsuccess.push(callback),this};rtn.otherwise=function(callback){return params.onerror.push(callback),this};rtn["finally"]=function(callback){return params.complete.push(callback),this};return rtn}catch(e){error("ajax",e)}}function Request(){var b;try{b=new XMLHttpRequest()}catch(a){try{b=new ActiveXObject("Msxml2.XMLHTTP")}catch(a){try{b=new ActiveXObject("Microsoft.XMLHTTP")}catch(a){error("Request",e);return null}}}return b}function Responsivizer(){this.Body=$d.getElementsByTagName("body")[0];this.resp_class="responsive ";this.respond=function(){this.updateInfo();var a=this.resp_class;if(this.winW>1049){a+="large-window "}if(this.winW<1050&&this.winW>700){a+="medium-window ";if(this.winW>800){a+="landscape "}else{a+="portrait "}}if(this.winW<=700){a+="small-window ";if(this.winW>420){a+="landscape "}else{a+="portrait "}}this.Body.className=a};this.updateInfo=function(){this.winW=$(window).width();this.winH=$(window).height()};this.respond();return this}function $COOKIE(x,o,g){try{g=g||{};var u=$d.cookie,m="",y="",h=[],b=[];g.cookie&&(u=g.cookie);if($c.isObject(x)){g=o;for(var d in x){if(!x.hasOwnProperty(d)){continue}o.push(JSON.stringify(x[d]));h.push(d)}}else{if(arguments.length>1){h.push(x);b.push(JSON.stringify(o))}}if(!u&&!b.length){return{}}if(g.path&&$c.isString(g.path)){m="path="+g.path+";"}if(g.domain&&$c.isString(g.domain)){y="domain="+g.domain+";"}if(g["delete"]){$d.cookie=x+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT;"+m+y;return true}if(b.length){var v="";if($c.isInt(g.expiration)){var l=new Date();l.setDate(l.getDate()+g.expiration);v=";expires="+l.toUTCString()}for(var p=0,k=h.length;p<k;p++){$d.cookie=encodeURIComponent(h[p])+"="+encodeURIComponent(b[p])+v+m+y}return true}var f={},a=u.split(/[,;]/);for(var q=0,r=a.length;q<r;q++){var t=a[q],n=t.split(/=/,2),w=decodeURIComponent(n[0]&&n[0].ltrim&&n[0].ltrim()||""),o=n.length>1?decodeURIComponent($c.rtrim(n[1])):null;f[w]=tryEval(o)||o;if(x&&x==w){return f[w]}}if(x){return false}return f}catch(s){error("$COOKIE",s)}}function $GET(d,p){try{if(!d){var n={},l=function(t){if(t==""){return}var r=t.split("="),q=r.length;if(q>2){for(var s=2;s<q;s++){r[1]+=r[s]}}return n[r[0]]=r[1]};($l.search[0]=="?"?$l.search.substr(1):$l.search).split("&").map(l);($l.hash[0]=="#"?$l.hash.substr(1):$l.hash).split("@").map(l);return n}p=p||{};var h=p.ignoreCase||p=="ignoreCase"?"i":"",a=!!$COMMIT.update&&(p.defer||p=="defer"),m=new RegExp("[?|&|@]"+d+"=",h),j="search",o={};o.hash=$l.hash;o.search=$l.search;if(a){o.hash=$COMMIT.hash||"";o.search=$COMMIT.search||""}else{if(p.url||$c&&$c.isString&&($c.isString(p)&&(p.indexOf("?")!=-1||p.indexOf("#")!=-1))){var k=p.url||p,f,c=k.indexOf("?");c!=-1&&(k=k.substr(c));f=k.indexOf("#");if(f!=-1){o.hash=k.substr(f);k=k.substr(0,f)}o.search=k}}var b="&";if(m.test(o.hash)){j="hash";b="@"}else{if(!m.test(o.search)){return false}}m=new RegExp("(.*)?("+d+"=)(.*?)((["+b+"])(.*)|$)",h);return decodeURI(o[j].replace(m,"$3"))}catch(g){logit("$GET");logit(g)}}function $SET(f,l){try{if(arguments.length==3||$c.isString(f)){var c=f;f={};f[c]=l;l=arguments[2]||{}}else{if(!l){l={}}}var a=!!(l.defer||l=="defer"),g={search:$l.search,hash:$l.hash};if($c.isArray(f)){for(var d=0,h=f.length;d<h;d++){var b=f[d];g=_set(b.variable,b.value,a,l,g)}}else{if($c.isObject(f)){for(c in f){if(!f.hasOwnProperty(c)){continue}g=_set(c,f[c],a,l,g)}}}if(!a){var k=l.noHistory||l=="noHistory"||l=="h";if(k){if(g.hash[0]!="#"){g.hash="#"+g.hash}if(g.search&&g.search[0]!="?"){g.search="?"+g.search}$l.replace(g.search+g.hash);return}$l.hash=g.hash;if($l.search.trim()!=g.search.trim()){$l.search=g.search}}}catch(j){error("$SET",j)}}function $DEL(m,n){try{if($c.isString(m)){m=[m]}n=n||{};var h=n.ignoreCase||n=="ignoreCase"?"i":"",a=!!(n.defer||n=="defer"),f={search:$l.search,hash:$l.hash},k,j;for(var c=0,d=m.length;c<d;c++){var b=m[c];k=new RegExp("[?|&|@]"+b+"=",h);j="search";if(k.test($l.hash)){j="hash"}else{if(!k.test($l.search)){continue}}$COMMIT[j]=$COMMIT[j]||"";k=new RegExp("([&]?|[@])("+b+"=([^&|^@]*)[&]?)",h);if(!a){var l=n.noHistory||n=="noHistory"||n=="h";if(l){if(f.hash[0]!="#"){f.hash="#"+f.hash}if(f.search&&f.search[0]!="?"){f.search="?"+f.search}$l.replace(f.search.replace(k,"")+f.hash.replace(k,""));return true}$l[j]=$l[j].replace(k,"");if(j=="hash"){_invokeHashChange()}}else{$COMMIT[j]=($COMMIT[j]||$l[j]);$COMMIT[j]=$COMMIT[j].replace(k,"");$COMMIT.update=true}}return true}catch(g){error("$DEL",g);return false}}function $COMMIT(a){try{a=a||{};var d=a.noHistory||a=="noHistory"||a=="h";if($COMMIT.update){if($COMMIT.search){if(d){$l.replace($COMMIT.search+($COMMIT.hash||""))}else{$l.href=$COMMIT.search+($COMMIT.hash||"")}}else{if($COMMIT.hash){if(d){var c=$COMMIT.hash[0]=="#"?$COMMIT.hash:"#"+$COMMIT.hash;$l.replace($COMMIT.hash)}else{$l.hash=$COMMIT.hash}$COOKIE("CRAYDENTHASH",$l.hash[0]=="#"?$l.hash.substring(1):$l.hash);_invokeHashChange()}}$ROLLBACK()}}catch(b){error("$COMMIT",b)}}function $ROLLBACK(){try{delete $COMMIT.update;delete $COMMIT.noHistory;delete $COMMIT.search;delete $COMMIT.hash;delete $COMMIT.onhashchange}catch(a){error("$ROLLBACK",a)}}function cacheImages(f){try{if($c.isString(f)){f=[f]}for(var c=0,a=f.length;c<a;c++){var b=$d.createElement("img");b.src=f[c]}}catch(d){error("cacheImages",d)}}function cout(){try{if($c&&$c.DEBUG_MODE&&console&&console.log){for(var b=0,a=arguments.length;b<a;b++){console.log(arguments[b])}}}catch(c){error("cout",c)}}function cuid(a){try{var d="",c="";a&&(d="{",c="}");return d+"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(h){var g=Math.random()*16|0,f=h=="x"?g:(g&3|8);return f.toString(16)})+c}catch(b){error("cuid",b)}}function error(b,a){try{$c.DEBUG_MODE&&cout("Error in "+b+"\n"+(a.description||a),a)}catch(a){cout("Error in "+b+"\n"+(a.description||a))}}function fillTemplate(htmlTemplate,objs,offset,max,bound){try{var nested=true;if(!fillTemplate.binding&&!fillTemplate.declared&&!fillTemplate.refs){nested=false;fillTemplate.binding={original:[],replacer:[]};fillTemplate.declared={};fillTemplate.refs=[]}if(!htmlTemplate){return""}if($c.isBoolean(offset)){bound=offset;max=offset=0}else{if(!isNull(offset)&&isNull(max)){max=offset;offset=0}}var domRef;$c.isDomElement(htmlTemplate)&&(domRef=htmlTemplate,htmlTemplate=htmlTemplat