﻿// Copyright (c) Microsoft.  All rights reserved.
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(function(b,a){if(!b.datajs)b.datajs={};if(!b.OData)b.OData={};var bb=b.datajs,c=b.OData,xc="b",db="c",W="entry",eb="f",xb="p",uc="s",ge="u",Fc="n",gb="c",Sd="d",Cb="i",yb="p",yc="n",A=function(b){return b!==null&&b!==a},td=function(b,d){var a,c;for(a=0,c=b.length;a<c;a++)if(b[a]===d)return true;return false},B=function(b,c){return b!==a?b:c},d=function(a){if(arguments.length===1){b.setTimeout(a,0);return}var c=Array.prototype.slice.call(arguments,1);b.setTimeout(function(){a.apply(this,c)},0)},Pb=function(a,c){if(!a)return null;if(w(a)){var b,e,d;for(b=0,e=a.length;b<e;b++){d=Pb(a[b],c);if(d)return d}return null}else return a.dataServices?Pb(a.dataServices.schema,c):c(a)},Ec=function(a){return a.__edmType==="Edm.DateTimeOffset"||!a.__edmType&&a.__offset},Bb=function(a){if(typeof a==="string")return a;var f=Ec(a),d=lc(a.__offset);if(f&&d!=="Z"){a=new Date(a.valueOf());var c=bd(d),i=a.getUTCHours()+c.d*c.h,h=a.getMinutes()+c.d*c.m;a.setUTCHours(i,h)}else if(!f)d="";var e=a.getUTCFullYear(),k=a.getUTCMonth()+1,g="";if(e<=0){e=-(e-1);g="-"}var b=a.getUTCMilliseconds();if(b===0)b="";else b="."+j(b.toString(),3);return g+j(e,4)+"-"+j(k,2)+"-"+j(a.getUTCDate(),2)+"T"+j(a.getUTCHours(),2)+":"+j(a.getUTCMinutes(),2)+":"+j(a.getUTCSeconds(),2)+b+d},Qc=function(g){var a=g.ms,f="";if(a<0){f="-";a=-a}var e=Math.floor(a/8.64e7);a-=8.64e7*e;var d=Math.floor(a/3.6e6);a-=3.6e6*d;var b=Math.floor(a/6e4);a-=6e4*b;var c=Math.floor(a/1e3);a-=c*1e3;return f+"P"+j(e,2)+"DT"+j(d,2)+"H"+j(b,2)+"M"+j(c,2)+(a>0?"."+j(a,3):"")+"S"},j=function(b,c){var a=b.toString(10);while(a.length<c)a="0"+a;return a},lc=function(a){return!a||a==="Z"||a==="+00:00"||a==="-00:00"?"Z":a},Se=function(b,g,c,f,d,e){return d.request(b,function(d){try{d.headers&&Jb(d.headers);d.data===a&&f.read(d,e)}catch(h){if(h.request===a)h.request=b;if(h.response===a)h.response=d;c(h);return}g(d.data,d)},c)},w=function(a){return Object.prototype.toString.call(a)==="[object Array]"},xd=function(a){return Object.prototype.toString.call(a)==="[object Date]"},Nb=function(b,d){if(b){var a,c;for(a=0,c=b.length;a<c;a++)if(b[a].name===d)return b[a]}return null},nc=function(a,b,c){return a?Pb(b,function(b){return me(a,b,c)}):null},Hb=function(b,a){return nc(b,a,"complexType")},H=function(b,a){return nc(b,a,"entityType")},Ie=function(b,a){return a.indexOf(b)===0&&a.charAt(b.length)==="."?a.substr(b.length+1):null},me=function(g,c,f){if(c){var d=Ie(c["namespace"],g),b=c[f];if(d&&b){var a,e;for(a=0,e=b.length;a<e;a++)if(b[a].name===d)return b[a]}}return null},Ue={accept:"Accept","content-type":"Content-Type",dataserviceversion:"DataServiceVersion",maxdataserviceversion:"MaxDataServiceVersion"},Jb=function(a){for(var b in a){var d=b.toLowerCase(),c=Ue[d];if(c&&b!==c){var e=a[b];delete a[b];a[c]=e}}},Kb=function(b,c){return b!==a?b:c},e=function(a){return parseInt(a,10)},mf=/^([+-])?P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)(?:\.(\d+))?S)?)?/,ad=function(c){var b=mf.exec(c);if(b===null)throw{message:"Invalid duration value."};var i=b[2]||"0",g=b[3]||"0",j=e(b[4]||0),h=e(b[5]||0),d=e(b[6]||0),f=parseFloat(b[7]||0);if(i!=="0"||g!=="0")throw{message:"Unsupported duration value."};var a=b[8];if(!a)a=0;else{if(a.length>3)throw{message:"Cannot parse duration value to given precision."};while(a.length<3)a+="0";a=e(a)}a+=f*1e3+d*6e4+h*3.6e6+j*8.64e7;if(b[1]==="-")a=-a;return{ms:a,__edmType:"Edm.Time"}},bd=function(a){var b=a.substring(0,1);b=b==="+"?1:-1;var d=e(a.substring(1)),c=e(a.substring(a.indexOf(":")+1));return{d:b,h:d,m:c}},I=function(b){switch(typeof b){case"object":return!b?Fc:w(b)||w(b.results)?eb:b.__metadata&&b.__metadata.uri!==a?W:w(b.EntitySets)?uc:w(b.__batchRequests)?xc:xd(b)?xb:db;case"string":case"number":case"boolean":return xb}return ge},Wc=function(b,c,d){if(!b.method)b.method="GET";if(!b.headers)b.headers={};else Jb(b.headers);if(b.headers.Accept===a)b.headers.Accept=c.accept;A(b.data)&&b.body===a&&c.write(b,d)},Pe=function(a){switch(I(a)){case db:return a.__deferred&&a.__deferred.uri?Sd:gb;case eb:case W:return Cb;case xb:return yb}return yc},jb=function(a){throw a;},rd=function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},Df=/^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#:]+)?(\?[^#]*)?(#.*)?/,jd=["scheme","authority","path","query","fragment"],Tb=function(e){var b={isAbsolute:false};if(e){var c=Df.exec(e);if(c){var a,d;for(a=0,d=jd.length;a<d;a++)if(c[a+1])b[jd[a]]=c[a+1]}if(b.scheme)b.isAbsolute=true}return b},Tc=function(a){return"".concat(a.scheme||"",a.authority||"",a.path||"",a.query||"",a.fragment||"")},ue=/^\/{0,2}(?:([^@]*)@)?([^:]+)(?::{1}(\d+))?/,ze=/%[0-9A-F]{2}/ig,xe=function(c){var b=Tb(c),e=b.scheme,d=b.authority;if(e){b.scheme=e.toLowerCase();if(d){var a=ue.exec(d);if(a)b.authority="//"+(a[1]?a[1]+"@":"")+a[2].toLowerCase()+(a[3]?":"+a[3]:"")}}c=Tc(b);return c.replace(ze,function(a){return a.toLowerCase()})},q=function(e,f){if(!f)return e;var a=Tb(e);if(a.isAbsolute)return e;var c=Tb(f),b={},d;if(a.authority){b.authority=a.authority;d=a.path;b.query=a.query}else{if(!a.path){d=c.path;b.query=a.query||c.query}else{if(a.path.charAt(0)==="/")d=a.path;else d=Zd(a.path,c.path);b.query=a.query}b.authority=c.authority}b.path=ne(d);b.scheme=c.scheme;b.fragment=a.fragment;return Tc(b)},Zd=function(d,b){var a="/",c;if(b){c=b.lastIndexOf("/");a=b.substring(0,c);if(a.charAt(a.length-1)!=="/")a=a+"/"}return a+d},ne=function(a){var b="",d="",c;while(a)if(a.indexOf("..")===0||a.indexOf(".")===0)a=a.replace(/^\.\.?\/?/g,"");else if(a.indexOf("/..")===0){a=a.replace(/^\/\..\/?/g,"/");c=b.lastIndexOf("/");if(c===-1)b="";else b=b.substring(0,c)}else if(a.indexOf("/.")===0)a=a.replace(/^\/\.\/?/g,"/");else{d=a;c=a.indexOf("/",1);if(c!==-1)d=a.substring(0,c);b=b+d;a=a.replace(d,"")}return b},sb=0,jf=function(a){return a.method&&a.method!=="GET"?false:true},Ze=function(f){var a=b.document.createElement("IFRAME");a.style.display="none";var c=f.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/\</g,"&lt;"),e='<html><head><script type="text/javascript" src="'+c+'"><\/script></head><body></body></html>',d=b.document.getElementsByTagName("BODY")[0];d.appendChild(a);Ac(a,e);return a},Yd=function(){if(b.XMLHttpRequest)return new b.XMLHttpRequest;var a;if(b.ActiveXObject)try{return new b.ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(d){try{return new b.ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){a=c}}else a={message:"XMLHttpRequest not supported"};throw a;},Te=function(a){return a.indexOf("http://")===0||a.indexOf("https://")===0||a.indexOf("file://")===0},pf=function(c){if(!Te(c))return true;var a=b.location,d=a.protocol+"//"+a.host+"/";return c.indexOf(d)===0},Qe=function(c,d){try{delete b[c]}catch(e){b[c]=a;if(d===sb-1)sb-=1}},Rb=function(a){if(a){Ac(a,"");a.parentNode.removeChild(a)}return null},he=function(f,e){var b=f.getAllResponseHeaders().split(/\r?\n/),a,d;for(a=0,d=b.length;a<d;a++)if(b[a]){var c=b[a].split(": ");e[c[0]]=c[1]}},Ac=function(b,c){var a=b.contentWindow?b.contentWindow.document:b.contentDocument.document;a.open();a.write(c);a.close()};c.defaultHttpClient={callbackParameterName:"$callback",formatQueryString:"$format=json",enableJsonpCallback:false,request:function(c,m,j){var o={},a=null,h=false,f;o.abort=function(){f=Rb(f);if(h)return;h=true;if(a){a.abort();a=null}j({message:"Request aborted"})};var k=function(){f=Rb(f);if(!h){h=true;a=null;j({message:"Request timed out"})}},g,e=c.requestUri,r=B(c.enableJsonpCallback,this.enableJsonpCallback),q=B(c.callbackParameterName,this.callbackParameterName),s=B(c.formatQueryString,this.formatQueryString);if(!r||pf(e)){a=Yd();a.onreadystatechange=function(){if(a===null||a.readyState!==4)return;var d=a.statusText,b=a.status;if(b===1223){b=204;d="No Content"}var g=[];he(a,g);var f={requestUri:e,statusCode:b,statusText:d,headers:g,body:a.responseText};h=true;a=null;if(b>=200&&b<=299)m(f);else j({message:"HTTP request failed",request:c,response:f})};a.open(c.method||"GET",e,true,c.user,c.password);if(c.headers)for(g in c.headers)a.setRequestHeader(g,c.headers[g]);if(c.timeoutMS){a.timeout=c.timeoutMS;a.ontimeout=k}a.send(c.body)}else{if(!jf(c))throw{message:"Request is not local and cannot be done through JSONP."};var p=sb;sb+=1;var v=p.toString(),t=false,l;g="handleJSONP_"+v;b[g]=function(a){f=Rb(f);if(!h){t=true;b.clearTimeout(l);Qe(g,p);if(b.ActiveXObject&&!b.DOMParser)a=b.JSON.parse(b.JSON.stringify(a));d(m,{body:a,statusCode:200,headers:{"Content-Type":"application/json"}})}};var u=c.timeoutMS?c.timeoutMS:1.2e5;l=b.setTimeout(k,u);var i=q+"=parent."+g;if(this.formatQueryString)i+="&"+s;var n=e.indexOf("?");if(n===-1)e=e+"?"+i;else if(n===e.length-1)e=e+i;else e=e+"&"+i;f=Ze(e)}return o}};var L=function(f){if(!f)return null;var b=f.split(";"),d={},a,e;for(a=1,e=b.length;a<e;a++){var c=b[a].split("=");d[rd(c[0])]=c[1]}return{mediaType:rd(b[0]),properties:d}},ee=function(b){if(!b)return a;var d=b.mediaType,c;for(c in b.properties)d+=";"+c+"="+b.properties[c];return d},ic=function(c,b,a,d){return{contentType:c,dataServiceVersion:b,metadata:a?a.metadata:null,context:a,handler:d}},Dc=function(b,c,d){if(!b)return;var a=b.headers;if(!a[c])a[c]=d},If=function(a,b){if(!a.dataServiceVersion)a.dataServiceVersion=b},Yb=function(c,d){var b=c.headers;return b&&b[d]||a},Rc=function(a){return L(Yb(a,"Content-Type"))},zf=/^\s?(\d+\.\d+);?.*$/,kc=function(c){var b=Yb(c,"DataServiceVersion");if(b){var a=zf.exec(b);if(a&&a.length)return a[1]}},Uc=function(a,b){return a.accept.indexOf(b.mediaType)>=0},lf=function(c,g,b,h){if(!b||!b.headers)return false;var e=Rc(b),i=kc(b)||"",f=b.body;if(!A(f))return false;if(Uc(c,e)){var d=ic(e,i,h,c);d.response=b;b.data=g(c,f,d);return b.data!==a}return false},af=function(d,f,b,g){if(!b||!b.headers)return false;var e=Rc(b),h=kc(b);if(!e||Uc(d,e)){var c=ic(e,h,g,d);c.request=b;b.body=f(d,b.data,c);if(b.body!==a){Dc(b,"DataServiceVersion",c.dataServiceVersion||"1.0");Dc(b,"Content-Type",ee(c.contentType));return true}}return false},O=function(c,b,d,a){return{accept:d,maxDataServiceVersion:a,read:function(a,b){return lf(this,c,a,b)},write:function(c,a){return af(this,b,c,a)}}},yf=function(b,a){return a},Xe=function(c,b){return A(b)?b.toString():a};c.textHandler=O(yf,Xe,"text/plain","2.0");var ob="application/xml",yd="http://",tb=yd+"www.w3.org/",cb=yd+"schemas.microsoft.com/ado/",rb=cb+"2007/08/dataservices",P=tb+"2000/xmlns/",ub=tb+"XML/1998/namespace",wd=cb+"2007/06/edmx",Hf=cb+"2008/09/edm",Ff=cb+"2006/04/edm",Gf=cb+"2007/05/edm",f=tb+"2005/Atom",ab=tb+"2007/app",v=rb,i=rb+"/metadata",Fb=rb+"/related/",nd=rb+"/scheme",Bd=function(a){var b=/(^\s)|(\s$)/;return b.test(a)},gf=function(c,f){var g="<c>"+f+"</c>",d=pb(g,null),e=c.ownerDocument,b=d.domNode;if("importNode"in e)b=e.importNode(d.domNode,true);var a=b.firstChild;while(a){c.appendChild(a);a=a.nextSibling}},kb=function(c,b,a){try{c.setProperty(b,a)}catch(d){}},Kc=function(){var c,a;if(b.ActiveXObject)try{a=new ActiveXObject("Msxml2.DOMDocument.6.0");a.async=false;return a}catch(e){try{a=new ActiveXObject("Msxml2.DOMDocument.3.0");a.async=false;kb(a,"ProhibitDTD",true);kb(a,"MaxElementDepth",256);kb(a,"AllowDocumentFunction",false);kb(a,"AllowXsltScript",false);return a}catch(d){c=d}}else{if(b.DOMParser)return new b.DOMParser;c={message:"XML DOM parser not supported"}}throw c;},ac=function(a){return{name:a.localName,"namespace":a.nsURI,value:a.domNode.value}},hc=function(a){var b={name:a.localName,"namespace":a.nsURI,value:Sc(a.domNode),attributes:[],children:[]};J(a,function(a){a.nsURI!==P&&b.attributes.push(ac(a))});l(a,function(a){b.children.push(hc(a))});return b},bf=function(a){var b=/^\s*$/;return a===null||b.test(a)},Fd=function(a){while(a!==null&&a.nodeType===1){var b=nb(a,"space",ub);if(b==="preserve")return true;else if(b==="default")break;else a=a.parentNode}return false},Sc=function(f){var c=null,b=f.firstChild,h=f.ownerDocument.preserveWhiteSpace===false,d;while(b){if(b.nodeType===3||b.nodeType===4){var g=b.nodeValue,e=h||!bf(g);if(!e){if(d===a)d=Fd(f);e=d}if(e)if(!c)c=g;else c+=g}b=b.nextSibling}return c},s=function(b,d,e){var c;if(b.getElementsByTagNameNS){c=b.getElementsByTagNameNS(d,e);if(c.length!==0)return c[0]}else{var a=b.firstChild;while(a){if(a.nodeType===1&&kd(a)===e&&a.namespaceURI===d)return a;a=a.nextSibling}}return null},Kd=function(b,f){var d="http://www.mozilla.org/newlayout/xml/parsererror.xml",a=u(b,"");if(a.localName==="parsererror"&&a.nsURI===d){var h=Sc(b),c=s(a,d,"sourcetext"),g=c?c.nodeValue:"";throw{message:h,errorXmlText:f,srcText:g};}var e="http://www.w3.org/1999/xhtml";if(a.localName==="h3"&&a.nsURI==e||s(b,e,"h3"))throw{message:n(b),errorXmlText:f,srcText:""};},dc=function(c,d,e){var b=c.ownerDocument,a;if(b.createAttributeNS)a=b.createAttributeNS(P,d);else a=b.createNode(2,d,P);a.nodeValue=e;c.setAttributeNode(a)},Db=function(a,b){if(Bd(b)){var d=vc(a,"space",ub,"xml");d.value="preserve"}var c=a.ownerDocument.createTextNode(b);a.appendChild(c)},J=function(f,e){var b,c=f.domNode,a,d;for(a=0,d=c.attributes.length;a<d;a++){b=c.attributes.item(a);e(u(b))}},K=function(b,a,c){return nb(b.domNode,a,c)},Be=function(d,b,c){var a=d.attributes;return a.getNamedItemNS?a.getNamedItemNS(c,b):a.getQualifiedItem(b,c)},l=function(c,d){var a=c.domNode.firstChild,b;while(a!==null){if(a.nodeType===1){b=q(Sb(a),c.baseURI);d(u(a,b))}a=a.nextSibling}},Oc=function(c){var a=c.domNode.firstChild,b;while(a!==null){if(a.nodeType===1){b=q(Sb(a),c.baseURI);return u(a,b)}a=a.nextSibling}return null},n=function(e){var c=e.text;if(c!==a)return c;c="";var b=e.firstChild;if(b)do{if(b.nodeType===3||b.nodeType===4)c+=b.nodeValue;var d=b.firstChild;if(!d)while(b!==e){d=b.nextSibling;if(d){b=d;break}else b=b.parentNode}else b=d}while(b!==e);return c},kd=function(a){return a.localName?a.localName:a.baseName},Yc=function(d,c){var a;if(b.ActiveXObject){a=Kc();a.documentElement=a.createNode(1,d,c)}else if(b.document.implementation&&b.document.implementation.createDocument)a=b.document.implementation.createDocument(c,d,null);return u(a.documentElement)},vc=function(d,c,g,f){var e=d.ownerDocument,b;c=f?f+":"+c:c;if(e.createAttributeNS){b=e.createAttributeNS(g,c);d.setAttributeNodeNS(b)}else{b=e.createNode(2,c,g||a);d.setAttributeNode(b)}return b},Ce=function(f,b,g,e){var d=f.ownerDocument,c;b=e?e+":"+b:b;if(d.createElementNS)c=d.createElementNS(g,b);else c=d.createNode(1,b,g||a);f.appendChild(c);return c},k=function(d,g,e,f){var c=d.domNode.ownerDocument,b;if(c.createElementNS)b=c.createElementNS(e,g);else b=c.createNode(1,g,e||a);f&&Db(b,f);d.domNode.appendChild(b);return u(b)},t=function(c,g,e,f){var d=c.domNode.ownerDocument,b;if(d.createAttributeNS){b=d.createAttributeNS(e,g);b.value=f;c.domNode.setAttributeNodeNS(b)}else{b=d.createNode(2,g,e||a);b.value=f;c.domNode.setAttributeNode(b)}return u(b)},V=function(b,a){return a?a+":"+b:b},pb=function(d,c){var a=Bf(d),b=q(Sb(a),c);return u(a,b)},ld=function(a){var b=a.domNode.ownerDocument;return Ic(b)},de=function(d){var b=d.childNodes,a,e=b.length;if(e===0)return"";var c=d.ownerDocument.createDocumentFragment();for(a=0;a<e;a++)c.appendChild(b[a].cloneNode(true));return Ic(c)},Ic=function(c){var d=c.xml;if(d!==a)return d;if(b.XMLSerializer){var e=new b.XMLSerializer;return e.serializeToString(c)}throw{message:"XML serialization unsupported"};},nb=function(a,b,c){if(a.getAttributeNS)return a.getAttributeNS(c||null,b);var d=a.attributes.getQualifiedItem(b,c);return d?d.value:null},Sb=function(a){return nb(a,"base",ub)},Bf=function(b){var a=Kc();if(a.parseFromString){a=a.parseFromString(b,"text/xml");Kd(a.documentElement,b)}else{a.loadXML(b);if(a.parseError.errorCode!==0)throw{message:a.parseError.reason,errorXmlText:b,srcText:a.parseError.srcText};}return a.documentElement},u=function(a,d){var b=a.namespaceURI,c=a.nodeName;if(!b)if(a.nodeType===2&&(c==="xmlns"||c.indexOf("xmlns:",0)===0))b=P;else b=null;return{baseURI:d,domNode:a,localName:kd(a),nsURI:b}},be=function(b){if(b.nsURI===v)switch(b.localName){case"links":return xf(b);case"uri":return vd(b)}return a},xf=function(b){var a=[];l(b,function(b){if(b.localName==="uri"&&b.nsURI===v){var c=vd(b);a.push(c)}});return{results:a}},vd=function(a){return{uri:n(a.domNode)}},Wd=function(a){if(I(a)===db&&!a.__metadata&&a.hasOwnProperty("uri"))return Ef(a)},Ef=function(a){var b=we(null,"uri",v);a.uri&&Db(b.domNode,a.uri);return b},we=function(a,c,b){return a?k(a,c,b):Yc(c,b)},Af=function(c,b){if(b){var a=pb(b);if(a)return be(a)}},Ye=function(g,f,b){var e=b.contentType=b.contentType||L(ob),c=a;if(e&&e.mediaType===ob){var d=Wd(f);if(d)c=ld(d)}return c};c.xmlHandler=O(Af,Ye,ob,"2.0");var Jc=["application/atom+xml","application/atomsvc+xml","application/xml"],Zc=Jc[0],vf=V("inline","m"),We=V("properties","m"),Ud=V("type","m"),Td=V("null","m"),Rd=[f,ab,ub,P],Ld={SyndicationAuthorEmail:"author/email",SyndicationAuthorName:"author/name",SyndicationAuthorUri:"author/uri",SyndicationContributorEmail:"contributor/email",SyndicationContributorName:"contributor/name",SyndicationContributorUri:"contributor/uri",SyndicationPublished:"published",SyndicationRights:"rights",SyndicationSummary:"summary",SyndicationTitle:"title",SyndicationUpdated:"updated"},mb=function(a){return!td(Rd,a)},Q=function(a){return a},wf=function(a){return a==="true"},He=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(.*)$/,bc=function(m,h){var a=He.exec(m),d=a?lc(a[8]):null;if(!a||!h&&d!=="Z")throw{message:"Invalid date/time value"};var g=e(a[1]);if(g<=0)g++;var b=a[7];if(!b)b=0;else{if(b.length>3)throw{message:"Cannot parse date/time value to given precision."};while(b.length<3)b+="0";b=e(b)}var k=e(a[4]),j=e(a[5]),l=e(a[6]);if(d!=="Z"){var f=bd(d),i=-f.d;k+=f.h*i;j+=f.m*i}var c=new Date;c.setUTCFullYear(g,e(a[2])-1,e(a[3]));c.setUTCHours(k,j,l,b);if(isNaN(c.valueOf()))throw{message:"Invalid date/time value"};if(h){c.__edmType="Edm.DateTimeOffset";c.__offset=d}return c},Ve=function(a){return bc(a,false)},fe=function(a){return bc(a,true)},jc={"Edm.Boolean":wf,"Edm.Binary":Q,"Edm.DateTime":Ve,"Edm.DateTimeOffset":fe,"Edm.Time":ad,"Edm.Decimal":Q,"Edm.Guid":Q,"Edm.String":Q,"Edm.Byte":e,"Edm.Double":parseFloat,"Edm.Single":parseFloat,"Edm.Int16":e,"Edm.Int32":e,"Edm.Int64":Q,"Edm.SByte":e},m=function(a){return a.toString()},Nd={"Edm.Binary":m,"Edm.Boolean":m,"Edm.Byte":m,"Edm.DateTime":Bb,"Edm.DateTimeOffset":Bb,"Edm.Decimal":m,"Edm.Double":m,"Edm.Guid":m,"Edm.Int16":m,"Edm.Int32":m,"Edm.Int64":m,"Edm.SByte":m,"Edm.Single":m,"Edm.String":m,"Edm.Time":Qc},Lb=function(b){return b&&jc[b]!==a},Xb=function(a,b){if(a!==null&&b){var c=jc[b];if(c)a=c(a)}return a},Zb=function(a,b){if(a!==null&&b){if(xd(a))b=Ec(a)?"Edm.DateTimeOffset":"Edm.DateTime";var c=Nd[b];if(c)a=c(a)}return a},Gc=function(a,b){if(a.nsURI===f)switch(a.localName){case"feed":return ef(a,b);case"entry":return cd(a,b)}if(a.nsURI===ab&&a.localName==="service")return Md(a)},ef=function(c,d){var a={},b={results:[],__metadata:a};a.feed_extensions=R(c);l(c,function(c){switch(c.nsURI){case f:switch(c.localName){case"id":a.uri=q(n(c.domNode),c.baseURI);a.uri_extensions=R(c);break;case"title":a.title=n(c.domNode);a.title_extensions=R(c);break;case"entry":var h=cd(c,d);b.results.push(h);break;case"link":Ae(c,b)}return;case i:if(c.localName==="count"){b.__count=e(n(c.domNode));return}}var g=T(c);a.feed_extensions.push(g)});return b},Ae=function(d,c){var a=hd(d),b=c.__metadata;switch(a.rel){case"next":c.__next=a.href;b.next_extensions=a.extensions;break;case"self":b.self=a.href;b.self_extensions=a.extensions}},hd=function(b){var a={extensions:[]},c;J(b,function(d){if(!d.nsURI)switch(d.localName){case"href":a.href=q(d.domNode.nodeValue,b.baseURI);return;case"type":case"rel":a[d.localName]=d.domNode.nodeValue;return}if(mb(d.nsURI)){c=S(d);a.extensions.push(c)}});if(!a.href)throw{error:"href attribute missing on link element",element:b};return a},T=function(a){var b={name:a.localName,namespaceURI:a.nsURI,attributes:R(a),children:[]};l(a,function(c){var a=T(c);b.children.push(a)});if(b.children.length===0){var c=n(a.domNode);if(c)b.value=c}return b},R=function(b){var a=[];J(b,function(b){if(mb(b.nsURI)){var c=S(b);a.push(c)}});return a},S=function(a){return{name:a.localName,namespaceURI:a.nsURI,value:a.domNode.nodeValue}},mc=function(d,b){if(d.indexOf("/")===-1)return b[d];else{var e=d.split("/"),c,f;for(c=0,f=e.length;c<f;c++){if(b===null)return a;b=b[e[c]];if(b===a)return b}return b}},ce=function(g,b,k,h){var d;if(g.indexOf("/")===-1){b[g]=k;d=g}else{var f=g.split("/"),c,l;for(c=0,l=f.length-1;c<l;c++){var e=b[f[c]];if(e===a){e={};b[f[c]]=e}else if(e===null)return;b=e}d=f[c];b[d]=k}if(h){var j=b.__metadata=b.__metadata||{},i=j.properties=j.properties||{},m=i[d]=i[d]||{};m.type=h}},fc=function(a){return Ld[a]||a},Ee=function(f,h,b,g){var d=h.split("/"),c,e;for(c=0,e=d.length;c<e;c++)if(d[c].charAt(0)==="@")return nb(b,d[c].substring(1),f);else{b=s(b,f,d[c]);if(!b)return a}return g?de(b):n(b)},Je=function(e,h,k,j,f,g){var a=j,d=k.split("/"),b,i;for(b=0,i=d.length;b<i;b++){var c;if(d[b].charAt(0)==="@"){c=Be(a,d[b].substring(1),e);if(!c)c=vc(a,d[b].substring(1),e,h)}else{c=s(a,e,d[b]);if(!c)c=Ce(a,d[b],e,h)}a=c}if(a.nodeType===2)a.value=g;else{f&&a.setAttribute("type",f);if(f==="xhtml")gf(a,g);else Db(a,g)}},Me=function(d){if(d.childNodes.length)return false;var c=d.attributes,e=c.length;if(e===0)return true;for(var b=0;b<e;b++){var a=c[b].nodeName;if(a!=="xmlns"&&a.indexOf("xmlns:")!==0&&a!=="m:type")return false}return true},te=function(j,m){var b=s(j.domNode,i,"properties");if(!b){var h=s(j.domNode,f,"content");if(h)b=s(h,i,"properties")}if(b){var a=b,e=m.split("/"),d,l;for(d=0,l=e.length-1;d<l;d++){a=s(a,v,e[d]);if(!a)return}var g=s(a,v,e[d]);g&&a.removeChild(g);var c=a;while(c!==b&&Me(c)){var k=c.parentNode;k.removeChild(c);c=k}}},Wb=function(a,e,d,l,j,b,n){var g=a["FC_TargetPath"+b],h=fc(g),k=g!==h?f:a["FC_NsUri"+b],i=a["FC_KeepInContent"+b]==="true"?true:false,m=a["FC_ContentKind"+b],o=a["FC_NsPrefix"+b]||null,c=mc(e,l);if(!A(c))return;if(!i){n.dataServiceVersion="2.0";te(d,e)}c=Zb(c,j);Je(k,o,h,d.domNode,m,c)},Vb=function(b,h,k,g,e,c){if(b["FC_KeepInContent"+c]==="true")return;if(mc(h,g)===null)return;var i=b["FC_TargetPath"+c],j=fc(i),l=i!==j?f:b["FC_NsUri"+c],m=b["FC_ContentKind"+c]==="xhtml",d=Ee(l,j,k.domNode,m);if(d===a)return;d=Xb(d,e);ce(h,g,d,e)},Eb=function(g,b,j){var h=j.split("/"),c,i;while(b){var d=b;for(c=0,i=h.length;c<i;c++){var f=d.property;if(!f)break;var e=Nb(f,h[c]);if(!e)break;var a=e.type;if(!a||Lb(a))return a||null;d=Hb(a,g);if(!d)return null}b=H(b.baseType,g)}return null},Qd=function(l,h,d){if(!d||d.length===0)return;var j=h.__metadata.type;while(j){var a=H(j,d);if(!a)return;var c,b=a.FC_SourcePath;if(b){c=Eb(d,a,b);Vb(a,b,l,h,c,"")}var i=a.property;if(i){var g,n;for(g=0,n=i.length;g<n;g++){var e=i[g],k=0,f="";while(e["FC_TargetPath"+f]){b=e.name;c=e.type;var m=e["FC_SourcePath"+f];if(m){b+="/"+m;c=Eb(d,a,b)}Vb(e,b,l,h,c,f);k++;f="_"+k}}}j=a.baseType}},cd=function(c,d){var a={},b={__metadata:a},e=K(c,"etag",i);if(e)a.etag=e;l(c,function(c){if(c.nsURI===f)switch(c.localName){case"id":a.uri=q(n(c.domNode),c.baseURI);a.uri_extensions=R(c);break;case"category":se(c,b,a);break;case"content":ae(c,b);break;case"link":re(c,b,d)}c.nsURI===i&&c.localName==="properties"&&vb(c,b,a)});Qd(c,b,d);return b},se=function(c,e,a){var d=K(c,"scheme"),f=K(c,"term");if(d===nd){if(e.__metadata.type)throw{message:"Invalid AtomPub document: multiple category elements defining the entry type were encounterd withing an entry",element:c};a.type=f;a.type_extensions=[];var b;J(c,function(c){if(!c.nsURI){if(c.localName!=="scheme"&&c.localName!=="term"){b=S(c);a.type_extensions.push(b)}}else if(mb(c.nsURI)){b=S(c);a.type_extensions.push(b)}})}},ae=function(a,d){var c=K(a,"src"),e=K(a,"type"),b=d.__metadata;if(c){if(!e)throw{message:"Invalid AtomPub document: content element must specify the type attribute if the src attribute is also specified",element:a};b.media_src=q(c,a.baseURI);b.content_type=e}l(a,function(e){if(c)throw{message:"Invalid AtomPub document: content element must not have child elements if the src attribute is specified",element:a};e.nsURI===i&&e.localName==="properties"&&vb(e,d,b)})},Gd=function(b,e,c){c.edit_media=b.href;c.edit_media_extensions=[];var a,d;for(a=0,d=b.extensions.length;a<d;a++)if(b.extensions[a].namespaceURI===i&&b.extensions[a].name==="etag")c.media_etag=b.extensions[a].value;else c.edit_media_extensions.push(b.extensions[a])},re=function(d,c,e){var a=hd(d),b=c.__metadata;switch(a.rel){case"self":b.self=a.href;b.self_link_extensions=a.extensions;break;case"edit":b.edit=a.href;b.edit_link_extensions=a.extensions;break;case"edit-media":Gd(a,c,b);break;default:a.rel.indexOf(Fb)===0&&Ed(d,a,c,e)}},Ed=function(f,d,c,g){var e=d.rel.substring(Fb.length),b=a;l(f,function(a){if(a.nsURI===i&&a.localName==="inline"){var c=Oc(a);if(c)b=Gc(c,g);else b=null}});if(b===a)b={__deferred:{uri:d.href}};c[e]=b;c.__metadata.properties=c.__metadata.properties||{};c.__metadata.properties[e]={extensions:d.extensions}},vb=function(b,c,a){l(b,function(b){if(b.nsURI===v){a.properties=a.properties||{};Vd(b,c,a.properties)}})},Vd=function(b,h,g){var e=null,c="Edm.String",d=[];J(b,function(a){if(a.nsURI===i)switch(a.localName){case"null":e=a.domNode.nodeValue;return;case"type":c=a.domNode.nodeValue;return}if(mb(a.nsURI)){var b=S(a);d.push(b)}});var a=null,f={type:c,extensions:d};if(e!=="true"){a=n(b.domNode);if(Lb(c))a=Xb(a,c);else if(Oc(b)){a={__metadata:{type:c}};vb(b,a,f)}}h[b.localName]=a;g[b.localName]=f},Md=function(b){var a={workspaces:[],extensions:[]};l(b,function(c){if(c.nsURI===ab&&c.localName==="workspace"){var e=Ad(c);a.workspaces.push(e)}else{var d=T(b);a.extensions.push(d)}});if(a.workspaces.length===0)throw{message:"Invalid AtomPub service document: No workspace element found.",element:b};return a},Ad=function(b){var a={collections:[],extensions:[]};l(b,function(c){if(c.nsURI===f){if(c.localName==="title"){if(b.title)throw{message:"Invalid AtomPub service document: workspace has more than one child title element",element:c};a.title=n(c.domNode)}}else if(c.nsURI===ab){if(c.localName==="collection"){var d=zd(c,a);a.collections.push(d)}}else{var e=T(b);a.extensions.push(e)}});a.title=a.title||"";return a},zd=function(b){var a={href:K(b,"href"),extensions:[]};if(!a.href)throw{message:"Invalid AtomPub service document: collection has no href attribute",element:b};a.href=q(a.href,b.baseURI);l(b,function(c){if(c.nsURI===f){if(c.localName==="title"){if(a.title)throw{message:"Invalid AtomPub service document: collection has more than one child title element",element:c};a.title=n(c.domNode)}}else if(c.nsURI!==ab){var d=T(b);a.extensions.push(d)}});if(!a.title)throw{message:"Invalid AtomPub service document: collection has no title element",element:b};return a},ve=function(b,c){var a,d=I(b);switch(d){case eb:a=dd(null,b,c);break;case W:case db:a=Ob(null,b,c)}return a},ed=function(b,c){if(b)return k(b,c,f);var a=Yc(c,f);dc(a.domNode,"xmlns:d",v);dc(a.domNode,"xmlns:m",i);return a},dd=function(g,c,f){var d=ed(g,"feed"),b=w(c)?c:c.results;if(b){var a,e;for(a=0,e=b.length;a<e;a++)Ob(d,b[a],f)}return d},Ob=function(j,b,d){var a=ed(j,"entry"),h=k(a,"author",f);k(h,"name",f);k(a,"title",f);var c=k(a,"content",f);t(c,"type",null,"application/xml");var g=k(c,We,i),e=b.__metadata?b.__metadata.properties:null;Od(a,b.__metadata);cc(a,g,b,e,d);Xd(a,b,d);return a},Xd=function(l,e,i){if(!e.__metadata)return;var h=i.metadata,a=H(e.__metadata.type,h);while(a){var k,c=a.FC_SourcePath;if(c){k=Eb(h,a,c);Wb(a,c,l,e,k,"",i)}var g=a.property;if(g){var f,m;for(f=0,m=g.length;f<m;f++){var b=g[f],j=0,d="";while(b["FC_TargetPath"+d]){c=b.name;if(b["FC_SourcePath"+d])c+="/"+b["FC_SourcePath"+d];Wb(b,c,l,e,b.type,d,i);j++;d="_"+j}}}a=H(a.baseType,h)}},Od=function(b,a){if(a){a.etag&&t(b,"etag",i,a.etag);a.uri&&k(b,"id",f,a.uri);if(a.type){var c=k(b,"category",f);t(c,"term",null,a.type);t(c,"scheme",null,nd)}}},oe=function(b,c,d){var a=k(b,"link",f);t(a,"rel",null,d);t(a,"href",null,c);return a},cc=function(l,k,h,i,f){var d,g,c,b,j=f.metadata,e;for(d in h)if(d!=="__metadata"){g=h[d];c=Pe(g);b=i?i[d]:null;if(!b){if(e===a)if(h.__metadata)e=H(h.__metadata.type,j);if(e){b=Nb(e.property,d);if(!b)b=Nb(e.navigationProperty,d)}}if(c===yc){c=yb;if(b&&!Lb(b.type))if(b.relationship)c=Cb;else if(Hb(b.type,f.metadata))c=gb}if(c===yb||c===gb)Pd(k,d,c,g,b,f);else Cd(l,c,d,g,f)}},Pd=function(g,l,j,c,b,h){var f=V(l,"d"),d=b&&b.type,a;if(j===gb){a=k(g,f,v);var e;if(b)e=b.properties;if(c===null)h.dataServiceVersion="2.0";cc(null,a,c,e,h)}else a=k(g,f,v,Zb(c,d||"Edm.String"));c===null&&t(a,Td,i,"true");d&&t(a,Ud,i,d)},Cd=function(j,l,m,b,h){var d,c,a,e=l===Cb;if(e){d=b&&b.__metadata?b.__metadata.uri:"";a=I(b);switch(a){case W:c=Ob;break;case eb:a="feed";c=dd;break;case Fc:a=W;c=null;break;default:throw{message:"Invalid payload for inline navigation property: "+a};}}else d=b.__deferred.uri;var n=q(m,Fb),f=oe(j,d,n);if(e){var g=k(f,vf,i);t(f,"type",null,"application/atom+xml;type="+a);c&&c(g,b,h)}},of=function(d,b,c){if(b){var a=pb(b);if(a)return Gc(a,c.metadata)}},Ke=function(g,f,b){var d=b.contentType=b.contentType||L(Zc),c=a;if(d&&d.mediaType===Zc){var e=ve(f,b);c=ld(e)}return c};c.atomHandler=O(of,Ke,Jc.join(","),"2.0");var o={elements:{Association:{attributes:["Name"],elements:["End*","ReferentialConstraint"]},AssociationSet:{attributes:["Name","Association"],elements:["End*"]},CollectionType:{attributes:["ElementType","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation"]},ComplexType:{attributes:["Name","BaseType","Abstract"],elements:["Property*"]},DefiningExpression:{text:true},Dependent:{attributes:["Role"],elements:["PropertyRef*"]},Documentation:{text:true},End:{attributes:["Type","Role","Multiplicity","EntitySet"],elements:["OnDelete"]},EntityContainer:{attributes:["Name","Extends"],elements:["EntitySet*","AssociationSet*","FunctionImport*"]},EntitySet:{attributes:["Name","EntityType"]},EntityType:{attributes:["Name","BaseType","Abstract","OpenType"],elements:["Key","Property*","NavigationProperty*"]},Function:{attributes:["Name","ReturnType"],elements:["Parameter*","DefiningExpression","ReturnType"]},FunctionImport:{attributes:["Name","ReturnType","EntitySet"],elements:["Parameter*"]},Key:{elements:["PropertyRef*"]},NavigationProperty:{attributes:["Name","Relationship","ToRole","FromRole"]},OnDelete:{attributes:["Action"]},Parameter:{attributes:["Name","Type","Mode","MaxLength","Precision","Scale"]},Principal:{attributes:["Role"],elements:["PropertyRef*"]},Property:{attributes:["Name","Type","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation","ConcurrencyMode"]},PropertyRef:{attributes:["Name"]},ReferenceType:{attributes:["Type"]},ReferentialConstraint:{elements:["Principal","Dependent"]},ReturnType:{attributes:["ReturnType"],elements:["CollectionType","ReferenceType","RowType"]},RowType:{elements:["Property*"]},Schema:{attributes:["Namespace","Alias"],elements:["Using*","EntityContainer*","EntityType*","Association*","ComplexType*","Function*"]},TypeRef:{attributes:["Type","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation"]},Using:{attributes:["Namespace","Alias"]}}},ec=["m:FC_ContentKind","m:FC_KeepInContent","m:FC_NsPrefix","m:FC_NsUri","m:FC_SourcePath","m:FC_TargetPath"];o.elements.Property.attributes=o.elements.Property.attributes.concat(ec);o.elements.EntityType.attributes=o.elements.EntityType.attributes.concat(ec);o.elements.Edmx={attributes:["Version"],elements:["DataServices"],ns:wd};o.elements.DataServices={elements:["Schema*"],ns:wd};o.elements.EntityContainer.attributes.push("m:IsDefaultEntityContainer");o.elements.Property.attributes.push("m:MimeType");o.elements.FunctionImport.attributes.push("m:HttpMethod");o.elements.EntityType.attributes.push("m:HasStream");o.elements.DataServices.attributes=["m:DataServiceVersion"];var qd=function(a){if(!a)return a;if(a.length>1){var b=a.substr(0,2);return b===b.toUpperCase()?a:a.charAt(0).toLowerCase()+a.substr(1)}return a.charAt(0).toLowerCase()},Le=function(g,e){if(e==="Documentation")return{isArray:true,propertyName:"documentation"};var c=g.elements;if(!c)return null;var b,f;for(b=0,f=c.length;b<f;b++){var a=c[b],d=false;if(a.charAt(a.length-1)==="*"){d=true;a=a.substr(0,a.length-1)}if(e===a){var h=qd(a);return{isArray:d,propertyName:h}}}return null},Hd=/^(m:FC_.*)_[0-9]+$/,Vc=function(a){return a===Hf||a===Ff||a===Gf},wb=function(a){if(!a.domNode)a=u(a,"");var f=a.localName,c=o.elements[f];if(!c)return null;if(c.ns){if(a.nsURI!==c.ns)return null}else if(!Vc(a.nsURI))return null;var b={},d=[],e=c.attributes||[];J(a,function(c){var l=c.domNode,g=c.localName,f=c.nsURI,k=l.value;if(f===P)return;var a=null,h=false;if(Vc(f)||f===null)a="";else if(f===i)a="m:";if(a!==null){a+=g;var j=Hd.exec(a);if(j)a=j[1];if(td(e,a)){h=true;b[qd(g)]=k}}!h&&d.push(ac(c))});l(a,function(e){var a=Le(c,e.localName);if(a)if(a.isArray){var f=b[a.propertyName];if(!f){f=[];b[a.propertyName]=f}f.push(wb(e))}else b[a.propertyName]=wb(e);else d.push(hc(e))});if(c.text)b.text=n(a);if(d.length)b.extensions=d;return b},Oe=function(d,b){var c=pb(b);return wb(c)||a};c.metadataHandler=O(Oe,null,ob,"1.0");var Qb="application/json",Jd=function(d,g){var b={collections:[]},a,e;for(a=0,e=d.EntitySets.length;a<e;a++){var c=d.EntitySets[a],f={title:c,href:q(c,g)};b.collections.push(f)}return{workspaces:[b]}},qf=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/,Ge=function(a){var b;if(a<0){b="-";a=-a}else b="+";var c=Math.floor(a/60);a=a-60*c;return b+j(c,2)+":"+j(a,2)},tc=function(d){var b=d&&qf.exec(d);if(b){var a=new Date(e(b[1]));if(b[2]){var c=e(b[3]);if(b[2]==="-")c=-c;var f=a.getUTCMinutes();a.setUTCMinutes(f-c);a.__edmType="Edm.DateTimeOffset";a.__offset=Ge(c)}if(!isNaN(a.valueOf()))return a}},Hc=function(b,f){if(b&&typeof b==="object")for(var d in b){var e=b[d],c=Hc(e,f);c=f(d,c);if(c!==e)if(e===a)delete b[d];else b[d]=c}return b},Cf=function(b,a){return a("",Hc(b,a))},rf=function(h,e,d){var f=d.metadata,g=B(d.context?d.context.recognizeDates:a,h.recognizeDates),c=typeof e==="string"?b.JSON.parse(e):e;c=Cf(c,function(m,a){if(a&&typeof a==="object"){var i=a.__metadata&&a.__metadata.type,j=H(i,f)||Hb(i,f);if(j){var h=j.property;if(h){var d,l;for(d=0,l=h.length;d<l;d++){var c=h[d],e=c.name,b=a[e];if(c.type==="Edm.DateTime"||c.type==="Edm.DateTimeOffset"){if(b){b=tc(b);if(!b)throw{message:"Invalid date/time value"};a[e]=b}}else if(c.type==="Edm.Time")a[e]=ad(b)}}}else if(g)for(var k in a){b=a[k];if(typeof b==="string")a[k]=tc(b)||b}}return a}).d;c=Id(c,d.dataServiceVersion);c=qe(c,d.response.requestUri);return c},Ne=function(i,g,c){var d=a,e=c.contentType=c.contentType||L(Qb);if(e&&e.mediaType===Qb){var h=g,f=Date.prototype.toJSON;try{Date.prototype.toJSON=function(){return Bb(this)};d=b.JSON.stringify(h,cf)}finally{Date.prototype.toJSON=f}}return d},cf=function(b,a){return a&&a.__edmType==="Edm.Time"?Qc(a):a},qe=function(a,b){return I(a)===uc?Jd(a,b):a},Id=function(b,a){if(a&&a.lastIndexOf(";")===a.length-1)a=a.substr(0,a.length-1);if(!a)if(w(b))a="1.0";if(a==="2.0")return b;if(a==="1.0")if(w(b))b={results:b};return b};c.jsonHandler=O(rf,Ne,Qb,"2.0");c.jsonHandler.recognizeDates=false;var Z="multipart/mixed",je=/^HTTP\/1\.\d (\d{3}) (.*)$/i,ie=/^([^()<>@,;:\\"\/[\]?={} \t]+)\s?:\s?(.*)/,Ub=function(){return Math.floor((1+Math.random())*65536).toString(16).substr(1)},Pc=function(a){return a+Ub()+"-"+Ub()+"-"+Ub()},od=function(a){return a.handler.partHandler},Lc=function(b){var a=b.boundaries;return a[a.length-1]},hf=function(d,c,a){var b=a.contentType.properties.boundary;return{__batchResponses:sd(c,{boundaries:[b],handlerContext:a})}},De=function(d,c,a){var b=a.contentType=a.contentType||L(Z);if(b.mediaType===Z)return tf(c,a)},sd=function(b,a){var e="--"+Lc(a);qb(b,a,e);N(b,a);var f=[],h;while(h!=="--"&&a.position<b.length){var i=pd(b,a),d=L(i["Content-Type"]);if(d&&d.mediaType===Z){a.boundaries.push(d.properties.boundary);try{var g=sd(b,a)}catch(j){j.response=id(b,a,e);g=[j]}f.push({__changeResponses:g});a.boundaries.pop();qb(b,a,"--"+Lc(a))}else{if(!d||d.mediaType!=="application/http")throw{message:"invalid MIME part type "};N(b,a);var c=id(b,a,e);try{if(c.statusCode>=200&&c.statusCode<=299)od(a.handlerContext).read(c,a.handlerContext);else c={message:"HTTP request failed",response:c}}catch(j){c=j}f.push(c)}h=b.substr(a.position,2);N(b,a)}return f},pd=function(f,b){var c={},a,d,e;do{e=b.position;d=N(f,b);a=ie.exec(d);if(a!==null)c[a[1]]=a[2];else b.position=e}while(d&&a);Jb(c);return c},id=function(b,a,g){var h=a.position,c=je.exec(N(b,a)),d,e,f;if(c){d=c[1];e=c[2];f=pd(b,a);N(b,a)}else a.position=h;return{statusCode:d,statusText:e,headers:f,body:qb(b,a,g)}},N=function(b,a){return qb(b,a,"\r\n")},qb=function(c,b,d){var e=b.position||0,a=c.length;if(d){a=c.indexOf(d,e);if(a===-1)return null;b.position=a+d.length}else b.position=a;return c.substring(e,a)},tf=function(f,e){var g=I(f);if(g!==xc)throw{message:'Serialization of batches of type "'+g+'" is not supported'};var b=Pc("batch_"),d=f.__batchRequests,c="",a,h;for(a=0,h=d.length;a<h;a++)c+=fb(b,false)+Xc(d[a],e);c+=fb(b,true);var i=e.contentType.properties;i.boundary=b;return c},fb=function(b,c){var a="\r\n--"+b;if(c)a+="--";return a+"\r\n"},Xc=function(f,e,h){var d=f.__changeRequests,a;if(w(d)){if(h)throw{message:"Not Supported: change set nested in other change set"};var c=Pc("changeset_");a="Content-Type: "+Z+"; boundary="+c+"\r\n";var b,g;for(b=0,g=d.length;b<g;b++)a+=fb(c,false)+Xc(d[b],e,true);a+=fb(c,true)}else{a="Content-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\r\n";Wc(f,od(e),{metadata:e.metadata});a+=ff(f)}return a},ff=function(a){var b=(a.method?a.method:"GET")+" "+a.requestUri+" HTTP/1.1\r\n";for(var c in a.headers)if(a.headers[c])b=b+c+": "+a.headers[c]+"\r\n";b+="\r\n";if(a.body)b+=a.body;return b};c.batchHandler=O(hf,De,Z,"1.0");var ud=[c.jsonHandler,c.atomHandler,c.xmlHandler,c.textHandler],Mc=function(d,c,e){var a,b;for(a=0,b=ud.length;a<b&&!ud[a][d](c,e);a++);if(a===b)throw{message:"no handler for data"};};c.defaultSuccess=function(a){b.alert(b.JSON.stringify(a))};c.defaultError=jb;c.defaultHandler={read:function(a,b){a&&A(a.body)&&a.headers["Content-Type"]&&Mc("read",a,b)},write:function(b,a){Mc("write",b,a)},accept:"application/atomsvc+xml;q=0.8, application/json;q=0.5, */*;q=0.1"};c.defaultMetadata=[];c.read=function(a,g,h,f,d,e){var b;if(a instanceof String||typeof a==="string")b={requestUri:a};else b=a;return c.request(b,g,h,f,d,e)};c.request=function(a,g,d,b,e,f){if(!g)g=c.defaultSuccess;if(!d)d=c.defaultError;if(!b)b=c.defaultHandler;if(!e)e=c.defaultHttpClient;if(!f)f=c.defaultMetadata;a.recognizeDates=B(a.recognizeDates,c.jsonHandler.recognizeDates);a.callbackParameterName=B(a.callbackParameterName,c.defaultHttpClient.callbackParameterName);a.formatQueryString=B(a.formatQueryString,c.defaultHttpClient.formatQueryString);a.enableJsonpCallback=B(a.enableJsonpCallback,c.defaultHttpClient.enableJsonpCallback);var h={metadata:f,recognizeDates:a.recognizeDates,callbackParameterName:a.callbackParameterName,formatQueryString:a.formatQueryString,enableJsonpCallback:a.enableJsonpCallback};try{Wc(a,b,h);return Se(a,g,d,b,e,h)}catch(i){d(i)}};c.batchHandler.partHandler=c.defaultHandler;var p=b.localStorage,ke=function(){var a={v:this.valueOf(),t:"[object Date]"};for(var b in this)a[b]=this[b];return a},le=function(d,a){if(a&&a.t==="[object Date]"){var c=new Date(a.v);for(var b in a)if(b!=="t"&&b!=="v")c[b]=a[b];a=c}return a},ib=function(a,b){return a.name+"#!#"+b},rc=function(a,b){return b.replace(a.name+"#!#","")},g=function(a){this.name=a};g.create=function(a){if(g.isSupported())return new g(a);throw{message:"Web Storage not supported by the browser"};};g.isSupported=function(){return!!p};g.prototype.add=function(b,f,c,a){a=a||this.defaultError;var e=this;this.contains(b,function(g){if(!g)e.addOrUpdate(b,f,c,a);else d(a,{message:"key already exists",key:b})},a)};g.prototype.addOrUpdate=function(g,f,j,c){c=c||this.defaultError;if(g instanceof Array)c({message:"Array of keys not supported"});else{var i=ib(this,g),h=Date.prototype.toJSON;try{var e=f;if(e!==a){Date.prototype.toJSON=ke;e=b.JSON.stringify(f)}p.setItem(i,e);d(j,g,f)}catch(k){if(k.code===22||k.number===2147942414)d(c,{name:"QUOTA_EXCEEDED_ERR",error:k});else d(c,k)}finally{Date.prototype.toJSON=h}}};g.prototype.clear=function(f,b){b=b||this.defaultError;try{var e=0,c=p.length;while(c>0&&e<c){var a=p.key(e),g=rc(this,a);if(a!==g){p.removeItem(a);c=p.length}else e++}d(f)}catch(h){d(b,h)}};g.prototype.close=function(){};g.prototype.contains=function(f,c,a){a=a||this.defaultError;try{var b=ib(this,f),e=p.getItem(b);d(c,e!==null)}catch(g){d(a,g)}};g.prototype.defaultError=jb;g.prototype.getAllKeys=function(h,b){b=b||this.defaultError;var e=[],a,g;try{for(a=0,g=p.length;a<g;a++){var c=p.key(a),f=rc(this,c);c!==f&&e.push(f)}d(h,e)}catch(i){d(b,i)}};g.prototype.mechanism="dom";g.prototype.read=function(f,h,e){e=e||this.defaultError;if(f instanceof Array)e({message:"Array of keys not supported"});else try{var g=ib(this,f),c=p.getItem(g);if(c!==null&&c!=="undefined")c=b.JSON.parse(c,le);else c=a;d(h,f,c)}catch(i){d(e,i)}};g.prototype.remove=function(b,e,a){a=a||this.defaultError;if(b instanceof Array)a({message:"Batches not supported"});else try{var c=ib(this,b);p.removeItem(c);d(e)}catch(f){d(a,f)}};g.prototype.update=function(b,f,c,a){a=a||this.defaultError;var e=this;this.contains(b,function(g){if(g)e.addOrUpdate(b,f,c,a);else d(a,{message:"key not found",key:b})},a)};var gd=b.mozIndexedDB,z=b.IDBTransaction,md=b.IDBKeyRange,r=function(b,a){return function(c){if(c.code===11)c={name:"QUOTA_EXCEEDED_ERR",error:c};if(b)b(c);else a&&a(c)}},y=function(c,e,d,h){var b=c.name,a=c.db,f=r(h,c.defaultError);if(a)d(a.transaction(b,e));else{var g=gd.open("_datajs_"+b);g.onsuccess=function(h){a=c.db=h.target.result;if(!a.objectStoreNames.contains(b)){var g=a.setVersion("1.0");g.onsuccess=function(){a.createObjectStore(b,null,false);d(a.transaction(b,e))};g.onerror=f;g.onblocked=f}else d(a.transaction(b,e))};g.onerror=r(h,this.defaultError)}},h=function(a){this.name=a};h.create=function(a){if(h.isSupported())return new h(a);throw{message:"IndexedDB is not supported on this browser"};};h.isSupported=function(){return!!gd};h.prototype.add=function(c,d,e,f){var h=this.name,g=this.defaultError,b=[],a=[];if(c instanceof Array){b=c;a=d}else{b=[c];a=[d]}y(this,z.READ_WRITE,function(j){j.onabort=r(f,g);j.oncomplete=function(){if(c instanceof Array)e(b,a);else e(c,d)};for(var i=0;i<b.length&&i<a.length;i++)j.objectStore(h).add(a[i],b[i])},f)};h.prototype.addOrUpdate=function(c,d,e,f){var h=this.name,g=this.defaultError,b=[],a=[];if(c instanceof Array){b=c;a=d}else{b=[c];a=[d]}y(this,z.READ_WRITE,function(j){j.onabort=r(f,g);j.oncomplete=function(){if(c instanceof Array)e(b,a);else e(c,d)};for(var i=0;i<b.length&&i<a.length;i++)j.objectStore(h).put(a[i],b[i])},f)};h.prototype.clear=function(c,a){var d=this.name,b=this.defaultError;y(this,z.READ_WRITE,function(e){e.onerror=r(a,b);e.oncomplete=function(){c()};e.objectStore(d).clear()},a)};h.prototype.close=function(){if(this.db){this.db.close();this.db=null}};h.prototype.contains=function(f,d,b){var e=this.name,c=this.defaultError;y(this,z.READ_ONLY,function(g){var h=g.objectStore(e).openCursor(md.only(f));g.oncomplete=function(){d(h.result!==a)};g.onerror=r(b,c)},b)};h.prototype.defaultError=jb;h.prototype.getAllKeys=function(c,a){var d=this.name,b=this.defaultError;y(this,z.READ_ONLY,function(e){var g=[];e.oncomplete=function(){c(g)};var f=e.objectStore(d).openCursor();f.onerror=r(a,b);f.onsuccess=function(b){var a=b.target.result;if(a){g.push(a.key);a["continue"].call(a)}}},a)};h.prototype.mechanism="indexeddb";h.prototype.read=function(b,c,d){var f=this.name,e=this.defaultError,a=b instanceof Array?b:[b];y(this,z.READ_WRITE,function(g){var h=[];g.onerror=r(d,e);g.oncomplete=function(){if(b instanceof Array)c(a,h);else c(a[0],h[0])};for(var i=0;i<a.length;i++){var j=g.objectStore(f),k=j["get"].call(j,a[i]);k.onsuccess=function(a){h.push(a.target.result)}}},d)};h.prototype.remove=function(a,e,b){var f=this.name,d=this.defaultError,c=a instanceof Array?a:[a];y(this,z.READ_WRITE,function(a){a.onerror=r(b,d);a.oncomplete=function(){e()};for(var g=0;g<c.length;g++){var h=a.objectStore(f);h["delete"].call(h,c[g])}},b)};h.prototype.update=function(c,d,e,f){var h=this.name,g=this.defaultError,a=[],b=[];if(c instanceof Array){a=c;b=d}else{a=[c];b=[d]}y(this,z.READ_WRITE,function(j){j.onabort=r(f,g);j.oncomplete=function(){if(c instanceof Array)e(a,b);else e(c,d)};for(var i=0;i<a.length&&i<b.length;i++){var k=j.objectStore(h).openCursor(md.only(a[i]));k.pair={key:a[i],value:b[i]};k.onsuccess=function(b){var a=b.target.result;if(a)a.update(b.target.pair.value);else j.abort()}}},f)};var E=function(h){var g=[],c=[],b={};this.name=h;var e=function(a){return a||this.defaultError},f=function(c,e){var b;if(c instanceof Array)b="Array of keys not supported";if(c===a||c===null)b="Invalid key";if(b){d(e,{message:b});return false}return true};this.add=function(c,g,d,a){a=e(a);if(f(c,a))if(!b.hasOwnProperty(c))this.addOrUpdate(c,g,d,a);else a({message:"key already exists",key:c})};this.addOrUpdate=function(i,k,l,j){j=e(j);if(f(i,j)){var h=b[i];if(h===a)if(g.length>0)h=g.splice(0,1);else h=c.length;c[h]=k;b[i]=h;d(l,i,k)}};this.clear=function(a){c=[];b={};g=[];d(a)};this.contains=function(e,c){var a=b.hasOwnProperty(e);d(c,a)};this.getAllKeys=function(c){var a=[];for(var e in b)a.push(e);d(c,a)};this.read=function(g,h,a){a=e(a);if(f(g,a)){var i=b[g];d(h,g,c[i])}};this.remove=function(j,k,i){i=e(i);if(f(j,i)){var h=b[j];if(h!==a){if(h===c.length-1)c.pop();else{c[h]=a;g.push(h)}delete b[j];if(c.length===0)g=[]}d(k)}};this.update=function(c,g,d,a){a=e(a);if(f(c,a))if(b.hasOwnProperty(c))this.addOrUpdate(c,g,d,a);else a({message:"key not found",key:c})}};E.create=function(a){return new E(a)};E.isSupported=function(){return true};E.prototype.close=function(){};E.prototype.defaultError=jb;E.prototype.mechanism="memory";var sf={indexeddb:h,dom:g,memory:E};bb.defaultStoreMechanism="best";bb.createStore=function(c,a){if(!a)a=bb.defaultStoreMechanism;if(a==="best")a=g.isSupported()?"dom":"memory";var b=sf[a];if(b)return b.create(c);throw{message:"Failed to create store",name:c,mechanism:a};};var kf=function(a,c,b){return function(){a[c].apply(a,arguments);return b}},M=function(){this._arguments=a;this._done=a;this._fail=a;this.resolved=false;this.rejected=false};M.prototype={then:function(a,b){if(a)if(!this._done)this._done=[a];else this._done.push(a);if(b)if(!this._fail)this._fail=[b];else this._fail.push(b);if(this._resolved)this.resolve.apply(this,this._arguments);else this._rejected&&this.reject.apply(this,this._arguments);return this},resolve:function(){if(this._done){var b,c;for(b=0,c=this._done.length;b<c;b++)this._done[b].apply(null,arguments);this._done=a;this._resolved=false;this._arguments=a}else{this._resolved=true;this._arguments=arguments}},reject:function(){if(this._fail){var b,c;for(b=0,c=this._fail.length;b<c;b++)this._fail[b].apply(null,arguments);this._fail=a;this._rejected=false;this._arguments=a}else{this._rejected=true;this._arguments=arguments}},promise:function(){var a={};a.then=kf(this,"then",a);return a}};var lb=function(){return b.jQuery&&b.jQuery.Deferred?new b.jQuery.Deferred:new M},pe=function(a,b){var c=a.indexOf("?")>=0?"&":"?";return a+c+b},Re=function(a,d){var b=a.indexOf("?"),c="";if(b>=0){c=a.substr(b);a=a.substr(0,b)}if(a[a.length-1]!=="/")a+="/";return a+d+c},wc=function(b,a){return{method:"GET",requestUri:b,user:a.user,password:a.password,enableJsonpCallback:a.enableJsonpCallback,callbackParameterName:a.callbackParameterName,formatQueryString:a.formatQueryString}},Jf=function(d,c){var e=-1,b=d.indexOf("?");if(b!==-1){var a=d.indexOf("?"+c+"=",b);if(a===-1)a=d.indexOf("&"+c+"=",b);if(a!==-1)e=a+c.length+2}return e},df=function(e,a,c,d){return pc(e,a,[],c,d)},pc=function(i,b,d,f,g){var h=wc(i,b),e=c.request(h,function(a){var c=a.__next,h=a.results;d=d.concat(h);if(c)e=pc(c,b,d,f,g);else f(d)},g,a,b.httpClient,b.metadata);return{abort:function(){e.abort()}}},ye=function(f){var b=this,d=f.source;b.identifier=xe(encodeURI(decodeURI(d)));b.options=f;b.count=function(h,g){var f=b.options;return c.request(wc(Re(d,"$count"),f),function(b){var a=e(b.toString());if(isNaN(a))g({message:"Count is NaN",count:a});else h(a)},g,a,f.httpClient,f.metadata)};b.read=function(g,e,c,f){var a="$skip="+g+"&$top="+e;return df(pe(d,a),b.options,c,f)};return b},nf=function(a,b){var c=Fe(a,b);if(c){var d=c.i-b.i,e=d+(a.c-a.d.length);a.d=a.d.concat(b.d.slice(d,e))}},Fe=function(a,b){var f=a.i+a.c,g=b.i+b.c,c=a.i>b.i?a.i:b.i,d=f<g?f:g,e;if(d>=c)e={i:c,c:d-c};return e},Cc=function(b,c){if(b===a||typeof b!=="number")throw{message:"'"+c+"' must be a number."};if(isNaN(b)||b<0||!isFinite(b))throw{message:"'"+c+"' must be greater than or equal to zero."};},Dd=function(b,c){if(b!==a){if(typeof b!=="number")throw{message:"'"+c+"' must be a number."};if(isNaN(b)||b<=0||!isFinite(b))throw{message:"'"+c+"' must be greater than zero."};}},gc=function(b,c){if(b!==a&&(typeof b!=="number"||isNaN(b)||!isFinite(b)))throw{message:"'"+c+"' must be a number."};},Mb=function(b,d){var a,c;for(a=0,c=b.length;a<c;a++)if(b[a]===d){b.splice(a,1);return true}return false},F=function(a,b){for(var c in b)a[c]=b[c];return a},fd=function(a){var b=0,d=typeof a;if(d==="object"&&a)for(var c in a)b+=c.length*2+fd(a[c]);else if(d==="string")b=a.length*2;else b=8;return b},qc=function(a,c,b){a=Math.floor(a/b)*b;c=Math.ceil((c+1)/b)*b;return{i:a,c:c-a}},hb="destroy",D="idle",Bc="init",Ib="read",Ab="prefetch",Gb="write",U="cancel",x="end",zb="error",C="start",oc="wait",sc="clear",Y="done",X="local",Nc="save",zc="source",G=function(c,i,g,k,j,l,h){var d,e,a=this;a.p=i;a.i=k;a.c=j;a.d=l;a.s=C;a.canceled=false;a.pending=h;a.oncomplete=null;a.cancel=function(){if(!g)return;var c=a.s;if(c!==zb&&c!==x&&c!==U){a.canceled=true;b(U,d)}};a.complete=function(){b(x,d)};a.error=function(c){!a.canceled&&b(zb,c)};a.run=function(b){e=b;a.transition(a.s,d)};a.wait=function(a){b(oc,a)};var f=function(d,e,f){switch(d){case C:e!==Bc&&c(a,d,e,f);break;case oc:c(a,d,e,f);break;case U:c(a,d,e,f);a.fireCanceled();b(x);break;case zb:c(a,d,e,f);a.canceled=true;a.fireRejected(f);b(x);break;case x:if(a.oncomplete)a.oncomplete(a);!a.canceled&&a.fireResolved();c(a,d,e,f);break;default:c(a,d,e,f)}},b=function(b,c){a.s=b;d=c;f(b,e,c)};a.transition=b;return a};G.prototype.fireResolved=function(){var a=this.p;if(a){this.p=null;a.resolve(this.d)}};G.prototype.fireRejected=function(b){var a=this.p;if(a){this.p=null;a.reject(b)}};G.prototype.fireCanceled=function(){this.fireRejected({canceled:true,message:"Operation canceled"})};var uf=function(j){var y=Bc,p={counts:0,netReads:0,prefetches:0,cacheReads:0},k=[],s=[],n=[],u=0,m=false,t=Kb(j.cacheSize,1048576),l=0,i=0,r=0,v=t===0,c=Kb(j.pageSize,50),E=Kb(j.prefetchSize,c),P="1.0",g,z=0,o=j.source;if(typeof o==="string")o=new ye(j);o.options=j;var q=bb.createStore(j.name,j.mechanism),f=this;f.onidle=j.idle;f.stats=p;f.count=function(){if(g)throw g;var a=lb(),c=false;if(m){d(function(){a.resolve(l)});return a.promise()}var b=o.count(function(c){b=null;p.counts++;a.resolve(c)},function(d){b=null;a.reject(F(d,{canceled:c}))});return F(a.promise(),{cancel:function(){if(b){c=true;b.abort();b=null}}})};f.clear=function(){if(g)throw g;if(k.length===0){var a=lb(),b=new G(S,a,false);B(b,k);return a.promise()}return k[0].p};f.filterForward=function(c,b,a){return Q(c,b,a,false)};f.filterBack=function(c,b,a){return Q(c,b,a,true)};f.readRange=function(c,b){Cc(c,"index");Cc(b,"count");if(g)throw g;var a=lb(),d=new G(V,a,true,c,b,[],0);B(d,s);return F(a.promise(),{cancel:function(){d.cancel()}})};f.ToObservable=f.toObservable=function(){if(!b.Rx||!b.Rx.Observable)throw{message:"Rx library not available - include rx.js"};if(g)throw g;return b.Rx.Observable.CreateWithDisposable(function(d){var a=false,b=0,g=function(b){!a&&d.OnError(b)},e=function(i){if(!a){var h,j;for(h=0,j=i.length;h<j;h++)d.OnNext(i[h]);if(i.length<c)d.OnCompleted();else{b+=c;f.readRange(b,c).then(e,g)}}};f.readRange(b,c).then(e,g);return{Dispose:function(){a=true}}})};var w=function(a){return function(d){g={message:a,error:d};var b,c;for(b=0,c=s.length;b<c;b++)s[b].fireRejected(g);for(b=0,c=k.length;b<c;b++)k[b].fireRejected(g);s=k=null}},h=function(c){if(c!==y){y=c;var b=k.concat(s,n),a,d;for(a=0,d=b.length;a<d;a++)b[a].run(y)}},N=function(){var a=new M;q.clear(function(){u=0;m=false;l=0;i=0;r=0;v=t===0;p={counts:0,netReads:0,prefetches:0,cacheReads:0};f.stats=p;q.close();a.resolve()},function(b){a.reject(b)});return a},T=function(a){var b=Mb(k,a);if(!b){b=Mb(s,a);!b&&Mb(n,a)}z--;h(D)},W=function(d){var a=new M,e=false,b=o.read(d,c,function(b){var c={i:d,c:b.length,d:b};a.resolve(c)},function(b){a.reject(b)});return F(a,{cancel:function(){if(b){b.abort();e=true;b=null}}})},Q=function(a,b,p,d){a=e(a);b=e(b);if(isNaN(a))throw{message:"'index' must be a valid number.",index:a};if(isNaN(b))throw{message:"'count' must be a valid number.",count:b};if(g)throw g;a=Math.max(a,0);var j=lb(),h=[],l=false,k=null,m=function(a,e){if(!l)if(b>=0&&h.length>=b)j.resolve(h);else k=f.readRange(a,e).then(function(g){for(var f=0,l=g.length;f<l&&(b<0||h.length<b);f++){var i=d?l-f-1:f,n=g[i];if(p(n)){var k={index:a+i,item:n};d?h.unshift(k):h.push(k)}}if(!d&&g.length<e||d&&a<=0)j.resolve(h);else{var o=d?Math.max(a-c,0):a+e;m(o,c)}},function(a){j.reject(a)})},i=qc(a,a,c),o=d?i.i:a,n=d?a-i.i+1:i.i+i.c-a;m(o,n);return F(j.promise(),{cancel:function(){k&&k.cancel();l=true}})},O=function(){f.onidle&&z===0&&f.onidle()},Z=function(a){if(m||E===0||v)return;if(n.length===0||n[0]&&n[0].c!==-1){var b=new G(R,null,true,a,E,null,E);B(b,n)}},B=function(a,b){a.oncomplete=T;b.push(a);z++;a.run(y)},ab=function(e){var c=false,b=F(new M,{cancel:function(){c=true}}),d=J(b,"Read page from store failure");q.contains(e,function(f){if(c)return;if(f){q.read(e,function(e,d){!c&&b.resolve(d!==a,d)},d);return}b.resolve(false)},d);return b},cb=function(g,a){var f=false,b=F(new M,{cancel:function(){f=true}}),d=J(b,"Save page to store failure"),c=function(){b.resolve(true)};if(a.c>0){var e=fd(a);v=t>=0&&t<u+e;if(!v)q.addOrUpdate(g,a,function(){L(a,e);H(c,d)},d);else c()}else{L(a,0);H(c,d)}return b},H=function(b,d){var a={actualCacheSize:u,allDataLocal:m,cacheSize:t,collectionCount:l,highestSavedPage:i,highestSavedPageSize:r,pageSize:c,sourceId:o.identifier,version:P};q.addOrUpdate("__settings",a,b,d)},J=function(a){return function(){a.resolve(false)}},L=function(d,e){var a=d.c,b=d.i;if(a===0){if(i===b-c)l=i+r}else{i=Math.max(i,b);if(i===b)r=a;u+=e;if(a<c&&!l)l=b+a}if(!m&&l===i+r)m=true},K=function(d,b,e,a){var c=d.canceled&&b!==x;if(c)if(b===U)a&&a.cancel&&a.cancel();return c},S=function(a,b,c){var d=a.transition;if(c!==hb){h(hb);return true}switch(b){case C:d(sc);break;case x:O();break;case sc:N().then(function(){a.complete()});a.wait();break;default:return false}return true},R=function(a,f,b,e){if(!K(a,f,b,e)){var g=a.transition;if(b!==Ab){if(b===hb)f!==U&&a.cancel();else b===D&&h(Ab);return true}switch(f){case C:n[0]===a&&g(X,a.i);break;case Y:var d=a.pending;if(d>0)d-=Math.min(d,e.c);if(m||d===0||e.c<c||v)a.complete();else{a.pending=d;g(X,e.i+c)}break;default:return I(a,f,b,e,true)}}return true},V=function(a,e,b,d){if(!K(a,e,b,d)){var f=a.transition;if(b!==Ib&&e!==C){if(b===hb)e!==C&&a.cancel();else b!==Gb&&h(Ib);return true}switch(e){case C:if(b===D||b===Ab){h(Ib);if(a.c>0){var g=qc(a.i,a.c,c);f(X,g.i)}else f(Y,a)}break;case Y:nf(a,d);var i=a.d.length;if(a.c===i||d.c<c){p.cacheReads++;Z(d.i+d.c);a.complete()}else f(X,d.i+c);break;default:return I(a,e,b,d,false)}}return true},I=function(a,e,g,c,f){var i=a.error,d=a.transition,j=a.wait,b;switch(e){case x:O();break;case X:b=ab(c).then(function(b,e){if(!a.canceled)if(b)d(Y,e);else d(zc,c)});break;case zc:b=W(c).then(function(b){if(!a.canceled){if(f)p.prefetches++;else p.netReads++;d(Nc,b)}},i);break;case Nc:if(g!==Gb){h(Gb);b=cb(c.i,c).then(function(b){if(!a.canceled){if(!b&&f)a.pending=0;d(Y,c)}h(D)})}break;default:return false}if(b)if(a.canceled)b.cancel();else a.s===e&&j(b);return true};q.read("__settings",function(d,a){if(A(a)){var b=a.version;if(!b||b.indexOf("1.")!==0){w("Unsupported cache store version "+b)();return}if(c!==a.pageSize||o.identifier!==a.sourceId)N().then(function(){h(D)},w("Unable to clear store during initialization"));else{u=a.actualCacheSize;m=a.allDataLocal;t=a.cacheSize;l=a.collectionCount;i=a.highestSavedPage;r=a.highestSavedPageSize;P=b;h(D)}}else H(function(){h(D)},w("Unable to write settings during initialization."))},w("Unable to read settings from store."));return f};bb.createDataCache=function(a){Dd(a.pageSize,"pageSize");gc(a.cacheSize,"cacheSize");gc(a.prefetchSize,"prefetchSize");if(!A(a.name))throw{message:"Undefined or null name",options:a};if(!A(a.source))throw{message:"Undefined source",options:a};return new uf(a)}})(this)
