2016-09-01 00:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								// This file is used for internal testing with Karma only, it should not be used in real applications.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 10:02:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// function.name (all IE)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source http://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! Object . hasOwnProperty ( 'name' ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  Object . defineProperty ( Function . prototype ,  'name' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    get :  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-07 16:20:00 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								      var  matches  =  this . toString ( ) . match ( /^\s*function\s*((?![0-9])[a-zA-Z0-9_$]*)\s*\(/ ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-08 12:38:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								      var  name  =  matches  &&  matches . length  >  1  ?  matches [ 1 ]  :  "" ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 10:02:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // For better performance only parse once, and then cache the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // result through a new accessor for repeated access.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  'name' ,  { value :  name } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// URL polyfill for SystemJS (all IE)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source https://github.com/ModuleLoader/es6-module-loader/blob/master/src/url-polyfill.js*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// from https://gist.github.com/Yaffle/1088850
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								( function ( global )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  URLPolyfill ( url ,  baseURL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( typeof  url  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      throw  new  TypeError ( 'URL must be a string' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  m  =  String ( url ) . replace ( /^\s+|\s+$/g ,  "" ) . match ( /^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( ! m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      throw  new  RangeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  protocol  =  m [ 1 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  username  =  m [ 2 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  password  =  m [ 3 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  host  =  m [ 4 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  hostname  =  m [ 5 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  port  =  m [ 6 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  pathname  =  m [ 7 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  search  =  m [ 8 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  hash  =  m [ 9 ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( baseURL  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  base  =  baseURL  instanceof  URLPolyfill  ?  baseURL  :  new  URLPolyfill ( baseURL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  flag  =  protocol  ===  ""  &&  host  ===  ""  &&  username  ===  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( flag  &&  pathname  ===  ""  &&  search  ===  "" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        search  =  base . search ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( flag  &&  pathname . charAt ( 0 )  !==  "/" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        pathname  =  ( pathname  !==  ""  ?  ( ( ( base . host  !==  ""  ||  base . username  !==  "" )  &&  base . pathname  ===  ""  ?  "/"  :  "" )  +  base . pathname . slice ( 0 ,  base . pathname . lastIndexOf ( "/" )  +  1 )  +  pathname )  :  base . pathname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // dot segments removal
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  output  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      pathname . replace ( /^(\.\.?(\/|$))+/ ,  "" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        . replace ( /\/(\.(\/|$))+/g ,  "/" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        . replace ( /\/\.\.$/ ,  "/../" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        . replace ( /\/?[^\/]*/g ,  function  ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( p  ===  "/.." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            output . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            output . push ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      pathname  =  output . join ( "" ) . replace ( /^\// ,  pathname . charAt ( 0 )  ===  "/"  ?  "/"  :  "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( flag )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        port  =  base . port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        hostname  =  base . hostname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        host  =  base . host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        password  =  base . password ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        username  =  base . username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( protocol  ===  "" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        protocol  =  base . protocol ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // convert windows file URLs to use /
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( protocol  ==  'file:' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      pathname  =  pathname . replace ( /\\/g ,  '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . origin  =  protocol  +  ( protocol  !==  ""  ||  host  !==  ""  ?  "//"  :  "" )  +  host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . href  =  protocol  +  ( protocol  !==  ""  ||  host  !==  ""  ?  "//"  :  "" )  +  ( username  !==  ""  ?  username  +  ( password  !==  ""  ?  ":"  +  password  :  "" )  +  "@"  :  "" )  +  host  +  pathname  +  search  +  hash ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . protocol  =  protocol ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . username  =  username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . password  =  password ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . host  =  host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . hostname  =  hostname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . port  =  port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . pathname  =  pathname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . search  =  search ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . hash  =  hash ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								global . URLPolyfill  =  URLPolyfill ;  
						 
					
						
							
								
									
										
										
										
											2015-08-20 14:34:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								} ) ( typeof  self  !=  'undefined'  ?  self  :  global ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//classList (IE9)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @license please refer to http://unlicense.org/ */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @author Eli Grey */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source https://github.com/eligrey/classList.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								; if ( "document"  in  self && ! ( "classList"  in  document . createElement ( "_" ) ) ) { ( function ( j ) { "use strict" ; if ( ! ( "Element"  in  j ) ) { return } var  a = "classList" , f = "prototype" , m = j . Element [ f ] , b = Object , k = String [ f ] . trim || function ( ) { return  this . replace ( /^\s+|\s+$/g , "" ) } , c = Array [ f ] . indexOf || function ( q ) { var  p = 0 , o = this . length ; for ( ; p < o ; p ++ ) { if ( p  in  this && this [ p ] === q ) { return  p } } return  - 1 } , n = function ( o , p ) { this . name = o ; this . code = DOMException [ o ] ; this . message = p } , g = function ( p , o ) { if ( o === "" ) { throw  new  n ( "SYNTAX_ERR" , "An invalid or illegal string was specified" ) } if ( /\s/ . test ( o ) ) { throw  new  n ( "INVALID_CHARACTER_ERR" , "String contains an invalid character" ) } return  c . call ( p , o ) } , d = function ( s ) { var  r = k . call ( s . getAttribute ( "class" ) || "" ) , q = r ? r . split ( /\s+/ ) : [ ] , p = 0 , o = q . length ; for ( ; p < o ; p ++ ) { this . push ( q [ p ] ) } this . _updateClassName = function ( ) { s . setAttribute ( "class" , this . toString ( ) ) } } , e = d [ f ] = [ ] , i = function ( ) { return  new  d ( this ) } ; n [ f ] = Error [ f ] ; e . item = function ( o ) { return  this [ o ] || null } ; e . contains = function ( o ) { o += "" ; return  g ( this , o ) !== - 1 } ; e . add = function ( ) { var  s = arguments , r = 0 , p = s . length , q , o = false ; do { q = s [ r ] + "" ; if ( g ( this , q ) === - 1 ) { this . push ( q ) ; o = true } } while ( ++ r < p ) ; if ( o ) { this . _updateClassName ( ) } } ; e . remove = function ( ) { var  t = arguments , s = 0 , p = t . length , r , o = false ; do { r = t [ s ] + "" ; var  q = g ( this , r ) ; if ( q !== - 1 ) { this . splice ( q , 1 ) ; o = true } } while ( ++ s < p ) ; if ( o ) { this . _updateClassName ( ) } } ; e . toggle = function ( p , q ) { p += "" ; var  o = this . contains ( p ) , r = o ? q !== true && "remove" : q !== false && "add" ; if ( r ) { this [ r ] ( p ) } return  ! o } ; e . toString = function ( ) { return  this . join ( " " ) } ; if ( b . defineProperty ) { var  l = { get : i , enumerable : true , configurable : true } ; try { b . defineProperty ( m , a , l ) } catch ( h ) { if ( h . number === - 2146823252 ) { l . enumerable = false ; b . defineProperty ( m , a , l ) } } } else { if ( b [ f ] . _ _defineGetter _ _ ) { m . _ _defineGetter _ _ ( a , i ) } } } ( self ) ) } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//console mock (IE9)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! window . console )  window . console  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! window . console . log )  window . console . log  =  function  ( )  {  } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! window . console . error )  window . console . error  =  function  ( )  {  } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! window . console . warn )  window . console . warn  =  function  ( )  {  } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								if  ( ! window . console . assert )  window . console . assert  =  function  ( )  {  } ;  
						 
					
						
							
								
									
										
										
										
											2015-09-18 00:49:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-29 14:30:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								//Typed Array (IE9)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source https://github.com/inexorabletash/polyfill/blob/master/typedarray.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 Copyright  ( c )  2010 ,  Linden  Research ,  Inc . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 Copyright  ( c )  2014 ,  Joshua  Bell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 Permission  is  hereby  granted ,  free  of  charge ,  to  any  person  obtaining  a  copy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 of  this  software  and  associated  documentation  files  ( the  "Software" ) ,  to  deal 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 in  the  Software  without  restriction ,  including  without  limitation  the  rights 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 to  use ,  copy ,  modify ,  merge ,  publish ,  distribute ,  sublicense ,  and / or  sell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 copies  of  the  Software ,  and  to  permit  persons  to  whom  the  Software  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 furnished  to  do  so ,  subject  to  the  following  conditions : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 The  above  copyright  notice  and  this  permission  notice  shall  be  included  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 all  copies  or  substantial  portions  of  the  Software . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 THE  SOFTWARE  IS  PROVIDED  "AS IS" ,  WITHOUT  WARRANTY  OF  ANY  KIND ,  EXPRESS  OR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 IMPLIED ,  INCLUDING  BUT  NOT  LIMITED  TO  THE  WARRANTIES  OF  MERCHANTABILITY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 FITNESS  FOR  A  PARTICULAR  PURPOSE  AND  NONINFRINGEMENT .  IN  NO  EVENT  SHALL  THE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 AUTHORS  OR  COPYRIGHT  HOLDERS  BE  LIABLE  FOR  ANY  CLAIM ,  DAMAGES  OR  OTHER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 LIABILITY ,  WHETHER  IN  AN  ACTION  OF  CONTRACT ,  TORT  OR  OTHERWISE ,  ARISING  FROM , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 OUT  OF  OR  IN  CONNECTION  WITH  THE  SOFTWARE  OR  THE  USE  OR  OTHER  DEALINGS  IN 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 THE  SOFTWARE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 $ / LicenseInfo$ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// Original can be found at:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//   https://bitbucket.org/lindenlab/llsd
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// Modifications by Joshua Bell inexorabletash@gmail.com
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//   https://github.com/inexorabletash/polyfill
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// ES3/ES5 implementation of the Krhonos Typed Array Specification
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//   Ref: http://www.khronos.org/registry/typedarray/specs/latest/
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//   Date: 2011-02-01
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// Variations:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//  * Allows typed_array.get/set() as alias for subscripts (typed_array[])
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//  * Gradually migrating structure from Khronos spec to ES2015 spec
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// Caveats:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//  * Beyond 10000 or so entries, polyfilled array accessors (ta[0],
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//    etc) become memory-prohibitive, so array creation will fail. Set
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//    self.TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS=true to disable
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//    creation of accessors. Your code will need to use the
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//    non-standard get()/set() instead, and will need to add those to
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//    native arrays for interop.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								( function ( global )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  'use strict' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  var  undefined  =  ( void  0 ) ;  // Paranoia
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // create, and consume so much memory, that the browser appears frozen.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  var  MAX _ARRAY _LENGTH  =  1e5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Approximations of internal ECMAScript conversion functions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  Type ( v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    switch ( typeof  v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      case  'undefined' :  return  'undefined' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      case  'boolean' :  return  'boolean' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      case  'number' :  return  'number' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      case  'string' :  return  'string' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      default :  return  v  ===  null  ?  'null'  :  'object' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  Class ( v )  {  return  Object . prototype . toString . call ( v ) . replace ( /^\[object *|\]$/g ,  '' ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  IsCallable ( o )  {  return  typeof  o  ===  'function' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  ToObject ( v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( v  ===  null  ||  v  ===  undefined )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return  Object ( v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  ToInt32 ( v )  {  return  v  >>  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  ToUint32 ( v )  {  return  v  >>>  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Snapshot intrinsics
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  var  LN2  =  Math . LN2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    abs  =  Math . abs , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    floor  =  Math . floor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    log  =  Math . log , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    max  =  Math . max , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    min  =  Math . min , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    pow  =  Math . pow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    round  =  Math . round ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // emulate ES5 getter/setter API using legacy APIs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  orig  =  Object . defineProperty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  dom _only  =  ! ( function ( ) { try { return  Object . defineProperty ( { } , 'x' , { } ) ; } catch ( _ ) { return  false ; } } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( ! orig  ||  dom _only )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty  =  function  ( o ,  prop ,  desc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // In IE8 try built-in implementation for defining properties on DOM prototypes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( orig ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          try  {  return  orig ( o ,  prop ,  desc ) ;  }  catch  ( _ )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( o  !==  Object ( o ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          throw  TypeError ( 'Object.defineProperty called on non-object' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Object . prototype . _ _defineGetter _ _  &&  ( 'get'  in  desc ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . prototype . _ _defineGetter _ _ . call ( o ,  prop ,  desc . get ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Object . prototype . _ _defineSetter _ _  &&  ( 'set'  in  desc ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . prototype . _ _defineSetter _ _ . call ( o ,  prop ,  desc . set ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( 'value'  in  desc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          o [ prop ]  =  desc . value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // for index in 0 ... obj.length
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  makeArrayAccessors ( obj )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( 'TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS'  in  global ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( obj . length  >  MAX _ARRAY _LENGTH )  throw  RangeError ( 'Array too large for polyfill' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  makeArrayAccessor ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( obj ,  index ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        'get' :  function ( )  {  return  obj . _getter ( index ) ;  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        'set' :  function ( v )  {  obj . _setter ( index ,  v ) ;  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        enumerable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        configurable :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    for  ( i  =  0 ;  i  <  obj . length ;  i  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      makeArrayAccessor ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Internal conversion functions:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //    pack<Type>()   - take a number (interpreted as Type), output a byte array
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //    unpack<Type>() - take a byte array, output a Type-like number
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  as _signed ( value ,  bits )  {  var  s  =  32  -  bits ;  return  ( value  <<  s )  >>  s ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  as _unsigned ( value ,  bits )  {  var  s  =  32  -  bits ;  return  ( value  <<  s )  >>>  s ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packI8 ( n )  {  return  [ n  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackI8 ( bytes )  {  return  as _signed ( bytes [ 0 ] ,  8 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packU8 ( n )  {  return  [ n  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackU8 ( bytes )  {  return  as _unsigned ( bytes [ 0 ] ,  8 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packU8Clamped ( n )  {  n  =  round ( Number ( n ) ) ;  return  [ n  <  0  ?  0  :  n  >  0xff  ?  0xff  :  n  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packI16 ( n )  {  return  [ n  &  0xff ,  ( n  >>  8 )  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackI16 ( bytes )  {  return  as _signed ( bytes [ 1 ]  <<  8  |  bytes [ 0 ] ,  16 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packU16 ( n )  {  return  [ n  &  0xff ,  ( n  >>  8 )  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackU16 ( bytes )  {  return  as _unsigned ( bytes [ 1 ]  <<  8  |  bytes [ 0 ] ,  16 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packI32 ( n )  {  return  [ n  &  0xff ,  ( n  >>  8 )  &  0xff ,  ( n  >>  16 )  &  0xff ,  ( n  >>  24 )  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackI32 ( bytes )  {  return  as _signed ( bytes [ 3 ]  <<  24  |  bytes [ 2 ]  <<  16  |  bytes [ 1 ]  <<  8  |  bytes [ 0 ] ,  32 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packU32 ( n )  {  return  [ n  &  0xff ,  ( n  >>  8 )  &  0xff ,  ( n  >>  16 )  &  0xff ,  ( n  >>  24 )  &  0xff ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackU32 ( bytes )  {  return  as _unsigned ( bytes [ 3 ]  <<  24  |  bytes [ 2 ]  <<  16  |  bytes [ 1 ]  <<  8  |  bytes [ 0 ] ,  32 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packIEEE754 ( v ,  ebits ,  fbits )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  bias  =  ( 1  <<  ( ebits  -  1 ) )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  roundToEven ( n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  w  =  floor ( n ) ,  f  =  n  -  w ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( f  <  0.5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  w ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( f  >  0.5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  w  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  w  %  2  ?  w  +  1  :  w ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Compute sign, exponent, fraction
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  s ,  e ,  f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( v  !==  v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // NaN
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      e  =  ( 1  <<  ebits )  -  1 ;  f  =  pow ( 2 ,  fbits  -  1 ) ;  s  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  if  ( v  ===  Infinity  ||  v  ===  - Infinity )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      e  =  ( 1  <<  ebits )  -  1 ;  f  =  0 ;  s  =  ( v  <  0 )  ?  1  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  if  ( v  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      e  =  0 ;  f  =  0 ;  s  =  ( 1  /  v  ===  - Infinity )  ?  1  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      s  =  v  <  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      v  =  abs ( v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( v  >=  pow ( 2 ,  1  -  bias ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // Normalized
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        e  =  min ( floor ( log ( v )  /  LN2 ) ,  1023 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  significand  =  v  /  pow ( 2 ,  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( significand  <  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          e  -=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          significand  *=  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( significand  >=  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          e  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          significand  /=  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  d  =  pow ( 2 ,  fbits ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        f  =  roundToEven ( significand  *  d )  -  d ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        e  +=  bias ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( f  /  d  >=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          e  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          f  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( e  >  2  *  bias )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          // Overflow
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          e  =  ( 1  <<  ebits )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          f  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // Denormalized
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        e  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        f  =  roundToEven ( v  /  pow ( 2 ,  1  -  bias  -  fbits ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Pack sign, exponent, fraction
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  bits  =  [ ] ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    for  ( i  =  fbits ;  i ;  i  -=  1 )  {  bits . push ( f  %  2  ?  1  :  0 ) ;  f  =  floor ( f  /  2 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    for  ( i  =  ebits ;  i ;  i  -=  1 )  {  bits . push ( e  %  2  ?  1  :  0 ) ;  e  =  floor ( e  /  2 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    bits . push ( s  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    bits . reverse ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  str  =  bits . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Bits to bytes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  bytes  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    while  ( str . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      bytes . unshift ( parseInt ( str . substring ( 0 ,  8 ) ,  2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      str  =  str . substring ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackIEEE754 ( bytes ,  ebits ,  fbits )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Bytes to bits
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  bits  =  [ ] ,  i ,  j ,  b ,  str , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      bias ,  s ,  e ,  f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    for  ( i  =  0 ;  i  <  bytes . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      b  =  bytes [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( j  =  8 ;  j ;  j  -=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bits . push ( b  %  2  ?  1  :  0 ) ;  b  =  b  >>  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    bits . reverse ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    str  =  bits . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Unpack sign, exponent, fraction
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    bias  =  ( 1  <<  ( ebits  -  1 ) )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    s  =  parseInt ( str . substring ( 0 ,  1 ) ,  2 )  ?  - 1  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    e  =  parseInt ( str . substring ( 1 ,  1  +  ebits ) ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    f  =  parseInt ( str . substring ( 1  +  ebits ) ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Produce number
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( e  ===  ( 1  <<  ebits )  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  f  !==  0  ?  NaN  :  s  *  Infinity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  if  ( e  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // Normalized
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  s  *  pow ( 2 ,  e  -  bias )  *  ( 1  +  f  /  pow ( 2 ,  fbits ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  if  ( f  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // Denormalized
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  s  *  pow ( 2 ,  - ( bias  -  1 ) )  *  ( f  /  pow ( 2 ,  fbits ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  s  <  0  ?  - 0  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackF64 ( b )  {  return  unpackIEEE754 ( b ,  11 ,  52 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packF64 ( v )  {  return  packIEEE754 ( v ,  11 ,  52 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  unpackF32 ( b )  {  return  unpackIEEE754 ( b ,  8 ,  23 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  packF32 ( v )  {  return  packIEEE754 ( v ,  8 ,  23 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // 3 The ArrayBuffer Type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  ArrayBuffer ( length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      length  =  ToInt32 ( length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( length  <  0 )  throw  RangeError ( 'ArrayBuffer size is not a small enough positive integer.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  'byteLength' ,  { value :  length } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  '_bytes' ,  { value :  Array ( length ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  length ;  i  +=  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        this . _bytes [ i ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . ArrayBuffer  =  global . ArrayBuffer  ||  ArrayBuffer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // 5 The Typed Array View Types
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  $TypedArray$ ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // %TypedArray% ( length )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! arguments . length  ||  typeof  arguments [ 0 ]  !==  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  ( function ( length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          length  =  ToInt32 ( length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( length  <  0 )  throw  RangeError ( 'length is not a small enough positive integer.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'length' ,  { value :  length } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteLength' ,  { value :  length  *  this . BYTES _PER _ELEMENT } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'buffer' ,  { value :  new  ArrayBuffer ( this . byteLength ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteOffset' ,  { value :  0 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ) . apply ( this ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // %TypedArray% ( typedArray )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >=  1  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Type ( arguments [ 0 ] )  ===  'object'  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        arguments [ 0 ]  instanceof  $TypedArray$ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  ( function ( typedArray ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( this . constructor  !==  typedArray . constructor )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          var  byteLength  =  typedArray . length  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'buffer' ,  { value :  new  ArrayBuffer ( byteLength ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteLength' ,  { value :  byteLength } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteOffset' ,  { value :  0 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'length' ,  { value :  typedArray . length } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( var  i  =  0 ;  i  <  this . length ;  i  +=  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            this . _setter ( i ,  typedArray . _getter ( i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ) . apply ( this ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // %TypedArray% ( array )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >=  1  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Type ( arguments [ 0 ] )  ===  'object'  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ! ( arguments [ 0 ]  instanceof  $TypedArray$ )  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ! ( arguments [ 0 ]  instanceof  ArrayBuffer  ||  Class ( arguments [ 0 ] )  ===  'ArrayBuffer' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  ( function ( array )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          var  byteLength  =  array . length  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'buffer' ,  { value :  new  ArrayBuffer ( byteLength ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteLength' ,  { value :  byteLength } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteOffset' ,  { value :  0 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'length' ,  { value :  array . length } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( var  i  =  0 ;  i  <  this . length ;  i  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            var  s  =  array [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            this . _setter ( i ,  Number ( s ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ) . apply ( this ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // %TypedArray% ( buffer, byteOffset=0, length=undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >=  1  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Type ( arguments [ 0 ] )  ===  'object'  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ( arguments [ 0 ]  instanceof  ArrayBuffer  ||  Class ( arguments [ 0 ] )  ===  'ArrayBuffer' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  ( function ( buffer ,  byteOffset ,  length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          byteOffset  =  ToUint32 ( byteOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( byteOffset  >  buffer . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            throw  RangeError ( 'byteOffset out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          // The given byteOffset must be a multiple of the element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          // size of the specific type, otherwise an exception is raised.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( byteOffset  %  this . BYTES _PER _ELEMENT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            throw  RangeError ( 'buffer length minus the byteOffset is not a multiple of the element size.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( length  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            var  byteLength  =  buffer . byteLength  -  byteOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if  ( byteLength  %  this . BYTES _PER _ELEMENT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								              throw  RangeError ( 'length of buffer minus byteOffset not a multiple of the element size' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            length  =  byteLength  /  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            length  =  ToUint32 ( length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            byteLength  =  length  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( ( byteOffset  +  byteLength )  >  buffer . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            throw  RangeError ( 'byteOffset and length reference an area beyond the end of the buffer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'buffer' ,  { value :  buffer } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteLength' ,  { value :  byteLength } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'byteOffset' ,  { value :  byteOffset } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          Object . defineProperty ( this ,  'length' ,  { value :  length } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ) . apply ( this ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // %TypedArray% ( all other argument combinations )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // Properties of the %TypedArray Instrinsic Object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ ,  'from' ,  { value :  function ( iterable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  new  this ( iterable ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.of ( ...items )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ ,  'of' ,  { value :  function ( /*...items*/ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  new  this ( arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  $TypedArrayPrototype$  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    $TypedArray$ . prototype  =  $TypedArrayPrototype$ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: getter type (unsigned long index);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  '_getter' ,  { value :  function ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  <  1 )  throw  SyntaxError ( 'Not enough arguments' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      index  =  ToUint32 ( index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( index  >=  this . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  bytes  =  [ ] ,  i ,  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( i  =  0 ,  o  =  this . byteOffset  +  index  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								           i  <  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								           i  +=  1 ,  o  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        bytes . push ( this . buffer . _bytes [ o ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  this . _unpack ( bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // NONSTANDARD: convenience alias for getter: type get(unsigned long index);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'get' ,  { value :  $TypedArray$ . prototype . _getter } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: setter void (unsigned long index, type value);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  '_setter' ,  { value :  function ( index ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  <  2 )  throw  SyntaxError ( 'Not enough arguments' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      index  =  ToUint32 ( index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( index  >=  this . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  bytes  =  this . _pack ( value ) ,  i ,  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( i  =  0 ,  o  =  this . byteOffset  +  index  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								           i  <  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								           i  +=  1 ,  o  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        this . buffer . _bytes [ o ]  =  bytes [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get %TypedArray%.prototype.buffer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get %TypedArray%.prototype.byteLength
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get %TypedArray%.prototype.byteOffset
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- applied directly to the object in the constructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.constructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'constructor' ,  { value :  $TypedArray$ } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.copyWithin (target, start, end = this.length )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'copyWithin' ,  { value :  function ( target ,  start )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  end  =  arguments [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  o  =  ToObject ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  lenVal  =  o . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( lenVal ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      len  =  max ( len ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeTarget  =  ToInt32 ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  to ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( relativeTarget  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        to  =  max ( len  +  relativeTarget ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        to  =  min ( relativeTarget ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeStart  =  ToInt32 ( start ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  from ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( relativeStart  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        from  =  max ( len  +  relativeStart ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        from  =  min ( relativeStart ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeEnd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( end  ===  undefined ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        relativeEnd  =  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        relativeEnd  =  ToInt32 ( end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  final ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( relativeEnd  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        final  =  max ( len  +  relativeEnd ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        final  =  min ( relativeEnd ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  count  =  min ( final  -  from ,  len  -  to ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  direction ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( from  <  to  &&  to  <  from  +  count )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        direction  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        from  =  from  +  count  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        to  =  to  +  count  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        direction  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( count  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        o . _setter ( to ,  o . _getter ( from ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        from  =  from  +  direction ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        to  =  to  +  direction ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        count  =  count  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.entries ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- defined in es6.js to shim browsers w/ native TypedArrays
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.every ( callbackfn, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'every' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  thisArg  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( ! callbackfn . call ( thisArg ,  t . _getter ( i ) ,  i ,  t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.fill (value, start = 0, end = this.length )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'fill' ,  { value :  function ( value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  start  =  arguments [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        end  =  arguments [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  o  =  ToObject ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  lenVal  =  o . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( lenVal ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      len  =  max ( len ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeStart  =  ToInt32 ( start ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( relativeStart  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        k  =  max ( ( len  +  relativeStart ) ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        k  =  min ( relativeStart ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeEnd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( end  ===  undefined ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        relativeEnd  =  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        relativeEnd  =  ToInt32 ( end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  final ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( relativeEnd  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        final  =  max ( ( len  +  relativeEnd ) ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        final  =  min ( relativeEnd ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  <  final )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        o . _setter ( k ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        k  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'filter' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  res  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  thisp  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  val  =  t . _getter ( i ) ;  // in case fun mutates this
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( callbackfn . call ( thisp ,  val ,  i ,  t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          res . push ( val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  new  this . constructor ( res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.find (predicate, thisArg = undefined)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'find' ,  { value :  function ( predicate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  o  =  ToObject ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  lenValue  =  o . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( lenValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( predicate ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  arguments . length  >  1  ?  arguments [ 1 ]  :  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  <  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  kValue  =  o . _getter ( k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  testResult  =  predicate . call ( t ,  kValue ,  k ,  o ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Boolean ( testResult ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  kValue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ++ k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'findIndex' ,  { value :  function ( predicate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  o  =  ToObject ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  lenValue  =  o . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( lenValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( predicate ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  arguments . length  >  1  ?  arguments [ 1 ]  :  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  <  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  kValue  =  o . _getter ( k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  testResult  =  predicate . call ( t ,  kValue ,  k ,  o ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Boolean ( testResult ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ++ k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'forEach' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  thisp  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        callbackfn . call ( thisp ,  t . _getter ( i ) ,  i ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'indexOf' ,  { value :  function ( searchElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( len  ===  0 )  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  n  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        n  =  Number ( arguments [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( n  !==  n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          n  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  if  ( n  !==  0  &&  n  !==  ( 1  /  0 )  &&  n  !==  - ( 1  /  0 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          n  =  ( n  >  0  ||  - 1 )  *  floor ( abs ( n ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( n  >=  len )  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  n  >=  0  ?  n  :  max ( len  -  abs ( n ) ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( ;  k  <  len ;  k ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( t . _getter ( k )  ===  searchElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.join ( separator )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'join' ,  { value :  function ( separator )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  tmp  =  Array ( len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  ++ i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        tmp [ i ]  =  t . _getter ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  tmp . join ( separator  ===  undefined  ?  ','  :  separator ) ;  // Hack for IE7
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.keys ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- defined in es6.js to shim browsers w/ native TypedArrays
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'lastIndexOf' ,  { value :  function ( searchElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( len  ===  0 )  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  n  =  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        n  =  Number ( arguments [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( n  !==  n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          n  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  if  ( n  !==  0  &&  n  !==  ( 1  /  0 )  &&  n  !==  - ( 1  /  0 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          n  =  ( n  >  0  ||  - 1 )  *  floor ( abs ( n ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  n  >=  0  ?  min ( n ,  len  -  1 )  :  len  -  abs ( n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( ;  k  >=  0 ;  k -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( t . _getter ( k )  ===  searchElement ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get %TypedArray%.prototype.length
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- applied directly to the object in the constructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.map ( callbackfn, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'map' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  res  =  [ ] ;  res . length  =  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  thisp  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        res [ i ]  =  callbackfn . call ( thisp ,  t . _getter ( i ) ,  i ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  new  this . constructor ( res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'reduce' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // no value to return if no initial value and an empty array
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( len  ===  0  &&  arguments . length  ===  1 )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  accumulator ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >=  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  t . _getter ( k ++ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  <  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  callbackfn . call ( undefined ,  accumulator ,  t . _getter ( k ) ,  k ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        k ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  accumulator ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'reduceRight' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // no value to return if no initial value, empty array
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( len  ===  0  &&  arguments . length  ===  1 )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  len  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  accumulator ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  >=  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  t . _getter ( k -- ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  >=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        accumulator  =  callbackfn . call ( undefined ,  accumulator ,  t . _getter ( k ) ,  k ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        k -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  accumulator ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.reverse ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'reverse' ,  { value :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  half  =  floor ( len  /  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ,  j  =  len  -  1 ;  i  <  half ;  ++ i ,  -- j )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  tmp  =  t . _getter ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        t . _setter ( i ,  t . _getter ( j ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        t . _setter ( j ,  tmp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.set(array, offset = 0 )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.set(typedArray, offset = 0 )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: void set(TypedArray array, optional unsigned long offset);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: void set(sequence<type> array, optional unsigned long offset);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'set' ,  { value :  function ( index ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  <  1 )  throw  SyntaxError ( 'Not enough arguments' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  array ,  sequence ,  offset ,  len , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        i ,  s ,  d , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteOffset ,  byteLength ,  tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( typeof  arguments [ 0 ]  ===  'object'  &&  arguments [ 0 ] . constructor  ===  this . constructor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // void set(TypedArray array, optional unsigned long offset);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        array  =  arguments [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        offset  =  ToUint32 ( arguments [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( offset  +  array . length  >  this . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          throw  RangeError ( 'Offset plus length of array is out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteOffset  =  this . byteOffset  +  offset  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteLength  =  array . length  *  this . BYTES _PER _ELEMENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( array . buffer  ===  this . buffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          tmp  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( i  =  0 ,  s  =  array . byteOffset ;  i  <  byteLength ;  i  +=  1 ,  s  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            tmp [ i ]  =  array . buffer . _bytes [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( i  =  0 ,  d  =  byteOffset ;  i  <  byteLength ;  i  +=  1 ,  d  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            this . buffer . _bytes [ d ]  =  tmp [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( i  =  0 ,  s  =  array . byteOffset ,  d  =  byteOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								               i  <  byteLength ;  i  +=  1 ,  s  +=  1 ,  d  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            this . buffer . _bytes [ d ]  =  array . buffer . _bytes [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  if  ( typeof  arguments [ 0 ]  ===  'object'  &&  typeof  arguments [ 0 ] . length  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // void set(sequence<type> array, optional unsigned long offset);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        sequence  =  arguments [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        len  =  ToUint32 ( sequence . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        offset  =  ToUint32 ( arguments [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( offset  +  len  >  this . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          throw  RangeError ( 'Offset plus length of array is out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        for  ( i  =  0 ;  i  <  len ;  i  +=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          s  =  sequence [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . _setter ( offset  +  i ,  Number ( s ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        throw  TypeError ( 'Unexpected argument type(s)' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.slice ( start, end )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'slice' ,  { value :  function ( start ,  end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  o  =  ToObject ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  lenVal  =  o . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( lenVal ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeStart  =  ToInt32 ( start ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  k  =  ( relativeStart  <  0 )  ?  max ( len  +  relativeStart ,  0 )  :  min ( relativeStart ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  relativeEnd  =  ( end  ===  undefined )  ?  len  :  ToInt32 ( end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  final  =  ( relativeEnd  <  0 )  ?  max ( len  +  relativeEnd ,  0 )  :  min ( relativeEnd ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  count  =  final  -  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  c  =  o . constructor ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  a  =  new  c ( count ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  n  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( k  <  final )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  kValue  =  o . _getter ( k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        a . _setter ( n ,  kValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ++ k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ++ n ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.some ( callbackfn, thisArg = undefined )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'some' ,  { value :  function ( callbackfn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! IsCallable ( callbackfn ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  thisp  =  arguments [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( callbackfn . call ( thisp ,  t . _getter ( i ) ,  i ,  t ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.sort ( comparefn )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'sort' ,  { value :  function ( comparefn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( this  ===  undefined  ||  this  ===  null )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  t  =  Object ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  ToUint32 ( t . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  tmp  =  Array ( len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  ++ i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        tmp [ i ]  =  t . _getter ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( comparefn )  tmp . sort ( comparefn ) ;  else  tmp . sort ( ) ;  // Hack for IE8/9
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( i  =  0 ;  i  <  len ;  ++ i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        t . _setter ( i ,  tmp [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.subarray(begin = 0, end = this.length )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: TypedArray subarray(long begin, optional long end);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( $TypedArray$ . prototype ,  'subarray' ,  { value :  function ( start ,  end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      function  clamp ( v ,  min ,  max )  {  return  v  <  min  ?  min  :  v  >  max  ?  max  :  v ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      start  =  ToInt32 ( start ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      end  =  ToInt32 ( end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  <  1 )  {  start  =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( arguments . length  <  2 )  {  end  =  this . length ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( start  <  0 )  {  start  =  this . length  +  start ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( end  <  0 )  {  end  =  this . length  +  end ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      start  =  clamp ( start ,  0 ,  this . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      end  =  clamp ( end ,  0 ,  this . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  len  =  end  -  start ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( len  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        len  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  new  this . constructor ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        this . buffer ,  this . byteOffset  +  start  *  this . BYTES _PER _ELEMENT ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.toLocaleString ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.toString ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype.values ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // %TypedArray%.prototype [ @@iterator ] ( )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get %TypedArray%.prototype [ @@toStringTag ]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- defined in es6.js to shim browsers w/ native TypedArrays
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  makeTypedArray ( elementSize ,  pack ,  unpack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // Each TypedArray type requires a distinct constructor instance with
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // identical logic, which this produces.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  TypedArray  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        Object . defineProperty ( this ,  'constructor' ,  { value :  TypedArray } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        $TypedArray$ . apply ( this ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        makeArrayAccessors ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( '__proto__'  in  TypedArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        TypedArray . _ _proto _ _  =  $TypedArray$ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        TypedArray . from  =  $TypedArray$ . from ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        TypedArray . of  =  $TypedArray$ . of ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      TypedArray . BYTES _PER _ELEMENT  =  elementSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  TypedArrayPrototype  =  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      TypedArrayPrototype . prototype  =  $TypedArrayPrototype$ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      TypedArray . prototype  =  new  TypedArrayPrototype ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( TypedArray . prototype ,  'BYTES_PER_ELEMENT' ,  { value :  elementSize } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( TypedArray . prototype ,  '_pack' ,  { value :  pack } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( TypedArray . prototype ,  '_unpack' ,  { value :  unpack } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  TypedArray ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Int8Array  =  makeTypedArray ( 1 ,  packI8 ,  unpackI8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Uint8Array  =  makeTypedArray ( 1 ,  packU8 ,  unpackU8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Uint8ClampedArray  =  makeTypedArray ( 1 ,  packU8Clamped ,  unpackU8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Int16Array  =  makeTypedArray ( 2 ,  packI16 ,  unpackI16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Uint16Array  =  makeTypedArray ( 2 ,  packU16 ,  unpackU16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Int32Array  =  makeTypedArray ( 4 ,  packI32 ,  unpackI32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Uint32Array  =  makeTypedArray ( 4 ,  packU32 ,  unpackU32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Float32Array  =  makeTypedArray ( 4 ,  packF32 ,  unpackF32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  Float64Array  =  makeTypedArray ( 8 ,  packF64 ,  unpackF64 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Int8Array  =  global . Int8Array  ||  Int8Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Uint8Array  =  global . Uint8Array  ||  Uint8Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Uint8ClampedArray  =  global . Uint8ClampedArray  ||  Uint8ClampedArray ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Int16Array  =  global . Int16Array  ||  Int16Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Uint16Array  =  global . Uint16Array  ||  Uint16Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Int32Array  =  global . Int32Array  ||  Int32Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Uint32Array  =  global . Uint32Array  ||  Uint32Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Float32Array  =  global . Float32Array  ||  Float32Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . Float64Array  =  global . Float64Array  ||  Float64Array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // 6 The DataView View Type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  r ( array ,  index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  IsCallable ( array . get )  ?  array . get ( index )  :  array [ index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  IS _BIG _ENDIAN  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var  u16array  =  new  Uint16Array ( [ 0x1234 ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        u8array  =  new  Uint8Array ( u16array . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  r ( u8array ,  0 )  ===  0x12 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // DataView(buffer, byteOffset=0, byteLength=undefined)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // WebIDL: Constructor(ArrayBuffer buffer,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    //                     optional unsigned long byteOffset,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    //                     optional unsigned long byteLength)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  DataView ( buffer ,  byteOffset ,  byteLength )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! ( buffer  instanceof  ArrayBuffer  ||  Class ( buffer )  ===  'ArrayBuffer' ) )  throw  TypeError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      byteOffset  =  ToUint32 ( byteOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( byteOffset  >  buffer . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        throw  RangeError ( 'byteOffset out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( byteLength  ===  undefined ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteLength  =  buffer . byteLength  -  byteOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteLength  =  ToUint32 ( byteLength ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ( byteOffset  +  byteLength )  >  buffer . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        throw  RangeError ( 'byteOffset and length reference an area beyond the end of the buffer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  'buffer' ,  { value :  buffer } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  'byteLength' ,  { value :  byteLength } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      Object . defineProperty ( this ,  'byteOffset' ,  { value :  byteOffset } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get DataView.prototype.buffer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get DataView.prototype.byteLength
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // get DataView.prototype.byteOffset
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    // -- applied directly to instances by the constructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  makeGetter ( arrayType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  function  GetViewValue ( byteOffset ,  littleEndian )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteOffset  =  ToUint32 ( byteOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( byteOffset  +  arrayType . BYTES _PER _ELEMENT  >  this . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          throw  RangeError ( 'Array index out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteOffset  +=  this . byteOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  uint8Array  =  new  Uint8Array ( this . buffer ,  byteOffset ,  arrayType . BYTES _PER _ELEMENT ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        for  ( var  i  =  0 ;  i  <  arrayType . BYTES _PER _ELEMENT ;  i  +=  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes . push ( r ( uint8Array ,  i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Boolean ( littleEndian )  ===  Boolean ( IS _BIG _ENDIAN ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes . reverse ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  r ( new  arrayType ( new  Uint8Array ( bytes ) . buffer ) ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getUint8' ,  { value :  makeGetter ( Uint8Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getInt8' ,  { value :  makeGetter ( Int8Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getUint16' ,  { value :  makeGetter ( Uint16Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getInt16' ,  { value :  makeGetter ( Int16Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getUint32' ,  { value :  makeGetter ( Uint32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getInt32' ,  { value :  makeGetter ( Int32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getFloat32' ,  { value :  makeGetter ( Float32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'getFloat64' ,  { value :  makeGetter ( Float64Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    function  makeSetter ( arrayType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  function  SetViewValue ( byteOffset ,  value ,  littleEndian )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteOffset  =  ToUint32 ( byteOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( byteOffset  +  arrayType . BYTES _PER _ELEMENT  >  this . byteLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          throw  RangeError ( 'Array index out of range' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // Get bytes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  typeArray  =  new  arrayType ( [ value ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          byteArray  =  new  Uint8Array ( typeArray . buffer ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes  =  [ ] ,  i ,  byteView ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        for  ( i  =  0 ;  i  <  arrayType . BYTES _PER _ELEMENT ;  i  +=  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes . push ( r ( byteArray ,  i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // Flip if necessary
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Boolean ( littleEndian )  ===  Boolean ( IS _BIG _ENDIAN ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bytes . reverse ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // Write them
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteView  =  new  Uint8Array ( this . buffer ,  byteOffset ,  arrayType . BYTES _PER _ELEMENT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        byteView . set ( bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setUint8' ,  { value :  makeSetter ( Uint8Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setInt8' ,  { value :  makeSetter ( Int8Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setUint16' ,  { value :  makeSetter ( Uint16Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setInt16' ,  { value :  makeSetter ( Int16Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setUint32' ,  { value :  makeSetter ( Uint32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setInt32' ,  { value :  makeSetter ( Int32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setFloat32' ,  { value :  makeSetter ( Float32Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    Object . defineProperty ( DataView . prototype ,  'setFloat64' ,  { value :  makeSetter ( Float64Array ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    global . DataView  =  global . DataView  ||  DataView ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								} ( self ) ) ;  
						 
					
						
							
								
									
										
										
										
											2016-08-12 19:35:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//Blob (IE9)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/ *   B l o b . j s  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  A  Blob  implementation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  2014 - 07 - 24 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  By  Eli  Grey ,  http : //eligrey.com
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  By  Devin  Samarin ,  https : //github.com/dsamarin
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  License :  MIT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *    See  https : //github.com/eligrey/Blob.js/blob/master/LICENSE.md
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*global self, unescape */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/ * j s l i n t   b i t w i s e :   t r u e ,   r e g e x p :   t r u e ,   c o n f u s i o n :   t r u e ,   e s 5 :   t r u e ,   v a r s :   t r u e ,   w h i t e :   t r u e ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 plusplus :  true  * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								( function  ( view )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  "use strict" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  view . URL  =  view . URL  ||  view . webkitURL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  if  ( view . Blob  &&  view . URL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      new  Blob ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // Internally we use a BlobBuilder implementation to base Blob off of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // in order to support older browsers that only have BlobBuilder
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  var  BlobBuilder  =  view . BlobBuilder  ||  view . WebKitBlobBuilder  ||  view . MozBlobBuilder  ||  ( function ( view )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        get _class  =  function ( object )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  Object . prototype . toString . call ( object ) . match ( /^\[object\s(.*)\]$/ ) [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FakeBlobBuilder  =  function  BlobBuilder ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . data  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FakeBlob  =  function  Blob ( data ,  type ,  encoding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . data  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . size  =  data . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . type  =  type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . encoding  =  encoding ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FBB _proto  =  FakeBlobBuilder . prototype 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FB _proto  =  FakeBlob . prototype 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FileReaderSync  =  view . FileReaderSync 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  FileException  =  function ( type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . code  =  this [ this . name  =  type ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  file _ex _codes  =  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          +  "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ) . split ( " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  file _ex _code  =  file _ex _codes . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  real _URL  =  view . URL  ||  view . webkitURL  ||  view 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  real _create _object _URL  =  real _URL . createObjectURL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  real _revoke _object _URL  =  real _URL . revokeObjectURL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  URL  =  real _URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  btoa  =  view . btoa 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  atob  =  view . atob 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  ArrayBuffer  =  view . ArrayBuffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  Uint8Array  =  view . Uint8Array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ,  origin  =  /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FakeBlob . fake  =  FB _proto . fake  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      while  ( file _ex _code -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        FileException . prototype [ file _ex _codes [ file _ex _code ] ]  =  file _ex _code  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // Polyfill URL
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( ! real _URL . createObjectURL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        URL  =  view . URL  =  function ( uri )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            uri _info  =  document . createElementNS ( "http://www.w3.org/1999/xhtml" ,  "a" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ,  uri _origin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          uri _info . href  =  uri ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( ! ( "origin"  in  uri _info ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if  ( uri _info . protocol . toLowerCase ( )  ===  "data:" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								              uri _info . origin  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								              uri _origin  =  uri . match ( origin ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								              uri _info . origin  =  uri _origin  &&  uri _origin [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  uri _info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      URL . createObjectURL  =  function ( blob )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          type  =  blob . type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          ,  data _URI _header 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( type  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          type  =  "application/octet-stream" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( blob  instanceof  FakeBlob )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          data _URI _header  =  "data:"  +  type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( blob . encoding  ===  "base64" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            return  data _URI _header  +  ";base64,"  +  blob . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  if  ( blob . encoding  ===  "URI" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            return  data _URI _header  +  ","  +  decodeURIComponent ( blob . data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  if  ( btoa )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            return  data _URI _header  +  ";base64,"  +  btoa ( blob . data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            return  data _URI _header  +  ","  +  encodeURIComponent ( blob . data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  if  ( real _create _object _URL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          return  real _create _object _URL . call ( real _URL ,  blob ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      URL . revokeObjectURL  =  function ( object _URL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( object _URL . substring ( 0 ,  5 )  !==  "data:"  &&  real _revoke _object _URL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          real _revoke _object _URL . call ( real _URL ,  object _URL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FBB _proto . append  =  function ( data /*, endings*/ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  bb  =  this . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        // decode data to a binary string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Uint8Array  &&  ( data  instanceof  ArrayBuffer  ||  data  instanceof  Uint8Array ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            str  =  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ,  buf  =  new  Uint8Array ( data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ,  i  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ,  buf _len  =  buf . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          for  ( ;  i  <  buf _len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            str  +=  String . fromCharCode ( buf [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bb . push ( str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  if  ( get _class ( data )  ===  "Blob"  ||  get _class ( data )  ===  "File" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( FileReaderSync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            var  fr  =  new  FileReaderSync ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            bb . push ( fr . readAsBinaryString ( data ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            // async FileReader won't work as BlobBuilder is sync
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            throw  new  FileException ( "NOT_READABLE_ERR" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  if  ( data  instanceof  FakeBlob )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( data . encoding  ===  "base64"  &&  atob )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            bb . push ( atob ( data . data ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  if  ( data . encoding  ===  "URI" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            bb . push ( decodeURIComponent ( data . data ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          }  else  if  ( data . encoding  ===  "raw" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            bb . push ( data . data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          if  ( typeof  data  !==  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            data  +=  "" ;  // convert unsupported types to strings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          // decode UTF-16 to binary string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          bb . push ( unescape ( encodeURIComponent ( data ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FBB _proto . getBlob  =  function ( type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( ! arguments . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          type  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  new  FakeBlob ( this . data . join ( "" ) ,  type ,  "raw" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FBB _proto . toString  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  "[object BlobBuilder]" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FB _proto . slice  =  function ( start ,  end ,  type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  args  =  arguments . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( args  <  3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          type  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  new  FakeBlob ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          this . data . slice ( start ,  args  >  1  ?  end  :  this . data . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          ,  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          ,  this . encoding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FB _proto . toString  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return  "[object Blob]" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      FB _proto . close  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        this . size  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        delete  this . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  FakeBlobBuilder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ( view ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  view . Blob  =  function ( blobParts ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  type  =  options  ?  ( options . type  ||  "" )  :  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  builder  =  new  BlobBuilder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( blobParts )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      for  ( var  i  =  0 ,  len  =  blobParts . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        if  ( Uint8Array  &&  blobParts [ i ]  instanceof  Uint8Array )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          builder . append ( blobParts [ i ] . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								          builder . append ( blobParts [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  blob  =  builder . getBlob ( type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    if  ( ! blob . slice  &&  blob . webkitSlice )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      blob . slice  =  blob . webkitSlice ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return  blob ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  var  getPrototypeOf  =  Object . getPrototypeOf  ||  function ( object )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      return  object . _ _proto _ _ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  view . Blob . prototype  =  getPrototypeOf ( new  view . Blob ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								} ( typeof  self  !==  "undefined"  &&  self  ||  typeof  window  !==  "undefined"  &&  window  ||  this . content  ||  this ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								//FormData (IE9)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source https://github.com/francois2metz/html5-formdata/blob/master/formdata.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  Emulate  FormData  for  some  browsers 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  MIT  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 *  ( c )  2010  François  de  Metz 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								( function ( w )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  if  ( w . FormData ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  function  FormData ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . fake  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . boundary  =  "--------FormData"  +  Math . random ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . _fields  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  FormData . prototype . append  =  function ( key ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . _fields . push ( [ key ,  value ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  FormData . prototype . toString  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  boundary  =  this . boundary ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    var  body  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    this . _fields . forEach ( function ( field )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      body  +=  "--"  +  boundary  +  "\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      // file upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      if  ( field [ 1 ] . name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        var  file  =  field [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        body  +=  "Content-Disposition: form-data; name=\"" +  field [ 0 ]  + "\"; filename=\"" +  file . name  + "\"\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        body  +=  "Content-Type: " +  file . type  + "\r\n\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        body  +=  file . getAsBinary ( )  +  "\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        body  +=  "Content-Disposition: form-data; name=\"" +  field [ 0 ]  + "\";\r\n\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        body  +=  field [ 1 ]  +  "\r\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    body  +=  "--"  +  boundary  + "--" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return  body ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  w . FormData  =  FormData ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								} ) ( window ) ;  
						 
					
						
							
								
									
										
										
										
											2016-09-01 00:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								// Intl (IE9, IE10, all Safari, all Android)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @source https://github.com/andyearnshaw/Intl.js */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								/*! @licence https://github.com/andyearnshaw/Intl.js/blob/master/LICENSE.txt */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								! function ( e , r ) { "object" == typeof  exports && "undefined" != typeof  module ? module . exports = r ( ) : "function" == typeof  define && define . amd ? define ( r ) : e . IntlPolyfill = r ( ) } ( this , function ( ) { "use strict" ; function  e ( e ) { if ( "function" == typeof  Math . log10 ) return  Math . floor ( Math . log10 ( e ) ) ; var  r = Math . round ( Math . log ( e ) * Math . LOG10E ) ; return  r - ( Number ( "1e" + r ) > e ) } function  r ( e ) { for ( var  t  in  e ) ( e  instanceof  r || ee . call ( e , t ) ) && re ( this , t , { value : e [ t ] , enumerable : ! 0 , writable : ! 0 , configurable : ! 0 } ) } function  t ( ) { re ( this , "length" , { writable : ! 0 , value : 0 } ) , arguments . length && oe . apply ( this , ae . call ( arguments ) ) } function  n ( ) { if ( ue . disableRegExpRestore ) return  function ( ) { } ; for ( var  e = { lastMatch : RegExp . lastMatch || "" , leftContext : RegExp . leftContext , multiline : RegExp . multiline , input : RegExp . input } , r = ! 1 , n = 1 ; n <= 9 ; n ++ ) r = ( e [ "$" + n ] = RegExp [ "$" + n ] ) || r ; return  function ( ) { var  n = /[.?*+^$[\]\\(){}|-]/g , a = e . lastMatch . replace ( n , "\\$&" ) , i = new  t ; if ( r ) for ( var  o = 1 ; o <= 9 ; o ++ ) { var  s = e [ "$" + o ] ; s ? ( s = s . replace ( n , "\\$&" ) , a = a . replace ( s , "(" + s + ")" ) ) : a = "()" + a , oe . call ( i , a . slice ( 0 , a . indexOf ( "(" ) + 1 ) ) , a = a . slice ( a . indexOf ( "(" ) + 1 ) } var  l = se . call ( i , "" ) + a ; l = l . replace ( /(\\\(|\\\)|[^()])+/g , function ( e ) { return "[\\s\\S]{" + e . replace ( "\\" , "" ) . length + "}" } ) ; var  c = new  RegExp ( l , e . multiline ? "gm" : "g" ) ; c . lastIndex = e . leftContext . length , c . exec ( e . input ) } } function  a ( e ) { if ( null === e ) throw  new  TypeError ( "Cannot convert null or undefined to object" ) ; return  Object ( e ) } function  i ( e ) { return  ee . call ( e , "__getInternalProperties" ) ? e . _ _getInternalProperties ( ge ) : ne ( null ) } function  o ( e ) { Se = e } function  s ( e ) { for ( var  r = e . length ; r -- ; ) { var  t = e . charAt ( r ) ; t >= "a" && t <= "z" && ( e = e . slice ( 0 , r ) + t . toUpperCase ( ) + e . slice ( r + 1 ) ) } return  e } function  l ( e ) { return ! ! ze . test ( e ) && ( ! ke . test ( e ) && ! Fe . test ( e ) ) } function  c ( e ) { var  r = void  0 , t = void  0 ; e = e . toLowerCase ( ) , t = e . split ( "-" ) ; for ( var  n = 1 , a = t . length ; n < a ; n ++ ) if ( 2 === t [ n ] . length ) t [ n ] = t [ n ] . toUpperCase ( ) ; else  if ( 4 === t [ n ] . length ) t [ n ] = t [ n ] . charAt ( 0 ) . toUpperCase ( ) + t [ n ] . slice ( 1 ) ; else  if ( 1 === t [ n ] . length && "x" !== t [ n ] ) break ; e = se . call ( t , "-" ) , ( r = e . match ( Oe ) ) && r . length > 1 && ( r . sort ( ) , e = e . replace ( RegExp ( "(?:" + Oe . source + ")+" , "i" ) , se . call ( r , "" ) ) ) , ee . call ( Ee . tags , e ) && ( e = Ee . tags [ e ] ) , t = e . split ( "-" ) ; for ( var  i = 1 , o = t . length ; i < o ; i ++ ) ee . call ( Ee . subtags , t [ i ] ) ? t [ i ] = Ee . subtags [ t [ i ] ] : ee . call ( Ee . extLang , t [ i ] ) && ( t [ i ] = Ee . extLang [ t [ i ] ] [ 0 ] , 1 === i && Ee . extLang [ t [ 1 ] ] [ 1 ] === t [ 0 ] && ( t = ae . call ( t , i ++ ) , o -= 1 ) ) ; return  se . call ( t , "-" ) } function  u ( ) { return  Se } function  g ( e ) { var  r = String ( e ) , t = s ( r ) ; return  Le . test ( t ) !== ! 1 } function  f ( e ) { if ( void  0 === e ) return  new  t ; var  r = new  t ; e = "string" == typeof  e ? [ e ] : e ; for ( var  n = a ( e ) , i = n . length , o = 0 ; o < i ; ) { var  s = String ( o ) , u = s  in  n ; if ( u ) { var  g = n [ s ] ; if ( null === g || "string" != typeof  g && "object" !== ( "undefined" == typeof  g ? "undefined" : ir . typeof ( g ) ) ) throw  new  TypeError ( "String or Object type expected" ) ; var  f = String ( g ) ; if ( ! l ( f ) ) throw  new  RangeError ( "'" + f + "' is not a structurally valid language tag" ) ; f = c ( f ) , te . call ( r , f ) === - 1 && oe . call ( r , f ) } o ++ } return  r } function  m ( e , r ) { for ( var  t = r ; t ; ) { if ( te . call ( e , t ) > - 1 ) return  t ; var  n = t . lastIndexOf ( "-" ) ; if ( n < 0 ) return ; n >= 2 && "-" === t . charAt ( n - 2 ) && ( n -= 2 ) , t = t . substring ( 0 , n ) } } function  v ( e , t ) { for ( var  n = 0 , a = t . length , i = void  0 , o = void  0 , s = void  0 ; n < a && ! i ; ) o = t [ n ] , s = String ( o ) . replace ( or , "" ) , i = m ( e , s ) , n ++ ; var  l = new  r ; if ( void  0 !== i ) { if ( l [ "[[locale]]" ] = i , String ( o ) !== String ( s ) ) { var  c = o . match ( or ) [ 0 ] , g = o . indexOf ( "-u-" ) ; l [ "[[extension]]" ] = c , l [ "[[extensionIndex]]" ] = g } } else  l [ "[[locale]]" ] = u ( ) ; return  l } function  d ( e , r ) { return  v ( e , r ) } function  h ( e , t , n , a , i ) { if ( 0 === e . length ) throw  new  ReferenceError ( "No locale data has been provided for this object yet." ) ; var  o = n [ "[[localeMatcher]]" ] , s = void  0 ; s = "lookup" === o ? v ( e , t ) : d ( e , t ) ; var  l = s [ "[[locale]]" ] , u = void  0 , g = void  0 ; if ( ee . call ( s , "[[extension]]" ) ) { var  f = s [ "[[extension]]" ] , m = String . prototype . split ; u = m . call ( f , "-" ) , g = u . length } var  h = new  r ; h [ "[[dataLocale]]" ] = l ; for ( var  p = "-u" , y = 0 , b = a . length ; y < b ; ) { var  w = a [ y ] , x = i [ l ] , D = x [ w ] , j = D [ 0 ] , z = "" , k = te ; if ( void  0 !== u ) { var  F = k . call ( u , w ) ; if ( F !== - 1 ) if ( F + 1 < g && u [ F + 1 ] . length > 2 ) { var  O = u [ F + 1 ] , S = k . call ( D , O ) ; S !== - 1 && ( j = O , z = "-" + w + "-" + j ) } else { var  E = k ( D , "true" ) ; E !== - 1 && ( j = "true" ) } } if ( ee . call ( n , "[[" + w + "]]" ) ) { var  L = n [ "[[" + w + "]]" ] ; k . call ( D , L ) !== - 1 && L !== j && ( j = L , z = "" ) } h [ "[[" + w + "]]" ] = j , p += z , y ++ } if ( p . length > 2 ) { var  P = l . in  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								! r || n . length !== r ) ; ) ; return  n } throw  new  TypeError ( "Invalid attempt to destructure non-iterable instance" ) } , Qe = function ( e , r ) { return  Object . freeze ( Object . defineProperties ( e , { raw : { value : Object . freeze ( r ) } } ) ) } , er = function ( e , r ) { return  e . raw = r , e } , rr = function ( e , r , t ) { if ( e === t ) throw  new  ReferenceError ( r + " is not defined - temporal dead zone" ) ; return  e } , tr = { } , nr = function ( e ) { return  Array . isArray ( e ) ? e : Array . from ( e ) } , ar = function ( e ) { if ( Array . isArray ( e ) ) { for ( var  r = 0 , t = Array ( e . length ) ; r < e . length ; r ++ ) t [ r ] = e [ r ] ; return  t } return  Array . from ( e ) } , ir = Object . freeze ( { jsx : Ne , asyncToGenerator : Te , classCallCheck : _e , createClass : Ie , defineEnumerableProperties : Ae , defaults : Me , defineProperty : Re , get : Ce , inherits : Ge , interopRequireDefault : Be , interopRequireWildcard : Ue , newArrowCheck : $e , objectDestructuringEmpty : Ke , objectWithoutProperties : Ye , possibleConstructorReturn : He , selfGlobal : We , set : Xe , slicedToArray : Ve , slicedToArrayLoose : Je , taggedTemplateLiteral : Qe , taggedTemplateLiteralLoose : er , temporalRef : rr , temporalUndefined : tr , toArray : nr , toConsumableArray : ar , typeof : Pe , extends : qe , instanceof : Ze } ) , or = /-u(?:-[0-9a-z]{2,8})+/gi , sr = { } ; sr . getCanonicalLocales = function ( e ) { var  r = f ( e ) , t = [ ] ; for ( var  n  in  r ) t . push ( r [ n ] ) ; return  t } ; var  lr = { BHD : 3 , BYR : 0 , XOF : 0 , BIF : 0 , XAF : 0 , CLF : 4 , CLP : 0 , KMF : 0 , DJF : 0 , XPF : 0 , GNF : 0 , ISK : 0 , IQD : 3 , JPY : 0 , JOD : 3 , KRW : 0 , KWD : 3 , LYD : 3 , OMR : 3 , PYG : 0 , RWF : 0 , TND : 3 , UGX : 0 , UYI : 0 , VUV : 0 , VND : 0 } ; re ( sr , "NumberFormat" , { configurable : ! 0 , writable : ! 0 , value : D } ) , re ( sr . NumberFormat , "prototype" , { writable : ! 1 } ) , ue . NumberFormat = { "[[availableLocales]]" : [ ] , "[[relevantExtensionKeys]]" : [ "nu" ] , "[[localeData]]" : { } } , re ( sr . NumberFormat , "supportedLocalesOf" , { configurable : ! 0 , writable : ! 0 , value : ce . call ( function ( e ) { if ( ! ee . call ( this , "[[availableLocales]]" ) ) throw  new  TypeError ( "supportedLocalesOf() is not a constructor" ) ; var  r = n ( ) , t = arguments [ 1 ] , a = this [ "[[availableLocales]]" ] , i = f ( e ) ; return  r ( ) , b ( a , i , t ) } , ue . NumberFormat ) } ) , re ( sr . NumberFormat . prototype , "format" , { configurable : ! 0 , get : k } ) , sr . NumberFormat . prototype . formatToParts = function ( e ) { var  r = null !== this && "object" === ir . typeof ( this ) && i ( this ) ; if ( ! r || ! r [ "[[initializedNumberFormat]]" ] ) throw  new  TypeError ( "`this` value for formatToParts() is not an initialized Intl.NumberFormat object." ) ; var  t = Number ( e ) ; return  F ( this , t ) } ; var  cr = { arab : [ "٠  , "١  , "٢" , "٣" , "٤" , "٥  , "٦" , "٧  , "٨" , "٩" ] , arabext : [ "۰  , "۱  , "۲" , "۳" , "۴" , "۵  , "۶" , "۷  , "۸" , "۹" ] , bali : [ "᭐" , "᭑" , "᭒" , "᭓" , "᭔" , "᭕" , "᭖" , "᭗" , "᭘" , "᭙" ] , beng : [ "০  , "১" , "২" , "৩" , "৪  , "৫" , "৬" , "৭  , "৮" , "৯" ] , deva : [ "०  , "१" , "२" , "३" , "४" , "५" , "६" , "७" , "८" , "९" ] , fullwide : [ "0  , "1  , "2  , "3  , "4  , "5  , "6  , "7  , "8  , "9  ] , gujr : [ "૦  , "૧" , "૨" , "૩" , "૪" , "૫" , "૬" , "૭" , "૮" , "૯" ] , guru : [ "੦  , "੧  , "੨" , "੩" , "੪  , "੫" , "੬" , "੭" , "੮" , "੯" ] , hanidec : [ "〇  , "一" , "二" , "三" , "四" , "五" , "六" , "七" , "八" , "九" ] , khmr : [ "០" , "១" , "២" , "៣" , "៤" , "៥" , "៦" , "៧" , "៨" , "៩" ] , knda : [ "೦  , "೧" , "೨" , "೩" , "೪" , "೫" , "೬" , "೭" , "೮" , "೯" ] , laoo : [ "໐  , "໑" , "໒" , "໓" , "໔" , "໕" , "໖" , "໗" , "໘" , "໙" ] , latn : [ "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ] , limb : [ "᥆" , "᥇" , "᥈" , "᥉" , "᥊" , "᥋" , "᥌" , "᥍" , "᥎" , "᥏" ] , mlym : [ "൦  , "൧" , "൨" , "൩" , "൪" , "൫" , "൬" , "൭  , "൮" , "൯" ] , mong : [ "᠐" , "᠑" , "᠒" , "᠓" , "᠔" , "᠕" , "᠖" , "᠗" , "᠘" , "᠙" ] , mymr : [ "၀  , "၁" , "၂" , "၃" , "၄" , "၅" , "၆" , "၇" , "၈" , "၉" ] , orya : [ "୦  , "୧" , "୨  , "୩" , "୪" , "୫" , "୬" , "୭" , "୮" , "୯" ] , tamldec : [ "௦  , "௧" , "௨" , "௩" , "௪" , "௫" , "௬" , "௭" , "௮" , "௯" ] , telu : [ "౦  , "౧" , "౨" , "౩" , "౪" , "౫" , "౬" , "౭" , "౮" , "౯" ] , thai : [ "๐  , "๑" , "๒" , "๓" , "๔" , "๕" , "๖" , "๗" , "๘" , "๙" ] , tibt : [ "༠" , "༡" , "༢" , "༣" , "༤" , "༥" , "༦" , "༧" , "༨" , "༩" ] } ; re ( sr . NumberFormat . prototype , "resolvedOptions" , { configurable : ! 0 , writable : ! 0 , value : function ( ) { var  e = void  0 , t = new  r , n = [ "locale" , "numberingSystem" , "style" , "currency" , "currencyDisplay" , "minimumIntegerDigits" , "minimumFractionDigits" , "maximumFractionDigits" , "minimumSignificantDigits" , "maximumSignificantDigits" , "useGrouping" ] , a = null !== this && "object" === ir . typeof ( this ) && i ( this ) ; if ( ! a || ! a [ "[[initializedNumberFormat]]" ] ) throw  new  TypeError ( " ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								IntlPolyfill . _ _addLocaleData ( { locale : "en-US" , date : { ca : [ "gregory" , "buddhist" , "chinese" , "coptic" , "dangi" , "ethioaa" , "ethiopic" , "generic" , "hebrew" , "indian" , "islamic" , "islamicc" , "japanese" , "persian" , "roc" ] , hourNo0 : true , hour12 : true , formats : { short : "{1}, {0}" , medium : "{1}, {0}" , full : "{1} 'at' {0}" , long : "{1} 'at' {0}" , availableFormats : { "d" : "d" , "E" : "ccc" , Ed : "d E" , Ehm : "E h:mm a" , EHm : "E HH:mm" , Ehms : "E h:mm:ss a" , EHms : "E HH:mm:ss" , Gy : "y G" , GyMMM : "MMM y G" , GyMMMd : "MMM d, y G" , GyMMMEd : "E, MMM d, y G" , "h" : "h a" , "H" : "HH" , hm : "h:mm a" , Hm : "HH:mm" , hms : "h:mm:ss a" , Hms : "HH:mm:ss" , hmsv : "h:mm:ss a v" , Hmsv : "HH:mm:ss v" , hmv : "h:mm a v" , Hmv : "HH:mm v" , "M" : "L" , Md : "M/d" , MEd : "E, M/d" , MMM : "LLL" , MMMd : "MMM d" , MMMEd : "E, MMM d" , MMMMd : "MMMM d" , ms : "mm:ss" , "y" : "y" , yM : "M/y" , yMd : "M/d/y" , yMEd : "E, M/d/y" , yMMM : "MMM y" , yMMMd : "MMM d, y" , yMMMEd : "E, MMM d, y" , yMMMM : "MMMM y" , yQQQ : "QQQ y" , yQQQQ : "QQQQ y" } , dateFormats : { yMMMMEEEEd : "EEEE, MMMM d, y" , yMMMMd : "MMMM d, y" , yMMMd : "MMM d, y" , yMd : "M/d/yy" } , timeFormats : { hmmsszzzz : "h:mm:ss a zzzz" , hmsz : "h:mm:ss a z" , hms : "h:mm:ss a" , hm : "h:mm a" } } , calendars : { buddhist : { months : { narrow : [ "J" , "F" , "M" , "A" , "M" , "J" , "J" , "A" , "S" , "O" , "N" , "D" ] , short : [ "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ] , long : [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "BE" ] , short : [ "BE" ] , long : [ "BE" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , chinese : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" ] , short : [ "Mo1" , "Mo2" , "Mo3" , "Mo4" , "Mo5" , "Mo6" , "Mo7" , "Mo8" , "Mo9" , "Mo10" , "Mo11" , "Mo12" ] , long : [ "Month1" , "Month2" , "Month3" , "Month4" , "Month5" , "Month6" , "Month7" , "Month8" , "Month9" , "Month10" , "Month11" , "Month12" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , coptic : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Tout" , "Baba" , "Hator" , "Kiahk" , "Toba" , "Amshir" , "Baramhat" , "Baramouda" , "Bashans" , "Paona" , "Epep" , "Mesra" , "Nasie" ] , long : [ "Tout" , "Baba" , "Hator" , "Kiahk" , "Toba" , "Amshir" , "Baramhat" , "Baramouda" , "Bashans" , "Paona" , "Epep" , "Mesra" , "Nasie" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "ERA0" , "ERA1" ] , short : [ "ERA0" , "ERA1" ] , long : [ "ERA0" , "ERA1" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , dangi : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" ] , short : [ "Mo1" , "Mo2" , "Mo3" , "Mo4" , "Mo5" , "Mo6" , "Mo7" , "Mo8" , "Mo9" , "Mo10" , "Mo11" , "Mo12" ] , long : [ "Month1" , "Month2" , "Month3" , "Month4" , "Month5" , "Month6" , "Month7" , "Month8" , "Month9" , "Month10" , "Month11" , "Month12" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , ethiopic : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] , long : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] } , days : { narrow : [ "S" , "M" , "T" , "W" , "T" , "F" , "S" ] , short : [ "Sun" , "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" ] , long : [ "Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" ] } , eras : { narrow : [ "ERA0" , "ERA1" ] , short : [ "ERA0" , "ERA1" ] , long : [ "ERA0" , "ERA1" ] } , dayPeriods : { am : "AM" , pm : "PM" } } , ethioaa : { months : { narrow : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "11" , "12" , "13" ] , short : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] , long : [ "Meskerem" , "Tekemt" , "Hedar" , "Tahsas" , "Ter" , "Yekatit" , "Megabit" , "Miazia" , "Genbot" , "Sene" , "Hamle" , "Nehasse" , "Pagumen" ] } , days : { narrow : [ "S" , "M" , "T" , "W"