/
knockback-full-stack.min.js
111 lines (110 loc) · 145 KB
/
knockback-full-stack.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
knockback-full-stack.js 0.18.4
(c) 2011-2013 Kevin Malakoff - http://kmalakoff.github.com/knockback/
License: MIT (http://www.opensource.org/licenses/mit-license.php)
Dependencies: Knockout.js, Backbone.js, and Underscore.js.
*/
// Underscore.js 1.6.0
// http://underscorejs.org
// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:j.now(),a=null,i=n.apply(e,u),e=u=null};return function(){var l=j.now();o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
//# sourceMappingURL=underscore-min.map
(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=o.call(arguments,1);if(!c(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)f(i,e);if(r)f(r,arguments);return this},stopListening:function(t,e,r){var s=this._listeningTo;if(!s)return this;var n=!e&&!r;if(!r&&typeof e==="object")r=this;if(t)(s={})[t._listenId]=t;for(var a in s){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))delete this._listeningTo[a]}return this}};var l=/\s+/;var c=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(l.test(i)){var n=i.split(l);for(var a=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var f=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};var d={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){var n=this._listeningTo||(this._listeningTo={});var a=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeof r==="object")s=this;e[t](r,s,this);return this}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);var p=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,r){var s,n,a,o,h,u,l,c;if(t==null)return this;if(typeof t==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in n)this.id=n[this.idAttribute];for(s in n){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{delete this.changed[s]}a?delete c[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(var f=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)return this;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e,r=false;var s=this._changing?this._previousAttributes:this.attributes;for(var n in t){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}return r},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var r=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))return false;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);return this.sync("read",this,t)},save:function(t,e,r){var s,n,a,o=this.attributes;if(t==null||typeof t==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))return false}else{if(!this._validate(s,r))return false}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void 0)r.parse=true;var h=this;var u=r.success;r.success=function(t){h.attributes=o;var e=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){return false}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;return a},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var s=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();return false}q(this,t);var n=this.sync("delete",this,t);if(!t.wait)s();return n},url:function(){var t=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())return t;return t.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));return false}});var v=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.attributes);return i[t].apply(i,e)}});var g=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,y))},remove:function(t,e){var r=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});var s,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;delete this._byId[o.id];delete this._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}return r?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);var r=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);var s,n,a,o,h,u,l;var c=e.at;var f=this.model;var d=this.comparator&&c==null&&e.sort!==false;var v=i.isString(this.comparator)?this.comparator:null;var g=[],y=[],_={};var b=e.add,w=e.merge,x=e.remove;var E=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(h instanceof p){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}else if(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;var k=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}return r?t[0]:t},reset:function(t,e){e||(e={});for(var r=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(){return o.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){return this.models[t]},where:function(t,e){if(i.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},pluck:function(t){return i.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var r=this;t.success=function(i){var s=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var r=this;var s=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof p)return t;e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger("invalid",this,r.validationError,e);return false},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.models);return i[t].apply(i,e)}});var b=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){var s=i.isFunction(e)?e:function(t){return t.get(e)};return i[t](this.models,s,r)}});var w=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;var s=e.match(x);var n=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");var r=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!n){e.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;var o=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);return i.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};var i=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var U=function(t,e){var r=this;var s;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){return r.apply(this,arguments)}}i.extend(s,r,e);var n=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=new n;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;return s};p.extend=g.extend=$.extend=w.extend=N.extend=U;var M=function(){throw new Error('A "url" property or function must be specified')};var q=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};return e});
//# sourceMappingURL=backbone-min.map
// Knockout JavaScript library v3.0.0
// (c) Steven Sanderson - http://knockoutjs.com/
// License: MIT (http://www.opensource.org/licenses/mit-license.php)
(function() {(function(q){var y=this||(0,eval)("this"),w=y.document,K=y.navigator,u=y.jQuery,B=y.JSON;(function(q){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?q(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],q):q(y.ko={})})(function(F){function G(a,c){return null===a||typeof a in N?a===c:!1}function H(b,c,d,e){a.d[b]={init:function(b){a.a.f.set(b,L,{});return{controlsDescendantBindings:!0}},update:function(b,h,k,m,f){k=a.a.f.get(b,L);h=a.a.c(h());
m=!d!==!h;var p=!k.ob;if(p||c||m!==k.Db)p&&(k.ob=a.a.Ya(a.e.childNodes(b),!0)),m?(p||a.e.S(b,a.a.Ya(k.ob)),a.Ta(e?e(f,h):f,b)):a.e.Z(b),k.Db=m}};a.g.Y[b]=!1;a.e.P[b]=!0}var a="undefined"!==typeof F?F:{};a.b=function(b,c){for(var d=b.split("."),e=a,g=0;g<d.length-1;g++)e=e[d[g]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version="3.0.0";a.b("version",a.version);a.a=function(){function b(a,b){for(var f in a)a.hasOwnProperty(f)&&b(f,a[f])}function c(k,b){if("input"!==a.a.v(k)||!k.type||"click"!=
b.toLowerCase())return!1;var f=k.type;return"checkbox"==f||"radio"==f}var d={},e={};d[K&&/Firefox\/2/i.test(K.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];d.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(d,function(a,b){if(b.length)for(var f=0,c=b.length;f<c;f++)e[b[f]]=a});var g={propertychange:!0},h=w&&function(){for(var a=3,b=w.createElement("div"),f=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+
++a+"]><i></i><![endif]--\x3e",f[0];);return 4<a?a:q}();return{$a:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],n:function(a,b){for(var f=0,c=a.length;f<c;f++)b(a[f])},l:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var f=0,c=a.length;f<c;f++)if(a[f]===b)return f;return-1},Ua:function(a,b,f){for(var c=0,d=a.length;c<d;c++)if(b.call(f,a[c]))return a[c];return null},ia:function(b,c){var f=a.a.l(b,c);0<=f&&b.splice(f,1)},Va:function(b){b=
b||[];for(var c=[],f=0,d=b.length;f<d;f++)0>a.a.l(c,b[f])&&c.push(b[f]);return c},ha:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)f.push(b(a[c]));return f},ga:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)b(a[c])&&f.push(a[c]);return f},X:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var f=0,c=b.length;f<c;f++)a.push(b[f]);return a},V:function(b,c,f){var d=a.a.l(a.a.Ha(b),c);0>d?f&&b.push(c):f||b.splice(d,1)},extend:function(a,b){if(b)for(var f in b)b.hasOwnProperty(f)&&
(a[f]=b[f]);return a},K:b,Da:function(a,b){if(!a)return a;var f={},c;for(c in a)a.hasOwnProperty(c)&&(f[c]=b(a[c],c,a));return f},wa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Vb:function(b){b=a.a.Q(b);for(var c=w.createElement("div"),f=0,d=b.length;f<d;f++)c.appendChild(a.L(b[f]));return c},Ya:function(b,c){for(var f=0,d=b.length,e=[];f<d;f++){var g=b[f].cloneNode(!0);e.push(c?a.L(g):g)}return e},S:function(b,c){a.a.wa(b);if(c)for(var f=0,d=c.length;f<d;f++)b.appendChild(c[f])},nb:function(b,
c){var f=b.nodeType?[b]:b;if(0<f.length){for(var d=f[0],e=d.parentNode,g=0,n=c.length;g<n;g++)e.insertBefore(c[g],d);g=0;for(n=f.length;g<n;g++)a.removeNode(f[g])}},$:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);if(1<a.length){var f=a[0],c=a[a.length-1];for(a.length=0;f!==c;)if(a.push(f),f=f.nextSibling,!f)return;a.push(c)}}return a},qb:function(a,b){7>h?a.setAttribute("selected",b):a.selected=b},la:function(a){return null===a||a===
q?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},ec:function(b,c){for(var f=[],d=(b||"").split(c),e=0,g=d.length;e<g;e++){var n=a.a.la(d[e]);""!==n&&f.push(n)}return f},ac:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Gb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;
return!!a},va:function(b){return a.a.Gb(b,b.ownerDocument.documentElement)},Ra:function(b){return!!a.a.Ua(b,a.a.va)},v:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},r:function(b,d,f){var e=h&&g[d];if(e||"undefined"==typeof u)if(e||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var s=function(a){f.call(b,a)},l="on"+d;b.attachEvent(l,s);a.a.C.ea(b,function(){b.detachEvent(l,s)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(d,
f,!1);else{if(c(b,d)){var n=f;f=function(a,b){var f=this.checked;b&&(this.checked=!0!==b.Ab);n.call(this,a);this.checked=f}}u(b).bind(d,f)}},da:function(a,b){if(!a||!a.nodeType)throw Error("element must be a DOM node when calling triggerEvent");if("undefined"!=typeof u){var f=[];c(a,b)&&f.push({Ab:a.checked});u(a).trigger(b,f)}else if("function"==typeof w.createEvent)if("function"==typeof a.dispatchEvent)f=w.createEvent(e[b]||"HTMLEvents"),f.initEvent(b,!0,!0,y,0,0,0,0,0,!1,!1,!1,!1,0,a),a.dispatchEvent(f);
else throw Error("The supplied element doesn't support dispatchEvent");else if("undefined"!=typeof a.fireEvent)c(a,b)&&(a.checked=!0!==a.checked),a.fireEvent("on"+b);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.M(b)?b():b},Ha:function(b){return a.M(b)?b.t():b},ma:function(b,c,f){if(c){var d=/\S+/g,e=b.className.match(d)||[];a.a.n(c.match(d),function(b){a.a.V(e,b,f)});b.className=e.join(" ")}},Ma:function(b,c){var f=a.a.c(c);if(null===f||f===q)f="";var d=a.e.firstChild(b);
!d||3!=d.nodeType||a.e.nextSibling(d)?a.e.S(b,[w.createTextNode(f)]):d.data=f;a.a.Jb(b)},pb:function(a,b){a.name=b;if(7>=h)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(f){}},Jb:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Hb:function(a){if(h){var b=a.style.width;a.style.width=0;a.style.width=b}},Zb:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var f=[],d=b;d<=c;d++)f.push(d);return f},Q:function(a){for(var b=[],c=0,d=a.length;c<
d;c++)b.push(a[c]);return b},cc:6===h,dc:7===h,ja:h,ab:function(b,c){for(var f=a.a.Q(b.getElementsByTagName("input")).concat(a.a.Q(b.getElementsByTagName("textarea"))),d="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},e=[],g=f.length-1;0<=g;g--)d(f[g])&&e.push(f[g]);return e},Wb:function(b){return"string"==typeof b&&(b=a.a.la(b))?B&&B.parse?B.parse(b):(new Function("return "+b))():null},Na:function(b,c,f){if(!B||!B.stringify)throw 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 B.stringify(a.a.c(b),c,f)},Xb:function(c,d,f){f=f||{};var e=f.params||{},g=f.includeFields||this.$a,h=c;if("object"==typeof c&&"form"===a.a.v(c))for(var h=c.action,n=g.length-1;0<=n;n--)for(var r=a.a.ab(c,g[n]),v=r.length-1;0<=v;v--)e[r[v].name]=r[v].value;d=a.a.c(d);var t=w.createElement("form");t.style.display="none";t.action=h;t.method="post";for(var E in d)c=w.createElement("input"),c.name=E,c.value=a.a.Na(a.a.c(d[E])),t.appendChild(c);b(e,function(a,b){var c=w.createElement("input");c.name=
a;c.value=b;t.appendChild(c)});w.body.appendChild(t);f.submitter?f.submitter(t):t.submit();setTimeout(function(){t.parentNode.removeChild(t)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.n);a.b("utils.arrayFirst",a.a.Ua);a.b("utils.arrayFilter",a.a.ga);a.b("utils.arrayGetDistinctValues",a.a.Va);a.b("utils.arrayIndexOf",a.a.l);a.b("utils.arrayMap",a.a.ha);a.b("utils.arrayPushAll",a.a.X);a.b("utils.arrayRemoveItem",a.a.ia);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",
a.a.$a);a.b("utils.getFormFields",a.a.ab);a.b("utils.peekObservable",a.a.Ha);a.b("utils.postJson",a.a.Xb);a.b("utils.parseJson",a.a.Wb);a.b("utils.registerEventHandler",a.a.r);a.b("utils.stringifyJson",a.a.Na);a.b("utils.range",a.a.Zb);a.b("utils.toggleDomNodeCssClass",a.a.ma);a.b("utils.triggerEvent",a.a.da);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.K);a.b("utils.addOrRemoveItem",a.a.V);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=
this,d=Array.prototype.slice.call(arguments);a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}});a.a.f=new function(){function a(b,h){var k=b[d];if(!k||"null"===k||!e[k]){if(!h)return q;k=b[d]="ko"+c++;e[k]={}}return e[k]}var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===q?q:e[d]},set:function(c,d,e){if(e!==q||a(c,!1)!==q)a(c,!0)[d]=e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},D:function(){return c++ +
d}}};a.b("utils.domData",a.a.f);a.b("utils.domData.clear",a.a.f.clear);a.a.C=new function(){function b(b,c){var e=a.a.f.get(b,d);e===q&&c&&(e=[],a.a.f.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),m=0;m<e.length;m++)e[m](d);a.a.f.clear(d);"function"==typeof u&&"function"==typeof u.cleanData&&u.cleanData([d]);if(g[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.D(),e={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{ea:function(a,c){if("function"!=
typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},mb:function(c,e){var g=b(c,!1);g&&(a.a.ia(g,e),0==g.length&&a.a.f.set(c,d,q))},L:function(b){if(e[b.nodeType]&&(c(b),g[b.nodeType])){var d=[];a.a.X(d,b.getElementsByTagName("*"));for(var m=0,f=d.length;m<f;m++)c(d[m])}return b},removeNode:function(b){a.L(b);b.parentNode&&b.parentNode.removeChild(b)}}};a.L=a.a.C.L;a.removeNode=a.a.C.removeNode;a.b("cleanNode",a.L);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.C);
a.b("utils.domNodeDisposal.addDisposeCallback",a.a.C.ea);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.C.mb);(function(){a.a.Fa=function(b){var c;if("undefined"!=typeof u)if(u.parseHTML)c=u.parseHTML(b)||[];else{if((c=u.clean([b]))&&c[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.la(b).toLowerCase();c=w.createElement("div");d=d.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!d.indexOf("<tr")&&[2,
"<table><tbody>","</tbody></table>"]||(!d.indexOf("<td")||!d.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];b="ignored<div>"+d[1]+b+d[2]+"</div>";for("function"==typeof y.innerShiv?c.appendChild(y.innerShiv(b)):c.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.Q(c.lastChild.childNodes)}return c};a.a.Ka=function(b,c){a.a.wa(b);c=a.a.c(c);if(null!==c&&c!==q)if("string"!=typeof c&&(c=c.toString()),"undefined"!=typeof u)u(b).html(c);else for(var d=a.a.Fa(c),e=0;e<d.length;e++)b.appendChild(d[e])}})();
a.b("utils.parseHtmlFragment",a.a.Fa);a.b("utils.setHtml",a.a.Ka);a.u=function(){function b(c,e){if(c)if(8==c.nodeType){var g=a.u.jb(c.nodeValue);null!=g&&e.push({Fb:c,Tb:g})}else if(1==c.nodeType)for(var g=0,h=c.childNodes,k=h.length;g<k;g++)b(h[g],e)}var c={};return{Ca:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);
c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},ub:function(a,b){var g=c[a];if(g===q)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return g.apply(null,b||[]),!0}finally{delete c[a]}},vb:function(c,e){var g=[];b(c,g);for(var h=0,k=g.length;h<k;h++){var m=g[h].Fb,f=[m];e&&a.a.X(f,e);a.u.ub(g[h].Tb,f);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},jb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.u);a.b("memoization.memoize",
a.u.Ca);a.b("memoization.unmemoize",a.u.ub);a.b("memoization.parseMemoText",a.u.jb);a.b("memoization.unmemoizeDomNodeAndDescendants",a.u.vb);a.xa={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d);d=setTimeout(function(){b(a)},c)}})},notify:function(a,c){a.equalityComparer="always"==c?null:G}};var N={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.xa);a.sb=function(b,c,d){this.target=b;this.qa=c;this.Eb=d;a.s(this,"dispose",
this.B)};a.sb.prototype.B=function(){this.Qb=!0;this.Eb()};a.ca=function(){this.F={};a.a.extend(this,a.ca.fn);a.s(this,"subscribe",this.T);a.s(this,"extend",this.extend);a.s(this,"getSubscriptionsCount",this.Lb)};var I="change";a.ca.fn={T:function(b,c,d){d=d||I;var e=new a.sb(this,c?b.bind(c):b,function(){a.a.ia(this.F[d],e)}.bind(this));this.F[d]||(this.F[d]=[]);this.F[d].push(e);return e},notifySubscribers:function(b,c){c=c||I;if(this.cb(c))try{a.i.Wa();for(var d=this.F[c].slice(0),e=0,g;g=d[e];++e)g&&
!0!==g.Qb&&g.qa(b)}finally{a.i.end()}},cb:function(a){return this.F[a]&&this.F[a].length},Lb:function(){var b=0;a.a.K(this.F,function(a,d){b+=d.length});return b},extend:function(b){var c=this;b&&a.a.K(b,function(b,e){var g=a.xa[b];"function"==typeof g&&(c=g(c,e)||c)});return c}};a.fb=function(a){return null!=a&&"function"==typeof a.T&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.ca);a.b("isSubscribable",a.fb);a.i=function(){var b=[];return{Wa:function(a){b.push(a&&{qa:a,Za:[]})},
end:function(){b.pop()},lb:function(c){if(!a.fb(c))throw Error("Only subscribable things can act as dependencies");if(0<b.length){var d=b[b.length-1];!d||0<=a.a.l(d.Za,c)||(d.Za.push(c),d.qa(c))}},p:function(a,d,e){try{return b.push(null),a.apply(d,e||[])}finally{b.pop()}}}}();a.q=function(b){function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.O(),d=arguments[0],c.N()),this;a.i.lb(c);return d}var d=b;a.ca.call(c);c.t=function(){return d};c.N=function(){c.notifySubscribers(d)};
c.O=function(){c.notifySubscribers(d,"beforeChange")};a.a.extend(c,a.q.fn);a.s(c,"peek",c.t);a.s(c,"valueHasMutated",c.N);a.s(c,"valueWillMutate",c.O);return c};a.q.fn={equalityComparer:G};var C=a.q.Yb="__ko_proto__";a.q.fn[C]=a.q;a.ya=function(b,c){return null===b||b===q||b[C]===q?!1:b[C]===c?!0:a.ya(b[C],c)};a.M=function(b){return a.ya(b,a.q)};a.gb=function(b){return"function"==typeof b&&b[C]===a.q||"function"==typeof b&&b[C]===a.h&&b.Nb?!0:!1};a.b("observable",a.q);a.b("isObservable",a.M);a.b("isWriteableObservable",
a.gb);a.ba=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.q(b);a.a.extend(b,a.ba.fn);return b.extend({trackArrayChanges:!0})};a.ba.fn={remove:function(b){for(var c=this.t(),d=[],e="function"!=typeof b||a.M(b)?function(a){return a===b}:b,g=0;g<c.length;g++){var h=c[g];e(h)&&(0===d.length&&this.O(),d.push(h),c.splice(g,1),g--)}d.length&&this.N();return d},removeAll:function(b){if(b===
q){var c=this.t(),d=c.slice(0);this.O();c.splice(0,c.length);this.N();return d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.t(),d="function"!=typeof b||a.M(b)?function(a){return a===b}:b;this.O();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.N()},destroyAll:function(b){return b===q?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,
c){var d=this.indexOf(a);0<=d&&(this.O(),this.t()[d]=c,this.N())}};a.a.n("pop push reverse shift sort splice unshift".split(" "),function(b){a.ba.fn[b]=function(){var a=this.t();this.O();this.Xa(a,b,arguments);a=a[b].apply(a,arguments);this.N();return a}});a.a.n(["slice"],function(b){a.ba.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.b("observableArray",a.ba);var J="arrayChange";a.xa.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=
function(a,b){b&&b!==I||++g;return c.apply(this,arguments)};var m=[].concat(b.t()||[]);e=null;b.T(function(c){c=[].concat(c||[]);if(b.cb(J)){var d;if(!e||1<g)e=a.a.ra(m,c,{sparse:!0});d=e;d.length&&b.notifySubscribers(d,J)}m=c;e=null;g=0})}}if(!b.Xa){var d=!1,e=null,g=0,h=b.T;b.T=b.subscribe=function(a,b,f){f===J&&c();return h.apply(this,arguments)};b.Xa=function(a,b,c){function p(a,b,c){h.push({status:a,value:b,index:c})}if(d&&!g){var h=[],l=a.length,n=c.length,r=0;switch(b){case "push":r=l;case "unshift":for(b=
0;b<n;b++)p("added",c[b],r+b);break;case "pop":r=l-1;case "shift":l&&p("deleted",a[r],r);break;case "splice":b=Math.min(Math.max(0,0>c[0]?l+c[0]:c[0]),l);for(var l=1===n?l:Math.min(b+(c[1]||0),l),n=b+n-2,r=Math.max(l,n),v=2;b<r;++b,++v)b<l&&p("deleted",a[b],b),b<n&&p("added",c[v],b);break;default:return}e=h}}}};a.h=function(b,c,d){function e(){a.a.n(z,function(a){a.B()});z=[]}function g(){var a=k.throttleEvaluation;a&&0<=a?(clearTimeout(x),x=setTimeout(h,a)):h()}function h(){if(!s){if(E&&E()){if(!l){D();
p=!0;return}}else l=!1;s=!0;try{var b=a.a.ha(z,function(a){return a.target});a.i.Wa(function(c){var d;0<=(d=a.a.l(b,c))?b[d]=q:z.push(c.T(g))});for(var d=c?n.call(c):n(),e=b.length-1;0<=e;e--)b[e]&&z.splice(e,1)[0].B();p=!0;k.equalityComparer&&k.equalityComparer(f,d)||(k.notifySubscribers(f,"beforeChange"),f=d,k.notifySubscribers(f))}finally{a.i.end(),s=!1}z.length||D()}}function k(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw 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}p||h();a.i.lb(k);return f}function m(){return!p||0<z.length}var f,p=!1,s=!1,l=!1,n=b;n&&"object"==typeof n?(d=n,n=d.read):(d=d||{},n||(n=d.read));if("function"!=typeof n)throw Error("Pass a function that returns the value of the ko.computed");var r=d.write,v=d.disposeWhenNodeIsRemoved||d.I||null,t=d.disposeWhen||d.ua,E=t,D=e,z=[],x=null;c||(c=d.owner);k.t=function(){p||h();return f};k.Kb=function(){return z.length};k.Nb="function"===typeof d.write;k.B=function(){D()};k.aa=m;a.ca.call(k);
a.a.extend(k,a.h.fn);a.s(k,"peek",k.t);a.s(k,"dispose",k.B);a.s(k,"isActive",k.aa);a.s(k,"getDependenciesCount",k.Kb);v&&(l=!0,v.nodeType&&(E=function(){return!a.a.va(v)||t&&t()}));!0!==d.deferEvaluation&&h();v&&m()&&(D=function(){a.a.C.mb(v,D);e()},a.a.C.ea(v,D));return k};a.Pb=function(b){return a.ya(b,a.h)};F=a.q.Yb;a.h[F]=a.q;a.h.fn={equalityComparer:G};a.h.fn[F]=a.h;a.b("dependentObservable",a.h);a.b("computed",a.h);a.b("isComputed",a.Pb);(function(){function b(a,g,h){h=h||new d;a=g(a);if("object"!=
typeof a||null===a||a===q||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var k=a instanceof Array?[]:{};h.save(a,k);c(a,function(c){var d=g(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":k[c]=d;break;case "object":case "undefined":var p=h.get(d);k[c]=p!==q?p:b(d,g,h)}});return k}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=
[];this.Qa=[]}a.tb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.M(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.tb(b);return a.a.Na(b,c,d)};d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.Qa[d]=c:(this.keys.push(b),this.Qa.push(c))},get:function(b){b=a.a.l(this.keys,b);return 0<=b?this.Qa[b]:q}}})();a.b("toJS",a.tb);a.b("toJSON",a.toJSON);(function(){a.k={o:function(b){switch(a.a.v(b)){case "option":return!0===
b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Ea):7>=a.a.ja?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex]):q;default:return b.value}},na:function(b,c){switch(a.a.v(b)){case "option":switch(typeof c){case "string":a.a.f.set(b,a.d.options.Ea,q);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.f.set(b,a.d.options.Ea,c),b.__ko__hasDomDataOptionValue__=
!0,b.value="number"===typeof c?c:""}break;case "select":""===c&&(c=q);if(null===c||c===q)b.selectedIndex=-1;for(var d=b.options.length-1;0<=d;d--)if(a.k.o(b.options[d])==c){b.selectedIndex=d;break}1<b.size||-1!==b.selectedIndex||(b.selectedIndex=0);break;default:if(null===c||c===q)c="";b.value=c}}}})();a.b("selectExtensions",a.k);a.b("selectExtensions.readValue",a.k.o);a.b("selectExtensions.writeValue",a.k.na);a.g=function(){function b(b){b=a.a.la(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=
[],d=b.match(e),k,l,n=0;if(d){d.push(",");for(var r=0,v;v=d[r];++r){var t=v.charCodeAt(0);if(44===t){if(0>=n){k&&c.push(l?{key:k,value:l.join("")}:{unknown:k});k=l=n=0;continue}}else if(58===t){if(!l)continue}else if(47===t&&r&&1<v.length)(t=d[r-1].match(g))&&!h[t[0]]&&(b=b.substr(b.indexOf(v)+1),d=b.match(e),d.push(","),r=-1,v="/");else if(40===t||123===t||91===t)++n;else if(41===t||125===t||93===t)--n;else if(!k&&!l){k=34===t||39===t?v.slice(1,-1):v;continue}l?l.push(v):l=[v]}}return c}var c=["true",
"false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),g=/[\])"'A-Za-z0-9_$]+$/,h={"in":1,"return":1,"typeof":1},k={};return{Y:[],U:k,Ga:b,ka:function(e,f){function g(b,f){var e,r=a.getBindingHandler(b);if(r&&r.preprocess?f=r.preprocess(f,b,g):1){if(r=k[b])e=f,0<=a.a.l(c,e)?e=!1:(r=e.match(d),e=null===r?!1:r[1]?"Object("+r[1]+")"+
r[2]:e),r=e;r&&l.push("'"+b+"':function(_z){"+e+"=_z}");n&&(f="function(){return "+f+" }");h.push("'"+b+"':"+f)}}f=f||{};var h=[],l=[],n=f.valueAccessors,r="string"===typeof e?b(e):e;a.a.n(r,function(a){g(a.key||a.unknown,a.value)});l.length&&g("_ko_property_writers","{"+l.join(",")+"}");return h.join(",")},Sb:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},oa:function(b,c,d,e,k){if(b&&a.M(b))!a.gb(b)||k&&b.t()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();
a.b("expressionRewriting",a.g);a.b("expressionRewriting.bindingRewriteValidators",a.g.Y);a.b("expressionRewriting.parseObjectLiteral",a.g.Ga);a.b("expressionRewriting.preProcessBindings",a.g.ka);a.b("expressionRewriting._twoWayBindings",a.g.U);a.b("jsonExpressionRewriting",a.g);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.g.ka);(function(){function b(a){return 8==a.nodeType&&h.test(g?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&k.test(g?a.text:a.nodeValue)}function d(a,
d){for(var e=a,k=1,n=[];e=e.nextSibling;){if(c(e)&&(k--,0===k))return n;n.push(e);b(e)&&k++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var g=w&&"\x3c!--test--\x3e"===w.createComment("test").text,h=g?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=g?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0};a.e={P:{},childNodes:function(a){return b(a)?
d(a):a.childNodes},Z:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.wa(c)},S:function(c,d){if(b(c)){a.e.Z(c);for(var e=c.nextSibling,k=0,n=d.length;k<n;k++)e.parentNode.insertBefore(d[k],e)}else a.a.S(c,d)},kb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},eb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):
c.appendChild(d):a.e.kb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Mb:b,bc:function(a){return(a=(g?a.text:a.nodeValue).match(h))?a[1]:null},ib:function(d){if(m[a.a.v(d)]){var k=d.firstChild;if(k){do if(1===k.nodeType){var g;g=k.firstChild;var h=null;if(g){do if(h)h.push(g);else if(b(g)){var n=e(g,!0);n?g=n:h=[g]}else c(g)&&(h=[g]);while(g=
g.nextSibling)}if(g=h)for(h=k.nextSibling,n=0;n<g.length;n++)h?d.insertBefore(g[n],h):d.appendChild(g[n])}while(k=k.nextSibling)}}}}})();a.b("virtualElements",a.e);a.b("virtualElements.allowedBindings",a.e.P);a.b("virtualElements.emptyNode",a.e.Z);a.b("virtualElements.insertAfter",a.e.eb);a.b("virtualElements.prepend",a.e.kb);a.b("virtualElements.setDomNodeChildren",a.e.S);(function(){a.H=function(){this.zb={}};a.a.extend(a.H.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
b.getAttribute("data-bind");case 8:return a.e.Mb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.e.bc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var g=this.zb,
h=b+(e&&e.valueAccessors||""),k;if(!(k=g[h])){var m,f="with($context){with($data||{}){return{"+a.g.ka(b,e)+"}}}";m=new Function("$context","$element",f);k=g[h]=m}return k(c,d)}catch(p){throw p.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+p.message,p;}}});a.H.instance=new a.H})();a.b("bindingProvider",a.H);(function(){function b(a){return function(){return a}}function c(a){return a()}function d(b){return a.a.Da(a.i.p(b),function(a,c){return function(){return b()[c]}})}function e(a,
b){return d(this.getBindings.bind(this,a,b))}function g(b,c,d){var f,e=a.e.firstChild(c),k=a.H.instance,g=k.preprocessNode;if(g){for(;f=e;)e=a.e.nextSibling(f),g.call(k,f);e=a.e.firstChild(c)}for(;f=e;)e=a.e.nextSibling(f),h(b,f,d)}function h(b,c,d){var f=!0,e=1===c.nodeType;e&&a.e.ib(c);if(e&&d||a.H.instance.nodeHasBindings(c))f=m(c,null,b,d).shouldBindDescendants;f&&!p[a.a.v(c)]&&g(b,c,!e)}function k(b){var c=[],d={},f=[];a.a.K(b,function D(e){if(!d[e]){var k=a.getBindingHandler(e);k&&(k.after&&
(f.push(e),a.a.n(k.after,function(c){if(b[c]){if(-1!==a.a.l(f,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));D(c)}}),f.pop()),c.push({key:e,bb:k}));d[e]=!0}});return c}function m(b,d,f,g){var h=a.a.f.get(b,s);if(!d){if(h)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,s,!0)}!h&&g&&a.rb(b,f);var m;if(d&&"function"!==typeof d)m=d;else{var p=a.H.instance,l=p.getBindingAccessors||e;if(d||f.A){var A=
a.h(function(){(m=d?d(f,b):l.call(p,b,f))&&f.A&&f.A();return m},null,{I:b});m&&A.aa()||(A=null)}else m=a.i.p(l,p,[b,f])}var u;if(m){var w=A?function(a){return function(){return c(A()[a])}}:function(a){return m[a]},y=function(){return a.a.Da(A?A():m,c)};y.get=function(a){return m[a]&&c(w(a))};y.has=function(a){return a in m};g=k(m);a.a.n(g,function(c){var d=c.bb.init,e=c.bb.update,k=c.key;if(8===b.nodeType&&!a.e.P[k])throw Error("The binding '"+k+"' cannot be used with virtual elements");try{"function"==
typeof d&&a.i.p(function(){var a=d(b,w(k),y,f.$data,f);if(a&&a.controlsDescendantBindings){if(u!==q)throw Error("Multiple bindings ("+u+" and "+k+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=k}}),"function"==typeof e&&a.h(function(){e(b,w(k),y,f.$data,f)},null,{I:b})}catch(g){throw g.message='Unable to process binding "'+k+": "+m[k]+'"\nMessage: '+g.message,g;}})}return{shouldBindDescendants:u===q}}function f(b){return b&&
b instanceof a.G?b:new a.G(b)}a.d={};var p={script:!0};a.getBindingHandler=function(b){return a.d[b]};a.G=function(b,c,d,f){var e=this,k="function"==typeof b,g,h=a.h(function(){var g=k?b():b;c?(c.A&&c.A(),a.a.extend(e,c),h&&(e.A=h)):(e.$parents=[],e.$root=g,e.ko=a);e.$rawData=b;e.$data=g;d&&(e[d]=g);f&&f(e,c,g);return e.$data},null,{ua:function(){return g&&!a.a.Ra(g)},I:!0});h.aa()&&(e.A=h,h.equalityComparer=null,g=[],h.wb=function(b){g.push(b);a.a.C.ea(b,function(b){a.a.ia(g,b);g.length||(h.B(),
e.A=h=q)})})};a.G.prototype.createChildContext=function(b,c,d){return new a.G(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.G.prototype.extend=function(b){return new a.G(this.$rawData,this,null,function(c){a.a.extend(c,"function"==typeof b?b():b)})};var s=a.a.f.D(),l=a.a.f.D();a.rb=function(b,c){if(2==arguments.length)a.a.f.set(b,l,c),c.A&&c.A.wb(b);else return a.a.f.get(b,l)};a.pa=function(b,c,d){1===b.nodeType&&
a.e.ib(b);return m(b,c,f(d),!0)};a.xb=function(c,e,k){k=f(k);return a.pa(c,"function"===typeof e?d(e.bind(null,k,c)):a.a.Da(e,b),k)};a.Ta=function(a,b){1!==b.nodeType&&8!==b.nodeType||g(f(a),b,!0)};a.Sa=function(a,b){if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||y.document.body;h(f(a),b,!0)};a.ta=function(b){switch(b.nodeType){case 1:case 8:var c=a.rb(b);if(c)return c;if(b.parentNode)return a.ta(b.parentNode)}return q};
a.Cb=function(b){return(b=a.ta(b))?b.$data:q};a.b("bindingHandlers",a.d);a.b("applyBindings",a.Sa);a.b("applyBindingsToDescendants",a.Ta);a.b("applyBindingAccessorsToNode",a.pa);a.b("applyBindingsToNode",a.xb);a.b("contextFor",a.ta);a.b("dataFor",a.Cb)})();var M={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.K(d,function(c,d){d=a.a.c(d);var h=!1===d||null===d||d===q;h&&b.removeAttribute(c);8>=a.a.ja&&c in M?(c=M[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,
d.toString());"name"===c&&a.a.pb(b,h?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):b.value}function g(){var k=b.checked,g=s?e():k;if(l&&(!m||k)){var h=a.i.p(c);f?p!==g?(k&&(a.a.V(h,g,!0),a.a.V(h,p,!1)),p=g):a.a.V(h,g,k):a.g.oa(h,d,"checked",g,!0)}}function h(){var d=a.a.c(c());b.checked=f?0<=a.a.l(d,e()):k?d:e()===d}var k="checkbox"==b.type,m="radio"==b.type;if(k||m){var f=k&&a.a.c(c())instanceof
Array,p=f?e():q,s=m||f,l=!1;m&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.h(g,null,{I:b});a.a.r(b,"click",g);a.h(h,null,{I:b});l=!0}}};a.g.U.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());"object"==typeof d?a.a.K(d,function(c,d){d=a.a.c(d);a.a.ma(b,c,d)}):(d=String(d||""),a.a.ma(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ma(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):
d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,g){var h=c()||{};a.a.K(h,function(k){"string"==typeof k&&a.a.r(b,k,function(b){var f,h=c()[k];if(h){try{var s=a.a.Q(arguments);e=g.$data;s.unshift(e);f=h.apply(e,s)}finally{!0!==f&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(k+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={hb:function(b){return function(){var c=
b(),d=a.a.Ha(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.J.Aa};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.J.Aa}}},init:function(b,c){return a.d.template.init(b,a.d.foreach.hb(c))},update:function(b,c,d,e,g){return a.d.template.update(b,a.d.foreach.hb(c),d,e,g)}};a.g.Y.foreach=!1;a.e.P.foreach=!0;a.d.hasfocus=
{init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var g=b.ownerDocument;if("activeElement"in g){var f;try{f=g.activeElement}catch(h){f=g.body}e=f===b}g=c();a.g.oa(g,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var g=e.bind(null,!0),h=e.bind(null,!1);a.a.r(b,"focus",g);a.a.r(b,"focusin",g);a.a.r(b,"blur",h);a.a.r(b,"focusout",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.i.p(a.a.da,
null,[b,d?"focusin":"focusout"]))}};a.g.U.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.g.U.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ka(b,c())}};var L=a.a.f.D();H("if");H("ifnot",!1,!0);H("with",!0,!1,function(a,c){return a.createChildContext(c)});a.d.options={init:function(b){if("select"!==a.a.v(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,
c,d){function e(){return a.a.ga(b.options,function(a){return a.selected})}function g(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function h(c,d){if(p.length){var f=0<=a.a.l(p,a.k.o(d[0]));a.a.qb(d[0],f);l&&!f&&a.i.p(a.a.da,null,[b,"change"])}}var k=0!=b.length&&b.multiple?b.scrollTop:null;c=a.a.c(c());var m=d.get("optionsIncludeDestroyed"),f={},p;p=b.multiple?a.a.ha(e(),a.k.o):0<=b.selectedIndex?[a.k.o(b.options[b.selectedIndex])]:[];if(c){"undefined"==typeof c.length&&(c=[c]);
var s=a.a.ga(c,function(b){return m||b===q||null===b||!a.a.c(b._destroy)});d.has("optionsCaption")&&(c=a.a.c(d.get("optionsCaption")),null!==c&&c!==q&&s.unshift(f))}else c=[];var l=!1;c=h;d.has("optionsAfterRender")&&(c=function(b,c){h(0,c);a.i.p(d.get("optionsAfterRender"),null,[c[0],b!==f?b:q])});a.a.Ja(b,s,function(b,c,e){e.length&&(p=e[0].selected?[a.k.o(e[0])]:[],l=!0);c=w.createElement("option");b===f?(a.a.Ma(c,d.get("optionsCaption")),a.k.na(c,q)):(e=g(b,d.get("optionsValue"),b),a.k.na(c,a.a.c(e)),
b=g(b,d.get("optionsText"),e),a.a.Ma(c,b));return[c]},null,c);(b.multiple?p.length&&e().length<p.length:p.length&&0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex])!==p[0]:p.length||0<=b.selectedIndex)&&a.i.p(a.a.da,null,[b,"change"]);a.a.Hb(b);k&&20<Math.abs(k-b.scrollTop)&&(b.scrollTop=k)}};a.d.options.Ea=a.a.f.D();a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.r(b,"change",function(){var e=c(),g=[];a.a.n(b.getElementsByTagName("option"),function(b){b.selected&&g.push(a.k.o(b))});
a.g.oa(e,d,"selectedOptions",g)})},update:function(b,c){if("select"!=a.a.v(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c());d&&"number"==typeof d.length&&a.a.n(b.getElementsByTagName("option"),function(b){var c=0<=a.a.l(d,a.k.o(b));a.a.qb(b,c)})}};a.g.U.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.K(d,function(c,d){d=a.a.c(d);b.style[c]=d||""})}};a.d.submit={init:function(b,c,d,e,g){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");
a.a.r(b,"submit",function(a){var d,e=c();try{d=e.call(g.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ma(b,c())}};a.e.P.text=!0;a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Bb;a.a.pb(b,d)}}};a.d.uniqueName.Bb=0;a.d.value={after:["options","foreach"],init:function(b,c,d){function e(){k=!1;var e=c(),f=a.k.o(b);a.g.oa(e,d,"value",f)}var g=
["change"],h=d.get("valueUpdate"),k=!1;h&&("string"==typeof h&&(h=[h]),a.a.X(g,h),g=a.a.Va(g));!a.a.ja||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.l(g,"propertychange")||(a.a.r(b,"propertychange",function(){k=!0}),a.a.r(b,"blur",function(){k&&e()}));a.a.n(g,function(c){var d=e;a.a.ac(c,"after")&&(d=function(){setTimeout(e,0)},c=c.substring(5));a.a.r(b,c,d)})},update:function(b,c){var d="select"===a.a.v(b),e=a.a.c(c()),g=a.k.o(b);
e!==g&&(g=function(){a.k.na(b,e)},g(),d&&(e!==a.k.o(b)?a.i.p(a.a.da,null,[b,"change"]):setTimeout(g,0)))}};a.g.U.value=!0;a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,g,h){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,g,h)}}})("click");a.w=function(){};a.w.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");
};a.w.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.w.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.m.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.m.W(b);throw Error("Unknown template type: "+b);};a.w.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,
d)};a.w.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.w.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.w);a.Oa=function(){function b(b,c,d,k){b=a.g.Ga(b);for(var m=a.g.Y,f=0;f<b.length;f++){var p=b[f].key;if(m.hasOwnProperty(p)){var s=m[p];if("function"===typeof s){if(p=s(b[f].value))throw Error(p);}else if(!s)throw Error("This template engine does not support the '"+
p+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.g.ka(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return k.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Ib:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Oa.Ub(b,c)},
d)},Ub:function(a,g){return a.replace(c,function(a,c,d,f,e){return b(e,c,d,g)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",g)})},yb:function(b,c){return a.u.Ca(function(d,k){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.pa(m,b,k)})}}}();a.b("__tr_ambtns",a.Oa.yb);(function(){a.m={};a.m.j=function(a){this.j=a};a.m.j.prototype.text=function(){var b=a.a.v(this.j),b="script"===b?"text":"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.j[b];var c=arguments[0];
"innerHTML"===b?a.a.Ka(this.j,c):this.j[b]=c};var b=a.a.f.D()+"_";a.m.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,b+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.D();a.m.W=function(a){this.j=a};a.m.W.prototype=new a.m.j;a.m.W.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};b.Pa===q&&b.sa&&(b.Pa=b.sa.innerHTML);return b.Pa}a.a.f.set(this.j,c,{Pa:arguments[0]})};a.m.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,
c)||{}).sa;a.a.f.set(this.j,c,{sa:arguments[0]})};a.b("templateSources",a.m);a.b("templateSources.domElement",a.m.j);a.b("templateSources.anonymousTemplate",a.m.W)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var f=c[0],e=c[c.length-1],g=f.parentNode,h=a.H.instance,n=h.preprocessNode;if(n){b(f,e,function(a,b){var c=a.previousSibling,d=n.call(h,a);d&&(a===f&&(f=d[0]||b),a===e&&(e=d[d.length-1]||c))});c.length=
0;if(!f)return;f===e?c.push(f):(c.push(f,e),a.a.$(c,g))}b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.Sa(d,b)});b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.u.vb(b,[d])});a.a.$(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,s){s=s||{};var l=b&&d(b),l=l&&l.ownerDocument,n=s.templateEngine||g;a.Oa.Ib(f,n,l);f=n.renderTemplate(f,h,s,l);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");
l=!1;switch(e){case "replaceChildren":a.e.S(b,f);l=!0;break;case "replaceNode":a.a.nb(b,f);l=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}l&&(c(f,h),s.afterRender&&a.i.p(s.afterRender,null,[f,h.$data]));return f}var g;a.La=function(b){if(b!=q&&!(b instanceof a.w))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.Ia=function(b,c,f,h,s){f=f||{};if((f.templateEngine||g)==q)throw Error("Set a template engine before calling renderTemplate");
s=s||"replaceChildren";if(h){var l=d(h);return a.h(function(){var g=c&&c instanceof a.G?c:new a.G(a.a.c(c)),r="function"==typeof b?b(g.$data,g):b,g=e(h,s,r,g,f);"replaceNode"==s&&(h=g,l=d(h))},null,{ua:function(){return!l||!a.a.va(l)},I:l&&"replaceNode"==s?l.parentNode:l})}return a.u.Ca(function(d){a.Ia(b,c,f,d,"replaceNode")})};a.$b=function(b,d,f,g,h){function l(a,b){c(b,r);f.afterRender&&f.afterRender(b,a)}function n(a,c){r=h.createChildContext(a,f.as,function(a){a.$index=c});var d="function"==
typeof b?b(a,r):b;return e(null,"ignoreTargetNode",d,r,f)}var r;return a.h(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.ga(b,function(b){return f.includeDestroyed||b===q||null===b||!a.a.c(b._destroy)});a.i.p(a.a.Ja,null,[g,b,n,f,l])},null,{I:g})};var h=a.a.f.D();a.d.template={init:function(b,c){var d=a.a.c(c());"string"==typeof d||d.name?a.e.Z(b):(d=a.e.childNodes(b),d=a.a.Vb(d),(new a.m.W(b)).nodes(d));return{controlsDescendantBindings:!0}},update:function(b,c,d,e,g){c=
a.a.c(c());d={};e=!0;var l,n=null;"string"!=typeof c&&(d=c,c=a.a.c(d.name),"if"in d&&(e=a.a.c(d["if"])),e&&"ifnot"in d&&(e=!a.a.c(d.ifnot)),l=a.a.c(d.data));"foreach"in d?n=a.$b(c||b,e&&d.foreach||[],d,b,g):e?(g="data"in d?g.createChildContext(l,d.as):g,n=a.Ia(c||b,g,d,b)):a.e.Z(b);g=n;(l=a.a.f.get(b,h))&&"function"==typeof l.B&&l.B();a.a.f.set(b,h,g&&g.aa()?g:q)}};a.g.Y.template=function(b){b=a.g.Ga(b);return 1==b.length&&b[0].unknown||a.g.Sb(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};
a.e.P.template=!0})();a.b("setTemplateEngine",a.La);a.b("renderTemplate",a.Ia);a.a.ra=function(){function a(b,d,e,g,h){var k=Math.min,m=Math.max,f=[],p,q=b.length,l,n=d.length,r=n-q||1,v=q+n+1,t,u,w;for(p=0;p<=q;p++)for(u=t,f.push(t=[]),w=k(n,p+r),l=m(0,p-1);l<=w;l++)t[l]=l?p?b[p-1]===d[l-1]?u[l-1]:k(u[l]||v,t[l-1]||v)+1:l+1:p+1;k=[];m=[];r=[];p=q;for(l=n;p||l;)n=f[p][l]-1,l&&n===f[p][l-1]?m.push(k[k.length]={status:e,value:d[--l],index:l}):p&&n===f[p-1][l]?r.push(k[k.length]={status:g,value:b[--p],
index:p}):(--l,--p,h.sparse||k.push({status:"retained",value:d[l]}));if(m.length&&r.length){b=10*q;var z;for(d=e=0;(h.dontLimitMoves||d<b)&&(z=m[e]);e++){for(g=0;f=r[g];g++)if(z.value===f.value){z.moved=f.index;f.moved=z.index;r.splice(g,1);d=g=0;break}d+=g}}return k.reverse()}return function(c,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};c=c||[];d=d||[];return c.length<=d.length?a(c,d,"added","deleted",e):a(d,c,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.ra);(function(){function b(b,
c,g,h,k){var m=[],f=a.h(function(){var f=c(g,k,a.a.$(m,b))||[];0<m.length&&(a.a.nb(m,f),h&&a.i.p(h,null,[g,f,k]));m.splice(0,m.length);a.a.X(m,f)},null,{I:b,ua:function(){return!a.a.Ra(m)}});return{R:m,h:f.aa()?f:q}}var c=a.a.f.D();a.a.Ja=function(d,e,g,h,k){function m(b,c){x=s[c];t!==c&&(z[b]=x);x.za(t++);a.a.$(x.R,d);r.push(x);w.push(x)}function f(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.n(c[d].R,function(a){b(a,d,c[d].fa)})}e=e||[];h=h||{};var p=a.a.f.get(d,c)===q,s=a.a.f.get(d,c)||[],
l=a.a.ha(s,function(a){return a.fa}),n=a.a.ra(l,e,h.dontLimitMoves),r=[],v=0,t=0,u=[],w=[];e=[];for(var z=[],l=[],x,A=0,y,B;y=n[A];A++)switch(B=y.moved,y.status){case "deleted":B===q&&(x=s[v],x.h&&x.h.B(),u.push.apply(u,a.a.$(x.R,d)),h.beforeRemove&&(e[A]=x,w.push(x)));v++;break;case "retained":m(A,v++);break;case "added":B!==q?m(A,B):(x={fa:y.value,za:a.q(t++)},r.push(x),w.push(x),p||(l[A]=x))}f(h.beforeMove,z);a.a.n(u,h.beforeRemove?a.L:a.removeNode);for(var A=0,p=a.e.firstChild(d),C;x=w[A];A++){x.R||
a.a.extend(x,b(d,g,x.fa,k,x.za));for(v=0;n=x.R[v];p=n.nextSibling,C=n,v++)n!==p&&a.e.eb(d,n,C);!x.Ob&&k&&(k(x.fa,x.R,x.za),x.Ob=!0)}f(h.beforeRemove,e);f(h.afterMove,z);f(h.afterAdd,l);a.a.f.set(d,c,r)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Ja);a.J=function(){this.allowTemplateRewriting=!1};a.J.prototype=new a.w;a.J.prototype.renderTemplateSource=function(b){var c=(9>a.a.ja?0:b.nodes)?b.nodes():null;if(c)return a.a.Q(c.cloneNode(!0).childNodes);b=b.text();return a.a.Fa(b)};a.J.Aa=
new a.J;a.La(a.J.Aa);a.b("nativeTemplateEngine",a.J);(function(){a.Ba=function(){var a=this.Rb=function(){if("undefined"==typeof u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){g=g||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+
"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=u.extend({koBindingContext:e},g.templateOptions);e=u.tmpl(h,b,e);e.appendTo(w.createElement("div"));u.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(u.tmpl.tag.ko_code={open:"__.push($1 || '');"},u.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.Ba.prototype=
new a.w;var b=new a.Ba;0<b.Rb&&a.La(b);a.b("jqueryTmplTemplateEngine",a.Ba)})()})})();})();
(function(){return function(factory){if(typeof exports=="object"){module.exports=module.exports=factory.call(this,require)}else if(typeof define=="function"&&define.amd){define(["require","underscore","backbone","knockout"],factory)}else{this.kb=factory.call(this,typeof require!=="undefined"?require:undefined)}}(function(require){var COMPARE_ASCENDING,COMPARE_DESCENDING,COMPARE_EQUAL,EMAIL_REGEXP,KB_TYPE_ARRAY,KB_TYPE_COLLECTION,KB_TYPE_MODEL,KB_TYPE_SIMPLE,KB_TYPE_UNKNOWN,NUMBER_REGEXP,ORM,ORMAdapter_BackboneAssociations,ORMAdapter_BackboneRelational,ORMAdapter_Supermodel,URL_REGEXP,arraySlice,callOrGet,copyProps,kb,ko,onReady,_,_argumentsAddKey,_arraySplice,_collapseOptions,_i,_key,_keyArrayToObject,_ko_applyBindings,_legacyWarning,_len,_mergeArray,_mergeObject,_peekObservable,_publishMethods,_ref,_throwMissing,_throwUnexpected,_unwrapModels,_unwrapObservable,_wrappedKey,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}},__indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i}return-1};kb=function(){function kb(){}kb.VERSION="0.18.4";kb.TYPE_UNKNOWN=0;kb.TYPE_SIMPLE=1;kb.TYPE_ARRAY=2;kb.TYPE_MODEL=3;kb.TYPE_COLLECTION=4;kb.wasReleased=function(obj){return!obj||obj.__kb_released};kb.isReleaseable=function(obj,depth){var key,value;if(depth==null){depth=0}if(!obj||obj!==Object(obj)||obj.__kb_released){return false}else if(ko.isObservable(obj)||obj instanceof kb.ViewModel){return true}else if(typeof obj==="function"||obj instanceof kb.Model||obj instanceof kb.Collection){return false}else if(typeof obj.dispose==="function"||typeof obj.destroy==="function"||typeof obj.release==="function"){return true}else if(depth<1){for(key in obj){value=obj[key];if(key!=="__kb"&&kb.isReleaseable(value,depth+1)){return true}}}return false};kb.release=function(obj){var array,index,value;if(!kb.isReleaseable(obj)){return}if(_.isArray(obj)){for(index in obj){value=obj[index];if(kb.isReleaseable(value)){obj[index]=null;kb.release(value)}}return}obj.__kb_released=true;if(ko.isObservable(obj)&&_.isArray(array=obj())){if(obj.__kb_is_co||obj.__kb_is_o&&obj.valueType()===KB_TYPE_COLLECTION){if(obj.destroy){obj.destroy()}else if(obj.dispose){obj.dispose()}}else if(array.length){for(index in array){value=array[index];if(kb.isReleaseable(value)){array[index]=null;kb.release(value)}}}}else if(typeof obj.release==="function"){obj.release()}else if(typeof obj.destroy==="function"){obj.destroy()}else if(typeof obj.dispose==="function"){obj.dispose()}else if(!ko.isObservable(obj)){this.releaseKeys(obj)}};kb.releaseKeys=function(obj){var key,value;for(key in obj){value=obj[key];if(key!=="__kb"&&kb.isReleaseable(value)){obj[key]=null;kb.release(value)}}};kb.releaseOnNodeRemove=function(view_model,node){view_model||_throwUnexpected(this,"missing view model");node||_throwUnexpected(this,"missing node");return ko.utils.domNodeDisposal.addDisposeCallback(node,function(){return kb.release(view_model)})};kb.renderTemplate=function(template,view_model,options){var el,observable;if(options==null){options={}}if(typeof document==="undefined"||document===null){return console.log("renderTemplate: document is undefined")}el=document.createElement("div");observable=ko.renderTemplate(template,view_model,options,el,"replaceChildren");if(el.children.length===1){el=el.children[0]}kb.releaseOnNodeRemove(view_model,el);observable.dispose();if(view_model.afterRender&&!options.afterRender){view_model.afterRender(el)}return el};kb.applyBindings=function(view_model,node){ko.applyBindings(view_model,node);return kb.releaseOnNodeRemove(view_model,node)};kb.getValue=function(model,key,args){if(!model){return}if(_.isFunction(model[key])&&kb.orm.useFunction(model,key)){return model[key]()}if(!args){return model.get(key)}return model.get.apply(model,_.map([key].concat(args),function(value){return _peekObservable(value)}))};kb.setValue=function(model,key,value){var attributes;if(!model){return}if(_.isFunction(model[key])&&kb.orm.useFunction(model,key)){return model[key](value)}(attributes={})[key]=value;return model.set(attributes)};return kb}();KB_TYPE_UNKNOWN=kb.TYPE_UNKNOWN;KB_TYPE_SIMPLE=kb.TYPE_SIMPLE;KB_TYPE_ARRAY=kb.TYPE_ARRAY;KB_TYPE_MODEL=kb.TYPE_MODEL;KB_TYPE_COLLECTION=kb.TYPE_COLLECTION;kb.ko=ko=this.ko||require("knockout");if(this.Parse){_=this.Parse._}else if(!(_=this._)){_ref=["lodash","underscore"];for(_i=0,_len=_ref.length;_i<_len;_i++){_key=_ref[_i];try{_=require(_key)}catch(_error){}finally{if(_){break}}}}kb._=_;if(this.Parse){kb.Parse=this.Parse;kb.Collection=this.Parse.Collection;kb.Model=this.Parse.Object;kb.Events=this.Parse.Events}else{kb.Backbone=this.Backbone||require("backbone");kb.Collection=kb.Backbone.Collection;kb.Model=kb.Backbone.Model;kb.Events=kb.Backbone.Events}ORM=function(){function ORM(){this.adapters=[]}ORM.prototype.initialize=function(){this.adapters=_.select(this.adapters,function(adapter){return adapter.isAvailable()});return this.initialized=true};ORM.prototype.addAdapter=function(adapter){this.adapters.push(adapter);return this.initialized=false};ORM.prototype.keys=function(model){return this._call("keys",arguments)};ORM.prototype.bind=function(model){return this._call("bind",arguments)};ORM.prototype.useFunction=function(model){return this._call("useFunction",arguments)};ORM.prototype._call=function(name,args){var adpater,result,_j,_len1,_ref1;if(!this.adapters.length){return}if(!this.initialized){this.initialize()}_ref1=this.adapters;for(_j=0,_len1=_ref1.length;_j<_len1;_j++){adpater=_ref1[_j];if(adpater[name]&&(result=adpater[name].apply(adpater,args))){return result}}};return ORM}();kb.orm=new ORM;ORMAdapter_BackboneRelational=function(){function ORMAdapter_BackboneRelational(){}ORMAdapter_BackboneRelational.prototype.isAvailable=function(){var _ref1,_ref2;try{((_ref1=kb.Backbone)!=null?_ref1.RelationalModel:void 0)||(typeof require==="function"?require("backbone-relational"):void 0)}catch(_error){}return!!((_ref2=kb.Backbone)!=null?_ref2.RelationalModel:void 0)};ORMAdapter_BackboneRelational.prototype.relationType=function(model,key){var relation;if(!(model instanceof kb.Backbone.RelationalModel)){return null}if(!(relation=_.find(model.getRelations(),function(test){return test.key===key}))){return null}if(relation.collectionType||_.isArray(relation.keyContents)){return KB_TYPE_COLLECTION}else{return KB_TYPE_MODEL}};ORMAdapter_BackboneRelational.prototype.bind=function(model,key,update,path){var event,events,rel_fn,type,_j,_len1;if(!(type=this.relationType(model,key))){return null}rel_fn=function(model){!kb.statistics||kb.statistics.addModelEvent({name:"update (relational)",model:model,key:key,path:path});return update()};events=Backbone.Relation.prototype.sanitizeOptions?["update","add","remove"]:["change","add","remove"];if(type===KB_TYPE_COLLECTION){for(_j=0,_len1=events.length;_j<_len1;_j++){event=events[_j];model.bind(""+event+":"+key,rel_fn)}}else{model.bind(""+events[0]+":"+key,rel_fn)}return function(){var _k,_len2;if(type===KB_TYPE_COLLECTION){for(_k=0,_len2=events.length;_k<_len2;_k++){event=events[_k];model.unbind(""+event+":"+key,rel_fn)}}else{model.unbind(""+events[0]+":"+key,rel_fn)}}};return ORMAdapter_BackboneRelational}();kb.orm.addAdapter(new ORMAdapter_BackboneRelational);ORMAdapter_BackboneAssociations=function(){function ORMAdapter_BackboneAssociations(){}ORMAdapter_BackboneAssociations.prototype.isAvailable=function(){var _ref1,_ref2;try{((_ref1=kb.Backbone)!=null?_ref1.AssociatedModel:void 0)||(typeof require==="function"?require("backbone-associations"):void 0)}catch(_error){}return!!((_ref2=kb.Backbone)!=null?_ref2.AssociatedModel:void 0)};ORMAdapter_BackboneAssociations.prototype.keys=function(model){if(!(model instanceof kb.Backbone.AssociatedModel)){return null}return _.map(model.relations,function(test){return test.key})};ORMAdapter_BackboneAssociations.prototype.relationType=function(model,key){var relation;if(!(model instanceof kb.Backbone.AssociatedModel)){return null}if(!(relation=_.find(model.relations,function(test){return test.key===key}))){return null}if(relation.type==="Many"){return KB_TYPE_COLLECTION}else{return KB_TYPE_MODEL}};return ORMAdapter_BackboneAssociations}();kb.orm.addAdapter(new ORMAdapter_BackboneAssociations);ORMAdapter_Supermodel=function(){function ORMAdapter_Supermodel(){}ORMAdapter_Supermodel.prototype.isAvailable=function(){try{(typeof window!=="undefined"&&window!==null?window.Supermodel:void 0)||(typeof require==="function"?require("supermodel"):void 0)}catch(_error){}return!!(typeof window!=="undefined"&&window!==null?window.Supermodel:void 0)};ORMAdapter_Supermodel.prototype.keys=function(model){if(!(model instanceof Supermodel.Model)){return null}return _.keys(model.constructor.associations())};ORMAdapter_Supermodel.prototype.relationType=function(model,key){var relation;if(!(model instanceof Supermodel.Model)){return null}if(!(relation=model.constructor.associations()[key])){return null}if(relation.add){return KB_TYPE_COLLECTION}else{return KB_TYPE_MODEL}};ORMAdapter_Supermodel.prototype.bind=function(model,key,update,path){var rel_fn,type;if(!(type=this.relationType(model,key))){return null}rel_fn=function(model,other){var previous,relation;!kb.statistics||kb.statistics.addModelEvent({name:"update (supermodel)",model:model,key:key,path:path});relation=model.constructor.associations()[key];previous=model[relation.store];model[relation.store]=other;update(other);return model[relation.store]=previous};if(type===KB_TYPE_MODEL){model.bind("associate:"+key,rel_fn);return function(){return model.unbind("associate:"+key,rel_fn)}}};ORMAdapter_Supermodel.prototype.useFunction=function(model,key){return!!this.relationType(model,key)};return ORMAdapter_Supermodel}();kb.orm.addAdapter(new ORMAdapter_Supermodel);_throwMissing=function(instance,message){throw""+(_.isString(instance)?instance:instance.constructor.name)+": "+message+" is missing"};_throwUnexpected=function(instance,message){throw""+(_.isString(instance)?instance:instance.constructor.name)+": "+message+" is unexpected"};_legacyWarning=function(identifier,last_version,message){var _base;this._legacy_warnings||(this._legacy_warnings={});(_base=this._legacy_warnings)[identifier]||(_base[identifier]=0);this._legacy_warnings[identifier]++;return console.warn("warning: '"+identifier+"' has been deprecated (will be removed in Knockback after "+last_version+"). "+message+".")};_arraySplice=Array.prototype.splice;_unwrapObservable=ko.utils.unwrapObservable;_peekObservable=function(obs){if(!ko.isObservable(obs)){return obs}if(obs.peek){return obs.peek()}return kb.ignore(function(){return obs()})};_publishMethods=kb._publishMethods=function(observable,instance,methods){var fn,_j,_len1;for(_j=0,_len1=methods.length;_j<_len1;_j++){fn=methods[_j];observable[fn]=kb._.bind(instance[fn],instance)}};copyProps=function(dest,source){var key,value;for(key in source){value=source[key];dest[key]=value}return dest};var ctor=function(){};var inherits=function(parent,protoProps,staticProps){var child;if(protoProps&&protoProps.hasOwnProperty("constructor")){child=protoProps.constructor}else{child=function(){parent.apply(this,arguments)}}copyProps(child,parent);ctor.prototype=parent.prototype;child.prototype=new ctor;if(protoProps)copyProps(child.prototype,protoProps);if(staticProps)copyProps(child,staticProps);child.prototype.constructor=child;child.__super__=parent.prototype;return child};var extend=function(protoProps,classProps){var child=inherits(this,protoProps,classProps);child.extend=this.extend;return child};kb.extend=extend;_wrappedKey=function(obj,key,value){if(arguments.length===2){if(obj&&obj.__kb&&obj.__kb.hasOwnProperty(key)){return obj.__kb[key]}else{return void 0}}obj||_throwUnexpected(this,"no obj for wrapping "+key);obj.__kb||(obj.__kb={});obj.__kb[key]=value;return value};_argumentsAddKey=function(args,key){_arraySplice.call(args,1,0,key);return args};_unwrapModels=function(obj){var key,result,value;if(!obj){return obj}if(obj.__kb){if("object"in obj.__kb){return obj.__kb.object}else{return obj}}else if(_.isArray(obj)){return _.map(obj,function(test){return _unwrapModels(test)})}else if(_.isObject(obj)&&obj.constructor==={}.constructor){result={};for(key in obj){value=obj[key];result[key]=_unwrapModels(value)}return result}return obj};_mergeArray=function(result,key,value){result[key]||(result[key]=[]);if(!_.isArray(value)){value=[value]}result[key]=result[key].length?_.union(result[key],value):value;return result};_mergeObject=function(result,key,value){result[key]||(result[key]={});return _.extend(result[key],value)};_keyArrayToObject=function(value){var item,result,_j,_len1;result={};for(_j=0,_len1=value.length;_j<_len1;_j++){item=value[_j];result[item]={key:item}}return result};_collapseOptions=function(options){var key,result,value,_ref1;result={};options={options:options};while(options.options){_ref1=options.options;for(key in _ref1){value=_ref1[key];switch(key){case"internals":case"requires":case"excludes":case"statics":_mergeArray(result,key,value);break;case"keys":if(_.isObject(value)&&!_.isArray(value)||_.isObject(result[key])&&!_.isArray(result[key])){if(!_.isObject(value)){value=[value]}if(_.isArray(value)){value=_keyArrayToObject(value)}if(_.isArray(result[key])){result[key]=_keyArrayToObject(result[key])}_mergeObject(result,key,value)}else{_mergeArray(result,key,value)}break;case"factories":if(_.isFunction(value)){result[key]=value}else{_mergeObject(result,key,value)}break;case"static_defaults":_mergeObject(result,key,value);break;case"options":break;default:result[key]=value}}options=options.options}return result};kb.utils=function(){function utils(){}utils.wrappedObservable=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"observable"))};utils.wrappedObject=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"object"))};utils.wrappedModel=function(obj,value){if(arguments.length===1){value=_wrappedKey(obj,"object");if(_.isUndefined(value)){return obj}else{return value}}else{return _wrappedKey(obj,"object",value)}};utils.wrappedStore=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"store"))};utils.wrappedStoreIsOwned=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"store_is_owned"))};utils.wrappedFactory=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"factory"))};utils.wrappedEventWatcher=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"event_watcher"))};utils.wrappedEventWatcherIsOwned=function(obj,value){return _wrappedKey.apply(this,_argumentsAddKey(arguments,"event_watcher_is_owned"))};utils.wrappedDestroy=function(obj){var __kb;if(!obj.__kb){return}if(obj.__kb.event_watcher){obj.__kb.event_watcher.releaseCallbacks(obj)}__kb=obj.__kb;obj.__kb=null;if(__kb.observable){__kb.observable.destroy=__kb.observable.release=null;this.wrappedDestroy(__kb.observable);__kb.observable=null}__kb.factory=null;if(__kb.event_watcher_is_owned){__kb.event_watcher.destroy()}__kb.event_watcher=null;if(__kb.store_is_owned){__kb.store.destroy()}return __kb.store=null};utils.valueType=function(observable){if(!observable){return KB_TYPE_UNKNOWN}if(observable.__kb_is_o){return observable.valueType()}if(observable.__kb_is_co||observable instanceof kb.Collection){return KB_TYPE_COLLECTION}if(observable instanceof kb.ViewModel||observable instanceof kb.Model){return KB_TYPE_MODEL}if(_.isArray(observable)){return KB_TYPE_ARRAY}return KB_TYPE_SIMPLE};utils.pathJoin=function(path1,path2){return(path1?path1[path1.length-1]!=="."?""+path1+".":path1:"")+path2};utils.optionsPathJoin=function(options,path){return _.defaults({path:this.pathJoin(options.path,path)},options)};utils.inferCreator=function(value,factory,path,owner,key){var creator;if(factory){creator=factory.creatorForPath(value,path)}if(creator){return creator}if(!value){return null}if(value instanceof kb.Model){return kb.ViewModel}if(value instanceof kb.Collection){return kb.CollectionObservable}return null};utils.createFromDefaultCreator=function(obj,options){if(obj instanceof kb.Model){return kb.viewModel(obj,options)}if(obj instanceof kb.Collection){return kb.collectionObservable(obj,options)}if(_.isArray(obj)){return ko.observableArray(obj)}return ko.observable(obj)};utils.hasModelSignature=function(obj){return obj&&(obj.attributes&&!obj.models)&&typeof obj.get==="function"&&typeof obj.trigger==="function"};utils.hasCollectionSignature=function(obj){return obj&&obj.models&&typeof obj.get==="function"&&typeof obj.trigger==="function"};utils.collapseOptions=_collapseOptions;return utils}();if(ko.dependencyDetection){kb.ignore=function(fn){var value;value=null;ko.dependencyDetection.begin(function(){});value=fn();ko.dependencyDetection.end();return value}}else{kb.ignore=function(fn){var value;value=null;ko.dependentObservable(function(){return value=fn()}).dispose();return value}}kb.Factory=function(){Factory.useOptionsOrCreate=function(options,obj,owner_path){var factory;if(options.factory&&(!options.factories||options.factories&&options.factory.hasPathMappings(options.factories,owner_path))){return kb.utils.wrappedFactory(obj,options.factory)}factory=kb.utils.wrappedFactory(obj,new kb.Factory(options.factory));if(options.factories){factory.addPathMappings(options.factories,owner_path)}return factory};function Factory(parent_factory){this.parent_factory=parent_factory;this.paths={}}Factory.prototype.hasPath=function(path){return this.paths.hasOwnProperty(path)||this.parent_factory&&this.parent_factory.hasPath(path)};Factory.prototype.addPathMapping=function(path,create_info){return this.paths[path]=create_info};Factory.prototype.addPathMappings=function(factories,owner_path){var create_info,path;for(path in factories){create_info=factories[path];this.paths[kb.utils.pathJoin(owner_path,path)]=create_info}};Factory.prototype.hasPathMappings=function(factories,owner_path){var all_exist,creator,existing_creator,path;all_exist=true;for(path in factories){creator=factories[path];all_exist&=(existing_creator=this.creatorForPath(null,kb.utils.pathJoin(owner_path,path)))&&creator===existing_creator}return all_exist};Factory.prototype.creatorForPath=function(obj,path){var creator;if(creator=this.paths[path]){if(creator.view_model){return creator.view_model}else{return creator}}if(this.parent_factory){if(creator=this.parent_factory.creatorForPath(obj,path)){return creator}}return null};return Factory}();kb.Store=function(){Store.useOptionsOrCreate=function(options,obj,observable){if(options.store){options.store.register(obj,observable,options);return kb.utils.wrappedStore(observable,options.store)}else{kb.utils.wrappedStoreIsOwned(observable,true);return kb.utils.wrappedStore(observable,new kb.Store)}};function Store(){this.observable_records=[];this.replaced_observables=[]}Store.prototype.destroy=function(){return this.clear()};Store.prototype.clear=function(){var record,_j,_len1,_ref1;_ref1=this.observable_records.splice(0,this.observable_records.length);for(_j=0,_len1=_ref1.length;_j<_len1;_j++){record=_ref1[_j];kb.release(record.observable)}kb.release(this.replaced_observables)};Store.prototype.compact=function(){var index,record,removals,_ref1,_ref2;removals=[];_ref1=this.observable_records;for(index in _ref1){record=_ref1[index];if((_ref2=record.observable)!=null?_ref2.__kb_released:void 0){removals.push(record)}}if(removals.length){this.observable_records=_.difference(this.observable_records,removals)}};Store.prototype.register=function(obj,observable,options){var creator;if(!observable){return}if(ko.isObservable(observable)||observable.__kb_is_co){return}kb.utils.wrappedObject(observable,obj);obj||(observable.__kb_null=true);creator=options.creator?options.creator:options.path&&options.factory?options.factory.creatorForPath(obj,options.path):null;if(!creator){creator=observable.constructor}this.observable_records.push({obj:obj,observable:observable,creator:creator});return observable};Store.prototype.findIndex=function(obj,creator){var index,record,removals,_ref1;removals=[];if(!obj||obj instanceof kb.Model){_ref1=this.observable_records;for(index in _ref1){record=_ref1[index];if(!record.observable){continue}if(record.observable.__kb_released){removals.push(record);continue}if(!obj&&!record.observable.__kb_null||obj&&(record.observable.__kb_null||record.obj!==obj)){continue}else if(record.creator===creator||record.creator.create&&record.creator.create===creator.create){if(removals.length){this.observable_records=_.difference(this.observable_records,removals);return _.indexOf(this.observable_records,record)}else{return index}}}}if(removals.length){this.observable_records=_.difference(this.observable_records,removals)}return-1};Store.prototype.find=function(obj,creator){var index;if((index=this.findIndex(obj,creator))<0){return null}else{return this.observable_records[index].observable}};Store.prototype.isRegistered=function(observable){var record,_j,_len1,_ref1;_ref1=this.observable_records;for(_j=0,_len1=_ref1.length;_j<_len1;_j++){record=_ref1[_j];if(record.observable===observable){return true}}return false};Store.prototype.findOrCreate=function(obj,options){var creator,observable;options.store=this;options.creator||(options.creator=kb.utils.inferCreator(obj,options.factory,options.path));if(!options.creator&&obj instanceof kb.Model){options.creator=kb.ViewModel}creator=options.creator;if(!creator){return kb.utils.createFromDefaultCreator(obj,options)}else if(creator.models_only){return obj}if(creator){observable=this.find(obj,creator)}if(observable){return observable}observable=kb.ignore(function(_this){return function(){if(creator.create){observable=creator.create(obj,options)}else{observable=new creator(obj,options)}return observable||ko.observable(null)}}(this));if(!ko.isObservable(observable)){this.isRegistered(observable)||this.register(obj,observable,options)}return observable};Store.prototype.findOrReplace=function(obj,creator,observable){var index,record;obj||_throwUnexpected(this,"obj missing");if((index=this.findIndex(obj,creator))<0){return this.register(obj,observable,{creator:creator})}else{record=this.observable_records[index];kb.utils.wrappedObject(record.observable)===obj||_throwUnexpected(this,"different object");if(record.observable!==observable){record.observable.constructor===observable.constructor||_throwUnexpected(this,"replacing different type");this.replaced_observables.push(record.observable);record.observable=observable}return observable}};return Store}();kb.EventWatcher=function(){EventWatcher.useOptionsOrCreate=function(options,emitter,obj,callback_options){if(options.event_watcher){if(!(options.event_watcher.emitter()===emitter||options.event_watcher.model_ref===emitter)){_throwUnexpected(this,"emitter not matching")}return kb.utils.wrappedEventWatcher(obj,options.event_watcher).registerCallbacks(obj,callback_options)}else{kb.utils.wrappedEventWatcherIsOwned(obj,true);return kb.utils.wrappedEventWatcher(obj,new kb.EventWatcher(emitter)).registerCallbacks(obj,callback_options)}};function EventWatcher(emitter,obj,callback_options){this._onModelUnloaded=__bind(this._onModelUnloaded,this);this._onModelLoaded=__bind(this._onModelLoaded,this);this.__kb||(this.__kb={});this.__kb.callbacks={};this.__kb._onModelLoaded=_.bind(this._onModelLoaded,this);this.__kb._onModelUnloaded=_.bind(this._onModelUnloaded,this);if(callback_options){this.registerCallbacks(obj,callback_options)}if(emitter){this.emitter(emitter)}else{this.ee=null}}EventWatcher.prototype.destroy=function(){this.emitter(null);this.__kb.callbacks=null;return kb.utils.wrappedDestroy(this)};EventWatcher.prototype.emitter=function(new_emitter){var callbacks,event_name,info,list,previous_emitter,_j,_len1,_ref1;if(arguments.length===0||this.ee===new_emitter){return this.ee}if(this.model_ref){this.model_ref.unbind("loaded",this.__kb._onModelLoaded);this.model_ref.unbind("unloaded",this.__kb._onModelUnloaded);this.model_ref.release();this.model_ref=null}if(kb.Backbone&&kb.Backbone.ModelRef&&new_emitter instanceof kb.Backbone.ModelRef){this.model_ref=new_emitter;this.model_ref.retain();this.model_ref.bind("loaded",this.__kb._onModelLoaded);this.model_ref.bind("unloaded",this.__kb._onModelUnloaded);new_emitter=this.model_ref.model()}else{delete this.model_ref}previous_emitter=this.ee;this.ee=new_emitter;_ref1=this.__kb.callbacks;for(event_name in _ref1){callbacks=_ref1[event_name];if(previous_emitter){previous_emitter.unbind(event_name,callbacks.fn)}if(new_emitter){this.ee.bind(event_name,callbacks.fn)}list=callbacks.list;for(_j=0,_len1=list.length;_j<_len1;_j++){info=list[_j];if(info.emitter){info.emitter(this.ee)}}}return new_emitter};EventWatcher.prototype.registerCallbacks=function(obj,callback_info){var callbacks,event_name,event_names,event_selector,info,list,_j,_len1;obj||_throwMissing(this,"obj");callback_info||_throwMissing(this,"info");event_selector=callback_info.event_selector?callback_info.event_selector:"change";event_names=event_selector.split(" ");for(_j=0,_len1=event_names.length;_j<_len1;_j++){event_name=event_names[_j];if(!event_name){continue}callbacks=this.__kb.callbacks[event_name];if(!callbacks){list=[];callbacks={list:list,fn:function(_this){return function(model){var info,_k,_len2;for(_k=0,_len2=list.length;_k<_len2;_k++){info=list[_k];if(info.update&&!info.rel_fn){if(model&&info.key&&(model.hasChanged&&!model.hasChanged(_unwrapObservable(info.key)))){continue}!kb.statistics||kb.statistics.addModelEvent({name:event_name,model:model,key:info.key,path:info.path});info.update()}}return null}}(this)};this.__kb.callbacks[event_name]=callbacks;if(this.ee){this.ee.bind(event_name,callbacks.fn)}}info=_.defaults({obj:obj},callback_info);callbacks.list.push(info)}if(this.ee){if(__indexOf.call(event_names,"change")>=0){info.unbind_fn=kb.orm.bind(this.ee,info.key,info.update,info.path)}info.emitter(this.ee)&&info.emitter}};EventWatcher.prototype.releaseCallbacks=function(obj){var callbacks,event_name,index,info,_ref1,_ref2;if(!this.__kb.callbacks||!this.ee){return}_ref1=this.__kb.callbacks;for(event_name in _ref1){callbacks=_ref1[event_name];_ref2=callbacks.list;for(index in _ref2){info=_ref2[index];if(info.obj!==obj){continue}callbacks.list.splice(index,1);if(info.unbind_fn){info.unbind_fn();info.unbind_fn=null}if(!kb.wasReleased(obj)&&info.emitter){info.emitter(null)}return}}};EventWatcher.prototype._onModelLoaded=function(model){var callbacks,event_name,info,_j,_len1,_ref1,_ref2;this.ee=model;_ref1=this.__kb.callbacks;for(event_name in _ref1){callbacks=_ref1[event_name];model.bind(event_name,callbacks.fn);_ref2=callbacks.list;for(_j=0,_len1=_ref2.length;_j<_len1;_j++){info=_ref2[_j];info.unbind_fn=kb.orm.bind(model,info.key,info.update,info.path);if(info.emitter){info.emitter(model)}}}};EventWatcher.prototype._onModelUnloaded=function(model){var callbacks,event_name,info,list,_j,_len1,_ref1;this.ee=null;_ref1=this.__kb.callbacks;for(event_name in _ref1){callbacks=_ref1[event_name];model.unbind(event_name,callbacks.fn);list=callbacks.list;for(_j=0,_len1=list.length;_j<_len1;_j++){info=list[_j];if(info.unbind_fn){info.unbind_fn();info.unbind_fn=null}if(info.emitter){info.emitter(null)}}}};return EventWatcher}();kb.emitterObservable=function(emitter,observable){return new kb.EventWatcher(emitter,observable)};kb.Observable=function(){function Observable(model,options,_vm){this._vm=_vm!=null?_vm:{};return kb.ignore(function(_this){return function(){var create_options,event_watcher,observable;options||_throwMissing(_this,"options");if(_.isString(options)||ko.isObservable(options)){create_options=_this.create_options={key:options}}else{create_options=_this.create_options=_collapseOptions(options)}_this.key=create_options.key;delete create_options.key;_this.key||_throwMissing(_this,"key");!create_options.args||(_this.args=create_options.args,delete create_options.args);!create_options.read||(_this.read=create_options.read,delete create_options.read);!create_options.write||(_this.write=create_options.write,delete create_options.write);event_watcher=create_options.event_watcher;delete create_options.event_watcher;_this._vo=ko.observable(null);_this._model=ko.observable();observable=kb.utils.wrappedObservable(_this,ko.dependentObservable({read:function(){var arg,args,_j,_len1,_model,_ref1;_model=_this._model();_ref1=args=[_this.key].concat(_this.args||[]);for(_j=0,_len1=_ref1.length;_j<_len1;_j++){arg=_ref1[_j];_unwrapObservable(arg)}if(_this.read){_this.update(_this.read.apply(_this._vm,args))}else if(!_.isUndefined(_model)){kb.ignore(function(){return _this.update(kb.getValue(_model,_peekObservable(_this.key),_this.args))})}return _unwrapObservable(_this._vo())},write:function(new_value){return kb.ignore(function(){var unwrapped_new_value,_model;unwrapped_new_value=_unwrapModels(new_value);_model=_peekObservable(_this._model);if(_this.write){_this.write.call(_this._vm,unwrapped_new_value);new_value=kb.getValue(_model,_peekObservable(_this.key),_this.args)}else if(_model){kb.setValue(_model,_peekObservable(_this.key),unwrapped_new_value)}return _this.update(new_value)})},owner:_this._vm}));observable.__kb_is_o=true;create_options.store=kb.utils.wrappedStore(observable,create_options.store);create_options.path=kb.utils.pathJoin(create_options.path,_this.key);if(create_options.factories&&(typeof create_options.factories==="function"||create_options.factories.create)){create_options.factory=kb.utils.wrappedFactory(observable,new kb.Factory(create_options.factory));create_options.factory.addPathMapping(create_options.path,create_options.factories)}else{create_options.factory=kb.Factory.useOptionsOrCreate(create_options,observable,create_options.path)}delete create_options.factories;_publishMethods(observable,_this,["value","valueType","destroy"]);observable.model=_this.model=ko.dependentObservable({read:function(){return _unwrapObservable(_this._model)},write:function(new_model){return kb.ignore(function(){var new_value;if(_this.__kb_released||_peekObservable(_this._model)===new_model){return}new_value=kb.getValue(new_model,_peekObservable(_this.key),_this.args);_this._model(new_model);if(!new_model){return _this.update(null)}else if(!_.isUndefined(new_value)){return _this.update(new_value)}})}});kb.EventWatcher.useOptionsOrCreate({event_watcher:event_watcher},model,_this,{emitter:_this.model,update:_.bind(_this.update,_this),key:_this.key,path:create_options.path});_this.__kb_value||_this.update();if(kb.LocalizedObservable&&create_options.localizer){observable=new create_options.localizer(observable);delete create_options.localizer}if(kb.DefaultObservable&&create_options.hasOwnProperty("default")){observable=kb.defaultObservable(observable,create_options["default"]);delete create_options["default"]}return observable}}(this))}Observable.prototype.destroy=function(){var observable;observable=kb.utils.wrappedObservable(this);this.__kb_released=true;kb.release(this.__kb_value);this.__kb_value=null;this.model.dispose();this.model=observable.model=null;return kb.utils.wrappedDestroy(this)};Observable.prototype.value=function(){return this.__kb_value};Observable.prototype.valueType=function(){var new_value;new_value=kb.getValue(_peekObservable(this._model),_peekObservable(this.key));this.value_type||this._updateValueObservable(new_value);return this.value_type};Observable.prototype.update=function(new_value){var new_type,value;if(this.__kb_released){return}if(!arguments.length){new_value=kb.getValue(_peekObservable(this._model),_peekObservable(this.key))}new_value!==void 0||(new_value=null);new_type=kb.utils.valueType(new_value);if(!this.__kb_value||(this.__kb_value.__kb_released||this.__kb_value.__kb_null&&new_value)){this.__kb_value=void 0;this.value_type=void 0}value=this.__kb_value;if(_.isUndefined(this.value_type)||this.value_type!==new_type&&new_type!==KB_TYPE_UNKNOWN){if(this.value_type===KB_TYPE_COLLECTION&&new_type===KB_TYPE_ARRAY){return value(new_value)
}else{return this._updateValueObservable(new_value)}}else if(this.value_type===KB_TYPE_MODEL){if(typeof value.model==="function"){if(value.model()!==new_value){return value.model(new_value)}}else if(kb.utils.wrappedObject(value)!==new_value){return this._updateValueObservable(new_value)}}else if(this.value_type===KB_TYPE_COLLECTION){if(value.collection()!==new_value){return value.collection(new_value)}}else{if(value()!==new_value){return value(new_value)}}};Observable.prototype._updateValueObservable=function(new_value){var create_options,creator,previous_value,value;create_options=this.create_options;create_options.creator=kb.utils.inferCreator(new_value,create_options.factory,create_options.path,_peekObservable(this._model),this.key);this.value_type=KB_TYPE_UNKNOWN;creator=create_options.creator;previous_value=this.__kb_value;this.__kb_value=void 0;if(previous_value){kb.release(previous_value)}if(creator){if(create_options.store){value=create_options.store.findOrCreate(new_value,create_options)}else{if(creator.models_only){value=new_value;this.value_type=KB_TYPE_SIMPLE}else if(creator.create){value=creator.create(new_value,create_options)}else{value=new creator(new_value,create_options)}}}else{if(_.isArray(new_value)){this.value_type=KB_TYPE_ARRAY;value=ko.observableArray(new_value)}else{this.value_type=KB_TYPE_SIMPLE;value=ko.observable(new_value)}}if(this.value_type===KB_TYPE_UNKNOWN){if(!ko.isObservable(value)){this.value_type=KB_TYPE_MODEL;if(typeof value.model!=="function"){kb.utils.wrappedObject(value,new_value)}}else if(value.__kb_is_co){this.value_type=KB_TYPE_COLLECTION}else{this.value_type=KB_TYPE_SIMPLE}}this.__kb_value=value;return this._vo(value)};return Observable}();kb.observable=function(model,options,view_model){return new kb.Observable(model,options,view_model)};kb.ViewModel=function(){ViewModel.extend=kb.extend;function ViewModel(model,options,view_model){return kb.ignore(function(_this){return function(){var attribute_keys,bb_model,event_watcher,keys,mapped_keys,mapping_info,rel_keys,vm_key,_mdl,_ref1;!model||model instanceof kb.Model||typeof model.get==="function"&&typeof model.bind==="function"||_throwUnexpected(_this,"not a model");options||(options={});view_model||(view_model={});if(_.isArray(options)){options={keys:options}}else{options=_collapseOptions(options)}_this.__kb||(_this.__kb={});_this.__kb.vm_keys={};_this.__kb.model_keys={};_this.__kb.view_model=_.isUndefined(view_model)?_this:view_model;!options.internals||(_this.__kb.internals=options.internals);!options.excludes||(_this.__kb.excludes=options.excludes);!options.statics||(_this.__kb.statics=options.statics);!options.static_defaults||(_this.__kb.static_defaults=options.static_defaults);kb.Store.useOptionsOrCreate(options,model,_this);_this.__kb.path=options.path;kb.Factory.useOptionsOrCreate(options,_this,options.path);_mdl=_wrappedKey(_this,"_mdl",ko.observable());_this.model=ko.dependentObservable({read:function(){_mdl();return kb.utils.wrappedObject(_this)},write:function(new_model){return kb.ignore(function(){var event_watcher,keys,missing,rel_keys;if(kb.utils.wrappedObject(_this)===new_model){return}if(_this.__kb_null){!new_model||_throwUnexpected(_this,"model set on shared null");return}kb.utils.wrappedObject(_this,new_model);event_watcher=kb.utils.wrappedEventWatcher(_this);if(!event_watcher){_mdl(new_model);return}event_watcher.emitter(new_model);if(!(_this.__kb.keys||!new_model||!new_model.attributes)){keys=_.keys(new_model.attributes);if(new_model&&(rel_keys=kb.orm.keys(new_model))){keys=_.union(keys,rel_keys)}missing=_.difference(keys,_.keys(_this.__kb.model_keys));if(missing){_this.createObservables(new_model,missing)}}_mdl(new_model)})}});event_watcher=kb.utils.wrappedEventWatcher(_this,new kb.EventWatcher(model,_this,{emitter:_this.model}));keys=options.requires;if(_this.__kb.internals){keys=_.union(keys||[],_this.__kb.internals)}if(model&&(rel_keys=kb.orm.keys(model))){keys=_.union(keys||[],rel_keys)}if(options.keys){if(_.isObject(options.keys)&&!_.isArray(options.keys)){mapped_keys={};_ref1=options.keys;for(vm_key in _ref1){mapping_info=_ref1[vm_key];mapped_keys[_.isString(mapping_info)?mapping_info:mapping_info.key?mapping_info.key:vm_key]=true}_this.__kb.keys=_.keys(mapped_keys)}else{_this.__kb.keys=options.keys;keys=keys?_.union(keys,_this.__kb.keys):_.clone(_this.__kb.keys)}}else{bb_model=event_watcher.emitter();if(bb_model&&bb_model.attributes){attribute_keys=_.keys(bb_model.attributes);keys=keys?_.union(keys,attribute_keys):attribute_keys}}if(keys&&_this.__kb.excludes){keys=_.difference(keys,_this.__kb.excludes)}if(keys&&_this.__kb.statics){keys=_.difference(keys,_this.__kb.statics)}if(_.isObject(options.keys)&&!_.isArray(options.keys)){_this.mapObservables(model,options.keys)}if(_.isObject(options.requires)&&!_.isArray(options.requires)){_this.mapObservables(model,options.requires)}!options.mappings||_this.mapObservables(model,options.mappings);!keys||_this.createObservables(model,keys);!_this.__kb.statics||_this.createObservables(model,_this.__kb.statics,true);!kb.statistics||kb.statistics.register("ViewModel",_this);return _this}}(this))}ViewModel.prototype.destroy=function(){var vm_key;if(this.__kb.view_model!==this){for(vm_key in this.__kb.vm_keys){this.__kb.view_model[vm_key]=null}}this.__kb.view_model=null;kb.releaseKeys(this);kb.utils.wrappedDestroy(this);return!kb.statistics||kb.statistics.unregister("ViewModel",this)};ViewModel.prototype.shareOptions=function(){return{store:kb.utils.wrappedStore(this),factory:kb.utils.wrappedFactory(this)}};ViewModel.prototype.createObservables=function(model,keys,is_static){var create_options,key,static_defaults,vm_key,_j,_len1;if(is_static){static_defaults=this.__kb.static_defaults||{}}else{create_options={store:kb.utils.wrappedStore(this),factory:kb.utils.wrappedFactory(this),path:this.__kb.path,event_watcher:kb.utils.wrappedEventWatcher(this)}}for(_j=0,_len1=keys.length;_j<_len1;_j++){key=keys[_j];vm_key=this.__kb.internals&&_.contains(this.__kb.internals,key)?"_"+key:key;if(this[vm_key]){continue}this.__kb.vm_keys[vm_key]=this.__kb.model_keys[key]=true;if(is_static){if(model.has(vm_key)){this[vm_key]=this.__kb.view_model[vm_key]=model.get(vm_key)}else if(vm_key in static_defaults){this[vm_key]=this.__kb.view_model[vm_key]=static_defaults[vm_key]}}else{create_options.key=key;this[vm_key]=this.__kb.view_model[vm_key]=kb.observable(model,create_options,this)}}};ViewModel.prototype.mapObservables=function(model,mappings){var create_options,mapping_info,vm_key;create_options={store:kb.utils.wrappedStore(this),factory:kb.utils.wrappedFactory(this),path:this.__kb.path,event_watcher:kb.utils.wrappedEventWatcher(this)};for(vm_key in mappings){mapping_info=mappings[vm_key];if(this[vm_key]){continue}mapping_info=_.isString(mapping_info)?{key:mapping_info}:_.clone(mapping_info);mapping_info.key||(mapping_info.key=vm_key);this.__kb.vm_keys[vm_key]=this.__kb.model_keys[mapping_info.key]=true;this[vm_key]=this.__kb.view_model[vm_key]=kb.observable(model,_.defaults(mapping_info,create_options),this)}};return ViewModel}();kb.viewModel=function(model,options,view_model){return new kb.ViewModel(model,options,view_model)};COMPARE_EQUAL=0;COMPARE_ASCENDING=-1;COMPARE_DESCENDING=1;kb.compare=function(value_a,value_b){if(_.isString(value_a)){return value_a.localeCompare(""+value_b)}if(_.isString(value_b)){return value_b.localeCompare(""+value_a)}if(value_a===value_b){return COMPARE_EQUAL}else{if(value_a<value_b){return COMPARE_ASCENDING}else{return COMPARE_DESCENDING}}};kb.CollectionObservable=function(){CollectionObservable.extend=kb.extend;function CollectionObservable(collection,options){return kb.ignore(function(_this){return function(){var create_options,observable,_ref1;if(_.isUndefined(options)&&!(collection instanceof kb.Collection)){_ref1=[new kb.Collection,collection],collection=_ref1[0],options=_ref1[1]}else if(_.isArray(collection)){collection=new kb.Collection(collection)}options||(options={});observable=kb.utils.wrappedObservable(_this,ko.observableArray([]));observable.__kb_is_co=true;_this.in_edit=0;_this.__kb||(_this.__kb={});_this.__kb._onCollectionChange=_.bind(_this._onCollectionChange,_this);options=_collapseOptions(options);if(options.auto_compact){_this.auto_compact=true}if(options.sort_attribute){_this._comparator=ko.observable(_this._attributeComparator(options.sort_attribute))}else{_this._comparator=ko.observable(options.comparator)}if(options.filters){_this._filters=ko.observableArray(_.isArray(options.filters)?options.filters:options.filters?[options.filters]:void 0)}else{_this._filters=ko.observableArray([])}create_options=_this.create_options={store:kb.Store.useOptionsOrCreate(options,collection,observable)};_this.path=options.path;create_options.factory=kb.utils.wrappedFactory(observable,_this._shareOrCreateFactory(options));create_options.path=kb.utils.pathJoin(options.path,"models");create_options.creator=create_options.factory.creatorForPath(null,create_options.path);if(create_options.creator){_this.models_only=create_options.creator.models_only}_publishMethods(observable,_this,["destroy","shareOptions","filters","comparator","sortAttribute","viewModelByModel","hasViewModels"]);_this._collection=ko.observable(collection);observable.collection=_this.collection=ko.dependentObservable({read:function(){return _this._collection()},write:function(new_collection){return kb.ignore(function(){var previous_collection;if((previous_collection=_this._collection())===new_collection){return}if(previous_collection){previous_collection.unbind("all",_this.__kb._onCollectionChange)}if(new_collection){new_collection.bind("all",_this.__kb._onCollectionChange)}return _this._collection(new_collection)})}});if(collection){collection.bind("all",_this.__kb._onCollectionChange)}_this._mapper=ko.dependentObservable(function(){var comparator,current_collection,filter,filters,models,view_models,_j,_len1;comparator=_this._comparator();filters=_this._filters();if(filters){for(_j=0,_len1=filters.length;_j<_len1;_j++){filter=filters[_j];_unwrapObservable(filter)}}current_collection=_this._collection();if(_this.in_edit){return}observable=kb.utils.wrappedObservable(_this);if(current_collection){models=current_collection.models}if(!models||current_collection.models.length===0){view_models=[]}else{models=_.filter(models,function(model){return!filters.length||_this._selectModel(model)});if(comparator){view_models=_.map(models,function(model){return _this._createViewModel(model)}).sort(comparator)}else{if(_this.models_only){view_models=filters.length?models:models.slice()}else{view_models=_.map(models,function(model){return _this._createViewModel(model)})}}}_this.in_edit++;observable(view_models);return _this.in_edit--});observable.subscribe(_.bind(_this._onObservableArrayChange,_this));!kb.statistics||kb.statistics.register("CollectionObservable",_this);return observable}}(this))}CollectionObservable.prototype.destroy=function(){var array,collection,observable;observable=kb.utils.wrappedObservable(this);collection=this._collection();if(collection){collection.unbind("all",this.__kb._onCollectionChange);array=observable();array.splice(0,array.length)}this.collection.dispose();this._collection=observable.collection=this.collection=null;this._mapper.dispose();this._mapper=null;kb.release(this._filters);this._filters=null;this._comparator(null);this._comparator=null;this.create_options=null;observable.collection=null;kb.utils.wrappedDestroy(this);return!kb.statistics||kb.statistics.unregister("CollectionObservable",this)};CollectionObservable.prototype.shareOptions=function(){var observable;observable=kb.utils.wrappedObservable(this);return{store:kb.utils.wrappedStore(observable),factory:kb.utils.wrappedFactory(observable)}};CollectionObservable.prototype.filters=function(filters){if(filters){return this._filters(_.isArray(filters)?filters:[filters])}else{return this._filters([])}};CollectionObservable.prototype.comparator=function(comparator){return this._comparator(comparator)};CollectionObservable.prototype.sortAttribute=function(sort_attribute){return this._comparator(sort_attribute?this._attributeComparator(sort_attribute):null)};CollectionObservable.prototype.viewModelByModel=function(model){var id_attribute;if(this.models_only){return null}id_attribute=model.hasOwnProperty(model.idAttribute)?model.idAttribute:"cid";return _.find(_peekObservable(kb.utils.wrappedObservable(this)),function(test){var _ref1;if(test!=null?(_ref1=test.__kb)!=null?_ref1.object:void 0:void 0){return test.__kb.object[id_attribute]===model[id_attribute]}else{return false}})};CollectionObservable.prototype.hasViewModels=function(){return!this.models_only};CollectionObservable.prototype.compact=function(){return kb.ignore(function(_this){return function(){var observable;observable=kb.utils.wrappedObservable(_this);if(!kb.utils.wrappedStoreIsOwned(observable)){return}kb.utils.wrappedStore(observable).clear();return _this._collection.notifySubscribers(_this._collection())}}(this))};CollectionObservable.prototype._shareOrCreateFactory=function(options){var absolute_models_path,existing_creator,factories,factory;absolute_models_path=kb.utils.pathJoin(options.path,"models");factories=options.factories;if(factory=options.factory){if((existing_creator=factory.creatorForPath(null,absolute_models_path))&&(!factories||factories["models"]===existing_creator)){if(!factories){return factory}if(factory.hasPathMappings(factories,options.path)){return factory}}}factory=new kb.Factory(options.factory);if(factories){factory.addPathMappings(factories,options.path)}if(!factory.creatorForPath(null,absolute_models_path)){if(options.hasOwnProperty("models_only")){if(options.models_only){factory.addPathMapping(absolute_models_path,{models_only:true})}else{factory.addPathMapping(absolute_models_path,kb.ViewModel)}}else if(options.view_model){factory.addPathMapping(absolute_models_path,options.view_model)}else if(options.create){factory.addPathMapping(absolute_models_path,{create:options.create})}else{factory.addPathMapping(absolute_models_path,kb.ViewModel)}}return factory};CollectionObservable.prototype._onCollectionChange=function(event,arg){return kb.ignore(function(_this){return function(){var collection,comparator,observable,view_model;if(_this.in_edit){return}switch(event){case"reset":if(_this.auto_compact){_this.compact()}else{_this._collection.notifySubscribers(_this._collection())}break;case"sort":case"resort":_this._collection.notifySubscribers(_this._collection());break;case"new":case"add":if(!_this._selectModel(arg)){return}observable=kb.utils.wrappedObservable(_this);collection=_this._collection();if(collection.indexOf(arg)===-1){return}if(view_model=_this.viewModelByModel(arg)){return}_this.in_edit++;view_model=_this._createViewModel(arg);if(comparator=_this._comparator()){observable().push(view_model);observable.sort(comparator)}else{observable.splice(collection.indexOf(arg),0,view_model)}_this.in_edit--;break;case"remove":case"destroy":_this._onModelRemove(arg);break;case"change":if(!_this._selectModel(arg)){_this._onModelRemove(arg)}else{view_model=_this.models_only?arg:_this.viewModelByModel(arg);if(view_model){if(comparator=_this._comparator()){observable=kb.utils.wrappedObservable(_this);_this.in_edit++;observable.sort(comparator);_this.in_edit--}}else{_this._onCollectionChange("add",arg)}}}}}(this))};CollectionObservable.prototype._onModelRemove=function(model){var observable,view_model;view_model=this.models_only?model:this.viewModelByModel(model);if(!view_model){return}observable=kb.utils.wrappedObservable(this);this.in_edit++;observable.remove(view_model);return this.in_edit--};CollectionObservable.prototype._onObservableArrayChange=function(models_or_view_models){return kb.ignore(function(_this){return function(){var collection,has_filters,model,models,observable,view_model,view_models,_j,_len1;if(_this.in_edit){return}_this.models_only&&(!models_or_view_models.length||kb.utils.hasModelSignature(models_or_view_models[0]))||!_this.models_only&&(!models_or_view_models.length||_.isObject(models_or_view_models[0])&&!kb.utils.hasModelSignature(models_or_view_models[0]))||_throwUnexpected(_this,"incorrect type passed");observable=kb.utils.wrappedObservable(_this);collection=_peekObservable(_this._collection);has_filters=_peekObservable(_this._filters).length;if(!collection){return}view_models=models_or_view_models;if(_this.models_only){models=_.filter(models_or_view_models,function(model){return!has_filters||_this._selectModel(model)})}else{!has_filters||(view_models=[]);models=[];for(_j=0,_len1=models_or_view_models.length;_j<_len1;_j++){view_model=models_or_view_models[_j];model=kb.utils.wrappedObject(view_model);if(has_filters){if(!_this._selectModel(model)){continue}view_models.push(view_model)}_this.create_options.store.findOrReplace(model,_this.create_options.creator,view_model);models.push(model)}}_this.in_edit++;models_or_view_models.length===view_models.length||observable(view_models);_.isEqual(collection.models,models)||collection.reset(models);_this.in_edit--}}(this))};CollectionObservable.prototype._attributeComparator=function(sort_attribute){var modelAttributeCompare;modelAttributeCompare=function(model_a,model_b){var attribute_name;attribute_name=_unwrapObservable(sort_attribute);return kb.compare(model_a.get(attribute_name),model_b.get(attribute_name))};return this.models_only?modelAttributeCompare:function(model_a,model_b){return modelAttributeCompare(kb.utils.wrappedModel(model_a),kb.utils.wrappedModel(model_b))}};CollectionObservable.prototype._createViewModel=function(model){if(this.models_only){return model}return this.create_options.store.findOrCreate(model,this.create_options)};CollectionObservable.prototype._selectModel=function(model){var filter,filters,_j,_len1,_ref1;filters=_peekObservable(this._filters);for(_j=0,_len1=filters.length;_j<_len1;_j++){filter=filters[_j];filter=_peekObservable(filter);if(_.isFunction(filter)){if(!filter(model)){return false}}else if(_.isArray(filter)){if(_ref1=model.id,__indexOf.call(filter,_ref1)<0){return false}}else{if(model.id!==filter){return false}}}return true};return CollectionObservable}();kb.collectionObservable=function(collection,options){return new kb.CollectionObservable(collection,options)};kb.RECUSIVE_AUTO_INJECT=true;ko.bindingHandlers["inject"]={init:function(element,value_accessor,all_bindings_accessor,view_model){return kb.Inject.inject(_unwrapObservable(value_accessor()),view_model,element,value_accessor,all_bindings_accessor)}};kb.Inject=function(){function Inject(){}Inject.inject=function(data,view_model,element,value_accessor,all_bindings_accessor,nested){var inject,result,wrapper;inject=function(data){var key,target,value;if(_.isFunction(data)){view_model=new data(view_model,element,value_accessor,all_bindings_accessor);kb.releaseOnNodeRemove(view_model,element)}else{if(data.view_model){view_model=new data.view_model(view_model,element,value_accessor,all_bindings_accessor);kb.releaseOnNodeRemove(view_model,element)}for(key in data){value=data[key];if(key==="view_model"){continue}if(key==="create"){value(view_model,element,value_accessor,all_bindings_accessor)}else if(_.isObject(value)&&!_.isFunction(value)){target=nested||value&&value.create?{}:view_model;view_model[key]=kb.Inject.inject(value,target,element,value_accessor,all_bindings_accessor,true)}else{view_model[key]=value}}}return view_model};if(nested){return inject(data)}else{result=(wrapper=ko.dependentObservable(function(){return inject(data)}))();wrapper.dispose();return result}};Inject.injectViewModels=function(root){var afterBinding,app,beforeBinding,data,expression,findElements,options,results,_j,_len1;results=[];findElements=function(el){var attr,child_el,_j,_len1,_ref1;if(!el.__kb_injected){if(el.attributes&&(attr=_.find(el.attributes,function(attr){return attr.name==="kb-inject"}))){el.__kb_injected=true;results.push({el:el,view_model:{},binding:attr.value})}}_ref1=el.childNodes;for(_j=0,_len1=_ref1.length;_j<_len1;_j++){child_el=_ref1[_j];findElements(child_el)}};if(!root&&(typeof document!=="undefined"&&document!==null)){root=document}findElements(root);for(_j=0,_len1=results.length;_j<_len1;_j++){app=results[_j];if(expression=app.binding){expression.search(/[:]/)<0||(expression="{"+expression+"}");data=new Function("","return ( "+expression+" )")();data||(data={});!data.options||(options=data.options,delete data.options);options||(options={});app.view_model=kb.Inject.inject(data,app.view_model,app.el,null,null,true);afterBinding=app.view_model.afterBinding||options.afterBinding;beforeBinding=app.view_model.beforeBinding||options.beforeBinding}if(beforeBinding){beforeBinding(app.view_model,app.el,options)}kb.applyBindings(app.view_model,app.el,options);if(afterBinding){afterBinding(app.view_model,app.el,options)}}return results};return Inject}();_ko_applyBindings=ko.applyBindings;ko.applyBindings=function(context,element){var results;results=kb.RECUSIVE_AUTO_INJECT?kb.injectViewModels(element):[];if(!results.length){return _ko_applyBindings.apply(this,arguments)}};kb.injectViewModels=kb.Inject.injectViewModels;if(typeof document!=="undefined"&&document!==null){if(this.$){this.$(function(){return kb.injectViewModels()})}else{(onReady=function(){if(document.readyState!=="complete"){return setTimeout(onReady,0)}return kb.injectViewModels()})()}}_publishMethods=kb._publishMethods;kb.DefaultObservable=function(){function DefaultObservable(target_observable,dv){var observable;this.dv=dv;observable=kb.utils.wrappedObservable(this,ko.dependentObservable({read:function(_this){return function(){var current_target;if(current_target=_unwrapObservable(target_observable())){return current_target}else{return _unwrapObservable(_this.dv)}}}(this),write:function(value){return target_observable(value)}}));_publishMethods(observable,this,["destroy","setToDefault"]);return observable}DefaultObservable.prototype.destroy=function(){return kb.utils.wrappedDestroy(this)};DefaultObservable.prototype.setToDefault=function(){return kb.utils.wrappedObservable(this)(this.dv)};return DefaultObservable}();kb.defaultObservable=function(target,default_value){return new kb.DefaultObservable(target,default_value)};kb.Observable.prototype.setToDefault=function(){var _ref1;if((_ref1=this.__kb_value)!=null){if(typeof _ref1.setToDefault==="function"){_ref1.setToDefault()}}};kb.ViewModel.prototype.setToDefault=function(){var vm_key,_ref1;for(vm_key in this.__kb.vm_keys){if((_ref1=this[vm_key])!=null){if(typeof _ref1.setToDefault==="function"){_ref1.setToDefault()}}}};kb.utils.setToDefault=function(obj){var key,value;if(!obj){return}if(ko.isObservable(obj)){if(typeof obj.setToDefault==="function"){obj.setToDefault()}}else if(_.isObject(obj)){for(key in obj){value=obj[key];if(value&&(ko.isObservable(value)||typeof value!=="function")&&(key[0]!=="_"||key.search("__kb"))){this.setToDefault(value)}}}return obj};arraySlice=Array.prototype.slice;kb.toFormattedString=function(format){var arg,args,index,parameter_index,result,value;result=format.slice();args=arraySlice.call(arguments,1);for(index in args){arg=args[index];value=_unwrapObservable(arg);if(_.isUndefined(value)||_.isNull(value)){value=""}parameter_index=format.indexOf("{"+index+"}");while(parameter_index>=0){result=result.replace("{"+index+"}",value);parameter_index=format.indexOf("{"+index+"}",parameter_index+1)}}return result};kb.parseFormattedString=function(string,format){var count,format_indices_to_matched_indices,index,match_index,matches,parameter_count,parameter_index,positions,regex,regex_string,result,results,sorted_positions;regex_string=format.slice();index=0;parameter_count=0;positions={};while(regex_string.search("\\{"+index+"\\}")>=0){parameter_index=format.indexOf("{"+index+"}");while(parameter_index>=0){regex_string=regex_string.replace("{"+index+"}","(.*)");positions[parameter_index]=index;parameter_count++;parameter_index=format.indexOf("{"+index+"}",parameter_index+1)}index++}count=index;regex=new RegExp(regex_string);matches=regex.exec(string);if(matches){matches.shift()}if(!matches||matches.length!==parameter_count){result=[];while(count-->0){result.push("")}return result}sorted_positions=_.sortBy(_.keys(positions),function(parameter_index,format_index){return parseInt(parameter_index,10)});format_indices_to_matched_indices={};for(match_index in sorted_positions){parameter_index=sorted_positions[match_index];index=positions[parameter_index];if(format_indices_to_matched_indices.hasOwnProperty(index)){continue}format_indices_to_matched_indices[index]=match_index}results=[];index=0;while(index<count){results.push(matches[format_indices_to_matched_indices[index]]);index++}return results};kb.FormattedObservable=function(){function FormattedObservable(format,args){var observable,observable_args;if(_.isArray(args)){format=format;observable_args=args}else{observable_args=arraySlice.call(arguments,1)}observable=kb.utils.wrappedObservable(this,ko.dependentObservable({read:function(){var arg,_j,_len1;args=[_unwrapObservable(format)];for(_j=0,_len1=observable_args.length;_j<_len1;_j++){arg=observable_args[_j];args.push(_unwrapObservable(arg))}return kb.toFormattedString.apply(null,args)},write:function(value){var index,matches,max_count;matches=kb.parseFormattedString(value,_unwrapObservable(format));max_count=Math.min(observable_args.length,matches.length);index=0;while(index<max_count){observable_args[index](matches[index]);index++}}}));return observable}FormattedObservable.prototype.destroy=function(){return kb.utils.wrappedDestroy(this)};return FormattedObservable}();kb.formattedObservable=function(format,args){return new kb.FormattedObservable(format,arraySlice.call(arguments,1))};_publishMethods=kb._publishMethods;kb.LocalizedObservable=function(){LocalizedObservable.extend=kb.extend;function LocalizedObservable(value,options,vm){var observable;this.value=value;this.vm=vm;options||(options={});this.vm||(this.vm={});this.read||_throwMissing(this,"read");kb.locale_manager||_throwMissing(this,"kb.locale_manager");this.__kb||(this.__kb={});this.__kb._onLocaleChange=_.bind(this._onLocaleChange,this);this.__kb._onChange=options.onChange;if(this.value){value=_unwrapObservable(this.value)}this.vo=ko.observable(!value?null:this.read(value,null));observable=kb.utils.wrappedObservable(this,ko.dependentObservable({read:function(_this){return function(){if(_this.value){_unwrapObservable(_this.value)}_this.vo();return _this.read(_unwrapObservable(_this.value))}}(this),write:function(_this){return function(value){_this.write||_throwUnexpected(_this,"writing to read-only");_this.write(value,_unwrapObservable(_this.value));_this.vo(value);if(_this.__kb._onChange){return _this.__kb._onChange(value)}}}(this),owner:this.vm}));_publishMethods(observable,this,["destroy","observedValue","resetToCurrent"]);kb.locale_manager.bind("change",this.__kb._onLocaleChange);if(options.hasOwnProperty("default")){observable=kb.DefaultObservable&&ko.defaultObservable(observable,options["default"])}return observable}LocalizedObservable.prototype.destroy=function(){kb.locale_manager.unbind("change",this.__kb._onLocaleChange);this.vm=null;return kb.utils.wrappedDestroy(this)};LocalizedObservable.prototype.resetToCurrent=function(){var current_value,observable;observable=kb.utils.wrappedObservable(this);current_value=this.value?this.read(_unwrapObservable(this.value)):null;if(observable()===current_value){return}return observable(current_value)};LocalizedObservable.prototype.observedValue=function(value){if(arguments.length===0){return this.value}this.value=value;this._onLocaleChange()};LocalizedObservable.prototype._onLocaleChange=function(){var value;value=this.read(_unwrapObservable(this.value));this.vo(value);if(this.__kb._onChange){return this.__kb._onChange(value)}};return LocalizedObservable}();kb.localizedObservable=function(value,options,view_model){return new kb.LocalizedObservable(value,options,view_model)};kb.locale_manager=void 0;_publishMethods=kb._publishMethods;kb.TriggeredObservable=function(){function TriggeredObservable(emitter,event_selector){var observable;this.event_selector=event_selector;emitter||_throwMissing(this,"emitter");this.event_selector||_throwMissing(this,"event_selector");this.vo=ko.observable();observable=kb.utils.wrappedObservable(this,ko.dependentObservable(function(_this){return function(){return _this.vo()}}(this)));_publishMethods(observable,this,["destroy"]);kb.utils.wrappedEventWatcher(this,new kb.EventWatcher(emitter,this,{emitter:_.bind(this.emitter,this),update:_.bind(this.update,this),event_selector:this.event_selector}));return observable}TriggeredObservable.prototype.destroy=function(){return kb.utils.wrappedDestroy(this)};TriggeredObservable.prototype.emitter=function(new_emitter){if(arguments.length===0||this.ee===new_emitter){return this.ee}if(this.ee=new_emitter){return this.update()}};TriggeredObservable.prototype.update=function(){if(!this.ee){return}if(this.vo()!==this.ee){return this.vo(this.ee)}else{return this.vo.valueHasMutated()}};return TriggeredObservable}();kb.triggeredObservable=function(emitter,event_selector){return new kb.TriggeredObservable(emitter,event_selector)};callOrGet=function(value){value=_unwrapObservable(value);if(typeof value==="function"){return value.apply(null,Array.prototype.slice.call(arguments,1))}else{return value}};kb.Validation=function(){function Validation(){}return Validation}();kb.valueValidator=function(value,bindings,validation_options){if(validation_options==null){validation_options={}}validation_options&&!(typeof validation_options==="function")||(validation_options={});return ko.dependentObservable(function(){var active_index,current_value,disabled,identifier,identifier_index,priorities,results,validator;results={$error_count:0};current_value=_unwrapObservable(value);!("disable"in validation_options)||(disabled=callOrGet(validation_options.disable));!("enable"in validation_options)||(disabled=!callOrGet(validation_options.enable));priorities=validation_options.priorities||[];_.isArray(priorities)||(priorities=[priorities]);active_index=priorities.length+1;for(identifier in bindings){validator=bindings[identifier];results[identifier]=!disabled&&callOrGet(validator,current_value);if(results[identifier]){results.$error_count++;(identifier_index=_.indexOf(priorities,identifier)>=0)||(identifier_index=priorities.length);if(results.$active_error&&identifier_index<active_index){results.$active_error=identifier;active_index=identifier_index}else{results.$active_error||(results.$active_error=identifier,active_index=identifier_index)}}}results.$enabled=!disabled;results.$disable=!!disabled;results.$valid=results.$error_count===0;return results})};kb.inputValidator=function(view_model,el,validation_options){var $input_el,bindings,identifier,input_name,options,result,type,validator,validators,_ref1;if(validation_options==null){validation_options={}}validation_options&&!(typeof validation_options==="function")||(validation_options={});validators=kb.valid;$input_el=$(el);if((input_name=$input_el.attr("name"))&&!_.isString(input_name)){input_name=null}if(!(bindings=$input_el.attr("data-bind"))){return null}options=new Function("sc","with(sc[0]) { return { "+bindings+" } }")([view_model]);if(!(options&&options.value)){return null}!options.validation_options||(_.defaults(options.validation_options,validation_options),validation_options=options.validation_options);bindings={};!validators[type=$input_el.attr("type")]||(bindings[type]=validators[type]);!$input_el.attr("required")||(bindings.required=validators.required);if(options.validations){_ref1=options.validations;for(identifier in _ref1){validator=_ref1[identifier];bindings[identifier]=validator}}result=kb.valueValidator(options.value,bindings,validation_options);!input_name&&!validation_options.no_attach||(view_model["$"+input_name]=result);return result};kb.formValidator=function(view_model,el){var $root_el,bindings,form_name,input_el,name,options,results,validation_options,validator,validators,_j,_len1,_ref1;
results={};validators=[];$root_el=$(el);if((form_name=$root_el.attr("name"))&&!_.isString(form_name)){form_name=null}if(bindings=$root_el.attr("data-bind")){options=new Function("sc","with(sc[0]) { return { "+bindings+" } }")([view_model]);validation_options=options.validation_options}validation_options||(validation_options={});validation_options.no_attach=!!form_name;_ref1=$root_el.find("input");for(_j=0,_len1=_ref1.length;_j<_len1;_j++){input_el=_ref1[_j];if(!(name=$(input_el).attr("name"))){continue}validator=kb.inputValidator(view_model,input_el,validation_options);!validator||validators.push(results[name]=validator)}results.$error_count=ko.dependentObservable(function(){var error_count,_k,_len2;error_count=0;for(_k=0,_len2=validators.length;_k<_len2;_k++){validator=validators[_k];error_count+=validator().$error_count}return error_count});results.$valid=ko.dependentObservable(function(){return results.$error_count()===0});results.$enabled=ko.dependentObservable(function(){var enabled,_k,_len2;enabled=true;for(_k=0,_len2=validators.length;_k<_len2;_k++){validator=validators[_k];enabled&=validator().$enabled}return enabled});results.$disabled=ko.dependentObservable(function(){return!results.$enabled()});if(form_name){view_model["$"+form_name]=results}return results};URL_REGEXP=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;EMAIL_REGEXP=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;NUMBER_REGEXP=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;kb.valid={required:function(value){return!value},url:function(value){return!URL_REGEXP.test(value)},email:function(value){return!EMAIL_REGEXP.test(value)},number:function(value){return!NUMBER_REGEXP.test(value)}};kb.hasChangedFn=function(model){var attributes,m;m=null;attributes=null;return function(){var current_model;if(m!==(current_model=_unwrapObservable(model))){m=current_model;attributes=m?m.toJSON():null;return false}if(!(m&&attributes)){return false}return!_.isEqual(m.toJSON(),attributes)}};kb.minLengthFn=function(length){return function(value){return!value||value.length<length}};kb.uniqueValueFn=function(model,key,collection){return function(value){var c,k,m;m=_unwrapObservable(model);k=_unwrapObservable(key);c=_unwrapObservable(collection);if(!(m&&k&&c)){return false}return!!_.find(c.models,function(_this){return function(test){return test!==m&&test.get(k)===value}}(this))}};kb.untilTrueFn=function(stand_in,fn,model){var was_true;was_true=false;if(model&&ko.isObservable(model)){model.subscribe(function(){return was_true=false})}return function(value){var f,result;if(!(f=_unwrapObservable(fn))){return _unwrapObservable(stand_in)}was_true|=!!(result=f(_unwrapObservable(value)));return was_true?result:_unwrapObservable(stand_in)}};kb.untilFalseFn=function(stand_in,fn,model){var was_false;was_false=false;if(model&&ko.isObservable(model)){model.subscribe(function(){return was_false=false})}return function(value){var f,result;if(!(f=_unwrapObservable(fn))){return _unwrapObservable(stand_in)}was_false|=!(result=f(_unwrapObservable(value)));return was_false?result:_unwrapObservable(stand_in)}};return kb})}).call(this);