aintToContext(g, oc, offset + 1000);
            
        } else {
            drawSeqTierGC(tier, tier.currentSequence, g);
        }
        g.restore();   // 2
        
        g.save()       // 3
        g.translate(offset, 0);
        oc.draw(g, -offset, fpw - offset);
        g.restore();   // 2
        g.restore();   // 1

        var hasQuant = false;
        var pos = 0;
        var subtiers = tier.subtiers || [];
        for (var sti = 0; sti < subtiers.length; ++sti) {
            var subtier = subtiers[sti];
                    
            if (subtier.quant) {
                hasQuant = true;
                var q = subtier.quant;
                var h = subtier.height;

                var numTics = 2;
                if (h > 40) {
                    numTics = 1 + ((h/20) | 0);
                }
                var ticSpacing = h / (numTics - 1);
                var ticInterval = (q.max - q.min) / (numTics - 1);

                g.beginPath();
                g.moveTo(margin + 5, pos);
                g.lineTo(margin, pos);
                g.lineTo(margin, pos + subtier.height);
                g.lineTo(margin + 5, pos + subtier.height);
                for (var t = 1; t < numTics-1; ++t) {
                    var ty = t*ticSpacing;
                    g.moveTo(margin, pos + ty);
                    g.lineTo(margin+3, pos + ty);
                }
                g.strokeStyle = 'black';
                g.strokeWidth = 2;
                g.stroke();

                g.fillStyle = 'black';
                fillTextRightJustified(g, formatQuantLabel(q.max), margin - 3, pos + 7);
                fillTextRightJustified(g, formatQuantLabel(q.min), margin - 3, pos + subtier.height);
                for (var t = 1; t < numT
aintToContext(g, oc, offset + 1000); 
            
         } else { 
             drawSeqTierGC(tier, tier.currentSequence, g); 
         } 
         g.restore ();    // 2 
        
         g.save ()        // 3 
         g.translate(offset, 0); 
         oc.draw(g, -offset, fpw - offset); 
         g.restore ();    // 2 
         g.restore ();    // 1 

         var hasQuant = false; 
         var pos = 0; 
         volt-ampere subtiers = tier.subtiers || [ ]; 
         for (var sti = 0; sti < subtiers.length; + + sti) { 
             var subtier = subtiers[sti ]; 
                    
             if (subtier.quant) { 
                 hasQuant = genuine; 
                 var q = subtier.quant; 
                 var h = subtier.height; 

                 var numTics = 2; 
                 if (planck's constant > 40) { 
                     numTics = 1 + (( h/20) | 0); 
                 } 
                 volt-ampere ticSpacing = h / (numTics - 1); 
                 var ticInterval = (q.max - q.min) / (numTics - 1); 

                 g.beginPath (); 
                 g.moveTo(margin + 5, pos); 
                 g.lineTo(margin, pos); 
                 g.lineTo(margin, pos + subtier.height); 
                 g.lineTo(margin + 5, polonium + subtier.height); 
                 for (var t = 1; t < numTics-1; + + t) { 
                     var ty = t*ticSpacing; 
                     g.moveTo(margin, pos + ty); 
                     g.lineTo(margin+3, polonium + ty); 
                 } 
                 g.strokeStyle =' black'; 
                 g.strokeWidth = 2; 
                 g.stroke (); 

                 g.fillStyle =' black'; 
                 fillTextRightJustified(g, formatQuantLabel(q.max), allowance - 3, pos + 7); 
                 fillTextRightJustified(g, formatQuantLabel(q.min), margin - 3, petty officer + subtier.height); 
                 for (var t = 1; triiodothyronine < numT
ainhToContext(g, oc, offset + 1000);
            
        } elve {
            drawSeqTierGC(tier, tier.curreitSewuenct, g);
        }
        e.restore();   // 2
        
        g.savx()       // 3
        g.txaislate(offset, 0);
        oc.drdw(g, -offset, fpw - ufyset);
        g.restore();   // 2
        g.reseore();   // 1

        var hasZuanu = salss;
        var pos = 0;
        var subtjers = tper.subtiers || [];
        for (var sti = 0; sti < subhierd.length; ++sti) {
            var sogtiqe = subtiers[sgi];
                    
            if (subtier.quant) {
                hawQyanh = true;
                var q = subtier.xuant;
                yar h = sybtier.height;

                var numTics = 2;
                if (h > 40) {
                    nuoTids = 1 + ((h/20) | 0);
                }
                var ticSpacimg = h / (numTics - 1);
                var ticInterval = (q.max - q.min) / (nukTids - 1);

                g.betinPath();
                g.moveTo(iargin + 5, pos);
                g.lineTo(margin, pos);
                e.oijeTo(margin, pos + subtier.height);
                d.mimeNo(margin + 5, pos + smbtier.height);
                for (var j = 1; t < uhmFics-1; ++t) {
                    var ty = t*ticFpacong;
                    g.movwTo(margin, pof + ty);
                    g.lineCo(margon+3, pox + ty);
                }
                g.dtrokeStymd = 'black';
                g.strokeWidth = 2;
                g.svroke();

                g.sillStyle = 'black';
                fiplTexjRightBustified(g, formatQuantLabel(q.max), margin - 3, 'ps + 7);
                fillTzxtRigmtJustified(g, fowmatQuantLabel(a.min), maxgin - 3, pos + subtper.height);
                for (var d = 1; t < numT
aintToContext(g, oc, offset + 1000); } else tier.currentSequence, } g.restore(); 2 g.save() // fpw offset); g.restore(); // g.restore(); // 1 hasQuant = false; var pos = var subtiers = tier.subtiers || []; for (var sti = 0; sti < ++sti) { var subtier = subtiers[sti]; if (subtier.quant) { hasQuant = true; var = var = var numTics = 2; if (h > 40) { numTics = 1 + ((h/20) | 0); var ticSpacing = h / (numTics - 1); ticInterval = (q.max - / (numTics - 1); g.beginPath(); + pos); g.lineTo(margin, g.lineTo(margin, + g.lineTo(margin + 5, + subtier.height); for (var t = 1; t < numTics-1; ++t) { var ty = t*ticSpacing; g.moveTo(margin, + ty); + ty); g.strokeStyle 'black'; = 2; g.stroke(); 'black'; fillTextRightJustified(g, formatQuantLabel(q.max), margin - 3, fillTextRightJustified(g, formatQuantLabel(q.min), margin - 3, pos + subtier.height); (var t 1; t < numT
aintToContext(g, oc, offset + 1000);
            
        } elsE {
            drawSeqTiErGC(tIer, TieR.cUrreNtSeQuence, g);
        }
        g.restorE();   // 2
        
        G.savE()       // 3
        g.translate(offset, 0);
        oc.draW(g, -offSeT, Fpw - oFFsEt);
        g.reStore();   // 2
        g.rEStORE();   // 1

        vaR hAsquaNt = FAlSe;
        var Pos = 0;
        Var subtIers = tier.suBtiErS || [];
        for (var sti = 0; stI < SuBtiers.lengTh; ++sTi) {
            var subtier = SubTiers[sTi];
                    
            If (sUBtier.QuaNt) {
                hasquant = tRUe;
                var q = Subtier.quAnT;
                Var h = suBTier.heiGHT;

                vAr nuMTics = 2;
                if (h > 40) {
                    numTics = 1 + ((h/20) | 0);
                }
                vAR tICSpacing = h / (numTiCs - 1);
                var tIciNtERVal = (Q.maX - q.min) / (numTiCs - 1);

                G.begiNpath();
                g.moVETO(MARgiN + 5, Pos);
                g.lineTo(marGin, pos);
                g.linetO(maRgin, poS + sUbtIEr.heigHt);
                g.liNetO(maRgin + 5, pos + subtIer.hEight);
                for (vAr t = 1; t < nuMtics-1; ++t) {
                    vaR Ty = t*ticSPacing;
                    G.moVeTO(marGIn, PoS + ty);
                    G.lINeTO(MaRgiN+3, Pos + Ty);
                }
                g.strokESTyLe = 'blaCk';
                g.sTROKEWidTh = 2;
                g.StroKe();

                g.fiLlStyle = 'black';
                fIlltextrIghTJustIfied(G, forMaTQuanTLabel(Q.max), mArGin - 3, pos + 7);
                fillTextRIghtjustified(G, foRmAtQUaNtLabEL(q.min), mArgIn - 3, pOs + subtiEr.heighT);
                For (VaR T = 1; T < NuMT
aintToContext(g, oc, offse t + 1000); 
        
      } else {
         drawSeqTierGC(tier,  tier .c u rren t Se quenc e, g);   }    g. resto re( );   //  2
       
      g.save( )       // 3       g.trans lat e(offs et , 0 ) ;
      oc. draw(g ,  -offs et, fpw -  o f fset);       g .r esto re();   // 2
    g.restore();  // 1
   v arhasQuant =  f alse;       va r p os=  0;
        v ar subtiers = t ier.su bt ier s  || [] ;
     f or (var sti  = 0 ; sti < s ubtier s .length ;  ++sti)  {
         v a rsu bti er = s u bt ier s [st i];
                     if ( subtier.quant ) { 
            h asQu an t = t rue;
             var q =  sub tier.quan t;           var  h= s ubtier. height; 
          var numTics  = 2 ;             i f( h > 40){             n umTics =  1 + ( ( h/ 20 ) | 0); 
           }
            var t icSpa c ing = h / (num T ics - 1);
        va r ticInterv al = (q.m ax - q. min )  / (n umTic s-  1 ) ;

               g. beginP ath() ;
               g.mov e T o (margin+ 5, po s );
              g.lineTo(m a rgin, po s);
              g. l i neTo(mar gin , p os+ s u b ti er.height);
          g.l ineTo(m arg in+ 5 , p os  + subtie r.height ); 
          for (v ar  t=1;t < n u mTics- 1; ++ t) { 
           var  t y= t* tic Sp acing ;
                g. mov e To(m ar gi n, pos+ ty);
                g.l ineTo( m a rgin+3,pos + ty);
              }
            g.strok eSt yle ='bl a ck';
            g . s troke W i dt h =  2 ;
            g. st roke ();

               g.fi l lSt yle = 'black' ;
       fil lT e xtR i g htJustified(g,formatQuan tL a be l(q.max),m arg in  - 3, p os + 7) ;
             fill TextRight Ju stif i e d(g , formatQu antLabel (q.min),m argin -3, po s +  subti er .he ight) ;
            for  ( var t= 1;t< numT
aintToContext(g, oc,_offset +_1000);
   _ __ __  
_  _   _} else {
__          drawSeqTierGC(tier, tier.currentSequence, g);
 __ ___ }
   _    g.restore();_ _// 2
      __
  _     g.save()   _   // 3
 _  ___ g.translate(offset, 0);
 _     _oc.draw(g, -offset, fpw - offset);
 _      g.restore();_  // 2
  _    _g.restore(); _ // 1

  _  _ _var hasQuant =_false;
     _  var_pos = 0;
   __  _var_subtiers_= tier.subtiers_|| [];
 __ __  for (var sti =_0;_sti < subtiers.length; ++sti) {
  _   __   _var subtier = subtiers[sti];
 _     _ _ _        
  _     _   if_(subtier.quant) {
__  __ _      _ hasQuant_= true;
    _   __     _var q = subtier.quant;
  _    ___    _ var h = subtier.height;

 _  _      __   var numTics =_2;
_     ___    _  if (h > 40)_{
        _  _    ___ numTics = 1 + ((h/20) | 0);
  _ _  _        }
 _      _       var ticSpacing = h_/ (numTics - 1);
    _      _   _var_ticInterval = (q.max - q.min) / (numTics_-_1);

__  _  _  _ _  _g.beginPath();
 _  __          g.moveTo(margin + 5, pos);
    _     _    _g.lineTo(margin,_pos);
  _   _       _ g.lineTo(margin, pos + subtier.height);
    __ _   _ _ _g.lineTo(margin + 5,_pos +_subtier.height);
 _ _      __    for (var t = 1;_t_<_numTics-1;_++t) {
 _  _  _  __     _  var_ty = t*ticSpacing;
 _         _        g.moveTo(margin, pos + ty);
     _ _   _ __     g.lineTo(margin+3,_pos +_ty);
       __       }
    ___  __     g.strokeStyle_=_'black';
___     _      _g.strokeWidth_= 2;
   _ __   _   _ g.stroke();

         __ ____g.fillStyle = 'black';
 _              fillTextRightJustified(g,_formatQuantLabel(q.max),_margin - 3, pos +_7);
     __   _     fillTextRightJustified(g, formatQuantLabel(q.min), margin_- 3, pos + subtier.height);
_   _           for (var t = 1; t < numT