(function(){var n=!1;(function(t){var r=this||eval("this"),u=r.document,e=r.navigator,i=r.jQuery,f=r.JSON;(function(n){if(typeof require=="function"&&typeof exports=="object"&&typeof module=="object"){var t=module.exports||exports;n(t,require)}else typeof define=="function"&&define.amd?define(["exports","require"],n):n(r.ko={})})(function(o,s){function w(n,t){var i=n===null||typeof n in tt;return i?n===t:!1}function it(n,i){var r;return function(){r||(r=setTimeout(function(){r=t;n()},i))}}function rt(n,t){var i;return function(){clearTimeout(i);i=setTimeout(n,t)}}function ut(n){var t=this;return n&&h.utils.objectForEach(n,function(n,i){var r=h.extenders[n];typeof r=="function"&&(t=r(t,i)||t)}),t}function ft(n){h.bindingHandlers[n]={init:function(t,i,r,u,f){var e=function(){var t={};return t[n]=i(),t};return h.bindingHandlers.event.init.call(this,t,e,r,u,f)}}}function nt(n,t,i,r){h.bindingHandlers[n]={init:function(n,u,f,e,o){var c,s;return h.computed(function(){var l=h.utils.unwrapObservable(u()),f=!i!=!l,e=!s,a=e||t||f!==c;a&&(e&&h.computedContext.getDependenciesCount()&&(s=h.utils.cloneNodes(h.virtualElements.childNodes(n),!0)),f?(e||h.virtualElements.setDomNodeChildren(n,h.utils.cloneNodes(s)),h.applyBindingsToDescendants(r?r(o,l):o,n)):h.virtualElements.emptyNode(n),c=f)},null,{disposeWhenNodeIsRemoved:n}),{controlsDescendantBindings:!0}}};h.expressionRewriting.bindingRewriteValidators[n]=!1;h.virtualElements.allowedBindings[n]=!0}var h=typeof o!="undefined"?o:{},tt,a,c,l,v,b,k,d,y,g,p;h.exportSymbol=function(n,t){for(var i=n.split("."),u=h,r=0;r<i.length-1;r++)u=u[i[r]];u[i[i.length-1]]=t};h.exportProperty=function(n,t,i){n[t]=i};h.version="3.2.0";h.exportSymbol("version",h.version);h.utils=function(){function o(n,t){for(var i in n)n.hasOwnProperty(i)&&t(i,n[i])}function c(n,t){if(t)for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);return n}function l(n,t){return n.__proto__=t,n}function k(n,t){if(h.utils.tagNameLower(n)!=="input"||!n.type||t.toLowerCase()!="click")return!1;var i=n.type;return i=="checkbox"||i=="radio"}var a={__proto__:[]}instanceof Array,s={},v={},y=e&&/Firefox\/2/i.test(e.userAgent)?"KeyboardEvent":"UIEvents";s[y]=["keyup","keydown","keypress"];s.MouseEvents=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave"];o(s,function(n,t){if(t.length)for(var i=0,r=t.length;i<r;i++)v[t[i]]=n});var p={propertychange:!0},n=u&&function(){for(var n=3,i=u.createElement("div"),r=i.getElementsByTagName("i");i.innerHTML="<!--[if gt IE "+ ++n+"]><i><\/i><![endif]-->",r[0];);return n>4?n:t}(),w=n===6,b=n===7;return{fieldsIncludedWithJsonPost:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],arrayForEach:function(n,t){for(var i=0,r=n.length;i<r;i++)t(n[i],i)},arrayIndexOf:function(n,t){if(typeof Array.prototype.indexOf=="function")return Array.prototype.indexOf.call(n,t);for(var i=0,r=n.length;i<r;i++)if(n[i]===t)return i;return-1},arrayFirst:function(n,t,i){for(var r=0,u=n.length;r<u;r++)if(t.call(i,n[r],r))return n[r];return null},arrayRemoveItem:function(n,t){var i=h.utils.arrayIndexOf(n,t);i>0?n.splice(i,1):i===0&&n.shift()},arrayGetDistinctValues:function(n){var i,t,r;for(n=n||[],i=[],t=0,r=n.length;t<r;t++)h.utils.arrayIndexOf(i,n[t])<0&&i.push(n[t]);return i},arrayMap:function(n,t){var r,i,u;for(n=n||[],r=[],i=0,u=n.length;i<u;i++)r.push(t(n[i],i));return r},arrayFilter:function(n,t){var r,i,u;for(n=n||[],r=[],i=0,u=n.length;i<u;i++)t(n[i],i)&&r.push(n[i]);return r},arrayPushAll:function(n,t){if(t instanceof Array)n.push.apply(n,t);else for(var i=0,r=t.length;i<r;i++)n.push(t[i]);return n},addOrRemoveItem:function(n,t,i){var r=h.utils.arrayIndexOf(h.utils.peekObservable(n),t);r<0?i&&n.push(t):i||n.splice(r,1)},canSetPrototype:a,extend:c,setPrototypeOf:l,setPrototypeOfOrExtend:a?l:c,objectForEach:o,objectMap:function(n,t){var r,i;if(!n)return n;r={};for(i in n)n.hasOwnProperty(i)&&(r[i]=t(n[i],i,n));return r},emptyDomNode:function(n){while(n.firstChild)h.removeNode(n.firstChild)},moveCleanedNodesToContainerElement:function(n){for(var i=h.utils.makeArray(n),r=u.createElement("div"),t=0,f=i.length;t<f;t++)r.appendChild(h.cleanNode(i[t]));return r},cloneNodes:function(n,t){for(var r,i=0,f=n.length,u=[];i<f;i++)r=n[i].cloneNode(!0),u.push(t?h.cleanNode(r):r);return u},setDomNodeChildren:function(n,t){if(h.utils.emptyDomNode(n),t)for(var i=0,r=t.length;i<r;i++)n.appendChild(t[i])},replaceDomNodes:function(n,t){var u=n.nodeType?[n]:n,f,e,i,r;if(u.length>0){for(f=u[0],e=f.parentNode,i=0,r=t.length;i<r;i++)e.insertBefore(t[i],f);for(i=0,r=u.length;i<r;i++)h.removeNode(u[i])}},fixUpContinuousNodeArray:function(n,t){if(n.length){for(t=t.nodeType===8&&t.parentNode||t;n.length&&n[0].parentNode!==t;)n.shift();if(n.length>1){var i=n[0],r=n[n.length-1];for(n.length=0;i!==r;)if(n.push(i),i=i.nextSibling,!i)return;n.push(r)}}return n},setOptionNodeSelectionState:function(t,i){n<7?t.setAttribute("selected",i):t.selected=i},stringTrim:function(n){return n===null||n===t?"":n.trim?n.trim():n.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},stringStartsWith:function(n,t){return(n=n||"",t.length>n.length)?!1:n.substring(0,t.length)===t},domNodeIsContainedBy:function(n,t){if(n===t)return!0;if(n.nodeType===11)return!1;if(t.contains)return t.contains(n.nodeType===3?n.parentNode:n);if(t.compareDocumentPosition)return(t.compareDocumentPosition(n)&16)==16;while(n&&n!=t)n=n.parentNode;return!!n},domNodeIsAttachedToDocument:function(n){return h.utils.domNodeIsContainedBy(n,n.ownerDocument.documentElement)},anyDomNodeIsAttachedToDocument:function(n){return!!h.utils.arrayFirst(n,h.utils.domNodeIsAttachedToDocument)},tagNameLower:function(n){return n&&n.tagName&&n.tagName.toLowerCase()},registerEventHandler:function(t,r,u){var o=n&&p[r],f,e;if(!o&&i)i(t).bind(r,u);else if(o||typeof t.addEventListener!="function")if(typeof t.attachEvent!="undefined")f=function(n){u.call(t,n)},e="on"+r,t.attachEvent(e,f),h.utils.domNodeDisposal.addDisposeCallback(t,function(){t.detachEvent(e,f)});else throw new Error("Browser doesn't support addEventListener or attachEvent");else t.addEventListener(r,u,!1)},triggerEvent:function(n,t){var f,o,e;if(!(n&&n.nodeType))throw new Error("element must be a DOM node when calling triggerEvent");if(f=k(n,t),i&&!f)i(n).trigger(t);else if(typeof u.createEvent=="function")if(typeof n.dispatchEvent=="function")o=v[t]||"HTMLEvents",e=u.createEvent(o),e.initEvent(t,!0,!0,r,0,0,0,0,0,!1,!1,!1,!1,0,n),n.dispatchEvent(e);else throw new Error("The supplied element doesn't support dispatchEvent");else if(f&&n.click)n.click();else if(typeof n.fireEvent!="undefined")n.fireEvent("on"+t);else throw new Error("Browser doesn't support triggering events");},unwrapObservable:function(n){return h.isObservable(n)?n():n},peekObservable:function(n){return h.isObservable(n)?n.peek():n},toggleDomNodeCssClass:function(n,t,i){if(t){var r=/\S+/g,u=n.className.match(r)||[];h.utils.arrayForEach(t.match(r),function(n){h.utils.addOrRemoveItem(u,n,i)});n.className=u.join(" ")}},setTextContent:function(n,i){var r=h.utils.unwrapObservable(i),u;(r===null||r===t)&&(r="");u=h.virtualElements.firstChild(n);!u||u.nodeType!=3||h.virtualElements.nextSibling(u)?h.virtualElements.setDomNodeChildren(n,[n.ownerDocument.createTextNode(r)]):u.data=r;h.utils.forceRefresh(n)},setElementName:function(t,i){if(t.name=i,n<=7)try{t.mergeAttributes(u.createElement("<input name='"+t.name+"'/>"),!1)}catch(r){}},forceRefresh:function(t){if(n>=9){var i=t.nodeType==1?t:t.parentNode;i.style&&(i.style.zoom=i.style.zoom)}},ensureSelectElementIsRenderedCorrectly:function(t){if(n){var i=t.style.width;t.style.width=0;t.style.width=i}},range:function(n,t){var r,i;for(n=h.utils.unwrapObservable(n),t=h.utils.unwrapObservable(t),r=[],i=n;i<=t;i++)r.push(i);return r},makeArray:function(n){for(var i=[],t=0,r=n.length;t<r;t++)i.push(n[t]);return i},isIe6:w,isIe7:b,ieVersion:n,getFormFields:function(n,t){for(var r=h.utils.makeArray(n.getElementsByTagName("input")).concat(h.utils.makeArray(n.getElementsByTagName("textarea"))),f=typeof t=="string"?function(n){return n.name===t}:function(n){return t.test(n.name)},u=[],i=r.length-1;i>=0;i--)f(r[i])&&u.push(r[i]);return u},parseJson:function(n){return typeof n=="string"&&(n=h.utils.stringTrim(n),n)?f&&f.parse?f.parse(n):new Function("return "+n)():null},stringifyJson:function(n,t,i){if(!f||!f.stringify)throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return f.stringify(h.utils.unwrapObservable(n),t,i)},postJson:function(n,t,i){var l,s,c,f,r,a,e;i=i||{};var v=i.params||{},y=i.includeFields||this.fieldsIncludedWithJsonPost,p=n;if(typeof n=="object"&&h.utils.tagNameLower(n)==="form")for(l=n,p=l.action,s=y.length-1;s>=0;s--)for(c=h.utils.getFormFields(l,y[s]),f=c.length-1;f>=0;f--)v[c[f].name]=c[f].value;t=h.utils.unwrapObservable(t);r=u.createElement("form");r.style.display="none";r.action=p;r.method="post";for(a in t)e=u.createElement("input"),e.type="hidden",e.name=a,e.value=h.utils.stringifyJson(h.utils.unwrapObservable(t[a])),r.appendChild(e);o(v,function(n,t){var i=u.createElement("input");i.type="hidden";i.name=n;i.value=t;r.appendChild(i)});u.body.appendChild(r);i.submitter?i.submitter(r):r.submit();setTimeout(function(){r.parentNode.removeChild(r)},0)}}}();h.exportSymbol("utils",h.utils);h.exportSymbol("utils.arrayForEach",h.utils.arrayForEach);h.exportSymbol("utils.arrayFirst",h.utils.arrayFirst);h.exportSymbol("utils.arrayFilter",h.utils.arrayFilter);h.exportSymbol("utils.arrayGetDistinctValues",h.utils.arrayGetDistinctValues);h.exportSymbol("utils.arrayIndexOf",h.utils.arrayIndexOf);h.exportSymbol("utils.arrayMap",h.utils.arrayMap);h.exportSymbol("utils.arrayPushAll",h.utils.arrayPushAll);h.exportSymbol("utils.arrayRemoveItem",h.utils.arrayRemoveItem);h.exportSymbol("utils.extend",h.utils.extend);h.exportSymbol("utils.fieldsIncludedWithJsonPost",h.utils.fieldsIncludedWithJsonPost);h.exportSymbol("utils.getFormFields",h.utils.getFormFields);h.exportSymbol("utils.peekObservable",h.utils.peekObservable);h.exportSymbol("utils.postJson",h.utils.postJson);h.exportSymbol("utils.parseJson",h.utils.parseJson);h.exportSymbol("utils.registerEventHandler",h.utils.registerEventHandler);h.exportSymbol("utils.stringifyJson",h.utils.stringifyJson);h.exportSymbol("utils.range",h.utils.range);h.exportSymbol("utils.toggleDomNodeCssClass",h.utils.toggleDomNodeCssClass);h.exportSymbol("utils.triggerEvent",h.utils.triggerEvent);h.exportSymbol("utils.unwrapObservable",h.utils.unwrapObservable);h.exportSymbol("utils.objectForEach",h.utils.objectForEach);h.exportSymbol("utils.addOrRemoveItem",h.utils.addOrRemoveItem);h.exportSymbol("unwrap",h.utils.unwrapObservable);Function.prototype.bind||(Function.prototype.bind=function(n){var i=this,t=Array.prototype.slice.call(arguments),n=t.shift();return function(){return i.apply(n,t.concat(Array.prototype.slice.call(arguments)))}});h.utils.domData=new function(){function r(r,f){var e=r[n],o=e&&e!=="null"&&i[e];if(!o){if(!f)return t;e=r[n]="ko"+u++;i[e]={}}return i[e]}var u=0,n="__ko__"+(new Date).getTime(),i={};return{get:function(n,i){var u=r(n,!1);return u===t?t:u[i]},set:function(n,i,u){if(u!==t||r(n,!1)!==t){var f=r(n,!0);f[i]=u}},clear:function(t){var r=t[n];return r?(delete i[r],t[n]=null,!0):!1},nextKey:function(){return u+++n}}};h.exportSymbol("utils.domData",h.utils.domData);h.exportSymbol("utils.domData.clear",h.utils.domData.clear);h.utils.domNodeDisposal=new function(){function r(i,r){var u=h.utils.domData.get(i,n);return u===t&&r&&(u=[],h.utils.domData.set(i,n,u)),u}function o(i){h.utils.domData.set(i,n,t)}function u(n){var t=r(n,!1),i;if(t)for(t=t.slice(0),i=0;i<t.length;i++)t[i](n);h.utils.domData.clear(n);h.utils.domNodeDisposal.cleanExternalData(n);f[n.nodeType]&&s(n)}function s(n){for(var t,i=n.firstChild;t=i;)i=t.nextSibling,t.nodeType===8&&u(t)}var n=h.utils.domData.nextKey(),e={1:!0,8:!0,9:!0},f={1:!0,9:!0};return{addDisposeCallback:function(n,t){if(typeof t!="function")throw new Error("Callback must be a function");r(n,!0).push(t)},removeDisposeCallback:function(n,t){var i=r(n,!1);i&&(h.utils.arrayRemoveItem(i,t),i.length==0&&o(n))},cleanNode:function(n){var t,i,r;if(e[n.nodeType]&&(u(n),f[n.nodeType]))for(t=[],h.utils.arrayPushAll(t,n.getElementsByTagName("*")),i=0,r=t.length;i<r;i++)u(t[i]);return n},removeNode:function(n){h.cleanNode(n);n.parentNode&&n.parentNode.removeChild(n)},cleanExternalData:function(n){i&&typeof i.cleanData=="function"&&i.cleanData([n])}}};h.cleanNode=h.utils.domNodeDisposal.cleanNode;h.removeNode=h.utils.domNodeDisposal.removeNode;h.exportSymbol("cleanNode",h.cleanNode);h.exportSymbol("removeNode",h.removeNode);h.exportSymbol("utils.domNodeDisposal",h.utils.domNodeDisposal);h.exportSymbol("utils.domNodeDisposal.addDisposeCallback",h.utils.domNodeDisposal.addDisposeCallback);h.exportSymbol("utils.domNodeDisposal.removeDisposeCallback",h.utils.domNodeDisposal.removeDisposeCallback),function(){function n(n){var i=h.utils.stringTrim(n).toLowerCase(),t=u.createElement("div"),f=i.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","<\/table>"]||!i.indexOf("<tr")&&[2,"<table><tbody>","<\/tbody><\/table>"]||(!i.indexOf("<td")||!i.indexOf("<th"))&&[3,"<table><tbody><tr>","<\/tr><\/tbody><\/table>"]||[0,"",""],e="ignored<div>"+f[1]+n+f[2]+"<\/div>";for(typeof r.innerShiv=="function"?t.appendChild(r.innerShiv(e)):t.innerHTML=e;f[0]--;)t=t.lastChild;return h.utils.makeArray(t.lastChild.childNodes)}function f(n){var r,t;if(i.parseHTML)return i.parseHTML(n)||[];if(r=i.clean([n]),r&&r[0]){for(t=r[0];t.parentNode&&t.parentNode.nodeType!==11;)t=t.parentNode;t.parentNode&&t.parentNode.removeChild(t)}return r}h.utils.parseHtmlFragment=function(t){return i?f(t):n(t)};h.utils.setHtml=function(n,r){var f,u;if(h.utils.emptyDomNode(n),r=h.utils.unwrapObservable(r),r!==null&&r!==t)if(typeof r!="string"&&(r=r.toString()),i)i(n).html(r);else for(f=h.utils.parseHtmlFragment(r),u=0;u<f.length;u++)n.appendChild(f[u])}}();h.exportSymbol("utils.parseHtmlFragment",h.utils.parseHtmlFragment);h.exportSymbol("utils.setHtml",h.utils.setHtml);h.memoization=function(){function i(){return((1+Math.random())*4294967296|0).toString(16).substring(1)}function u(){return i()+i()}function r(n,t){var i;if(n)if(n.nodeType==8)i=h.memoization.parseMemoText(n.nodeValue),i!=null&&t.push({domNode:n,memoId:i});else if(n.nodeType==1)for(var u=0,f=n.childNodes,e=f.length;u<e;u++)r(f[u],t)}var n={};return{memoize:function(t){if(typeof t!="function")throw new Error("You can only pass a function to ko.memoization.memoize()");var i=u();return n[i]=t,"<!--[ko_memo:"+i+"]-->"},unmemoize:function(i,r){var u=n[i];if(u===t)throw new Error("Couldn't find any memo with ID "+i+". Perhaps it's already been unmemoized.");try{return u.apply(null,r||[]),!0}finally{delete n[i]}},unmemoizeDomNodeAndDescendants:function(n,t){var f=[],u,o,i,e;for(r(n,f),u=0,o=f.length;u<o;u++)i=f[u].domNode,e=[i],t&&h.utils.arrayPushAll(e,t),h.memoization.unmemoize(f[u].memoId,e),i.nodeValue="",i.parentNode&&i.parentNode.removeChild(i)},parseMemoText:function(n){var t=n.match(/^\[ko_memo\:(.*?)\]$/);return t?t[1]:null}}}();h.exportSymbol("memoization",h.memoization);h.exportSymbol("memoization.memoize",h.memoization.memoize);h.exportSymbol("memoization.unmemoize",h.memoization.unmemoize);h.exportSymbol("memoization.parseMemoText",h.memoization.parseMemoText);h.exportSymbol("memoization.unmemoizeDomNodeAndDescendants",h.memoization.unmemoizeDomNodeAndDescendants);h.extenders={throttle:function(n,t){n.throttleEvaluation=t;var i=null;return h.dependentObservable({read:n,write:function(r){clearTimeout(i);i=setTimeout(function(){n(r)},t)}})},rateLimit:function(n,t){var i,r,u;typeof t=="number"?i=t:(i=t.timeout,r=t.method);u=r=="notifyWhenChangesStop"?rt:it;n.limit(function(n){return u(n,i)})},notify:function(n,t){n.equalityComparer=t=="always"?null:w}};tt={undefined:1,boolean:1,number:1,string:1};h.exportSymbol("extenders",h.extenders);h.subscription=function(n,t,i){this.target=n;this.callback=t;this.disposeCallback=i;this.isDisposed=!1;h.exportProperty(this,"dispose",this.dispose)};h.subscription.prototype.dispose=function(){this.isDisposed=!0;this.disposeCallback()};h.subscribable=function(){h.utils.setPrototypeOfOrExtend(this,h.subscribable.fn);this._subscriptions={}};a="change";c={subscribe:function(n,t,i){var r=this,f,u;return i=i||a,f=t?n.bind(t):n,u=new h.subscription(r,f,function(){h.utils.arrayRemoveItem(r._subscriptions[i],u);r.afterSubscriptionRemove&&r.afterSubscriptionRemove(i)}),r.beforeSubscriptionAdd&&r.beforeSubscriptionAdd(i),r._subscriptions[i]||(r._subscriptions[i]=[]),r._subscriptions[i].push(u),u},notifySubscribers:function(n,t){if(t=t||a,this.hasSubscriptionsForEvent(t))try{h.dependencyDetection.begin();for(var u=this._subscriptions[t].slice(0),r=0,i;i=u[r];++r)i.isDisposed||i.callback(n)}finally{h.dependencyDetection.end()}},limit:function(n){var t=this,o=h.isObservable(t),r,u,i,f="beforeChange",e;t._origNotifySubscribers||(t._origNotifySubscribers=t.notifySubscribers,t.notifySubscribers=function(n,i){i&&i!==a?i===f?t._rateLimitedBeforeChange(n):t._origNotifySubscribers(n,i):t._rateLimitedChange(n)});e=n(function(){o&&i===t&&(i=t());r=!1;t.isDifferent(u,i)&&t._origNotifySubscribers(u=i)});t._rateLimitedChange=function(n){r=!0;i=n;e()};t._rateLimitedBeforeChange=function(n){r||(u=n,t._origNotifySubscribers(n,f))}},hasSubscriptionsForEvent:function(n){return this._subscriptions[n]&&this._subscriptions[n].length},getSubscriptionsCount:function(){var n=0;return h.utils.objectForEach(this._subscriptions,function(t,i){n+=i.length}),n},isDifferent:function(n,t){return!this.equalityComparer||!this.equalityComparer(n,t)},extend:ut};h.exportProperty(c,"subscribe",c.subscribe);h.exportProperty(c,"extend",c.extend);h.exportProperty(c,"getSubscriptionsCount",c.getSubscriptionsCount);h.utils.canSetPrototype&&h.utils.setPrototypeOf(c,Function.prototype);h.subscribable.fn=c;h.isSubscribable=function(n){return n!=null&&typeof n.subscribe=="function"&&typeof n.notifySubscribers=="function"};h.exportSymbol("subscribable",h.subscribable);h.exportSymbol("isSubscribable",h.isSubscribable);h.computedContext=h.dependencyDetection=function(){function f(){return++u}function i(i){t.push(n);n=i}function r(){n=t.pop()}var t=[],n,u=0;return{begin:i,end:r,registerDependency:function(t){if(n){if(!h.isSubscribable(t))throw new Error("Only subscribable things can act as dependencies");n.callback(t,t._id||(t._id=f()))}},ignore:function(n,t,u){try{return i(),n.apply(t,u||[])}finally{r()}},getDependenciesCount:function(){if(n)return n.computed.getDependenciesCount()},isInitial:function(){if(n)return n.isInitial}}}();h.exportSymbol("computedContext",h.computedContext);h.exportSymbol("computedContext.getDependenciesCount",h.computedContext.getDependenciesCount);h.exportSymbol("computedContext.isInitial",h.computedContext.isInitial);h.exportSymbol("computedContext.isSleeping",h.computedContext.isSleeping);h.observable=function(t){function i(){return arguments.length>0?(i.isDifferent(r,arguments[0])&&(i.valueWillMutate(),r=arguments[0],n&&(i._latestValue=r),i.valueHasMutated()),this):(h.dependencyDetection.registerDependency(i),r)}var r=t;return h.subscribable.call(i),h.utils.setPrototypeOfOrExtend(i,h.observable.fn),n&&(i._latestValue=r),i.peek=function(){return r},i.valueHasMutated=function(){i.notifySubscribers(r)},i.valueWillMutate=function(){i.notifySubscribers(r,"beforeChange")},h.exportProperty(i,"peek",i.peek),h.exportProperty(i,"valueHasMutated",i.valueHasMutated),h.exportProperty(i,"valueWillMutate",i.valueWillMutate),i};h.observable.fn={equalityComparer:w};l=h.observable.protoProperty="__ko_proto__";h.observable.fn[l]=h.observable;h.utils.canSetPrototype&&h.utils.setPrototypeOf(h.observable.fn,h.subscribable.fn);h.hasPrototype=function(n,i){return n===null||n===t||n[l]===t?!1:n[l]===i?!0:h.hasPrototype(n[l],i)};h.isObservable=function(n){return h.hasPrototype(n,h.observable)};h.isWriteableObservable=function(n){return typeof n=="function"&&n[l]===h.observable?!0:typeof n=="function"&&n[l]===h.dependentObservable&&n.hasWriteFunction?!0:!1};h.exportSymbol("observable",h.observable);h.exportSymbol("isObservable",h.isObservable);h.exportSymbol("isWriteableObservable",h.isWriteableObservable);h.exportSymbol("isWritableObservable",h.isWriteableObservable);h.observableArray=function(n){if(n=n||[],typeof n!="object"||!("length"in n))throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");var t=h.observable(n);return h.utils.setPrototypeOfOrExtend(t,h.observableArray.fn),t.extend({trackArrayChanges:!0})};h.observableArray.fn={remove:function(n){for(var r=this.peek(),i=[],f=typeof n=="function"&&!h.isObservable(n)?n:function(t){return t===n},u,t=0;t<r.length;t++)u=r[t],f(u)&&(i.length===0&&this.valueWillMutate(),i.push(u),r.splice(t,1),t--);return i.length&&this.valueHasMutated(),i},removeAll:function(n){if(n===t){var i=this.peek(),r=i.slice(0);return this.valueWillMutate(),i.splice(0,i.length),this.valueHasMutated(),r}return n?this.remove(function(t){return h.utils.arrayIndexOf(n,t)>=0}):[]},destroy:function(n){var i=this.peek(),u=typeof n=="function"&&!h.isObservable(n)?n:function(t){return t===n},t,r;for(this.valueWillMutate(),t=i.length-1;t>=0;t--)r=i[t],u(r)&&(i[t]._destroy=!0);this.valueHasMutated()},destroyAll:function(n){return n===t?this.destroy(function(){return!0}):n?this.destroy(function(t){return h.utils.arrayIndexOf(n,t)>=0}):[]},indexOf:function(n){var t=this();return h.utils.arrayIndexOf(t,n)},replace:function(n,t){var i=this.indexOf(n);i>=0&&(this.valueWillMutate(),this.peek()[i]=t,this.valueHasMutated())}};h.utils.arrayForEach(["pop","push","reverse","shift","sort","splice","unshift"],function(n){h.observableArray.fn[n]=function(){var t=this.peek(),i;return this.valueWillMutate(),this.cacheDiffForKnownOperation(t,n,arguments),i=t[n].apply(t,arguments),this.valueHasMutated(),i}});h.utils.arrayForEach(["slice"],function(n){h.observableArray.fn[n]=function(){var t=this();return t[n].apply(t,arguments)}});h.utils.canSetPrototype&&h.utils.setPrototypeOf(h.observableArray.fn,h.observable.fn);h.exportSymbol("observableArray",h.observableArray);v="arrayChange";h.extenders.trackArrayChanges=function(n){function f(){var f,u;r||(r=!0,f=n.notifySubscribers,n.notifySubscribers=function(n,t){return t&&t!==a||++i,f.apply(this,arguments)},u=[].concat(n.peek()||[]),t=null,n.subscribe(function(r){if(r=[].concat(r||[]),n.hasSubscriptionsForEvent(v)){var f=e(u,r);f.length&&n.notifySubscribers(f,v)}u=r;t=null;i=0}))}function e(n,r){return(!t||i>1)&&(t=h.utils.compareArrays(n,r,{sparse:!0})),t}if(!n.cacheDiffForKnownOperation){var r=!1,t=null,i=0,u=n.subscribe;n.subscribe=n.subscribe=function(n,t,i){return i===v&&f(),u.apply(this,arguments)};n.cacheDiffForKnownOperation=function(n,u,f){function c(n,t,i){return l[l.length]={status:n,value:t,index:i}}var e,y;if(r&&!i){var l=[],o=n.length,a=f.length,s=0;switch(u){case"push":s=o;case"unshift":for(e=0;e<a;e++)c("added",f[e],s+e);break;case"pop":s=o-1;case"shift":o&&c("deleted",n[s],s);break;case"splice":var v=Math.min(Math.max(0,f[0]<0?o+f[0]:f[0]),o),p=a===1?o:Math.min(v+(f[1]||0),o),w=v+a-2,d=Math.max(p,w),b=[],k=[];for(e=v,y=2;e<d;++e,++y)e<p&&k.push(c("deleted",n[e],e)),e<w&&b.push(c("added",f[y],e));h.utils.findMovesInArrayComparison(k,b);break;default:return}t=l}}}};h.computed=h.dependentObservable=function(i,r,u){function st(n,t){a[t]||(a[t]=n.subscribe(ht),++e)}function tt(){h.utils.objectForEach(a,function(n,t){t.dispose()});a={}}function it(){tt();e=0;k=!0;c=!1}function ht(){var n=f.throttleEvaluation;n&&n>=0?(clearTimeout(et),et=setTimeout(y,n)):f._evalRateLimited?f._evalRateLimited():y()}function y(i){var y,u,l,g;if(w){if(d)throw Error("A 'pure' computed must not be called recursively");return}if(!k){if(nt&&nt()){if(!b){p();return}}else b=!1;if(w=!0,v)try{y={};h.dependencyDetection.begin({callback:function(n,t){y[t]||(y[t]=1,++e)},computed:f,isInitial:t});e=0;s=o.call(r)}finally{h.dependencyDetection.end();w=!1}else try{u=a;l=e;h.dependencyDetection.begin({callback:function(n,t){k||(l&&u[t]?(a[t]=u[t],++e,delete u[t],--l):st(n,t))},computed:f,isInitial:d?t:!e});a={};e=0;try{g=r?o.call(r):o()}finally{h.dependencyDetection.end();l&&h.utils.objectForEach(u,function(n,t){t.dispose()});c=!1}f.isDifferent(s,g)&&(f.notifySubscribers(s,"beforeChange"),s=g,n&&(f._latestValue=s),i!==!0&&f.notifySubscribers(s))}finally{w=!1}e||p()}}function f(){if(arguments.length>0){if(typeof ft=="function")ft.apply(r,arguments);else throw new Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return h.dependencyDetection.registerDependency(f),c&&y(!0),s}function rt(){return c&&!e&&y(!0),s}function ut(){return c||e>0}var s,c=!0,w=!1,b=!1,k=!1,o=i,d=!1,v=!1,ot;if(o&&typeof o=="object"?(u=o,o=u.read):(u=u||{},o||(o=u.read)),typeof o!="function")throw new Error("Pass a function that returns the value of the ko.computed");var ft=u.write,l=u.disposeWhenNodeIsRemoved||u.disposeWhenNodeIsRemoved||null,g=u.disposeWhen||u.disposeWhen,nt=g,p=it,a={},e=0,et=null;return r||(r=u.owner),h.subscribable.call(f),h.utils.setPrototypeOfOrExtend(f,h.dependentObservable.fn),f.peek=rt,f.getDependenciesCount=function(){return e},f.hasWriteFunction=typeof u.write=="function",f.dispose=function(){p()},f.isActive=ut,ot=f.limit,f.limit=function(n){ot.call(f,n);f._evalRateLimited=function(){f._rateLimitedBeforeChange(s);c=!0;f._rateLimitedChange(f)}},u.pure?(d=!0,v=!0,f.beforeSubscriptionAdd=function(){v&&(v=!1,y(!0))},f.afterSubscriptionRemove=function(){f.getSubscriptionsCount()||(tt(),v=c=!0)}):u.deferEvaluation&&(f.beforeSubscriptionAdd=function(){rt();delete f.beforeSubscriptionAdd}),h.exportProperty(f,"peek",f.peek),h.exportProperty(f,"dispose",f.dispose),h.exportProperty(f,"isActive",f.isActive),h.exportProperty(f,"getDependenciesCount",f.getDependenciesCount),l&&(b=!0,l.nodeType&&(nt=function(){return!h.utils.domNodeIsAttachedToDocument(l)||g&&g()})),v||u.deferEvaluation||y(),l&&ut()&&l.nodeType&&(p=function(){h.utils.domNodeDisposal.removeDisposeCallback(l,p);it()},h.utils.domNodeDisposal.addDisposeCallback(l,p)),f};h.isComputed=function(n){return h.hasPrototype(n,h.dependentObservable)};b=h.observable.protoProperty;h.dependentObservable[b]=h.observable;h.dependentObservable.fn={equalityComparer:w};h.dependentObservable.fn[b]=h.dependentObservable;h.utils.canSetPrototype&&h.utils.setPrototypeOf(h.dependentObservable.fn,h.subscribable.fn);h.exportSymbol("dependentObservable",h.dependentObservable);h.exportSymbol("computed",h.dependentObservable);h.exportSymbol("isComputed",h.isComputed);h.pureComputed=function(n,t){return typeof n=="function"?h.computed(n,t,{pure:!0}):(n=h.utils.extend({},n),n.pure=!0,h.computed(n,t))};h.exportSymbol("pureComputed",h.pureComputed),function(){function i(r,f,e){var s,o;return(e=e||new n,r=f(r),s=typeof r=="object"&&r!==null&&r!==t&&!(r instanceof Date)&&!(r instanceof String)&&!(r instanceof Number)&&!(r instanceof Boolean),!s)?r:(o=r instanceof Array?[]:{},e.save(r,o),u(r,function(n){var u=f(r[n]),s;switch(typeof u){case"boolean":case"number":case"string":case"function":o[n]=u;break;case"object":case"undefined":s=e.get(u);o[n]=s!==t?s:i(u,f,e)}}),o)}function u(n,t){var i,r;if(n instanceof Array){for(i=0;i<n.length;i++)t(i);typeof n.toJSON=="function"&&t("toJSON")}else for(r in n)t(r)}function n(){this.keys=[];this.values=[]}var r=10;h.toJS=function(n){if(arguments.length==0)throw new Error("When calling ko.toJS, pass the object you want to convert.");return i(n,function(n){for(var t=0;h.isObservable(n)&&t<r;t++)n=n();return n})};h.toJSON=function(n,t,i){var r=h.toJS(n);return h.utils.stringifyJson(r,t,i)};n.prototype={constructor:n,save:function(n,t){var i=h.utils.arrayIndexOf(this.keys,n);i>=0?this.values[i]=t:(this.keys.push(n),this.values.push(t))},get:function(n){var i=h.utils.arrayIndexOf(this.keys,n);return i>=0?this.values[i]:t}}}();h.exportSymbol("toJS",h.toJS);h.exportSymbol("toJSON",h.toJSON),function(){var n="__ko__hasDomDataOptionValue__";h.selectExtensions={readValue:function(i){switch(h.utils.tagNameLower(i)){case"option":return i[n]===!0?h.utils.domData.get(i,h.bindingHandlers.options.optionValueDomDataKey):h.utils.ieVersion<=7?i.getAttributeNode("value")&&i.getAttributeNode("value").specified?i.value:i.text:i.value;case"select":return i.selectedIndex>=0?h.selectExtensions.readValue(i.options[i.selectedIndex]):t;default:return i.value}},writeValue:function(i,r,u){var e,f,s,o;switch(h.utils.tagNameLower(i)){case"option":switch(typeof r){case"string":h.utils.domData.set(i,h.bindingHandlers.options.optionValueDomDataKey,t);n in i&&delete i[n];i.value=r;break;default:h.utils.domData.set(i,h.bindingHandlers.options.optionValueDomDataKey,r);i[n]=!0;i.value=typeof r=="number"?r:""}break;case"select":for((r===""||r===null)&&(r=t),e=-1,f=0,s=i.options.length;f<s;++f)if(o=h.selectExtensions.readValue(i.options[f]),o==r||o==""&&r===t){e=f;break}(u||e>=0||r===t&&i.size>1)&&(i.selectedIndex=e);break;default:(r===null||r===t)&&(r="");i.value=r}}}}();h.exportSymbol("selectExtensions",h.selectExtensions);h.exportSymbol("selectExtensions.readValue",h.selectExtensions.readValue);h.exportSymbol("selectExtensions.writeValue",h.selectExtensions.writeValue);h.expressionRewriting=function(){function e(n){if(h.utils.arrayIndexOf(u,n)>=0)return!1;var t=n.match(f);return t===null?!1:t[1]?"Object("+t[1]+")"+t[2]:n}function i(n){var u=h.utils.stringTrim(n),l,r,i,v;u.charCodeAt(0)===123&&(u=u.slice(1,-1));var y=[],e=u.match(t),o,f,a=0;if(e)for(e.push(","),l=0;r=e[l];++l){if(i=r.charCodeAt(0),i===44){if(a<=0){o&&y.push(f?{key:o,value:f.join("")}:{unknown:o});o=f=a=0;continue}}else if(i===58){if(!f)continue}else if(i===47&&l&&r.length>1)v=e[l-1].match(s),v&&!c[v[0]]&&(u=u.substr(u.indexOf(r)+1),e=u.match(t),e.push(","),l=-1,r="/");else if(i===40||i===123||i===91)++a;else if(i===41||i===125||i===93)--a;else if(!o&&!f){o=i===34||i===39?r.slice(1,-1):r;continue}f?f.push(r):f=[r]}return y}function l(n,t){function u(n,t){function l(i){return i&&i.preprocess?t=i.preprocess(t,n,u):!0}var i;if(!c){if(!l(h.getBindingHandler(n)))return;r[n]&&(i=e(t))&&f.push("'"+n+"':function(_z){"+i+"=_z}")}s&&(t="function(){return "+t+" }");o.push("'"+n+"':"+t)}t=t||{};var o=[],f=[],s=t.valueAccessors,c=t.bindingParams,l=typeof n=="string"?i(n):n;return h.utils.arrayForEach(l,function(n){u(n.key||n.unknown,n.value)}),f.length&&u("_ko_property_writers","{"+f.join(",")+" }"),o.join(",")}var u=["true","false","null","undefined"],f=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,n=",\"'{}()/:[\\]",o="[^\\s:,/][^"+n+"]*[^\\s"+n+"]",t=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|"+o+"|[^\\s]","g"),s=/[\])"'A-Za-z0-9_$]+$/,c={"in":1,"return":1,"typeof":1},r={};return{bindingRewriteValidators:[],twoWayBindings:r,parseObjectLiteral:i,preProcessBindings:l,keyValueArrayContainsKey:function(n,t){for(var i=0;i<n.length;i++)if(n[i].key==t)return!0;return!1},writeValueToProperty:function(n,t,i,r,u){if(n&&h.isObservable(n))h.isWriteableObservable(n)&&(!u||n.peek()!==r)&&n(r);else{var f=t.get("_ko_property_writers");f&&f[i]&&f[i](r)}}}}();h.exportSymbol("expressionRewriting",h.expressionRewriting);h.exportSymbol("expressionRewriting.bindingRewriteValidators",h.expressionRewriting.bindingRewriteValidators);h.exportSymbol("expressionRewriting.parseObjectLiteral",h.expressionRewriting.parseObjectLiteral);h.exportSymbol("expressionRewriting.preProcessBindings",h.expressionRewriting.preProcessBindings);h.exportSymbol("expressionRewriting._twoWayBindings",h.expressionRewriting.twoWayBindings);h.exportSymbol("jsonExpressionRewriting",h.expressionRewriting);h.exportSymbol("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",h.expressionRewriting.preProcessBindings),function(){function n(n){return n.nodeType==8&&r.test(t?n.text:n.nodeValue)}function i(n){return n.nodeType==8&&o.test(t?n.text:n.nodeValue)}function f(t,r){for(var u=t,f=1,e=[];u=u.nextSibling;){if(i(u)&&(f--,f===0))return e;e.push(u);n(u)&&f++}if(!r)throw new Error("Cannot find closing comment tag to match: "+t.nodeValue);return null}function e(n,t){var i=f(n,t);return i?i.length>0?i[i.length-1].nextSibling:n.nextSibling:null}function c(t){var r=t.firstChild,u=null,f;if(r)do u?u.push(r):n(r)?(f=e(r,!0),f?r=f:u=[r]):i(r)&&(u=[r]);while(r=r.nextSibling);return u}var t=u&&u.createComment("test").text==="<!--test-->",r=t?/^<!--\s*ko(?:\s+([\s\S]+))?\s*-->$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,o=t?/^<!--\s*\/ko\s*-->$/:/^\s*\/ko\s*$/,s={ul:!0,ol:!0};h.virtualElements={allowedBindings:{},childNodes:function(t){return n(t)?f(t):t.childNodes},emptyNode:function(t){var r,i,u;if(n(t))for(r=h.virtualElements.childNodes(t),i=0,u=r.length;i<u;i++)h.removeNode(r[i]);else h.utils.emptyDomNode(t)},setDomNodeChildren:function(t,i){var u,r,f;if(n(t))for(h.virtualElements.emptyNode(t),u=t.nextSibling,r=0,f=i.length;r<f;r++)u.parentNode.insertBefore(i[r],u);else h.utils.setDomNodeChildren(t,i)},prepend:function(t,i){n(t)?t.parentNode.insertBefore(i,t.nextSibling):t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i)},insertAfter:function(t,i,r){r?n(t)?t.parentNode.insertBefore(i,r.nextSibling):r.nextSibling?t.insertBefore(i,r.nextSibling):t.appendChild(i):h.virtualElements.prepend(t,i)},firstChild:function(t){return n(t)?!t.nextSibling||i(t.nextSibling)?null:t.nextSibling:t.firstChild},nextSibling:function(t){return(n(t)&&(t=e(t)),t.nextSibling&&i(t.nextSibling))?null:t.nextSibling},hasBindingValue:n,virtualNodeBindingValue:function(n){var i=(t?n.text:n.nodeValue).match(r);return i?i[1]:null},normaliseVirtualElementDomStructure:function(n){var t,i,u,r;if(s[h.utils.tagNameLower(n)]&&(t=n.firstChild,t))do if(t.nodeType===1&&(i=c(t),i))for(u=t.nextSibling,r=0;r<i.length;r++)u?n.insertBefore(i[r],u):n.appendChild(i[r]);while(t=t.nextSibling)}}}();h.exportSymbol("virtualElements",h.virtualElements);h.exportSymbol("virtualElements.allowedBindings",h.virtualElements.allowedBindings);h.exportSymbol("virtualElements.emptyNode",h.virtualElements.emptyNode);h.exportSymbol("virtualElements.insertAfter",h.virtualElements.insertAfter);h.exportSymbol("virtualElements.prepend",h.virtualElements.prepend);h.exportSymbol("virtualElements.setDomNodeChildren",h.virtualElements.setDomNodeChildren),function(){function t(n,t,r){var u=n+(r&&r.valueAccessors||"");return t[u]||(t[u]=i(n,r))}function i(n,t){var i=h.expressionRewriting.preProcessBindings(n,t),r="with($context){with($data||{}){return{"+i+"}}}";return new Function("$context","$element",r)}var n="data-bind";h.bindingProvider=function(){this.bindingCache={}};h.utils.extend(h.bindingProvider.prototype,{nodeHasBindings:function(t){switch(t.nodeType){case 1:return t.getAttribute(n)!=null||h.components.getComponentNameForNode(t);case 8:return h.virtualElements.hasBindingValue(t);default:return!1}},getBindings:function(n,t){var i=this.getBindingsString(n,t),r=i?this.parseBindingsString(i,t,n):null;return h.components.addBindingsForCustomElement(r,n,t,!1)},getBindingAccessors:function(n,t){var i=this.getBindingsString(n,t),r=i?this.parseBindingsString(i,t,n,{valueAccessors:!0}):null;return h.components.addBindingsForCustomElement(r,n,t,!0)},getBindingsString:function(t){switch(t.nodeType){case 1:return t.getAttribute(n);case 8:return h.virtualElements.virtualNodeBindingValue(t);default:return null}},parseBindingsString:function(n,i,r,u){try{var e=t(n,this.bindingCache,u);return e(i,r)}catch(f){f.message="Unable to parse bindings.\nBindings value: "+n+"\nMessage: "+f.message;throw f;}}});h.bindingProvider.instance=new h.bindingProvider}();h.exportSymbol("bindingProvider",h.bindingProvider),function(){function v(n){return function(){return n}}function u(n){return n()}function s(n){return h.utils.objectMap(h.dependencyDetection.ignore(n),function(t,i){return function(){return n()[i]}})}function y(n,t,i){return typeof n=="function"?s(n.bind(null,t,i)):h.utils.objectMap(n,v)}function p(n,t){return s(this.getBindings.bind(this,n,t))}function w(n){var t=h.virtualElements.allowedBindings[n];if(!t)throw new Error("The binding '"+n+"' cannot be used with virtual elements");}function c(n,t,i){var r,u=h.virtualElements.firstChild(t),f=h.bindingProvider.instance,e=f.preprocessNode;if(e){while(r=u)u=h.virtualElements.nextSibling(r),e.call(f,r);u=h.virtualElements.firstChild(t)}while(r=u)u=h.virtualElements.nextSibling(r),l(n,r,i)}function l(n,t,i){var u=!0,r=t.nodeType===1,f;r&&h.virtualElements.normaliseVirtualElementDomStructure(t);f=r&&i||h.bindingProvider.instance.nodeHasBindings(t);f&&(u=a(t,null,n,i).shouldBindDescendants);u&&!o[h.utils.tagNameLower(t)]&&c(n,t,!r)}function b(n){var i=[],r={},t=[];return h.utils.objectForEach(n,function u(f){if(!r[f]){var e=h.getBindingHandler(f);e&&(e.after&&(t.push(f),h.utils.arrayForEach(e.after,function(i){if(n[i])if(h.utils.arrayIndexOf(t,i)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+t.join(", "));else u(i)}),t.length--),i.push({key:f,handler:e}));r[f]=!0}}),i}function a(n,i,r,e){var v=h.utils.domData.get(n,f),o,c,l,k;if(!i){if(v)throw Error("You cannot apply bindings multiple times to the same element.");h.utils.domData.set(n,f,!0)}if(!v&&e&&h.storedBindingContextForNode(n,r),i&&typeof i!="function")o=i;else{var y=h.bindingProvider.instance,d=y.getBindingAccessors||p,s=h.dependentObservable(function(){return o=i?i(r,n):d.call(y,n,r),o&&r._subscribable&&r._subscribable(),o},null,{disposeWhenNodeIsRemoved:n});o&&s.isActive()||(s=null)}if(o){l=s?function(n){return function(){return u(s()[n])}}:function(n){return o[n]};function a(){return h.utils.objectMap(s?s():o,u)}a.get=function(n){return o[n]&&u(l(n))};a.has=function(n){return n in o};k=b(o);h.utils.arrayForEach(k,function(i){var e=i.handler.init,s=i.handler.update,u=i.key;n.nodeType===8&&w(u);try{typeof e=="function"&&h.dependencyDetection.ignore(function(){var i=e(n,l(u),a,r.$data,r);if(i&&i.controlsDescendantBindings){if(c!==t)throw new Error("Multiple bindings ("+c+" and "+u+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");c=u}});typeof s=="function"&&h.dependentObservable(function(){s(n,l(u),a,r.$data,r)},null,{disposeWhenNodeIsRemoved:n})}catch(f){f.message='Unable to process binding "'+u+": "+o[u]+'"\nMessage: '+f.message;throw f;}})}return{shouldBindDescendants:c===t}}function n(n){return n&&n instanceof h.bindingContext?n:new h.bindingContext(n)}var o,f,e;h.bindingHandlers={};o={script:!0};h.getBindingHandler=function(n){return h.bindingHandlers[n]};h.bindingContext=function(n,i,r,u){function s(){var o=l?n():n,t=h.utils.unwrapObservable(o);return i?(i._subscribable&&i._subscribable(),h.utils.extend(f,i),e&&(f._subscribable=e)):(f.$parents=[],f.$root=t,f.ko=h),f.$rawData=o,f.$data=t,r&&(f[r]=t),u&&u(f,i,t),f.$data}function c(){return o&&!h.utils.anyDomNodeIsAttachedToDocument(o)}var f=this,l=typeof n=="function"&&!h.isObservable(n),o,e=h.dependentObservable(s,null,{disposeWhen:c,disposeWhenNodeIsRemoved:!0});e.isActive()&&(f._subscribable=e,e.equalityComparer=null,o=[],e._addNode=function(n){o.push(n);h.utils.domNodeDisposal.addDisposeCallback(n,function(n){h.utils.arrayRemoveItem(o,n);o.length||(e.dispose(),f._subscribable=e=t)})})};h.bindingContext.prototype.createChildContext=function(n,t,i){return new h.bindingContext(n,this,t,function(n,t){n.$parentContext=t;n.$parent=t.$data;n.$parents=(t.$parents||[]).slice(0);n.$parents.unshift(n.$parent);i&&i(n)})};h.bindingContext.prototype.extend=function(n){return new h.bindingContext(this._subscribable||this.$data,this,null,function(t,i){t.$rawData=i.$rawData;h.utils.extend(t,typeof n=="function"?n():n)})};f=h.utils.domData.nextKey();e=h.utils.domData.nextKey();h.storedBindingContextForNode=function(n,t){if(arguments.length==2)h.utils.domData.set(n,e,t),t._subscribable&&t._subscribable._addNode(n);else return h.utils.domData.get(n,e)};h.applyBindingAccessorsToNode=function(t,i,r){return t.nodeType===1&&h.virtualElements.normaliseVirtualElementDomStructure(t),a(t,i,n(r),!0)};h.applyBindingsToNode=function(t,i,r){var u=n(r);return h.applyBindingAccessorsToNode(t,y(i,u,t),u)};h.applyBindingsToDescendants=function(t,i){(i.nodeType===1||i.nodeType===8)&&c(n(t),i,!0)};h.applyBindings=function(t,u){if(!i&&r.jQuery&&(i=r.jQuery),u&&u.nodeType!==1&&u.nodeType!==8)throw new Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");u=u||r.document.body;l(n(t),u,!0)};h.contextFor=function(n){switch(n.nodeType){case 1:case 8:var i=h.storedBindingContextForNode(n);if(i)return i;if(n.parentNode)return h.contextFor(n.parentNode)}return t};h.dataFor=function(n){var i=h.contextFor(n);return i?i.$data:t};h.exportSymbol("bindingHandlers",h.bindingHandlers);h.exportSymbol("applyBindings",h.applyBindings);h.exportSymbol("applyBindingsToDescendants",h.applyBindingsToDescendants);h.exportSymbol("applyBindingAccessorsToNode",h.applyBindingAccessorsToNode);h.exportSymbol("applyBindingsToNode",h.applyBindingsToNode);h.exportSymbol("contextFor",h.contextFor);h.exportSymbol("dataFor",h.dataFor)}(),function(n){function u(t,i){return t.hasOwnProperty(i)?t[i]:n}function f(n,t){var f=u(i,n),o;f||(f=i[n]=new h.subscribable,e(n,function(t){r[n]=t;delete i[n];o?f.notifySubscribers(t):setTimeout(function(){f.notifySubscribers(t)},0)}),o=!0);f.subscribe(t)}function e(n,i){t("getConfig",[n],function(r){r?t("loadComponent",[n,r],function(n){i(n)}):i(null)})}function t(i,r,u,f){var e,o,s,c;if(f||(f=h.components.loaders.slice(0)),e=f.shift(),e)if(o=e[i],o){if(s=!1,c=o.apply(e,r.concat(function(n){s?u(null):n!==null?u(n):t(i,r,u,f)})),c!==n&&(s=!0,!e.suppressLoaderExceptions))throw new Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else t(i,r,u,f);else u(null)}var i={},r={};h.components={get:function(n,t){var i=u(r,n);i?setTimeout(function(){t(i)},0):f(n,t)},clearCachedDefinition:function(n){delete r[n]},_getFirstResultFromLoaders:t};h.components.loaders=[];h.exportSymbol("components",h.components);h.exportSymbol("components.get",h.components.get);h.exportSymbol("components.clearCachedDefinition",h.components.clearCachedDefinition)}(),function(){function l(n,r,u,f){var o={},l=2,e=function(){--l==0&&f(o)},s=u.template,c=u.viewModel;s?i(r,s,function(t){h.components._getFirstResultFromLoaders("loadTemplate",[n,t],function(n){o.template=n;e()})}):e();c?i(r,c,function(i){h.components._getFirstResultFromLoaders("loadViewModel",[n,i],function(n){o[t]=n;e()})}):e()}function a(n,t,i){var r,f;typeof t=="string"?i(h.utils.parseHtmlFragment(t)):t instanceof Array?i(t):c(t)?i(h.utils.makeArray(t.childNodes)):t.element?(r=t.element,v(r)?i(o(r)):typeof r=="string"?(f=u.getElementById(r),f?i(o(f)):n("Cannot find element with ID "+r)):n("Unknown element type: "+r)):n("Unknown template value: "+t)}function e(n,i,r){if(typeof i=="function")r(function(n){return new i(n)});else if(typeof i[t]=="function")r(i[t]);else if("instance"in i){var u=i.instance;r(function(){return u})}else"viewModel"in i?e(n,i.viewModel,r):n("Unknown viewModel value: "+i)}function o(n){switch(h.utils.tagNameLower(n)){case"script":return h.utils.parseHtmlFragment(n.text);case"textarea":return h.utils.parseHtmlFragment(n.value);case"template":if(c(n.content))return h.utils.cloneNodes(n.content.childNodes)}return h.utils.cloneNodes(n.childNodes)}function v(n){return r.HTMLElement?n instanceof HTMLElement:n&&n.tagName&&n.nodeType===1}function c(n){return r.DocumentFragment?n instanceof DocumentFragment:n&&n.nodeType===11}function i(n,t,i){typeof t.require=="string"?s||r.require?(s||r.require)([t.require],i):n("Uses require, but no AMD loader is present"):i(t)}function f(n){return function(t){throw new Error("Component '"+n+"': "+t);}}var n={},t;h.components.register=function(t,i){if(!i)throw new Error("Invalid configuration for "+t);if(h.components.isRegistered(t))throw new Error("Component "+t+" is already registered");n[t]=i};h.components.isRegistered=function(t){return t in n};h.components.unregister=function(t){delete n[t];h.components.clearCachedDefinition(t)};h.components.defaultLoader={getConfig:function(t,i){var r=n.hasOwnProperty(t)?n[t]:null;i(r)},loadComponent:function(n,t,r){var u=f(n);i(u,t,function(t){l(n,u,t,r)})},loadTemplate:function(n,t,i){a(f(n),t,i)},loadViewModel:function(n,t,i){e(f(n),t,i)}};t="createViewModel";h.exportSymbol("components.register",h.components.register);h.exportSymbol("components.isRegistered",h.components.isRegistered);h.exportSymbol("components.unregister",h.components.unregister);h.exportSymbol("components.defaultLoader",h.components.defaultLoader);h.components.loaders.push(h.components.defaultLoader);h.components._allRegisteredComponents=n}(),function(){function t(t,i){var u=t.getAttribute("params");if(u){var e=n.parseBindingsString(u,i,t,{valueAccessors:!0,bindingParams:!0}),f=h.utils.objectMap(e,function(n){return h.computed(n,null,{disposeWhenNodeIsRemoved:t})}),r=h.utils.objectMap(f,function(n){return n.isActive()?h.computed(function(){return h.utils.unwrapObservable(n())},null,{disposeWhenNodeIsRemoved:t}):n.peek()});return r.hasOwnProperty("$raw")||(r.$raw=f),r}return{$raw:{}}}h.components.getComponentNameForNode=function(n){var t=h.utils.tagNameLower(n);return h.components.isRegistered(t)&&t};h.components.addBindingsForCustomElement=function(n,i,r,u){var f,e;if(i.nodeType===1&&(f=h.components.getComponentNameForNode(i),f)){if(n=n||{},n.component)throw new Error('Cannot use the "component" binding on a custom element matching a component');e={name:f,params:t(i,r)};n.component=u?function(){return e}:e}return n};var n=new h.bindingProvider;h.utils.ieVersion<9&&(h.components.register=function(n){return function(t){return u.createElement(t),n.apply(this,arguments)}}(h.components.register),u.createDocumentFragment=function(n){return function(){var i=n(),r=h.components._allRegisteredComponents,t;for(t in r)r.hasOwnProperty(t)&&i.createElement(t);return i}}(u.createDocumentFragment))}(),function(){function t(n,t,i){var r=t.template,u;if(!r)throw new Error("Component '"+n+"' has no template");u=h.utils.cloneNodes(r);h.virtualElements.setDomNodeChildren(i,u)}function i(n,t,i){var r=n.createViewModel;return r?r.call(n,i,{element:t}):i}var n=0;h.bindingHandlers.component={init:function(r,u,f,e,o){var s,c,l=function(){var n=s&&s.dispose;typeof n=="function"&&n.call(s);c=null};return h.utils.domNodeDisposal.addDisposeCallback(r,l),h.computed(function(){var e=h.utils.unwrapObservable(u()),f,a,v;if(typeof e=="string"?f=e:(f=h.utils.unwrapObservable(e.name),a=h.utils.unwrapObservable(e.params)),!f)throw new Error("No component name specified");v=c=++n;h.components.get(f,function(n){if(c===v){if(l(),!n)throw new Error("Unknown component '"+f+"'");t(f,n,r);var u=i(n,r,a),e=o.createChildContext(u);s=u;h.applyBindingsToDescendants(e,r)}})},null,{disposeWhenNodeIsRemoved:r}),{controlsDescendantBindings:!0}}};h.virtualElements.allowedBindings.component=!0}();k={"class":"className","for":"htmlFor"};h.bindingHandlers.attr={update:function(n,i){var r=h.utils.unwrapObservable(i())||{};h.utils.objectForEach(r,function(i,r){r=h.utils.unwrapObservable(r);var u=r===!1||r===null||r===t;u&&n.removeAttribute(i);h.utils.ieVersion<=8&&i in k?(i=k[i],u?n.removeAttribute(i):n[i]=r):u||n.setAttribute(i,r.toString());i==="name"&&h.utils.setElementName(n,u?"":r.toString())})}},function(){h.bindingHandlers.checked={after:["value","attr"],init:function(n,i,r){function c(){var c=n.checked,t=a?u():c,o;h.computedContext.isInitial()||(!f||c)&&(o=h.dependencyDetection.ignore(i),e?s!==t?(c&&(h.utils.addOrRemoveItem(o,t,!0),h.utils.addOrRemoveItem(o,s,!1)),s=t):h.utils.addOrRemoveItem(o,t,c):h.expressionRewriting.writeValueToProperty(o,r,"checked",t,!0))}function l(){var t=h.utils.unwrapObservable(i());n.checked=e?h.utils.arrayIndexOf(t,u())>=0:o?t:u()===t}var u=h.pureComputed(function(){return r.has("checkedValue")?h.utils.unwrapObservable(r.get("checkedValue")):r.has("value")?h.utils.unwrapObservable(r.get("value")):n.value}),o=n.type=="checkbox",f=n.type=="radio";if(o||f){var e=o&&h.utils.unwrapObservable(i())instanceof Array,s=e?u():t,a=f||e;f&&!n.name&&h.bindingHandlers.uniqueName.init(n,function(){return!0});h.computed(c,null,{disposeWhenNodeIsRemoved:n});h.utils.registerEventHandler(n,"click",c);h.computed(l,null,{disposeWhenNodeIsRemoved:n})}}};h.expressionRewriting.twoWayBindings.checked=!0;h.bindingHandlers.checkedValue={update:function(n,t){n.value=h.utils.unwrapObservable(t())}}}();d="__ko__cssValue";h.bindingHandlers.css={update:function(n,t){var i=h.utils.unwrapObservable(t());typeof i=="object"?h.utils.objectForEach(i,function(t,i){i=h.utils.unwrapObservable(i);h.utils.toggleDomNodeCssClass(n,t,i)}):(i=String(i||""),h.utils.toggleDomNodeCssClass(n,n[d],!1),n[d]=i,h.utils.toggleDomNodeCssClass(n,i,!0))}};h.bindingHandlers.enable={update:function(n,t){var i=h.utils.unwrapObservable(t());i&&n.disabled?n.removeAttribute("disabled"):i||n.disabled||(n.disabled=!0)}};h.bindingHandlers.disable={update:function(n,t){h.bindingHandlers.enable.update(n,function(){return!h.utils.unwrapObservable(t())})}};h.bindingHandlers.event={init:function(n,t,i,r,u){var f=t()||{};h.utils.objectForEach(f,function(f){typeof f=="string"&&h.utils.registerEventHandler(n,f,function(n){var o,s=t()[f],e,c;if(s){try{e=h.utils.makeArray(arguments);r=u.$data;e.unshift(r);o=s.apply(r,e)}finally{o!==!0&&(n.preventDefault?n.preventDefault():n.returnValue=!1)}c=i.get(f+"Bubble")!==!1;c||(n.cancelBubble=!0,n.stopPropagation&&n.stopPropagation())}})})}};h.bindingHandlers.foreach={makeTemplateValueAccessor:function(n){return function(){var i=n(),t=h.utils.peekObservable(i);return!t||typeof t.length=="number"?{foreach:i,templateEngine:h.nativeTemplateEngine.instance}:(h.utils.unwrapObservable(i),{foreach:t.data,as:t.as,includeDestroyed:t.includeDestroyed,afterAdd:t.afterAdd,beforeRemove:t.beforeRemove,afterRender:t.afterRender,beforeMove:t.beforeMove,afterMove:t.afterMove,templateEngine:h.nativeTemplateEngine.instance})}},init:function(n,t){return h.bindingHandlers.template.init(n,h.bindingHandlers.foreach.makeTemplateValueAccessor(t))},update:function(n,t,i,r,u){return h.bindingHandlers.template.update(n,h.bindingHandlers.foreach.makeTemplateValueAccessor(t),i,r,u)}};h.expressionRewriting.bindingRewriteValidators.foreach=!1;h.virtualElements.allowedBindings.foreach=!0;y="__ko_hasfocusUpdating";g="__ko_hasfocusLastValue";h.bindingHandlers.hasfocus={init:function(n,t,i){var r=function(r){var u,f,e;if(n[y]=!0,u=n.ownerDocument,"activeElement"in u){try{f=u.activeElement}catch(o){f=u.body}r=f===n}e=t();h.expressionRewriting.writeValueToProperty(e,i,"hasfocus",r,!0);n[g]=r;n[y]=!1},u=r.bind(null,!0),f=r.bind(null,!1);h.utils.registerEventHandler(n,"focus",u);h.utils.registerEventHandler(n,"focusin",u);h.utils.registerEventHandler(n,"blur",f);h.utils.registerEventHandler(n,"focusout",f)},update:function(n,t){var i=!!h.utils.unwrapObservable(t());n[y]||n[g]===i||(i?n.focus():n.blur(),h.dependencyDetection.ignore(h.utils.triggerEvent,null,[n,i?"focusin":"focusout"]))}};h.expressionRewriting.twoWayBindings.hasfocus=!0;h.bindingHandlers.hasFocus=h.bindingHandlers.hasfocus;h.expressionRewriting.twoWayBindings.hasFocus=!0;h.bindingHandlers.html={init:function(){return{controlsDescendantBindings:!0}},update:function(n,t){h.utils.setHtml(n,t())}};nt("if");nt("ifnot",!1,!0);nt("with",!0,!1,function(n,t){return n.createChildContext(t)});p={};h.bindingHandlers.options={init:function(n){if(h.utils.tagNameLower(n)!=="select")throw new Error("options binding applies only to SELECT elements");while(n.length>0)n.remove(0);return{controlsDescendantBindings:!0}},update:function(n,i,r){function a(){return h.utils.arrayFilter(n.options,function(n){return n.selected})}function y(n,t,i){var r=typeof t;return r=="function"?t(n):r=="string"?n[t]:i}function d(i,f,e){var o,s,l;return e.length&&(u=e[0].selected?[h.selectExtensions.readValue(e[0])]:[],c=!0),o=n.ownerDocument.createElement("option"),i===p?(h.utils.setTextContent(o,r.get("optionsCaption")),h.selectExtensions.writeValue(o,t)):(s=y(i,r.get("optionsValue"),i),h.selectExtensions.writeValue(o,h.utils.unwrapObservable(s)),l=y(i,r.get("optionsText"),s),h.utils.setTextContent(o,l)),[o]}function w(t,i){if(u.length){var r=h.utils.arrayIndexOf(u,h.selectExtensions.readValue(i[0]))>=0;h.utils.setOptionNodeSelectionState(i[0],r);c&&!r&&h.dependencyDetection.ignore(h.utils.triggerEvent,null,[n,"change"])}}var b=n.length==0,e=!b&&n.multiple?n.scrollTop:null,f=h.utils.unwrapObservable(i()),k=r.get("optionsIncludeDestroyed"),v={},o,s,u,c,l;u=n.multiple?h.utils.arrayMap(a(),h.selectExtensions.readValue):n.selectedIndex>=0?[h.selectExtensions.readValue(n.options[n.selectedIndex])]:[];f&&(typeof f.length=="undefined"&&(f=[f]),s=h.utils.arrayFilter(f,function(n){return k||n===t||n===null||!h.utils.unwrapObservable(n._destroy)}),r.has("optionsCaption")&&(o=h.utils.unwrapObservable(r.get("optionsCaption")),o!==null&&o!==t&&s.unshift(p)));c=!1;v.beforeRemove=function(t){n.removeChild(t)};l=w;r.has("optionsAfterRender")&&(l=function(n,i){w(n,i);h.dependencyDetection.ignore(r.get("optionsAfterRender"),null,[i[0],n!==p?n:t])});h.utils.setDomNodeChildrenFromArrayMapping(n,s,d,v,l);h.dependencyDetection.ignore(function(){if(r.get("valueAllowUnset")&&r.has("value"))h.selectExtensions.writeValue(n,h.utils.unwrapObservable(r.get("value")),!0);else{var t;t=n.multiple?u.length&&a().length<u.length:u.length&&n.selectedIndex>=0?h.selectExtensions.readValue(n.options[n.selectedIndex])!==u[0]:u.length||n.selectedIndex>=0;t&&h.utils.triggerEvent(n,"change")}});h.utils.ensureSelectElementIsRenderedCorrectly(n);e&&Math.abs(e-n.scrollTop)>20&&(n.scrollTop=e)}};h.bindingHandlers.options.optionValueDomDataKey=h.utils.domData.nextKey();h.bindingHandlers.selectedOptions={after:["options","foreach"],init:function(n,t,i){h.utils.registerEventHandler(n,"change",function(){var u=t(),r=[];h.utils.arrayForEach(n.getElementsByTagName("option"),function(n){n.selected&&r.push(h.selectExtensions.readValue(n))});h.expressionRewriting.writeValueToProperty(u,i,"selectedOptions",r)})},update:function(n,t){if(h.utils.tagNameLower(n)!="select")throw new Error("values binding applies only to SELECT elements");var i=h.utils.unwrapObservable(t());i&&typeof i.length=="number"&&h.utils.arrayForEach(n.getElementsByTagName("option"),function(n){var t=h.utils.arrayIndexOf(i,h.selectExtensions.readValue(n))>=0;h.utils.setOptionNodeSelectionState(n,t)})}};h.expressionRewriting.twoWayBindings.selectedOptions=!0;h.bindingHandlers.style={update:function(n,i){var r=h.utils.unwrapObservable(i()||{});h.utils.objectForEach(r,function(i,r){r=h.utils.unwrapObservable(r);(r===null||r===t||r===!1)&&(r="");n.style[i]=r})}};h.bindingHandlers.submit={init:function(n,t,i,r,u){if(typeof t()!="function")throw new Error("The value for a submit binding must be a function");h.utils.registerEventHandler(n,"submit",function(i){var r,f=t();try{r=f.call(u.$data,n)}finally{r!==!0&&(i.preventDefault?i.preventDefault():i.returnValue=!1)}})}};h.bindingHandlers.text={init:function(){return{controlsDescendantBindings:!0}},update:function(n,t){h.utils.setTextContent(n,t())}};h.virtualElements.allowedBindings.text=!0,function(){if(r&&r.navigator)var i=function(n){if(n)return parseFloat(n[1])},o=r.opera&&r.opera.version&&parseInt(r.opera.version()),u=r.navigator.userAgent,s=i(u.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),c=i(u.match(/Firefox\/([^ ]*)/));if(h.utils.ieVersion<10)var f=h.utils.domData.nextKey(),e=h.utils.domData.nextKey(),l=function(n){var t=this.activeElement,i=t&&h.utils.domData.get(t,e);i&&i(n)},a=function(n,t){var i=n.ownerDocument;h.utils.domData.get(i,f)||(h.utils.domData.set(i,f,!0),h.utils.registerEventHandler(i,"selectionchange",l));h.utils.domData.set(n,e,t)};h.bindingHandlers.textInput={init:function(i,r,u){var p=i.value,v,y,e=function(f){clearTimeout(v);y=v=t;var e=i.value;p!==e&&(n&&f&&(i._ko_textInputProcessedEvent=f.type),p=e,h.expressionRewriting.writeValueToProperty(r(),u,"textInput",e))},l=function(t){if(!v){y=i.value;var r=n?e.bind(i,{type:t.type}):e;v=setTimeout(r,4)}},w=function(){var n=h.utils.unwrapObservable(r());if((n===null||n===t)&&(n=""),y!==t&&n===y){setTimeout(w,4);return}i.value!==n&&(p=n,i.value=n)},f=function(n,t){h.utils.registerEventHandler(i,n,t)};n&&h.bindingHandlers.textInput._forceUpdateOn?h.utils.arrayForEach(h.bindingHandlers.textInput._forceUpdateOn,function(n){n.slice(0,5)=="after"?f(n.slice(5),l):f(n,e)}):h.utils.ieVersion<10?(f("propertychange",function(n){n.propertyName==="value"&&e(n)}),h.utils.ieVersion==8&&(f("keyup",e),f("keydown",e)),h.utils.ieVersion>=8&&(a(i,e),f("dragend",l))):(f("input",e),s<5&&h.utils.tagNameLower(i)==="textarea"?(f("keydown",l),f("paste",l),f("cut",l)):o<11?f("keydown",l):c<4&&(f("DOMAutoComplete",e),f("dragdrop",e),f("drop",e)));f("change",e);h.computed(w,null,{disposeWhenNodeIsRemoved:i})}};h.expressionRewriting.twoWayBindings.textInput=!0;h.bindingHandlers.textinput={preprocess:function(n,t,i){i("textInput",n)}}}();h.bindingHandlers.uniqueName={init:function(n,t){if(t()){var i="ko_unique_"+ ++h.bindingHandlers.uniqueName.currentIndex;h.utils.setElementName(n,i)}}};h.bindingHandlers.uniqueName.currentIndex=0;h.bindingHandlers.value={after:["options","foreach"],init:function(n,t,i){var o,c,s;if(n.tagName.toLowerCase()=="input"&&(n.type=="checkbox"||n.type=="radio")){h.applyBindingAccessorsToNode(n,{checkedValue:t});return}var r=["change"],u=i.get("valueUpdate"),f=!1,e=null;u&&(typeof u=="string"&&(u=[u]),h.utils.arrayPushAll(r,u),r=h.utils.arrayGetDistinctValues(r));o=function(){e=null;f=!1;var r=t(),u=h.selectExtensions.readValue(n);h.expressionRewriting.writeValueToProperty(r,i,"value",u)};c=h.utils.ieVersion&&n.tagName.toLowerCase()=="input"&&n.type=="text"&&n.autocomplete!="off"&&(!n.form||n.form.autocomplete!="off");c&&h.utils.arrayIndexOf(r,"propertychange")==-1&&(h.utils.registerEventHandler(n,"propertychange",function(){f=!0}),h.utils.registerEventHandler(n,"focus",function(){f=!1}),h.utils.registerEventHandler(n,"blur",function(){f&&o()}));h.utils.arrayForEach(r,function(t){var i=o;h.utils.stringStartsWith(t,"after")&&(i=function(){e=h.selectExtensions.readValue(n);setTimeout(o,0)},t=t.substring(5));h.utils.registerEventHandler(n,t,i)});s=function(){var r=h.utils.unwrapObservable(t()),c=h.selectExtensions.readValue(n),o,u,f;if(e!==null&&r===e){setTimeout(s,0);return}o=r!==c;o&&(h.utils.tagNameLower(n)==="select"?(u=i.get("valueAllowUnset"),f=function(){h.selectExtensions.writeValue(n,r,u)},f(),u||r===h.selectExtensions.readValue(n)?setTimeout(f,0):h.dependencyDetection.ignore(h.utils.triggerEvent,null,[n,"change"])):h.selectExtensions.writeValue(n,r))};h.computed(s,null,{disposeWhenNodeIsRemoved:n})},update:function(){}};h.expressionRewriting.twoWayBindings.value=!0;h.bindingHandlers.visible={update:function(n,t){var i=h.utils.unwrapObservable(t()),r=!(n.style.display=="none");i&&!r?n.style.display="":!i&&r&&(n.style.display="none")}};ft("click");h.templateEngine=function(){};h.templateEngine.prototype.renderTemplateSource=function(){throw new Error("Override renderTemplateSource");};h.templateEngine.prototype.createJavaScriptEvaluatorBlock=function(){throw new Error("Override createJavaScriptEvaluatorBlock");};h.templateEngine.prototype.makeTemplateSource=function(n,t){if(typeof n=="string"){t=t||u;var i=t.getElementById(n);if(!i)throw new Error("Cannot find template with ID "+n);return new h.templateSources.domElement(i)}if(n.nodeType==1||n.nodeType==8)return new h.templateSources.anonymousTemplate(n);throw new Error("Unknown template type: "+n);};h.templateEngine.prototype.renderTemplate=function(n,t,i,r){var u=this.makeTemplateSource(n,r);return this.renderTemplateSource(u,t,i)};h.templateEngine.prototype.isTemplateRewritten=function(n,t){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(n,t).data("isRewritten")};h.templateEngine.prototype.rewriteTemplate=function(n,t,i){var r=this.makeTemplateSource(n,i),u=t(r.text());r.text(u);r.data("isRewritten",!0)};h.exportSymbol("templateEngine",h.templateEngine);h.templateRewriting=function(){function r(n){for(var f=h.expressionRewriting.bindingRewriteValidators,i,r,u,t=0;t<n.length;t++)if(i=n[t].key,f.hasOwnProperty(i))if(r=f[i],typeof r=="function"){if(u=r(n[t].value),u)throw new Error(u);}else if(!r)throw new Error("This template engine does not support the '"+i+"' binding within its templates");}function n(n,t,i,u){var f=h.expressionRewriting.parseObjectLiteral(n),e,o;return r(f),e=h.expressionRewriting.preProcessBindings(f,{valueAccessors:!0}),o="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+e+" } })()},'"+i.toLowerCase()+"')",u.createJavaScriptEvaluatorBlock(o)+t}var t=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,i=/<!--\s*ko\b\s*([\s\S]*?)\s*-->/g;return{ensureTemplateIsRewritten:function(n,t,i){t.isTemplateRewritten(n,i)||t.rewriteTemplate(n,function(n){return h.templateRewriting.memoizeBindingAttributeSyntax(n,t)},i)},memoizeBindingAttributeSyntax:function(r,u){return r.replace(t,function(){return n(arguments[4],arguments[1],arguments[2],u)}).replace(i,function(){return n(arguments[1],"<!-- ko -->","#comment",u)})},applyMemoizedBindingsToNextSibling:function(n,t){return h.memoization.memoize(function(i,r){var u=i.nextSibling;u&&u.nodeName.toLowerCase()===t&&h.applyBindingAccessorsToNode(u,n,r)})}}}();h.exportSymbol("__tr_ambtns",h.templateRewriting.applyMemoizedBindingsToNextSibling),function(){var i,n;h.templateSources={};h.templateSources.domElement=function(n){this.domElement=n};h.templateSources.domElement.prototype.text=function(){var i=h.utils.tagNameLower(this.domElement),n=i==="script"?"text":i==="textarea"?"value":"innerHTML",t;if(arguments.length==0)return this.domElement[n];t=arguments[0];n==="innerHTML"?h.utils.setHtml(this.domElement,t):this.domElement[n]=t};i=h.utils.domData.nextKey()+"_";h.templateSources.domElement.prototype.data=function(n){if(arguments.length===1)return h.utils.domData.get(this.domElement,i+n);h.utils.domData.set(this.domElement,i+n,arguments[1])};n=h.utils.domData.nextKey();h.templateSources.anonymousTemplate=function(n){this.domElement=n};h.templateSources.anonymousTemplate.prototype=new h.templateSources.domElement;h.templateSources.anonymousTemplate.prototype.constructor=h.templateSources.anonymousTemplate;h.templateSources.anonymousTemplate.prototype.text=function(){var i,r;if(arguments.length==0)return i=h.utils.domData.get(this.domElement,n)||{},i.textData===t&&i.containerData&&(i.textData=i.containerData.innerHTML),i.textData;r=arguments[0];h.utils.domData.set(this.domElement,n,{textData:r})};h.templateSources.domElement.prototype.nodes=function(){var t,i;if(arguments.length==0)return t=h.utils.domData.get(this.domElement,n)||{},t.containerData;i=arguments[0];h.utils.domData.set(this.domElement,n,{containerData:i})};h.exportSymbol("templateSources",h.templateSources);h.exportSymbol("templateSources.domElement",h.templateSources.domElement);h.exportSymbol("templateSources.anonymousTemplate",h.templateSources.anonymousTemplate)}(),function(){function i(n,t,i){for(var u,r=n,f=h.virtualElements.nextSibling(t);r&&(u=r)!==f;)r=h.virtualElements.nextSibling(u),i(u,r)}function f(n,t){if(n.length){var r=n[0],u=n[n.length-1],f=r.parentNode,e=h.bindingProvider.instance,o=e.preprocessNode;if(o){if(i(r,u,function(n,t){var f=n.previousSibling,i=o.call(e,n);i&&(n===r&&(r=i[0]||t),n===u&&(u=i[i.length-1]||f))}),n.length=0,!r)return;r===u?n.push(r):(n.push(r,u),h.utils.fixUpContinuousNodeArray(n,f))}i(r,u,function(n){(n.nodeType===1||n.nodeType===8)&&h.applyBindings(t,n)});i(r,u,function(n){(n.nodeType===1||n.nodeType===8)&&h.memoization.unmemoizeDomNodeAndDescendants(n,[t])});h.utils.fixUpContinuousNodeArray(n,f)}}function r(n){return n.nodeType?n:n.length>0?n[0]:null}function e(t,i,u,e,o){var s,c;o=o||{};var l=t&&r(t),a=l&&l.ownerDocument,v=o.templateEngine||n;if(h.templateRewriting.ensureTemplateIsRewritten(u,v,a),s=v.renderTemplate(u,e,o,a),typeof s.length!="number"||s.length>0&&typeof s[0].nodeType!="number")throw new Error("Template engine must return an array of DOM nodes");c=!1;switch(i){case"replaceChildren":h.virtualElements.setDomNodeChildren(t,s);c=!0;break;case"replaceNode":h.utils.replaceDomNodes(t,s);c=!0;break;case"ignoreTargetNode":break;default:throw new Error("Unknown renderMode: "+i);}return c&&(f(s,e),o.afterRender&&h.dependencyDetection.ignore(o.afterRender,null,[s,e.$data])),s}function o(n,t,i){return h.isObservable(n)?n():typeof n=="function"?n(t,i):n}function s(n,i){var r=h.utils.domData.get(n,u);r&&typeof r.dispose=="function"&&r.dispose();h.utils.domData.set(n,u,i&&i.isActive()?i:t)}var n,u;h.setTemplateEngine=function(i){if(i!=t&&!(i instanceof h.templateEngine))throw new Error("templateEngine must inherit from ko.templateEngine");n=i};h.renderTemplate=function(i,u,f,s,c){if(f=f||{},(f.templateEngine||n)==t)throw new Error("Set a template engine before calling renderTemplate");if(c=c||"replaceChildren",s){var l=r(s),a=function(){return!l||!h.utils.domNodeIsAttachedToDocument(l)},v=l&&c=="replaceNode"?l.parentNode:l;return h.dependentObservable(function(){var n=u&&u instanceof h.bindingContext?u:new h.bindingContext(h.utils.unwrapObservable(u)),t=o(i,n.$data,n),a=e(s,c,t,n,f);c=="replaceNode"&&(s=a,l=r(s))},null,{disposeWhen:a,disposeWhenNodeIsRemoved:v})}return h.memoization.memoize(function(n){h.renderTemplate(i,u,f,n,"replaceNode")})};h.renderTemplateForEach=function(n,i,r,u,s){var c,l=function(t,i){c=s.createChildContext(t,r.as,function(n){n.$index=i});var u=o(n,t,c);return e(null,"ignoreTargetNode",u,c,r)},a=function(n,t){f(t,c);r.afterRender&&r.afterRender(t,n)};return h.dependentObservable(function(){var n=h.utils.unwrapObservable(i)||[],f;typeof n.length=="undefined"&&(n=[n]);f=h.utils.arrayFilter(n,function(n){return r.includeDestroyed||n===t||n===null||!h.utils.unwrapObservable(n._destroy)});h.dependencyDetection.ignore(h.utils.setDomNodeChildrenFromArrayMapping,null,[u,f,l,r,a])},null,{disposeWhenNodeIsRemoved:u})};u=h.utils.domData.nextKey();h.bindingHandlers.template={init:function(n,t){var i=h.utils.unwrapObservable(t()),r,u;return typeof i=="string"||i.name?h.virtualElements.emptyNode(n):(r=h.virtualElements.childNodes(n),u=h.utils.moveCleanedNodesToContainerElement(r),new h.templateSources.anonymousTemplate(n).nodes(u)),{controlsDescendantBindings:!0}},update:function(n,t,i,r,u){var l=t(),a,f=h.utils.unwrapObservable(l),e=!0,c=null,o,v,y;typeof f=="string"?(o=l,f={}):(o=f.name,"if"in f&&(e=h.utils.unwrapObservable(f["if"])),e&&"ifnot"in f&&(e=!h.utils.unwrapObservable(f.ifnot)),a=h.utils.unwrapObservable(f.data));"foreach"in f?(v=e&&f.foreach||[],c=h.renderTemplateForEach(o||n,v,f,n,u)):e?(y="data"in f?u.createChildContext(a,f.as):u,c=h.renderTemplate(o||n,y,f,n)):h.virtualElements.emptyNode(n);s(n,c)}};h.expressionRewriting.bindingRewriteValidators.template=function(n){var t=h.expressionRewriting.parseObjectLiteral(n);return t.length==1&&t[0].unknown?null:h.expressionRewriting.keyValueArrayContainsKey(t,"name")?null:"This template engine does not support anonymous templates nested within its templates"};h.virtualElements.allowedBindings.template=!0}();h.exportSymbol("setTemplateEngine",h.setTemplateEngine);h.exportSymbol("renderTemplate",h.renderTemplate);h.utils.findMovesInArrayComparison=function(n,t,i){if(n.length&&t.length)for(var o,r,f,e,u=o=0;(!i||u<i)&&(f=n[o]);++o){for(r=0;e=t[r];++r)if(f.value===e.value){f.moved=e.index;e.moved=f.index;t.splice(r,1);u=r=0;break}u+=r}};h.utils.compareArrays=function(){function r(r,u,f){return f=typeof f=="boolean"?{dontLimitMoves:f}:f||{},r=r||[],u=u||[],r.length<=u.length?i(r,u,n,t,f):i(u,r,t,n,f)}function i(n,t,i,r,u){for(var p=Math.min,it=Math.max,l=[],c=n.length,f,a=t.length,rt=a-c||1,w=c+a+1,o,v,b,k,d,g,e=0;e<=c;e++)for(v=o,l.push(o=[]),b=p(a,e+rt),k=it(0,e-1),f=k;f<=b;f++)f?e?n[e-1]===t[f-1]?o[f]=v[f-1]:(d=v[f]||w,g=o[f-1]||w,o[f]=p(d,g)+1):o[f]=f+1:o[f]=e+1;var s=[],y,nt=[],tt=[];for(e=c,f=a;e||f;)y=l[e][f]-1,f&&y===l[e][f-1]?nt.push(s[s.length]={status:i,value:t[--f],index:f}):e&&y===l[e-1][f]?tt.push(s[s.length]={status:r,value:n[--e],index:e}):(--f,--e,u.sparse||s.push({status:"retained",value:t[f]}));return h.utils.findMovesInArrayComparison(nt,tt,c*10),s.reverse()}var n="added",t="deleted";return r}();h.exportSymbol("utils.compareArrays",h.utils.compareArrays),function(){function i(n,i,r,u,f){var e=[],o=h.dependentObservable(function(){var t=i(r,f,h.utils.fixUpContinuousNodeArray(e,n))||[];e.length>0&&(h.utils.replaceDomNodes(e,t),u&&h.dependencyDetection.ignore(u,null,[r,t,f]));e.length=0;h.utils.arrayPushAll(e,t)},null,{disposeWhenNodeIsRemoved:n,disposeWhen:function(){return!h.utils.anyDomNodeIsAttachedToDocument(e)}});return{mappedNodes:e,dependentObservable:o.isActive()?o:t}}var n=h.utils.domData.nextKey();h.utils.setDomNodeChildrenFromArrayMapping=function(r,u,f,e,o){function ft(n,t){s=w[t];d!==t&&(nt[n]=s);s.indexObservable(d++);h.utils.fixUpContinuousNodeArray(s.mappedNodes,r);b.push(s);a.push(s)}function v(n,t){if(n)for(var i=0,r=t.length;i<r;i++)t[i]&&h.utils.arrayForEach(t[i].mappedNodes,function(r){n(r,i,t[i].arrayEntry)})}var y,p,c,tt,et,l,it;u=u||[];e=e||{};var ot=h.utils.domData.get(r,n)===t,w=h.utils.domData.get(r,n)||[],st=h.utils.arrayMap(w,function(n){return n.arrayEntry}),ht=h.utils.compareArrays(st,u,e.dontLimitMoves),b=[],k=0,d=0,g=[],a=[],rt=[],nt=[],ut=[],s;for(c=0;y=ht[c];c++){p=y.moved;switch(y.status){case"deleted":p===t&&(s=w[k],s.dependentObservable&&s.dependentObservable.dispose(),g.push.apply(g,h.utils.fixUpContinuousNodeArray(s.mappedNodes,r)),e.beforeRemove&&(rt[c]=s,a.push(s)));k++;break;case"retained":ft(c,k++);break;case"added":p!==t?ft(c,p):(s={arrayEntry:y.value,indexObservable:h.observable(d++)},b.push(s),a.push(s),ot||(ut[c]=s))}}for(v(e.beforeMove,nt),h.utils.arrayForEach(g,e.beforeRemove?h.cleanNode:h.removeNode),c=0,tt=h.virtualElements.firstChild(r);s=a[c];c++){for(s.mappedNodes||h.utils.extend(s,i(r,f,s.arrayEntry,o,s.indexObservable)),it=0;l=s.mappedNodes[it];tt=l.nextSibling,et=l,it++)l!==tt&&h.virtualElements.insertAfter(r,l,et);!s.initialized&&o&&(o(s.arrayEntry,s.mappedNodes,s.indexObservable),s.initialized=!0)}v(e.beforeRemove,rt);v(e.afterMove,nt);v(e.afterAdd,ut);h.utils.domData.set(r,n,b)}}();h.exportSymbol("utils.setDomNodeChildrenFromArrayMapping",h.utils.setDomNodeChildrenFromArrayMapping);h.nativeTemplateEngine=function(){this.allowTemplateRewriting=!1};h.nativeTemplateEngine.prototype=new h.templateEngine;h.nativeTemplateEngine.prototype.constructor=h.nativeTemplateEngine;h.nativeTemplateEngine.prototype.renderTemplateSource=function(n){var r=!(h.utils.ieVersion<9),u=r?n.nodes:null,t=u?n.nodes():null,i;return t?h.utils.makeArray(t.cloneNode(!0).childNodes):(i=n.text(),h.utils.parseHtmlFragment(i))};h.nativeTemplateEngine.instance=new h.nativeTemplateEngine;h.setTemplateEngine(h.nativeTemplateEngine.instance);h.exportSymbol("nativeTemplateEngine",h.nativeTemplateEngine),function(){h.jqueryTmplTemplateEngine=function(){function t(){if(n<2)throw new Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");}function r(n,t,r){return i.tmpl(n,t,r)}var n=this.jQueryTmplVersion=function(){if(!i||!i.tmpl)return 0;try{if(i.tmpl.tag.tmpl.open.toString().indexOf("__")>=0)return 2}catch(n){}return 1}();this.renderTemplateSource=function(n,f,e){var o,s;e=e||{};t();o=n.data("precompiled");o||(s=n.text()||"",s="{{ko_with $item.koBindingContext}}"+s+"{{/ko_with}}",o=i.template(null,s),n.data("precompiled",o));var c=[f.$data],l=i.extend({koBindingContext:f},e.templateOptions),h=r(o,c,l);return h.appendTo(u.createElement("div")),i.fragments={},h};this.createJavaScriptEvaluatorBlock=function(n){return"{{ko_code ((function() { return "+n+" })()) }}"};this.addTemplate=function(n,t){u.write("<script type='text/html' id='"+n+"'>"+t+"<\/script>")};n>0&&(i.tmpl.tag.ko_code={open:"__.push($1 || '');"},i.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};h.jqueryTmplTemplateEngine.prototype=new h.templateEngine;h.jqueryTmplTemplateEngine.prototype.constructor=h.jqueryTmplTemplateEngine;var n=new h.jqueryTmplTemplateEngine;n.jQueryTmplVersion>0&&h.setTemplateEngine(n);h.exportSymbol("jqueryTmplTemplateEngine",h.jqueryTmplTemplateEngine)}()})})()})(),function(n){typeof require=="function"&&typeof exports=="object"&&typeof module=="object"?n(require("knockout"),exports):typeof define=="function"&&define.amd?define(["knockout","exports"],n):n(ko,ko.validation={})}(function(n,t){function a(n){var t=n==="max";return function(r,u){var o,h,s,f,e;if(i.utils.isEmptyVal(r))return!0;u.typeAttr===undefined?(h="text",o=u):(h=u.typeAttr,o=u.value);isNaN(o)||o instanceof Date||(h="number");switch(h.toLowerCase()){case"week":if(s=/^(\d{4})-W(\d{2})$/,f=r.match(s),f===null)throw new Error("Invalid value for "+n+" attribute for week input.  Should look like '2000-W33' http://www.w3.org/TR/html-markup/input.week.html#input.week.attrs.min");return(e=o.match(s),!e)?!1:t?f[1]<e[1]||f[1]===e[1]&&f[2]<=e[2]:f[1]>e[1]||f[1]===e[1]&&f[2]>=e[2];case"month":if(s=/^(\d{4})-(\d{2})$/,f=r.match(s),f===null)throw new Error("Invalid value for "+n+" attribute for month input.  Should look like '2000-03' http://www.w3.org/TR/html-markup/input.month.html#input.month.attrs.min");return(e=o.match(s),!e)?!1:t?f[1]<e[1]||f[1]===e[1]&&f[2]<=e[2]:f[1]>e[1]||f[1]===e[1]&&f[2]>=e[2];case"number":case"range":return t?!isNaN(r)&&parseFloat(r)<=parseFloat(o):!isNaN(r)&&parseFloat(r)>=parseFloat(o);default:return t?r<=o:r>=o}}}function y(n,t,r){return t.validator(n(),r.params===undefined?!0:f(r.params))?!0:(n.setError(i.formatMessage(r.message||t.message,f(r.params),n)),!1)}function p(n,t,r){n.isValidating(!0);var u=function(u){var e=!1,o="";if(!n.__valid__()){n.isValidating(!1);return}u.message?(e=u.isValid,o=u.message):e=u;e||(n.error(i.formatMessage(o||r.message||t.message,f(r.params),n)),n.__valid__(e));n.isValidating(!1)};i.utils.async(function(){t.validator(n(),r.params===undefined?!0:f(r.params),u)})}var l,s,h,v;if(typeof n=="undefined")throw new Error("Knockout is required, please ensure it is loaded before loading this validation plug-in");n.validation=t;var i=n.validation,u=n.utils,f=u.unwrapObservable,e=u.arrayForEach,r=u.extend,c={registerExtenders:!0,messagesOnModified:!0,errorsAsTitle:!0,errorsAsTitleOnModified:!1,messageTemplate:null,insertMessages:!0,parseInputAttributes:!1,writeInputAttributes:!1,decorateInputElement:!1,decorateElementOnModified:!0,errorClass:null,errorElementClass:"validationElement",errorMessageClass:"validationMessage",allowHtmlMessages:!1,grouping:{deep:!1,observable:!0,live:!1},validate:{}},o=r({},c);o.html5Attributes=["required","pattern","min","max","step"];o.html5InputTypes=["email","number","date"];o.reset=function(){r(o,c)};i.configuration=o;i.utils=function(){var r=(new Date).getTime(),t={},n="__ko_validation__";return{isArray:function(n){return n.isArray||Object.prototype.toString.call(n)==="[object Array]"},isObject:function(n){return n!==null&&typeof n=="object"},isNumber:function(n){return!isNaN(n)},isObservableArray:function(n){return!!n&&typeof n.remove=="function"&&typeof n.removeAll=="function"&&typeof n.destroy=="function"&&typeof n.destroyAll=="function"&&typeof n.indexOf=="function"&&typeof n.replace=="function"},values:function(n){var i=[],t;for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);return i},getValue:function(n){return typeof n=="function"?n():n},hasAttribute:function(n,t){return n.getAttribute(t)!==null},getAttribute:function(n,t){return n.getAttribute(t)},setAttribute:function(n,t,i){return n.setAttribute(t,i)},isValidatable:function(n){return!!(n&&n.rules&&n.isValid&&n.isModified)},insertAfter:function(n,t){n.parentNode.insertBefore(t,n.nextSibling)},newId:function(){return r+=1},getConfigOptions:function(n){var t=i.utils.contextFor(n);return t||i.configuration},setDomData:function(r,u){var f=r[n];f||(r[n]=f=i.utils.newId());t[f]=u},getDomData:function(i){var r=i[n];return r?t[r]:undefined},contextFor:function(n){switch(n.nodeType){case 1:case 8:var t=i.utils.getDomData(n);if(t)return t;if(n.parentNode)return i.utils.contextFor(n.parentNode)}return undefined},isEmptyVal:function(n){return n===undefined?!0:n===null?!0:n===""?!0:void 0},getOriginalElementTitle:function(n){var t=i.utils.getAttribute(n,"data-orig-title"),r=n.title,u=i.utils.hasAttribute(n,"data-orig-title");return u?t:r},async:function(n){window.setImmediate?window.setImmediate(n):window.setTimeout(n,0)},forEach:function(n,t){if(i.utils.isArray(n))return e(n,t);for(var r in n)n.hasOwnProperty(r)&&t(n[r],r)}}}();l=function(){function l(n){e(n.subscriptions,function(n){n.dispose()});n.subscriptions=[]}function v(n){n.options.deep&&(e(n.flagged,function(n){delete n.__kv_traversed}),n.flagged.length=0);n.options.live||l(n)}function s(n,t){t.validatables=[];l(t);a(n,t);v(t)}function a(i,r,u){var e=[],f=i.peek?i.peek():i;i.__kv_traversed!==!0&&(r.options.deep&&(i.__kv_traversed=!0,r.flagged.push(i)),u=u!==undefined?u:r.options.deep?1:-1,n.isObservable(i)&&(i.errors||t.isValidatable(i)||i.extend({validatable:!0}),r.validatables.push(i),r.options.live&&t.isObservableArray(i)&&r.subscriptions.push(i.subscribe(function(){r.graphMonitor.valueHasMutated()}))),f&&!f._destroy&&(t.isArray(f)?e=f:t.isObject(f)&&(e=t.values(f))),u!==0&&t.forEach(e,function(t){t&&!t.nodeType&&(!n.isComputed(t)||t.rules)&&a(t,r,u+1)}))}function h(n){var i=[];return e(n,function(n){t.isValidatable(n)&&!n.isValid()&&i.push(n.error.peek())}),i}var c=0,o=i.configuration,t=i.utils;return{init:function(n,t){c>0&&!t||(n=n||{},n.errorElementClass=n.errorElementClass||n.errorClass||o.errorElementClass,n.errorMessageClass=n.errorMessageClass||n.errorClass||o.errorMessageClass,r(o,n),o.registerExtenders&&i.registerExtenders(),c=1)},reset:i.configuration.reset,group:function(i,f){f=r(r({},o.grouping),f);var l={options:f,graphMonitor:n.observable(),flagged:[],subscriptions:[],validatables:[]},c=null;return c=f.observable?n.computed(function(){return l.graphMonitor(),s(i,l),h(l.validatables)}):function(){return s(i,l),h(l.validatables)},c.showAllMessages=function(n){n===undefined&&(n=!0);c.forEach(function(i){t.isValidatable(i)&&i.isModified(n)})},c.isAnyMessageShown=function(){return!!c.find(function(n){return t.isValidatable(n)&&!n.isValid()&&n.isModified()})},c.filter=function(n){return n=n||function(){return!0},c(),u.arrayFilter(l.validatables,n)},c.find=function(n){return n=n||function(){return!0},c(),u.arrayFirst(l.validatables,n)},c.forEach=function(n){n=n||function(){};c();e(l.validatables,n)},c.map=function(n){return n=n||function(n){return n},c(),u.arrayMap(l.validatables,n)},c._updateState=function(n){if(!t.isObject(n))throw new Error("An object is required.");if(i=n,f.observable)l.graphMonitor.valueHasMutated();else return s(n,l),h(l.validatables)},c},formatMessage:function(n,i,r){if(t.isObject(i)&&i.typeAttr&&(i=i.value),typeof n=="function")return n(i,r);var u=f(i);return u==null&&(u=[]),t.isArray(u)||(u=[u]),n.replace(/{(\d+)}/gi,function(n,t){return typeof u[t]!="undefined"?u[t]:n})},addRule:function(n,t){n.extend({validatable:!0});var i=!!u.arrayFirst(n.rules(),function(n){return n.rule&&n.rule===t.rule});return i||n.rules.push(t),n},addAnonymousRule:function(n,t){t.message===undefined&&(t.message="Error");t.onlyIf&&(t.condition=t.onlyIf);i.addRule(n,t)},addExtender:function(r){n.extenders[r]=function(n,u){return u&&(u.message||u.onlyIf)?i.addRule(n,{rule:r,message:u.message,params:t.isEmptyVal(u.params)?!0:u.params,condition:u.onlyIf}):i.addRule(n,{rule:r,params:u})}},registerExtenders:function(){if(o.registerExtenders)for(var t in i.rules)i.rules.hasOwnProperty(t)&&(n.extenders[t]||i.addExtender(t))},insertValidationMessage:function(n){var i=document.createElement("SPAN");return i.className=t.getConfigOptions(n).errorMessageClass,t.insertAfter(n,i),i},parseInputValidationAttributes:function(n,r){e(i.configuration.html5Attributes,function(u){var e,f;t.hasAttribute(n,u)&&(e=n.getAttribute(u)||!0,(u==="min"||u==="max")&&(f=n.getAttribute("type"),typeof f!="undefined"&&f||(f="text"),e={typeAttr:f,value:e}),i.addRule(r(),{rule:u,params:e}))});var u=n.getAttribute("type");e(i.configuration.html5InputTypes,function(n){n===u&&i.addRule(r(),{rule:n==="date"?"dateISO":n,params:!0})})},writeInputValidationAttributes:function(t,r){var f=r(),o;f&&f.rules&&(o=f.rules(),e(i.configuration.html5Attributes,function(i){var r=u.arrayFirst(o,function(n){return n.rule&&n.rule.toLowerCase()===i.toLowerCase()});r&&n.computed({read:function(){var u=n.unwrap(r.params);r.rule==="pattern"&&u instanceof RegExp&&(u=u.source);t.setAttribute(i,u)},disposeWhenNodeIsRemoved:t})}),o=null)},makeBindingHandlerValidatable:function(t){var i=n.bindingHandlers[t].init;n.bindingHandlers[t].init=function(t,r,u,f,e){return i(t,r,u,f,e),n.bindingHandlers.validationCore.init(t,r,u,f,e)}},setRules:function(r,u){var e=function(r,u){var s,h,o,l;if(r&&u)for(s in u)if(u.hasOwnProperty(s)&&(h=u[s],r[s])){var a=r[s],c=f(a),y={},v={};for(o in h)h.hasOwnProperty(o)&&(i.rules[o]?y[o]=h[o]:v[o]=h[o]);if(n.isObservable(a)&&a.extend(y),c&&t.isArray(c))for(l=0;l<c.length;l++)e(c[l],v);else e(c,v)}};e(r,u)}}}();r(n.validation,l);i.rules={};i.rules.required={validator:function(n,t){var i;return n===undefined||n===null?!t:(i=n,typeof n=="string"&&(i=String.prototype.trim?n.trim():n.replace(/^\s+|\s+$/g,"")),!t)?!0:(i+"").length>0},message:"This field is required."};i.rules.min={validator:a("min"),message:"Please enter a value greater than or equal to {0}."};i.rules.max={validator:a("max"),message:"Please enter a value less than or equal to {0}."};i.rules.minLength={validator:function(n,t){if(i.utils.isEmptyVal(n))return!0;var r=i.utils.isNumber(n)?""+n:n;return r.length>=t},message:"Please enter at least {0} characters."};i.rules.maxLength={validator:function(n,t){if(i.utils.isEmptyVal(n))return!0;var r=i.utils.isNumber(n)?""+n:n;return r.length<=t},message:"Please enter no more than {0} characters."};i.rules.pattern={validator:function(n,t){return i.utils.isEmptyVal(n)||n.toString().match(t)!==null},message:"Please check this value."};i.rules.step={validator:function(n,t){if(i.utils.isEmptyVal(n)||t==="any")return!0;var r=n*100%(t*100);return Math.abs(r)<1e-5||Math.abs(1-r)<1e-5},message:"The value must increment by {0}."};i.rules.email={validator:function(n,t){return t?i.utils.isEmptyVal(n)||t&&/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(n):!0},message:"Please enter a proper email address."};i.rules.date={validator:function(n,t){return t?i.utils.isEmptyVal(n)||t&&!/Invalid|NaN/.test(new Date(n)):!0},message:"Please enter a proper date."};i.rules.dateISO={validator:function(n,t){return t?i.utils.isEmptyVal(n)||t&&/^\d{4}[-/](?:0?[1-9]|1[012])[-/](?:0?[1-9]|[12][0-9]|3[01])$/.test(n):!0},message:"Please enter a proper date."};i.rules.number={validator:function(n,t){return t?i.utils.isEmptyVal(n)||t&&/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(n):!0},message:"Please enter a number."};i.rules.digit={validator:function(n,t){return t?i.utils.isEmptyVal(n)||t&&/^\d+$/.test(n):!0},message:"Please enter a digit."};i.rules.phoneUS={validator:function(n,t){return t?i.utils.isEmptyVal(n)?!0:typeof n!="string"?!1:(n=n.replace(/\s+/g,""),t&&n.length>9&&n.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)):!0},message:"Please specify a valid phone number."};i.rules.equal={validator:function(n,t){var r=t;return n===i.utils.getValue(r)},message:"Values must equal."};i.rules.notEqual={validator:function(n,t){var r=t;return n!==i.utils.getValue(r)},message:"Please choose another value."};i.rules.unique={validator:function(n,t){var r=i.utils.getValue(t.collection),e=i.utils.getValue(t.externalValue),f=0;return!n||!r?!0:(u.arrayFilter(r,function(i){n===(t.valueAccessor?t.valueAccessor(i):i)&&f++}),f<(!e?2:1))},message:"Please make sure the value is unique."},function(){i.registerExtenders()}();n.bindingHandlers.validationCore=function(){return{init:function(t,r){var u=i.utils.getConfigOptions(t),f=r(),e;u.parseInputAttributes&&i.utils.async(function(){i.parseInputValidationAttributes(t,r)});u.insertMessages&&i.utils.isValidatable(f)&&(e=i.insertValidationMessage(t),u.messageTemplate?n.renderTemplate(u.messageTemplate,{field:f},null,e,"replaceNode"):n.applyBindingsToNode(e,{validationMessage:f}));u.writeInputAttributes&&i.utils.isValidatable(f)&&i.writeInputValidationAttributes(t,r);u.decorateInputElement&&i.utils.isValidatable(f)&&n.applyBindingsToNode(t,{validationElement:f})}}}();i.makeBindingHandlerValidatable("value");i.makeBindingHandlerValidatable("checked");n.bindingHandlers.textInput&&i.makeBindingHandlerValidatable("textInput");i.makeBindingHandlerValidatable("selectedOptions");n.bindingHandlers.validationMessage={update:function(t,r){var e=r(),s=i.utils.getConfigOptions(t),v=f(e),h=!1,c=!1,o,l,a;if(e===null||typeof e=="undefined")throw new Error("Cannot bind validationMessage to undefined value. data-bind expression: "+t.getAttribute("data-bind"));h=e.isModified&&e.isModified();c=e.isValid&&e.isValid();o=null;(!s.messagesOnModified||h)&&(o=c?null:e.error);l=!s.messagesOnModified||h?!c:!1;a=t.style.display!=="none";s.allowHtmlMessages?u.setHtml(t,o):n.bindingHandlers.text.update(t,function(){return o});a&&!l?t.style.display="none":!a&&l&&(t.style.display="")}};n.bindingHandlers.validationElement={update:function(t,r,u){var e=r(),o=i.utils.getConfigOptions(t),l=f(e),h=!1,s=!1,c;if(e===null||typeof e=="undefined")throw new Error("Cannot bind validationElement to undefined value. data-bind expression: "+t.getAttribute("data-bind"));(h=e.isModified&&e.isModified(),s=e.isValid&&e.isValid(),c=function(){var n={},t=!o.decorateElementOnModified||h?!s:!1;return n[o.errorElementClass]=t,n},n.bindingHandlers.css.update(t,c,u),o.errorsAsTitle)&&n.bindingHandlers.attr.update(t,function(){var n=!o.errorsAsTitleOnModified||h,r=i.utils.getOriginalElementTitle(t);return n&&!s?{title:e.error,"data-orig-title":r}:!n||s?{title:r,"data-orig-title":null}:void 0})}};n.bindingHandlers.validationOptions=function(){return{init:function(n,t){var e=f(t()),u;e&&(u=r({},i.configuration),r(u,e),i.utils.setDomData(n,u))}}}();n.extenders.validation=function(n,t){return e(i.utils.isArray(t)?t:[t],function(t){i.addAnonymousRule(n,t)}),n};n.extenders.validatable=function(t,u){var o,f,s,e;return i.utils.isObject(u)||(u={enable:u}),"enable"in u||(u.enable=!0),u.enable&&!i.utils.isValidatable(t)?(o=i.configuration.validate||{},f={throttleEvaluation:u.throttle||o.throttle},t.error=n.observable(null),t.rules=n.observableArray(),t.isValidating=n.observable(!1),t.__valid__=n.observable(!0),t.isModified=n.observable(!1),t.isValid=n.computed(t.__valid__),t.setError=function(n){var i=t.error.peek(),r=t.__valid__.peek();t.error(n);t.__valid__(!1);i===n||r||t.isValid.notifySubscribers()},t.clearError=function(){return t.error(null),t.__valid__(!0),t},s=t.subscribe(function(){t.isModified(!0)}),e=n.computed(r({read:function(){var n=t(),r=t.rules();return i.validateObservable(t),!0}},f)),r(e,f),t._disposeValidation=function(){t.isValid.dispose();t.rules.removeAll();s.dispose();e.dispose();delete t.rules;delete t.error;delete t.isValid;delete t.isValidating;delete t.__valid__;delete t.isModified;delete t.setError;delete t.clearError;delete t._disposeValidation}):u.enable===!1&&t._disposeValidation&&t._disposeValidation(),t};i.validateObservable=function(n){for(var u=0,r,t,f=n.rules(),e=f.length;u<e;u++)if(t=f[u],!t.condition||t.condition())if(r=t.rule?i.rules[t.rule]:t,r.async||t.async)p(n,r,t);else if(!y(n,r,t))return!1;return n.clearError(),!0};s={};i.defineLocale=function(n,t){return n&&t?(s[n.toLowerCase()]=t,t):null};i.locale=function(n){if(n)if(n=n.toLowerCase(),s.hasOwnProperty(n))i.localize(s[n]),h=n;else throw new Error("Localization "+n+" has not been loaded.");return h};i.localize=function(n){var r=i.rules,t;for(t in n)r.hasOwnProperty(t)&&(r[t].message=n[t])},function(){var r={},t=i.rules,n;for(n in t)t.hasOwnProperty(n)&&(r[n]=t[n].message);i.defineLocale("en-us",r)}();h="en-us";n.applyBindingsWithValidation=function(t,u,f){var o=document.body,e;u&&u.nodeType?(o=u,e=f):e=u;i.init();e&&(e=r(r({},i.configuration),e),i.utils.setDomData(o,e));n.applyBindings(t,o)};v=n.applyBindings;n.applyBindings=function(n,t){i.init();v(n,t)};n.validatedObservable=function(t,r){if(!r&&!i.utils.isObject(t))return n.observable(t).extend({validatable:!0});var u=n.observable(t);return u.errors=i.group(i.utils.isObject(t)?t:{},r),u.isValid=n.observable(u.errors().length===0),n.isObservable(u.errors)?u.errors.subscribe(function(n){u.isValid(n.length===0)}):n.computed(u.errors).subscribe(function(n){u.isValid(n.length===0)}),u.subscribe(function(n){i.utils.isObject(n)||(n={});u.errors._updateState(n);u.isValid(u.errors().length===0)}),u}})