Commit a7949c8c authored by Colin Eberhardt's avatar Colin Eberhardt Committed by Sindre Sorhus

Close GH-103: Added GWT implementation.

parent 47c8ab0a
## TodoMVC - GWT Version
This is a Google Web Toolkit (GWT) implementation of the TodoMVC application. The GWT version
is rather different to all the other TodoMVC versions (Backbone, Knockout etc ...) in that it is
written in Java which is compiled to JavaScript. The files within the `gwttodo` folder are the result
of running the GWT compilation process on the Java files found within the src folder. The UI
pattern used by this application is Model-View-Presenter.
Whilst this application is very different to the other TodoMVC implementations, it still makes for
an interesting comparison. Large-scale JavaScript applications are often written with GWT or Closure,
with the resulting JavaScript code delivered to the client being compiled.
You can read more about the implementation on my blog:
http://www.scottlogic.co.uk/blog/colin/2012/03/developing-a-gwt-todomvc-application/
### Folder structure
- `css` - includes GWT specific `app.css`, most styling is taken from the base CSS file `../../assets/base.css`
- `gwttodo` - the GWT compiled output, this includes various HTML files, which contain the JavaScript
code for each <a href "http://code.google.com/webtoolkit/doc/latest/tutorial/compile.html">GWT permutation</a>. This
folder also includes some redundant files, see the issue <a href="https://github.com/ColinEberhardt/todomvc/issues/9">
Remove redundant compiler output</a>.
- `src` - the Java source for this application
### Building this application
The GWT TodoMVC application was built with Java 1.6 and GWT 2.4.0. The easiest way to build this application
is to download the GWT SDK:
http://code.google.com/webtoolkit/gettingstarted.html
Together with the Eclipse plugin:
http://code.google.com/webtoolkit/usingeclipse.html
#todo-count span.word {
font-weight: normal;
}
/* The GWT TodoMVC uses a CellList - a framework widget for rendering a list of cells - to
render the list of todo items. Unfortunately the CellList uses a div as its root container
and wraps each cell in a separate div. There are no extension points that allow you to change this.
As a result, this application deviates from the TodoMVC standard of ul / li for the to do list. The
styles applied to the li elements are duplicated here, matching a listItem class instead. */
#todo-list .listItem {
position: relative;
font-size: 24px;
border-bottom: 1px dotted #ccc;
}
#todo-list div :last-child .listItem {
border-bottom: none;
}
#todo-list .listItem.editing {
border-bottom: none;
padding: 0;
}
#todo-list .listItem.editing .edit {
display: block;
width: 506px;
padding: 13px 17px 12px 17px;
margin: 0 0 0 43px;
}
#todo-list .listItem.editing .view {
display: none;
}
#todo-list .listItem .toggle {
text-align: center;
width: 35px;
-webkit-appearance: none;
/*-moz-appearance: none;*/
-ms-appearance: none;
-o-appearance: none;
appearance: none;
}
#todo-list .listItem .toggle:after {
font-size: 18px;
content: '✔';
line-height: 40px;
font-size: 20px;
color: #d9d9d9;
text-shadow: 0 -1px 0 #bfbfbf;
}
#todo-list .listItem .toggle:checked:after {
color: #85ada7;
text-shadow: 0 1px 0 #669991;
bottom: 1px;
position: relative;
}
#todo-list .listItem label {
word-break: break-word;
margin: 20px 15px;
display: inline-block;
-webkit-transition: color 0.4s;
-moz-transition: color 0.4s;
-ms-transition: color 0.4s;
-o-transition: color 0.4s;
transition: color 0.4s;
}
#todo-list .listItem.completed label {
color: #a9a9a9;
text-decoration: line-through;
}
#todo-list .listItem .destroy {
display: none;
position: absolute;
top: 10px;
right: 10px;
width: 40px;
height: 40px;
font-size: 22px;
color: #a88a8a;
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
-ms-transition: all 0.2s;
-o-transition: all 0.2s;
transition: all 0.2s;
}
#todo-list .listItem .destroy:hover {
text-shadow: 0 0 1px #000,
0 0 10px rgba(199, 107, 107, 0.8);
-webkit-transform: scale(1.3);
-moz-transform: scale(1.3);
-ms-transform: scale(1.3);
-o-transform: scale(1.3);
transform: scale(1.3);
}
#todo-list .listItem .destroy:after {
content: '✖';
}
#todo-list .listItem:hover .destroy {
display: block;
}
#todo-list .listItem .edit {
display: none;
}
#todo-list div :last-child .listItem.editing {
margin-bottom: -1px;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(function(){var $gwt_version = "2.4.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = 'ADBEA39003F2D629A6F17A9FEE0ADA53';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'gwttodo',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function U(){}
function Y(){}
function T(){}
function Z(){}
function $(){}
function Sv(){}
function bb(){}
function db(){}
function jb(){}
function ib(){}
function hb(){}
function gb(){}
function rb(){}
function Jb(){}
function zb(){}
function Pb(){}
function Sb(){}
function $b(){}
function Wb(){}
function Fc(){}
function Ec(){}
function Pc(){}
function Rc(){}
function Tc(){}
function Vc(){}
function fd(){}
function ed(){}
function ud(){}
function td(){}
function sd(){}
function rd(){}
function qd(){}
function Dd(){}
function pd(){}
function Id(){}
function Hd(){}
function Gd(){}
function Od(){}
function Nd(){}
function Sd(){}
function Pd(){}
function Vd(){}
function _d(){}
function Zd(){}
function de(){}
function he(){}
function ne(){}
function me(){}
function le(){}
function ye(){}
function xe(){}
function Ae(){}
function ze(){}
function Ee(){}
function De(){}
function He(){}
function Ge(){}
function Gg(){}
function ag(){}
function cg(){}
function hg(){}
function kg(){}
function xg(){}
function Dg(){}
function Eg(){}
function Jg(){}
function Hg(){}
function Mg(){}
function Kg(){}
function Rg(){}
function Wg(){}
function Vg(){}
function Ug(){}
function Tg(){}
function Th(){}
function Vh(){}
function Zf(){}
function Yf(){}
function ci(){}
function gi(){}
function fi(){}
function hi(){}
function ki(){}
function Ei(){}
function Hi(){}
function Wi(){}
function Zi(){}
function gj(){}
function ej(){}
function lj(){}
function Sj(){}
function Vj(){}
function Yj(){}
function $j(){}
function ek(){}
function kk(){}
function rk(){}
function qk(){}
function Fk(){}
function Ek(){}
function Pk(){}
function Vk(){}
function kl(){}
function jl(){}
function il(){}
function xl(){}
function El(){}
function Dl(){}
function Hl(){}
function Gl(){}
function Ll(){}
function Kl(){}
function Jl(){}
function Ql(){}
function Wl(){}
function $l(){}
function fm(){}
function qm(){}
function pm(){}
function tm(){}
function sm(){}
function vm(){}
function xm(){}
function Fm(){}
function Dm(){}
function Km(){}
function Jm(){}
function Im(){}
function Qm(){}
function Wm(){}
function Ym(){}
function $m(){}
function an(){}
function cn(){}
function mn(){}
function rn(){}
function wn(){}
function yn(){}
function Hn(){}
function Fn(){}
function In(){}
function Mn(){}
function mo(){}
function po(){}
function yo(){}
function Fo(){}
function Co(){}
function Ko(){}
function Jo(){}
function Lo(){}
function No(){}
function Po(){}
function $o(){}
function cp(){}
function kp(){}
function np(){}
function tp(){}
function wp(){}
function zp(){}
function Bp(){}
function Dp(){}
function Fp(){}
function Qp(){}
function Pp(){}
function Rp(){}
function Tp(){}
function Vp(){}
function Xp(){}
function $p(){}
function bq(){}
function pq(){}
function sq(){}
function uq(){}
function Oq(){}
function Rq(){}
function Uq(){}
function _q(){}
function ar(){}
function Gr(){}
function Fr(){}
function Or(){}
function Tr(){}
function Sr(){}
function $r(){}
function ds(){}
function ss(){}
function zs(){}
function Ds(){}
function Js(){}
function Ps(){}
function Us(){}
function zt(){}
function yt(){}
function Dt(){}
function Nt(){}
function Rt(){}
function _t(){}
function du(){}
function fu(){}
function ju(){}
function pu(){}
function tu(){}
function Du(){}
function Iu(){}
function Ku(){}
function Yu(){}
function dv(){}
function iv(){}
function qv(){}
function pv(){}
function rv(){}
function Av(){}
function Dv(){}
function Hv(){}
function Kv(){}
function vq(a){}
function qq(){Zb()}
function Sq(){Zb()}
function Sp(){Zb()}
function Ep(){Zb()}
function Yp(){Zb()}
function _p(){Zb()}
function Ju(){Zb()}
function dj(){bj()}
function nk(){mk()}
function Sk(){Rk()}
function An(a){Gn(a)}
function vd(a,b){a.e=b}
function xd(a,b){a.a=b}
function yd(a,b){a.b=b}
function Xg(a,b){a.t=b}
function Xm(){this.b=0}
function Qc(){this.b=0}
function Sc(){this.b=1}
function Uc(){this.b=2}
function Wc(){this.b=3}
function bn(){this.b=3}
function Iv(){this.b=3}
function Bv(){this.b=1}
function Zm(){this.b=1}
function _m(){this.b=2}
function Ev(){this.b=2}
function Qb(a){this.a=a}
function Tb(a){this.a=a}
function bi(a){this.a=a}
function di(a){this.a=a}
function Fi(a){this.a=a}
function Xi(a){this.a=a}
function Tj(a){this.a=a}
function no(a){this.a=a}
function so(a){this.c=a}
function Ol(a){this.t=a}
function Am(a){this.t=a}
function Ap(a){this.a=a}
function mp(a){this.a=a}
function xp(a){this.a=a}
function Kp(a){this.a=a}
function Kr(a){this.a=a}
function Wr(a){this.a=a}
function dq(a){this.a=a}
function Rs(a){this.a=a}
function ws(a){this.d=a}
function on(a){this.b=a}
function Ot(a){this.b=a}
function gu(a){this.b=a}
function ev(a){this.a=a}
function Yd(){this.a={}}
function Ld(){this.c=++Jd}
function Qu(){this.a=null}
function jk(a,b){this.b=b}
function xv(a,b){this.b=b}
function Yg(a,b){_g(a.t,b)}
function Gh(a,b){Jj(a.k,b)}
function dt(){Vs(this)}
function ru(){lr(this)}
function su(){lr(this)}
function dm(){throw yz}
function Em(){throw new Ju}
function cj(){aj=new gj}
function ab(){ab=Sv;new cb}
function hd(){hd=Sv;jd()}
function Om(){Om=Sv;Vm()}
function cb(){new dt;Dk()}
function Kb(a){return a.u()}
function zk(a){return true}
function Eo(a){Jn(a.a,a.b)}
function lp(a,b){hp(a.a,b)}
function Nl(a,b){mc(a.t,b)}
function qp(a,b){sn(b,a.i)}
function Ch(a,b){Ph(a,a.c,b)}
function zi(a,b,c){yk(a,b,c)}
function Xd(a,b,c){a.a[b]=c}
function ul(a,b){nl(a,b,a.t)}
function dn(a,b){gn(a,b,a.b)}
function lb(a){Zb();this.b=a}
function mb(){Zb();this.b=Vv}
function rl(){this.b=new kn}
function jg(){this.a=new Qq}
function Mv(){this.a=new Qu}
function xu(){this.a=new ru}
function yu(){this.a=new su}
function lu(){this.a=new Date}
function vt(){vt=Sv;ut=new zt}
function Bb(){Bb=Sv;Ab=new Jb}
function mk(){mk=Sv;lk=new Ld}
function Rk(){Rk=Sv;Qk=new Ld}
function ij(){ij=Sv;cj(bj())}
function Hj(a){Ib((Bb(),Ab),a)}
function vi(a){Hb((Bb(),Ab),a)}
function Ce(a){Be.call(this,a)}
function Cp(){lb.call(this,rA)}
function Wp(a){lb.call(this,a)}
function Zp(a){lb.call(this,a)}
function aq(a){lb.call(this,a)}
function rq(a){lb.call(this,a)}
function tq(a){Wp.call(this,a)}
function Tq(a){lb.call(this,a)}
function eu(a){St.call(this,a)}
function Ak(a,b){Zk();gl(a,b)}
function fl(a,b){Zk();gl(a,b)}
function Wd(a,b){return a.a[b]}
function Ro(a,b){return a.b==b}
function Gc(a,b){return a.b-b.b}
function nq(a,b){return a>b?a:b}
function oq(a,b){return a<b?a:b}
function Kf(a,b){return !Jf(a,b)}
function Nu(a){return !!a&&a.b}
function nc(b,a){b.tabIndex=a}
function Dc(b,a){b.checked=a}
function qb(b,a){b[b.length]=a}
function $k(a,b){a.__listener=b}
function pt(a,b,c){a.splice(b,c)}
function Hh(a,b,c){Kj(a.k,b,c)}
function ap(a,b){a.c=b;gp(a.b,a)}
function _o(a,b){a.a=b;gp(a.b,a)}
function Sn(a,b){return a.f.Z(b)}
function Et(a,b){return a.b.Y(b)}
function Qf(a){return a.l|a.m<<22}
function Lm(a){this.t=a;new Ee}
function St(a){this.b=a;this.a=a}
function au(a){this.b=a;this.a=a}
function Zl(){Y.call(this,ab())}
function wm(){km.call(this,om())}
function Wk(){ke.call(this,null)}
function cd(a){ad();qb(Zc,a);dd()}
function Qg(a){gc(a.parentNode,a)}
function ch(a,b){!!a.r&&je(a.r,b)}
function zh(a,b){return mj(a.k,b)}
function Ah(a,b){return nj(a.k,b)}
function Wj(a,b){return $s(a.k,b)}
function pl(a,b){return fn(a.b,b)}
function vu(a,b){return mr(a.a,b)}
function pr(b,a){return b.e[$v+a]}
function Fb(a){return !!a.a||!!a.f}
function sj(a){return !a.f?a.j:a.f}
function ec(a){return a.firstChild}
function wc(a){a.returnValue=false}
function ts(a){return a.b<a.d.cb()}
function Ls(a,b){this.a=a;this.b=b}
function xn(a,b){this.a=a;this.b=b}
function up(a,b){this.a=a;this.b=b}
function Eu(a,b){this.a=a;this.b=b}
function zo(a,b){this.b=a;this.a=b}
function _r(a,b){this.b=a;this.a=b}
function Ac(a,b){a.innerText=b||Wv}
function mc(b,a){b.innerHTML=a||Wv}
function rr(b,a){return $v+a in b.e}
function $e(a){return a==null?null:a}
function Bl(a){Al();Ce.call(this,a)}
function nb(a){Zb();this.a=a;Yb(this)}
function dk(a,b,c){this.b=b;this.a=c}
function ke(a){this.a=new we;this.b=a}
function Pq(a,b){ac(a.a,b);return a}
function ig(a,b){Pq(a.a,b.a);return a}
function Xh(a,b,c,d){Pi(a.a,b,c,d)}
function qt(a,b,c,d){a.splice(b,c,d)}
function Vo(a,b,c){Uo(a,Ve(b,32),c)}
function Wh(a,b,c){return bh(a.a,b,c)}
function uf(a){return vf(a.l,a.m,a.h)}
function Ue(a,b){return a.cM&&a.cM[b]}
function yb(a){return a.$H||(a.$H=++tb)}
function dc(a,b){return a.childNodes[b]}
function Te(a,b){return a.cM&&!!a.cM[b]}
function Ze(a){return a.tM==Sv||Te(a,1)}
function gs(a,b){(a<0||a>=b)&&ls(a,b)}
function Ib(a,b){a.c=Lb(a.c,[b,false])}
function Vs(a){a.a=Le(kf,{34:1},0,0,0)}
function Kq(){Kq=Sv;Hq={};Jq={}}
function Zk(){if(!Xk){el();Xk=true}}
function om(){jm();return $doc.body}
function zm(){Am.call(this,uc($doc,dw))}
function Kn(){Ln.call(this,new dt)}
function Jh(a){Kh.call(this,new Uh(a))}
function Uh(a){this.a=a;Xg(this,this.a)}
function we(){this.d=new ru;this.c=false}
function Al(){Al=Sv;yl=new El;zl=new Hl}
function Cd(){Cd=Sv;Bd=new Md(iw,new Dd)}
function Rd(){Rd=Sv;Qd=new Md(jw,new Sd)}
function bj(){bj=Sv;$i=$moduleBase+Kx}
function Xe(a,b){return a!=null&&Te(a,b)}
function _f(c,a,b){return a.replace(c,b)}
function wq(b,a){return b.charCodeAt(a)}
function cc(b,a){return b.appendChild(a)}
function gc(b,a){return b.removeChild(a)}
function wu(a,b){return wr(a.a,b)!=null}
function vj(a){return (!a.f?a.j:a.f).k.b}
function fb(){return (new Date).getTime()}
function Dk(){Dk=Sv;Ck=new dt;Kk(new Fk)}
function ls(a,b){throw new aq(Dz+a+Ez+b)}
function uj(a,b){return Wj(!a.f?a.j:a.f,b)}
function Cc(b,a){return b.getElementById(a)}
function Jp(a,b){return a.a==b.a?0:a.a?1:-1}
function ub(a,b,c){return a.apply(b,c);var d}
function te(a,b){var c;c=ue(a,b);return c}
function Ws(a,b){Ne(a.a,a.b++,b);return true}
function $s(a,b){gs(b,a.b);return a.a[b]}
function _g(a,b){a.style.display=b?Wv:Qw}
function _u(a){av.call(this,a,(wv(),sv))}
function To(a,b,c,d){So(a,b,Ve(c,32),d)}
function Hb(a,b){a.a=Lb(a.a,[b,false]);Gb(a)}
function oe(a,b){!a.a&&(a.a=new dt);Ws(a.a,b)}
function be(a){var b;if($d){b=new _d;je(a,b)}}
function Ni(a){var b;b=Ki(a);!!b&&jc(b,ex)}
function qe(a,b,c,d){var e;e=se(a,b,c);e.V(d)}
function ie(a,b,c){return new ye(pe(a.a,b,c))}
function fc(c,a,b){return c.insertBefore(a,b)}
function hc(c,a,b){return c.replaceChild(a,b)}
function Xu(a,b){return Wu(Ve(a,37),Ve(b,37))}
function cq(a,b){return a.a<b.a?-1:a.a>b.a?1:0}
function mq(a){return Gf(a,Tv)?0:Kf(a,Tv)?-1:1}
function Aq(b,a){return b.substr(a,b.length-a)}
function rj(a){while(!!a.g&&!a.b){Gj(a)}}
function kn(){this.a=Le(hf,{34:1},25,4,0)}
function lq(){lq=Sv;kq=Le(jf,{34:1},40,256,0)}
function Zs(a){a.a=Le(kf,{34:1},0,0,0);a.b=0}
function Jj(a,b){if(!b){throw new rq(Yx)}a.d=b}
function Sg(a,b,c){this.b=a;this.c=b;this.a=c}
function Bn(a,b,c){this.a=a;this.b=b;this.c=c}
function bp(a,b){this.c=a;this.a=false;this.b=b}
function km(a){rl.call(this);this.t=a;dh(this)}
function Si(a){Ti.call(this,a,!Ii&&(Ii=new dj))}
function Nk(){Ik&&be((!Jk&&(Jk=new Wk),Jk))}
function Qe(){Qe=Sv;Oe=[];Pe=[];Re(new He,Oe,Pe)}
function ad(){ad=Sv;Zc=[];$c=[];_c=[];Xc=new fd}
function Nq(){if(Iq==256){Hq=Jq;Jq={};Iq=0}++Iq}
function dd(){if(!Yc){Yc=true;Ib((Bb(),Ab),Xc)}}
function qi(){li=Uv(function(){Bi($wnd.event)})}
function Ks(a){var b;b=a.b.R();return new Rs(b)}
function cr(a){var b;b=a.jb();return new Ls(a,b)}
function ol(a,b){if(b<0||b>=a.b.b){throw new _p}}
function Pn(a){a.f.X();a.i=a.g=0;a.j=true;Qn(a)}
function lm(a){jm();try{a.J()}finally{wu(im,a)}}
function jm(){jm=Sv;gm=new qm;hm=new ru;im=new xu}
function vk(){vk=Sv;tk=new rk;uk=new rk;sk=new rk}
function jd(){jd=Sv;hd();id=Le(bf,{34:1},-1,30,1)}
function Ul(){rl.call(this);Xg(this,uc($doc,dw))}
function pc(a){var b;b=uc(a,bw);b.text=cw;return b}
function Lb(a,b){!a&&(a=[]);a[a.length]=b;return a}
function ac(a,b){a[a.explicitLength++]=b==null?_v:b}
function ai(a,b){a.a.j=true;Oi(a.a,b);a.a.j=false}
function Lv(a,b){return Ou(a.a,b,(Ip(),Gp))==null}
function Sf(a,b){return vf(a.l^b.l,a.m^b.m,a.h^b.h)}
function wr(a,b){return !b?yr(a):xr(a,b,~~yb(b))}
function Ye(a){return a!=null&&a.tM!=Sv&&!Te(a,1)}
function Kk(a){Mk();return Lk($d?$d:($d=new Ld),a)}
function xt(a){vt();return a?new eu(a):new St(null)}
function pb(a){var b;return b=a,Ze(b)?b.hC():yb(b)}
function Qs(a){var b;b=Ve(a.a.U(),49);return b.nb()}
function uu(a,b){var c;c=sr(a.a,b,a);return c==null}
function sh(a){if(a.o){return a.o.G()}return false}
function af(a){if(a!=null){throw new Sp}return null}
function dg(a){if(a==null){throw new rq(zw)}this.a=a}
function mg(a){if(a==null){throw new rq(zw)}this.a=a}
function yg(a){if(a==null){throw new rq(Kw)}this.a=a}
function Xj(a){this.k=new dt;this.n=new xu;this.f=a}
function bg(a){this.b=0;this.c=0;this.a=26;this.d=a}
function Vn(a,b){Wn.call(this,a,b,null,0);tn(a,b.b)}
function Jn(a,b){var c;c=a.a.f.cb();c>0&&vn(b,0,a.a)}
function ob(a,b){var c;return c=a,Ze(c)?c.eQ(b):c===b}
function Gf(a,b){return a.l==b.l&&a.m==b.m&&a.h==b.h}
function vf(a,b,c){return _=new Zf,_.l=a,_.m=b,_.h=c,_}
function Lk(a,b){return ie((!Jk&&(Jk=new Wk),Jk),a,b)}
function kc(b,a){return b[a]==null?null:String(b[a])}
function rf(a){if(Xe(a,44)){return a}return new nb(a)}
function $h(a){a.b&&(!ii&&(ii=new xi),vi(new di(a)))}
function hj(){hj=Sv;bj();_i=new bg((Bg(),new yg($i)))}
function Ip(){Ip=Sv;Gp=new Kp(false);Hp=new Kp(true)}
function Bg(){Bg=Sv;new RegExp(Lw,Bw);new RegExp(Mw,Bw)}
function fp(a,b){Un(a.b.a,b);ip(a);!Cg&&(Cg=new Fg)}
function mj(a,b){return Wh(a.k,b,(!zn&&(zn=new Ld),zn))}
function nj(a,b){return Wh(a.k,b,(!Do&&(Do=new Ld),Do))}
function qu(a,b){return $e(a)===$e(b)||a!=null&&ob(a,b)}
function Rv(a,b){return $e(a)===$e(b)||a!=null&&ob(a,b)}
function Ho(a){var b;if(Do){b=new Fo;!!a.r&&je(a.r,b)}}
function Eh(a){var b;b=Ki(a);!!b&&(b.focus(),undefined)}
function Qo(a,b){var c;c=ec(a.firstChild);ap(b,c.value)}
function _h(a,b,c,d){a.a.i=a.a.i||d;Ri(a.a,b,c,d)}
function nl(a,b,c){fh(b);dn(a.b,b);cc(c,bm(b.t));gh(b,a)}
function Mo(a,b,c){this.a=a;this.d=b;this.c=null;this.b=c}
function lr(a){a.a=[];a.e={};a.c=false;a.b=null;a.d=0}
function Bj(a){a.c.a||Ij(a,-(!a.f?a.j:a.f).g,true,false)}
function Aj(a){a.c.a||Ij(a,(!a.f?a.j:a.f).i-1,true,false)}
function zj(a){return (!a.f?a.j:a.f).j&&(!a.f?a.j:a.f).i==0}
function tj(a){return (ik(),gk)==a.d?-1:(!a.f?a.j:a.f).d}
function bh(a,b,c){return ie(!a.r?(a.r=new ke(a)):a.r,c,b)}
function en(a,b){if(b<0||b>=a.b){throw new _p}return a.a[b]}
function Ve(a,b){if(a!=null&&!Ue(a,b)){throw new Sp}return a}
function Le(a,b,c,d,e){var f;f=Ke(e,d);Me(a,b,c,f);return f}
function wt(a){vt();var b;b=new yu;uu(b,a);return new gu(b)}
function Bc(a){!a.gwt_uid&&(a.gwt_uid=1);return hw+a.gwt_uid++}
function Gn(a){var b;if(a.b||a.c){return}b=a.a;b.k;return}
function vc(a,b){var c=a.createEventObject();c.type=b;return c}
function Qq(){var a;this.a=(a=[],a.explicitLength=0,a)}
function Xo(){eb.call(this,Me(mf,{34:1},1,[iw,jw,bx,xy]))}
function am(a){rl.call(this);Xg(this,uc($doc,dw));mc(this.t,a)}
function bm(a){return a.__gwt_resolve?a.__gwt_resolve():a}
function nn(a){if(a.a>=a.b.b){throw new Ju}return a.b.a[++a.a]}
function xq(a,b){if(!Xe(b,1)){return false}return String(a)==b}
function Dq(a,b){a=String(a);if(a==b){return 0}return a<b?-1:1}
function jn(a,b){var c;c=fn(a,b);if(c==-1){throw new Ju}hn(a,c)}
function xc(a,b){var c=a.getAttribute(b);return c==null?Wv:c+Wv}
function vb(){if(sb++==0){Cb((Bb(),Ab));return true}return false}
function oc(a){if(ic(a)){return !!a&&a.nodeType==1}return false}
function zq(c,a,b){b=Cq(b);return c.replace(RegExp(a,Bw),b)}
function _l(a,b,c){fh(b);dn(a.b,b);hc(c.parentNode,b.t,c);gh(b,a)}
function Xs(a,b,c){(b<0||b>a.b)&&ls(b,a.b);qt(a.a,b,0,c);++a.b}
function vs(a){if(a.c<0){throw new Yp}a.d.bb(a.c);a.b=a.c;a.c=-1}
function wj(a){return new zo((!a.f?a.j:a.f).g,(!a.f?a.j:a.f).f)}
function vl(a){a.style[kz]=Wv;a.style[lz]=Wv;a.style[mz]=Wv}
function Pl(){Ol.call(this,$doc.createElement(nz));this.t[oz]=pz}
function ld(a){var b;b=$doc.createStyleSheet();b.cssText=a;return b}
function ur(a,b){var c;c=a.b;a.b=b;if(!a.c){a.c=true;++a.d}return c}
function bt(a,b,c){var d;d=(gs(b,a.b),a.a[b]);Ne(a.a,b,c);return d}
function Me(a,b,c,d){Qe();Se(d,Oe,Pe);d.aC=a;d.cM=b;d.qI=c;return d}
function Je(a,b){var c,d;c=a;d=Ke(0,b);Me(c.aC,c.cM,c.qI,d);return d}
function ic(b){try{return !!b&&!!b.nodeType}catch(a){return false}}
function Ai(a){if(Ci(a)){return Ip(),a.checked?Hp:Gp}return a.value}
function Wu(a,b){if(a==null||b==null){throw new qq}return a.cT(b)}
function hh(a,b){a.q==-1?Ak(a.t,b|(a.t.__eventBits||0)):(a.q|=b)}
function ku(a,b){return mq(Pf(Hf(a.a.getTime()),Hf(b.a.getTime())))}
function cm(a){return function(){this.__gwt_resolve=dm;return a.D()}}
function _e(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)}
function Ln(a){this.b=new xu;this.e=new ru;this.a=new Vn(this,a)}
function et(a){Vs(this);rt(this.a,0,0,a.f.eb());this.b=this.a.length}
function X(a){if(!a.e){return}a.g=a.f;a.e=false;a.f=false;a.g&&Xl(a)}
function ro(a){if(a.b<0){throw new Zp(Cz)}Tn(a.c,a.b);a.a=a.b;a.b=-1}
function us(a){if(a.b>=a.d.cb()){throw new Ju}return a.d.Z(a.c=a.b++)}
function We(a){if(a!=null&&(a.tM==Sv||Te(a,1))){throw new Sp}return a}
function yr(a){var b;b=a.b;a.b=null;if(a.c){a.c=false;--a.d}return b}
function at(a,b){var c;c=(gs(b,a.b),a.a[b]);pt(a.a,b,1);--a.b;return c}
function Lh(a,b,c){b.__listener=a;mc(b,c.a);b.__listener=null;return b}
function _s(a,b,c){for(;c<a.b;++c){if(Rv(b,a.a[c])){return c}}return -1}
function rt(a,b,c,d){Array.prototype.splice.apply(a,[b,c].concat(d))}
function mm(){jm();try{Cl(im,gm)}finally{lr(im.a);lr(hm)}}
function Pg(){if(!Ng){Ng=uc($doc,dw);_g(Ng,false);cc(om(),Ng)}}
function lg(a,b){if(!Xe(b,12)){return false}return xq(a.a,Ve(b,12).C())}
function qo(a){if(a.a>=a.c.f.cb()){throw new Ju}return Sn(a.c,a.b=a.a++)}
function Bh(a,b){if(!(b>=0&&b<vj(a.k))){throw new aq(Xw+b+Yw+sj(a.k).i)}}
function Wo(a,b,c){var d;d=new jg;Uo(a,c,d);mc(b,(new mg(bc(d.a.a))).a)}
function Dh(a,b,c){var d;d=Lh(a,(!yh&&(yh=uc($doc,dw)),yh),c);Qh(a.c,d,b)}
function Ie(a,b){var c,d;c=a;d=c.slice(0,b);Me(c.aC,c.cM,c.qI,d);return d}
function Dn(a,b,c,d){var e;e=new Bn(b,c,d);!!zn&&!!a.r&&je(a.r,e);return e}
function pj(a){!a.f&&(a.f=new Zj(a.j));a.g=new Tj(a);Hj(a.g);return a.f}
function sc(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b}
function Ok(){var a;if(Ik){a=new Sk;!!Jk&&je(Jk,a);return null}return null}
function Og(a){var b,c;Pg();b=sc(a);c=rc(a);cc(Ng,a);return new Sg(b,c,a)}
function fn(a,b){var c;for(c=0;c<a.b;++c){if(a.a[c]==b){return c}}return -1}
function Un(a,b){var c;c=a.f.$(b);if(c==-1){return false}Tn(a,c);return true}
function vr(e,a,b){var c,d=e.e;a=$v+a;a in d?(c=d[a]):++e.d;d[a]=b;return c}
function Re(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}}
function Se(a,b,c){Qe();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}}
function mr(a,b){return b==null?a.c:Xe(b,1)?rr(a,Ve(b,1)):qr(a,b,~~pb(b))}
function nr(a,b){return b==null?a.b:Xe(b,1)?pr(a,Ve(b,1)):or(a,b,~~pb(b))}
function av(a,b){var c;c=new dt;Zu(this,c,b,a.a,null,null);this.a=new ws(c)}
function jv(a,b){this.c=a;this.d=b;this.a=Le(of,{34:1},51,2,0);this.b=true}
function As(a,b){var c;this.a=a;this.d=a;c=a.cb();(b<0||b>c)&&ls(b,c);this.b=b}
function Wn(a,b,c,d){this.n=a;this.d=new no(this);this.f=b;this.b=c;this.k=d}
function Md(a,b){Ld.call(this);this.a=b;!wd&&(wd=new Yd);Xd(wd,a,this);this.b=a}
function Pm(a){Lm.call(this,a,(!Lg&&(Lg=new Mg),!Ig&&(Ig=new Jg)));this.t[oz]=zz}
function Oo(){var a;Om();Pm.call(this,(a=$doc.createElement(Fz),a.type=Gz,a))}
function Fg(){typeof $wnd.localStorage!=Nw;typeof $wnd.sessionStorage!=Nw}
function em(b){try{return !!b&&!!b.__gwt_resolve}catch(a){return false}}
function od(a){if($doc.styleSheets.length==0){return ld(a)}return kd(0,a,false)}
function Cj(a){xj(a)&&Ij(a,((ik(),gk)==a.d?-1:(!a.f?a.j:a.f).d)+1,true,false)}
function Ej(a){yj(a)&&Ij(a,((ik(),gk)==a.d?-1:(!a.f?a.j:a.f).d)-1,true,false)}
function gp(a,b){if(a.a){return}xq(Bq(b.c),Wv)&&Un(a.b.a,b);ip(a);!Cg&&(Cg=new Fg)}
function Pr(a){var b;b=new dt;a.c&&Ws(b,new Wr(a));kr(a,b);jr(a,b);this.a=new ws(b)}
function sr(a,b,c){return b==null?ur(a,c):Xe(b,1)?vr(a,Ve(b,1),c):tr(a,b,c,~~pb(b))}
function un(a,b,c){var d,e;for(e=Ks(cr(a.b.a));e.a.T();){d=Ve(Qs(e),27);vn(d,b,c)}}
function xb(a,b,c){var d;d=vb();try{return ub(a,b,c)}finally{d&&Db((Bb(),Ab));--sb}}
function yk(a,b,c){var d;d=wk;wk=a;b==xk&&Yk(a.type)==8192&&(xk=null);c.I(a);wk=d}
function qc(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b}
function rc(a){var b=a.nextSibling;while(b&&b.nodeType!=1)b=b.nextSibling;return b}
function Pu(a,b){var c;c=a.a[1-b];a.a[1-b]=c.a[b];c.a[b]=a;a.b=true;c.b=false;return c}
function iq(a){var b,c;if(a==0){return 32}else{c=0;for(b=1;(b&a)==0;b<<=1){++c}return c}}
function Cb(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Nb(b,c)}while(a.b);a.b=c}}
function Db(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Nb(b,c)}while(a.c);a.c=c}}
function Eb(a){var b;if(a.a){b=a.a;a.a=null;!a.f&&(a.f=[]);Nb(b,a.f)}!!a.f&&(a.f=Mb(a.f))}
function Yo(a){var b;b=new Qq;ac(b.a,Nz);Pq(b,wg(a));ac(b.a,Oz);return new dg(bc(b.a))}
function tf(a){var b,c,d;b=a&4194303;c=a>>22&4194303;d=a<0?1048575:0;return vf(b,c,d)}
function nd(a){var b;b=$doc.styleSheets.length;if(b==0){return ld(a)}return kd(b-1,a,true)}
function Li(a,b){rj(a.k);Bh(a,b);if(a.c.childNodes.length>b){return dc(a.c,b)}return null}
function pp(a,b){b?(a.setAttribute(Vz,Wz),undefined):(a.setAttribute(Vz,Xz),undefined)}
function yq(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()}
function wb(b){return function(){try{return xb(b,this,arguments)}catch(a){throw a}}}
function Oj(a,b){this.c=(ck(),_j);this.d=(ik(),hk);this.a=a;this.k=b;this.j=new Xj(25)}
function to(a,b){var c;this.c=a;c=a.f.cb();if(b<0||b>c){throw new aq(Dz+b+Ez+c)}this.a=b}
function On(a,b){var c;a.i=oq(a.i,a.f.cb());c=a.f.W(b);a.g=a.f.cb();a.j=true;Qn(a);return c}
function Nn(a,b){var c;c=a.f.V(b);a.i=oq(a.i,a.f.cb()-1);a.g=a.f.cb();a.j=true;Qn(a);return c}
function Vq(a,b){var c;while(a.T()){c=a.U();if(b==null?c==null:ob(b,c)){return a}}return null}
function yc(a){var b,c;c=a.tagName;b=a.scopeName;if(b==null||yq(gw,b)){return c}return b+$v+c}
function Ki(a){var b;b=tj(a.k);if(b>=0&&a.c.childNodes.length>b){return dc(a.c,b)}return null}
function Kj(a,b,c){if(b==(!a.f?a.j:a.f).i&&c==(!a.f?a.j:a.f).j){return}pj(a).i=b;pj(a).j=c;Nj(a)}
function Tl(a,b){var c;ol(a,b);c=a.a;a.a=en(a.b,b);if(a.a!=c){!Rl&&(Rl=new Zl);Yl(Rl,c,a.a)}}
function tn(a,b){var c,d;a.c=b;a.d=true;for(d=Ks(cr(a.b.a));d.a.T();){c=Ve(Qs(d),27);c.O(b,true)}}
function Gb(a){if(!a.i){a.i=true;!a.e&&(a.e=new Qb(a));Ob(a.e,1);!a.g&&(a.g=new Tb(a));Ob(a.g,50)}}
function Ih(a,b){if(!a){return}b?(a.style[_w]=Wv,undefined):(a.style[_w]=(Oc(),Qw),undefined)}
function ym(a,b){if(a.a!=b){return false}try{gh(b,null)}finally{gc(a.t,b.t);a.a=null}return true}
function Ys(a,b){var c,d;c=b.eb();d=c.length;if(d==0){return false}rt(a.a,a.b,0,c);a.b+=d;return true}
function Cf(a){var b,c;c=hq(a.h);if(c==32){b=hq(a.m);return b==32?hq(a.l)+32:b+20-10}else{return c-12}}
function bc(a){var b,c;b=(c=a.join(Wv),a.length=a.explicitLength=0,c);a[a.explicitLength++]=b;return b}
function Ou(a,b,c){var d,e;d=new jv(b,c);e=new qv;a.a=Mu(a,a.a,d,e);e.a||++a.b;a.a.b=false;return e.b}
function wv(){wv=Sv;sv=new xv(EA,0);tv=new Bv;uv=new Ev;vv=new Iv;Me(pf,{34:1},52,[sv,tv,uv,vv])}
function Oc(){Oc=Sv;Nc=new Qc;Kc=new Sc;Lc=new Uc;Mc=new Wc;Me(cf,{34:1},2,[Nc,Kc,Lc,Mc])}
function Vm(){Vm=Sv;Rm=new Xm;Sm=new Zm;Tm=new _m;Um=new bn;Me(gf,{34:1},24,[Rm,Sm,Tm,Um])}
function ik(){ik=Sv;gk=new jk(cy,0);hk=new jk(dy,1);fk=new jk(ey,2);Me(ff,{34:1},16,[gk,hk,fk])}
function Xf(){Xf=Sv;Tf=vf(4194303,4194303,524287);Uf=vf(0,0,524288);Vf=If(1);If(2);Wf=If(0)}
function Be(a){mb.call(this,a.cb()==0?null:Ve(a.fb(Le(nf,{34:1,45:1},44,0,0)),45)[0]);this.a=a}
function Di(a){var b,c,d;if(!mi){return}c=Ai(mi);if(!ob(c,oi)){oi=c;d=mi;b=vc($doc,fx);yi(a,d,1024,b)}}
function $g(a,b,c){if(!a){throw new lb(Ow)}b=Bq(b);if(b.length==0){throw new Wp(Pw)}c?jc(a,b):lc(a,b)}
function Ci(a){var b;if(!a||!yq(tx,yc(a))){return false}b=a.type.toLowerCase();return xq(Dx,b)||xq(Ex,b)}
function ql(a,b){var c;if(b.s!=a){return false}try{gh(b,null)}finally{c=b.t;gc(sc(c),c);jn(a.b,b)}return true}
function dl(a,b){var c=a.children.length;for(var d=0;d<c;++d){if(b===a.children[d]){return d}}return -1}
function Lu(a,b){var c,d;d=a.a;while(d){c=Xu(b,d.c);if(c==0){return d}c<0?(d=d.a[0]):(d=d.a[1])}return null}
function Mq(a){Kq();var b=$v+a;var c=Jq[b];if(c!=null){return c}c=Hq[b];c==null&&(c=Lq(a));Nq();return Jq[b]=c}
function kr(e,a){var b=e.e;for(var c in b){if(c.charCodeAt(0)==58){var d=new _r(e,c.substring(1));a.V(d)}}}
function Fh(a,b,c){var d;if(c){d=b;nc(d,a.n)}else{b.tabIndex=-1;b.removeAttribute(Zw);b.removeAttribute($w)}}
function yf(a,b,c,d,e){var f;f=Nf(a,b);c&&Bf(f);if(e){a=Af(a,b);d?(sf=Lf(a)):(sf=vf(a.l,a.m,a.h))}return f}
function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{Uv(qf)()}catch(a){b(c)}else{Uv(qf)()}}
function ep(a){var b,c;c=new so(a.b.a);while(c.a<c.c.f.cb()){b=Ve(qo(c),32);b.a&&ro(c)}ip(a);!Cg&&(Cg=new Fg)}
function jp(a){this.d=new mp(this);this.b=new Kn;this.c=a;!Cg&&(Cg=new Fg);op(a,this.d);qp(a,this.b);ip(this)}
function ck(){ck=Sv;ak=new dk(_x,0,true);_j=new dk(ay,1,false);bk=new dk(by,2,false);Me(ef,{34:1},15,[ak,_j,bk])}
function Ob(b,c){Bb();$wnd.setTimeout(function(){var a=Uv(Kb)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)}
function Yh(a,b,c){a.a.i=a.a.i||c;a.b=a.a.i;a.a.j=true;Ch(a.a,b);a.a.j=false;ch(a.a,new gi(xt(sj(a.a.k).k)))}
function Zh(a,b,c,d){a.a.i=a.a.i||d;a.b=a.a.i;a.a.j=true;Dh(a.a,b,c);a.a.j=false;ch(a.a,new gi(xt(sj(a.a.k).k)))}
function hn(a,b){var c;if(b<0||b>=a.b){throw new _p}--a.b;for(c=b;c<a.b;++c){Ne(a.a,c,a.a[c+1])}Ne(a.a,a.b,null)}
function jq(a){var b,c;if(a>-129&&a<128){b=a+128;c=(lq(),kq)[b];!c&&(c=kq[b]=new dq(a));return c}return new dq(a)}
function Lf(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;return vf(b,c,d)}
function Bf(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;a.l=b;a.m=c;a.h=d}
function ip(a){var b,c,d,e;e=a.b.a.f.cb();b=0;for(d=new so(a.b.a);d.a<d.c.f.cb();){c=Ve(qo(d),32);c.a&&++b}rp(a.c,e,b)}
function Pf(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return vf(c&4194303,d&4194303,e&1048575)}
function Jr(a,b){var c,d,e;if(Xe(b,49)){c=Ve(b,49);d=c.nb();if(mr(a.a,d)){e=nr(a.a,d);return qu(c.ob(),e)}}return false}
function Qi(a){var b;b=tj(a.k);if(b>=0&&b<sj(a.k).k.b){Ki(a);Bh(a,b);uj(a.k,b);b+wj(a.k).b;a.k;return false}return false}
function fj(a){if(!a.a){a.a=true;cd(Lx+(hj(),(bj(),_i).a)+Mx+_i.d.a+Nx+_i.b+Ox+_i.c+Px);return true}return false}
function Op(a){if(a>=48&&a<58){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1}
function nm(){jm();var a;a=Ve(nr(hm,null),22);if(a){return a}hm.d==0&&Kk(new tm);a=new wm;sr(hm,null,a);uu(im,a);return a}
function kd(a,b,c){var d;d=$doc.styleSheets[a];c?(d.cssText+=b,undefined):(d.cssText=b+d.cssText,undefined);return d}
function Ph(a,b,c){sh(a)||$k(a.t,a);mc(b,(!ii&&(ii=new xi),ui(ii,c)).a);sh(a)||(a.t.__listener=null,undefined)}
function fh(a){if(!a.s){(jm(),vu(im,a))&&lm(a)}else if(Xe(a.s,19)){Ve(a.s,19).Q(a)}else if(a.s){throw new Zp(Tw)}}
function kb(a){var b,c,d;c=Le(lf,{34:1},43,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new qq}c[d]=a[d]}}
function Zb(){var a,b,c,d;c=Xb(new $b);d=Le(lf,{34:1},43,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new vq(c[a])}kb(d)}
function ui(a,b){var c,d,e;if(a.b&&!!b){e=$moduleName;d=gx+e+hx;c=b.a;c=zq(c,ix,jx+d+kx+d+lx);b=(vg(),new mg(c))}return b}
function br(a,b){var c,d,e;for(d=a.jb().R();d.T();){c=Ve(d.U(),49);e=c.nb();if(b==null?e==null:ob(b,e)){return c}}return null}
function ue(a,b){var c,d;d=Ve(nr(a.d,b),48);if(!d){return vt(),vt(),ut}c=Ve(d.kb(null),47);if(!c){return vt(),vt(),ut}return c}
function se(a,b,c){var d,e;e=Ve(nr(a.d,b),48);if(!e){e=new ru;sr(a.d,b,e)}d=Ve(e.kb(c),47);if(!d){d=new dt;e.lb(c,d)}return d}
function pe(a,b,c){if(!b){throw new rq(kw)}if(!c){throw new rq(lw)}a.b>0?oe(a,new Mo(a,b,c)):qe(a,b,null,c);return new Ko}
function Ne(a,b,c){if(c!=null){if(a.qI>0&&!Ue(c,a.qI)){throw new Ep}if(a.qI<0&&(c.tM==Sv||Te(c,1))){throw new Ep}}return a[b]=c}
function ct(a,b){var c;b.length<a.b&&(b=Je(b,a.b));for(c=0;c<a.b;++c){Ne(b,c,a.a[c])}b.length>a.b&&Ne(b,a.b,null);return b}
function ve(a){var b,c;if(a.a){try{for(c=new ws(a.a);c.b<c.d.cb();){b=Ve(us(c),30);qe(b.a,b.d,b.c,b.b)}}finally{a.a=null}}}
function op(a,b){var c;c=a.j;Zk();gl(c,1);$k(c,new up(a,b));ah(a.f,new xp(b),(Rd(),Rd(),Qd));ah(a.a,new Ap(b),(Cd(),Cd(),Bd))}
function gh(a,b){var c;c=a.s;if(!b){try{!!c&&c.G()&&a.J()}finally{a.s=null}}else{if(c){throw new Zp(Uw)}a.s=b;b.G()&&a.H()}}
function si(a,b){var c;return vu(a.c,yc(b).toLowerCase())||(c=b.getAttributeNode(Zw),c!=null&&c.specified?b.tabIndex:-1)>=0}
function jr(i,a){var b=i.a;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.V(e[f])}}}}
function zd(a,b,c){var d,e,f;if(wd){f=Ve(Wd(wd,a.type),5);if(f){d=f.a.a;e=f.a.b;xd(f.a,a);yd(f.a,c);ch(b,f.a);xd(f.a,d);yd(f.a,e)}}}
function Zu(a,b,c,d,e,f){if(!d){return}!!d.a[0]&&Zu(a,b,c,d.a[0],e,f);$u(c,d.c,e,f)&&b.V(d);!!d.a[1]&&Zu(a,b,c,d.a[1],e,f)}
function yi(a,b,c,d){if(!zc(a.t,b)){return}b.__listener=a;fl(b,c|(b.__eventBits||0));!!d&&(b.fireEvent(Ax+d.type,d),undefined)}
function dp(a){var b,c;b=Bq(kc(a.c.f.t,Uz));if(xq(b,Wv))return;c=new bp(b,a);a.c.f.t[Uz]=Wv;Nn(a.b.a,c);ip(a);!Cg&&(Cg=new Fg)}
function Oi(a,b){var c;c=null;b==(vk(),tk)?(c=a.e):b==sk&&zj(a.k)&&(c=a.d);!!c&&Tl(a.f,pl(a.f,c));Ih(a.c,!c);Yg(a.f,!!c);ch(a,new nk)}
function rp(a,b,c){var d;d=b-c;pp(a.c,b==0);pp(a.g,b==0);pp(a.a.t,c==0);Ac(a.d,Wv+d);Ac(a.e,d>1||d==0?Yz:Zz);mc(a.b,Wv+c);Dc(a.j,b==c)}
function xf(a,b){if(a.h==524288&&a.m==0&&a.l==0){b&&(sf=vf(0,0,0));return uf((Xf(),Vf))}b&&(sf=vf(a.l,a.m,a.h));return vf(0,0,0)}
function Dj(a){(ck(),_j)==a.c?Ij(a,(!a.f?a.j:a.f).f,true,false):bk==a.c&&Ij(a,((ik(),gk)==a.d?-1:(!a.f?a.j:a.f).d)+30,true,false)}
function Fj(a){(ck(),_j)==a.c?Ij(a,-(!a.f?a.j:a.f).f,true,false):bk==a.c&&Ij(a,((ik(),gk)==a.d?-1:(!a.f?a.j:a.f).d)-30,true,false)}
function Mk(){var a;if(!Ik){a=pc($doc);cc($doc.body,a);$wnd.__gwt_initWindowCloseHandler(Uv(Ok),Uv(Nk));gc($doc.body,a);Ik=true}}
function Vb(a){var b,c,d;d=Wv;a=Bq(a);b=a.indexOf(Xv);if(b!=-1){c=a.indexOf(Yv)==0?8:0;d=Bq(a.substr(c,b-c))}return d.length>0?d:Zv}
function If(a){var b,c;if(a>-129&&a<128){b=a+128;Ff==null&&(Ff=Le(df,{34:1},11,256,0));c=Ff[b];!c&&(c=Ff[b]=tf(a));return c}return tf(a)}
function Yb(a){var b,c,d,e;d=(Ye(a.a)?We(a.a):null,[]);e=Le(lf,{34:1},43,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new vq(d[b])}kb(e)}
function Bq(c){if(c.length==0||c[0]>aw&&c[c.length-1]>aw){return c}var a=c.replace(/^(\s*)/,Wv);var b=a.replace(/\s*$/,Wv);return b}
function hl(){var a=false;for(var b=0;b<$wnd.__gwt_globalEventArray.length;b++){!$wnd.__gwt_globalEventArray[b]()&&(a=true)}return !a}
function qr(i,a,b){var c=i.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.nb();if(i.mb(a,g)){return true}}}return false}
function or(i,a,b){var c=i.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.nb();if(i.mb(a,g)){return f.ob()}}}return null}
function $u(a,b,c,d){if(a.tb()){if(Wu(Ve(b,37),Ve(d,37))>=0){return false}}if(a.sb()){if(Wu(Ve(b,37),Ve(c,37))<0){return false}}return true}
function zc(a,b){if(a.nodeType!=1&&a.nodeType!=9){return a==b}if(b.nodeType!=1){b=b.parentNode;if(!b){return false}}return a===b||a.contains(b)}
function vg(){vg=Sv;new mg(Wv);qg=new RegExp(Aw,Bw);rg=new RegExp(Cw,Bw);sg=new RegExp(ew,Bw);ug=new RegExp(Dw,Bw);tg=new RegExp(Ew,Bw)}
function Ri(a,b,c,d){var e;if(!(b>=0&&b<sj(a.k).k.b)){return}e=Li(a,b);(!c||a.i||d)&&$g(e,ex,c);Fh(a,e,c);if(c&&d&&!a.b){e.focus();Ni(a)}}
function jj(a,b,c){var d;d=new Qq;ac(d.a,Qx);Pq(d,wg(Wv+a));ac(d.a,Rx);Pq(d,wg(b));ac(d.a,Sx);Pq(d,c.a);ac(d.a,Tx);return new dg(bc(d.a))}
function ah(a,b,c){var d;d=Yk(c.b);d==-1?undefined:a.q==-1?Ak(a.t,d|(a.t.__eventBits||0)):(a.q|=d);return ie(!a.r?(a.r=new ke(a)):a.r,c,b)}
function dh(a){var b;if(a.G()){throw new Zp(Rw)}a.p=true;$k(a.t,a);b=a.q;a.q=-1;b>0&&(a.q==-1?Ak(a.t,b|(a.t.__eventBits||0)):(a.q|=b));a.E();a.K()}
function rh(a,b){var c;if(a.o){throw new Zp(Ww)}Xe(b,20)&&Ve(b,20);fh(b);c=b.t;a.t=c;em(c)&&(c.__gwt_resolve=cm(a),undefined);a.o=b;gh(b,a)}
function eb(a){var b,c,d,e;e=null;if(a!=null&&a.length>0){e=new xu;for(c=0,d=a.length;c<d;++c){b=a[c];uu(e,b)}}!!e&&(this.c=(vt(),new gu(e)))}
function Nj(a){var b,c,d;d=(!a.f?a.j:a.f).g;b=nq(0,oq((!a.f?a.j:a.f).f,(!a.f?a.j:a.f).i-d));c=(!a.f?a.j:a.f).k.b-1;while(c>=b){at(pj(a).k,c);--c}}
function $f(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:ww,evtGroup:xw,millis:(new Date).getTime(),type:yw,className:a})}
function Cq(a){var b;b=0;while(0<=(b=a.indexOf(tA,b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+uA+Aq(a,++b)):(a=a.substr(0,b-0)+Aq(a,++b))}return a}
function Qn(a){if(a.b){a.b.i=oq(a.i+a.k,a.b.i);a.b.g=nq(a.g+a.k,a.b.g);a.b.j=a.j||a.b.j;Qn(a.b);return}a.c=false;if(!a.e){a.e=true;Ib((Bb(),Ab),a.d)}}
function vn(a,b,c){var d,e,f,g,i,j,k,n,o;g=b+c.cb();i=a.N();f=i.b;e=i.a;d=f+e;if(b==f||f<g&&d>b){n=f<b?b:f;j=d>g?g:d;k=j-n;o=c.db(n-b,n-b+k);a.P(n,o)}}
function Nb(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].u()&&(c=Lb(c,f)):f[0].v()}catch(a){a=rf(a);if(!Xe(a,42))throw a}}return c}
function Tn(b,c){var a,d,e;try{e=b.f.bb(c);b.i=oq(b.i,c);b.g=b.f.cb();b.j=true;Qn(b);return e}catch(a){a=rf(a);if(Xe(a,39)){d=a;throw new aq(d.b)}else throw a}}
function Af(a,b){var c,d,e;if(b<=22){c=a.l&(1<<b)-1;d=e=0}else if(b<=44){c=a.l;d=a.m&(1<<b-22)-1;e=0}else{c=a.l;d=a.m;e=a.h&(1<<b-44)-1}return vf(c,d,e)}
function Es(a,b,c){this.c=a;this.a=b;this.b=c-b;if(b>c){throw new Wp(zA+b+AA+c)}if(b<0){throw new aq(zA+b+BA)}if(c>a.cb()){throw new aq(CA+c+DA+a.cb())}}
function eh(a,b){var c;switch(Yk(b.type)){case 16:case 32:c=b.relatedTarget||(b.type==Sw?b.toElement:b.fromElement);if(!!c&&zc(a.t,c)){return}}zd(b,a,a.t)}
function sn(a,b){var c;if(!b){throw new Wp(Az)}else if(vu(a.b,b)){throw new Zp(Bz)}uu(a.b,b);c=Ah(b,new xn(a,b));sr(a.e,b,c);a.c>=0&&Hh(b,a.c,a.d);Jn(a,b)}
function Ji(a,b,c,d){var e,f;f=a.a.c;if(!!f&&Et(f,b.type)){e=Ro(a.a,Ve(d,32));To(a.a,c,d,b);a.b=Ro(a.a,Ve(d,32));e&&!a.b&&(!ii&&(ii=new xi),vi(new Xi(a)))}}
function Zo(a,b,c,d){var e;e=new Qq;ac(e.a,Pz);Pq(e,wg(c));ac(e.a,Qz);Pq(e,wg(d));ac(e.a,Rz);Pq(e,a.a);ac(e.a,Sz);Pq(e,b.a);ac(e.a,Tz);return new dg(bc(e.a))}
function kj(a,b,c,d){var e;e=new Qq;ac(e.a,Qx);Pq(e,wg(Wv+a));ac(e.a,Rx);Pq(e,wg(b));ac(e.a,Ux);Pq(e,wg(Wv+c));ac(e.a,Vx);Pq(e,d.a);ac(e.a,Tx);return new dg(bc(e.a))}
function yj(a){if((ik(),gk)==a.d){return false}else if((gk==a.d?-1:(!a.f?a.j:a.f).d)>0){return true}else if(!a.c.a&&(!a.f?a.j:a.f).g>0){return true}return false}
function Bk(){var a,b,c;b=$doc.compatMode;a=Me(mf,{34:1},1,[fy]);for(c=0;c<a.length;++c){if(xq(a[c],b)){return}}a.length==1&&xq(fy,a[0])&&xq(gy,b)?hy+b+iy:jy+b+ky}
function qf(){var a,b;!!$stats&&$f(nw);a=Hk();xq(ow,a)||($wnd.alert(pw+a+qw),undefined);!!$stats&&$f(rw);Bk();!!$stats&&$f(sw);b=new sp;new jp(b);ul((jm(),nm()),b)}
function Ef(a,b){var c,d,e;e=a.h-b.h;if(e<0){return false}c=a.l-b.l;d=a.m-b.m+(c>>22);e+=d>>22;if(e<0){return false}a.l=c&4194303;a.m=d&4194303;a.h=e&1048575;return true}
function qj(a,b,c){var d,e,f,g,i,j;if(b==null){return -1}e=-1;d=2147483647;j=a.k.b;for(i=0;i<j;++i){f=$s(a.k,i);if(ob(b,f)){g=c-i<0?-(c-i):c-i;if(g<d){e=i;d=g}}}return e}
function Rn(a){var b;a.e&&(a.c=true);if(a.n.a!=a){return}b=a.f.cb();if(a.a!=b){a.a=b;tn(a.n,a.a)}if(a.j){un(a.n,a.i,a.f.db(a.i,a.g));a.j=false}a.i=2147483647;a.g=-2147483648}
function hp(a,b){var c,d,e;a.a=true;for(e=new so(a.b.a);e.a<e.c.f.cb();){d=Ve(qo(e),32);d.a=b;gp(d.b,d)}a.a=false;c=new et(a.b.a);Pn(a.b.a);On(a.b.a,c);ip(a);!Cg&&(Cg=new Fg)}
function Kh(a){var b;rh(this,a);this.k=new Oj(this,new bi(this));b=new xu;uu(b,ax);uu(b,bx);uu(b,cx);uu(b,jw);uu(b,iw);uu(b,dx);ji((!ii&&(ii=new xi),ii),this,b);zh(this,new Hn)}
function Ke(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c}
function xr(i,a,b){var c=i.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.nb();if(i.mb(a,g)){c.length==1?delete i.a[b]:c.splice(d,1);--i.d;return f.ob()}}}return null}
function Cl(b,c){Al();var a,d,e,f,g;d=null;for(g=b.R();g.T();){f=Ve(g.U(),25);try{c.S(f)}catch(a){a=rf(a);if(Xe(a,44)){e=a;!d&&(d=new xu);uu(d,e)}else throw a}}if(d){throw new Bl(d)}}
function ji(a,b,c){var d,e,f,g;if(!c){return}d=0;for(g=c.R();g.T();){f=Ve(g.U(),1);e=Yk(f);if(e<0);else{e=wi(a,b,f);e>0&&(d|=e)}}d>0&&(b.q==-1?fl(b.t,d|(b.t.__eventBits||0)):(b.q|=d))}
function Jf(a,b){var c,d;c=a.h>>19;d=b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>=b.l:!(d==0||a.h<b.h||a.h==b.h&&a.m<b.m||a.h==b.h&&a.m==b.m&&a.l<b.l)}
function Zj(a){var b,c;Xj.call(this,a.f);this.c=new dt;this.d=a.d;this.e=a.e;this.f=a.f;this.g=a.g;this.i=a.i;this.j=a.j;this.o=a.o;this.p=a.p;c=a.k.b;for(b=0;b<c;++b){Ws(this.k,$s(a.k,b))}}
function je(b,c){var a,d,e;!c.d||(c.d=false,c.e=null);e=c.e;vd(c,b.b);try{re(b.a,c)}catch(a){a=rf(a);if(Xe(a,31)){d=a;throw new Ce(d.a)}else throw a}finally{e==null?(c.d=true,c.e=null):(c.e=e)}}
function ri(a){!$wnd.__gwt_CellBasedWidgetImplLoadListeners&&($wnd.__gwt_CellBasedWidgetImplLoadListeners=new Array);$wnd.__gwt_CellBasedWidgetImplLoadListeners[a]=Uv(function(){Bi($wnd.event)})}
function Qh(a,b,c){var d,e,f,g,i;d=a.childNodes.length;i=null;c<d&&(i=a.childNodes[c]);e=b.childNodes.length;for(f=0;f<e;++f){if(!i){cc(a,b.childNodes[0])}else{g=rc(i);hc(a,b.childNodes[0],i);i=g}}}
function Lq(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+wq(a,c++)}return b|0}
function xi(){this.c=new xu;uu(this.c,sx);uu(this.c,tx);uu(this.c,ux);uu(this.c,vx);uu(this.c,wx);uu(this.c,xx);if(!pi){pi=new xu;uu(pi,sx);uu(pi,tx);uu(pi,ux)}this.a=new xu;uu(this.a,yx);uu(this.a,zx)}
function wg(a){vg();a.indexOf(Aw)!=-1&&(a=_f(qg,a,Fw));a.indexOf(ew)!=-1&&(a=_f(sg,a,Gw));a.indexOf(Cw)!=-1&&(a=_f(rg,a,Hw));a.indexOf(Ew)!=-1&&(a=_f(tg,a,Iw));a.indexOf(Dw)!=-1&&(a=_f(ug,a,Jw));return a}
function tr(k,a,b,c){var d=k.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var i=g.nb();if(k.mb(a,i)){var j=g.ob();g.pb(b);return j}}}else{d=k.a[c]=[]}var g=new Eu(a,b);d.push(g);++k.d;return null}
function Mf(a,b){var c,d,e;b&=63;if(b<22){c=a.l<<b;d=a.m<<b|a.l>>22-b;e=a.h<<b|a.m>>22-b}else if(b<44){c=0;d=a.l<<b-22;e=a.m<<b-22|a.l>>44-b}else{c=0;d=0;e=a.l<<b-44}return vf(c&4194303,d&4194303,e&1048575)}
function Of(a,b){var c,d,e,f;b&=63;c=a.h&1048575;if(b<22){f=c>>>b;e=a.m>>b|c<<22-b;d=a.l>>b|a.m<<22-b}else if(b<44){f=0;e=c>>>b-22;d=a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=c>>>b-44}return vf(d&4194303,e&4194303,f&1048575)}
function uc(a,b){var c,d;if(b.indexOf($v)!=-1){c=(!a.__gwt_container&&(a.__gwt_container=a.createElement(dw)),a.__gwt_container);c.innerHTML=ew+b+fw||Wv;d=qc(c);c.removeChild(d);return d}return a.createElement(b)}
function gn(a,b,c){var d,e;if(c<0||c>a.b){throw new _p}if(a.b==a.a.length){e=Le(hf,{34:1},25,a.a.length*2,0);for(d=0;d<a.a.length;++d){Ne(e,d,a.a[d])}a.a=e}++a.b;for(d=a.b-1;d>c;--d){Ne(a.a,d,a.a[d-1])}Ne(a.a,c,b)}
function Xl(a){if(a.c){a.a.style[sz]=rz;_g(a.a,true);_g(a.b,false);a.b.style[sz]=rz}else{_g(a.a,false);a.a.style[sz]=rz;a.b.style[sz]=rz;_g(a.b,true)}a.a.style[wz]=xz;a.b.style[wz]=xz;a.a=null;a.b=null;Yg(a.d,false);a.d=null}
function ti(a,b,c){var d,e,f;f=c.type.toLowerCase();if(xq(ax,f)||xq(bx,f)||xq(fx,f)){d=c.srcElement;if(oc(d)){e=d;e!=b.t&&(e.__listener=null,undefined)}}!!mi&&xq(fx,f)&&(oi=Ai(mi));!!mi&&!ni&&vu(a.a,f)&&Hb((Bb(),Ab),new Fi(b))}
function md(a){var b,c,d,e,f;d=$doc.styleSheets.length;if(d<30){return ld(a)}else{f=2147483647;e=-1;for(b=0;b<d;++b){c=id[b];c==0&&(c=id[b]=$doc.styleSheets[b].cssText.length);if(c<=f){f=c;e=b}}id[e]+=a.length;return kd(e,a,true)}}
function Uo(a,b,c){var d,e,f;if(a.b==b){d=Yo(b.c);Pq(c.a,d.a)}else{d=Zo(b.a?(e=new Qq,ac(e.a,Jz),new dg(bc(e.a))):(f=new Qq,ac(f.a,Kz),new dg(bc(f.a))),(vg(),new mg(wg(b.c))),b.a?Lz:Mz,Wv+Rf(Hf((new lu).a.getTime())));Pq(c.a,d.a)}}
function hq(a){var b,c,d;if(a<0){return 0}else if(a==0){return 32}else{d=-(a>>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-4096;b=d>>16&4;c+=b;a<<=b;d=a-16384;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}}
function jc(a,b){var c,d,e,f;b=Bq(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=aw);a.className=f+b}}
function Xb(j){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=j.w(c.toString());b.push(d);var e=$v+d;var f=a[e];if(f){var g,i;for(g=0,i=f.length;g<i;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b}
function xj(a){if((ik(),gk)==a.d){return false}else if((gk==a.d?-1:(!a.f?a.j:a.f).d)<(!a.f?a.j:a.f).k.b-1){return true}else if(!a.c.a&&((gk==a.d?-1:(!a.f?a.j:a.f).d)+(!a.f?a.j:a.f).g<(!a.f?a.j:a.f).i-1||!(!a.f?a.j:a.f).j)){return true}return false}
function bd(){ad();var a,b,c;c=null;if(_c.length!=0){a=_c.join(Wv);b=od((hd(),a));!_c&&(c=b);_c.length=0}if(Zc.length!=0){a=Zc.join(Wv);b=md((hd(),a));!Zc&&(c=b);Zc.length=0}if($c.length!=0){a=$c.join(Wv);b=nd((hd(),a));!$c&&(c=b);$c.length=0}Yc=false;return c}
function Yl(a,b,c){var d,e,f,g;X(a);d=sc(c.t);e=dl(sc(d),d);if(!b){_g(d,true);_g(c.t,true);return}a.d=b;f=sc(b.t);g=dl(sc(f),f);if(e>g){a.a=f;a.b=d;a.c=false}else{a.a=d;a.b=f;a.c=true}_g(a.a,a.c);_g(a.b,!a.c);a.a=null;a.b=null;Yg(a.d,false);a.d=null;_g(c.t,true)}
function Df(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return iq(c)}if(b==0&&d!=0&&c==0){return iq(d)+22}if(b!=0&&d==0&&c==0){return iq(b)+44}return -1}
function Nf(a,b){var c,d,e,f,g;b&=63;c=a.h;d=(c&524288)!=0;d&&(c|=-1048576);if(b<22){g=c>>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?1048575:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?1048575:0;f=d?4194303:0;e=c>>b-44}return vf(e&4194303,f&4194303,g&1048575)}
function Pi(a,b,c,d){var e,f,g,i,j,k,n;j=tj(a.k)+wj(a.k).b;k=c.cb();g=d+k;for(i=d;i<g;++i){n=c.Z(i-d);f=new Qq;ac(f.a,i%2==0?Gx:Hx);e=new jg;a.k;Vo(a.a,n,e);if(i==j){a.i&&(ac(f.a,Ix),f);ig(b,kj(i,bc(f.a),a.n,new mg(bc(e.a.a))))}else{ig(b,jj(i,bc(f.a),new mg(bc(e.a.a))))}}}
function Mb(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=fb();while(fb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].u()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}}
function Sl(a,b){var c,d,e;c=(d=uc($doc,dw),d.style[qz]=rz,d.style[sz]=tz,d.style[uz]=tz,d.style[vz]=tz,d);cc(a.t,bm(c));nl(a,b,c);_g(c,false);c.style[sz]=rz;e=b.t;xq(e.style[qz],Wv)&&(b.t.style[qz]=rz,undefined);xq(e.style[sz],Wv)&&(b.t.style[sz]=rz,undefined);_g(b.t,false)}
function Up(a){var b,c,d,e;if(a==null){throw new tq(_v)}c=a.length;d=c>0&&a.charCodeAt(0)==45?1:0;for(b=d;b<c;++b){if(Op(a.charCodeAt(b))==-1){throw new tq(sA+a+Ew)}}e=parseInt(a,10);if(isNaN(e)){throw new tq(sA+a+Ew)}else if(e<-2147483648||e>2147483647){throw new tq(sA+a+Ew)}return e}
function re(b,c){var a,d,e,f,g,i;if(!c){throw new rq(mw)}try{++b.b;g=te(b,c.y());d=null;i=b.c?g.ab(g.cb()):g._();while(b.c?i.gb():i.T()){f=b.c?i.hb():i.U();try{c.x(Ve(f,9))}catch(a){a=rf(a);if(Xe(a,44)){e=a;!d&&(d=new xu);uu(d,e)}else throw a}}if(d){throw new Be(d)}}finally{--b.b;b.b==0&&ve(b)}}
function Ti(a){var b;Jh.call(this,uc($doc,dw));vg();new mg(Wv);this.d=new zm;this.e=new zm;this.f=new Ul;this.a=a;this.g=(ij(),bj(),aj);fj(this.g);$g(this.t,Jx,true);this.c=uc($doc,dw);b=this.t;cc(b,this.c);cc(b,this.f.t);this.f.M(this);Sl(this.f,this.d);Sl(this.f,this.e);ji((!ii&&(ii=new xi),ii),this,a.c)}
function Rf(a){var b,c,d,e,f;if(a.l==0&&a.m==0&&a.h==0){return tw}if(a.h==524288&&a.m==0&&a.l==0){return uw}if(a.h>>19!=0){return vw+Rf(Lf(a))}c=a;d=Wv;while(!(c.l==0&&c.m==0&&c.h==0)){e=If(1000000000);c=wf(c,e,true);b=Wv+Qf(sf);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;--f){b=tw+b}}d=b+d}return d}
function lc(a,b){var c,d,e,f,g,i,j;b=Bq(b);j=a.className;e=j.indexOf(b);while(e!=-1){if(e==0||j.charCodeAt(e-1)==32){f=e+b.length;g=j.length;if(f==g||f<g&&j.charCodeAt(f)==32){break}}e=j.indexOf(b,e+1)}if(e!=-1){c=Bq(j.substr(0,e-0));d=Bq(Aq(j,e+b.length));c.length==0?(i=d):d.length==0?(i=c):(i=c+aw+d);a.className=i}}
function wi(a,b,c){var d,e,f,g;if(xq(fx,c)||xq(ax,c)||xq(bx,c)){!li&&qi();e=0;d=b.t;if(!xq(mx,xc(d,nx))){d.setAttribute(nx,mx);d.attachEvent(ox,li);d.attachEvent(px,li);for(g=Ks(cr(a.a.a));g.a.T();){f=Ve(Qs(g),1);e|=Yk(f)}}return e}else if(xq(qx,c)||xq(rx,c)){if(!a.b){a.b=true;ri($moduleName)}return -1}else{return Yk(c)}}
function Hf(a){var b,c,d,e,f;if(isNaN(a)){return Xf(),Wf}if(a<-9223372036854775808){return Xf(),Uf}if(a>=9223372036854775807){return Xf(),Tf}e=false;if(a<0){e=true;a=-a}d=0;if(a>=17592186044416){d=_e(a/17592186044416);a-=d*17592186044416}c=0;if(a>=4194304){c=_e(a/4194304);a-=c*4194304}b=_e(a);f=vf(b,c,d);e&&Bf(f);return f}
function Mu(a,b,c,d){var e,f;if(!b){return c}else{e=Xu(b.c,c.c);if(e==0){d.b=b.d;d.a=true;b.d=c.d;return b}f=e>0?0:1;b.a[f]=Mu(a,b.a[f],c,d);if(Nu(b.a[f])){if(Nu(b.a[1-f])){b.b=true;b.a[0].b=false;b.a[1].b=false}else{Nu(b.a[f].a[f])?(b=Pu(b,1-f)):Nu(b.a[f].a[1-f])&&(b=(b.a[1-(1-f)]=Pu(b.a[1-(1-f)],1-(1-f)),Pu(b,1-f)))}}}return b}
function oj(a,b,c){var d,e,f,g,i,j,k,n,o,p,q;o=-1;i=-1;p=-1;j=-1;g=0;for(f=Ks(cr(a.a));f.a.T();){e=Ve(Qs(f),40).a;if(e<b||e>=c){continue}else if(o==-1){o=e;i=e}else if(p==-1){g=e-i;p=e;j=e}else{d=e-j;if(d>g){i=j;p=e;j=e;g=d}else{j=e}}}i+=1;j+=1;if(p==i){i=j;p=-1;j=-1}q=new dt;if(o!=-1){k=i-o;Ws(q,new zo(o,k))}if(p!=-1){n=j-p;Ws(q,new zo(p,n))}return q}
function Mi(a,b){var c,d,e,f,g,i,j,k,n,o,p;d=b.srcElement;if(!oc(d)){return}o=b.srcElement;g=Wv;c=o;while(!!c&&(g=xc(c,Fx)).length==0){c=sc(c)}if(g.length>0){e=b.type;j=xq(iw,e);f=Up(g);i=f-wj(a.k).b;if(!(i>=0&&i<sj(a.k).k.b)){return}n=(ik(),fk)==a.k.d;p=(Bh(a,i),uj(a.k,i));a.k;Dn(a,a,a.b,n);if(j){k=(!ii&&(ii=new xi),si(ii,o));a.i=a.i||k;Ij(a.k,i,!k,false)}Ji(a,b,c,p)}}
function Lj(a,b,c){var d,e,f,g,i,j,k,n,o,p,q;q=c.cb();p=b+q;k=(!a.f?a.j:a.f).g;j=(!a.f?a.j:a.f).g+(!a.f?a.j:a.f).f;e=b>k?b:k;d=p<j?p:j;if(b!=k&&e>=d){return}n=pj(a);f=nq(0,e-k-(!a.f?a.j:a.f).k.b);for(i=0;i<f;++i){Ws(n.k,null)}for(i=e;i<d;++i){o=c.Z(i-b);g=i-k;g<(!a.f?a.j:a.f).k.b?bt(n.k,g,o):Ws(n.k,o)}Ws(n.c,new zo(e-f,d-(e-f)));p>(!a.f?a.j:a.f).i&&Kj(a,p,(!a.f?a.j:a.f).j)}
function zf(a,b,c,d,e,f){var g,i,j,k,n,o,p;k=Cf(b)-Cf(a);g=Mf(b,k);j=vf(0,0,0);while(k>=0){i=Ef(a,g);if(i){k<22?(j.l|=1<<k,undefined):k<44?(j.m|=1<<k-22,undefined):(j.h|=1<<k-44,undefined);if(a.l==0&&a.m==0&&a.h==0){break}}o=g.m;p=g.h;n=g.l;g.h=p>>>1;g.m=o>>>1|(p&1)<<21;g.l=n>>>1|(o&1)<<21;--k}c&&Bf(j);if(f){if(d){sf=Lf(a);e&&(sf=Pf(sf,(Xf(),Vf)))}else{sf=vf(a.l,a.m,a.h)}}return j}
function Bi(a){var b,c,d,e,f,g,i;c=a.srcElement;if(!oc(c)){return}f=c;b=f;d=f.__listener;while(!!b&&!d){b=sc(b);d=!b?null:b.__listener}if(!Xe(d,25)){return}i=Ve(d,25);if(f==i.t){return}g=a.type;if(xq(Bx,g)){e=yc(f).toLowerCase();if(vu(pi,e)){mi=f;oi=Ai(f);ni=!xq(sx,e)&&!Ci(f)}yi(i,f,2048,null)}else if(xq(Cx,g)){Di(i);mi=null;vc($doc,ax);yi(i,f,4096,null)}else (xq(qx,g)||xq(rx,g))&&zi(a,i.t,d)}
function So(a,b,c,d){var e,f,g,i,j,k;k=d.type;if(a.b==c){if(xq(jw,k)){i=d.keyCode||0;if(i==13){Qo(b,c);a.b=null;Wo(a,b,c)}i==27&&(a.b=null,Wo(a,b,c))}if(xq(bx,k)&&!a.a){Qo(b,c);a.b=null;Wo(a,b,c)}}else{if(xq(xy,k)){a.b=c;Wo(a,b,c);a.a=true;g=ec(b.firstChild);g.focus();g.select();a.a=false}if(xq(iw,k)){f=d.srcElement;e=f;j=yc(e);if(xq(j,Fz)){g=e;_o(c,!!g.checked);g.checked?jc(b.firstChild,Hz):lc(b.firstChild,Hz)}else xq(j,Iz)&&fp(c.b,c)}}}
function Mj(a,b,c){var d,e,f,g,i,j,k,n,o,p;p=b.b;g=b.a;if(p<0){throw new Wp(Zx)}if(g<0){throw new Wp($x)}k=(!a.f?a.j:a.f).g;i=(!a.f?a.j:a.f).f;n=k!=p;if(n){o=pj(a);if(!c){if(p>k){f=p-k;if((!a.f?a.j:a.f).k.b>f){for(e=0;e<f;++e){at(o.k,0)}}else{Zs(o.k)}}else{d=k-p;if((!a.f?a.j:a.f).k.b>0&&d<i){for(e=0;e<d;++e){Xs(o.k,0,null)}Ws(o.c,new zo(p,p+d-p))}else{Zs(o.k)}}}o.g=p}j=i!=g;j&&(pj(a).f=g);c&&Zs(pj(a).k);Nj(a);(n||j)&&Ho(a.a,new zo((!a.f?a.j:a.f).g,(!a.f?a.j:a.f).f))}
function wf(a,b,c){var d,e,f,g,i,j;if(b.l==0&&b.m==0&&b.h==0){throw new Cp}if(a.l==0&&a.m==0&&a.h==0){c&&(sf=vf(0,0,0));return vf(0,0,0)}if(b.h==524288&&b.m==0&&b.l==0){return xf(a,c)}j=false;if(b.h>>19!=0){b=Lf(b);j=true}g=Df(b);f=false;e=false;d=false;if(a.h==524288&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=uf((Xf(),Tf));d=true;j=!j}else{i=Nf(a,g);j&&Bf(i);c&&(sf=vf(0,0,0));return i}}else if(a.h>>19!=0){f=true;a=Lf(a);d=true;j=!j}if(g!=-1){return yf(a,g,j,f,c)}if(!Jf(a,b)){c&&(f?(sf=Lf(a)):(sf=vf(a.l,a.m,a.h)));return vf(0,0,0)}return zf(d?a:vf(a.l,a.m,a.h),b,j,f,e,c)}
function Yk(a){switch(a){case bx:return 4096;case fx:return 1024;case iw:return 1;case xy:return 2;case ax:return 2048;case cx:return 128;case yy:return 256;case jw:return 512;case qx:return 32768;case zy:return 8192;case dx:return 4;case Ay:return 64;case Sw:return 32;case By:return 16;case yx:return 8;case Cy:return 16384;case rx:return 65536;case Dy:case zx:return 131072;case Ey:return 262144;case Fy:return 524288;case Gy:return 1048576;case Hy:return 2097152;case Iy:return 4194304;case Jy:return 8388608;case Ky:return 16777216;case Ly:return 33554432;case My:return 67108864;default:return -1;}}
function Ij(a,b,c,d){var e,f,g,i,j,k,n;if((ik(),gk)==a.d){return}pj(a).p=true;if(!d&&(gk==a.d?-1:(!a.f?a.j:a.f).d)==b&&(gk==a.d?null:(!a.f?a.j:a.f).e)!=null){return}j=(!a.f?a.j:a.f).g;i=(!a.f?a.j:a.f).f;n=(!a.f?a.j:a.f).i;e=j+b;e>=n&&(!a.f?a.j:a.f).j&&(e=n-1);b=(0>e?0:e)-j;a.c.a&&(b=0>(b<i-1?b:i-1)?0:b<i-1?b:i-1);g=j;f=i;k=pj(a);k.d=0;k.e=null;k.a=true;if(b>=0&&b<i){k.d=b;k.e=b<k.k.b?Wj(pj(a),b):null;k.b=c;return}else if((ck(),_j)==a.c){while(b<0){g-=i;b+=i}while(b>=i){g+=i;b-=i}}else if(bk==a.c){while(b<0){f+=30;g-=30;b+=30}if(g<0){b+=g;f+=g;g=0}while(b>=f){f+=30}if((!a.f?a.j:a.f).j){f=f<n-g?f:n-g;b>=n&&(b=n-1)}}if(g!=j||f!=i){k.d=b;Mj(a,new zo(g,f),false)}}
function Hk(){var c=navigator.userAgent.toLowerCase();var d=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return c.indexOf(ly)!=-1}())return ly;if(function(){return c.indexOf(my)!=-1||function(){if(c.indexOf(ny)!=-1){return true}if(typeof window[oy]!=Nw){try{var b=new ActiveXObject(py);if(b){b.registerBhoIfNeeded();return true}}catch(a){}}return false}()}())return qy;if(function(){return c.indexOf(ry)!=-1&&$doc.documentMode>=9}())return sy;if(function(){return c.indexOf(ry)!=-1&&$doc.documentMode>=8}())return ty;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(a&&a.length==3)return d(a)>=6000}())return ow;if(function(){return c.indexOf(uy)!=-1}())return vy;return wy}
function gl(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?al:null);c&3&&(a.ondblclick=b&3?_k:null);c&4&&(a.onmousedown=b&4?al:null);c&8&&(a.onmouseup=b&8?al:null);c&16&&(a.onmouseover=b&16?al:null);c&32&&(a.onmouseout=b&32?al:null);c&64&&(a.onmousemove=b&64?al:null);c&128&&(a.onkeydown=b&128?al:null);c&256&&(a.onkeypress=b&256?al:null);c&512&&(a.onkeyup=b&512?al:null);c&1024&&(a.onchange=b&1024?al:null);c&2048&&(a.onfocus=b&2048?al:null);c&4096&&(a.onblur=b&4096?al:null);c&8192&&(a.onlosecapture=b&8192?al:null);c&16384&&(a.onscroll=b&16384?al:null);c&32768&&(a.nodeName==iz?b&32768?a.attachEvent(jz,bl):a.detachEvent(jz,bl):(a.onload=b&32768?cl:null));c&65536&&(a.onerror=b&65536?al:null);c&131072&&(a.onmousewheel=b&131072?al:null);c&262144&&(a.oncontextmenu=b&262144?al:null);c&524288&&(a.onpaste=b&524288?al:null)}
function sp(){var a,b,c,d,e,f,g,i,j,k,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;this.i=new Si(new Xo);rh(this,(e=Bc($doc),x=new Oo,g=Bc($doc),i=Bc($doc),j=Bc($doc),z=this.i,n=Bc($doc),o=Bc($doc),p=Bc($doc),q=Bc($doc),s=Bc($doc),c=new Pl,t=new am((B=new Qq,ac(B.a,$z),Pq(B,wg(e)),ac(B.a,_z),Pq(B,wg(g)),ac(B.a,aA),Pq(B,wg(i)),ac(B.a,bA),Pq(B,wg(j)),ac(B.a,cA),Pq(B,wg(n)),ac(B.a,dA),Pq(B,wg(o)),ac(B.a,eA),Pq(B,wg(p)),ac(B.a,fA),Pq(B,wg(q)),ac(B.a,gA),new dg(bc(B.a))).a),x.t.setAttribute(hA,iA),Nl(c,(C=new Qq,ac(C.a,jA),Pq(C,wg(s)),ac(C.a,kA),new dg(bc(C.a))).a),a=Og(t.t),f=Cc($doc,e),u=Cc($doc,g),u.removeAttribute(lA),A=Cc($doc,i),A.removeAttribute(lA),k=Cc($doc,j),y=Cc($doc,n),y.removeAttribute(lA),v=Cc($doc,o),v.removeAttribute(lA),w=Cc($doc,p),w.removeAttribute(lA),b=Og(c.t),d=Cc($doc,s),d.removeAttribute(lA),b.b?fc(b.b,b.a,b.c):Qg(b.a),r=Cc($doc,q),a.b?fc(a.b,a.a,a.c):Qg(a.a),_l(t,x,f),_l(t,z,k),_l(t,c,r),this.a=c,this.b=d,this.c=u,this.d=v,this.e=w,this.f=x,this.g=y,this.j=A,t));Gh(this.i,(ik(),gk));this.c.id=mA;this.a.t.id=nA;this.f.t.id=oA;this.g.id=pA;this.j.id=qA}
function el(){$wnd.__gwt_globalEventArray==null&&($wnd.__gwt_globalEventArray=new Array);$wnd.__gwt_globalEventArray[$wnd.__gwt_globalEventArray.length]=Uv(function(){return zk($wnd.event)});var d=Uv(function(){var a=tc;tc=this;if($wnd.event.returnValue==null){$wnd.event.returnValue=true;if(!hl()){tc=a;return}}var b,c=this;while(c&&!(b=c.__listener)){c=c.parentElement}b&&!Ye(b)&&Xe(b,17)&&yk($wnd.event,c,b);tc=a});var e=Uv(function(){var a=$doc.createEventObject();$wnd.event.returnValue==null&&$wnd.event.srcElement.fireEvent&&$wnd.event.srcElement.fireEvent(Ny,a);if(this.__eventBits&2){d.call(this)}else if($wnd.event.returnValue==null){$wnd.event.returnValue=true;hl()}});var f=Uv(function(){this.__gwtLastUnhandledEvent=$wnd.event.type;d.call(this)});var g=$moduleName.replace(/\./g,Oy);$wnd[Py+g]=d;al=(new Function(Qy,Ry+g+Sy))($wnd);$wnd[Ty+g]=e;_k=(new Function(Qy,Uy+g+Vy))($wnd);$wnd[Wy+g]=f;cl=(new Function(Qy,Xy+g+Vy))($wnd);bl=(new Function(Qy,Xy+g+Yy))($wnd);var i=Uv(function(){d.call($doc.body)});var j=Uv(function(){e.call($doc.body)});$doc.body.attachEvent(Ny,i);$doc.body.attachEvent(Zy,i);$doc.body.attachEvent($y,i);$doc.body.attachEvent(_y,i);$doc.body.attachEvent(az,i);$doc.body.attachEvent(bz,i);$doc.body.attachEvent(cz,i);$doc.body.attachEvent(dz,i);$doc.body.attachEvent(ez,i);$doc.body.attachEvent(fz,i);$doc.body.attachEvent(gz,j);$doc.body.attachEvent(hz,i)}
function Gj(b){var a,c,d,e,f,g,i,j,k,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S;b.g=null;if(!b.f){b.i=0;return}++b.i;if(b.i>10){b.i=0;throw new Zp(Wx)}if(b.b){throw new Zp(Xx)}b.b=true;k=new Mv;v=b.j;B=b.f;A=B.g;z=B.f;y=A+z;N=B.k.b;B.d=nq(0,oq(B.d,N-1));if((ik(),gk)==b.d){B.d=0;B.e=null}else if(B.a){B.e=N>0?Wj(B,B.d):null}else if(B.e!=null){d=qj(B,B.e,B.d);if(d>=0){B.d=d;B.e=N>0?Wj(B,B.d):null}else{B.d=0;B.e=null}}try{if(fk==b.d&&false){w=v.o;p=N>0?Wj(B,B.d):null;if(p!=null&&!ob(p,w)){x=w!=null&&null.ub();q=p!=null&&null.ub();x&&null.ub();B.o=p;p!=null&&!q&&null.ub()}}}catch(a){a=rf(a);if(Xe(a,42)){e=a;b.b=false;throw e}else throw a}g=B.a||v.d!=B.d||v.e==null&&B.e!=null;for(f=A;f<A+N;++f){$s(B.k,f-A);Q=vu(v.n,jq(f));Q&&Lv(k,jq(f))}if(b.g){b.b=false;return}b.i=0;b.j=b.f;b.f=null;K=false;for(M=new ws(B.c);M.b<M.d.cb();){L=Ve(us(M),28);P=L.b;i=L.a;i==0&&(K=true);for(f=P;f<P+i;++f){Lv(k,jq(f))}}if(k.a.b>0&&g){Lv(k,jq(v.d));Lv(k,jq(B.d))}j=oj(k,A,y);E=j.b>0?Ve((gs(0,j.b),j.a[0]),28):null;F=j.b>1?Ve((gs(1,j.b),j.a[1]),28):null;I=0;for(D=new ws(j);D.b<D.d.cb();){C=Ve(us(D),28);I+=C.a}s=v.g;r=v.f;t=v.k.b;G=false;A!=s?(G=true):N<t?(G=true):!F&&!!E&&E.b==A&&(I>=t||I>r)?(G=true):I>=5&&I>0.3*t?(G=true):K&&t==0&&(G=true);R=(!b.f?b.j:b.f).k.b;S=(!b.f?b.j:b.f).j?oq((!b.f?b.j:b.f).f,(!b.f?b.j:b.f).i-(!b.f?b.j:b.f).g):(!b.f?b.j:b.f).f;R>=S?ai(b.k,(vk(),sk)):R==0?ai(b.k,(vk(),tk)):ai(b.k,(vk(),uk));try{if(G){O=new jg;Xh(b.k,O,B.k,B.g);n=new mg(bc(O.a.a));if(!lg(n,b.e)){b.e=n;Yh(b.k,n,B.b)}$h(b.k)}else if(E){b.e=null;c=E.b;H=c-A;O=new jg;J=new Es(B.k,H,H+E.a);Xh(b.k,O,J,c);Zh(b.k,H,new mg(bc(O.a.a)),B.b);if(F){c=F.b;H=c-A;O=new jg;J=new Es(B.k,H,H+F.a);Xh(b.k,O,J,c);Zh(b.k,H,new mg(bc(O.a.a)),B.b)}$h(b.k)}else if(g){u=v.d;u>=0&&u<N&&_h(b.k,u,false,false);o=B.d;o>=0&&o<N&&_h(b.k,o,true,B.b)}}finally{b.b=false}}
var Wv='',aw=' ',BA=' < 0',Sz=' <label>',AA=' > toIndex: ',DA=' > wrapped.size() ',Ix=' GPBYFDEBB',Ew='"',Rx='" class="',Sx='" style="outline:none;" >',Ux='" style="outline:none;" tabindex="',Nx='") -',iy='"/&gt;',Vx='">',hx='"]();',uA='$',Lw='%5B',Mw='%5D',Aw='&',Jw='&#39;',Fw='&amp;',Hw='&gt;',Gw='&lt;',Iw='&quot;',Dw="'",Qz="' data-timestamp='",kx="' onerror='",bA="' type='checkbox'> <label for='toggle-all'>Mark all as complete<\/label> <div id='todo-list'> <span id='",Oz="' type='text'><\/div>",lx="'$2",ky="').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings.",Rz="'>",aA="'> <input id='",dA="'> <span id='todo-count'> <strong class='number' id='",cA="'><\/span> <\/div> <\/section> <footer id='",gA="'><\/span> <\/footer> <\/section> <footer id='info'> <p>Double-click to edit a todo<\/p> <p>Template by <a href='http://sindresorhus.com'>Sindre Sorhus<\/a><\/p> <p>Created by <a href='http://www.scottlogic.co.uk/blog/colin/'>Colin Eberhardt<\/a><\/p> <p>Part of <a href='http://todomvc.com'>TodoMVC<\/a><\/p> <\/footer>",_z="'><\/span> <\/header> <section id='",fA="'><\/span> left. <\/span> <span id='",kA="'><\/span>)",eA="'><\/strong> <span class='word' id='",Xv='(',ix='(<img)([\\s/>])',qw='). Expect more errors.\n',Yw=', Row size: ',Ez=', Size: ',vw='-',uw='-9223372036854775808',Lx='.GPBYFDEAB,.GPBYFDECB{cursor:pointer;zoom:1;}.GPBYFDEBB{background:#ffc;}.GPBYFDEDB{height:',Sy='.call(this) }',Vy='.call(this)}',Yy='.call(w.event.srcElement)}',fw='/>',tw='0',tz='0px',rz='100%',$v=':',ew='<',Tx='<\/div>',Tz="<\/label><button class='destroy'><\/a><\/div>",nz="<BUTTON type='button'><\/BUTTON>",Pz="<div class='",Nz="<div class='listItem editing'><input class='edit' value='",Qx='<div onclick="" __idx="',jx="<img onload='",Jz="<input class='toggle' type='checkbox' checked>",Kz="<input class='toggle' type='checkbox'>",$z="<section id='todoapp'> <header id='header'> <h1>todos<\/h1> <span id='",Cw='>',yz='A PotentialElement cannot be resolved twice.',Wx='A possible infinite loop has been detected in a Cell Widget. This usually happens when your SelectionModel triggers a SelectionChangeEvent when SelectionModel.isSelection() is called, which causes the table to redraw continuously.',oy='ActiveXObject',vA='Add not supported on this collection',xA='Add not supported on this list',EA='All',ey='BOUND_TO_SELECTION',Iz='BUTTON',gy='BackCompat',Kx='CD15EC0BBF9CD57F9198FD5C1C37122E.cache.png',ay='CHANGE_PAGE',fy='CSS1Compat',_x='CURRENT_PAGE',kw='Cannot add a handler with a null type',lw='Cannot add a null handler',Cz='Cannot call add/remove more than once per call to next/previous.',mw='Cannot fire null event',Uw='Cannot set a new parent without first clearing the old parent',py='ChromeTab.ChromeFrame',jA="Clear completed (<span class='number-done' id='",Ww='Composite.initWidget() may only be called once.',cy='DISABLED',Dy='DOMMouseScroll',dy='ENABLED',pw='ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie6) does not match the runtime user.agent value (',sA='For input string: "',Gx='GPBYFDEAB',ex='GPBYFDEBB',Hx='GPBYFDECB',Jx='GPBYFDEEB',hy="GWT no longer supports Quirks Mode (document.compatMode=' BackCompat').<br>Make sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,<br>e.g. by using &lt;!doctype html&gt; at the start of your application's HTML page.<br><br>To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding<br>the following line to your*.gwt.xml module file:<br>&nbsp;&nbsp;&lt;extend-configuration-property name=\"document.compatMode\" value=\"",iz='IFRAME',by='INCREASE_RANGE',Fz='INPUT',Dz='Index: ',Yx='KeyboardSelectionPolicy cannot be null',Ow='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',Vv='One or more exceptions caught, see full set in UmbrellaException#getCauses',wA='Put not supported on this map',$x='Range length cannot be less than 0',Zx='Range start cannot be less than 0',yA='Remove not supported on this list',Xw='Row index: ',Rw="Should only call onAttach when the widget is detached from the browser's document",Vw="Should only call onDetach when the widget is attached to the browser's document",Pw='Style names cannot be empty',Xx='The Cell Widget is attempting to render itself within the render loop. This usually happens when your render code modifies the state of the Cell Widget then accesses data or elements within the Widget.',Bz='The specified display has already been added to this adapter.',Tw="This widget's parent does not implement HasWidgets",iA='What needs to be done?',jy="Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' ",tA='\\',Oy='_',nx='__gwtCellBasedWidgetImplDispatchingFocus',gx='__gwt_CellBasedWidgetImplLoadListeners["',Ty='__gwt_dispatchDblClickEvent_',Py='__gwt_dispatchEvent_',Wy='__gwt_dispatchUnhandledEvent_',Fx='__idx',$w='accessKey',Zv='anonymous',bx='blur',wx='button',fx='change',Dx='checkbox',ny='chromeframe',oz='className',nA='clear-completed',iw='click',rw='com.google.gwt.user.client.DocumentModeAsserter',nw='com.google.gwt.user.client.UserAgentAsserter',sw='com.todo.client.GwtToDo',Ey='contextmenu',xy='dblclick',_w='display',Az='display cannot be null',Xz='display:block;',Wz='display:none;',dw='div',rA='divide by zero',Hz='done',rx='error',ax='focus',Bx='focusin',Cx='focusout',pA='footer',zA='fromIndex: ',Yv='function',cw='function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',Bw='g',uy='gecko',vy='gecko1_8',Ly='gesturechange',My='gestureend',Ky='gesturestart',pz='gwt-Button',zz='gwt-TextBox',hw='gwt-uid-',sz='height',gw='html',zw='html is null',lA='id',ow='ie6',ty='ie8',sy='ie9',tx='input',Zz='item',Yz='items',cx='keydown',yy='keypress',jw='keyup',xx='label',kz='left',Mz='listItem view',Lz='listItem view done',qx='load',zy='losecapture',mA='main',vz='margin',xw='moduleStartup',dx='mousedown',Ay='mousemove',Sw='mouseout',By='mouseover',yx='mouseup',zx='mousewheel',ry='msie',oA='new-todo',Qw='none',_v='null',Ax='on',yw='onModuleLoadStart',fz='onblur',Ny='onclick',hz='oncontextmenu',gz='ondblclick',ez='onfocus',ox='onfocusin',px='onfocusout',bz='onkeydown',cz='onkeypress',dz='onkeyup',jz='onload',Zy='onmousedown',_y='onmousemove',$y='onmouseup',az='onmousewheel',ly='opera',vx='option',wz='overflow',uz='padding',Fy='paste',hA='placeholder',mz='position',Px='px repeat-x;background-color:#628cd5;color:white;height:auto;overflow:visible;}',Ox='px -',Mx='px;overflow:hidden;background:url("',Ex='radio',Uy='return function() { w.__gwt_dispatchDblClickEvent_',Ry='return function() { w.__gwt_dispatchEvent_',Xy='return function() { w.__gwt_dispatchUnhandledEvent_',qy='safari',bw='script',Cy='scroll',sx='select',ww='startup',Vz='style',Zw='tabIndex',Gz='text',ux='textarea',CA='toIndex: ',qA='toggle-all',lz='top',Jy='touchcancel',Iy='touchend',Hy='touchmove',Gy='touchstart',mx='true',Nw='undefined',wy='unknown',Kw='uri is null',Uz='value',xz='visible',Qy='w',my='webkit',qz='width';var _,Tv={l:0,m:0,h:0};_=U.prototype={};_.eQ=function V(a){return this===a};_.hC=function W(){return yb(this)};_.tM=Sv;_.cM={};_=T.prototype=new U;_.e=false;_.f=false;_.g=false;_=Z.prototype=new U;_=$.prototype=new Z;_=cb.prototype=bb.prototype=new $;_=db.prototype=new U;_.c=null;_=jb.prototype=new U;_.cM={34:1,44:1};_.b=null;_=ib.prototype=new jb;_.cM={34:1,44:1};_=lb.prototype=hb.prototype=new ib;_.cM={34:1,42:1,44:1};_=nb.prototype=gb.prototype=new hb;_.cM={34:1,42:1,44:1};_.a=null;_=rb.prototype=new U;var sb=0,tb=0;_=Jb.prototype=zb.prototype=new rb;_.a=null;_.b=null;_.c=null;_.d=false;_.e=null;_.f=null;_.g=null;_.i=false;var Ab;_=Qb.prototype=Pb.prototype=new U;_.u=function Rb(){this.a.d=true;Eb(this.a);this.a.d=false;return this.a.i=Fb(this.a)};_.a=null;_=Tb.prototype=Sb.prototype=new U;_.u=function Ub(){this.a.d&&Ob(this.a.e,1);return this.a.i};_.a=null;_=$b.prototype=Wb.prototype=new U;_.w=function _b(a){return Vb(a)};var tc=null;_=Fc.prototype=new U;_.cT=function Hc(a){return Gc(this,Ve(a,38))};_.eQ=function Ic(a){return this===a};_.hC=function Jc(){return yb(this)};_.cM={34:1,37:1,38:1};_.b=0;_=Ec.prototype=new Fc;_.cM={2:1,3:1,34:1,37:1,38:1};var Kc,Lc,Mc,Nc;_=Qc.prototype=Pc.prototype=new Ec;_.cM={2:1,3:1,34:1,37:1,38:1};_=Sc.prototype=Rc.prototype=new Ec;_.cM={2:1,3:1,34:1,37:1,38:1};_=Uc.prototype=Tc.prototype=new Ec;_.cM={2:1,3:1,34:1,37:1,38:1};_=Wc.prototype=Vc.prototype=new Ec;_.cM={2:1,3:1,34:1,37:1,38:1};var Xc,Yc=false,Zc,$c,_c;_=fd.prototype=ed.prototype=new U;_.v=function gd(){(ad(),Yc)&&bd()};var id;_=ud.prototype=new U;_.e=null;_=td.prototype=new ud;_.d=false;_=sd.prototype=new td;_.y=function Ad(){return this.z()};_.a=null;_.b=null;var wd=null;_=rd.prototype=new sd;_=qd.prototype=new rd;_=Dd.prototype=pd.prototype=new qd;_.x=function Ed(a){ep(Ve(Ve(a,4),33).a.a)};_.z=function Fd(){return Bd};var Bd;_=Id.prototype=new U;_.hC=function Kd(){return this.c};_.c=0;var Jd=0;_=Ld.prototype=Hd.prototype=new Id;_=Md.prototype=Gd.prototype=new Hd;_.cM={5:1};_.a=null;_.b=null;_=Od.prototype=new sd;_=Nd.prototype=new Od;_=Sd.prototype=Pd.prototype=new Nd;_.x=function Td(a){Ve(a,6).A(this)};_.z=function Ud(){return Qd};var Qd;_=Yd.prototype=Vd.prototype=new U;_.a=null;_=_d.prototype=Zd.prototype=new td;_.x=function ae(a){Ve(a,7).B(this)};_.y=function ce(){return $d};var $d=null;_=de.prototype=new td;_.x=function fe(a){af(a);null.ub()};_.y=function ge(){return ee};var ee=null;_=ke.prototype=he.prototype=new U;_.cM={10:1};_.a=null;_.b=null;_=ne.prototype=new U;_=me.prototype=new ne;_.a=null;_.b=0;_.c=false;_=we.prototype=le.prototype=new me;_=ye.prototype=xe.prototype=new U;_=Be.prototype=Ae.prototype=new hb;_.cM={31:1,34:1,42:1,44:1};_.a=null;_=Ce.prototype=ze.prototype=new Ae;_.cM={31:1,34:1,42:1,44:1};_=Ee.prototype=De.prototype=new U;_.A=function Fe(a){};_.cM={6:1,9:1};_=He.prototype=Ge.prototype=new U;_.aC=null;_.qI=0;var Oe,Pe;var sf=null;var Ff=null;var Tf,Uf,Vf,Wf;_=Zf.prototype=Yf.prototype=new U;_.cM={11:1};_=bg.prototype=ag.prototype=new U;_.a=0;_.b=0;_.c=0;_.d=null;_=dg.prototype=cg.prototype=new U;_.C=function eg(){return this.a};_.eQ=function fg(a){if(!Xe(a,12)){return false}return xq(this.a,Ve(a,12).C())};_.hC=function gg(){return Mq(this.a)};_.cM={12:1,34:1};_.a=null;_=jg.prototype=hg.prototype=new U;_=mg.prototype=kg.prototype=new U;_.C=function ng(){return this.a};_.eQ=function og(a){return lg(this,a)};_.hC=function pg(){return Mq(this.a)};_.cM={12:1,34:1};_.a=null;var qg,rg,sg,tg,ug;_=yg.prototype=xg.prototype=new U;_.eQ=function zg(a){if(!Xe(a,13)){return false}return xq(this.a,Ve(Ve(a,13),14).a)};_.hC=function Ag(){return Mq(this.a)};_.cM={13:1,14:1};_.a=null;var Cg=null;_=Dg.prototype=new U;_=Fg.prototype=Eg.prototype=new Dg;_=Gg.prototype=new U;_=Jg.prototype=Hg.prototype=new U;var Ig=null;_=Mg.prototype=Kg.prototype=new Gg;var Lg=null;var Ng=null;_=Sg.prototype=Rg.prototype=new U;_.a=null;_.b=null;_.c=null;_=Wg.prototype=new U;_.D=function Zg(){throw new Sq};_.cM={18:1,23:1};_.t=null;_=Vg.prototype=new Wg;_.E=function ih(){};_.F=function jh(){};_.G=function kh(){return this.p};_.H=function lh(){dh(this)};_.I=function mh(a){eh(this,a)};_.J=function nh(){if(!this.G()){throw new Zp(Vw)}try{this.L()}finally{try{this.F()}finally{this.t.__listener=null;this.p=false}}};_.K=function oh(){};_.L=function ph(){};_.M=function qh(a){gh(this,a)};_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_.p=false;_.q=0;_.r=null;_.s=null;_=Ug.prototype=new Vg;_.G=function th(){return sh(this)};_.H=function uh(){if(this.q!=-1){hh(this.o,this.q);this.q=-1}this.o.H();this.t.__listener=this};_.I=function vh(a){eh(this,a);this.o.I(a)};_.J=function wh(){try{this.L()}finally{this.o.J()}};_.D=function xh(){Xg(this,this.o.D());return this.t};_.cM={8:1,10:1,17:1,18:1,20:1,21:1,23:1,25:1};_.o=null;_=Tg.prototype=new Ug;_.N=function Mh(){return wj(this.k)};_.I=function Nh(a){var b,c,d,e;!ii&&(ii=new xi);ti(ii,this,a);if(this.j){return}b=a.srcElement;if(!oc(b)||!zc(this.t,b)){return}eh(this,a);this.o.I(a);c=a.type;if(xq(ax,c)){this.i=true;Ni(this)}else if(xq(bx,c)){this.i=false;e=Ki(this);!!e&&lc(e,ex)}else if(xq(cx,c)&&!this.b){this.i=true;d=a.keyCode||0;switch(d){case 40:Cj(this.k);wc(a);return;case 38:Ej(this.k);wc(a);return;case 34:Dj(this.k);wc(a);return;case 33:Fj(this.k);wc(a);return;case 36:Bj(this.k);wc(a);return;case 35:Aj(this.k);wc(a);return;case 32:wc(a);return;}}Mi(this,a)};_.L=function Oh(){this.i=false};_.O=function Rh(a,b){Kj(this.k,a,b)};_.P=function Sh(a,b){Lj(this.k,a,b)};_.cM={8:1,10:1,17:1,18:1,20:1,21:1,23:1,25:1,27:1};_.i=false;_.j=false;_.k=null;_.n=0;var yh=null;_=Uh.prototype=Th.prototype=new Vg;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_.a=null;_=bi.prototype=Vh.prototype=new U;_.a=null;_.b=false;_=di.prototype=ci.prototype=new U;_.v=function ei(){var a;if(!Qi(this.a.a)){a=Ki(this.a.a);!!a&&(a.focus(),undefined)}};_.a=null;_=gi.prototype=fi.prototype=new de;_=hi.prototype=new U;_.c=null;var ii=null;_=xi.prototype=ki.prototype=new hi;_.a=null;_.b=false;var li=null,mi=null,ni=false,oi=null,pi=null;_=Fi.prototype=Ei.prototype=new U;_.v=function Gi(){Di(this.a)};_.a=null;_=Si.prototype=Hi.prototype=new Tg;_.E=function Ui(){var a,b;try{this.f.H()}catch(a){a=rf(a);if(Xe(a,44)){b=a;throw new Bl(wt(b))}else throw a}};_.F=function Vi(){var a,b;try{this.f.J()}catch(a){a=rf(a);if(Xe(a,44)){b=a;throw new Bl(wt(b))}else throw a}};_.cM={8:1,10:1,17:1,18:1,20:1,21:1,23:1,25:1,27:1};_.a=null;_.b=false;_.c=null;_.g=null;var Ii=null;_=Xi.prototype=Wi.prototype=new U;_.v=function Yi(){Eh(this.a)};_.a=null;_=dj.prototype=Zi.prototype=new U;var $i,_i=null,aj=null;_=gj.prototype=ej.prototype=new U;_.a=false;_=Oj.prototype=lj.prototype=new U;_.N=function Pj(){return wj(this)};_.O=function Qj(a,b){Kj(this,a,b)};_.P=function Rj(a,b){Lj(this,a,b)};_.cM={10:1,27:1};_.a=null;_.b=false;_.e=null;_.f=null;_.g=null;_.i=0;_.j=null;_.k=null;_=Tj.prototype=Sj.prototype=new U;_.v=function Uj(){this.a.g==this&&Gj(this.a)};_.a=null;_=Xj.prototype=Vj.prototype=new U;_.d=0;_.e=null;_.f=0;_.g=0;_.i=0;_.j=false;_.o=null;_.p=false;_=Zj.prototype=Yj.prototype=new Vj;_.a=false;_.b=false;_=dk.prototype=$j.prototype=new Fc;_.cM={15:1,34:1,37:1,38:1};_.a=false;var _j,ak,bk;_=jk.prototype=ek.prototype=new Fc;_.cM={16:1,34:1,37:1,38:1};var fk,gk,hk;_=nk.prototype=kk.prototype=new td;_.x=function ok(a){af(a);null.ub()};_.y=function pk(){return lk};var lk;_=rk.prototype=qk.prototype=new U;var sk,tk,uk;var wk=null,xk=null;var Ck;_=Fk.prototype=Ek.prototype=new U;_.B=function Gk(a){while((Dk(),Ck).b>0){af($s(Ck,0)).ub()}};_.cM={7:1,9:1};var Ik=false,Jk=null;_=Sk.prototype=Pk.prototype=new td;_.x=function Tk(a){af(a);null.ub()};_.y=function Uk(){return Qk};var Qk;_=Wk.prototype=Vk.prototype=new he;_.cM={10:1};var Xk=false;var _k=null,al=null,bl=null,cl=null;_=kl.prototype=new Vg;_.E=function ll(){Cl(this,(Al(),yl))};_.F=function ml(){Cl(this,(Al(),zl))};_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_=jl.prototype=new kl;_.R=function sl(){return new on(this.b)};_.Q=function tl(a){return ql(this,a)};_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_=il.prototype=new jl;_.Q=function wl(a){var b;b=ql(this,a);b&&vl(a.t);return b};_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_=Bl.prototype=xl.prototype=new ze;_.cM={31:1,34:1,42:1,44:1};var yl,zl;_=El.prototype=Dl.prototype=new U;_.S=function Fl(a){a.H()};_=Hl.prototype=Gl.prototype=new U;_.S=function Il(a){a.J()};_=Ll.prototype=new Vg;_.H=function Ml(){var a;dh(this);a=this.t.tabIndex;-1==a&&(this.t.tabIndex=0,undefined)};_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Kl.prototype=new Ll;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Pl.prototype=Jl.prototype=new Kl;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Ul.prototype=Ql.prototype=new jl;_.Q=function Vl(a){var b,c;b=sc(a.t);c=ql(this,a);if(c){a.t.style[qz]=Wv;a.t.style[sz]=Wv;_g(a.t,true);gc(this.t,b);this.a==a&&(this.a=null)}return c};_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_.a=null;var Rl=null;_=Zl.prototype=Wl.prototype=new T;_.a=null;_.b=null;_.c=false;_.d=null;_=am.prototype=$l.prototype=new jl;_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_=fm.prototype=new il;_.cM={8:1,10:1,17:1,18:1,19:1,21:1,22:1,23:1,25:1};var gm,hm,im;_=qm.prototype=pm.prototype=new U;_.S=function rm(a){a.G()&&a.J()};_=tm.prototype=sm.prototype=new U;_.B=function um(a){mm()};_.cM={7:1,9:1};_=wm.prototype=vm.prototype=new fm;_.cM={8:1,10:1,17:1,18:1,19:1,21:1,22:1,23:1,25:1};_=zm.prototype=xm.prototype=new kl;_.R=function Bm(){return new Fm};_.Q=function Cm(a){return ym(this,a)};_.cM={8:1,10:1,17:1,18:1,19:1,21:1,23:1,25:1};_.a=null;_=Fm.prototype=Dm.prototype=new U;_.T=function Gm(){return false};_.U=function Hm(){return Em()};_=Km.prototype=new Ll;_.I=function Mm(a){var b;b=Yk(a.type);(b&896)!=0?eh(this,a):eh(this,a)};_.K=function Nm(){};_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Jm.prototype=new Km;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Im.prototype=new Jm;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Qm.prototype=new Fc;_.cM={24:1,34:1,37:1,38:1};var Rm,Sm,Tm,Um;_=Xm.prototype=Wm.prototype=new Qm;_.cM={24:1,34:1,37:1,38:1};_=Zm.prototype=Ym.prototype=new Qm;_.cM={24:1,34:1,37:1,38:1};_=_m.prototype=$m.prototype=new Qm;_.cM={24:1,34:1,37:1,38:1};_=bn.prototype=an.prototype=new Qm;_.cM={24:1,34:1,37:1,38:1};_=kn.prototype=cn.prototype=new U;_.R=function ln(){return new on(this)};_.a=null;_.b=0;_=on.prototype=mn.prototype=new U;_.T=function pn(){return this.a<this.b.b-1};_.U=function qn(){return nn(this)};_.a=-1;_.b=null;_=rn.prototype=new U;_.c=-1;_.d=false;_=xn.prototype=wn.prototype=new U;_.cM={9:1,29:1};_.a=null;_.b=null;_=Bn.prototype=yn.prototype=new td;_.x=function Cn(a){An(this,Ve(a,26))};_.y=function En(){return zn};_.a=null;_.b=false;_.c=false;var zn=null;_=Hn.prototype=Fn.prototype=new U;_.cM={9:1,26:1};_=Kn.prototype=In.prototype=new rn;_.a=null;_=Wn.prototype=Vn.prototype=Mn.prototype=new U;_.V=function Xn(a){return Nn(this,a)};_.W=function Yn(a){return On(this,a)};_.X=function Zn(){Pn(this)};_.Y=function $n(a){return this.f.Y(a)};_.eQ=function _n(a){return this.f.eQ(a)};_.Z=function ao(a){return this.f.Z(a)};_.hC=function bo(){return this.f.hC()};_.$=function co(a){return this.f.$(a)};_.R=function eo(){return new so(this)};_._=function fo(){return new so(this)};_.ab=function go(a){return new to(this,a)};_.bb=function ho(a){return Tn(this,a)};_.cb=function io(){return this.f.cb()};_.db=function jo(a,b){return new Wn(this.n,this.f.db(a,b),this,a)};_.eb=function ko(){return this.f.eb()};_.fb=function lo(a){return this.f.fb(a)};_.cM={47:1};_.a=0;_.b=null;_.c=false;_.e=false;_.f=null;_.g=-2147483648;_.i=2147483647;_.j=false;_.k=0;_.n=null;_=no.prototype=mo.prototype=new U;_.v=function oo(){this.a.e=false;if(this.a.c){this.a.c=false;return}Rn(this.a)};_.a=null;_=to.prototype=so.prototype=po.prototype=new U;_.T=function uo(){return this.a<this.c.f.cb()};_.gb=function vo(){return this.a>0};_.U=function wo(){return qo(this)};_.hb=function xo(){if(this.a<=0){throw new Ju}return Sn(this.c,this.b=--this.a)};_.a=0;_.b=-1;_.c=null;_=zo.prototype=yo.prototype=new U;_.eQ=function Ao(a){var b;if(!Xe(a,28)){return false}b=Ve(a,28);return this.b==b.b&&this.a==b.a};_.hC=function Bo(){return this.a*31^this.b};_.cM={28:1,34:1};_.a=0;_.b=0;_=Fo.prototype=Co.prototype=new td;_.x=function Go(a){Eo(Ve(a,29))};_.y=function Io(){return Do};var Do=null;_=Ko.prototype=Jo.prototype=new U;_=Mo.prototype=Lo.prototype=new U;_.cM={30:1};_.a=null;_.b=null;_.c=null;_.d=null;_=Oo.prototype=No.prototype=new Im;_.cM={8:1,10:1,17:1,18:1,21:1,23:1,25:1};_=Xo.prototype=Po.prototype=new db;_.a=false;_.b=null;_=bp.prototype=$o.prototype=new U;_.cM={32:1};_.a=false;_.b=null;_.c=null;_=jp.prototype=cp.prototype=new U;_.a=false;_.c=null;_=mp.prototype=kp.prototype=new U;_.a=null;_=sp.prototype=np.prototype=new Ug;_.cM={8:1,10:1,17:1,18:1,20:1,21:1,23:1,25:1};_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=null;_.j=null;_=up.prototype=tp.prototype=new U;_.I=function vp(a){lp(this.b,!!this.a.j.checked)};_.cM={17:1};_.a=null;_.b=null;_=xp.prototype=wp.prototype=new U;_.A=function yp(a){(a.a.keyCode||0)==13&&dp(this.a.a)};_.cM={6:1,9:1};_.a=null;_=Ap.prototype=zp.prototype=new U;_.cM={4:1,9:1,33:1};_.a=null;_=Cp.prototype=Bp.prototype=new hb;_.cM={34:1,42:1,44:1};_=Ep.prototype=Dp.prototype=new hb;_.cM={34:1,42:1,44:1};_=Kp.prototype=Fp.prototype=new U;_.cT=function Lp(a){return Jp(this,Ve(a,35))};_.eQ=function Mp(a){return Xe(a,35)&&Ve(a,35).a==this.a};_.hC=function Np(){return this.a?1231:1237};_.cM={34:1,35:1,37:1};_.a=false;var Gp,Hp;_=Qp.prototype=Pp.prototype=new U;_=Sp.prototype=Rp.prototype=new hb;_.cM={34:1,42:1,44:1};_=Tp.prototype=new U;_.cM={34:1,41:1};_=Wp.prototype=Vp.prototype=new hb;_.cM={34:1,42:1,44:1};_=Zp.prototype=Yp.prototype=Xp.prototype=new hb;_.cM={34:1,42:1,44:1};_=aq.prototype=_p.prototype=$p.prototype=new hb;_.cM={34:1,39:1,42:1,44:1};_=dq.prototype=bq.prototype=new Tp;_.cT=function eq(a){return cq(this,Ve(a,40))};_.eQ=function fq(a){return Xe(a,40)&&Ve(a,40).a==this.a};_.hC=function gq(){return this.a};_.cM={34:1,37:1,40:1,41:1};_.a=0;var kq;_=rq.prototype=qq.prototype=pq.prototype=new hb;_.cM={34:1,42:1,44:1};_=tq.prototype=sq.prototype=new Vp;_.cM={34:1,42:1,44:1};_=vq.prototype=uq.prototype=new U;_.cM={34:1,43:1};_=String.prototype;_.cT=function Eq(a){return Dq(this,Ve(a,1))};_.eQ=function Fq(a){return xq(this,a)};_.hC=function Gq(){return Mq(this)};_.cM={1:1,34:1,36:1,37:1};var Hq,Iq=0,Jq;_=Qq.prototype=Oq.prototype=new U;_.cM={36:1};_=Tq.prototype=Sq.prototype=Rq.prototype=new hb;_.cM={34:1,42:1,44:1};_=Uq.prototype=new U;_.V=function Wq(a){throw new Tq(vA)};_.W=function Xq(a){var b,c;c=a.R();b=false;while(c.T()){this.V(c.U())&&(b=true)}return b};_.Y=function Yq(a){var b;b=Vq(this.R(),a);return !!b};_.eb=function Zq(){return this.fb(Le(kf,{34:1},0,this.cb(),0))};_.fb=function $q(a){var b,c,d;d=this.cb();a.length<d&&(a=Je(a,d));c=this.R();for(b=0;b<d;++b){Ne(a,b,c.U())}a.length>d&&Ne(a,d,null);return a};_=ar.prototype=new U;_.ib=function dr(a){return !!br(this,a)};_.eQ=function er(a){var b,c,d,e,f;if(a===this){return true}if(!Xe(a,48)){return false}e=Ve(a,48);if(this.cb()!=e.cb()){return false}for(c=e.jb().R();c.T();){b=Ve(c.U(),49);d=b.nb();f=b.ob();if(!this.ib(d)){return false}if(!Rv(f,this.kb(d))){return false}}return true};_.kb=function fr(a){var b;b=br(this,a);return !b?null:b.ob()};_.hC=function gr(){var a,b,c;c=0;for(b=this.jb().R();b.T();){a=Ve(b.U(),49);c+=a.hC();c=~~c}return c};_.lb=function hr(a,b){throw new Tq(wA)};_.cb=function ir(){return this.jb().cb()};_.cM={48:1};_=_q.prototype=new ar;_.ib=function zr(a){return mr(this,a)};_.jb=function Ar(){return new Kr(this)};_.mb=function Br(a,b){return $e(a)===$e(b)||a!=null&&ob(a,b)};_.kb=function Cr(a){return nr(this,a)};_.lb=function Dr(a,b){return sr(this,a,b)};_.cb=function Er(){return this.d};_.cM={48:1};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;_=Gr.prototype=new Uq;_.eQ=function Hr(a){var b,c,d;if(a===this){return true}if(!Xe(a,50)){return false}c=Ve(a,50);if(c.cb()!=this.cb()){return false}for(b=c.R();b.T();){d=b.U();if(!this.Y(d)){return false}}return true};_.hC=function Ir(){var a,b,c;a=0;for(b=this.R();b.T();){c=b.U();if(c!=null){a+=pb(c);a=~~a}}return a};_.cM={50:1};_=Kr.prototype=Fr.prototype=new Gr;_.Y=function Lr(a){return Jr(this,a)};_.R=function Mr(){return new Pr(this.a)};_.cb=function Nr(){return this.a.d};_.cM={50:1};_.a=null;_=Pr.prototype=Or.prototype=new U;_.T=function Qr(){return ts(this.a)};_.U=function Rr(){return Ve(us(this.a),49)};_.a=null;_=Tr.prototype=new U;_.eQ=function Ur(a){var b;if(Xe(a,49)){b=Ve(a,49);if(Rv(this.nb(),b.nb())&&Rv(this.ob(),b.ob())){return true}}return false};_.hC=function Vr(){var a,b;a=0;b=0;this.nb()!=null&&(a=pb(this.nb()));this.ob()!=null&&(b=pb(this.ob()));return a^b};_.cM={49:1};_=Wr.prototype=Sr.prototype=new Tr;_.nb=function Xr(){return null};_.ob=function Yr(){return this.a.b};_.pb=function Zr(a){return ur(this.a,a)};_.cM={49:1};_.a=null;_=_r.prototype=$r.prototype=new Tr;_.nb=function as(){return this.a};_.ob=function bs(){return pr(this.b,this.a)};_.pb=function cs(a){return vr(this.b,this.a,a)};_.cM={49:1};_.a=null;_.b=null;_=ds.prototype=new Uq;_.V=function es(a){this.qb(this.cb(),a);return true};_.qb=function fs(a,b){throw new Tq(xA)};_.X=function hs(){this.rb(0,this.cb())};_.eQ=function is(a){var b,c,d,e,f;if(a===this){return true}if(!Xe(a,47)){return false}f=Ve(a,47);if(this.cb()!=f.cb()){return false}d=new ws(this);e=f.R();while(d.b<d.d.cb()){b=us(d);c=e.U();if(!(b==null?c==null:ob(b,c))){return false}}return true};_.hC=function js(){var a,b,c;b=1;a=new ws(this);while(a.b<a.d.cb()){c=us(a);b=31*b+(c==null?0:pb(c));b=~~b}return b};_.$=function ks(a){var b,c;for(b=0,c=this.cb();b<c;++b){if(a==null?this.Z(b)==null:ob(a,this.Z(b))){return b}}return -1};_.R=function ms(){return new ws(this)};_._=function ns(){return new As(this,0)};_.ab=function os(a){return new As(this,a)};_.bb=function ps(a){throw new Tq(yA)};_.rb=function qs(a,b){var c,d;d=new As(this,a);for(c=a;c<b;++c){us(d);vs(d)}};_.db=function rs(a,b){return new Es(this,a,b)};_.cM={47:1};_=ws.prototype=ss.prototype=new U;_.T=function xs(){return ts(this)};_.U=function ys(){return us(this)};_.b=0;_.c=-1;_.d=null;_=As.prototype=zs.prototype=new ss;_.gb=function Bs(){return this.b>0};_.hb=function Cs(){if(this.b<=0){throw new Ju}return this.a.Z(this.c=--this.b)};_.a=null;_=Es.prototype=Ds.prototype=new ds;_.qb=function Fs(a,b){gs(a,this.b+1);++this.b;this.c.qb(this.a+a,b)};_.Z=function Gs(a){gs(a,this.b);return this.c.Z(this.a+a)};_.bb=function Hs(a){var b;gs(a,this.b);b=this.c.bb(this.a+a);--this.b;return b};_.cb=function Is(){return this.b};_.cM={47:1};_.a=0;_.b=0;_.c=null;_=Ls.prototype=Js.prototype=new Gr;_.Y=function Ms(a){return this.a.ib(a)};_.R=function Ns(){return Ks(this)};_.cb=function Os(){return this.b.cb()};_.cM={50:1};_.a=null;_.b=null;_=Rs.prototype=Ps.prototype=new U;_.T=function Ss(){return this.a.T()};_.U=function Ts(){return Qs(this)};_.a=null;_=et.prototype=dt.prototype=Us.prototype=new ds;_.V=function ft(a){return Ws(this,a)};_.qb=function gt(a,b){Xs(this,a,b)};_.W=function ht(a){return Ys(this,a)};_.X=function it(){Zs(this)};_.Y=function jt(a){return _s(this,a,0)!=-1};_.Z=function kt(a){return $s(this,a)};_.$=function lt(a){return _s(this,a,0)};_.bb=function mt(a){return at(this,a)};_.rb=function nt(a,b){var c;gs(a,this.b);(b<a||b>this.b)&&ls(b,this.b);c=b-a;pt(this.a,a,c);this.b-=c};_.cb=function ot(){return this.b};_.eb=function st(){return Ie(this.a,this.b)};_.fb=function tt(a){return ct(this,a)};_.cM={34:1,47:1};_.b=0;var ut;_=zt.prototype=yt.prototype=new ds;_.Y=function At(a){return false};_.Z=function Bt(a){throw new _p};_.cb=function Ct(){return 0};_.cM={34:1,47:1};_=Dt.prototype=new U;_.V=function Ft(a){throw new Sq};_.W=function Gt(a){throw new Sq};_.X=function Ht(){throw new Sq};_.Y=function It(a){return this.b.Y(a)};_.R=function Jt(){return new Ot(this.b.R())};_.cb=function Kt(){return this.b.cb()};_.eb=function Lt(){return this.b.eb()};_.fb=function Mt(a){return this.b.fb(a)};_.b=null;_=Ot.prototype=Nt.prototype=new U;_.T=function Pt(){return this.b.T()};_.U=function Qt(){return this.b.U()};_.b=null;_=St.prototype=Rt.prototype=new Dt;_.eQ=function Tt(a){return this.a.eQ(a)};_.Z=function Ut(a){return this.a.Z(a)};_.hC=function Vt(){return this.a.hC()};_.$=function Wt(a){return this.a.$(a)};_._=function Xt(){return new au(this.a.ab(0))};_.ab=function Yt(a){return new au(this.a.ab(a))};_.bb=function Zt(a){throw new Sq};_.db=function $t(a,b){return new St(this.a.db(a,b))};_.cM={47:1};_.a=null;_=au.prototype=_t.prototype=new Nt;_.gb=function bu(){return this.a.gb()};_.hb=function cu(){return this.a.hb()};_.a=null;_=eu.prototype=du.prototype=new Rt;_.cM={47:1};_=gu.prototype=fu.prototype=new Dt;_.eQ=function hu(a){return this.b.eQ(a)};_.hC=function iu(){return this.b.hC()};_.cM={50:1};_=lu.prototype=ju.prototype=new U;_.cT=function mu(a){return ku(this,Ve(a,46))};_.eQ=function nu(a){return Xe(a,46)&&Gf(Hf(this.a.getTime()),Hf(Ve(a,46).a.getTime()))};_.hC=function ou(){var a;a=Hf(this.a.getTime());return Qf(Sf(a,Of(a,32)))};_.cM={34:1,37:1,46:1};_.a=null;_=su.prototype=ru.prototype=pu.prototype=new _q;_.cM={34:1,48:1};_=yu.prototype=xu.prototype=tu.prototype=new Gr;_.V=function zu(a){return uu(this,a)};_.Y=function Au(a){return mr(this.a,a)};_.R=function Bu(){return Ks(cr(this.a))};_.cb=function Cu(){return this.a.d};_.cM={34:1,50:1};_.a=null;_=Eu.prototype=Du.prototype=new Tr;_.nb=function Fu(){return this.a};_.ob=function Gu(){return this.b};_.pb=function Hu(a){var b;b=this.b;this.b=a;return b};_.cM={49:1};_.a=null;_.b=null;_=Ju.prototype=Iu.prototype=new hb;_.cM={34:1,42:1,44:1};_=Qu.prototype=Ku.prototype=new ar;_.ib=function Ru(a){return !!Lu(this,a)};_.jb=function Su(){return new ev(this)};_.kb=function Tu(a){var b;b=Lu(this,a);return b?b.d:null};_.lb=function Uu(a,b){return Ou(this,a,b)};_.cb=function Vu(){return this.b};_.cM={34:1,48:1};_.a=null;_.b=0;_=_u.prototype=Yu.prototype=new U;_.T=function bv(){return ts(this.a)};_.U=function cv(){return Ve(us(this.a),49)};_.a=null;_=ev.prototype=dv.prototype=new Gr;_.Y=function fv(a){var b,c;if(!Xe(a,49)){return false}b=Ve(a,49);c=Lu(this.a,b.nb());return !!c&&Rv(c.d,b.ob())};_.R=function gv(){return new _u(this.a)};_.cb=function hv(){return this.a.b};_.cM={50:1};_.a=null;_=jv.prototype=iv.prototype=new U;_.eQ=function kv(a){var b;if(!Xe(a,51)){return false}b=Ve(a,51);return Rv(this.c,b.c)&&Rv(this.d,b.d)};_.nb=function lv(){return this.c};_.ob=function mv(){return this.d};_.hC=function nv(){var a,b;a=this.c!=null?pb(this.c):0;b=this.d!=null?pb(this.d):0;return a^b};_.pb=function ov(a){var b;b=this.d;this.d=a;return b};_.cM={49:1,51:1};_.a=null;_.b=false;_.c=null;_.d=null;_=qv.prototype=pv.prototype=new U;_.a=false;_.b=null;_=xv.prototype=rv.prototype=new Fc;_.sb=function yv(){return false};_.tb=function zv(){return false};_.cM={34:1,37:1,38:1,52:1};var sv,tv,uv,vv;_=Bv.prototype=Av.prototype=new rv;_.tb=function Cv(){return true};_.cM={34:1,37:1,38:1,52:1};_=Ev.prototype=Dv.prototype=new rv;_.sb=function Fv(){return true};_.tb=function Gv(){return true};_.cM={34:1,37:1,38:1,52:1};_=Iv.prototype=Hv.prototype=new rv;_.sb=function Jv(){return true};_.cM={34:1,37:1,38:1,52:1};_=Mv.prototype=Kv.prototype=new Gr;_.V=function Nv(a){return Lv(this,a)};_.Y=function Ov(a){return !!Lu(this.a,a)};_.R=function Pv(){return Ks(cr(this.a))};_.cb=function Qv(){return this.a.b};_.cM={34:1,50:1};_.a=null;var Uv=wb;var bf=new Qp,kf=new Qp,lf=new Qp,mf=new Qp,cf=new Qp,df=new Qp,ef=new Qp,ff=new Qp,hf=new Qp,gf=new Qp,nf=new Qp,jf=new Qp,of=new Qp,pf=new Qp;$stats && $stats({moduleName:'gwttodo',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (gwttodo && gwttodo.onScriptLoad)gwttodo.onScriptLoad(gwtOnLoad);})();
\ No newline at end of file
function gwttodo(){var L='',ec='\n-',sb='" for "gwt:onLoadErrorFn"',qb='" for "gwt:onPropertyErrorFn"',Tb='"<script src=\\"',eb='"><\/script>',V='#',dc=');',Xb='-\n',fc='-><\/scr',Ub='.cache.js\\"><\/scr" + "ipt>"',X='/',Kb='171663EC66CBE8FE7F0996BF7956E52B',Lb='1CAC86B44F6B27D12EAF64AAF8436B20',Mb='2BE730BB9138544318275E910F2291A9',Nb='899ECB4A54E551C44C16980D19C0A649',Qb=':',kb='::',Vb='<scr',db='<script id="',nb='=',W='?',Ob='A332DBFB2D1C19D956ABF64D582D9BBB',Pb='ADBEA39003F2D629A6F17A9FEE0ADA53',xb='ActiveXObject',pb='Bad handler "',yb='ChromeTab.ChromeFrame',Hb='Cross-site hosted mode not yet implemented. See issue ',Rb='DOMContentLoaded',fb='SCRIPT',cb='__gwt_marker_gwttodo',gb='base',$='baseUrl',P='begin',O='bootstrap',wb='chromeframe',Z='clear.cache.gif',mb='content',cc='document.write(',U='end',$b='evtGroup: "loadExternalRefs", millis:(new Date()).getTime(),',ac='evtGroup: "moduleStartup", millis:(new Date()).getTime(),',Eb='gecko',Fb='gecko1_8',Q='gwt.codesvr=',R='gwt.hosted=',S='gwt.hybrid',rb='gwt:onLoadErrorFn',ob='gwt:onPropertyErrorFn',lb='gwt:property',M='gwttodo',ab='gwttodo.nocache.js',jb='gwttodo::',Ib='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Db='ie6',Cb='ie8',Bb='ie9',Y='img',gc='ipt>',Wb='ipt><!-',Sb='loadExternalRefs',hb='meta',Zb='moduleName:"gwttodo", sessionId:window.__gwtStatsSessionId, subSystem:"startup",',T='moduleStartup',Ab='msie',ib='name',ub='opera',zb='safari',_='script',Jb='selectingPermutation',N='startup',_b='type: "end"});',bc='type: "moduleRequested"});',bb='undefined',Gb='unknown',tb='user.agent',vb='webkit',Yb='window.__gwtStatsEvent && window.__gwtStatsEvent({';var l=window,m=document,n=l.__gwtStatsEvent?function(a){return l.__gwtStatsEvent(a)}:null,o=l.__gwtStatsSessionId?l.__gwtStatsSessionId:null,p,q,r=L,s={},t=[],u=[],v=[],w=0,x,y;n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:P});if(!l.__gwt_stylesLoaded){l.__gwt_stylesLoaded={}}if(!l.__gwt_scriptsLoaded){l.__gwt_scriptsLoaded={}}function z(){var b=false;try{var c=l.location.search;return (c.indexOf(Q)!=-1||(c.indexOf(R)!=-1||l.external&&l.external.gwtOnLoad))&&c.indexOf(S)==-1}catch(a){}z=function(){return b};return b}
function A(){if(p&&q){p(x,M,r,w);n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:T,millis:(new Date).getTime(),type:U})}}
function B(){function e(a){var b=a.lastIndexOf(V);if(b==-1){b=a.length}var c=a.indexOf(W);if(c==-1){c=a.length}var d=a.lastIndexOf(X,Math.min(c,b));return d>=0?a.substring(0,d+1):L}
function f(a){if(a.match(/^\w+:\/\//)){}else{var b=m.createElement(Y);b.src=a+Z;a=e(b.src)}return a}
function g(){var a=D($);if(a!=null){return a}return L}
function h(){var a=m.getElementsByTagName(_);for(var b=0;b<a.length;++b){if(a[b].src.indexOf(ab)!=-1){return e(a[b].src)}}return L}
function i(){var a;if(typeof isBodyLoaded==bb||!isBodyLoaded()){var b=cb;var c;m.write(db+b+eb);c=m.getElementById(b);a=c&&c.previousSibling;while(a&&a.tagName!=fb){a=a.previousSibling}if(c){c.parentNode.removeChild(c)}if(a&&a.src){return e(a.src)}}return L}
function j(){var a=m.getElementsByTagName(gb);if(a.length>0){return a[a.length-1].href}return L}
var k=g();if(k==L){k=h()}if(k==L){k=i()}if(k==L){k=j()}if(k==L){k=e(m.location.href)}k=f(k);r=k;return k}
function C(){var b=document.getElementsByTagName(hb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(ib),g;if(f){f=f.replace(jb,L);if(f.indexOf(kb)>=0){continue}if(f==lb){g=e.getAttribute(mb);if(g){var h,i=g.indexOf(nb);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=L}s[f]=h}}else if(f==ob){g=e.getAttribute(mb);if(g){try{y=eval(g)}catch(a){alert(pb+g+qb)}}}else if(f==rb){g=e.getAttribute(mb);if(g){try{x=eval(g)}catch(a){alert(pb+g+sb)}}}}}}
function D(a){var b=s[a];return b==null?null:b}
function E(a,b){var c=v;for(var d=0,e=a.length-1;d<e;++d){c=c[a[d]]||(c[a[d]]=[])}c[a[e]]=b}
function F(a){var b=u[a](),c=t[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(y){y(a,d,b)}throw null}
u[tb]=function(){var c=navigator.userAgent.toLowerCase();var d=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return c.indexOf(ub)!=-1}())return ub;if(function(){return c.indexOf(vb)!=-1||function(){if(c.indexOf(wb)!=-1){return true}if(typeof window[xb]!=bb){try{var b=new ActiveXObject(yb);if(b){b.registerBhoIfNeeded();return true}}catch(a){}}return false}()}())return zb;if(function(){return c.indexOf(Ab)!=-1&&m.documentMode>=9}())return Bb;if(function(){return c.indexOf(Ab)!=-1&&m.documentMode>=8}())return Cb;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(a&&a.length==3)return d(a)>=6000}())return Db;if(function(){return c.indexOf(Eb)!=-1}())return Fb;return Gb};t[tb]={gecko1_8:0,ie6:1,ie8:2,ie9:3,opera:4,safari:5};gwttodo.onScriptLoad=function(a){gwttodo.onScriptLoad=null;p=a;A()};if(z()){alert(Hb+Ib);return}C();B();n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:Jb});var G;try{E([Bb],Kb);E([ub],Lb);E([Fb],Mb);E([Cb],Nb);E([zb],Ob);E([Db],Pb);G=v[F(tb)];var H=G.indexOf(Qb);if(H!=-1){w=Number(G.substring(H+1));G=G.substring(0,H)}}catch(a){return}var I;function J(){if(!q){q=true;A();if(m.removeEventListener){m.removeEventListener(Rb,J,false)}if(I){clearInterval(I)}}}
if(m.addEventListener){m.addEventListener(Rb,function(){J()},false)}var I=setInterval(function(){if(/loaded|complete/.test(m.readyState)){J()}},50);n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:U});n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:Sb,millis:(new Date).getTime(),type:P});var K=Tb+r+G+Ub;m.write(Vb+Wb+Xb+Yb+Zb+$b+_b+Yb+Zb+ac+bc+cc+K+dc+ec+fc+gc)}
gwttodo();
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link type="text/css" rel="stylesheet" href="../../assets/base.css">
<link type="text/css" rel="stylesheet" href="css/app.css">
<title>GWT • TodoMVC</title>
<script type="text/javascript" language="javascript" src="gwttodo/gwttodo.nocache.js"></script>
</head>
<body>
<noscript>
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
Your web browser must have JavaScript enabled in order for this application to display correctly.
</div>
</noscript>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='gwttodo'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.json.JSON'/>
<!-- Don't inherit any GWT styles - they're ugly! -->
<!-- <inherits name='com.google.gwt.user.theme.clean.Clean'/>-->
<!-- Other module inherits -->
<!-- Specify the app entry point class. -->
<entry-point class='com.todo.client.GwtToDo'/>
<!-- Specify the paths for translatable code -->
<source path='client'/>
<add-linker name="xs" />
</module>
package com.todo.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point class
*/
public class GwtToDo implements EntryPoint {
@Override
public void onModuleLoad() {
ToDoView toDoView = new ToDoView();
new ToDoPresenter(toDoView);
RootPanel.get().add(toDoView);
}
}
package com.todo.client;
import com.google.gwt.user.client.ui.TextBox;
public class TextBoxWithPlaceholder extends TextBox {
/**
* Sets the placeholder for this textbox
*
* @param value the placeholder value
*/
public void setPlaceholder(String value) {
getElement().setAttribute("placeholder", value);
}
/**
* Gets the placeholder for this textbox
*
* @return the placeholder
*/
public String getPlaceholder() {
return getElement().getAttribute("placeholder");
}
}
package com.todo.client;
import java.util.Date;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
/**
* A cell that renders {@link ToDoItem} instances. This cell is rendered in both view and edit modes
* based on user interaction. In edit mode, browser events are handled in order to update the model
* item state.
*
* @author ceberhardt
*
*/
public class ToDoCell extends AbstractCell<ToDoItem> {
/**
* The HTML templates used to render the cell.
*/
interface Templates extends SafeHtmlTemplates {
/**
* The view-mode template
*/
@SafeHtmlTemplates.Template("<div class='{2}' data-timestamp='{3}'>" + "{0} "
+ "<label>{1}</label>" + "<button class='destroy'></a>" + "</div>")
SafeHtml view(SafeHtml checked, SafeHtml task, String done, String timestamp);
/**
* A template the renders a checked input
*/
@SafeHtmlTemplates.Template("<input class='toggle' type='checkbox' checked>")
SafeHtml inputChecked();
/**
* A template the renders an un-checked input
*/
@SafeHtmlTemplates.Template("<input class='toggle' type='checkbox'>")
SafeHtml inputClear();
/**
* The edit-mode template
*/
@SafeHtmlTemplates.Template("<div class='listItem editing'><input class='edit' value='{0}' type='text'></div>")
SafeHtml edit(String task);
}
private static Templates templates = GWT.create(Templates.class);
/**
* The item that is currently being edited
*/
private ToDoItem editingItem = null;
/**
* A flag that indicates that we are starting to edit the cell
*/
private boolean beginningEdit = false;
public ToDoCell() {
super("click", "keyup", "blur", "dblclick");
}
@Override
public void render(Context context, ToDoItem value, SafeHtmlBuilder sb) {
// render the cell in edit or view mode
if (isEditing(value)) {
SafeHtml rendered = templates.edit(value.getTitle());
sb.append(rendered);
} else {
SafeHtml rendered =
templates.view(value.isDone() ? templates.inputChecked() : templates.inputClear(),
SafeHtmlUtils.fromString(value.getTitle()), value.isDone() ? "listItem view done"
: "listItem view",
// NOTE: The addition of a timestamp here is a bit of a HACK! The problem
// is that the CellList uses a HasDataPresenter for rendering. This class
// caches the more recent rendered contents for each cell, skipping a render
// if it looks like the cell hasn't changed. However, this fails for editable cells
// that are able to change the DOM representation directly. This hack simply
// ensures that the presenter always renders the cell.
Long.toString(new Date().getTime()));
sb.append(rendered);
}
}
@Override
public boolean isEditing(Context context, Element parent, ToDoItem value) {
return isEditing(value);
}
@Override
public void onBrowserEvent(Context context, Element parent, ToDoItem value, NativeEvent event,
ValueUpdater<ToDoItem> valueUpdater) {
String type = event.getType();
if (isEditing(value)) {
// handle keyup events
if ("keyup".equals(type)) {
int keyCode = event.getKeyCode();
// handle enter key to commit the edit
if (keyCode == KeyCodes.KEY_ENTER) {
commitEdit(parent, value);
endEdit(context, parent, value);
}
// handle escape key to cancel the edit
if (keyCode == KeyCodes.KEY_ESCAPE) {
endEdit(context, parent, value);
}
}
// handle blur event
if ("blur".equals(type) && !beginningEdit) {
commitEdit(parent, value);
endEdit(context, parent, value);
}
} else {
// handle double clicks to enter edit more
if ("dblclick".equals(type)) {
beginEdit(context, parent, value);
beginningEdit = true;
InputElement input = getInputElement(parent);
input.focus();
input.select();
beginningEdit = false;
}
// when not in edit mode - handle click events on the cell
if ("click".equals(type)) {
EventTarget eventTarget = event.getEventTarget();
Element clickedElement = Element.as(eventTarget);
String tagName = clickedElement.getTagName();
// check whether the checkbox was clicked
if (tagName.equals("INPUT")) {
// if so, synchronise the model state
InputElement input = clickedElement.cast();
value.setDone(input.isChecked());
// update the 'row' style
if (input.isChecked()) {
getViewRootElement(parent).addClassName("done");
} else {
getViewRootElement(parent).removeClassName("done");
}
} else if (tagName.equals("BUTTON")) {
// if the delete anchor was clicked - delete the item
value.delete();
}
}
}
}
/**
* Commits the changes in text value to the ToDoItem
*/
private void commitEdit(Element parent, ToDoItem value) {
InputElement input = getInputElement(parent);
value.setTitle(input.getValue());
}
/**
* Begins editing the given item, rendering the cell in edit mode
*/
private void beginEdit(Context context, Element parent, ToDoItem value) {
editingItem = value;
renderCell(context, parent, value);
}
/**
* Ends editing the given item, rendering the cell in view mode
*/
private void endEdit(Context context, Element parent, ToDoItem value) {
editingItem = null;
renderCell(context, parent, value);
}
/**
* Renders the cell, replacing the contents of the parent with the newly rendered content.
*/
private void renderCell(Context context, Element parent, ToDoItem value) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
render(context, value, sb);
parent.setInnerHTML(sb.toSafeHtml().asString());
}
/**
* Gets whether the given item is being edited.
*/
private boolean isEditing(ToDoItem item) {
return editingItem == item;
}
/**
* Get the input element in edit mode.
*/
private InputElement getInputElement(Element parent) {
return parent.getFirstChild().getFirstChild().<InputElement> cast();
}
/**
* Gets the root DIV element of the view mode template.
*/
private DivElement getViewRootElement(Element parent) {
return parent.getFirstChild().<DivElement> cast();
}
}
package com.todo.client;
/**
* An individual ToDo item.
*
* @author ceberhardt
*
*/
public class ToDoItem {
private final ToDoPresenter presenter;
private String title;
private boolean done;
public ToDoItem(String text, ToDoPresenter presenter) {
this.title = text;
this.done = false;
this.presenter = presenter;
}
public ToDoItem(String title, boolean done, ToDoPresenter presenter) {
this.title = title;
this.done = done;
this.presenter = presenter;
}
public boolean isDone() {
return done;
}
public void setDone(boolean done) {
this.done = done;
presenter.itemStateChanged(this);
}
public void delete() {
presenter.deleteTask(this);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
presenter.itemStateChanged(this);
}
}
package com.todo.client;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.storage.client.Storage;
import com.google.gwt.view.client.AbstractDataProvider;
import com.google.gwt.view.client.ListDataProvider;
/**
* The presenter for the ToDo application. This class is responsible for the lifecycle of the
* {@link ToDoItem} instances.
*
* @author ceberhardt
*
*/
public class ToDoPresenter {
private static final String STORAGE_KEY = "todo-gwt";
/**
* The interface that a view for this presenter must implement.
*/
public interface View {
/**
* Gets the text that the user has input for the creation of new tasks.
*/
String getTaskText();
/**
* Clears the user input field where new tasks are added.
*/
void clearTaskText();
/**
* Sets the current task statistics.
*/
void setTaskStatistics(int totalTasks, int completedTasks);
/**
* Sets the data provider that acts as a source of {@link ToDoItem} instances.
*/
void setDataProvider(AbstractDataProvider<ToDoItem> data);
/**
* Adds the handler to the events raised by the view.
*/
void addhandler(ViewEventHandler handler);
}
/**
* The interface that handles interactions from the view.
*
*/
public interface ViewEventHandler {
/**
* Invoked when a user adds a new task.
*/
void addTask();
/**
* Invoked when a user wishes to clear completed tasks.
*/
void clearCompletedTasks();
/**
* Sets the completed state of all tasks to the given state
*/
void markAllCompleted(boolean completed);
}
/**
* Handler for view events, defers to private presenter methods.
*/
private final ViewEventHandler viewHandler = new ViewEventHandler() {
@Override
public void addTask() {
ToDoPresenter.this.addTask();
}
@Override
public void clearCompletedTasks() {
ToDoPresenter.this.clearCompletedTasks();
}
@Override
public void markAllCompleted(boolean completed) {
ToDoPresenter.this.markAllCompleted(completed);
}
};
private final ListDataProvider<ToDoItem> todos = new ListDataProvider<ToDoItem>();
private final View view;
private boolean suppressStateChanged = false;
public ToDoPresenter(View view) {
this.view = view;
loadState();
view.addhandler(viewHandler);
view.setDataProvider(todos);
updateTaskStatistics();
}
/**
* Computes the tasks statistics and updates the view.
*/
private void updateTaskStatistics() {
int totalTasks = todos.getList().size();
int completeTask = 0;
for (ToDoItem task : todos.getList()) {
if (task.isDone()) {
completeTask++;
}
}
view.setTaskStatistics(totalTasks, completeTask);
}
/**
* Deletes the given task and updates statistics.
*/
protected void deleteTask(ToDoItem toDoItem) {
todos.getList().remove(toDoItem);
updateTaskStatistics();
saveState();
}
/**
* Invoked by a task when its state changes so that we can update the view statistics and persist.
*/
protected void itemStateChanged(ToDoItem toDoItem) {
if (suppressStateChanged) {
return;
}
// if the item has become empty, remove it
if (toDoItem.getTitle().trim().equals("")) {
todos.getList().remove(toDoItem);
}
updateTaskStatistics();
saveState();
}
/**
* Sets the completed state of all tasks
*/
private void markAllCompleted(boolean completed) {
// update the completed state of each item
suppressStateChanged = true;
for (ToDoItem task : todos.getList()) {
task.setDone(completed);
}
suppressStateChanged = false;
// cause the view to refresh the whole list - yes, this is a bit ugly!
List<ToDoItem> items = new ArrayList<ToDoItem>(todos.getList());
todos.getList().clear();
todos.getList().addAll(items);
updateTaskStatistics();
saveState();
}
/**
* Adds a new task based on the user input field
*/
private void addTask() {
String taskTitle = view.getTaskText().trim();
// if white-space only, do not add a todo
if (taskTitle.equals(""))
return;
ToDoItem toDoItem = new ToDoItem(taskTitle, this);
view.clearTaskText();
todos.getList().add(toDoItem);
updateTaskStatistics();
saveState();
}
/**
* Clears completed tasks and updates the view.
*/
private void clearCompletedTasks() {
Iterator<ToDoItem> iterator = todos.getList().iterator();
while (iterator.hasNext()) {
ToDoItem item = iterator.next();
if (item.isDone()) {
iterator.remove();
}
}
updateTaskStatistics();
saveState();
}
/**
* Saves the current to-do items to local storage
*/
private void saveState() {
Storage storage = Storage.getLocalStorageIfSupported();
if (storage != null) {
// JSON encode the items
JSONArray todoItems = new JSONArray();
for (int i = 0; i < todos.getList().size(); i++) {
ToDoItem toDoItem = todos.getList().get(i);
JSONObject jsonObject = new JSONObject();
jsonObject.put("task", new JSONString(toDoItem.getTitle()));
jsonObject.put("complete", JSONBoolean.getInstance(toDoItem.isDone()));
todoItems.set(i, jsonObject);
}
// save to local storage
storage.setItem(STORAGE_KEY, todoItems.toString());
}
}
private void loadState() {
Storage storage = Storage.getLocalStorageIfSupported();
if (storage != null) {
try {
// get state
String state = storage.getItem(STORAGE_KEY);
// parse the JSON array
JSONArray todoItems = JSONParser.parseStrict(state).isArray();
for (int i = 0; i < todoItems.size(); i++) {
// extract the to-do item values
JSONObject jsonObject = todoItems.get(i).isObject();
String task = jsonObject.get("task").isString().stringValue();
boolean completed = jsonObject.get("complete").isBoolean().booleanValue();
// add a new item to our list
todos.getList().add(new ToDoItem(task, completed, this));
}
} catch (Exception e) {
}
}
}
}
package com.todo.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.AbstractDataProvider;
import com.todo.client.ToDoPresenter.ViewEventHandler;
/**
* A view for the {@link ToDoPresenter}
*
*/
public class ToDoView extends Composite implements ToDoPresenter.View {
private static ToDoViewUiBinder uiBinder = GWT.create(ToDoViewUiBinder.class);
interface ToDoViewUiBinder extends UiBinder<Widget, ToDoView> {
}
@UiField
TextBoxWithPlaceholder taskText;
@UiField
Element remainingTasksCount;
@UiField
SpanElement remainingTasksLabel;
@UiField
Element mainSection;
@UiField
Element todoStatsContainer;
@UiField
SpanElement clearTasksCount;
@UiField
Button clearCompleted;
@UiField
InputElement toggleAll;
@UiField(provided = true)
CellList<ToDoItem> todoTable = new CellList<ToDoItem>(new ToDoCell());
public ToDoView() {
initWidget(uiBinder.createAndBindUi(this));
// removes the yellow highlight
todoTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
// add IDs to the elements that have ui:field attributes. This is required because the UiBinder
// does not permit the addition of ID attributes to elements marked with ui:field.
// *SIGH*
mainSection.setId("main");
clearCompleted.getElement().setId("clear-completed");
taskText.getElement().setId("new-todo");
todoStatsContainer.setId("footer");
toggleAll.setId("toggle-all");
}
@Override
public String getTaskText() {
return taskText.getText();
}
@Override
public void addhandler(final ViewEventHandler handler) {
// wire-up the events from the UI to the presenter.
// The TodoMVC project template has a markup / style that is not compatible with the markup
// generated by the GWT CheckBox control. For this reason, here we are using an InputElement
// directly. As a result, we handle low-level DOM events rather than the GWT higher level
// abstractions, e.g. ClickHandlers. A typical GWT application would not do this, however,
// this nicely illustrates how you can develop GWT applications
// that program directly against the DOM.
final com.google.gwt.user.client.Element clientToggleElement = toggleAll.cast();
DOM.sinkEvents(clientToggleElement, Event.ONCLICK);
DOM.setEventListener(clientToggleElement, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
handler.markAllCompleted(toggleAll.isChecked());
}
});
taskText.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
handler.addTask();
}
}
});
clearCompleted.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
handler.clearCompletedTasks();
}
});
}
@Override
public void setDataProvider(AbstractDataProvider<ToDoItem> data) {
data.addDataDisplay(todoTable);
}
@Override
public void clearTaskText() {
taskText.setText("");
}
@Override
public void setTaskStatistics(int totalTasks, int completedTasks) {
int remainingTasks = totalTasks - completedTasks;
hideElement(mainSection, totalTasks == 0);
hideElement(todoStatsContainer, totalTasks == 0);
hideElement(clearCompleted.getElement(), completedTasks == 0);
remainingTasksCount.setInnerText(Integer.toString(remainingTasks));
remainingTasksLabel.setInnerText(remainingTasks > 1 || remainingTasks == 0 ? "items" : "item");
clearTasksCount.setInnerHTML(Integer.toString(completedTasks));
toggleAll.setChecked(totalTasks == completedTasks);
}
private void hideElement(Element element, boolean hide) {
if (hide) {
element.setAttribute("style", "display:none;");
} else {
element.setAttribute("style", "display:block;");
}
}
}
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:cv="urn:import:com.google.gwt.user.cellview.client"
xmlns:todo="urn:import:com.todo.client">
<g:HTMLPanel>
<section id="todoapp">
<header id="header">
<h1>todos</h1>
<todo:TextBoxWithPlaceholder
placeholder="What needs to be done?" ui:field="taskText">
</todo:TextBoxWithPlaceholder>
</header>
<section ui:field="mainSection">
<input ui:field="toggleAll" type="checkbox"></input>
<label for="toggle-all">Mark all as complete</label>
<div id="todo-list">
<cv:CellList ui:field="todoTable"></cv:CellList>
</div>
</section>
<footer ui:field="todoStatsContainer">
<span id="todo-count">
<strong class="number" ui:field="remainingTasksCount"></strong>
<span class="word" ui:field="remainingTasksLabel"></span>
left.
</span>
<g:Button ui:field="clearCompleted">
Clear completed (<span class="number-done" ui:field="clearTasksCount"></span>)
</g:Button>
</footer>
</section>
<footer id="info">
<p>Double-click to edit a todo</p>
<p>Template by <a href="http://sindresorhus.com">Sindre Sorhus</a></p>
<p>Created by <a href="http://www.scottlogic.co.uk/blog/colin/">Colin Eberhardt</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer>
</g:HTMLPanel>
</ui:UiBinder>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment