diff --git a/Shrug-darwin-x64/LICENSE b/Shrug-darwin-x64/LICENSE
new file mode 100644
index 0000000..4d231b4
--- /dev/null
+++ b/Shrug-darwin-x64/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+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.
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Electron Framework b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Electron Framework
new file mode 120000
index 0000000..b0f7c45
--- /dev/null
+++ b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Electron Framework
@@ -0,0 +1 @@
+Versions/Current/Electron Framework
\ No newline at end of file
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Libraries b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Libraries
new file mode 120000
index 0000000..bc941ee
--- /dev/null
+++ b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Libraries
@@ -0,0 +1 @@
+Versions/Current/Libraries
\ No newline at end of file
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Resources b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Resources
new file mode 120000
index 0000000..953ee36
--- /dev/null
+++ b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
new file mode 100755
index 0000000..aeff35f
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/ffmpegsumo.so b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/ffmpegsumo.so
new file mode 100644
index 0000000..385c9c2
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/ffmpegsumo.so differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib
new file mode 100755
index 0000000..589d636
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
new file mode 100644
index 0000000..3fbb1fd
--- /dev/null
+++ b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ BuildMachineOSBuild
+ 13F34
+ CFBundleExecutable
+ Electron Framework Framework
+ CFBundleIdentifier
+ com.github.electron.framework
+ CFBundleName
+ Electron Framework Framework
+ CFBundlePackageType
+ FMWK
+ DTSDKBuild
+ 13C64
+ DTSDKName
+ macosx
+ DTXcode
+ 0511
+ DTXcodeBuild
+ 5B1008
+ NSSupportsAutomaticGraphicsSwitching
+
+
+
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib
new file mode 100644
index 0000000..2c70cf8
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/content_shell.pak b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/content_shell.pak
new file mode 100644
index 0000000..7ae41aa
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/content_shell.pak differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler
new file mode 100755
index 0000000..07c4204
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat
new file mode 100644
index 0000000..11e4e06
Binary files /dev/null and b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat differ
diff --git a/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
new file mode 100644
index 0000000..aba2901
--- /dev/null
+++ b/Shrug-darwin-x64/Shrug.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
@@ -0,0 +1,17363 @@
+debugÖ–
+"use strict";
+var kDefaultBacktraceLength=10;
+var Debug={};
+var sourceLineBeginningSkip=/^(?:\s*(?:\/\*.*?\*\/)*)*/;
+Debug.DebugEvent={Break:1,
+Exception:2,
+NewFunction:3,
+BeforeCompile:4,
+AfterCompile:5,
+CompileError:6,
+PromiseEvent:7,
+AsyncTaskEvent:8,
+BreakForCommand:9};
+Debug.ExceptionBreak={Caught:0,
+Uncaught:1};
+Debug.StepAction={StepOut:0,
+StepNext:1,
+StepIn:2,
+StepMin:3,
+StepInMin:4,
+StepFrame:5};
+Debug.ScriptType={Native:0,
+Extension:1,
+Normal:2};
+Debug.ScriptCompilationType={Host:0,
+Eval:1,
+JSON:2};
+Debug.ScriptBreakPointType={ScriptId:0,
+ScriptName:1,
+ScriptRegExp:2};
+Debug.BreakPositionAlignment={
+Statement:0,
+BreakPosition:1
+};
+function ScriptTypeFlag(a){
+return(1<0){
+this.ignoreCount_--;
+return false;
+}
+return true;
+};
+function IsBreakPointTriggered(a,b){
+return b.isTriggered(MakeExecutionState(a));
+}
+function ScriptBreakPoint(type,script_id_or_name,opt_line,opt_column,
+opt_groupId,opt_position_alignment){
+this.type_=type;
+if(type==Debug.ScriptBreakPointType.ScriptId){
+this.script_id_=script_id_or_name;
+}else if(type==Debug.ScriptBreakPointType.ScriptName){
+this.script_name_=script_id_or_name;
+}else if(type==Debug.ScriptBreakPointType.ScriptRegExp){
+this.script_regexp_object_=new RegExp(script_id_or_name);
+}else{
+throw new Error("Unexpected breakpoint type "+type);
+}
+this.line_=opt_line||0;
+this.column_=opt_column;
+this.groupId_=opt_groupId;
+this.position_alignment_=(opt_position_alignment===(void 0))
+?Debug.BreakPositionAlignment.Statement:opt_position_alignment;
+this.hit_count_=0;
+this.active_=true;
+this.condition_=null;
+this.ignoreCount_=0;
+this.break_points_=[];
+}
+ScriptBreakPoint.prototype.cloneForOtherScript=function(a){
+var b=new ScriptBreakPoint(Debug.ScriptBreakPointType.ScriptId,
+a.id,this.line_,this.column_,this.groupId_,
+this.position_alignment_);
+b.number_=next_break_point_number++;
+script_break_points.push(b);
+b.hit_count_=this.hit_count_;
+b.active_=this.active_;
+b.condition_=this.condition_;
+b.ignoreCount_=this.ignoreCount_;
+return b;
+};
+ScriptBreakPoint.prototype.number=function(){
+return this.number_;
+};
+ScriptBreakPoint.prototype.groupId=function(){
+return this.groupId_;
+};
+ScriptBreakPoint.prototype.type=function(){
+return this.type_;
+};
+ScriptBreakPoint.prototype.script_id=function(){
+return this.script_id_;
+};
+ScriptBreakPoint.prototype.script_name=function(){
+return this.script_name_;
+};
+ScriptBreakPoint.prototype.script_regexp_object=function(){
+return this.script_regexp_object_;
+};
+ScriptBreakPoint.prototype.line=function(){
+return this.line_;
+};
+ScriptBreakPoint.prototype.column=function(){
+return this.column_;
+};
+ScriptBreakPoint.prototype.actual_locations=function(){
+var a=[];
+for(var b=0;b=this.frameCount()){
+throw new Error('Illegal frame index.');
+}
+return new FrameMirror(this.break_id,a);
+};
+ExecutionState.prototype.setSelectedFrame=function(a){
+var b=%ToNumber(a);
+if(b<0||b>=this.frameCount())throw new Error('Illegal frame index.');
+this.selected_frame=b;
+};
+ExecutionState.prototype.selectedFrame=function(){
+return this.selected_frame;
+};
+ExecutionState.prototype.debugCommandProcessor=function(a){
+return new DebugCommandProcessor(this,a);
+};
+function MakeBreakEvent(a,b){
+return new BreakEvent(a,b);
+}
+function BreakEvent(a,b){
+this.frame_=new FrameMirror(a,0);
+this.break_points_hit_=b;
+}
+BreakEvent.prototype.eventType=function(){
+return Debug.DebugEvent.Break;
+};
+BreakEvent.prototype.func=function(){
+return this.frame_.func();
+};
+BreakEvent.prototype.sourceLine=function(){
+return this.frame_.sourceLine();
+};
+BreakEvent.prototype.sourceColumn=function(){
+return this.frame_.sourceColumn();
+};
+BreakEvent.prototype.sourceLineText=function(){
+return this.frame_.sourceLineText();
+};
+BreakEvent.prototype.breakPointsHit=function(){
+return this.break_points_hit_;
+};
+BreakEvent.prototype.toJSONProtocol=function(){
+var a={seq:next_response_seq++,
+type:"event",
+event:"break",
+body:{invocationText:this.frame_.invocationText()}
+};
+var b=this.func().script();
+if(b){
+a.body.sourceLine=this.sourceLine(),
+a.body.sourceColumn=this.sourceColumn(),
+a.body.sourceLineText=this.sourceLineText(),
+a.body.script=MakeScriptObject_(b,false);
+}
+if(this.breakPointsHit()){
+a.body.breakpoints=[];
+for(var c=0;c0){
+a.body.sourceLine=this.sourceLine();
+a.body.sourceColumn=this.sourceColumn();
+a.body.sourceLineText=this.sourceLineText();
+var b=this.func().script();
+if(b){
+a.body.script=MakeScriptObject_(b,false);
+}
+}else{
+a.body.sourceLine=-1;
+}
+return a.toJSONProtocol();
+};
+function MakeCompileEvent(a,b){
+return new CompileEvent(a,b);
+}
+function CompileEvent(a,b){
+this.script_=MakeMirror(a);
+this.type_=b;
+}
+CompileEvent.prototype.eventType=function(){
+return this.type_;
+};
+CompileEvent.prototype.script=function(){
+return this.script_;
+};
+CompileEvent.prototype.toJSONProtocol=function(){
+var a=new ProtocolMessage();
+a.running=true;
+switch(this.type_){
+case Debug.DebugEvent.BeforeCompile:
+a.event="beforeCompile";
+break;
+case Debug.DebugEvent.AfterCompile:
+a.event="afterCompile";
+break;
+case Debug.DebugEvent.CompileError:
+a.event="compileError";
+break;
+}
+a.body={};
+a.body.script=this.script_;
+return a.toJSONProtocol();
+};
+function MakeScriptObject_(a,b){
+var c={id:a.id(),
+name:a.name(),
+lineOffset:a.lineOffset(),
+columnOffset:a.columnOffset(),
+lineCount:a.lineCount(),
+};
+if(!(a.data()===(void 0))){
+c.data=a.data();
+}
+if(b){
+c.source=a.source();
+}
+return c;
+}
+function MakePromiseEvent(a){
+return new PromiseEvent(a);
+}
+function PromiseEvent(a){
+this.promise_=a.promise;
+this.parentPromise_=a.parentPromise;
+this.status_=a.status;
+this.value_=a.value;
+}
+PromiseEvent.prototype.promise=function(){
+return MakeMirror(this.promise_);
+}
+PromiseEvent.prototype.parentPromise=function(){
+return MakeMirror(this.parentPromise_);
+}
+PromiseEvent.prototype.status=function(){
+return this.status_;
+}
+PromiseEvent.prototype.value=function(){
+return MakeMirror(this.value_);
+}
+function MakeAsyncTaskEvent(a){
+return new AsyncTaskEvent(a);
+}
+function AsyncTaskEvent(a){
+this.type_=a.type;
+this.name_=a.name;
+this.id_=a.id;
+}
+AsyncTaskEvent.prototype.type=function(){
+return this.type_;
+}
+AsyncTaskEvent.prototype.name=function(){
+return this.name_;
+}
+AsyncTaskEvent.prototype.id=function(){
+return this.id_;
+}
+function DebugCommandProcessor(a,b){
+this.exec_state_=a;
+this.running_=b||false;
+}
+DebugCommandProcessor.prototype.processDebugRequest=function(a){
+return this.processDebugJSONRequest(a);
+};
+function ProtocolMessage(a){
+this.seq=next_response_seq++;
+if(a){
+this.type='response';
+this.request_seq=a.seq;
+this.command=a.command;
+}else{
+this.type='event';
+}
+this.success=true;
+this.running=undefined;
+}
+ProtocolMessage.prototype.setOption=function(a,b){
+if(!this.options_){
+this.options_={};
+}
+this.options_[a]=b;
+};
+ProtocolMessage.prototype.failed=function(a,b){
+this.success=false;
+this.message=a;
+if((%_IsObject(b))){
+this.error_details=b;
+}
+};
+ProtocolMessage.prototype.toJSONProtocol=function(){
+var a={};
+a.seq=this.seq;
+if(this.request_seq){
+a.request_seq=this.request_seq;
+}
+a.type=this.type;
+if(this.event){
+a.event=this.event;
+}
+if(this.command){
+a.command=this.command;
+}
+if(this.success){
+a.success=this.success;
+}else{
+a.success=false;
+}
+if(this.body){
+var b;
+var c=MakeMirrorSerializer(true,this.options_);
+if(this.body instanceof Mirror){
+b=c.serializeValue(this.body);
+}else if(this.body instanceof Array){
+b=[];
+for(var d=0;d=this.exec_state_.frameCount()){
+return b.failed('Invalid frame "'+d+'"');
+}
+b.body=this.exec_state_.frame(m).evaluate(
+c,Boolean(g),i);
+return;
+}else{
+b.body=this.exec_state_.frame().evaluate(
+c,Boolean(g),i);
+return;
+}
+};
+DebugCommandProcessor.prototype.lookupRequest_=function(a,b){
+if(!a.arguments){
+return b.failed('Missing arguments');
+}
+var c=a.arguments.handles;
+if((c===(void 0))){
+return b.failed('Argument "handles" missing');
+}
+if(!(a.arguments.includeSource===(void 0))){
+var d=%ToBoolean(a.arguments.includeSource);
+b.setOption('includeSource',d);
+}
+var e={};
+for(var g=0;g=this.exec_state_.frameCount()){
+return b.failed('Invalid frame "'+e+'"');
+}
+e=this.exec_state_.frame(g);
+}
+}
+var h=e.func().script();
+if(!h){
+return b.failed('No source');
+}
+var i=h.sourceSlice(c,d);
+if(!i){
+return b.failed('Invalid line interval');
+}
+b.body={};
+b.body.source=i.sourceText();
+b.body.fromLine=i.from_line;
+b.body.toLine=i.to_line;
+b.body.fromPosition=i.from_position;
+b.body.toPosition=i.to_position;
+b.body.totalLines=h.lineCount();
+};
+DebugCommandProcessor.prototype.scriptsRequest_=function(a,b){
+var c=ScriptTypeFlag(Debug.ScriptType.Normal);
+var d=false;
+var e=null;
+if(a.arguments){
+if(!(a.arguments.types===(void 0))){
+c=%ToNumber(a.arguments.types);
+if(isNaN(c)||c<0){
+return b.failed('Invalid types "'+
+a.arguments.types+'"');
+}
+}
+if(!(a.arguments.includeSource===(void 0))){
+d=%ToBoolean(a.arguments.includeSource);
+b.setOption('includeSource',d);
+}
+if((%_IsArray(a.arguments.ids))){
+e={};
+var g=a.arguments.ids;
+for(var h=0;h=0){
+n=true;
+}
+}
+if(!n)continue;
+}
+if(c&ScriptTypeFlag(l[h].type)){
+b.body.push(MakeMirror(l[h]));
+}
+}
+};
+DebugCommandProcessor.prototype.threadsRequest_=function(a,b){
+var c=this.exec_state_.threadCount();
+var d=[];
+for(var e=0;e=this.exec_state_.frameCount()){
+return response.failed('Invalid frame "'+a+'"');
+}
+b=this.exec_state_.frame(c);
+}else{
+b=this.exec_state_.frame();
+}
+var d=Debug.LiveEdit.RestartFrame(b);
+response.body={result:d};
+};
+DebugCommandProcessor.prototype.debuggerFlagsRequest_=function(request,
+response){
+if(!request.arguments){
+response.failed('Missing arguments');
+return;
+}
+var a=request.arguments.flags;
+response.body={flags:[]};
+if(!(a===(void 0))){
+for(var b=0;b";
+};
+function ValueMirror(a,b,c){
+%_CallFunction(this,a,Mirror);
+this.value_=b;
+if(!c){
+this.allocateHandle_();
+}else{
+this.allocateTransientHandle_();
+}
+}
+inherits(ValueMirror,Mirror);
+Mirror.prototype.handle=function(){
+return this.handle_;
+};
+ValueMirror.prototype.isPrimitive=function(){
+var a=this.type();
+return a==='undefined'||
+a==='null'||
+a==='boolean'||
+a==='number'||
+a==='string'||
+a==='symbol';
+};
+ValueMirror.prototype.value=function(){
+return this.value_;
+};
+function UndefinedMirror(){
+%_CallFunction(this,UNDEFINED_TYPE,(void 0),ValueMirror);
+}
+inherits(UndefinedMirror,ValueMirror);
+UndefinedMirror.prototype.toText=function(){
+return'undefined';
+};
+function NullMirror(){
+%_CallFunction(this,NULL_TYPE,null,ValueMirror);
+}
+inherits(NullMirror,ValueMirror);
+NullMirror.prototype.toText=function(){
+return'null';
+};
+function BooleanMirror(a){
+%_CallFunction(this,BOOLEAN_TYPE,a,ValueMirror);
+}
+inherits(BooleanMirror,ValueMirror);
+BooleanMirror.prototype.toText=function(){
+return this.value_?'true':'false';
+};
+function NumberMirror(a){
+%_CallFunction(this,NUMBER_TYPE,a,ValueMirror);
+}
+inherits(NumberMirror,ValueMirror);
+NumberMirror.prototype.toText=function(){
+return %_NumberToString(this.value_);
+};
+function StringMirror(a){
+%_CallFunction(this,STRING_TYPE,a,ValueMirror);
+}
+inherits(StringMirror,ValueMirror);
+StringMirror.prototype.length=function(){
+return this.value_.length;
+};
+StringMirror.prototype.getTruncatedValue=function(a){
+if(a!=-1&&this.length()>a){
+return this.value_.substring(0,a)+
+'... (length: '+this.length()+')';
+}
+return this.value_;
+};
+StringMirror.prototype.toText=function(){
+return this.getTruncatedValue(kMaxProtocolStringLength);
+};
+function SymbolMirror(a){
+%_CallFunction(this,SYMBOL_TYPE,a,ValueMirror);
+}
+inherits(SymbolMirror,ValueMirror);
+SymbolMirror.prototype.description=function(){
+return %SymbolDescription(%_ValueOf(this.value_));
+}
+SymbolMirror.prototype.toText=function(){
+return %_CallFunction(this.value_,builtins.$symbolToString);
+}
+function ObjectMirror(a,b,c){
+%_CallFunction(this,b||OBJECT_TYPE,a,c,ValueMirror);
+}
+inherits(ObjectMirror,ValueMirror);
+ObjectMirror.prototype.className=function(){
+return %_ClassOf(this.value_);
+};
+ObjectMirror.prototype.constructorFunction=function(){
+return MakeMirror(%DebugGetProperty(this.value_,'constructor'));
+};
+ObjectMirror.prototype.prototypeObject=function(){
+return MakeMirror(%DebugGetProperty(this.value_,'prototype'));
+};
+ObjectMirror.prototype.protoObject=function(){
+return MakeMirror(%DebugGetPrototype(this.value_));
+};
+ObjectMirror.prototype.hasNamedInterceptor=function(){
+var a=%GetInterceptorInfo(this.value_);
+return(a&2)!=0;
+};
+ObjectMirror.prototype.hasIndexedInterceptor=function(){
+var a=%GetInterceptorInfo(this.value_);
+return(a&1)!=0;
+};
+function TryGetPropertyNames(a){
+try{
+return %GetOwnPropertyNames(a,32);
+}catch(e){
+return[];
+}
+}
+ObjectMirror.prototype.propertyNames=function(a,b){
+a=a||PropertyKind.Named|PropertyKind.Indexed;
+var c;
+var d;
+var e=0;
+if(a&PropertyKind.Named){
+c=TryGetPropertyNames(this.value_);
+e+=c.length;
+if(this.hasNamedInterceptor()&&(a&PropertyKind.Named)){
+var g=
+%GetNamedInterceptorPropertyNames(this.value_);
+if(g){
+c=c.concat(g);
+e+=g.length;
+}
+}
+}
+if(a&PropertyKind.Indexed){
+d=%GetOwnElementNames(this.value_);
+e+=d.length;
+if(this.hasIndexedInterceptor()&&(a&PropertyKind.Indexed)){
+var h=
+%GetIndexedInterceptorElementNames(this.value_);
+if(h){
+d=d.concat(h);
+e+=h.length;
+}
+}
+}
+b=Math.min(b||e,e);
+var i=new Array(b);
+var j=0;
+if(a&PropertyKind.Named){
+for(var k=0;j';
+};
+ObjectMirror.GetInternalProperties=function(a){
+if((%_ClassOf(a)==='String')||(%_ClassOf(a)==='Number')||
+(%_ClassOf(a)==='Boolean')){
+var b=%_ValueOf(a);
+return[new InternalPropertyMirror("[[PrimitiveValue]]",b)];
+}else if((%_IsFunction(a))){
+var c=%BoundFunctionGetBindings(a);
+var d=[];
+if(c&&(%_IsArray(c))){
+d.push(new InternalPropertyMirror("[[TargetFunction]]",
+c[0]));
+d.push(new InternalPropertyMirror("[[BoundThis]]",c[1]));
+var e=[];
+for(var g=2;gb)return new Array();
+var c=new Array(b-a+1);
+for(var d=a;d<=b;d++){
+var e=%DebugGetPropertyDetails(this.value_,%ToString(d));
+var g;
+if(e){
+g=new PropertyMirror(this,d,e);
+}else{
+g=GetUndefinedMirror();
+}
+c[d-a]=g;
+}
+return c;
+};
+function DateMirror(a){
+%_CallFunction(this,a,ObjectMirror);
+}
+inherits(DateMirror,ObjectMirror);
+DateMirror.prototype.toText=function(){
+var a=JSON.stringify(this.value_);
+return a.substring(1,a.length-1);
+};
+function RegExpMirror(a){
+%_CallFunction(this,a,REGEXP_TYPE,ObjectMirror);
+}
+inherits(RegExpMirror,ObjectMirror);
+RegExpMirror.prototype.source=function(){
+return this.value_.source;
+};
+RegExpMirror.prototype.global=function(){
+return this.value_.global;
+};
+RegExpMirror.prototype.ignoreCase=function(){
+return this.value_.ignoreCase;
+};
+RegExpMirror.prototype.multiline=function(){
+return this.value_.multiline;
+};
+RegExpMirror.prototype.sticky=function(){
+return this.value_.sticky;
+};
+RegExpMirror.prototype.unicode=function(){
+return this.value_.unicode;
+};
+RegExpMirror.prototype.toText=function(){
+return"/"+this.source()+"/";
+};
+function ErrorMirror(a){
+%_CallFunction(this,a,ERROR_TYPE,ObjectMirror);
+}
+inherits(ErrorMirror,ObjectMirror);
+ErrorMirror.prototype.message=function(){
+return this.value_.message;
+};
+ErrorMirror.prototype.toText=function(){
+var a;
+try{
+a=%_CallFunction(this.value_,builtins.ErrorToString);
+}catch(e){
+a='#';
+}
+return a;
+};
+function PromiseMirror(a){
+%_CallFunction(this,a,PROMISE_TYPE,ObjectMirror);
+}
+inherits(PromiseMirror,ObjectMirror);
+function PromiseGetStatus_(a){
+var b=%DebugGetProperty(a,builtins.promiseStatus);
+if(b==0)return"pending";
+if(b==1)return"resolved";
+return"rejected";
+}
+function PromiseGetValue_(a){
+return %DebugGetProperty(a,builtins.promiseValue);
+}
+PromiseMirror.prototype.status=function(){
+return PromiseGetStatus_(this.value_);
+};
+PromiseMirror.prototype.promiseValue=function(){
+return MakeMirror(PromiseGetValue_(this.value_));
+};
+function MapMirror(a){
+%_CallFunction(this,a,MAP_TYPE,ObjectMirror);
+}
+inherits(MapMirror,ObjectMirror);
+MapMirror.prototype.entries=function(a){
+var b=[];
+if((%_ClassOf(this.value_)==='WeakMap')){
+var c=%GetWeakMapEntries(this.value_,a||0);
+for(var d=0;d3){
+this.exception_=c[3];
+this.getter_=c[4];
+this.setter_=c[5];
+}
+}
+inherits(PropertyMirror,Mirror);
+PropertyMirror.prototype.isReadOnly=function(){
+return(this.attributes()&PropertyAttribute.ReadOnly)!=0;
+};
+PropertyMirror.prototype.isEnum=function(){
+return(this.attributes()&PropertyAttribute.DontEnum)==0;
+};
+PropertyMirror.prototype.canDelete=function(){
+return(this.attributes()&PropertyAttribute.DontDelete)==0;
+};
+PropertyMirror.prototype.name=function(){
+return this.name_;
+};
+PropertyMirror.prototype.isIndexed=function(){
+for(var a=0;a0;
+};
+FrameDetails.prototype.inlinedFrameIndex=function(){
+%CheckExecutionState(this.break_id_);
+var a=kFrameDetailsFlagInlinedFrameIndexMask;
+return(this.details_[kFrameDetailsFlagsIndex]&a)>>2;
+};
+FrameDetails.prototype.argumentCount=function(){
+%CheckExecutionState(this.break_id_);
+return this.details_[kFrameDetailsArgumentCountIndex];
+};
+FrameDetails.prototype.argumentName=function(a){
+%CheckExecutionState(this.break_id_);
+if(a>=0&&a=0&&a=0&&a=0&&a0){
+for(var c=0;c0){
+a+=this.lineOffset();
+a+='-';
+a+=this.lineOffset()+this.lineCount()-1;
+}else{
+a+=this.lineCount();
+}
+a+=')';
+return a;
+};
+function ContextMirror(a){
+%_CallFunction(this,CONTEXT_TYPE,Mirror);
+this.data_=a;
+this.allocateHandle_();
+}
+inherits(ContextMirror,Mirror);
+ContextMirror.prototype.data=function(){
+return this.data_;
+};
+function MakeMirrorSerializer(a,b){
+return new JSONProtocolSerializer(a,b);
+}
+function JSONProtocolSerializer(a,b){
+this.details_=a;
+this.options_=b;
+this.mirrors_=[];
+}
+JSONProtocolSerializer.prototype.serializeReference=function(a){
+return this.serialize_(a,true,true);
+};
+JSONProtocolSerializer.prototype.serializeValue=function(a){
+var b=this.serialize_(a,false,true);
+return b;
+};
+JSONProtocolSerializer.prototype.serializeReferencedObjects=function(){
+var a=[];
+var b=this.mirrors_.length;
+for(var c=0;cthis.maxStringLength_()){
+var b=mirror.getTruncatedValue(this.maxStringLength_());
+a.value=b;
+a.fromIndex=0;
+a.toIndex=this.maxStringLength_();
+}else{
+a.value=mirror.value();
+}
+a.length=mirror.length();
+break;
+case SYMBOL_TYPE:
+a.description=mirror.description();
+break;
+case OBJECT_TYPE:
+case FUNCTION_TYPE:
+case ERROR_TYPE:
+case REGEXP_TYPE:
+case PROMISE_TYPE:
+case GENERATOR_TYPE:
+this.serializeObject_(mirror,a,details);
+break;
+case PROPERTY_TYPE:
+case INTERNAL_PROPERTY_TYPE:
+throw new Error('PropertyMirror cannot be serialized independently');
+break;
+case FRAME_TYPE:
+this.serializeFrame_(mirror,a);
+break;
+case SCOPE_TYPE:
+this.serializeScope_(mirror,a);
+break;
+case SCRIPT_TYPE:
+if(mirror.name()){
+a.name=mirror.name();
+}
+a.id=mirror.id();
+a.lineOffset=mirror.lineOffset();
+a.columnOffset=mirror.columnOffset();
+a.lineCount=mirror.lineCount();
+if(mirror.data()){
+a.data=mirror.data();
+}
+if(this.includeSource_()){
+a.source=mirror.source();
+}else{
+var c=mirror.source().substring(0,80);
+a.sourceStart=c;
+}
+a.sourceLength=mirror.source().length;
+a.scriptType=mirror.scriptType();
+a.compilationType=mirror.compilationType();
+if(mirror.compilationType()==1&&
+mirror.evalFromScript()){
+a.evalFromScript=
+this.serializeReference(mirror.evalFromScript());
+var d=mirror.evalFromLocation();
+if(d){
+a.evalFromLocation={line:d.line,
+column:d.column};
+}
+if(mirror.evalFromFunctionName()){
+a.evalFromFunctionName=mirror.evalFromFunctionName();
+}
+}
+if(mirror.context()){
+a.context=this.serializeReference(mirror.context());
+}
+break;
+case CONTEXT_TYPE:
+a.data=mirror.data();
+break;
+}
+a.text=mirror.toText();
+return a;
+};
+JSONProtocolSerializer.prototype.serializeObject_=function(mirror,content,
+details){
+content.className=mirror.className();
+content.constructorFunction=
+this.serializeReference(mirror.constructorFunction());
+content.protoObject=this.serializeReference(mirror.protoObject());
+content.prototypeObject=this.serializeReference(mirror.prototypeObject());
+if(mirror.hasNamedInterceptor()){
+content.namedInterceptor=true;
+}
+if(mirror.hasIndexedInterceptor()){
+content.indexedInterceptor=true;
+}
+if(mirror.isFunction()){
+content.name=mirror.name();
+if(!(mirror.inferredName()===(void 0))){
+content.inferredName=mirror.inferredName();
+}
+content.resolved=mirror.resolved();
+if(mirror.resolved()){
+content.source=mirror.source();
+}
+if(mirror.script()){
+content.script=this.serializeReference(mirror.script());
+content.scriptId=mirror.script().id();
+serializeLocationFields(mirror.sourceLocation(),content);
+}
+content.scopes=[];
+for(var a=0;a0){
+var i=[];
+for(var a=0;a0){
+return'Infinity';
+}else{
+return'-Infinity';
+}
+}
+return a;
+}
+
+ liveeditÁø
+"use strict";
+Debug.LiveEdit=new function(){
+var a;
+var b="stack_update_needs_step_in";
+function ApplyPatchMultiChunk(script,diff_array,new_source,preview_only,
+change_log){
+var c=script.source;
+var d=GatherCompileInfo(c,script);
+var e=BuildCodeInfoTree(d);
+var g=new PosTranslator(diff_array);
+MarkChangedFunctions(e,g.GetChunks());
+FindLiveSharedInfos(e,script);
+var h;
+try{
+h=GatherCompileInfo(new_source,script);
+}catch(e){
+var i=
+new Failure("Failed to compile new version of script: "+e);
+if(e instanceof SyntaxError){
+var j={
+type:"liveedit_compile_error",
+syntaxErrorMessage:e.message
+};
+CopyErrorPositionToDetails(e,j);
+i.details=j;
+}
+throw i;
+}
+var k=BuildCodeInfoTree(h);
+FindCorrespondingFunctions(e,k);
+var l=new Array();
+var m=new Array();
+var n=new Array();
+var o=new Array();
+function HarvestTodo(p){
+function CollectDamaged(q){
+m.push(q);
+for(var r=0;rI[x].start_position){
+K=x;
+}
+}
+if(K!=r){
+var L=I[K];
+var M=J[K];
+I[K]=I[r];
+J[K]=J[r];
+I[r]=L;
+J[r]=M;
+}
+}
+var N=0;
+function ResetIndexes(O,P){
+var Q=-1;
+while(N=aE.pos1+aE.len1){
+return ay+aE.pos2+aE.len2-aE.pos1-aE.len1;
+}
+if(!az){
+az=PosTranslator.DefaultInsideChunkHandler;
+}
+return az(ay,aE);
+};
+PosTranslator.DefaultInsideChunkHandler=function(ay,aF){
+Assert(false,"Cannot translate position in changed area");
+};
+PosTranslator.ShiftWithTopInsideChunkHandler=
+function(ay,aF){
+return ay-aF.pos1+aF.pos2;
+};
+var a={
+UNCHANGED:"unchanged",
+SOURCE_CHANGED:"source changed",
+CHANGED:"changed",
+DAMAGED:"damaged"
+};
+function CodeInfoTreeNode(aG,aH,aI){
+this.info=aG;
+this.children=aH;
+this.array_index=aI;
+this.parent=(void 0);
+this.status=a.UNCHANGED;
+this.status_explanation=(void 0);
+this.new_start_pos=(void 0);
+this.new_end_pos=(void 0);
+this.corresponding_node=(void 0);
+this.unmatched_new_nodes=(void 0);
+this.textual_corresponding_node=(void 0);
+this.textually_unmatched_new_nodes=(void 0);
+this.live_shared_function_infos=(void 0);
+}
+function BuildCodeInfoTree(aJ){
+var aK=0;
+function BuildNode(){
+var aL=aK;
+aK++;
+var aM=new Array();
+while(aK=as.length;};
+this.TranslatePos=function(ay){return ay+aR;};
+};
+function ProcessInternals(aS){
+aS.new_start_pos=aP.TranslatePos(
+aS.info.start_position);
+var aT=0;
+var aU=false;
+var aV=false;
+while(!aP.done()&&
+aP.current().pos1=
+aP.current().pos1+aP.current().len1){
+aU=true;
+aP.next();
+continue;
+}else if(aW.info.start_position<=aP.current().pos1&&
+aW.info.end_position>=aP.current().pos1+
+aP.current().len1){
+ProcessInternals(aW);
+aV=aV||
+(aW.status!=a.UNCHANGED);
+aU=aU||
+(aW.status==a.DAMAGED);
+aT++;
+continue;
+}else{
+aU=true;
+aW.status=a.DAMAGED;
+aW.status_explanation=
+"Text diff overlaps with function boundary";
+aT++;
+continue;
+}
+}else{
+if(aP.current().pos1+aP.current().len1<=
+aS.info.end_position){
+aS.status=a.CHANGED;
+aP.next();
+continue;
+}else{
+aS.status=a.DAMAGED;
+aS.status_explanation=
+"Text diff overlaps with function boundary";
+return;
+}
+}
+Assert("Unreachable",false);
+}
+while(aT0){
+return bj;
+}
+}
+function TraverseTree(q){
+q.live_shared_function_infos=FindFunctionInfos(q.info);
+for(var r=0;r ["+br+"]";
+}
+return;
+}
+var bs;
+function CheckStackActivations(bt,S){
+var bu=new Array();
+for(var r=0;r0){
+S.push({dropped_from_stack:bx});
+}
+if(bw.length>0){
+S.push({functions_on_stack:bw});
+throw new Failure("Blocked by functions on stack");
+}
+return bx.length;
+}
+var bs={
+AVAILABLE_FOR_PATCH:1,
+BLOCKED_ON_ACTIVE_STACK:2,
+BLOCKED_ON_OTHER_STACK:3,
+BLOCKED_UNDER_NATIVE_CODE:4,
+REPLACED_ON_ACTIVE_STACK:5,
+BLOCKED_UNDER_GENERATOR:6,
+BLOCKED_ACTIVE_GENERATOR:7
+};
+bs.SymbolName=function(bA){
+var bB=bs;
+for(var bC in bB){
+if(bB[bC]==bA){
+return bC;
+}
+}
+};
+function Failure(am){
+this.message=am;
+}
+this.Failure=Failure;
+Failure.prototype.toString=function(){
+return"LiveEdit Failure: "+this.message;
+};
+function CopyErrorPositionToDetails(bD,j){
+function createPositionStruct(G,bE){
+if(bE==-1)return;
+var bF=G.locationFromPosition(bE,true);
+if(bF==null)return;
+return{
+line:bF.line+1,
+column:bF.column+1,
+position:bE
+};
+}
+if(!("scriptObject"in bD)||!("startPosition"in bD)){
+return;
+}
+var G=bD.scriptObject;
+var bG={
+start:createPositionStruct(G,bD.startPosition),
+end:createPositionStruct(G,bD.endPosition)
+};
+j.position=bG;
+}
+function GetPcFromSourcePos(bH,bI){
+return %GetFunctionCodePositionFromSource(bH,bI);
+}
+this.GetPcFromSourcePos=GetPcFromSourcePos;
+function SetScriptSource(G,bJ,bK,S){
+var c=G.source;
+var bL=CompareStrings(c,bJ);
+return ApplyPatchMultiChunk(G,bL,bJ,bK,
+S);
+}
+this.SetScriptSource=SetScriptSource;
+function CompareStrings(bM,bN){
+return %LiveEditCompareStrings(bM,bN);
+}
+function ApplySingleChunkPatch(G,change_pos,change_len,new_str,
+S){
+var c=G.source;
+var bJ=c.substring(0,change_pos)+
+new_str+c.substring(change_pos+change_len);
+return ApplyPatchMultiChunk(G,
+[change_pos,change_pos+change_len,change_pos+new_str.length],
+bJ,false,S);
+}
+function DescribeChangeTree(aX){
+function ProcessOldNode(q){
+var bO=[];
+for(var r=0;r=0&&b<0x800000&&
+(%_ClassOf(this)==='Function')){
+return b;
+}
+}
+b=(a==null)?0:%ToUint32(a.length);
+if(b>0x800000){
+throw %MakeRangeError('stack_overflow',[]);
+}
+if(!(%_ClassOf(this)==='Function')){
+throw %MakeTypeError('apply_non_function',
+[%ToString(this),typeof this]);
+}
+if(a!=null&&!(%_IsSpecObject(a))){
+throw %MakeTypeError('apply_wrong_args',[]);
+}
+return b;
+}
+function REFLECT_APPLY_PREPARE(a){
+var b;
+if((%_IsArray(a))){
+b=a.length;
+if(%_IsSmi(b)&&b>=0&&b<0x800000&&
+(%_ClassOf(this)==='Function')){
+return b;
+}
+}
+if(!(%_ClassOf(this)==='Function')){
+throw %MakeTypeError('called_non_callable',[%ToString(this)]);
+}
+if(!(%_IsSpecObject(a))){
+throw %MakeTypeError('reflect_apply_wrong_args',[]);
+}
+b=%ToLength(a.length);
+if(b>0x800000){
+throw %MakeRangeError('stack_overflow',[]);
+}
+return b;
+}
+function REFLECT_CONSTRUCT_PREPARE(a,b){
+var c;
+var d=(%_ClassOf(this)==='Function')&&%IsConstructor(this);
+var e=(%_ClassOf(b)==='Function')&&%IsConstructor(b);
+if((%_IsArray(a))){
+c=a.length;
+if(%_IsSmi(c)&&c>=0&&c<0x800000&&
+d&&e){
+return c;
+}
+}
+if(!d){
+if(!(%_ClassOf(this)==='Function')){
+throw %MakeTypeError('called_non_callable',[%ToString(this)]);
+}else{
+throw %MakeTypeError('not_constructor',[%ToString(this)]);
+}
+}
+if(!e){
+if(!(%_ClassOf(b)==='Function')){
+throw %MakeTypeError('called_non_callable',[%ToString(b)]);
+}else{
+throw %MakeTypeError('not_constructor',[%ToString(b)]);
+}
+}
+if(!(%_IsSpecObject(a))){
+throw %MakeTypeError('reflect_construct_wrong_args',[]);
+}
+c=%ToLength(a.length);
+if(c>0x800000){
+throw %MakeRangeError('stack_overflow',[]);
+}
+return c;
+}
+function STACK_OVERFLOW(a){
+throw %MakeRangeError('stack_overflow',[]);
+}
+function TO_OBJECT(){
+return %ToObject(this);
+}
+function TO_NUMBER(){
+return %ToNumber(this);
+}
+function TO_STRING(){
+return %ToString(this);
+}
+function TO_NAME(){
+return %ToName(this);
+}
+function ToPrimitive(a,b){
+if((typeof(a)==='string'))return a;
+if(!(%_IsSpecObject(a)))return a;
+if((%_ClassOf(a)==='Symbol'))throw MakeTypeError('symbol_to_primitive',[]);
+if(b==0)b=((%_ClassOf(a)==='Date'))?2:1;
+return(b==1)?%DefaultNumber(a):%DefaultString(a);
+}
+function ToBoolean(a){
+if((typeof(a)==='boolean'))return a;
+if((typeof(a)==='string'))return a.length!=0;
+if(a==null)return false;
+if((typeof(a)==='number'))return!((a==0)||(!%_IsSmi(%IS_VAR(a))&&!(a==a)));
+return true;
+}
+function ToNumber(a){
+if((typeof(a)==='number'))return a;
+if((typeof(a)==='string')){
+return %_HasCachedArrayIndex(a)?%_GetCachedArrayIndex(a)
+:%StringToNumber(a);
+}
+if((typeof(a)==='boolean'))return a?1:0;
+if((a===(void 0)))return $NaN;
+if((typeof(a)==='symbol'))throw MakeTypeError('symbol_to_number',[]);
+return((a===null))?0:ToNumber(%DefaultNumber(a));
+}
+function NonNumberToNumber(a){
+if((typeof(a)==='string')){
+return %_HasCachedArrayIndex(a)?%_GetCachedArrayIndex(a)
+:%StringToNumber(a);
+}
+if((typeof(a)==='boolean'))return a?1:0;
+if((a===(void 0)))return $NaN;
+if((typeof(a)==='symbol'))throw MakeTypeError('symbol_to_number',[]);
+return((a===null))?0:ToNumber(%DefaultNumber(a));
+}
+function ToString(a){
+if((typeof(a)==='string'))return a;
+if((typeof(a)==='number'))return %_NumberToString(a);
+if((typeof(a)==='boolean'))return a?'true':'false';
+if((a===(void 0)))return'undefined';
+if((typeof(a)==='symbol'))throw %MakeTypeError('symbol_to_string',[]);
+return((a===null))?'null':%ToString(%DefaultString(a));
+}
+function NonStringToString(a){
+if((typeof(a)==='number'))return %_NumberToString(a);
+if((typeof(a)==='boolean'))return a?'true':'false';
+if((a===(void 0)))return'undefined';
+if((typeof(a)==='symbol'))throw %MakeTypeError('symbol_to_string',[]);
+return((a===null))?'null':%ToString(%DefaultString(a));
+}
+function ToName(a){
+return(typeof(a)==='symbol')?a:%ToString(a);
+}
+function ToObject(a){
+if((typeof(a)==='string'))return new $String(a);
+if((typeof(a)==='number'))return new $Number(a);
+if((typeof(a)==='boolean'))return new $Boolean(a);
+if((typeof(a)==='symbol'))return %NewSymbolWrapper(a);
+if((a==null)&&!(%_IsUndetectableObject(a))){
+throw %MakeTypeError('undefined_or_null_to_object',[]);
+}
+return a;
+}
+function ToInteger(a){
+if(%_IsSmi(a))return a;
+return %NumberToInteger(ToNumber(a));
+}
+function ToLength(a){
+a=ToInteger(a);
+if(a<0)return 0;
+return a<$Number.MAX_SAFE_INTEGER?a:$Number.MAX_SAFE_INTEGER;
+}
+function ToUint32(a){
+if(%_IsSmi(a)&&a>=0)return a;
+return %NumberToJSUint32(ToNumber(a));
+}
+function ToInt32(a){
+if(%_IsSmi(a))return a;
+return %NumberToJSInt32(ToNumber(a));
+}
+function SameValue(a,b){
+if(typeof a!=typeof b)return false;
+if((typeof(a)==='number')){
+if((!%_IsSmi(%IS_VAR(a))&&!(a==a))&&(!%_IsSmi(%IS_VAR(b))&&!(b==b)))return true;
+if(a===0&&b===0&&%_IsMinusZero(a)!=%_IsMinusZero(b)){
+return false;
+}
+}
+return a===b;
+}
+function SameValueZero(a,b){
+if(typeof a!=typeof b)return false;
+if((typeof(a)==='number')){
+if((!%_IsSmi(%IS_VAR(a))&&!(a==a))&&(!%_IsSmi(%IS_VAR(b))&&!(b==b)))return true;
+}
+return a===b;
+}
+function IsPrimitive(a){
+return!(%_IsSpecObject(a));
+}
+function IsConcatSpreadable(a){
+if(!(%_IsSpecObject(a)))return false;
+var b=a[symbolIsConcatSpreadable];
+if((b===(void 0)))return(%_IsArray(a));
+return ToBoolean(b);
+}
+function DefaultNumber(a){
+if(!(%_ClassOf(a)==='Symbol')){
+var b=a.valueOf;
+if((%_ClassOf(b)==='Function')){
+var c=%_CallFunction(a,b);
+if(%IsPrimitive(c))return c;
+}
+var d=a.toString;
+if((%_ClassOf(d)==='Function')){
+var e=%_CallFunction(a,d);
+if(%IsPrimitive(e))return e;
+}
+}
+throw %MakeTypeError('cannot_convert_to_primitive',[]);
+}
+function DefaultString(a){
+if(!(%_ClassOf(a)==='Symbol')){
+var b=a.toString;
+if((%_ClassOf(b)==='Function')){
+var c=%_CallFunction(a,b);
+if(%IsPrimitive(c))return c;
+}
+var d=a.valueOf;
+if((%_ClassOf(d)==='Function')){
+var e=%_CallFunction(a,d);
+if(%IsPrimitive(e))return e;
+}
+}
+throw %MakeTypeError('cannot_convert_to_primitive',[]);
+}
+function ToPositiveInteger(a,b){
+var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToIntegerMapMinusZero(ToNumber(a)));
+if(c<0)throw MakeRangeError(b);
+return c;
+}
+%FunctionSetPrototype($Array,new $Array(0));
+function STRING_LENGTH_STUB(a){
+var b=this;
+return %_StringGetLength(%_JSValueGetValue(b));
+}
+
+$v8natives’ø
+var $isNaN=GlobalIsNaN;
+var $isFinite=GlobalIsFinite;
+function InstallFunctions(a,b,c){
+if(c.length>=8){
+%OptimizeObjectForAddingMultipleProperties(a,c.length>>1);
+}
+for(var d=0;d=4){
+%OptimizeObjectForAddingMultipleProperties(a,b.length>>1);
+}
+var c=2|4|1;
+for(var d=0;d>1)+(b?b.length:0);
+if(e>=4){
+%OptimizeObjectForAddingMultipleProperties(d,e);
+}
+if(b){
+for(var g=0;g>0));
+if(!(b==0||(2<=b&&b<=36))){
+return $NaN;
+}
+}
+if(%_HasCachedArrayIndex(a)&&
+(b==0||b==10)){
+return %_GetCachedArrayIndex(a);
+}
+return %StringParseInt(a,b);
+}
+function GlobalParseFloat(a){
+a=((typeof(%IS_VAR(a))==='string')?a:NonStringToString(a));
+if(%_HasCachedArrayIndex(a))return %_GetCachedArrayIndex(a);
+return %StringParseFloat(a);
+}
+function GlobalEval(a){
+if(!(typeof(a)==='string'))return a;
+var b=%GlobalProxy(global);
+var c=%CompileString(a,false,0);
+if(!(%_IsFunction(c)))return c;
+return %_CallFunction(b,c);
+}
+function SetUpGlobal(){
+%CheckIsBootstrapping();
+var a=2|4|1;
+%AddNamedProperty(global,"NaN",$NaN,a);
+%AddNamedProperty(global,"Infinity",(1/0),a);
+%AddNamedProperty(global,"undefined",(void 0),a);
+InstallFunctions(global,2,$Array(
+"isNaN",GlobalIsNaN,
+"isFinite",GlobalIsFinite,
+"parseInt",GlobalParseInt,
+"parseFloat",GlobalParseFloat,
+"eval",GlobalEval
+));
+}
+SetUpGlobal();
+var DefaultObjectToString=NoSideEffectsObjectToString;
+function NoSideEffectsObjectToString(){
+if((this===(void 0))&&!(%_IsUndetectableObject(this)))return"[object Undefined]";
+if((this===null))return"[object Null]";
+return"[object "+%_ClassOf(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)))+"]";
+}
+function ObjectToLocaleString(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Object.prototype.toLocaleString"]);
+return this.toString();
+}
+function ObjectValueOf(){
+return((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
+}
+function ObjectHasOwnProperty(a){
+if(%_IsJSProxy(this)){
+if((typeof(a)==='symbol'))return false;
+var b=%GetHandler(this);
+return CallTrap1(b,"hasOwn",DerivedHasOwnTrap,ToName(a));
+}
+return %HasOwnProperty(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)),ToName(a));
+}
+function ObjectIsPrototypeOf(a){
+if(!(%_IsSpecObject(a)))return false;
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Object.prototype.isPrototypeOf"]);
+return %IsInPrototypeChain(this,a);
+}
+function ObjectPropertyIsEnumerable(a){
+var b=ToName(a);
+if(%_IsJSProxy(this)){
+if((typeof(a)==='symbol'))return false;
+var c=GetOwnPropertyJS(this,b);
+return(c===(void 0))?false:c.isEnumerable();
+}
+return %IsPropertyEnumerable(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)),b);
+}
+function ObjectDefineGetter(a,b){
+var c=this;
+if(c==null&&!(%_IsUndetectableObject(c))){
+c=%GlobalProxy(global);
+}
+if(!(%_ClassOf(b)==='Function')){
+throw new $TypeError(
+'Object.prototype.__defineGetter__: Expecting function');
+}
+var d=new PropertyDescriptor();
+d.setGet(b);
+d.setEnumerable(true);
+d.setConfigurable(true);
+DefineOwnProperty(((%_IsSpecObject(%IS_VAR(c)))?c:ToObject(c)),ToName(a),d,false);
+}
+function ObjectLookupGetter(a){
+var b=this;
+if(b==null&&!(%_IsUndetectableObject(b))){
+b=%GlobalProxy(global);
+}
+return %LookupAccessor(((%_IsSpecObject(%IS_VAR(b)))?b:ToObject(b)),ToName(a),0);
+}
+function ObjectDefineSetter(a,b){
+var c=this;
+if(c==null&&!(%_IsUndetectableObject(c))){
+c=%GlobalProxy(global);
+}
+if(!(%_ClassOf(b)==='Function')){
+throw new $TypeError(
+'Object.prototype.__defineSetter__: Expecting function');
+}
+var d=new PropertyDescriptor();
+d.setSet(b);
+d.setEnumerable(true);
+d.setConfigurable(true);
+DefineOwnProperty(((%_IsSpecObject(%IS_VAR(c)))?c:ToObject(c)),ToName(a),d,false);
+}
+function ObjectLookupSetter(a){
+var b=this;
+if(b==null&&!(%_IsUndetectableObject(b))){
+b=%GlobalProxy(global);
+}
+return %LookupAccessor(((%_IsSpecObject(%IS_VAR(b)))?b:ToObject(b)),ToName(a),1);
+}
+function ObjectKeys(a){
+a=((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a));
+if(%_IsJSProxy(a)){
+var b=%GetHandler(a);
+var c=CallTrap0(b,"keys",DerivedKeysTrap);
+return ToNameArray(c,"keys",false);
+}
+return %OwnKeys(a);
+}
+function IsAccessorDescriptor(a){
+if((a===(void 0)))return false;
+return a.hasGetter()||a.hasSetter();
+}
+function IsDataDescriptor(a){
+if((a===(void 0)))return false;
+return a.hasValue()||a.hasWritable();
+}
+function IsGenericDescriptor(a){
+if((a===(void 0)))return false;
+return!(IsAccessorDescriptor(a)||IsDataDescriptor(a));
+}
+function IsInconsistentDescriptor(a){
+return IsAccessorDescriptor(a)&&IsDataDescriptor(a);
+}
+function FromPropertyDescriptor(a){
+if((a===(void 0)))return a;
+if(IsDataDescriptor(a)){
+return{value:a.getValue(),
+writable:a.isWritable(),
+enumerable:a.isEnumerable(),
+configurable:a.isConfigurable()};
+}
+return{get:a.getGet(),
+set:a.getSet(),
+enumerable:a.isEnumerable(),
+configurable:a.isConfigurable()};
+}
+function FromGenericPropertyDescriptor(a){
+if((a===(void 0)))return a;
+var b=new $Object();
+if(a.hasValue()){
+%AddNamedProperty(b,"value",a.getValue(),0);
+}
+if(a.hasWritable()){
+%AddNamedProperty(b,"writable",a.isWritable(),0);
+}
+if(a.hasGetter()){
+%AddNamedProperty(b,"get",a.getGet(),0);
+}
+if(a.hasSetter()){
+%AddNamedProperty(b,"set",a.getSet(),0);
+}
+if(a.hasEnumerable()){
+%AddNamedProperty(b,"enumerable",a.isEnumerable(),0);
+}
+if(a.hasConfigurable()){
+%AddNamedProperty(b,"configurable",a.isConfigurable(),0);
+}
+return b;
+}
+function ToPropertyDescriptor(a){
+if(!(%_IsSpecObject(a))){
+throw MakeTypeError("property_desc_object",[a]);
+}
+var b=new PropertyDescriptor();
+if("enumerable"in a){
+b.setEnumerable(ToBoolean(a.enumerable));
+}
+if("configurable"in a){
+b.setConfigurable(ToBoolean(a.configurable));
+}
+if("value"in a){
+b.setValue(a.value);
+}
+if("writable"in a){
+b.setWritable(ToBoolean(a.writable));
+}
+if("get"in a){
+var c=a.get;
+if(!(c===(void 0))&&!(%_ClassOf(c)==='Function')){
+throw MakeTypeError("getter_must_be_callable",[c]);
+}
+b.setGet(c);
+}
+if("set"in a){
+var d=a.set;
+if(!(d===(void 0))&&!(%_ClassOf(d)==='Function')){
+throw MakeTypeError("setter_must_be_callable",[d]);
+}
+b.setSet(d);
+}
+if(IsInconsistentDescriptor(b)){
+throw MakeTypeError("value_and_accessor",[a]);
+}
+return b;
+}
+function ToCompletePropertyDescriptor(a){
+var b=ToPropertyDescriptor(a);
+if(IsGenericDescriptor(b)||IsDataDescriptor(b)){
+if(!b.hasValue())b.setValue((void 0));
+if(!b.hasWritable())b.setWritable(false);
+}else{
+if(!b.hasGetter())b.setGet((void 0));
+if(!b.hasSetter())b.setSet((void 0));
+}
+if(!b.hasEnumerable())b.setEnumerable(false);
+if(!b.hasConfigurable())b.setConfigurable(false);
+return b;
+}
+function PropertyDescriptor(){
+this.value_=(void 0);
+this.hasValue_=false;
+this.writable_=false;
+this.hasWritable_=false;
+this.enumerable_=false;
+this.hasEnumerable_=false;
+this.configurable_=false;
+this.hasConfigurable_=false;
+this.get_=(void 0);
+this.hasGetter_=false;
+this.set_=(void 0);
+this.hasSetter_=false;
+}
+SetUpLockedPrototype(PropertyDescriptor,$Array(
+"value_",
+"hasValue_",
+"writable_",
+"hasWritable_",
+"enumerable_",
+"hasEnumerable_",
+"configurable_",
+"hasConfigurable_",
+"get_",
+"hasGetter_",
+"set_",
+"hasSetter_"
+),$Array(
+"toString",function PropertyDescriptor_ToString(){
+return"[object PropertyDescriptor]";
+},
+"setValue",function PropertyDescriptor_SetValue(a){
+this.value_=a;
+this.hasValue_=true;
+},
+"getValue",function PropertyDescriptor_GetValue(){
+return this.value_;
+},
+"hasValue",function PropertyDescriptor_HasValue(){
+return this.hasValue_;
+},
+"setEnumerable",function PropertyDescriptor_SetEnumerable(a){
+this.enumerable_=a;
+this.hasEnumerable_=true;
+},
+"isEnumerable",function PropertyDescriptor_IsEnumerable(){
+return this.enumerable_;
+},
+"hasEnumerable",function PropertyDescriptor_HasEnumerable(){
+return this.hasEnumerable_;
+},
+"setWritable",function PropertyDescriptor_SetWritable(a){
+this.writable_=a;
+this.hasWritable_=true;
+},
+"isWritable",function PropertyDescriptor_IsWritable(){
+return this.writable_;
+},
+"hasWritable",function PropertyDescriptor_HasWritable(){
+return this.hasWritable_;
+},
+"setConfigurable",
+function PropertyDescriptor_SetConfigurable(a){
+this.configurable_=a;
+this.hasConfigurable_=true;
+},
+"hasConfigurable",function PropertyDescriptor_HasConfigurable(){
+return this.hasConfigurable_;
+},
+"isConfigurable",function PropertyDescriptor_IsConfigurable(){
+return this.configurable_;
+},
+"setGet",function PropertyDescriptor_SetGetter(a){
+this.get_=a;
+this.hasGetter_=true;
+},
+"getGet",function PropertyDescriptor_GetGetter(){
+return this.get_;
+},
+"hasGetter",function PropertyDescriptor_HasGetter(){
+return this.hasGetter_;
+},
+"setSet",function PropertyDescriptor_SetSetter(a){
+this.set_=a;
+this.hasSetter_=true;
+},
+"getSet",function PropertyDescriptor_GetSetter(){
+return this.set_;
+},
+"hasSetter",function PropertyDescriptor_HasSetter(){
+return this.hasSetter_;
+}));
+function ConvertDescriptorArrayToDescriptor(a){
+if((a===(void 0))){
+return(void 0);
+}
+var b=new PropertyDescriptor();
+if(a[0]){
+b.setGet(a[2]);
+b.setSet(a[3]);
+}else{
+b.setValue(a[1]);
+b.setWritable(a[4]);
+}
+b.setEnumerable(a[5]);
+b.setConfigurable(a[6]);
+return b;
+}
+function GetTrap(a,b,c){
+var d=a[b];
+if((d===(void 0))){
+if((c===(void 0))){
+throw MakeTypeError("handler_trap_missing",[a,b]);
+}
+d=c;
+}else if(!(%_ClassOf(d)==='Function')){
+throw MakeTypeError("handler_trap_must_be_callable",[a,b]);
+}
+return d;
+}
+function CallTrap0(a,b,c){
+return %_CallFunction(a,GetTrap(a,b,c));
+}
+function CallTrap1(a,b,c,d){
+return %_CallFunction(a,d,GetTrap(a,b,c));
+}
+function CallTrap2(a,b,c,d,e){
+return %_CallFunction(a,d,e,GetTrap(a,b,c));
+}
+function GetOwnPropertyJS(a,b){
+var c=ToName(b);
+if(%_IsJSProxy(a)){
+if((typeof(b)==='symbol'))return(void 0);
+var d=%GetHandler(a);
+var e=CallTrap1(
+d,"getOwnPropertyDescriptor",(void 0),c);
+if((e===(void 0)))return e;
+var g=ToCompletePropertyDescriptor(e);
+if(!g.isConfigurable()){
+throw MakeTypeError("proxy_prop_not_configurable",
+[d,"getOwnPropertyDescriptor",c,e]);
+}
+return g;
+}
+var h=%GetOwnProperty(((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a)),c);
+return ConvertDescriptorArrayToDescriptor(h);
+}
+function Delete(a,b,c){
+var d=GetOwnPropertyJS(a,b);
+if((d===(void 0)))return true;
+if(d.isConfigurable()){
+%DeleteProperty(a,b,0);
+return true;
+}else if(c){
+throw MakeTypeError("define_disallowed",[b]);
+}else{
+return;
+}
+}
+function GetMethod(a,b){
+var c=a[b];
+if((c==null))return(void 0);
+if((%_ClassOf(c)==='Function'))return c;
+throw MakeTypeError('called_non_callable',[typeof c]);
+}
+function DefineProxyProperty(a,b,c,d){
+if((typeof(b)==='symbol'))return false;
+var e=%GetHandler(a);
+var g=CallTrap2(e,"defineProperty",(void 0),b,c);
+if(!ToBoolean(g)){
+if(d){
+throw MakeTypeError("handler_returned_false",
+[e,"defineProperty"]);
+}else{
+return false;
+}
+}
+return true;
+}
+function DefineObjectProperty(a,b,c,d){
+var e=%GetOwnProperty(a,ToName(b));
+var g=ConvertDescriptorArrayToDescriptor(e);
+var h=%IsExtensible(a);
+if((g===(void 0))&&!h){
+if(d){
+throw MakeTypeError("define_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(!(g===(void 0))){
+if((IsGenericDescriptor(c)||
+IsDataDescriptor(c)==IsDataDescriptor(g))&&
+(!c.hasEnumerable()||
+SameValue(c.isEnumerable(),g.isEnumerable()))&&
+(!c.hasConfigurable()||
+SameValue(c.isConfigurable(),g.isConfigurable()))&&
+(!c.hasWritable()||
+SameValue(c.isWritable(),g.isWritable()))&&
+(!c.hasValue()||
+SameValue(c.getValue(),g.getValue()))&&
+(!c.hasGetter()||
+SameValue(c.getGet(),g.getGet()))&&
+(!c.hasSetter()||
+SameValue(c.getSet(),g.getSet()))){
+return true;
+}
+if(!g.isConfigurable()){
+if(c.isConfigurable()||
+(c.hasEnumerable()&&
+c.isEnumerable()!=g.isEnumerable())){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(!IsGenericDescriptor(c)){
+if(IsDataDescriptor(g)!=IsDataDescriptor(c)){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(IsDataDescriptor(g)&&IsDataDescriptor(c)){
+if(!g.isWritable()&&c.isWritable()){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(!g.isWritable()&&c.hasValue()&&
+!SameValue(c.getValue(),g.getValue())){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+}
+if(IsAccessorDescriptor(c)&&IsAccessorDescriptor(g)){
+if(c.hasSetter()&&!SameValue(c.getSet(),g.getSet())){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(c.hasGetter()&&!SameValue(c.getGet(),g.getGet())){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+}
+}
+}
+}
+var i=0;
+if(c.hasEnumerable()){
+i|=c.isEnumerable()?0:2;
+}else if(!(g===(void 0))){
+i|=g.isEnumerable()?0:2;
+}else{
+i|=2;
+}
+if(c.hasConfigurable()){
+i|=c.isConfigurable()?0:4;
+}else if(!(g===(void 0))){
+i|=g.isConfigurable()?0:4;
+}else
+i|=4;
+if(IsDataDescriptor(c)||
+(IsGenericDescriptor(c)&&
+((g===(void 0))||IsDataDescriptor(g)))){
+if(c.hasWritable()){
+i|=c.isWritable()?0:1;
+}else if(!(g===(void 0))){
+i|=g.isWritable()?0:1;
+}else{
+i|=1;
+}
+var j=(void 0);
+if(c.hasValue()){
+j=c.getValue();
+}else if(!(g===(void 0))&&IsDataDescriptor(g)){
+j=g.getValue();
+}
+%DefineDataPropertyUnchecked(a,b,j,i);
+}else{
+var k=null;
+if(c.hasGetter()){
+k=c.getGet();
+}else if(IsAccessorDescriptor(g)&&g.hasGetter()){
+k=g.getGet();
+}
+var l=null;
+if(c.hasSetter()){
+l=c.getSet();
+}else if(IsAccessorDescriptor(g)&&g.hasSetter()){
+l=g.getSet();
+}
+%DefineAccessorPropertyUnchecked(a,b,k,l,i);
+}
+return true;
+}
+function DefineArrayProperty(a,b,c,d){
+if(b==="length"){
+var e=a.length;
+var g=e;
+if(!c.hasValue()){
+return DefineObjectProperty(a,"length",c,d);
+}
+var h=ToUint32(c.getValue());
+if(h!=ToNumber(c.getValue())){
+throw new $RangeError('defineProperty() array length out of range');
+}
+var i=GetOwnPropertyJS(a,"length");
+if(h!=e&&!i.isWritable()){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+var j=false;
+var k=%IsObserved(a)&&h!==g;
+var l;
+if(k){
+BeginPerformSplice(a);
+l=[];
+if(hg?h-g:0);
+}
+if(j){
+if(d){
+throw MakeTypeError("redefine_disallowed",[b]);
+}else{
+return false;
+}
+}
+return true;
+}
+if(!(typeof(b)==='symbol')){
+var m=ToUint32(b);
+var k=false;
+if(ToString(m)==b&&m!=4294967295){
+var e=a.length;
+if(m>=e&&%IsObserved(a)){
+k=true;
+BeginPerformSplice(a);
+}
+var i=GetOwnPropertyJS(a,"length");
+if((m>=e&&!i.isWritable())||
+!DefineObjectProperty(a,b,c,true)){
+if(k)
+EndPerformSplice(a);
+if(d){
+throw MakeTypeError("define_disallowed",[b]);
+}else{
+return false;
+}
+}
+if(m>=e){
+a.length=m+1;
+}
+if(k){
+EndPerformSplice(a);
+EnqueueSpliceRecord(a,e,[],m+1-e);
+}
+return true;
+}
+}
+return DefineObjectProperty(a,b,c,d);
+}
+function DefineOwnProperty(a,b,c,d){
+if(%_IsJSProxy(a)){
+if((typeof(b)==='symbol'))return false;
+var e=FromGenericPropertyDescriptor(c);
+return DefineProxyProperty(a,b,e,d);
+}else if((%_IsArray(a))){
+return DefineArrayProperty(a,b,c,d);
+}else{
+return DefineObjectProperty(a,b,c,d);
+}
+}
+function ObjectGetPrototypeOf(a){
+if(!(%_IsSpecObject(a))){
+throw MakeTypeError("called_on_non_object",["Object.getPrototypeOf"]);
+}
+return %_GetPrototype(a);
+}
+function ObjectSetPrototypeOf(a,b){
+if((a==null)&&!(%_IsUndetectableObject(a)))throw MakeTypeError('called_on_null_or_undefined',["Object.setPrototypeOf"]);
+if(b!==null&&!(%_IsSpecObject(b))){
+throw MakeTypeError("proto_object_or_null",[b]);
+}
+if((%_IsSpecObject(a))){
+%SetPrototype(a,b);
+}
+return a;
+}
+function ObjectGetOwnPropertyDescriptor(a,b){
+if(!(%_IsSpecObject(a))){
+throw MakeTypeError("called_on_non_object",
+["Object.getOwnPropertyDescriptor"]);
+}
+var c=GetOwnPropertyJS(a,b);
+return FromPropertyDescriptor(c);
+}
+function ToNameArray(a,b,c){
+if(!(%_IsSpecObject(a))){
+throw MakeTypeError("proxy_non_object_prop_names",[a,b]);
+}
+var d=ToUint32(a.length);
+var e=new $Array(d);
+var g=0;
+var h={__proto__:null};
+for(var i=0;i36){
+throw new $RangeError('toString() radix argument must be between 2 and 36');
+}
+return %NumberToRadixString(b,a);
+}
+function NumberToLocaleString(){
+return %_CallFunction(this,NumberToStringJS);
+}
+function NumberValueOf(){
+if(!(typeof(this)==='number')&&!(%_ClassOf(this)==='Number')){
+throw new $TypeError('Number.prototype.valueOf is not generic');
+}
+return %_ValueOf(this);
+}
+function NumberToFixedJS(a){
+var b=this;
+if(!(typeof(this)==='number')){
+if(!(%_ClassOf(this)==='Number')){
+throw MakeTypeError("incompatible_method_receiver",
+["Number.prototype.toFixed",this]);
+}
+b=%_ValueOf(this);
+}
+var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if(c<0||c>20){
+throw new $RangeError("toFixed() digits argument must be between 0 and 20");
+}
+if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
+if(b==(1/0))return"Infinity";
+if(b==-(1/0))return"-Infinity";
+return %NumberToFixed(b,c);
+}
+function NumberToExponentialJS(a){
+var b=this;
+if(!(typeof(this)==='number')){
+if(!(%_ClassOf(this)==='Number')){
+throw MakeTypeError("incompatible_method_receiver",
+["Number.prototype.toExponential",this]);
+}
+b=%_ValueOf(this);
+}
+var c=(a===(void 0))?(void 0):(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
+if(b==(1/0))return"Infinity";
+if(b==-(1/0))return"-Infinity";
+if((c===(void 0))){
+c=-1;
+}else if(c<0||c>20){
+throw new $RangeError("toExponential() argument must be between 0 and 20");
+}
+return %NumberToExponential(b,c);
+}
+function NumberToPrecisionJS(a){
+var b=this;
+if(!(typeof(this)==='number')){
+if(!(%_ClassOf(this)==='Number')){
+throw MakeTypeError("incompatible_method_receiver",
+["Number.prototype.toPrecision",this]);
+}
+b=%_ValueOf(this);
+}
+if((a===(void 0)))return ToString(%_ValueOf(this));
+var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
+if(b==(1/0))return"Infinity";
+if(b==-(1/0))return"-Infinity";
+if(c<1||c>21){
+throw new $RangeError("toPrecision() argument must be between 1 and 21");
+}
+return %NumberToPrecision(b,c);
+}
+function NumberIsFinite(a){
+return(typeof(a)==='number')&&(%_IsSmi(%IS_VAR(a))||((a==a)&&(a!=1/0)&&(a!=-1/0)));
+}
+function NumberIsInteger(a){
+return NumberIsFinite(a)&&(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)))==a;
+}
+function NumberIsNaN(a){
+return(typeof(a)==='number')&&(!%_IsSmi(%IS_VAR(a))&&!(a==a));
+}
+function NumberIsSafeInteger(a){
+if(NumberIsFinite(a)){
+var b=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if(b==a)return $abs(b)<=$Number.MAX_SAFE_INTEGER;
+}
+return false;
+}
+function SetUpNumber(){
+%CheckIsBootstrapping();
+%SetCode($Number,NumberConstructor);
+%FunctionSetPrototype($Number,new $Number(0));
+%OptimizeObjectForAddingMultipleProperties($Number.prototype,8);
+%AddNamedProperty($Number.prototype,"constructor",$Number,2);
+InstallConstants($Number,$Array(
+"MAX_VALUE",1.7976931348623157e+308,
+"MIN_VALUE",5e-324,
+"NaN",$NaN,
+"NEGATIVE_INFINITY",-(1/0),
+"POSITIVE_INFINITY",(1/0),
+"MAX_SAFE_INTEGER",%_MathPow(2,53)-1,
+"MIN_SAFE_INTEGER",-%_MathPow(2,53)+1,
+"EPSILON",%_MathPow(2,-52)
+));
+InstallFunctions($Number.prototype,2,$Array(
+"toString",NumberToStringJS,
+"toLocaleString",NumberToLocaleString,
+"valueOf",NumberValueOf,
+"toFixed",NumberToFixedJS,
+"toExponential",NumberToExponentialJS,
+"toPrecision",NumberToPrecisionJS
+));
+InstallFunctions($Number,2,$Array(
+"isFinite",NumberIsFinite,
+"isInteger",NumberIsInteger,
+"isNaN",NumberIsNaN,
+"isSafeInteger",NumberIsSafeInteger,
+"parseInt",GlobalParseInt,
+"parseFloat",GlobalParseFloat
+));
+}
+SetUpNumber();
+function FunctionSourceString(a){
+while(%IsJSFunctionProxy(a)){
+a=%GetCallTrap(a);
+}
+if(!(%_IsFunction(a))){
+throw new $TypeError('Function.prototype.toString is not generic');
+}
+var b=%ClassGetSourceCode(a);
+if((typeof(b)==='string')){
+return b;
+}
+var c=%FunctionGetSourceCode(a);
+if(!(typeof(c)==='string')||%FunctionIsBuiltin(a)){
+var d=%FunctionGetName(a);
+if(d){
+return'function '+d+'() { [native code] }';
+}else{
+return'function () { [native code] }';
+}
+}
+if(%FunctionIsArrow(a)){
+return c;
+}
+var d=%FunctionNameShouldPrintAsAnonymous(a)
+?'anonymous'
+:%FunctionGetName(a);
+var e=%FunctionIsGenerator(a);
+var g=%FunctionIsConciseMethod(a)
+?(e?'*':'')
+:(e?'function* ':'function ');
+return g+d+c;
+}
+function FunctionToString(){
+return FunctionSourceString(this);
+}
+function FunctionBind(a){
+if(!(%_ClassOf(this)==='Function')){
+throw new $TypeError('Bind must be called on a function');
+}
+var b=function(){
+"use strict";
+if(%_IsConstructCall()){
+return %NewObjectFromBound(b);
+}
+var c=%BoundFunctionGetBindings(b);
+var d=%_ArgumentsLength();
+if(d==0){
+return %Apply(c[0],c[1],c,2,c.length-2);
+}
+if(c.length===2){
+return %Apply(c[0],c[1],arguments,0,d);
+}
+var e=c.length-2;
+var g=new InternalArray(e+d);
+for(var h=0;h>>0)===k)){
+var d=%_ArgumentsLength();
+if(d>0)d--;
+j=k-d;
+if(j<0)j=0;
+}
+var l=%FunctionBindArguments(b,this,
+a,j);
+return l;
+}
+function NewFunctionFromString(a,b){
+var c=a.length;
+var d='';
+if(c>1){
+d=ToString(a[0]);
+for(var e=1;e0)?ToString(a[c-1]):'';
+var h='('+b+'('+d+') {\n';
+var i=h+g+'\n})';
+var j=%GlobalProxy(global);
+var k=%_CallFunction(j,%CompileString(i,true,h.length));
+%FunctionMarkNameShouldPrintAsAnonymous(k);
+return k;
+}
+function FunctionConstructor(a){
+return NewFunctionFromString(arguments,'function');
+}
+function SetUpFunction(){
+%CheckIsBootstrapping();
+%SetCode($Function,FunctionConstructor);
+%AddNamedProperty($Function.prototype,"constructor",$Function,2);
+InstallFunctions($Function.prototype,2,$Array(
+"bind",FunctionBind,
+"toString",FunctionToString
+));
+}
+SetUpFunction();
+function GetIterator(a,b){
+if((b===(void 0))){
+b=a[symbolIterator];
+}
+if(!(%_ClassOf(b)==='Function')){
+throw MakeTypeError('not_iterable',[a]);
+}
+var c=%_CallFunction(a,b);
+if(!(%_IsSpecObject(c))){
+throw MakeTypeError('not_an_iterator',[c]);
+}
+return c;
+}
+
+symbolY
+var $symbolToString;
+(function(){
+"use strict";
+%CheckIsBootstrapping();
+var a=global.Array;
+var b=global.Object;
+var c=global.Symbol;
+function SymbolConstructor(d){
+if(%_IsConstructCall()){
+throw MakeTypeError('not_constructor',["Symbol"]);
+}
+return %CreateSymbol((d===(void 0))?d:ToString(d));
+}
+function SymbolToString(){
+if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
+throw MakeTypeError(
+'incompatible_method_receiver',["Symbol.prototype.toString",this]);
+}
+var e=%SymbolDescription(%_ValueOf(this));
+return"Symbol("+((e===(void 0))?"":e)+")";
+}
+function SymbolValueOf(){
+if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
+throw MakeTypeError(
+'incompatible_method_receiver',["Symbol.prototype.valueOf",this]);
+}
+return %_ValueOf(this);
+}
+function SymbolFor(g){
+g=((typeof(%IS_VAR(g))==='string')?g:NonStringToString(g));
+var h=%SymbolRegistry();
+if((h.for[g]===(void 0))){
+var i=%CreateSymbol(g);
+h.for[g]=i;
+h.keyFor[i]=g;
+}
+return h.for[g];
+}
+function SymbolKeyFor(i){
+if(!(typeof(i)==='symbol'))throw MakeTypeError("not_a_symbol",[i]);
+return %SymbolRegistry().keyFor[i];
+}
+function ObjectGetOwnPropertySymbols(j){
+j=ToObject(j);
+return ObjectGetOwnPropertyKeys(j,8);
+}
+%SetCode(c,SymbolConstructor);
+%FunctionSetPrototype(c,new b());
+InstallConstants(c,a(
+"iterator",symbolIterator,
+"unscopables",symbolUnscopables
+));
+InstallFunctions(c,2,a(
+"for",SymbolFor,
+"keyFor",SymbolKeyFor
+));
+%AddNamedProperty(
+c.prototype,"constructor",c,2);
+%AddNamedProperty(
+c.prototype,symbolToStringTag,"Symbol",2|1);
+InstallFunctions(c.prototype,2,a(
+"toString",SymbolToString,
+"valueOf",SymbolValueOf
+));
+InstallFunctions(b,2,a(
+"getOwnPropertySymbols",ObjectGetOwnPropertySymbols
+));
+$symbolToString=SymbolToString;
+})();
+
+arrayæx
+"use strict";
+var visited_arrays=new InternalArray();
+function GetSortedArrayKeys(a,b){
+var c=new InternalArray();
+if((typeof(b)==='number')){
+var d=b;
+for(var e=0;e>2;
+var g=%EstimateNumberOfElements(a);
+return(gg*4);
+}
+function Join(a,b,c,d){
+if(b==0)return'';
+var e=(%_IsArray(a));
+if(e){
+if(!%PushIfAbsent(visited_arrays,a))return'';
+}
+try{
+if(UseSparseVariant(a,b,e,b)){
+%NormalizeElements(a);
+if(c.length==0){
+return SparseJoin(a,b,d);
+}else{
+return SparseJoinWithSeparatorJS(a,b,d,c);
+}
+}
+if(b==1){
+var g=a[0];
+if((typeof(g)==='string'))return g;
+return d(g);
+}
+var h=new InternalArray(b);
+if(c.length==0){
+var i=0;
+for(var j=0;j=b){
+var k=a[n];
+if(!(k===(void 0))||n in a){
+%AddElement(g,n-b,k,0);
+}
+}
+}
+}
+}
+}
+function SparseMove(a,b,c,d,g){
+if(g===c)return;
+var h=new InternalArray(
+$min(d-c+g,0xffffffff));
+var i;
+var j=%GetArrayKeys(a,d);
+if((typeof(j)==='number')){
+var k=j;
+for(var l=0;l=b+c){
+var m=a[q];
+if(!(m===(void 0))||q in a){
+var r=q-c+g;
+h[r]=m;
+if(r>0xffffffff){
+i=i||new InternalArray();
+i.push(r);
+}
+}
+}
+}
+}
+}
+%MoveArrayContents(h,a);
+if(!(i===(void 0))){
+var n=i.length;
+for(var l=0;lc){
+for(var i=d-c;i>b;i--){
+var j=i+c-1;
+var k=i+g-1;
+if(((h&&%_HasFastPackedElements(%IS_VAR(a)))?(jd-c+g;i--){
+delete a[i-1];
+}
+}
+}
+}
+function ArrayToString(){
+var a;
+var b;
+if((%_IsArray(this))){
+b=this.join;
+if(b===ArrayJoin){
+return Join(this,this.length,',',ConvertToString);
+}
+a=this;
+}else{
+a=ToObject(this);
+b=a.join;
+}
+if(!(%_ClassOf(b)==='Function')){
+return %_CallFunction(a,DefaultObjectToString);
+}
+return %_CallFunction(a,b);
+}
+function ArrayToLocaleString(){
+var a=ToObject(this);
+var b=a.length;
+var c=(b>>>0);
+if(c===0)return"";
+return Join(a,c,',',ConvertToLocaleString);
+}
+function ArrayJoin(a){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.join"]);
+var b=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
+var c=(b.length>>>0);
+if((a===(void 0))){
+a=',';
+}else if(!(typeof(a)==='string')){
+a=NonStringToString(a);
+}
+var d=%_FastOneByteArrayJoin(b,a);
+if(!(d===(void 0)))return d;
+if(c===1){
+var g=b[0];
+if((typeof(g)==='string'))return g;
+if((g==null))return'';
+return NonStringToString(g);
+}
+return Join(b,c,a,ConvertToString);
+}
+function ObservedArrayPop(a){
+a--;
+var b=this[a];
+try{
+BeginPerformSplice(this);
+delete this[a];
+this.length=a;
+}finally{
+EndPerformSplice(this);
+EnqueueSpliceRecord(this,a,[b],0);
+}
+return b;
+}
+function ArrayPop(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.pop"]);
+var a=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
+var b=(a.length>>>0);
+if(b==0){
+a.length=b;
+return;
+}
+if(%IsObserved(a))
+return ObservedArrayPop.call(a,b);
+b--;
+var c=a[b];
+Delete(a,ToName(b),true);
+a.length=b;
+return c;
+}
+function ObservedArrayPush(){
+var a=(this.length>>>0);
+var b=%_ArgumentsLength();
+try{
+BeginPerformSplice(this);
+for(var c=0;c>>0);
+var c=%_ArgumentsLength();
+for(var d=0;d=h){
+k=h;
+while(c[++g]==h){}
+l=b-h-1;
+}
+var m=a[k];
+if(!(m===(void 0))||k in a){
+var o=a[l];
+if(!(o===(void 0))||l in a){
+a[k]=o;
+a[l]=m;
+}else{
+a[l]=m;
+delete a[k];
+}
+}else{
+var o=a[l];
+if(!(o===(void 0))||l in a){
+a[k]=o;
+delete a[l];
+}
+}
+}
+}
+function ArrayReverse(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.reverse"]);
+var a=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
+var b=(a.length>>>0);
+if(UseSparseVariant(a,b,(%_IsArray(a)),b)){
+%NormalizeElements(a);
+SparseReverse(a,b);
+return a;
+}
+var c=b-1;
+for(var d=0;d>>0);
+if(b===0){
+a.length=0;
+return;
+}
+if(ObjectIsSealed(a)){
+throw MakeTypeError("array_functions_change_sealed",
+["Array.prototype.shift"]);
+}
+if(%IsObserved(a))
+return ObservedArrayShift.call(a,b);
+var c=a[0];
+if(UseSparseVariant(a,b,(%_IsArray(a)),b)){
+SparseMove(a,0,1,b,0);
+}else{
+SimpleMove(a,0,1,b,0);
+}
+a.length=b-1;
+return c;
+}
+function ObservedArrayUnshift(){
+var a=(this.length>>>0);
+var b=%_ArgumentsLength();
+try{
+BeginPerformSplice(this);
+SimpleMove(this,0,0,a,b);
+for(var c=0;c>>0);
+var d=%_ArgumentsLength();
+if(c>0&&UseSparseVariant(b,c,(%_IsArray(b)),c)&&
+!ObjectIsSealed(b)){
+SparseMove(b,0,0,c,d);
+}else{
+SimpleMove(b,0,0,c,d);
+}
+for(var g=0;g>>0);
+var g=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+var h=d;
+if(!(b===(void 0)))h=(%_IsSmi(%IS_VAR(b))?b:%NumberToInteger(ToNumber(b)));
+if(g<0){
+g+=d;
+if(g<0)g=0;
+}else{
+if(g>d)g=d;
+}
+if(h<0){
+h+=d;
+if(h<0)h=0;
+}else{
+if(h>d)h=d;
+}
+var i=[];
+if(hb?b:a;
+}
+function ComputeSpliceDeleteCount(a,b,c,d){
+var g=0;
+if(b==1)
+return c-d;
+g=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if(g<0)
+return 0;
+if(g>c-d)
+return c-d;
+return g;
+}
+function ObservedArraySplice(a,b){
+var c=%_ArgumentsLength();
+var d=(this.length>>>0);
+var g=ComputeSpliceStartIndex((%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a))),d);
+var h=ComputeSpliceDeleteCount(b,c,d,
+g);
+var i=[];
+i.length=h;
+var j=c>2?c-2:0;
+try{
+BeginPerformSplice(this);
+SimpleSlice(this,g,h,d,i);
+SimpleMove(this,g,h,d,j);
+var k=g;
+var l=2;
+var m=%_ArgumentsLength();
+while(l>>0);
+var h=ComputeSpliceStartIndex((%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a))),g);
+var i=ComputeSpliceDeleteCount(b,c,g,
+h);
+var j=[];
+j.length=i;
+var k=c>2?c-2:0;
+if(i!=k&&ObjectIsSealed(d)){
+throw MakeTypeError("array_functions_change_sealed",
+["Array.prototype.splice"]);
+}else if(i>0&&ObjectIsFrozen(d)){
+throw MakeTypeError("array_functions_on_frozen",
+["Array.prototype.splice"]);
+}
+var l=i;
+if(k!=i){
+l+=g-h-i;
+}
+if(UseSparseVariant(d,g,(%_IsArray(d)),l)){
+%NormalizeElements(d);
+%NormalizeElements(j);
+SparseSlice(d,h,i,g,j);
+SparseMove(d,h,i,g,k);
+}else{
+SimpleSlice(d,h,i,g,j);
+SimpleMove(d,h,i,g,k);
+}
+var m=h;
+var o=2;
+var q=%_ArgumentsLength();
+while(o=i;m--){
+var o=h[m];
+var q=%_CallFunction(d,o,l,a);
+if(q>0){
+h[m+1]=o;
+}else{
+break;
+}
+}
+h[m+1]=l;
+}
+};
+var r=function(h,i,j){
+var t=[];
+var u=200+((j-i)&15);
+for(var k=i+1,m=0;k>1][0];
+return z;
+}
+var A=function QuickSort(h,i,j){
+var z=0;
+while(true){
+if(j-i<=10){
+g(h,i,j);
+return;
+}
+if(j-i>1000){
+z=r(h,i,j);
+}else{
+z=i+((j-i)>>1);
+}
+var B=h[i];
+var C=h[j-1];
+var D=h[z];
+var E=%_CallFunction(d,B,C,a);
+if(E>0){
+var o=B;
+B=C;
+C=o;
+}
+var G=%_CallFunction(d,B,D,a);
+if(G>=0){
+var o=B;
+B=D;
+D=C;
+C=o;
+}else{
+var H=%_CallFunction(d,C,D,a);
+if(H>0){
+var o=C;
+C=D;
+D=o;
+}
+}
+h[i]=B;
+h[j-1]=D;
+var I=C;
+var J=i+1;
+var K=j-1;
+h[z]=h[J];
+h[J]=I;
+partition:for(var k=J+1;k0){
+do{
+K--;
+if(K==k)break partition;
+var L=h[K];
+q=%_CallFunction(d,L,I,a);
+}while(q>0);
+h[k]=h[K];
+h[K]=l;
+if(q<0){
+l=h[k];
+h[k]=h[J];
+h[J]=l;
+J++;
+}
+}
+}
+if(j-K=Q){Q=k+1;}
+}
+}
+}else{
+for(var k=0;k=Q){Q=U+1;}
+}
+}
+}
+}
+return Q;
+};
+var W=function(N,i,j){
+for(var R=%_GetPrototype(N);R;R=%_GetPrototype(R)){
+var S=%GetArrayKeys(R,j);
+if((typeof(S)==='number')){
+var T=S;
+for(var k=i;k>>0);
+if(P<2)return this;
+var ab=(%_IsArray(this));
+var ac;
+if(!ab){
+ac=M(this,P);
+}
+var ad=%RemoveArrayHoles(this,P);
+if(ad==-1){
+ad=X(this);
+}
+A(this,0,ad);
+if(!ab&&(ad+1>>0);
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var g=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+g=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var h=(%_IsArray(c));
+var i=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+for(var j=0;j>>0);
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var g=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+g=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var h=(%_IsArray(c));
+var i=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+for(var j=0;j>>0);
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var g=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+g=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var h=(%_IsArray(c));
+var i=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+for(var j=0;j>>0);
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var g=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+g=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var h=new $Array();
+var i=new InternalArray(d);
+var j=(%_IsArray(c));
+var k=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+for(var l=0;l>>0);
+if(c==0)return-1;
+if((b===(void 0))){
+b=0;
+}else{
+b=(%_IsSmi(%IS_VAR(b))?b:%NumberToInteger(ToNumber(b)));
+if(b<0){
+b=c+b;
+if(b<0)b=0;
+}
+}
+var d=b;
+var g=c;
+if(UseSparseVariant(this,c,(%_IsArray(this)),g-d)){
+%NormalizeElements(this);
+var h=%GetArrayKeys(this,c);
+if((typeof(h)==='number')){
+g=h;
+}else{
+if(h.length==0)return-1;
+var i=GetSortedArrayKeys(this,h);
+var j=i.length;
+var k=0;
+while(k>>0);
+if(c==0)return-1;
+if(%_ArgumentsLength()<2){
+b=c-1;
+}else{
+b=(%_IsSmi(%IS_VAR(b))?b:%NumberToInteger(ToNumber(b)));
+if(b<0)b+=c;
+if(b<0)return-1;
+else if(b>=c)b=c-1;
+}
+var d=0;
+var g=b;
+if(UseSparseVariant(this,c,(%_IsArray(this)),b)){
+%NormalizeElements(this);
+var h=%GetArrayKeys(this,b+1);
+if((typeof(h)==='number')){
+g=h;
+}else{
+if(h.length==0)return-1;
+var i=GetSortedArrayKeys(this,h);
+var j=i.length-1;
+while(j>=0){
+var k=i[j];
+if(!(k===(void 0))&&this[k]===a)return k;
+j--;
+}
+return-1;
+}
+}
+if(!(a===(void 0))){
+for(var j=g;j>=d;j--){
+if(this[j]===a)return j;
+}
+return-1;
+}
+for(var j=g;j>=d;j--){
+if((this[j]===(void 0))&&j in this){
+return j;
+}
+}
+return-1;
+}
+function ArrayReduce(a,b){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.reduce"]);
+var c=ToObject(this);
+var d=ToUint32(c.length);
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var g=(%_IsArray(c));
+var h=0;
+find_initial:if(%_ArgumentsLength()<2){
+for(;h=0;h--){
+if(((g&&%_HasFastPackedElements(%IS_VAR(c)))?(h=0;h--){
+if(((g&&%_HasFastPackedElements(%IS_VAR(c)))?(h1){
+t=%_Arguments(1);
+t=(%_IsSmi(%IS_VAR(t))?t:%NumberToInteger(ToNumber(t)));
+if(t<0)t=0;
+if(t>r.length)t=r.length;
+}
+return %StringIndexOf(r,q,t);
+}
+function StringLastIndexOfJS(u){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.lastIndexOf"]);
+var w=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+var z=w.length;
+var u=((typeof(%IS_VAR(u))==='string')?u:NonStringToString(u));
+var A=u.length;
+var t=z-A;
+if(%_ArgumentsLength()>1){
+var B=ToNumber(%_Arguments(1));
+if(!(!%_IsSmi(%IS_VAR(B))&&!(B==B))){
+B=(%_IsSmi(%IS_VAR(B))?B:%NumberToInteger(ToNumber(B)));
+if(B<0){
+B=0;
+}
+if(B+A0xFF&&
+(typeof(K)==='string')&&
+%StringIndexOf(K,'$',0)<0){
+return %StringReplaceOneCharWithString(r,J,K);
+}
+var P=%StringIndexOf(r,J,0);
+if(P<0)return r;
+var Q=P+J.length;
+var h=%_SubString(r,0,P);
+if((%_ClassOf(K)==='Function')){
+var R=%GetDefaultReceiver(K);
+h+=%_CallFunction(R,J,P,r,K);
+}else{
+I[3]=P;
+I[4]=Q;
+h=ExpandReplacement(((typeof(%IS_VAR(K))==='string')?K:NonStringToString(K)),
+r,
+I,
+h);
+}
+return h+%_SubString(r,Q,r.length);
+}
+function ExpandReplacement(S,r,T,h){
+var U=S.length;
+var W=%StringIndexOf(S,'$',0);
+if(W<0){
+if(U>0)h+=S;
+return h;
+}
+if(W>0)h+=%_SubString(S,0,W);
+while(true){
+var X='$';
+var B=W+1;
+if(B=48&&Y<=57){
+var Z=(Y-48)<<1;
+var aa=1;
+var ab=((T)[0]);
+if(B+1=48&&W<=57){
+var ac=Z*10+((W-48)<<1);
+if(ac=0){
+h+=
+%_SubString(r,P,T[(3+(Z+1))]);
+}
+B+=aa;
+}else{
+h+='$';
+}
+}else{
+h+='$';
+}
+}else{
+h+='$';
+}
+W=%StringIndexOf(S,'$',B);
+if(W<0){
+if(BB){
+h+=%_SubString(S,B,W);
+}
+}
+return h;
+}
+function CaptureString(S,ad,t){
+var ae=t<<1;
+var P=ad[(3+(ae))];
+if(P<0)return;
+var Q=ad[(3+(ae+1))];
+return %_SubString(S,P,Q);
+}
+var af=new InternalArray(16);
+function StringReplaceGlobalRegExpWithFunction(r,C,K){
+var ag=af;
+if(ag){
+af=null;
+}else{
+ag=new InternalArray(16);
+}
+var ah=%RegExpExecMultiple(C,
+r,
+$regexpLastMatchInfo,
+ag);
+C.lastIndex=0;
+if((ah===null)){
+af=ag;
+return r;
+}
+var j=ah.length;
+if((($regexpLastMatchInfo)[0])==2){
+var ai=0;
+var aj=new InternalPackedArray(null,0,r);
+var R=%GetDefaultReceiver(K);
+for(var m=0;m0){
+ai=(ak>>11)+(ak&0x7ff);
+}else{
+ai=ah[++m]-ak;
+}
+}else{
+aj[0]=ak;
+aj[1]=ai;
+$regexpLastMatchInfoOverride=aj;
+var al=
+%_CallFunction(R,ak,ai,r,K);
+ah[m]=((typeof(%IS_VAR(al))==='string')?al:NonStringToString(al));
+ai+=ak.length;
+}
+}
+}else{
+var R=%GetDefaultReceiver(K);
+for(var m=0;m>1;
+var ao;
+var R=%GetDefaultReceiver(K);
+if(an==1){
+var ap=%_SubString(r,t,am);
+ao=%_CallFunction(R,ap,t,r,K);
+}else{
+var aq=new InternalArray(an+2);
+for(var ar=0;arat){
+return'';
+}
+}
+if(av<0){
+av+=at;
+if(av<0){
+return'';
+}
+}else{
+if(av>at){
+av=at;
+}
+}
+if(av<=au){
+return'';
+}
+return %_SubString(ap,au,av);
+}
+function StringSplitJS(aw,ax){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.split"]);
+var r=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+ax=((ax===(void 0)))?0xffffffff:(ax>>>0);
+var U=r.length;
+if(!(%_IsRegExp(aw))){
+var ay=((typeof(%IS_VAR(aw))==='string')?aw:NonStringToString(aw));
+if(ax===0)return[];
+if((aw===(void 0)))return[r];
+var az=ay.length;
+if(az===0)return %StringToArray(r,ax);
+var h=%StringSplit(r,ay,ax);
+return h;
+}
+if(ax===0)return[];
+return StringSplitOnRegExp(r,aw,ax,U);
+}
+function StringSplitOnRegExp(r,aw,ax,U){
+if(U===0){
+if($regexpExec(aw,r,0,0)!=null){
+return[];
+}
+return[r];
+}
+var aA=0;
+var aB=0;
+var aC=0;
+var h=new InternalArray();
+outer_loop:
+while(true){
+if(aB===U){
+h[h.length]=%_SubString(r,aA,U);
+break;
+}
+var T=$regexpExec(aw,r,aB);
+if(T==null||U===(aC=T[3])){
+h[h.length]=%_SubString(r,aA,U);
+break;
+}
+var aD=T[4];
+if(aB===aD&&aD===aA){
+aB++;
+continue;
+}
+h[h.length]=%_SubString(r,aA,aC);
+if(h.length===ax)break;
+var aE=((T)[0])+3;
+for(var m=3+2;mat){
+au=at;
+}
+var av=at;
+if(!(Q===(void 0))){
+av=(%_IsSmi(%IS_VAR(Q))?Q:%NumberToInteger(ToNumber(Q)));
+if(av>at){
+av=at;
+}else{
+if(av<0)av=0;
+if(au>av){
+var aG=av;
+av=au;
+au=aG;
+}
+}
+}
+return %_SubString(ap,au,av);
+}
+function StringSubstr(P,aH){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.substr"]);
+var ap=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+var j;
+if((aH===(void 0))){
+j=ap.length;
+}else{
+j=(%_IsSmi(%IS_VAR(aH))?aH:%NumberToInteger(ToNumber(aH)));
+if(j<=0)return'';
+}
+if((P===(void 0))){
+P=0;
+}else{
+P=(%_IsSmi(%IS_VAR(P))?P:%NumberToInteger(ToNumber(P)));
+if(P>=ap.length)return'';
+if(P<0){
+P+=ap.length;
+if(P<0)P=0;
+}
+}
+var Q=P+j;
+if(Q>ap.length)Q=ap.length;
+return %_SubString(ap,P,Q);
+}
+function StringToLowerCaseJS(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLowerCase"]);
+return %StringToLowerCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
+}
+function StringToLocaleLowerCase(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLocaleLowerCase"]);
+return %StringToLowerCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
+}
+function StringToUpperCaseJS(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toUpperCase"]);
+return %StringToUpperCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
+}
+function StringToLocaleUpperCase(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLocaleUpperCase"]);
+return %StringToUpperCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
+}
+function StringTrimJS(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trim"]);
+return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),true,true);
+}
+function StringTrimLeft(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trimLeft"]);
+return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),true,false);
+}
+function StringTrimRight(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trimRight"]);
+return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),false,true);
+}
+function StringFromCharCode(aI){
+var aH=%_ArgumentsLength();
+if(aH==1){
+if(!%_IsSmi(aI))aI=ToNumber(aI);
+return %_StringCharFromCode(aI&0xffff);
+}
+var aJ=%NewString(aH,true);
+var m;
+for(m=0;m0xff)break;
+%_OneByteSeqStringSetChar(m,aI,aJ);
+}
+if(m==aH)return aJ;
+aJ=%TruncateString(aJ,m);
+var aK=%NewString(aH-m,false);
+for(var ar=0;m"+this+"
";
+}
+function StringBig(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.big"]);
+return""+this+"";
+}
+function StringBlink(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.blink"]);
+return"";
+}
+function StringBold(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.bold"]);
+return""+this+"";
+}
+function StringFixed(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fixed"]);
+return""+this+"";
+}
+function StringFontcolor(aN){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fontcolor"]);
+return""+this+"";
+}
+function StringFontsize(aO){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fontsize"]);
+return""+this+"";
+}
+function StringItalics(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.italics"]);
+return""+this+"";
+}
+function StringLink(ap){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.link"]);
+return""+this+"";
+}
+function StringSmall(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.small"]);
+return""+this+"";
+}
+function StringStrike(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.strike"]);
+return""+this+"";
+}
+function StringSub(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.sub"]);
+return""+this+"";
+}
+function StringSup(){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.sup"]);
+return""+this+"";
+}
+function StringRepeat(aP){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.repeat"]);
+var ap=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+var aH=ToInteger(aP);
+if(aH<0||aH>%_MaxSmi()){
+throw MakeRangeError("invalid_count_value",[]);
+}
+var aQ="";
+while(true){
+if(aH&1)aQ+=ap;
+aH>>=1;
+if(aH===0)return aQ;
+ap+=ap;
+}
+}
+function StringStartsWith(aR){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.startsWith"]);
+var ap=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+if((%_IsRegExp(aR))){
+throw MakeTypeError("first_argument_not_regexp",
+["String.prototype.startsWith"]);
+}
+var aS=((typeof(%IS_VAR(aR))==='string')?aR:NonStringToString(aR));
+var g=0;
+if(%_ArgumentsLength()>1){
+g=%_Arguments(1);
+g=ToInteger(g);
+}
+var at=ap.length;
+var P=$min($max(g,0),at);
+var aT=aS.length;
+if(aT+P>at){
+return false;
+}
+return %StringIndexOf(ap,aS,P)===P;
+}
+function StringEndsWith(aR){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.endsWith"]);
+var ap=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+if((%_IsRegExp(aR))){
+throw MakeTypeError("first_argument_not_regexp",
+["String.prototype.endsWith"]);
+}
+var aS=((typeof(%IS_VAR(aR))==='string')?aR:NonStringToString(aR));
+var at=ap.length;
+var g=at;
+if(%_ArgumentsLength()>1){
+var aU=%_Arguments(1);
+if(!(aU===(void 0))){
+g=ToInteger(aU);
+}
+}
+var Q=$min($max(g,0),at);
+var aT=aS.length;
+var P=Q-aT;
+if(P<0){
+return false;
+}
+return %StringLastIndexOf(ap,aS,P)===P;
+}
+function StringIncludes(aR){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.includes"]);
+var ap=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+if((%_IsRegExp(aR))){
+throw MakeTypeError("first_argument_not_regexp",
+["String.prototype.includes"]);
+}
+var aS=((typeof(%IS_VAR(aR))==='string')?aR:NonStringToString(aR));
+var g=0;
+if(%_ArgumentsLength()>1){
+g=%_Arguments(1);
+g=ToInteger(g);
+}
+var at=ap.length;
+var P=$min($max(g,0),at);
+var aT=aS.length;
+if(aT+P>at){
+return false;
+}
+return %StringIndexOf(ap,aS,P)!==-1;
+}
+function StringCodePointAt(g){
+if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.codePointAt"]);
+var S=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
+var aO=S.length;
+g=(%_IsSmi(%IS_VAR(g))?g:%NumberToInteger(ToNumber(g)));
+if(g<0||g>=aO){
+return(void 0);
+}
+var aV=%_StringCharCodeAt(S,g);
+if(aV<0xD800||aV>0xDBFF||g+1==aO){
+return aV;
+}
+var aW=%_StringCharCodeAt(S,g+1);
+if(aW<0xDC00||aW>0xDFFF){
+return aV;
+}
+return(aV-0xD800)*0x400+aW+0x2400;
+}
+function StringFromCodePoint(aX){
+var aI;
+var U=%_ArgumentsLength();
+var t;
+var h="";
+for(t=0;t0x10FFFF||aI!==(%_IsSmi(%IS_VAR(aI))?aI:%NumberToInteger(ToNumber(aI)))){
+throw MakeRangeError("invalid_code_point",[aI]);
+}
+if(aI<=0xFFFF){
+h+=%_StringCharFromCode(aI);
+}else{
+aI-=0x10000;
+h+=%_StringCharFromCode((aI>>>10)&0x3FF|0xD800);
+h+=%_StringCharFromCode(aI&0x3FF|0xDC00);
+}
+}
+return h;
+}
+function StringRaw(aY){
+var aZ=%_ArgumentsLength();
+var ba=ToObject(aY);
+var bb=ToObject(ba.raw);
+var bc=ToLength(bb.length);
+if(bc<=0)return"";
+var h=ToString(bb[0]);
+for(var m=1;m=48&&a<=57)return a-48;
+if(a>=65&&a<=70)return a-55;
+if(a>=97&&a<=102)return a-87;
+return-1;
+}
+function isAlphaNumeric(b){
+if(97<=b&&b<=122)return true;
+if(65<=b&&b<=90)return true;
+if(48<=b&&b<=57)return true;
+return false;
+}
+var c=0;
+function URIAddEncodedOctetToBuffer(d,g,h){
+g[h++]=37;
+g[h++]=c[d>>4];
+g[h++]=c[d&0x0F];
+return h;
+}
+function URIEncodeOctets(i,g,h){
+if(c===0){
+c=[48,49,50,51,52,53,54,55,56,57,
+65,66,67,68,69,70];
+}
+h=URIAddEncodedOctetToBuffer(i[0],g,h);
+if(i[1])h=URIAddEncodedOctetToBuffer(i[1],g,h);
+if(i[2])h=URIAddEncodedOctetToBuffer(i[2],g,h);
+if(i[3])h=URIAddEncodedOctetToBuffer(i[3],g,h);
+return h;
+}
+function URIEncodeSingle(b,g,h){
+var j=(b>>12)&0xF;
+var k=(b>>6)&63;
+var l=b&63;
+var i=new $Array(3);
+if(b<=0x007F){
+i[0]=b;
+}else if(b<=0x07FF){
+i[0]=k+192;
+i[1]=l+128;
+}else{
+i[0]=j+224;
+i[1]=k+128;
+i[2]=l+128;
+}
+return URIEncodeOctets(i,g,h);
+}
+function URIEncodePair(m,o,g,h){
+var q=((m>>6)&0xF)+1;
+var r=(m>>2)&0xF;
+var j=m&3;
+var k=(o>>6)&0xF;
+var l=o&63;
+var i=new $Array(4);
+i[0]=(q>>2)+240;
+i[1]=(((q&3)<<4)|r)+128;
+i[2]=((j<<4)|k)+128;
+i[3]=l+128;
+return URIEncodeOctets(i,g,h);
+}
+function URIHexCharsToCharCode(t,u){
+var w=HexValueOf(t);
+var z=HexValueOf(u);
+if(w==-1||z==-1){
+throw new $URIError("URI malformed");
+}
+return(w<<4)|z;
+}
+function URIDecodeOctets(i,g,h){
+var A;
+var B=i[0];
+if(B<0x80){
+A=B;
+}else if(B<0xc2){
+throw new $URIError("URI malformed");
+}else{
+var C=i[1];
+if(B<0xe0){
+var D=B&0x1f;
+if((C<0x80)||(C>0xbf)){
+throw new $URIError("URI malformed");
+}
+var E=C&0x3f;
+A=(D<<6)+E;
+if(A<0x80||A>0x7ff){
+throw new $URIError("URI malformed");
+}
+}else{
+var G=i[2];
+if(B<0xf0){
+var D=B&0x0f;
+if((C<0x80)||(C>0xbf)){
+throw new $URIError("URI malformed");
+}
+var E=C&0x3f;
+if((G<0x80)||(G>0xbf)){
+throw new $URIError("URI malformed");
+}
+var H=G&0x3f;
+A=(D<<12)+(E<<6)+H;
+if((A<0x800)||(A>0xffff)){
+throw new $URIError("URI malformed");
+}
+}else{
+var I=i[3];
+if(B<0xf8){
+var D=(B&0x07);
+if((C<0x80)||(C>0xbf)){
+throw new $URIError("URI malformed");
+}
+var E=(C&0x3f);
+if((G<0x80)||(G>0xbf)){
+throw new $URIError("URI malformed");
+}
+var H=(G&0x3f);
+if((I<0x80)||(I>0xbf)){
+throw new $URIError("URI malformed");
+}
+var J=(I&0x3f);
+A=(D<<18)+(E<<12)+(H<<6)+J;
+if((A<0x10000)||(A>0x10ffff)){
+throw new $URIError("URI malformed");
+}
+}else{
+throw new $URIError("URI malformed");
+}
+}
+}
+}
+if(0xD800<=A&&A<=0xDFFF){
+throw new $URIError("URI malformed");
+}
+if(A<0x10000){
+%_TwoByteSeqStringSetChar(h++,A,g);
+}else{
+%_TwoByteSeqStringSetChar(h++,(A>>10)+0xd7c0,g);
+%_TwoByteSeqStringSetChar(h++,(A&0x3ff)+0xdc00,g);
+}
+return h;
+}
+function Encode(K,L){
+var M=K.length;
+var N=new InternalArray(M);
+var h=0;
+for(var P=0;P=0xDC00&&m<=0xDFFF)throw new $URIError("URI malformed");
+if(m<0xD800||m>0xDBFF){
+h=URIEncodeSingle(m,N,h);
+}else{
+P++;
+if(P==M)throw new $URIError("URI malformed");
+var o=K.charCodeAt(P);
+if(o<0xDC00||o>0xDFFF)throw new $URIError("URI malformed");
+h=URIEncodePair(m,o,N,h);
+}
+}
+}
+var g=%NewString(N.length,true);
+for(var Q=0;Q=M)throw new $URIError("URI malformed");
+var b=URIHexCharsToCharCode(K.charCodeAt(P+1),K.charCodeAt(P+2));
+if(b>>7)break;
+if(R(b)){
+%_OneByteSeqStringSetChar(h++,37,S);
+%_OneByteSeqStringSetChar(h++,K.charCodeAt(P+1),S);
+%_OneByteSeqStringSetChar(h++,K.charCodeAt(P+2),S);
+}else{
+%_OneByteSeqStringSetChar(h++,b,S);
+}
+P+=2;
+}else{
+if(a>0x7f)break;
+%_OneByteSeqStringSetChar(h++,a,S);
+}
+}
+S=%TruncateString(S,h);
+if(P==M)return S;
+var T=%NewString(M-P,false);
+h=0;
+for(;P=M)throw new $URIError("URI malformed");
+var b=URIHexCharsToCharCode(K.charCodeAt(++P),K.charCodeAt(++P));
+if(b>>7){
+var U=0;
+while(((b<<++U)&0x80)!=0){}
+if(U==1||U>4)throw new $URIError("URI malformed");
+var i=new $Array(U);
+i[0]=b;
+if(P+3*(U-1)>=M)throw new $URIError("URI malformed");
+for(var Q=1;Q0)return c;
+return 0-c;
+}
+function MathAcosJS(c){
+return %_MathAcos(+c);
+}
+function MathAsinJS(c){
+return %_MathAsin(+c);
+}
+function MathAtanJS(c){
+return %_MathAtan(+c);
+}
+function MathAtan2JS(d,c){
+d=+d;
+c=+c;
+return %_MathAtan2(d,c);
+}
+function MathCeil(c){
+return-%_MathFloor(-c);
+}
+function MathExp(c){
+return %MathExpRT(((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)));
+}
+function MathFloorJS(c){
+return %_MathFloor(+c);
+}
+function MathLog(c){
+return %_MathLogRT(((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)));
+}
+function MathMax(g,h){
+var i=%_ArgumentsLength();
+if(i==2){
+g=((typeof(%IS_VAR(g))==='number')?g:NonNumberToNumber(g));
+h=((typeof(%IS_VAR(h))==='number')?h:NonNumberToNumber(h));
+if(h>g)return h;
+if(g>h)return g;
+if(g==h){
+return(g===0&&%_IsMinusZero(g))?h:g;
+}
+return $NaN;
+}
+var j=-(1/0);
+for(var k=0;kj||(j===0&&l===0&&%_IsMinusZero(j))){
+j=l;
+}
+}
+return j;
+}
+function MathMin(g,h){
+var i=%_ArgumentsLength();
+if(i==2){
+g=((typeof(%IS_VAR(g))==='number')?g:NonNumberToNumber(g));
+h=((typeof(%IS_VAR(h))==='number')?h:NonNumberToNumber(h));
+if(h>g)return g;
+if(g>h)return h;
+if(g==h){
+return(g===0&&%_IsMinusZero(g))?g:h;
+}
+return $NaN;
+}
+var j=(1/0);
+for(var k=0;k>>16))|0;
+rngstate[0]=m;
+var o=(MathImul(36969,rngstate[1]&0xFFFF)+(rngstate[1]>>>16))|0;
+rngstate[1]=o;
+var c=((m<<16)+(o&0xFFFF))|0;
+return(c<0?(c+0x100000000):c)*2.3283064365386962890625e-10;
+}
+function MathRound(c){
+return %RoundNumber(((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)));
+}
+function MathSqrtJS(c){
+return %_MathSqrt(+c);
+}
+function MathImul(c,d){
+return %NumberImul(((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)),((typeof(%IS_VAR(d))==='number')?d:NonNumberToNumber(d)));
+}
+function MathSign(c){
+c=+c;
+if(c>0)return 1;
+if(c<0)return-1;
+return c;
+}
+function MathTrunc(c){
+c=+c;
+if(c>0)return %_MathFloor(c);
+if(c<0)return-%_MathFloor(-c);
+return c;
+}
+function MathTanh(c){
+if(!(typeof(c)==='number'))c=NonNumberToNumber(c);
+if(c===0)return c;
+if(!(%_IsSmi(%IS_VAR(c))||((c==c)&&(c!=1/0)&&(c!=-1/0))))return MathSign(c);
+var q=MathExp(c);
+var r=MathExp(-c);
+return(q-r)/(q+r);
+}
+function MathAsinh(c){
+if(!(typeof(c)==='number'))c=NonNumberToNumber(c);
+if(c===0||!(%_IsSmi(%IS_VAR(c))||((c==c)&&(c!=1/0)&&(c!=-1/0))))return c;
+if(c>0)return MathLog(c+%_MathSqrt(c*c+1));
+return-MathLog(-c+%_MathSqrt(c*c+1));
+}
+function MathAcosh(c){
+if(!(typeof(c)==='number'))c=NonNumberToNumber(c);
+if(c<1)return $NaN;
+if(!(%_IsSmi(%IS_VAR(c))||((c==c)&&(c!=1/0)&&(c!=-1/0))))return c;
+return MathLog(c+%_MathSqrt(c+1)*%_MathSqrt(c-1));
+}
+function MathAtanh(c){
+if(!(typeof(c)==='number'))c=NonNumberToNumber(c);
+if(c===0)return c;
+if(!(%_IsSmi(%IS_VAR(c))||((c==c)&&(c!=1/0)&&(c!=-1/0))))return $NaN;
+return 0.5*MathLog((1+c)/(1-c));
+}
+function MathHypot(c,d){
+var i=%_ArgumentsLength();
+var t=new InternalArray(i);
+var u=0;
+for(var k=0;ku)u=l;
+t[k]=l;
+}
+if(u===0)u=1;
+var w=0;
+var z=0;
+for(var k=0;k>>0);
+}
+function MathCbrt(c){
+if(!(typeof(c)==='number'))c=NonNumberToNumber(c);
+if(c==0||!(%_IsSmi(%IS_VAR(c))||((c==c)&&(c!=1/0)&&(c!=-1/0))))return c;
+return c>=0?CubeRoot(c):-CubeRoot(-c);
+}
+function CubeRoot(c){
+var C=MathFloorJS(%_DoubleHi(c)/3)+0x2A9F7893;
+var D=%_ConstructDouble(C,0);
+D=(1.0/3.0)*(c/(D*D)+2*D);
+;
+D=(1.0/3.0)*(c/(D*D)+2*D);
+;
+D=(1.0/3.0)*(c/(D*D)+2*D);
+;
+return(1.0/3.0)*(c/(D*D)+2*D);
+;
+}
+function MathConstructor(){}
+var E=new MathConstructor();
+%InternalSetPrototype(E,a.prototype);
+%AddNamedProperty(global,"Math",E,2);
+%FunctionSetInstanceClassName(MathConstructor,'Math');
+%AddNamedProperty(E,symbolToStringTag,"Math",1|2);
+InstallConstants(E,b(
+"E",2.7182818284590452354,
+"LN10",2.302585092994046,
+"LN2",0.6931471805599453,
+"LOG2E",1.4426950408889634,
+"LOG10E",0.4342944819032518,
+"PI",3.1415926535897932,
+"SQRT1_2",0.7071067811865476,
+"SQRT2",1.4142135623730951
+));
+InstallFunctions(E,2,b(
+"random",MathRandom,
+"abs",MathAbs,
+"acos",MathAcosJS,
+"asin",MathAsinJS,
+"atan",MathAtanJS,
+"ceil",MathCeil,
+"exp",MathExp,
+"floor",MathFloorJS,
+"log",MathLog,
+"round",MathRound,
+"sqrt",MathSqrtJS,
+"atan2",MathAtan2JS,
+"pow",MathPowJS,
+"max",MathMax,
+"min",MathMin,
+"imul",MathImul,
+"sign",MathSign,
+"trunc",MathTrunc,
+"tanh",MathTanh,
+"asinh",MathAsinh,
+"acosh",MathAcosh,
+"atanh",MathAtanh,
+"hypot",MathHypot,
+"fround",MathFroundJS,
+"clz32",MathClz32JS,
+"cbrt",MathCbrt
+));
+%SetInlineBuiltinFlag(MathAbs);
+%SetInlineBuiltinFlag(MathAcosJS);
+%SetInlineBuiltinFlag(MathAsinJS);
+%SetInlineBuiltinFlag(MathAtanJS);
+%SetInlineBuiltinFlag(MathAtan2JS);
+%SetInlineBuiltinFlag(MathCeil);
+%SetInlineBuiltinFlag(MathClz32JS);
+%SetInlineBuiltinFlag(MathFloorJS);
+%SetInlineBuiltinFlag(MathRandom);
+%SetInlineBuiltinFlag(MathSign);
+%SetInlineBuiltinFlag(MathSqrtJS);
+%SetInlineBuiltinFlag(MathTrunc);
+$abs=MathAbs;
+$exp=MathExp;
+$floor=MathFloorJS;
+$max=MathMax;
+$min=MathMin;
+})();
+
+fdlibm¹¨
+var kMath;
+var rempio2result;
+(function(){
+"use strict";
+%CheckIsBootstrapping();
+var a=global.Math;
+var b=global.Array;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function KernelTan(c,d,g){
+var h;
+var i;
+var j=%_DoubleHi(c);
+var k=j&0x7fffffff;
+if(k<0x3e300000){
+if(((k|%_DoubleLo(c))|(g+1))==0){
+return 1/$abs(c);
+}else{
+if(g==1){
+return c;
+}else{
+var i=c+d;
+var h=%_ConstructDouble(%_DoubleHi(i),0);
+var l=d-(h-c);
+var m=-1/i;
+var o=%_ConstructDouble(%_DoubleHi(m),0);
+var q=1+o*h;
+return o+m*(q+o*l);
+}
+}
+}
+if(k>=0x3fe59428){
+if(c<0){
+c=-c;
+d=-d;
+}
+h=kMath[32]-c;
+i=kMath[33]-d;
+c=h+i;
+d=0;
+}
+h=c*c;
+i=h*h;
+var r=kMath[19+1]
++i*(kMath[19+3]
++i*(kMath[19+5]
++
+i*(kMath[19+7]
++i*(kMath[19+9]
++i*kMath[19+11]
+))));
+var l=h*(kMath[19+2]
++i*(kMath[19+4]
++i*(kMath[19+6]
++
+i*(kMath[19+8]
++i*(kMath[19+10]
++i*kMath[19+12]
+)))));
+var q=h*c;
+r=d+h*(q*(r+l)+d);
+r=r+kMath[19+0]
+*q;
+i=c+r;
+if(k>=0x3fe59428){
+return(1-((j>>30)&2))*
+(g-2.0*(c-(i*i/(i+g)-r)));
+}
+if(g==1){
+return i;
+}else{
+h=%_ConstructDouble(%_DoubleHi(i),0);
+l=r-(h-c);
+var m=-1/i;
+var o=%_ConstructDouble(%_DoubleHi(m),0);
+q=1+o*h;
+return o+m*(q+o*l);
+}
+}
+function MathSinSlow(c){
+var t,u,w;
+var j=%_DoubleHi(c);
+var k=j&0x7fffffff;
+if(k<0x4002d97c){
+if(j>0){
+var h=c-kMath[1];
+if(k!=0x3ff921fb){
+u=h-kMath[2];
+w=(h-u)-kMath[2];
+}else{
+h-=kMath[3];
+u=h-kMath[4];
+w=(h-u)-kMath[4];
+}
+t=1;
+}else{
+var h=c+kMath[1];
+if(k!=0x3ff921fb){
+u=h+kMath[2];
+w=(h-u)+kMath[2];
+}else{
+h+=kMath[3];
+u=h+kMath[4];
+w=(h-u)+kMath[4];
+}
+t=-1;
+}
+}else if(k<=0x413921fb){
+var o=$abs(c);
+t=(o*kMath[0]+0.5)|0;
+var r=o-t*kMath[1];
+var i=t*kMath[2];
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x1000000){
+o=r;
+i=t*kMath[3];
+r=o-i;
+i=t*kMath[4]-((o-r)-i);
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x3100000){
+o=r;
+i=t*kMath[5];
+r=o-i;
+i=t*kMath[6]-((o-r)-i);
+u=r-i;
+}
+}
+w=(r-u)-i;
+if(j<0){
+t=-t;
+u=-u;
+w=-w;
+}
+}else{
+t=%RemPiO2(c,rempio2result);
+u=rempio2result[0];
+w=rempio2result[1];
+}
+;
+var z=1-(t&2);
+if(t&1){
+var k=%_DoubleHi(u)&0x7fffffff;
+var h=u*u;
+var r=h*(4.16666666666666019037e-02+h*(-1.38888888888741095749e-03+h*(2.48015872894767294178e-05+h*(-2.75573143513906633035e-07+h*(2.08757232129817482790e-09+h*-1.13596475577881948265e-11)))));
+if(k<0x3fd33333){
+return(1-(0.5*h-(h*r-u*w)))*z;
+}else{
+var A;
+if(k>0x3fe90000){
+A=0.28125;
+}else{
+A=%_ConstructDouble(%_DoubleHi(0.25*u),0);
+}
+var B=0.5*h-A;
+return(1-A-(B-(h*r-u*w)))*z;
+}
+;
+}else{
+var h=u*u;
+var l=h*u;
+var r=8.33333333332248946124e-03+h*(-1.98412698298579493134e-04+h*(2.75573137070700676789e-06+h*(-2.50507602534068634195e-08+h*1.58969099521155010221e-10)));
+return(u-((h*(0.5*w-l*r)-w)-l*-1.66666666666666324348e-01))*z;
+;
+}
+}
+function MathCosSlow(c){
+var t,u,w;
+var j=%_DoubleHi(c);
+var k=j&0x7fffffff;
+if(k<0x4002d97c){
+if(j>0){
+var h=c-kMath[1];
+if(k!=0x3ff921fb){
+u=h-kMath[2];
+w=(h-u)-kMath[2];
+}else{
+h-=kMath[3];
+u=h-kMath[4];
+w=(h-u)-kMath[4];
+}
+t=1;
+}else{
+var h=c+kMath[1];
+if(k!=0x3ff921fb){
+u=h+kMath[2];
+w=(h-u)+kMath[2];
+}else{
+h+=kMath[3];
+u=h+kMath[4];
+w=(h-u)+kMath[4];
+}
+t=-1;
+}
+}else if(k<=0x413921fb){
+var o=$abs(c);
+t=(o*kMath[0]+0.5)|0;
+var r=o-t*kMath[1];
+var i=t*kMath[2];
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x1000000){
+o=r;
+i=t*kMath[3];
+r=o-i;
+i=t*kMath[4]-((o-r)-i);
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x3100000){
+o=r;
+i=t*kMath[5];
+r=o-i;
+i=t*kMath[6]-((o-r)-i);
+u=r-i;
+}
+}
+w=(r-u)-i;
+if(j<0){
+t=-t;
+u=-u;
+w=-w;
+}
+}else{
+t=%RemPiO2(c,rempio2result);
+u=rempio2result[0];
+w=rempio2result[1];
+}
+;
+if(t&1){
+var z=(t&2)-1;
+var h=u*u;
+var l=h*u;
+var r=8.33333333332248946124e-03+h*(-1.98412698298579493134e-04+h*(2.75573137070700676789e-06+h*(-2.50507602534068634195e-08+h*1.58969099521155010221e-10)));
+return(u-((h*(0.5*w-l*r)-w)-l*-1.66666666666666324348e-01))*z;
+;
+}else{
+var z=1-(t&2);
+var k=%_DoubleHi(u)&0x7fffffff;
+var h=u*u;
+var r=h*(4.16666666666666019037e-02+h*(-1.38888888888741095749e-03+h*(2.48015872894767294178e-05+h*(-2.75573143513906633035e-07+h*(2.08757232129817482790e-09+h*-1.13596475577881948265e-11)))));
+if(k<0x3fd33333){
+return(1-(0.5*h-(h*r-u*w)))*z;
+}else{
+var A;
+if(k>0x3fe90000){
+A=0.28125;
+}else{
+A=%_ConstructDouble(%_DoubleHi(0.25*u),0);
+}
+var B=0.5*h-A;
+return(1-A-(B-(h*r-u*w)))*z;
+}
+;
+}
+}
+function MathSin(c){
+c=+c;
+if((%_DoubleHi(c)&0x7fffffff)<=0x3fe921fb){
+var h=c*c;
+var l=h*c;
+var r=8.33333333332248946124e-03+h*(-1.98412698298579493134e-04+h*(2.75573137070700676789e-06+h*(-2.50507602534068634195e-08+h*1.58969099521155010221e-10)));
+return(c-((h*(0.5*0-l*r)-0)-l*-1.66666666666666324348e-01));
+;
+}
+return+MathSinSlow(c);
+}
+function MathCos(c){
+c=+c;
+if((%_DoubleHi(c)&0x7fffffff)<=0x3fe921fb){
+var k=%_DoubleHi(c)&0x7fffffff;
+var h=c*c;
+var r=h*(4.16666666666666019037e-02+h*(-1.38888888888741095749e-03+h*(2.48015872894767294178e-05+h*(-2.75573143513906633035e-07+h*(2.08757232129817482790e-09+h*-1.13596475577881948265e-11)))));
+if(k<0x3fd33333){
+return(1-(0.5*h-(h*r-c*0)));
+}else{
+var A;
+if(k>0x3fe90000){
+A=0.28125;
+}else{
+A=%_ConstructDouble(%_DoubleHi(0.25*c),0);
+}
+var B=0.5*h-A;
+return(1-A-(B-(h*r-c*0)));
+}
+;
+}
+return+MathCosSlow(c);
+}
+function MathTan(c){
+c=c*1;
+if((%_DoubleHi(c)&0x7fffffff)<=0x3fe921fb){
+return KernelTan(c,0,1);
+}
+var t,u,w;
+var j=%_DoubleHi(c);
+var k=j&0x7fffffff;
+if(k<0x4002d97c){
+if(j>0){
+var h=c-kMath[1];
+if(k!=0x3ff921fb){
+u=h-kMath[2];
+w=(h-u)-kMath[2];
+}else{
+h-=kMath[3];
+u=h-kMath[4];
+w=(h-u)-kMath[4];
+}
+t=1;
+}else{
+var h=c+kMath[1];
+if(k!=0x3ff921fb){
+u=h+kMath[2];
+w=(h-u)+kMath[2];
+}else{
+h+=kMath[3];
+u=h+kMath[4];
+w=(h-u)+kMath[4];
+}
+t=-1;
+}
+}else if(k<=0x413921fb){
+var o=$abs(c);
+t=(o*kMath[0]+0.5)|0;
+var r=o-t*kMath[1];
+var i=t*kMath[2];
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x1000000){
+o=r;
+i=t*kMath[3];
+r=o-i;
+i=t*kMath[4]-((o-r)-i);
+u=r-i;
+if(k-(%_DoubleHi(u)&0x7ff00000)>0x3100000){
+o=r;
+i=t*kMath[5];
+r=o-i;
+i=t*kMath[6]-((o-r)-i);
+u=r-i;
+}
+}
+w=(r-u)-i;
+if(j<0){
+t=-t;
+u=-u;
+w=-w;
+}
+}else{
+t=%RemPiO2(c,rempio2result);
+u=rempio2result[0];
+w=rempio2result[1];
+}
+;
+return KernelTan(u,w,(t&1)?-1:1);
+}
+
+
+
+
+function MathLog1p(c){
+c=c*1;
+var j=%_DoubleHi(c);
+var C=j&0x7fffffff;
+var D=1;
+var E=c;
+var G=1;
+var H=0;
+var I=c;
+if(j<0x3fda827a){
+if(C>=0x3ff00000){
+if(c===-1){
+return-(1/0);
+}else{
+return $NaN;
+}
+}else if(C<0x3c900000){
+return c;
+}else if(C<0x3e200000){
+return c-c*c*0.5;
+}
+if((j>0)||(j<=-0x402D413D)){
+D=0;
+}
+}
+if(j>=0x7ff00000)return c;
+if(D!==0){
+if(j<0x43400000){
+I=1+c;
+G=%_DoubleHi(I);
+D=(G>>20)-1023;
+H=(D>0)?1-(I-c):c-(I-1);
+H=H/I;
+}else{
+G=%_DoubleHi(I);
+D=(G>>20)-1023;
+}
+G=G&0xfffff;
+if(G<0x6a09e){
+I=%_ConstructDouble(G|0x3ff00000,%_DoubleLo(I));
+}else{
+++D;
+I=%_ConstructDouble(G|0x3fe00000,%_DoubleLo(I));
+G=(0x00100000-G)>>2;
+}
+E=I-1;
+}
+var J=0.5*E*E;
+if(G===0){
+if(E===0){
+if(D===0){
+return 0.0;
+}else{
+return D*kMath[34]+(H+D*kMath[35]);
+}
+}
+var K=J*(1-kMath[36]*E);
+if(D===0){
+return E-K;
+}else{
+return D*kMath[34]-((K-(D*kMath[35]+H))-E);
+}
+}
+var q=E/(2+E);
+var h=q*q;
+var K=h*((kMath[37+0])
++h*((kMath[37+1])
++h*
+((kMath[37+2])
++h*((kMath[37+3])
++h*
+((kMath[37+4])
++h*((kMath[37+5])
++h*(kMath[37+6])
+))))));
+if(D===0){
+return E-(J-q*(J+K));
+}else{
+return D*kMath[34]-((J-(q*(J+K)+(D*kMath[35]+H)))-E);
+}
+}
+
+
+function MathExpm1(c){
+c=c*1;
+var d;
+var L;
+var M;
+var D;
+var o;
+var H;
+var j=%_DoubleHi(c);
+var N=j&0x80000000;
+var d=(N===0)?c:-c;
+j&=0x7fffffff;
+if(j>=0x4043687a){
+if(j>=0x40862e42){
+if(j>=0x7ff00000){
+return(c===-(1/0))?-1:c;
+}
+if(c>kMath[44])return(1/0);
+}
+if(N!=0)return-1;
+}
+if(j>0x3fd62e42){
+if(j<0x3ff0a2b2){
+if(N===0){
+L=c-kMath[34];
+M=kMath[35];
+D=1;
+}else{
+L=c+kMath[34];
+M=-kMath[35];
+D=-1;
+}
+}else{
+D=(kMath[45]*c+((N===0)?0.5:-0.5))|0;
+o=D;
+L=c-o*kMath[34];
+M=o*kMath[35];
+}
+c=L-M;
+H=(L-c)-M;
+}else if(j<0x3c900000){
+return c;
+}else{
+D=0;
+}
+var P=0.5*c;
+var Q=c*P;
+var R=1+Q*((kMath[46+0])
++Q*((kMath[46+1])
++Q*
+((kMath[46+2])
++Q*((kMath[46+3])
++Q*(kMath[46+4])
+))));
+o=3-R*P;
+var S=Q*((R-o)/(6-c*o));
+if(D===0){
+return c-(c*S-Q);
+}else{
+S=(c*(S-H)-H);
+S-=Q;
+if(D===-1)return 0.5*(c-S)-0.5;
+if(D===1){
+if(c<-0.25)return-2*(S-(c+0.5));
+return 1+2*(c-S);
+}
+if(D<=-2||D>56){
+d=1-(S-c);
+d=%_ConstructDouble(%_DoubleHi(d)+(D<<20),%_DoubleLo(d));
+return d-1;
+}
+if(D<20){
+o=%_ConstructDouble(0x3ff00000-(0x200000>>D),0);
+d=o-(S-c);
+d=%_ConstructDouble(%_DoubleHi(d)+(D<<20),%_DoubleLo(d));
+}else{
+o=%_ConstructDouble((0x3ff-D)<<20,0);
+d=c-(S+o);
+d+=1;
+d=%_ConstructDouble(%_DoubleHi(d)+(D<<20),%_DoubleLo(d));
+}
+}
+return d;
+}
+
+
+
+function MathSinh(c){
+c=c*1;
+var T=(c<0)?-0.5:0.5;
+var C=$abs(c);
+if(C<22){
+if(C<3.725290298461914e-9)return c;
+var o=MathExpm1(C);
+if(C<1)return T*(2*o-o*o/(o+1));
+return T*(o+o/(o+1));
+}
+if(C<709.7822265625)return T*$exp(C);
+if(C<=kMath[51]){
+var i=$exp(0.5*C);
+var o=T*i;
+return o*i;
+}
+return c*(1/0);
+}
+
+function MathCosh(c){
+c=c*1;
+var k=%_DoubleHi(c)&0x7fffffff;
+if(k<0x3fd62e43){
+var o=MathExpm1($abs(c));
+var i=1+o;
+if(k<0x3c800000)return i;
+return 1+(o*o)/(i+i);
+}
+if(k<0x40360000){
+var o=$exp($abs(c));
+return 0.5*o+0.5/o;
+}
+if(k<0x40862e42)return 0.5*$exp($abs(c));
+if($abs(c)<=kMath[51]){
+var i=$exp(0.5*$abs(c));
+var o=0.5*i;
+return o*i;
+}
+if((!%_IsSmi(%IS_VAR(c))&&!(c==c)))return c;
+return(1/0);
+}
+
+
+
+function MathLog10(c){
+c=c*1;
+var j=%_DoubleHi(c);
+var U=%_DoubleLo(c);
+var D=0;
+if(j<0x00100000){
+if(((j&0x7fffffff)|U)===0)return-(1/0);
+if(j<0)return $NaN;
+D-=54;
+c*=18014398509481984;
+j=%_DoubleHi(c);
+U=%_DoubleLo(c);
+}
+if(j>=0x7ff00000)return c;
+D+=(j>>20)-1023;
+i=(D&0x80000000)>>31;
+j=(j&0x000fffff)|((0x3ff-i)<<20);
+d=D+i;
+c=%_ConstructDouble(j,U);
+h=d*kMath[54]+kMath[52]*%_MathLogRT(c);
+return h+d*kMath[53];
+}
+
+
+
+
+
+
+function MathLog2(c){
+c=c*1;
+var C=$abs(c);
+var j=%_DoubleHi(c);
+var U=%_DoubleLo(c);
+var k=j&0x7fffffff;
+if((k|U)==0)return-(1/0);
+if(j<0)return $NaN;
+if(k>=0x7ff00000)return c;
+var t=0;
+if(k<0x00100000){
+C*=9007199254740992;
+t-=53;
+k=%_DoubleHi(C);
+}
+t+=(k>>20)-0x3ff;
+var W=k&0x000fffff;
+k=W|0x3ff00000;
+var X=1;
+var Y=0;
+var Z=0;
+if(W>0x3988e){
+if(W<0xbb67a){
+X=1.5;
+Y=kMath[64];
+Z=kMath[65];
+}else{
+t+=1;
+k-=0x00100000;
+}
+}
+C=%_ConstructDouble(k,%_DoubleLo(C));
+var I=C-X;
+var l=1/(C+X);
+var aa=I*l;
+var ab=%_ConstructDouble(%_DoubleHi(aa),0);
+var ac=%_ConstructDouble(%_DoubleHi(C+X),0)
+var ad=C-(ac-X);
+var ae=l*((I-ab*ac)-ab*ad);
+var af=aa*aa;
+var r=af*af*((kMath[55+0])
++af*((kMath[55+1])
++af*((kMath[55+2])
++af*(
+(kMath[55+3])
++af*((kMath[55+4])
++af*(kMath[55+5])
+)))));
+r+=ae*(ab+aa);
+af=ab*ab;
+ac=%_ConstructDouble(%_DoubleHi(3.0+af+r),0);
+ad=r-((ac-3.0)-af);
+I=ab*ac;
+l=ae*ac+ad*aa;
+p_h=%_ConstructDouble(%_DoubleHi(I+l),0);
+p_l=l-(p_h-I);
+z_h=kMath[62]*p_h;
+z_l=kMath[63]*p_h+p_l*kMath[61]+Z;
+var o=t;
+var ag=%_ConstructDouble(%_DoubleHi(((z_h+z_l)+Y)+o),0);
+var ah=z_l-(((ag-o)-Y)-z_h);
+return ag+ah;
+}
+InstallFunctions(a,2,b(
+"cos",MathCos,
+"sin",MathSin,
+"tan",MathTan,
+"sinh",MathSinh,
+"cosh",MathCosh,
+"log10",MathLog10,
+"log2",MathLog2,
+"log1p",MathLog1p,
+"expm1",MathExpm1
+));
+%SetInlineBuiltinFlag(MathSin);
+%SetInlineBuiltinFlag(MathCos);
+})();
+
+dateEå
+var $createDate;
+(function(){
+"use strict";
+%CheckIsBootstrapping();
+var a=global.Date;
+function ThrowDateTypeError(){
+throw new $TypeError('this is not a Date object.');
+}
+var b=$NaN;
+var c;
+function LocalTimezone(d){
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return"";
+CheckDateCacheCurrent();
+if(d==b){
+return c;
+}
+var g=%DateLocalTimezone(d);
+b=d;
+c=g;
+return g;
+}
+function UTC(h){
+if((!%_IsSmi(%IS_VAR(h))&&!(h==h)))return h;
+return %DateToUTC(h);
+}
+function MakeTime(i,j,k,l){
+if(!$isFinite(i))return $NaN;
+if(!$isFinite(j))return $NaN;
+if(!$isFinite(k))return $NaN;
+if(!$isFinite(l))return $NaN;
+return(%_IsSmi(%IS_VAR(i))?i:%NumberToInteger(ToNumber(i)))*3600000
++(%_IsSmi(%IS_VAR(j))?j:%NumberToInteger(ToNumber(j)))*60000
++(%_IsSmi(%IS_VAR(k))?k:%NumberToInteger(ToNumber(k)))*1000
++(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)));
+}
+function TimeInYear(m){
+return DaysInYear(m)*86400000;
+}
+function MakeDay(m,o,q){
+if(!$isFinite(m)||!$isFinite(o)||!$isFinite(q))return $NaN;
+m=(%_IsSmi(%IS_VAR(m))?m:%NumberToIntegerMapMinusZero(ToNumber(m)));
+o=(%_IsSmi(%IS_VAR(o))?o:%NumberToIntegerMapMinusZero(ToNumber(o)));
+q=(%_IsSmi(%IS_VAR(q))?q:%NumberToIntegerMapMinusZero(ToNumber(q)));
+if(m<-1000000||m>1000000||
+o<-10000000||o>10000000){
+return $NaN;
+}
+return %DateMakeDay(m|0,o|0)+q-1;
+}
+function MakeDate(r,h){
+var h=r*86400000+h;
+if($abs(h)>8640002592000000)return $NaN;
+return h;
+}
+function TimeClip(h){
+if(!$isFinite(h))return $NaN;
+if($abs(h)>8640000000000000)return $NaN;
+return(%_IsSmi(%IS_VAR(h))?h:%NumberToInteger(ToNumber(h)));
+}
+var t={
+time:0,
+string:null
+};
+function DateConstructor(m,o,q,u,w,z,l){
+if(!%_IsConstructCall()){
+return(new a()).toString();
+}
+var A=%_ArgumentsLength();
+var B;
+if(A==0){
+B=%DateCurrentTime();
+(%DateSetValue(this,B,1));
+}else if(A==1){
+if((typeof(m)==='number')){
+B=m;
+}else if((typeof(m)==='string')){
+CheckDateCacheCurrent();
+var C=t;
+if(C.string===m){
+B=C.time;
+}else{
+B=DateParse(m);
+if(!(!%_IsSmi(%IS_VAR(B))&&!(B==B))){
+C.time=B;
+C.string=m;
+}
+}
+}else{
+var h=ToPrimitive(m,1);
+B=(typeof(h)==='string')?DateParse(h):ToNumber(h);
+}
+(%DateSetValue(this,B,1));
+}else{
+m=ToNumber(m);
+o=ToNumber(o);
+q=A>2?ToNumber(q):1;
+u=A>3?ToNumber(u):0;
+w=A>4?ToNumber(w):0;
+z=A>5?ToNumber(z):0;
+l=A>6?ToNumber(l):0;
+m=(!(!%_IsSmi(%IS_VAR(m))&&!(m==m))&&
+0<=(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))&&
+(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))<=99)?1900+(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m))):m;
+var r=MakeDay(m,o,q);
+var h=MakeTime(u,w,z,l);
+B=MakeDate(r,h);
+(%DateSetValue(this,B,0));
+}
+}
+var D=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
+var E=['Jan','Feb','Mar','Apr','May','Jun',
+'Jul','Aug','Sep','Oct','Nov','Dec'];
+function TwoDigitString(B){
+return B<10?"0"+B:""+B;
+}
+function DateString(q){
+return D[(%_DateField(q,4))]+' '
++E[(%_DateField(q,2))]+' '
++TwoDigitString((%_DateField(q,3)))+' '
++(%_DateField(q,1));
+}
+var G=['Sunday','Monday','Tuesday','Wednesday',
+'Thursday','Friday','Saturday'];
+var H=['January','February','March','April','May','June',
+'July','August','September','October','November','December'];
+function LongDateString(q){
+return G[(%_DateField(q,4))]+', '
++H[(%_DateField(q,2))]+' '
++TwoDigitString((%_DateField(q,3)))+', '
++(%_DateField(q,1));
+}
+function TimeString(q){
+return TwoDigitString((%_DateField(q,5)))+':'
++TwoDigitString((%_DateField(q,6)))+':'
++TwoDigitString((%_DateField(q,7)));
+}
+function TimeStringUTC(q){
+return TwoDigitString((%_DateField(q,15)))+':'
++TwoDigitString((%_DateField(q,16)))+':'
++TwoDigitString((%_DateField(q,17)));
+}
+function LocalTimezoneString(q){
+var g=LocalTimezone((%_DateField(q,0)));
+var I=-(%_DateField(q,21));
+var J=(I>=0)?1:-1;
+var u=$floor((J*I)/60);
+var j=$floor((J*I)%60);
+var K=' GMT'+((J==1)?'+':'-')+
+TwoDigitString(u)+TwoDigitString(j);
+return K+' ('+g+')';
+}
+function DatePrintString(q){
+return DateString(q)+' '+TimeString(q);
+}
+var L=$Array(8);
+function DateParse(M){
+var N=%DateParseString(ToString(M),L);
+if((N===null))return $NaN;
+var r=MakeDay(N[0],N[1],N[2]);
+var h=MakeTime(N[3],N[4],N[5],N[6]);
+var q=MakeDate(r,h);
+if((N[7]===null)){
+return TimeClip(UTC(q));
+}else{
+return TimeClip(q-N[7]*1000);
+}
+}
+function DateUTC(m,o,q,u,w,z,l){
+m=ToNumber(m);
+o=ToNumber(o);
+var A=%_ArgumentsLength();
+q=A>2?ToNumber(q):1;
+u=A>3?ToNumber(u):0;
+w=A>4?ToNumber(w):0;
+z=A>5?ToNumber(z):0;
+l=A>6?ToNumber(l):0;
+m=(!(!%_IsSmi(%IS_VAR(m))&&!(m==m))&&
+0<=(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))&&
+(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))<=99)?1900+(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m))):m;
+var r=MakeDay(m,o,q);
+var h=MakeTime(u,w,z,l);
+return TimeClip(MakeDate(r,h));
+}
+function DateNow(){
+return %DateCurrentTime();
+}
+function DateToString(){
+var d=(%_DateField(this,0))
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+var P=LocalTimezoneString(this)
+return DatePrintString(this)+P;
+}
+function DateToDateString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+return DateString(this);
+}
+function DateToTimeString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+var P=LocalTimezoneString(this);
+return TimeString(this)+P;
+}
+function DateToLocaleString(){
+return %_CallFunction(this,DateToString);
+}
+function DateToLocaleDateString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+return LongDateString(this);
+}
+function DateToLocaleTimeString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+return TimeString(this);
+}
+function DateValueOf(){
+return(%_DateField(this,0));
+}
+function DateGetTime(){
+return(%_DateField(this,0));
+}
+function DateGetFullYear(){
+return(%_DateField(this,1));
+}
+function DateGetUTCFullYear(){
+return(%_DateField(this,11));
+}
+function DateGetMonth(){
+return(%_DateField(this,2));
+}
+function DateGetUTCMonth(){
+return(%_DateField(this,12));
+}
+function DateGetDate(){
+return(%_DateField(this,3));
+}
+function DateGetUTCDate(){
+return(%_DateField(this,13));
+}
+function DateGetDay(){
+return(%_DateField(this,4));
+}
+function DateGetUTCDay(){
+return(%_DateField(this,14));
+}
+function DateGetHours(){
+return(%_DateField(this,5));
+}
+function DateGetUTCHours(){
+return(%_DateField(this,15));
+}
+function DateGetMinutes(){
+return(%_DateField(this,6));
+}
+function DateGetUTCMinutes(){
+return(%_DateField(this,16));
+}
+function DateGetSeconds(){
+return(%_DateField(this,7));
+}
+function DateGetUTCSeconds(){
+return(%_DateField(this,17))
+}
+function DateGetMilliseconds(){
+return(%_DateField(this,8));
+}
+function DateGetUTCMilliseconds(){
+return(%_DateField(this,18));
+}
+function DateGetTimezoneOffset(){
+return(%_DateField(this,21));
+}
+function DateSetTime(l){
+if(%_ClassOf(this)!=='Date')ThrowDateTypeError();
+(%DateSetValue(this,ToNumber(l),1));
+return(%_DateField(this,0));
+}
+function DateSetMilliseconds(l){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+l=ToNumber(l);
+var h=MakeTime((%_DateField(this,5)),(%_DateField(this,6)),(%_DateField(this,7)),l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,9)),h),0));
+}
+function DateSetUTCMilliseconds(l){
+var d=(%_DateField(this,0));
+l=ToNumber(l);
+var h=MakeTime((%_DateField(this,15)),
+(%_DateField(this,16)),
+(%_DateField(this,17)),
+l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,19)),h),1));
+}
+function DateSetSeconds(k,l){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+k=ToNumber(k);
+l=%_ArgumentsLength()<2?(%_DateField(this,8)):ToNumber(l);
+var h=MakeTime((%_DateField(this,5)),(%_DateField(this,6)),k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,9)),h),0));
+}
+function DateSetUTCSeconds(k,l){
+var d=(%_DateField(this,0));
+k=ToNumber(k);
+l=%_ArgumentsLength()<2?(%_DateField(this,18)):ToNumber(l);
+var h=MakeTime((%_DateField(this,15)),(%_DateField(this,16)),k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,19)),h),1));
+}
+function DateSetMinutes(j,k,l){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+j=ToNumber(j);
+var A=%_ArgumentsLength();
+k=A<2?(%_DateField(this,7)):ToNumber(k);
+l=A<3?(%_DateField(this,8)):ToNumber(l);
+var h=MakeTime((%_DateField(this,5)),j,k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,9)),h),0));
+}
+function DateSetUTCMinutes(j,k,l){
+var d=(%_DateField(this,0));
+j=ToNumber(j);
+var A=%_ArgumentsLength();
+k=A<2?(%_DateField(this,17)):ToNumber(k);
+l=A<3?(%_DateField(this,18)):ToNumber(l);
+var h=MakeTime((%_DateField(this,15)),j,k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,19)),h),1));
+}
+function DateSetHours(i,j,k,l){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+i=ToNumber(i);
+var A=%_ArgumentsLength();
+j=A<2?(%_DateField(this,6)):ToNumber(j);
+k=A<3?(%_DateField(this,7)):ToNumber(k);
+l=A<4?(%_DateField(this,8)):ToNumber(l);
+var h=MakeTime(i,j,k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,9)),h),0));
+}
+function DateSetUTCHours(i,j,k,l){
+var d=(%_DateField(this,0));
+i=ToNumber(i);
+var A=%_ArgumentsLength();
+j=A<2?(%_DateField(this,16)):ToNumber(j);
+k=A<3?(%_DateField(this,17)):ToNumber(k);
+l=A<4?(%_DateField(this,18)):ToNumber(l);
+var h=MakeTime(i,j,k,l);
+return(%DateSetValue(this,MakeDate((%_DateField(this,19)),h),1));
+}
+function DateSetDate(q){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+q=ToNumber(q);
+var r=MakeDay((%_DateField(this,1)),(%_DateField(this,2)),q);
+return(%DateSetValue(this,MakeDate(r,(%_DateField(this,10))),0));
+}
+function DateSetUTCDate(q){
+var d=(%_DateField(this,0));
+q=ToNumber(q);
+var r=MakeDay((%_DateField(this,11)),(%_DateField(this,12)),q);
+return(%DateSetValue(this,MakeDate(r,(%_DateField(this,20))),1));
+}
+function DateSetMonth(o,q){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+o=ToNumber(o);
+q=%_ArgumentsLength()<2?(%_DateField(this,3)):ToNumber(q);
+var r=MakeDay((%_DateField(this,1)),o,q);
+return(%DateSetValue(this,MakeDate(r,(%_DateField(this,10))),0));
+}
+function DateSetUTCMonth(o,q){
+var d=(%_DateField(this,0));
+o=ToNumber(o);
+q=%_ArgumentsLength()<2?(%_DateField(this,13)):ToNumber(q);
+var r=MakeDay((%_DateField(this,11)),o,q);
+return(%DateSetValue(this,MakeDate(r,(%_DateField(this,20))),1));
+}
+function DateSetFullYear(m,o,q){
+var d=(%_DateField(this,0)+%_DateField(this,21));
+m=ToNumber(m);
+var A=%_ArgumentsLength();
+var h;
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
+o=A<2?0:ToNumber(o);
+q=A<3?1:ToNumber(q);
+h=0;
+}else{
+o=A<2?(%_DateField(this,2)):ToNumber(o);
+q=A<3?(%_DateField(this,3)):ToNumber(q);
+h=(%_DateField(this,10));
+}
+var r=MakeDay(m,o,q);
+return(%DateSetValue(this,MakeDate(r,h),0));
+}
+function DateSetUTCFullYear(m,o,q){
+var d=(%_DateField(this,0));
+m=ToNumber(m);
+var A=%_ArgumentsLength();
+var h;
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
+o=A<2?0:ToNumber(o);
+q=A<3?1:ToNumber(q);
+h=0;
+}else{
+o=A<2?(%_DateField(this,12)):ToNumber(o);
+q=A<3?(%_DateField(this,13)):ToNumber(q);
+h=(%_DateField(this,20));
+}
+var r=MakeDay(m,o,q);
+return(%DateSetValue(this,MakeDate(r,h),1));
+}
+function DateToUTCString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
+return D[(%_DateField(this,14))]+', '
++TwoDigitString((%_DateField(this,13)))+' '
++E[(%_DateField(this,12))]+' '
++(%_DateField(this,11))+' '
++TimeStringUTC(this)+' GMT';
+}
+function DateGetYear(){
+return(%_DateField(this,1))-1900;
+}
+function DateSetYear(m){
+if(%_ClassOf(this)!=='Date')ThrowDateTypeError();
+m=ToNumber(m);
+if((!%_IsSmi(%IS_VAR(m))&&!(m==m)))return(%DateSetValue(this,$NaN,1));
+m=(0<=(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))&&(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)))<=99)
+?1900+(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m))):m;
+var d=(%_DateField(this,0)+%_DateField(this,21));
+var o,q,h;
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
+o=0;
+q=1;
+h=0;
+}else{
+o=(%_DateField(this,2));
+q=(%_DateField(this,3));
+h=(%_DateField(this,10));
+}
+var r=MakeDay(m,o,q);
+return(%DateSetValue(this,MakeDate(r,h),0));
+}
+function DateToGMTString(){
+return %_CallFunction(this,DateToUTCString);
+}
+function PadInt(Q,R){
+if(R==1)return Q;
+return Q<%_MathPow(10,R-1)?'0'+PadInt(Q,R-1):Q;
+}
+function DateToISOString(){
+var d=(%_DateField(this,0));
+if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))throw MakeRangeError("invalid_time_value",[]);
+var m=this.getUTCFullYear();
+var S;
+if(m>=0&&m<=9999){
+S=PadInt(m,4);
+}else{
+if(m<0){
+S="-"+PadInt(-m,6);
+}else{
+S="+"+PadInt(m,6);
+}
+}
+return S+
+'-'+PadInt(this.getUTCMonth()+1,2)+
+'-'+PadInt(this.getUTCDate(),2)+
+'T'+PadInt(this.getUTCHours(),2)+
+':'+PadInt(this.getUTCMinutes(),2)+
+':'+PadInt(this.getUTCSeconds(),2)+
+'.'+PadInt(this.getUTCMilliseconds(),3)+
+'Z';
+}
+function DateToJSON(T){
+var U=ToObject(this);
+var W=DefaultNumber(U);
+if((typeof(W)==='number')&&!(%_IsSmi(%IS_VAR(W))||((W==W)&&(W!=1/0)&&(W!=-1/0)))){
+return null;
+}
+return U.toISOString();
+}
+var X;
+var Y=$NaN;
+function CheckDateCacheCurrent(){
+if(!X){
+X=%DateCacheVersion();
+if(!X)return;
+}
+if(X[0]==Y){
+return;
+}
+Y=X[0];
+b=$NaN;
+c=(void 0);
+t.time=$NaN;
+t.string=null;
+}
+function CreateDate(h){
+var q=new a();
+q.setTime(h);
+return q;
+}
+%SetCode(a,DateConstructor);
+%FunctionSetPrototype(a,new a($NaN));
+InstallFunctions(a,2,$Array(
+"UTC",DateUTC,
+"parse",DateParse,
+"now",DateNow
+));
+%AddNamedProperty(a.prototype,"constructor",a,2);
+InstallFunctions(a.prototype,2,$Array(
+"toString",DateToString,
+"toDateString",DateToDateString,
+"toTimeString",DateToTimeString,
+"toLocaleString",DateToLocaleString,
+"toLocaleDateString",DateToLocaleDateString,
+"toLocaleTimeString",DateToLocaleTimeString,
+"valueOf",DateValueOf,
+"getTime",DateGetTime,
+"getFullYear",DateGetFullYear,
+"getUTCFullYear",DateGetUTCFullYear,
+"getMonth",DateGetMonth,
+"getUTCMonth",DateGetUTCMonth,
+"getDate",DateGetDate,
+"getUTCDate",DateGetUTCDate,
+"getDay",DateGetDay,
+"getUTCDay",DateGetUTCDay,
+"getHours",DateGetHours,
+"getUTCHours",DateGetUTCHours,
+"getMinutes",DateGetMinutes,
+"getUTCMinutes",DateGetUTCMinutes,
+"getSeconds",DateGetSeconds,
+"getUTCSeconds",DateGetUTCSeconds,
+"getMilliseconds",DateGetMilliseconds,
+"getUTCMilliseconds",DateGetUTCMilliseconds,
+"getTimezoneOffset",DateGetTimezoneOffset,
+"setTime",DateSetTime,
+"setMilliseconds",DateSetMilliseconds,
+"setUTCMilliseconds",DateSetUTCMilliseconds,
+"setSeconds",DateSetSeconds,
+"setUTCSeconds",DateSetUTCSeconds,
+"setMinutes",DateSetMinutes,
+"setUTCMinutes",DateSetUTCMinutes,
+"setHours",DateSetHours,
+"setUTCHours",DateSetUTCHours,
+"setDate",DateSetDate,
+"setUTCDate",DateSetUTCDate,
+"setMonth",DateSetMonth,
+"setUTCMonth",DateSetUTCMonth,
+"setFullYear",DateSetFullYear,
+"setUTCFullYear",DateSetUTCFullYear,
+"toGMTString",DateToGMTString,
+"toUTCString",DateToUTCString,
+"getYear",DateGetYear,
+"setYear",DateSetYear,
+"toISOString",DateToISOString,
+"toJSON",DateToJSON
+));
+$createDate=CreateDate;
+})();
+
+regexp}o
+var $regexpExec;
+var $regexpExecNoTests;
+var $regexpLastMatchInfo;
+var $regexpLastMatchInfoOverride;
+var harmony_regexps=false;
+var harmony_unicode_regexps=false;
+(function(){
+%CheckIsBootstrapping();
+var a=global.RegExp;
+var b=global.Array;
+$regexpLastMatchInfo=new InternalPackedArray(
+2,
+"",
+(void 0),
+0,
+0
+);
+$regexpLastMatchInfoOverride=null;
+function DoConstructRegExp(c,d,g){
+if((%_IsRegExp(d))){
+if(!(g===(void 0))){
+throw MakeTypeError('regexp_flags',[]);
+}
+g=(d.global?'g':'')
++(d.ignoreCase?'i':'')
++(d.multiline?'m':'');
+if(harmony_unicode_regexps)
+g+=(d.unicode?'u':'');
+if(harmony_regexps)
+g+=(d.sticky?'y':'');
+d=d.source;
+}
+d=(d===(void 0))?'':ToString(d);
+g=(g===(void 0))?'':ToString(g);
+%RegExpInitializeAndCompile(c,d,g);
+}
+function RegExpConstructor(d,g){
+if(%_IsConstructCall()){
+DoConstructRegExp(this,d,g);
+}else{
+if((%_IsRegExp(d))&&(g===(void 0))){
+return d;
+}
+return new a(d,g);
+}
+}
+function RegExpCompileJS(d,g){
+if(this==a.prototype){
+throw MakeTypeError('incompatible_method_receiver',
+['RegExp.prototype.compile',this]);
+}
+if((d===(void 0))&&%_ArgumentsLength()!=0){
+DoConstructRegExp(this,'undefined',g);
+}else{
+DoConstructRegExp(this,d,g);
+}
+}
+function DoRegExpExec(h,i,j){
+var k=%_RegExpExec(h,i,j,$regexpLastMatchInfo);
+if(k!==null)$regexpLastMatchInfoOverride=null;
+return k;
+}
+function RegExpExecNoTests(h,i,l){
+var m=%_RegExpExec(h,i,l,$regexpLastMatchInfo);
+if(m!==null){
+$regexpLastMatchInfoOverride=null;
+var o=((m)[0])>>1;
+var l=m[3];
+var q=m[4];
+var r=%_SubString(i,l,q);
+var k=%_RegExpConstructResult(o,l,i);
+k[0]=r;
+if(o==1)return k;
+var t=3+2;
+for(var u=1;ui.length){
+this.lastIndex=0;
+return null;
+}
+}else{
+u=0;
+}
+var A=%_RegExpExec(this,i,u,$regexpLastMatchInfo);
+if((A===null)){
+this.lastIndex=0;
+return null;
+}
+$regexpLastMatchInfoOverride=null;
+if(z){
+this.lastIndex=$regexpLastMatchInfo[4];
+}
+var o=((A)[0])>>1;
+var l=A[3];
+var q=A[4];
+var r=%_SubString(i,l,q);
+var k=%_RegExpConstructResult(o,l,i);
+k[0]=r;
+if(o==1)return k;
+var t=3+2;
+for(var u=1;ui.length){
+this.lastIndex=0;
+return false;
+}
+var A=%_RegExpExec(this,i,u,$regexpLastMatchInfo);
+if((A===null)){
+this.lastIndex=0;
+return false;
+}
+$regexpLastMatchInfoOverride=null;
+this.lastIndex=$regexpLastMatchInfo[4];
+return true;
+}else{
+var h=this;
+if(h.source.length>=3&&
+%_StringCharCodeAt(h.source,0)==46&&
+%_StringCharCodeAt(h.source,1)==42&&
+%_StringCharCodeAt(h.source,2)!=63){
+h=TrimRegExp(h);
+}
+var A=%_RegExpExec(h,i,0,$regexpLastMatchInfo);
+if((A===null)){
+this.lastIndex=0;
+return false;
+}
+$regexpLastMatchInfoOverride=null;
+return true;
+}
+}
+function TrimRegExp(h){
+if(!%_ObjectEquals(B,h)){
+B=h;
+C=
+new a(%_SubString(h.source,2,h.source.length),
+(h.ignoreCase?h.multiline?"im":"i"
+:h.multiline?"m":""));
+}
+return C;
+}
+function RegExpToString(){
+if(!(%_IsRegExp(this))){
+throw MakeTypeError('incompatible_method_receiver',
+['RegExp.prototype.toString',this]);
+}
+var k='/'+this.source+'/';
+if(this.global)k+='g';
+if(this.ignoreCase)k+='i';
+if(this.multiline)k+='m';
+if(harmony_unicode_regexps&&this.unicode)k+='u';
+if(harmony_regexps&&this.sticky)k+='y';
+return k;
+}
+function RegExpGetLastMatch(){
+if($regexpLastMatchInfoOverride!==null){
+return(($regexpLastMatchInfoOverride)[0]);
+}
+var D=(($regexpLastMatchInfo)[1]);
+return %_SubString(D,
+$regexpLastMatchInfo[3],
+$regexpLastMatchInfo[4]);
+}
+function RegExpGetLastParen(){
+if($regexpLastMatchInfoOverride){
+var E=$regexpLastMatchInfoOverride;
+if(E.length<=3)return'';
+return E[E.length-3];
+}
+var G=(($regexpLastMatchInfo)[0]);
+if(G<=2)return'';
+var D=(($regexpLastMatchInfo)[1]);
+var l=$regexpLastMatchInfo[(3+(G-2))];
+var q=$regexpLastMatchInfo[(3+(G-1))];
+if(l!=-1&&q!=-1){
+return %_SubString(D,l,q);
+}
+return"";
+}
+function RegExpGetLeftContext(){
+var H;
+var I;
+if(!$regexpLastMatchInfoOverride){
+H=$regexpLastMatchInfo[3];
+I=(($regexpLastMatchInfo)[1]);
+}else{
+var E=$regexpLastMatchInfoOverride;
+H=((E)[(E).length-2]);
+I=((E)[(E).length-1]);
+}
+return %_SubString(I,0,H);
+}
+function RegExpGetRightContext(){
+var H;
+var I;
+if(!$regexpLastMatchInfoOverride){
+H=$regexpLastMatchInfo[4];
+I=(($regexpLastMatchInfo)[1]);
+}else{
+var E=$regexpLastMatchInfoOverride;
+I=((E)[(E).length-1]);
+var J=((E)[0]);
+H=((E)[(E).length-2])+J.length;
+}
+return %_SubString(I,H,I.length);
+}
+function RegExpMakeCaptureGetter(K){
+return function foo(){
+if($regexpLastMatchInfoOverride){
+if(K<$regexpLastMatchInfoOverride.length-2){
+return(($regexpLastMatchInfoOverride)[(K)]);
+}
+return'';
+}
+var j=K*2;
+if(j>=(($regexpLastMatchInfo)[0]))return'';
+var L=$regexpLastMatchInfo[(3+(j))];
+var M=$regexpLastMatchInfo[(3+(j+1))];
+if(L==-1||M==-1)return'';
+return %_SubString((($regexpLastMatchInfo)[1]),L,M);
+};
+}
+%FunctionSetInstanceClassName(a,'RegExp');
+%AddNamedProperty(
+a.prototype,'constructor',a,2);
+%SetCode(a,RegExpConstructor);
+InstallFunctions(a.prototype,2,b(
+"exec",RegExpExecJS,
+"test",RegExpTest,
+"toString",RegExpToString,
+"compile",RegExpCompileJS
+));
+%FunctionSetLength(a.prototype.compile,1);
+var N=function(){
+var P=(($regexpLastMatchInfo)[2]);
+return(P===(void 0))?"":P;
+};
+var Q=function(i){
+(($regexpLastMatchInfo)[2])=ToString(i);
+};
+%OptimizeObjectForAddingMultipleProperties(a,22);
+%DefineAccessorPropertyUnchecked(a,'input',N,
+Q,4);
+%DefineAccessorPropertyUnchecked(a,'$_',N,
+Q,2|4);
+var R=false;
+var S=function(){return R;};
+var T=function(U){R=U?true:false;};
+%DefineAccessorPropertyUnchecked(a,'multiline',S,
+T,4);
+%DefineAccessorPropertyUnchecked(a,'$*',S,
+T,
+2|4);
+var W=function(X){};
+%DefineAccessorPropertyUnchecked(a,'lastMatch',RegExpGetLastMatch,
+W,4);
+%DefineAccessorPropertyUnchecked(a,'$&',RegExpGetLastMatch,
+W,2|4);
+%DefineAccessorPropertyUnchecked(a,'lastParen',RegExpGetLastParen,
+W,4);
+%DefineAccessorPropertyUnchecked(a,'$+',RegExpGetLastParen,
+W,2|4);
+%DefineAccessorPropertyUnchecked(a,'leftContext',
+RegExpGetLeftContext,W,
+4);
+%DefineAccessorPropertyUnchecked(a,'$`',RegExpGetLeftContext,
+W,2|4);
+%DefineAccessorPropertyUnchecked(a,'rightContext',
+RegExpGetRightContext,W,
+4);
+%DefineAccessorPropertyUnchecked(a,"$'",RegExpGetRightContext,
+W,2|4);
+for(var u=1;u<10;++u){
+%DefineAccessorPropertyUnchecked(a,'$'+u,
+RegExpMakeCaptureGetter(u),W,
+4);
+}
+%ToFastProperties(a);
+$regexpExecNoTests=RegExpExecNoTests;
+$regexpExec=DoRegExpExec;
+})();
+
+,arraybufferi
+"use strict";
+var $ArrayBuffer=global.ArrayBuffer;
+function ArrayBufferConstructor(a){
+if(%_IsConstructCall()){
+var b=ToPositiveInteger(a,'invalid_array_buffer_length');
+%ArrayBufferInitialize(this,b);
+}else{
+throw MakeTypeError('constructor_not_function',["ArrayBuffer"]);
+}
+}
+function ArrayBufferGetByteLen(){
+if(!(%_ClassOf(this)==='ArrayBuffer')){
+throw MakeTypeError('incompatible_method_receiver',
+['ArrayBuffer.prototype.byteLength',this]);
+}
+return %_ArrayBufferGetByteLength(this);
+}
+function ArrayBufferSlice(a,b){
+if(!(%_ClassOf(this)==='ArrayBuffer')){
+throw MakeTypeError('incompatible_method_receiver',
+['ArrayBuffer.prototype.slice',this]);
+}
+var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
+if(!(b===(void 0))){
+b=(%_IsSmi(%IS_VAR(b))?b:%NumberToInteger(ToNumber(b)));
+}
+var d;
+var g=%_ArrayBufferGetByteLength(this);
+if(c<0){
+d=$max(g+c,0);
+}else{
+d=$min(c,g);
+}
+var h=(b===(void 0))?g:b;
+var i;
+if(h<0){
+i=$max(g+h,0);
+}else{
+i=$min(h,g);
+}
+if(ig){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 1!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Uint8Array",1]);
+}
+i=g-h;
+j=i/1;
+}else{
+var j=d;
+i=j*1;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,1,b,h,i);
+}
+function Uint8ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*1;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,1,g,0,d);
+}else{
+%_TypedArrayInitialize(a,1,null,0,d);
+}
+}
+function Uint8ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,1,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 1!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Int8Array",1]);
+}
+i=g-h;
+j=i/1;
+}else{
+var j=d;
+i=j*1;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,2,b,h,i);
+}
+function Int8ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*1;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,2,g,0,d);
+}else{
+%_TypedArrayInitialize(a,2,null,0,d);
+}
+}
+function Int8ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,2,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 2!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Uint16Array",2]);
+}
+i=g-h;
+j=i/2;
+}else{
+var j=d;
+i=j*2;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,3,b,h,i);
+}
+function Uint16ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*2;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,3,g,0,d);
+}else{
+%_TypedArrayInitialize(a,3,null,0,d);
+}
+}
+function Uint16ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,3,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 2!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Int16Array",2]);
+}
+i=g-h;
+j=i/2;
+}else{
+var j=d;
+i=j*2;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,4,b,h,i);
+}
+function Int16ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*2;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,4,g,0,d);
+}else{
+%_TypedArrayInitialize(a,4,null,0,d);
+}
+}
+function Int16ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,4,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 4!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Uint32Array",4]);
+}
+i=g-h;
+j=i/4;
+}else{
+var j=d;
+i=j*4;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,5,b,h,i);
+}
+function Uint32ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*4;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,5,g,0,d);
+}else{
+%_TypedArrayInitialize(a,5,null,0,d);
+}
+}
+function Uint32ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,5,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 4!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Int32Array",4]);
+}
+i=g-h;
+j=i/4;
+}else{
+var j=d;
+i=j*4;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,6,b,h,i);
+}
+function Int32ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*4;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,6,g,0,d);
+}else{
+%_TypedArrayInitialize(a,6,null,0,d);
+}
+}
+function Int32ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,6,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 4!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Float32Array",4]);
+}
+i=g-h;
+j=i/4;
+}else{
+var j=d;
+i=j*4;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,7,b,h,i);
+}
+function Float32ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*4;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,7,g,0,d);
+}else{
+%_TypedArrayInitialize(a,7,null,0,d);
+}
+}
+function Float32ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,7,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 8!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Float64Array",8]);
+}
+i=g-h;
+j=i/8;
+}else{
+var j=d;
+i=j*8;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,8,b,h,i);
+}
+function Float64ArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*8;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,8,g,0,d);
+}else{
+%_TypedArrayInitialize(a,8,null,0,d);
+}
+}
+function Float64ArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,8,b,d)){
+for(var g=0;gg){
+throw MakeRangeError("invalid_typed_array_offset");
+}
+}
+var i;
+var j;
+if((d===(void 0))){
+if(g % 1!==0){
+throw MakeRangeError("invalid_typed_array_alignment",
+["byte length","Uint8ClampedArray",1]);
+}
+i=g-h;
+j=i/1;
+}else{
+var j=d;
+i=j*1;
+}
+if((h+i>g)
+||(j>%_MaxSmi())){
+throw MakeRangeError("invalid_typed_array_length");
+}
+%_TypedArrayInitialize(a,9,b,h,i);
+}
+function Uint8ClampedArrayConstructByLength(a,b){
+var c=(b===(void 0))?
+0:ToPositiveInteger(b,"invalid_typed_array_length");
+if(c>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+var d=c*1;
+if(d>%_TypedArrayMaxSizeInHeap()){
+var g=new $ArrayBuffer(d);
+%_TypedArrayInitialize(a,9,g,0,d);
+}else{
+%_TypedArrayInitialize(a,9,null,0,d);
+}
+}
+function Uint8ClampedArrayConstructByArrayLike(a,b){
+var c=b.length;
+var d=ToPositiveInteger(c,"invalid_typed_array_length");
+if(d>%_MaxSmi()){
+throw MakeRangeError("invalid_typed_array_length");
+}
+if(!%TypedArrayInitializeFromArrayLike(a,9,b,d)){
+for(var g=0;g0){
+for(var g=0;g=k&&i>=j;
+l--){
+a[c+l]=b[l];
+i-=g;
+j-=d;
+}
+return l;
+}
+var l=CopyRightPart();
+var m=new $Array(l+1-k);
+for(var o=k;o<=l;o++){
+m[o-k]=b[o];
+}
+for(o=k;o<=l;o++){
+a[c+o]=m[o-k];
+}
+}
+function TypedArraySet(a,b){
+var c=(b===(void 0))?0:(%_IsSmi(%IS_VAR(b))?b:%NumberToInteger(ToNumber(b)));
+if(c<0){
+throw MakeTypeError("typed_array_set_negative_offset");
+}
+if(c>%_MaxSmi()){
+throw MakeRangeError("typed_array_set_source_too_large");
+}
+switch(%TypedArraySetFastCases(this,a,c)){
+case 0:
+return;
+case 1:
+TypedArraySetFromOverlappingTypedArray(this,a,c);
+return;
+case 2:
+TypedArraySetFromArrayLike(this,a,a.length,c);
+return;
+case 3:
+var d=a.length;
+if((d===(void 0))){
+if((typeof(a)==='number')){
+throw MakeTypeError("invalid_argument");
+}
+return;
+}
+if(c+d>this.length){
+throw MakeRangeError("typed_array_set_source_too_large");
+}
+TypedArraySetFromArrayLike(this,a,d,c);
+return;
+}
+}
+function TypedArrayGetToStringTag(){
+if(!%IsTypedArray(this))return;
+var a=%_ClassOf(this);
+if((a===(void 0)))return;
+return a;
+}
+function SetupTypedArrays(){
+%CheckIsBootstrapping();
+%SetCode(global.Uint8Array,Uint8ArrayConstructor);
+%FunctionSetPrototype(global.Uint8Array,new $Object());
+%AddNamedProperty(global.Uint8Array,"BYTES_PER_ELEMENT",1,
+1|2|4);
+%AddNamedProperty(global.Uint8Array.prototype,
+"constructor",global.Uint8Array,2);
+%AddNamedProperty(global.Uint8Array.prototype,
+"BYTES_PER_ELEMENT",1,
+1|2|4);
+InstallGetter(global.Uint8Array.prototype,"buffer",Uint8Array_GetBuffer);
+InstallGetter(global.Uint8Array.prototype,"byteOffset",Uint8Array_GetByteOffset);
+InstallGetter(global.Uint8Array.prototype,"byteLength",Uint8Array_GetByteLength);
+InstallGetter(global.Uint8Array.prototype,"length",Uint8Array_GetLength);
+InstallGetter(global.Uint8Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Uint8Array.prototype,2,$Array(
+"subarray",Uint8ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Int8Array,Int8ArrayConstructor);
+%FunctionSetPrototype(global.Int8Array,new $Object());
+%AddNamedProperty(global.Int8Array,"BYTES_PER_ELEMENT",1,
+1|2|4);
+%AddNamedProperty(global.Int8Array.prototype,
+"constructor",global.Int8Array,2);
+%AddNamedProperty(global.Int8Array.prototype,
+"BYTES_PER_ELEMENT",1,
+1|2|4);
+InstallGetter(global.Int8Array.prototype,"buffer",Int8Array_GetBuffer);
+InstallGetter(global.Int8Array.prototype,"byteOffset",Int8Array_GetByteOffset);
+InstallGetter(global.Int8Array.prototype,"byteLength",Int8Array_GetByteLength);
+InstallGetter(global.Int8Array.prototype,"length",Int8Array_GetLength);
+InstallGetter(global.Int8Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Int8Array.prototype,2,$Array(
+"subarray",Int8ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Uint16Array,Uint16ArrayConstructor);
+%FunctionSetPrototype(global.Uint16Array,new $Object());
+%AddNamedProperty(global.Uint16Array,"BYTES_PER_ELEMENT",2,
+1|2|4);
+%AddNamedProperty(global.Uint16Array.prototype,
+"constructor",global.Uint16Array,2);
+%AddNamedProperty(global.Uint16Array.prototype,
+"BYTES_PER_ELEMENT",2,
+1|2|4);
+InstallGetter(global.Uint16Array.prototype,"buffer",Uint16Array_GetBuffer);
+InstallGetter(global.Uint16Array.prototype,"byteOffset",Uint16Array_GetByteOffset);
+InstallGetter(global.Uint16Array.prototype,"byteLength",Uint16Array_GetByteLength);
+InstallGetter(global.Uint16Array.prototype,"length",Uint16Array_GetLength);
+InstallGetter(global.Uint16Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Uint16Array.prototype,2,$Array(
+"subarray",Uint16ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Int16Array,Int16ArrayConstructor);
+%FunctionSetPrototype(global.Int16Array,new $Object());
+%AddNamedProperty(global.Int16Array,"BYTES_PER_ELEMENT",2,
+1|2|4);
+%AddNamedProperty(global.Int16Array.prototype,
+"constructor",global.Int16Array,2);
+%AddNamedProperty(global.Int16Array.prototype,
+"BYTES_PER_ELEMENT",2,
+1|2|4);
+InstallGetter(global.Int16Array.prototype,"buffer",Int16Array_GetBuffer);
+InstallGetter(global.Int16Array.prototype,"byteOffset",Int16Array_GetByteOffset);
+InstallGetter(global.Int16Array.prototype,"byteLength",Int16Array_GetByteLength);
+InstallGetter(global.Int16Array.prototype,"length",Int16Array_GetLength);
+InstallGetter(global.Int16Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Int16Array.prototype,2,$Array(
+"subarray",Int16ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Uint32Array,Uint32ArrayConstructor);
+%FunctionSetPrototype(global.Uint32Array,new $Object());
+%AddNamedProperty(global.Uint32Array,"BYTES_PER_ELEMENT",4,
+1|2|4);
+%AddNamedProperty(global.Uint32Array.prototype,
+"constructor",global.Uint32Array,2);
+%AddNamedProperty(global.Uint32Array.prototype,
+"BYTES_PER_ELEMENT",4,
+1|2|4);
+InstallGetter(global.Uint32Array.prototype,"buffer",Uint32Array_GetBuffer);
+InstallGetter(global.Uint32Array.prototype,"byteOffset",Uint32Array_GetByteOffset);
+InstallGetter(global.Uint32Array.prototype,"byteLength",Uint32Array_GetByteLength);
+InstallGetter(global.Uint32Array.prototype,"length",Uint32Array_GetLength);
+InstallGetter(global.Uint32Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Uint32Array.prototype,2,$Array(
+"subarray",Uint32ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Int32Array,Int32ArrayConstructor);
+%FunctionSetPrototype(global.Int32Array,new $Object());
+%AddNamedProperty(global.Int32Array,"BYTES_PER_ELEMENT",4,
+1|2|4);
+%AddNamedProperty(global.Int32Array.prototype,
+"constructor",global.Int32Array,2);
+%AddNamedProperty(global.Int32Array.prototype,
+"BYTES_PER_ELEMENT",4,
+1|2|4);
+InstallGetter(global.Int32Array.prototype,"buffer",Int32Array_GetBuffer);
+InstallGetter(global.Int32Array.prototype,"byteOffset",Int32Array_GetByteOffset);
+InstallGetter(global.Int32Array.prototype,"byteLength",Int32Array_GetByteLength);
+InstallGetter(global.Int32Array.prototype,"length",Int32Array_GetLength);
+InstallGetter(global.Int32Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Int32Array.prototype,2,$Array(
+"subarray",Int32ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Float32Array,Float32ArrayConstructor);
+%FunctionSetPrototype(global.Float32Array,new $Object());
+%AddNamedProperty(global.Float32Array,"BYTES_PER_ELEMENT",4,
+1|2|4);
+%AddNamedProperty(global.Float32Array.prototype,
+"constructor",global.Float32Array,2);
+%AddNamedProperty(global.Float32Array.prototype,
+"BYTES_PER_ELEMENT",4,
+1|2|4);
+InstallGetter(global.Float32Array.prototype,"buffer",Float32Array_GetBuffer);
+InstallGetter(global.Float32Array.prototype,"byteOffset",Float32Array_GetByteOffset);
+InstallGetter(global.Float32Array.prototype,"byteLength",Float32Array_GetByteLength);
+InstallGetter(global.Float32Array.prototype,"length",Float32Array_GetLength);
+InstallGetter(global.Float32Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Float32Array.prototype,2,$Array(
+"subarray",Float32ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Float64Array,Float64ArrayConstructor);
+%FunctionSetPrototype(global.Float64Array,new $Object());
+%AddNamedProperty(global.Float64Array,"BYTES_PER_ELEMENT",8,
+1|2|4);
+%AddNamedProperty(global.Float64Array.prototype,
+"constructor",global.Float64Array,2);
+%AddNamedProperty(global.Float64Array.prototype,
+"BYTES_PER_ELEMENT",8,
+1|2|4);
+InstallGetter(global.Float64Array.prototype,"buffer",Float64Array_GetBuffer);
+InstallGetter(global.Float64Array.prototype,"byteOffset",Float64Array_GetByteOffset);
+InstallGetter(global.Float64Array.prototype,"byteLength",Float64Array_GetByteLength);
+InstallGetter(global.Float64Array.prototype,"length",Float64Array_GetLength);
+InstallGetter(global.Float64Array.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Float64Array.prototype,2,$Array(
+"subarray",Float64ArraySubArray,
+"set",TypedArraySet
+));
+
+%CheckIsBootstrapping();
+%SetCode(global.Uint8ClampedArray,Uint8ClampedArrayConstructor);
+%FunctionSetPrototype(global.Uint8ClampedArray,new $Object());
+%AddNamedProperty(global.Uint8ClampedArray,"BYTES_PER_ELEMENT",1,
+1|2|4);
+%AddNamedProperty(global.Uint8ClampedArray.prototype,
+"constructor",global.Uint8ClampedArray,2);
+%AddNamedProperty(global.Uint8ClampedArray.prototype,
+"BYTES_PER_ELEMENT",1,
+1|2|4);
+InstallGetter(global.Uint8ClampedArray.prototype,"buffer",Uint8ClampedArray_GetBuffer);
+InstallGetter(global.Uint8ClampedArray.prototype,"byteOffset",Uint8ClampedArray_GetByteOffset);
+InstallGetter(global.Uint8ClampedArray.prototype,"byteLength",Uint8ClampedArray_GetByteLength);
+InstallGetter(global.Uint8ClampedArray.prototype,"length",Uint8ClampedArray_GetLength);
+InstallGetter(global.Uint8ClampedArray.prototype,symbolToStringTag,
+TypedArrayGetToStringTag);
+InstallFunctions(global.Uint8ClampedArray.prototype,2,$Array(
+"subarray",Uint8ClampedArraySubArray,
+"set",TypedArraySet
+));
+
+
+}
+SetupTypedArrays();
+var $DataView=global.DataView;
+function DataViewConstructor(a,b,c){
+if(%_IsConstructCall()){
+if(!(%_ClassOf(a)==='ArrayBuffer')){
+throw MakeTypeError('data_view_not_array_buffer',[]);
+}
+if(!(b===(void 0))){
+b=ToPositiveInteger(b,'invalid_data_view_offset');
+}
+if(!(c===(void 0))){
+c=(%_IsSmi(%IS_VAR(c))?c:%NumberToInteger(ToNumber(c)));
+}
+var d=%_ArrayBufferGetByteLength(a);
+var g=(b===(void 0))?0:b;
+if(g>d){
+throw MakeRangeError('invalid_data_view_offset');
+}
+var h=(c===(void 0))
+?d-g
+:c;
+if(h<0||g+h>d){
+throw new MakeRangeError('invalid_data_view_length');
+}
+%_DataViewInitialize(this,a,g,h);
+}else{
+throw MakeTypeError('constructor_not_function',["DataView"]);
+}
+}
+function DataViewGetBufferJS(){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.buffer',this]);
+}
+return %DataViewGetBuffer(this);
+}
+function DataViewGetByteOffset(){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.byteOffset',this]);
+}
+return %_ArrayBufferViewGetByteOffset(this);
+}
+function DataViewGetByteLength(){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.byteLength',this]);
+}
+return %_ArrayBufferViewGetByteLength(this);
+}
+function ToPositiveDataViewOffset(a){
+return ToPositiveInteger(a,'invalid_data_view_accessor_offset');
+}
+function DataViewGetInt8JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getInt8',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetInt8(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetInt8JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setInt8',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetInt8(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetUint8JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getUint8',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetUint8(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetUint8JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setUint8',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetUint8(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetInt16JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getInt16',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetInt16(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetInt16JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setInt16',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetInt16(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetUint16JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getUint16',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetUint16(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetUint16JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setUint16',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetUint16(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetInt32JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getInt32',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetInt32(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetInt32JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setInt32',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetInt32(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetUint32JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getUint32',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetUint32(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetUint32JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setUint32',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetUint32(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetFloat32JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getFloat32',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetFloat32(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetFloat32JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setFloat32',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetFloat32(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+function DataViewGetFloat64JS(a,b){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.getFloat64',this]);
+}
+if(%_ArgumentsLength()<1){
+throw MakeTypeError('invalid_argument');
+}
+return %DataViewGetFloat64(this,
+ToPositiveDataViewOffset(a),
+!!b);
+}
+function DataViewSetFloat64JS(a,b,c){
+if(!(%_ClassOf(this)==='DataView')){
+throw MakeTypeError('incompatible_method_receiver',
+['DataView.setFloat64',this]);
+}
+if(%_ArgumentsLength()<2){
+throw MakeTypeError('invalid_argument');
+}
+%DataViewSetFloat64(this,
+ToPositiveDataViewOffset(a),
+((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),
+!!c);
+}
+
+
+function SetupDataView(){
+%CheckIsBootstrapping();
+%SetCode($DataView,DataViewConstructor);
+%FunctionSetPrototype($DataView,new $Object);
+%AddNamedProperty($DataView.prototype,"constructor",$DataView,2);
+%AddNamedProperty(
+$DataView.prototype,symbolToStringTag,"DataView",1|2);
+InstallGetter($DataView.prototype,"buffer",DataViewGetBufferJS);
+InstallGetter($DataView.prototype,"byteOffset",DataViewGetByteOffset);
+InstallGetter($DataView.prototype,"byteLength",DataViewGetByteLength);
+InstallFunctions($DataView.prototype,2,$Array(
+"getInt8",DataViewGetInt8JS,
+"setInt8",DataViewSetInt8JS,
+"getUint8",DataViewGetUint8JS,
+"setUint8",DataViewSetUint8JS,
+"getInt16",DataViewGetInt16JS,
+"setInt16",DataViewSetInt16JS,
+"getUint16",DataViewGetUint16JS,
+"setUint16",DataViewSetUint16JS,
+"getInt32",DataViewGetInt32JS,
+"setInt32",DataViewSetInt32JS,
+"getUint32",DataViewGetUint32JS,
+"setUint32",DataViewSetUint32JS,
+"getFloat32",DataViewGetFloat32JS,
+"setFloat32",DataViewSetFloat32JS,
+"getFloat64",DataViewGetFloat64JS,
+"setFloat64",DataViewSetFloat64JS
+));
+}
+SetupDataView();
+
+$generatora!
+"use strict";
+function GeneratorObjectNext(a){
+if(!(%_ClassOf(this)==='Generator')){
+throw MakeTypeError('incompatible_method_receiver',
+['[Generator].prototype.next',this]);
+}
+var b=%GeneratorGetContinuation(this);
+if(b>0){
+if((%_DebugIsActive()!=0))%DebugPrepareStepInIfStepping(this);
+try{
+return %_GeneratorNext(this,a);
+}catch(e){
+%GeneratorClose(this);
+throw e;
+}
+}else if(b==0){
+return{value:void 0,done:true};
+}else{
+throw MakeTypeError('generator_running',[]);
+}
+}
+function GeneratorObjectThrow(a){
+if(!(%_ClassOf(this)==='Generator')){
+throw MakeTypeError('incompatible_method_receiver',
+['[Generator].prototype.throw',this]);
+}
+var b=%GeneratorGetContinuation(this);
+if(b>0){
+try{
+return %_GeneratorThrow(this,a);
+}catch(e){
+%GeneratorClose(this);
+throw e;
+}
+}else if(b==0){
+throw a;
+}else{
+throw MakeTypeError('generator_running',[]);
+}
+}
+function GeneratorObjectIterator(){
+return this;
+}
+function GeneratorFunctionPrototypeConstructor(a){
+if(%_IsConstructCall()){
+throw MakeTypeError('not_constructor',['GeneratorFunctionPrototype']);
+}
+}
+function GeneratorFunctionConstructor(a){
+return NewFunctionFromString(arguments,'function*');
+}
+function SetUpGenerators(){
+%CheckIsBootstrapping();
+%NeverOptimizeFunction(GeneratorObjectNext);
+%NeverOptimizeFunction(GeneratorObjectThrow);
+var a=GeneratorFunctionPrototype.prototype;
+InstallFunctions(a,
+2|4|1,
+["next",GeneratorObjectNext,
+"throw",GeneratorObjectThrow]);
+%FunctionSetName(GeneratorObjectIterator,'[Symbol.iterator]');
+%AddNamedProperty(a,symbolIterator,
+GeneratorObjectIterator,2|4|1);
+%AddNamedProperty(a,"constructor",
+GeneratorFunctionPrototype,2|1);
+%AddNamedProperty(a,
+symbolToStringTag,"Generator",2|1);
+%InternalSetPrototype(GeneratorFunctionPrototype,$Function.prototype);
+%AddNamedProperty(GeneratorFunctionPrototype,
+symbolToStringTag,"GeneratorFunction",2|1);
+%SetCode(GeneratorFunctionPrototype,GeneratorFunctionPrototypeConstructor);
+%AddNamedProperty(GeneratorFunctionPrototype,"constructor",
+GeneratorFunction,2|1);
+%InternalSetPrototype(GeneratorFunction,$Function);
+%SetCode(GeneratorFunction,GeneratorFunctionConstructor);
+}
+SetUpGenerators();
+
+8object-observeõ
+"use strict";
+var observationState;
+function GetObservationStateJS(){
+if((observationState===(void 0))){
+observationState=%GetObservationState();
+}
+if((observationState.callbackInfoMap===(void 0))){
+observationState.callbackInfoMap=%ObservationWeakMapCreate();
+observationState.objectInfoMap=%ObservationWeakMapCreate();
+observationState.notifierObjectInfoMap=%ObservationWeakMapCreate();
+observationState.pendingObservers=null;
+observationState.nextCallbackPriority=0;
+observationState.lastMicrotaskId=0;
+}
+return observationState;
+}
+function GetPendingObservers(){
+return GetObservationStateJS().pendingObservers;
+}
+function SetPendingObservers(a){
+GetObservationStateJS().pendingObservers=a;
+}
+function GetNextCallbackPriority(){
+return GetObservationStateJS().nextCallbackPriority++;
+}
+function nullProtoObject(){
+return{__proto__:null};
+}
+function TypeMapCreate(){
+return nullProtoObject();
+}
+function TypeMapAddType(a,b,c){
+a[b]=c?1:(a[b]||0)+1;
+}
+function TypeMapRemoveType(a,b){
+a[b]--;
+}
+function TypeMapCreateFromList(a,b){
+var c=TypeMapCreate();
+for(var d=0;d0?a.performing:null;
+}
+function ConvertAcceptListToTypeMap(a){
+if((a===(void 0)))
+return a;
+if(!(%_IsSpecObject(a)))
+throw MakeTypeError("observe_invalid_accept");
+var b=ToInteger(a.length);
+if(b<0)b=0;
+return TypeMapCreateFromList(a,b);
+}
+function CallbackInfoGet(a){
+return %WeakCollectionGet(GetObservationStateJS().callbackInfoMap,a);
+}
+function CallbackInfoSet(a,b){
+%WeakCollectionSet(GetObservationStateJS().callbackInfoMap,
+a,b);
+}
+function CallbackInfoGetOrCreate(a){
+var b=CallbackInfoGet(a);
+if(!(b===(void 0)))
+return b;
+var c=GetNextCallbackPriority();
+CallbackInfoSet(a,c);
+return c;
+}
+function CallbackInfoGetPriority(a){
+if((typeof(a)==='number'))
+return a;
+else
+return a.priority;
+}
+function CallbackInfoNormalize(a){
+var b=CallbackInfoGet(a);
+if((typeof(b)==='number')){
+var c=b;
+b=new InternalArray;
+b.priority=c;
+CallbackInfoSet(a,b);
+}
+return b;
+}
+function ObjectObserve(a,b,c){
+if(!(%_IsSpecObject(a)))
+throw MakeTypeError("observe_non_object",["observe"]);
+if(%IsJSGlobalProxy(a))
+throw MakeTypeError("observe_global_proxy",["observe"]);
+if(!(%_ClassOf(b)==='Function'))
+throw MakeTypeError("observe_non_function",["observe"]);
+if(ObjectIsFrozen(b))
+throw MakeTypeError("observe_callback_frozen");
+var d=%GetObjectContextObjectObserve(a);
+return d(a,b,c);
+}
+function NativeObjectObserve(a,b,c){
+var d=ObjectInfoGetOrCreate(a);
+var g=ConvertAcceptListToTypeMap(c);
+ObjectInfoAddObserver(d,b,g);
+return a;
+}
+function ObjectUnobserve(a,b){
+if(!(%_IsSpecObject(a)))
+throw MakeTypeError("observe_non_object",["unobserve"]);
+if(%IsJSGlobalProxy(a))
+throw MakeTypeError("observe_global_proxy",["unobserve"]);
+if(!(%_ClassOf(b)==='Function'))
+throw MakeTypeError("observe_non_function",["unobserve"]);
+var c=ObjectInfoGet(a);
+if((c===(void 0)))
+return a;
+ObjectInfoRemoveObserver(c,b);
+return a;
+}
+function ArrayObserve(a,b){
+return ObjectObserve(a,b,['add',
+'update',
+'delete',
+'splice']);
+}
+function ArrayUnobserve(a,b){
+return ObjectUnobserve(a,b);
+}
+function ObserverEnqueueIfActive(a,b,c){
+if(!ObserverIsActive(a,b)||
+!TypeMapHasType(ObserverGetAcceptTypes(a),c.type)){
+return;
+}
+var d=ObserverGetCallback(a);
+if(!%ObserverObjectAndRecordHaveSameOrigin(d,c.object,
+c)){
+return;
+}
+var g=CallbackInfoNormalize(d);
+if((GetPendingObservers()===null)){
+SetPendingObservers(nullProtoObject());
+if((%_DebugIsActive()!=0)){
+var h=++GetObservationStateJS().lastMicrotaskId;
+var i="Object.observe";
+%EnqueueMicrotask(function(){
+%DebugAsyncTaskEvent({type:"willHandle",id:h,name:i});
+ObserveMicrotaskRunner();
+%DebugAsyncTaskEvent({type:"didHandle",id:h,name:i});
+});
+%DebugAsyncTaskEvent({type:"enqueue",id:h,name:i});
+}else{
+%EnqueueMicrotask(ObserveMicrotaskRunner);
+}
+}
+GetPendingObservers()[g.priority]=d;
+g.push(c);
+}
+function ObjectInfoEnqueueExternalChangeRecord(a,b,c){
+if(!ObjectInfoHasActiveObservers(a))
+return;
+var d=!(c===(void 0));
+var g=d?
+{object:a.object,type:c}:
+{object:a.object};
+for(var h in b){
+if(h==='object'||(d&&h==='type'))continue;
+%DefineDataPropertyUnchecked(
+g,h,b[h],1+4);
+}
+ObjectFreezeJS(g);
+ObjectInfoEnqueueInternalChangeRecord(a,g);
+}
+function ObjectInfoEnqueueInternalChangeRecord(a,b){
+if((typeof(b.name)==='symbol'))return;
+if(ChangeObserversIsOptimized(a.changeObservers)){
+var c=a.changeObservers;
+ObserverEnqueueIfActive(c,a,b);
+return;
+}
+for(var d in a.changeObservers){
+var c=a.changeObservers[d];
+if((c===null))
+continue;
+ObserverEnqueueIfActive(c,a,b);
+}
+}
+function BeginPerformSplice(a){
+var b=ObjectInfoGet(a);
+if(!(b===(void 0)))
+ObjectInfoAddPerformingType(b,'splice');
+}
+function EndPerformSplice(a){
+var b=ObjectInfoGet(a);
+if(!(b===(void 0)))
+ObjectInfoRemovePerformingType(b,'splice');
+}
+function EnqueueSpliceRecord(a,b,c,d){
+var g=ObjectInfoGet(a);
+if(!ObjectInfoHasActiveObservers(g))
+return;
+var h={
+type:'splice',
+object:a,
+index:b,
+removed:c,
+addedCount:d
+};
+ObjectFreezeJS(h);
+ObjectFreezeJS(h.removed);
+ObjectInfoEnqueueInternalChangeRecord(g,h);
+}
+function NotifyChange(a,b,c,d){
+var g=ObjectInfoGet(b);
+if(!ObjectInfoHasActiveObservers(g))
+return;
+var h;
+if(arguments.length==2){
+h={type:a,object:b};
+}else if(arguments.length==3){
+h={type:a,object:b,name:c};
+}else{
+h={
+type:a,
+object:b,
+name:c,
+oldValue:d
+};
+}
+ObjectFreezeJS(h);
+ObjectInfoEnqueueInternalChangeRecord(g,h);
+}
+var notifierPrototype={};
+function ObjectNotifierNotify(a){
+if(!(%_IsSpecObject(this)))
+throw MakeTypeError("called_on_non_object",["notify"]);
+var b=ObjectInfoGetFromNotifier(this);
+if((b===(void 0)))
+throw MakeTypeError("observe_notify_non_notifier");
+if(!(typeof(a.type)==='string'))
+throw MakeTypeError("observe_type_non_string");
+ObjectInfoEnqueueExternalChangeRecord(b,a);
+}
+function ObjectNotifierPerformChange(a,b){
+if(!(%_IsSpecObject(this)))
+throw MakeTypeError("called_on_non_object",["performChange"]);
+var c=ObjectInfoGetFromNotifier(this);
+if((c===(void 0)))
+throw MakeTypeError("observe_notify_non_notifier");
+if(!(typeof(a)==='string'))
+throw MakeTypeError("observe_perform_non_string");
+if(!(%_ClassOf(b)==='Function'))
+throw MakeTypeError("observe_perform_non_function");
+var d=%GetObjectContextNotifierPerformChange(c);
+d(c,a,b);
+}
+function NativeObjectNotifierPerformChange(a,b,c){
+ObjectInfoAddPerformingType(a,b);
+var d;
+try{
+d=%_CallFunction((void 0),c);
+}finally{
+ObjectInfoRemovePerformingType(a,b);
+}
+if((%_IsSpecObject(d)))
+ObjectInfoEnqueueExternalChangeRecord(a,d,b);
+}
+function ObjectGetNotifier(a){
+if(!(%_IsSpecObject(a)))
+throw MakeTypeError("observe_non_object",["getNotifier"]);
+if(%IsJSGlobalProxy(a))
+throw MakeTypeError("observe_global_proxy",["getNotifier"]);
+if(ObjectIsFrozen(a))return null;
+if(!%ObjectWasCreatedInCurrentOrigin(a))return null;
+var b=%GetObjectContextObjectGetNotifier(a);
+return b(a);
+}
+function NativeObjectGetNotifier(a){
+var b=ObjectInfoGetOrCreate(a);
+return ObjectInfoGetNotifier(b);
+}
+function CallbackDeliverPending(a){
+var b=CallbackInfoGet(a);
+if((b===(void 0))||(typeof(b)==='number'))
+return false;
+var c=b.priority;
+CallbackInfoSet(a,c);
+var d=GetPendingObservers();
+if(!(d===null))
+delete d[c];
+var g=[];
+%MoveArrayContents(b,g);
+%DeliverObservationChangeRecords(a,g);
+return true;
+}
+function ObjectDeliverChangeRecords(a){
+if(!(%_ClassOf(a)==='Function'))
+throw MakeTypeError("observe_non_function",["deliverChangeRecords"]);
+while(CallbackDeliverPending(a)){}
+}
+function ObserveMicrotaskRunner(){
+var a=GetPendingObservers();
+if(!(a===null)){
+SetPendingObservers(null);
+for(var b in a){
+CallbackDeliverPending(a[b]);
+}
+}
+}
+function SetupObjectObserve(){
+%CheckIsBootstrapping();
+InstallFunctions($Object,2,$Array(
+"deliverChangeRecords",ObjectDeliverChangeRecords,
+"getNotifier",ObjectGetNotifier,
+"observe",ObjectObserve,
+"unobserve",ObjectUnobserve
+));
+InstallFunctions($Array,2,$Array(
+"observe",ArrayObserve,
+"unobserve",ArrayUnobserve
+));
+InstallFunctions(notifierPrototype,2,$Array(
+"notify",ObjectNotifierNotify,
+"performChange",ObjectNotifierPerformChange
+));
+}
+SetupObjectObserve();
+
+(collectionUK
+"use strict";
+var $Set=global.Set;
+var $Map=global.Map;
+function SetConstructor(a){
+if(!%_IsConstructCall()){
+throw MakeTypeError('constructor_not_function',['Set']);
+}
+%_SetInitialize(this);
+if(!(a==null)){
+var b=this.add;
+if(!(%_ClassOf(b)==='Function')){
+throw MakeTypeError('property_not_function',['add',this]);
+}
+for(var c of a){
+%_CallFunction(this,c,b);
+}
+}
+}
+function SetAddJS(a){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.add',this]);
+}
+if(a===0){
+a=0;
+}
+return %_SetAdd(this,a);
+}
+function SetHasJS(a){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.has',this]);
+}
+return %_SetHas(this,a);
+}
+function SetDeleteJS(a){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.delete',this]);
+}
+return %_SetDelete(this,a);
+}
+function SetGetSizeJS(){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.size',this]);
+}
+return %_SetGetSize(this);
+}
+function SetClearJS(){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.clear',this]);
+}
+%_SetClear(this);
+}
+function SetForEach(a,b){
+if(!(%_ClassOf(this)==='Set')){
+throw MakeTypeError('incompatible_method_receiver',
+['Set.prototype.forEach',this]);
+}
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var c=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+c=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var d=new SetIterator(this,2);
+var g;
+var h=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+var i=[(void 0)];
+while(%SetIteratorNext(d,i)){
+if(h)%DebugPrepareStepInIfStepping(a);
+g=i[0];
+var j=c?ToObject(b):b;
+%_CallFunction(j,g,g,this,a);
+}
+}
+function SetUpSet(){
+%CheckIsBootstrapping();
+%SetCode($Set,SetConstructor);
+%FunctionSetPrototype($Set,new $Object());
+%AddNamedProperty($Set.prototype,"constructor",$Set,2);
+%AddNamedProperty(
+$Set.prototype,symbolToStringTag,"Set",2|1);
+%FunctionSetLength(SetForEach,1);
+InstallGetter($Set.prototype,"size",SetGetSizeJS);
+InstallFunctions($Set.prototype,2,$Array(
+"add",SetAddJS,
+"has",SetHasJS,
+"delete",SetDeleteJS,
+"clear",SetClearJS,
+"forEach",SetForEach
+));
+}
+SetUpSet();
+function MapConstructor(a){
+if(!%_IsConstructCall()){
+throw MakeTypeError('constructor_not_function',['Map']);
+}
+%_MapInitialize(this);
+if(!(a==null)){
+var b=this.set;
+if(!(%_ClassOf(b)==='Function')){
+throw MakeTypeError('property_not_function',['set',this]);
+}
+for(var c of a){
+if(!(%_IsSpecObject(c))){
+throw MakeTypeError('iterator_value_not_an_object',[c]);
+}
+%_CallFunction(this,c[0],c[1],b);
+}
+}
+}
+function MapGetJS(a){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.get',this]);
+}
+return %_MapGet(this,a);
+}
+function MapSetJS(a,b){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.set',this]);
+}
+if(a===0){
+a=0;
+}
+return %_MapSet(this,a,b);
+}
+function MapHasJS(a){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.has',this]);
+}
+return %_MapHas(this,a);
+}
+function MapDeleteJS(a){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.delete',this]);
+}
+return %_MapDelete(this,a);
+}
+function MapGetSizeJS(){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.size',this]);
+}
+return %_MapGetSize(this);
+}
+function MapClearJS(){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.clear',this]);
+}
+%_MapClear(this);
+}
+function MapForEach(a,b){
+if(!(%_ClassOf(this)==='Map')){
+throw MakeTypeError('incompatible_method_receiver',
+['Map.prototype.forEach',this]);
+}
+if(!(%_ClassOf(a)==='Function')){
+throw MakeTypeError('called_non_callable',[a]);
+}
+var c=false;
+if((b==null)){
+b=%GetDefaultReceiver(a)||b;
+}else{
+c=(!(%_IsSpecObject(b))&&%IsSloppyModeFunction(a));
+}
+var d=new MapIterator(this,3);
+var g=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
+var h=[(void 0),(void 0)];
+while(%MapIteratorNext(d,h)){
+if(g)%DebugPrepareStepInIfStepping(a);
+var i=c?ToObject(b):b;
+%_CallFunction(i,h[1],h[0],this,a);
+}
+}
+function SetUpMap(){
+%CheckIsBootstrapping();
+%SetCode($Map,MapConstructor);
+%FunctionSetPrototype($Map,new $Object());
+%AddNamedProperty($Map.prototype,"constructor",$Map,2);
+%AddNamedProperty(
+$Map.prototype,symbolToStringTag,"Map",2|1);
+%FunctionSetLength(MapForEach,1);
+InstallGetter($Map.prototype,"size",MapGetSizeJS);
+InstallFunctions($Map.prototype,2,$Array(
+"get",MapGetJS,
+"set",MapSetJS,
+"has",MapHasJS,
+"delete",MapDeleteJS,
+"clear",MapClearJS,
+"forEach",MapForEach
+));
+}
+SetUpMap();
+
+0?"Promise.resolve":"Promise.reject";
+%DebugAsyncTaskEvent({type:"enqueue",id:w,name:z});
+}
+}
+function PromiseIdResolveHandler(d){return d}
+function PromiseIdRejectHandler(g){throw g}
+function PromiseNopResolver(){}
+IsPromise=function IsPromise(d){
+return(%_IsSpecObject(d))&&(!(d[promiseStatus]===(void 0)));
+}
+PromiseCreate=function PromiseCreate(){
+return new a(PromiseNopResolver)
+}
+PromiseResolve=function PromiseResolve(c,d){
+PromiseDone(c,+1,d,promiseOnResolve)
+}
+PromiseReject=function PromiseReject(c,g){
+if((c[promiseStatus])==0){
+var C=(%_DebugIsActive()!=0);
+if(C||!(!(c[promiseHasHandler]===(void 0)))){
+%PromiseRejectEvent(c,g,C);
+}
+}
+PromiseDone(c,-1,g,promiseOnReject)
+}
+function PromiseDeferred(){
+if(this===a){
+var c=PromiseInit(new a(promiseRaw));
+return{
+promise:c,
+resolve:function(d){PromiseResolve(c,d)},
+reject:function(g){PromiseReject(c,g)}
+};
+}else{
+var u={};
+u.promise=new this(function(D,E){
+u.resolve=D;
+u.reject=E;
+})
+return u;
+}
+}
+function PromiseResolved(d){
+if(this===a){
+return PromiseCreateAndSet(+1,d);
+}else{
+return new this(function(D,E){D(d)});
+}
+}
+function PromiseRejected(g){
+var c;
+if(this===a){
+c=PromiseCreateAndSet(-1,g);
+%PromiseRejectEvent(c,g,false);
+}else{
+c=new this(function(D,E){E(g)});
+}
+return c;
+}
+PromiseChain=function PromiseChain(j,k){
+j=(j===(void 0))?PromiseIdResolveHandler:j;
+k=(k===(void 0))?PromiseIdRejectHandler:k;
+var r=%_CallFunction(this.constructor,PromiseDeferred);
+switch((this[promiseStatus])){
+case(void 0):
+throw MakeTypeError('not_a_promise',[this]);
+case 0:
+(this[promiseOnResolve]).push(j,r);
+(this[promiseOnReject]).push(k,r);
+break;
+case+1:
+PromiseEnqueue((this[promiseValue]),
+[j,r],
++1);
+break;
+case-1:
+if(!(!(this[promiseHasHandler]===(void 0)))){
+%PromiseRevokeReject(this);
+}
+PromiseEnqueue((this[promiseValue]),
+[k,r],
+-1);
+break;
+}
+(this[promiseHasHandler]=true);
+if((%_DebugIsActive()!=0)){
+%DebugPromiseEvent({promise:r.promise,parentPromise:this});
+}
+return r.promise;
+}
+PromiseCatch=function PromiseCatch(k){
+return this.then((void 0),k);
+}
+PromiseThen=function PromiseThen(j,k){
+j=(%_ClassOf(j)==='Function')?j
+:PromiseIdResolveHandler;
+k=(%_ClassOf(k)==='Function')?k
+:PromiseIdRejectHandler;
+var G=this;
+var o=this.constructor;
+return %_CallFunction(
+this,
+function(d){
+d=PromiseCoerce(o,d);
+if(d===G){
+if((%_DebugIsActive()!=0&&%DebugCallbackSupportsStepping(k)))%DebugPrepareStepInIfStepping(k);
+return k(MakeTypeError('promise_cyclic',[d]));
+}else if(IsPromise(d)){
+return d.then(j,k);
+}else{
+if((%_DebugIsActive()!=0&&%DebugCallbackSupportsStepping(j)))%DebugPrepareStepInIfStepping(j);
+return j(d);
+}
+},
+k,
+PromiseChain
+);
+}
+function PromiseCast(d){
+return IsPromise(d)?d:new this(function(D){D(d)});
+}
+function PromiseAll(H){
+var r=%_CallFunction(this,PromiseDeferred);
+var I=[];
+try{
+var J=0;
+var B=0;
+for(var i of H){
+this.resolve(i).then(
+(function(B){
+return function(d){
+I[B]=d;
+if(--J===0)r.resolve(I);
+}
+})(B),
+function(g){r.reject(g);});
+++B;
+++J;
+}
+if(J===0){
+r.resolve(I);
+}
+}catch(e){
+r.reject(e)
+}
+return r.promise;
+}
+function PromiseRace(H){
+var r=%_CallFunction(this,PromiseDeferred);
+try{
+for(var i of H){
+this.resolve(i).then(
+function(d){r.resolve(d)},
+function(g){r.reject(g)});
+}
+}catch(e){
+r.reject(e)
+}
+return r.promise;
+}
+function PromiseHasUserDefinedRejectHandlerRecursive(c){
+var K=(c[promiseOnReject]);
+if((K===(void 0)))return false;
+for(var B=0;B>>0;
+if(d<4){
+try{
+h=NoSideEffectToString(b[d]);
+}catch(e){
+if(%IsJSModule(b[d]))
+h="module";
+else if((%_IsSpecObject(b[d])))
+h="object";
+else
+h="#";
+}
+}
+}
+c+=h;
+}
+return c;
+}
+function NoSideEffectToString(a){
+if((typeof(a)==='string'))return a;
+if((typeof(a)==='number'))return %_NumberToString(a);
+if((typeof(a)==='boolean'))return a?'true':'false';
+if((a===(void 0)))return'undefined';
+if((a===null))return'null';
+if((%_IsFunction(a))){
+var b=%_CallFunction(a,FunctionToString);
+if(b.length>128){
+b=%_SubString(b,0,111)+"......"+
+%_SubString(b,b.length-2,b.length);
+}
+return b;
+}
+if((typeof(a)==='symbol'))return %_CallFunction(a,$symbolToString);
+if((%_IsObject(a))
+&&%GetDataProperty(a,"toString")===DefaultObjectToString){
+var c=%GetDataProperty(a,"constructor");
+if(typeof c=="function"){
+var d=c.name;
+if((typeof(d)==='string')&&d!==""){
+return"#<"+d+">";
+}
+}
+}
+if(CanBeSafelyTreatedAsAnErrorObject(a)){
+return %_CallFunction(a,ErrorToString);
+}
+return %_CallFunction(a,NoSideEffectsObjectToString);
+}
+function CanBeSafelyTreatedAsAnErrorObject(a){
+switch(%_ClassOf(a)){
+case'Error':
+case'EvalError':
+case'RangeError':
+case'ReferenceError':
+case'SyntaxError':
+case'TypeError':
+case'URIError':
+return true;
+}
+var b=%GetDataProperty(a,"toString");
+return a instanceof $Error&&b===ErrorToString;
+}
+function ToStringCheckErrorObject(a){
+if(CanBeSafelyTreatedAsAnErrorObject(a)){
+return %_CallFunction(a,ErrorToString);
+}else{
+return ToString(a);
+}
+}
+function ToDetailString(a){
+if(a!=null&&(%_IsObject(a))&&a.toString===DefaultObjectToString){
+var b=a.constructor;
+if(typeof b=="function"){
+var c=b.name;
+if((typeof(c)==='string')&&c!==""){
+return"#<"+c+">";
+}
+}
+}
+return ToStringCheckErrorObject(a);
+}
+function MakeGenericError(a,b,c){
+if((c===(void 0)))c=[];
+return new a(FormatMessage(b,c));
+}
+%FunctionSetInstanceClassName(Script,'Script');
+%AddNamedProperty(Script.prototype,'constructor',Script,
+2|4|1);
+%SetCode(Script,function(a){
+throw new $Error("Not supported");
+});
+function FormatMessage(a,b){
+var c=kMessages[a];
+if(!c)return"";
+return FormatString(c,b);
+}
+function GetLineNumber(a){
+var b=%MessageGetStartPosition(a);
+if(b==-1)return 0;
+var c=%MessageGetScript(a);
+var d=c.locationFromPosition(b,true);
+if(d==null)return 0;
+return d.line+1;
+}
+function GetSourceLine(a){
+var b=%MessageGetScript(a);
+var c=%MessageGetStartPosition(a);
+var d=b.locationFromPosition(c,true);
+if(d==null)return"";
+return d.sourceText();
+}
+function MakeTypeError(a,b){
+return MakeGenericError($TypeError,a,b);
+}
+function MakeRangeError(a,b){
+return MakeGenericError($RangeError,a,b);
+}
+function MakeSyntaxError(a,b){
+return MakeGenericError($SyntaxError,a,b);
+}
+function MakeReferenceError(a,b){
+return MakeGenericError($ReferenceError,a,b);
+}
+function MakeEvalError(a,b){
+return MakeGenericError($EvalError,a,b);
+}
+function MakeError(a,b){
+return MakeGenericError($Error,a,b);
+}
+function MakeTypeErrorEmbedded(a,b){
+return MakeGenericError($TypeError,a,[b]);
+}
+function MakeSyntaxErrorEmbedded(a,b){
+return MakeGenericError($SyntaxError,a,[b]);
+}
+function MakeReferenceErrorEmbedded(a,b){
+return MakeGenericError($ReferenceError,a,[b]);
+}
+function ScriptLineFromPosition(a){
+var b=this.line_ends;
+var c=b.length-1;
+if(c<0)return-1;
+if(a>b[c])return-1;
+if(a<=b[0])return 0;
+var d=1;
+while(true){
+var g=(c+d)>>1;
+if(a<=b[g-1]){
+c=g-1;
+}else if(a>b[g]){
+d=g+1;
+}else{
+return g;
+}
+}
+}
+function ScriptLocationFromPosition(position,
+include_resource_offset){
+var a=this.lineFromPosition(position);
+if(a==-1)return null;
+var b=this.line_ends;
+var c=a==0?0:b[a-1]+1;
+var d=b[a];
+if(d>0&&%_CallFunction(this.source,d-1,$stringCharAt)=='\r'){
+d--;
+}
+var g=position-c;
+if(include_resource_offset){
+a+=this.line_offset;
+if(a==this.line_offset){
+g+=this.column_offset;
+}
+}
+return new SourceLocation(this,position,a,g,c,d);
+}
+function ScriptLocationFromLine(a,b,c){
+var d=0;
+if(!(a===(void 0))){
+d=a-this.line_offset;
+}
+var g=b||0;
+if(d==0){
+g-=this.column_offset;
+}
+var h=c||0;
+if(d<0||g<0||h<0)return null;
+if(d==0){
+return this.locationFromPosition(h+g,false);
+}else{
+var i=this.lineFromPosition(h);
+if(i==-1||i+d>=this.lineCount()){
+return null;
+}
+return this.locationFromPosition(
+this.line_ends[i+d-1]+1+g);
+}
+}
+function ScriptSourceSlice(a,b){
+var c=(a===(void 0))?this.line_offset
+:a;
+var d=(b===(void 0))?this.line_offset+this.lineCount()
+:b;
+c-=this.line_offset;
+d-=this.line_offset;
+if(c<0)c=0;
+if(d>this.lineCount())d=this.lineCount();
+if(c>=this.lineCount()||
+d<0||
+c>d){
+return null;
+}
+var g=this.line_ends;
+var h=c==0?0:g[c-1]+1;
+var i=d==0?0:g[d-1]+1;
+return new SourceSlice(this,
+c+this.line_offset,
+d+this.line_offset,
+h,i);
+}
+function ScriptSourceLine(a){
+var b=0;
+if(!(a===(void 0))){
+b=a-this.line_offset;
+}
+if(b<0||this.lineCount()<=b){
+return null;
+}
+var c=this.line_ends;
+var d=b==0?0:c[b-1]+1;
+var g=c[b];
+return %_CallFunction(this.source,d,g,$stringSubstring);
+}
+function ScriptLineCount(){
+return this.line_ends.length;
+}
+function ScriptNameOrSourceURL(){
+if(this.line_offset>0||this.column_offset>0){
+return this.name;
+}
+if(this.source_url){
+return this.source_url;
+}
+return this.name;
+}
+SetUpLockedPrototype(Script,
+$Array("source","name","source_url","source_mapping_url","line_ends",
+"line_offset","column_offset"),
+$Array(
+"lineFromPosition",ScriptLineFromPosition,
+"locationFromPosition",ScriptLocationFromPosition,
+"locationFromLine",ScriptLocationFromLine,
+"sourceSlice",ScriptSourceSlice,
+"sourceLine",ScriptSourceLine,
+"lineCount",ScriptLineCount,
+"nameOrSourceURL",ScriptNameOrSourceURL
+)
+);
+function SourceLocation(a,b,c,d,g,h){
+this.script=a;
+this.position=b;
+this.line=c;
+this.column=d;
+this.start=g;
+this.end=h;
+}
+function SourceLocationSourceText(){
+return %_CallFunction(this.script.source,
+this.start,
+this.end,
+$stringSubstring);
+}
+SetUpLockedPrototype(SourceLocation,
+$Array("script","position","line","column","start","end"),
+$Array(
+"sourceText",SourceLocationSourceText
+)
+);
+function SourceSlice(a,b,c,d,g){
+this.script=a;
+this.from_line=b;
+this.to_line=c;
+this.from_position=d;
+this.to_position=g;
+}
+function SourceSliceSourceText(){
+return %_CallFunction(this.script.source,
+this.from_position,
+this.to_position,
+$stringSubstring);
+}
+SetUpLockedPrototype(SourceSlice,
+$Array("script","from_line","to_line","from_position","to_position"),
+$Array("sourceText",SourceSliceSourceText)
+);
+function GetPositionInLine(a){
+var b=%MessageGetScript(a);
+var c=%MessageGetStartPosition(a);
+var d=b.locationFromPosition(c,false);
+if(d==null)return-1;
+return c-d.start;
+}
+function GetStackTraceLine(a,b,c,d){
+return new CallSite(a,b,c,false).toString();
+}
+var CallSiteReceiverKey=(%CreatePrivateOwnSymbol("CallSite#receiver"));
+var CallSiteFunctionKey=(%CreatePrivateOwnSymbol("CallSite#function"));
+var CallSitePositionKey=(%CreatePrivateOwnSymbol("CallSite#position"));
+var CallSiteStrictModeKey=(%CreatePrivateOwnSymbol("CallSite#strict_mode"));
+function CallSite(a,b,c,d){
+(this[CallSiteReceiverKey]=a);
+(this[CallSiteFunctionKey]=b);
+(this[CallSitePositionKey]=c);
+(this[CallSiteStrictModeKey]=d);
+}
+function CallSiteGetThis(){
+return(this[CallSiteStrictModeKey])
+?(void 0):(this[CallSiteReceiverKey]);
+}
+function CallSiteGetTypeName(){
+return GetTypeName((this[CallSiteReceiverKey]),false);
+}
+function CallSiteIsToplevel(){
+if((this[CallSiteReceiverKey])==null){
+return true;
+}
+return(%_ClassOf((this[CallSiteReceiverKey]))==='global');
+}
+function CallSiteIsEval(){
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+return a&&a.compilation_type==1;
+}
+function CallSiteGetEvalOrigin(){
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+return FormatEvalOrigin(a);
+}
+function CallSiteGetScriptNameOrSourceURL(){
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+return a?a.nameOrSourceURL():null;
+}
+function CallSiteGetFunction(){
+return(this[CallSiteStrictModeKey])
+?(void 0):(this[CallSiteFunctionKey]);
+}
+function CallSiteGetFunctionName(){
+var a=(this[CallSiteFunctionKey]);
+var b=%FunctionGetDebugName(a);
+if(b){
+return b;
+}
+var c=%FunctionGetScript(a);
+if(c&&c.compilation_type==1){
+return"eval";
+}
+return null;
+}
+function CallSiteGetMethodName(){
+var a=(this[CallSiteReceiverKey]);
+var b=(this[CallSiteFunctionKey]);
+var c=b.name;
+if(c&&a&&
+(%_CallFunction(a,c,ObjectLookupGetter)===b||
+%_CallFunction(a,c,ObjectLookupSetter)===b||
+((%_IsObject(a))&&%GetDataProperty(a,c)===b))){
+return c;
+}
+var d=null;
+for(var g in a){
+if(%_CallFunction(a,g,ObjectLookupGetter)===b||
+%_CallFunction(a,g,ObjectLookupSetter)===b||
+((%_IsObject(a))&&%GetDataProperty(a,g)===b)){
+if(d){
+return null;
+}
+d=g;
+}
+}
+if(d){
+return d;
+}
+return null;
+}
+function CallSiteGetFileName(){
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+return a?a.name:null;
+}
+function CallSiteGetLineNumber(){
+if((this[CallSitePositionKey])==-1){
+return null;
+}
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+var b=null;
+if(a){
+b=a.locationFromPosition(
+(this[CallSitePositionKey]),true);
+}
+return b?b.line+1:null;
+}
+function CallSiteGetColumnNumber(){
+if((this[CallSitePositionKey])==-1){
+return null;
+}
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+var b=null;
+if(a){
+b=a.locationFromPosition(
+(this[CallSitePositionKey]),true);
+}
+return b?b.column+1:null;
+}
+function CallSiteIsNative(){
+var a=%FunctionGetScript((this[CallSiteFunctionKey]));
+return a?(a.type==0):false;
+}
+function CallSiteGetPosition(){
+return(this[CallSitePositionKey]);
+}
+function CallSiteIsConstructor(){
+var a=(this[CallSiteReceiverKey]);
+var b=(a!=null&&(%_IsObject(a)))
+?%GetDataProperty(a,"constructor"):null;
+if(!b)return false;
+return(this[CallSiteFunctionKey])===b;
+}
+function CallSiteToString(){
+var a;
+var b="";
+if(this.isNative()){
+b="native";
+}else{
+a=this.getScriptNameOrSourceURL();
+if(!a&&this.isEval()){
+b=this.getEvalOrigin();
+b+=", ";
+}
+if(a){
+b+=a;
+}else{
+b+="";
+}
+var c=this.getLineNumber();
+if(c!=null){
+b+=":"+c;
+var d=this.getColumnNumber();
+if(d){
+b+=":"+d;
+}
+}
+}
+var g="";
+var h=this.getFunctionName();
+var i=true;
+var j=this.isConstructor();
+var k=!(this.isToplevel()||j);
+if(k){
+var l=GetTypeName((this[CallSiteReceiverKey]),true);
+var m=this.getMethodName();
+if(h){
+if(l&&
+%_CallFunction(h,l,$stringIndexOf)!=0){
+g+=l+".";
+}
+g+=h;
+if(m&&
+(%_CallFunction(h,"."+m,$stringIndexOf)!=
+h.length-m.length-1)){
+g+=" [as "+m+"]";
+}
+}else{
+g+=l+"."+(m||"");
+}
+}else if(j){
+g+="new "+(h||"");
+}else if(h){
+g+=h;
+}else{
+g+=b;
+i=false;
+}
+if(i){
+g+=" ("+b+")";
+}
+return g;
+}
+SetUpLockedPrototype(CallSite,$Array("receiver","fun","pos"),$Array(
+"getThis",CallSiteGetThis,
+"getTypeName",CallSiteGetTypeName,
+"isToplevel",CallSiteIsToplevel,
+"isEval",CallSiteIsEval,
+"getEvalOrigin",CallSiteGetEvalOrigin,
+"getScriptNameOrSourceURL",CallSiteGetScriptNameOrSourceURL,
+"getFunction",CallSiteGetFunction,
+"getFunctionName",CallSiteGetFunctionName,
+"getMethodName",CallSiteGetMethodName,
+"getFileName",CallSiteGetFileName,
+"getLineNumber",CallSiteGetLineNumber,
+"getColumnNumber",CallSiteGetColumnNumber,
+"isNative",CallSiteIsNative,
+"getPosition",CallSiteGetPosition,
+"isConstructor",CallSiteIsConstructor,
+"toString",CallSiteToString
+));
+function FormatEvalOrigin(a){
+var b=a.nameOrSourceURL();
+if(b){
+return b;
+}
+var c="eval at ";
+if(a.eval_from_function_name){
+c+=a.eval_from_function_name;
+}else{
+c+="";
+}
+var d=a.eval_from_script;
+if(d){
+if(d.compilation_type==1){
+c+=" ("+FormatEvalOrigin(d)+")";
+}else{
+if(d.name){
+c+=" ("+d.name;
+var g=d.locationFromPosition(
+a.eval_from_script_position,true);
+if(g){
+c+=":"+(g.line+1);
+c+=":"+(g.column+1);
+}
+c+=")";
+}else{
+c+=" (unknown source)";
+}
+}
+}
+return c;
+}
+function FormatErrorString(a){
+try{
+return %_CallFunction(a,ErrorToString);
+}catch(e){
+try{
+return"";
+}catch(ee){
+return"";
+}
+}
+}
+function GetStackFrames(a){
+var b=new InternalArray();
+var c=a[0];
+for(var d=1;d";
+}catch(ee){
+k="";
+}
+}
+h.push(" at "+k);
+}
+return %_CallFunction(h,"\n",ArrayJoin);
+}
+function GetTypeName(a,b){
+var c=a.constructor;
+if(!c){
+return b?null:
+%_CallFunction(a,NoSideEffectsObjectToString);
+}
+var d=c.name;
+if(!d){
+return b?null:
+%_CallFunction(a,NoSideEffectsObjectToString);
+}
+return d;
+}
+var stack_trace_symbol;
+var formatted_stack_trace_symbol=(%CreatePrivateOwnSymbol("formatted stack trace"));
+var StackTraceGetter=function(){
+var a=(void 0);
+var b=this;
+while(b){
+var a=
+(b[formatted_stack_trace_symbol]);
+if((a===(void 0))){
+var c=(b[stack_trace_symbol]);
+if((c===(void 0))){
+b=%_GetPrototype(b);
+continue;
+}
+a=FormatStackTrace(b,c);
+(b[stack_trace_symbol]=(void 0));
+(b[formatted_stack_trace_symbol]=a);
+}
+return a;
+}
+return(void 0);
+};
+var StackTraceSetter=function(a){
+if((%HasOwnProperty(this,stack_trace_symbol))){
+(this[stack_trace_symbol]=(void 0));
+(this[formatted_stack_trace_symbol]=a);
+}
+};
+var captureStackTrace=function captureStackTrace(a,b){
+ObjectDefineProperty(a,'stack',{get:StackTraceGetter,
+set:StackTraceSetter,
+configurable:true});
+%CollectStackTrace(a,b?b:captureStackTrace);
+}
+function SetUpError(){
+var a=function(b){
+var c=b.name;
+%AddNamedProperty(global,c,b,2);
+%AddNamedProperty(builtins,'$'+c,b,
+2|4|1);
+if(c=='Error'){
+var d=function(){};
+%FunctionSetPrototype(d,$Object.prototype);
+%FunctionSetInstanceClassName(d,'Error');
+%FunctionSetPrototype(b,new d());
+}else{
+%FunctionSetPrototype(b,new $Error());
+}
+%FunctionSetInstanceClassName(b,'Error');
+%AddNamedProperty(b.prototype,'constructor',b,2);
+%AddNamedProperty(b.prototype,"name",c,2);
+%SetCode(b,function(g){
+if(%_IsConstructCall()){
+try{captureStackTrace(this,b);}catch(e){}
+if(!(g===(void 0))){
+%AddNamedProperty(this,'message',ToString(g),2);
+}
+}else{
+return new b(g);
+}
+});
+%SetNativeFlag(b);
+};
+a(function Error(){});
+a(function TypeError(){});
+a(function RangeError(){});
+a(function SyntaxError(){});
+a(function ReferenceError(){});
+a(function EvalError(){});
+a(function URIError(){});
+}
+SetUpError();
+$Error.captureStackTrace=captureStackTrace;
+%AddNamedProperty($Error.prototype,'message','',2);
+var visited_errors=new InternalArray();
+var cyclic_error_marker=new $Object();
+function GetPropertyWithoutInvokingMonkeyGetters(a,b){
+var c=a;
+while(c&&!%HasOwnProperty(c,b)){
+c=%_GetPrototype(c);
+}
+if((c===null))return(void 0);
+if(!(%_IsObject(c)))return a[b];
+var d=%GetOwnProperty(c,b);
+if(d&&d[0]){
+var g=b==="name";
+if(c===$ReferenceError.prototype)
+return g?"ReferenceError":(void 0);
+if(c===$SyntaxError.prototype)
+return g?"SyntaxError":(void 0);
+if(c===$TypeError.prototype)
+return g?"TypeError":(void 0);
+}
+return a[b];
+}
+function ErrorToStringDetectCycle(a){
+if(!%PushIfAbsent(visited_errors,a))throw cyclic_error_marker;
+try{
+var b=GetPropertyWithoutInvokingMonkeyGetters(a,"name");
+b=(b===(void 0))?"Error":((typeof(%IS_VAR(b))==='string')?b:NonStringToString(b));
+var c=GetPropertyWithoutInvokingMonkeyGetters(a,"message");
+c=(c===(void 0))?"":((typeof(%IS_VAR(c))==='string')?c:NonStringToString(c));
+if(b==="")return c;
+if(c==="")return b;
+return b+": "+c;
+}finally{
+visited_errors.length=visited_errors.length-1;
+}
+}
+function ErrorToString(){
+if(!(%_IsSpecObject(this))){
+throw MakeTypeError("called_on_non_object",["Error.prototype.toString"]);
+}
+try{
+return ErrorToStringDetectCycle(this);
+}catch(e){
+if(e===cyclic_error_marker){
+return'';
+}
+throw e;
+}
+}
+InstallFunctions($Error.prototype,2,['toString',ErrorToString]);
+function SetUpStackOverflowBoilerplate(){
+var a=MakeRangeError('stack_overflow',[]);
+%DefineAccessorPropertyUnchecked(
+a,'stack',StackTraceGetter,StackTraceSetter,2);
+return a;
+}
+var kStackOverflowBoilerplate=SetUpStackOverflowBoilerplate();
+
+json=;
+"use strict";
+var $JSON=global.JSON;
+function Revive(a,b,c){
+var d=a[b];
+if((%_IsObject(d))){
+if((%_IsArray(d))){
+var g=d.length;
+for(var h=0;h0){
+var o=",\n"+d;
+m="[\n"+d+i.join(o)+"\n"+
+h+"]";
+}else{
+m="[]";
+}
+c.pop();
+return m;
+}
+function SerializeObject(a,b,c,d,g){
+if(!%PushIfAbsent(c,a)){
+throw MakeTypeError('circular_structure',$Array());
+}
+var h=d;
+d+=g;
+var i=new InternalArray();
+if((%_IsArray(b))){
+var j=b.length;
+for(var k=0;k0){
+var r=",\n"+d;
+q="{\n"+d+i.join(r)+"\n"+
+h+"}";
+}else{
+q="{}";
+}
+c.pop();
+return q;
+}
+function JSONSerialize(a,b,c,d,g,h){
+var i=b[a];
+if((%_IsSpecObject(i))){
+var j=i.toJSON;
+if((%_ClassOf(j)==='Function')){
+i=%_CallFunction(i,a,j);
+}
+}
+if((%_ClassOf(c)==='Function')){
+i=%_CallFunction(b,a,i,c);
+}
+if((typeof(i)==='string')){
+return %QuoteJSONString(i);
+}else if((typeof(i)==='number')){
+return((%_IsSmi(%IS_VAR(i))||i-i==0)?%_NumberToString(i):"null");
+}else if((typeof(i)==='boolean')){
+return i?"true":"false";
+}else if((i===null)){
+return"null";
+}else if((%_IsSpecObject(i))&&!(typeof i=="function")){
+if((%_IsArray(i))){
+return SerializeArray(i,c,d,g,h);
+}else if((%_ClassOf(i)==='Number')){
+i=ToNumber(i);
+return((%_IsSmi(%IS_VAR(i))||i-i==0)?%_NumberToString(i):"null");
+}else if((%_ClassOf(i)==='String')){
+return %QuoteJSONString(ToString(i));
+}else if((%_ClassOf(i)==='Boolean')){
+return %_ValueOf(i)?"true":"false";
+}else{
+return SerializeObject(i,c,d,g,h);
+}
+}
+return(void 0);
+}
+function JSONStringify(a,b,c){
+if(%_ArgumentsLength()==1){
+return %BasicJSONStringify(a);
+}
+if((%_IsObject(c))){
+if((%_ClassOf(c)==='Number')){
+c=ToNumber(c);
+}else if((%_ClassOf(c)==='String')){
+c=ToString(c);
+}
+}
+var d;
+if((typeof(c)==='number')){
+c=$max(0,$min(ToInteger(c),10));
+d=%_SubString(" ",0,c);
+}else if((typeof(c)==='string')){
+if(c.length>10){
+d=%_SubString(c,0,10);
+}else{
+d=c;
+}
+}else{
+d="";
+}
+if((%_IsArray(b))){
+var g=new InternalArray();
+var h={__proto__:null};
+var i={};
+var j=b.length;
+for(var k=0;k>>0);
+if(c>=g){
+(a[arrayIteratorObjectSymbol]=(void 0));
+return CreateIteratorResultObject((void 0),true);
+}
+(a[arrayIteratorNextIndexSymbol]=c+1);
+if(d==2){
+return CreateIteratorResultObject(b[c],false);
+}
+if(d==3){
+return CreateIteratorResultObject([c,b[c]],false);
+}
+return CreateIteratorResultObject(c,false);
+}
+function ArrayEntries(){
+return CreateArrayIterator(this,3);
+}
+function ArrayValues(){
+return CreateArrayIterator(this,2);
+}
+function ArrayKeys(){
+return CreateArrayIterator(this,1);
+}
+function SetUpArrayIterator(){
+%CheckIsBootstrapping();
+%FunctionSetPrototype(ArrayIterator,new $Object());
+%FunctionSetInstanceClassName(ArrayIterator,'Array Iterator');
+InstallFunctions(ArrayIterator.prototype,2,$Array(
+'next',ArrayIteratorNext
+));
+%FunctionSetName(ArrayIteratorIterator,'[Symbol.iterator]');
+%AddNamedProperty(ArrayIterator.prototype,symbolIterator,
+ArrayIteratorIterator,2);
+%AddNamedProperty(ArrayIterator.prototype,symbolToStringTag,
+"Array Iterator",1|2);
+}
+SetUpArrayIterator();
+function ExtendArrayPrototype(){
+%CheckIsBootstrapping();
+InstallFunctions($Array.prototype,2,$Array(
+'entries',ArrayEntries,
+'keys',ArrayKeys
+));
+%AddNamedProperty($Array.prototype,symbolIterator,ArrayValues,2);
+}
+ExtendArrayPrototype();
+function ExtendTypedArrayPrototypes(){
+%CheckIsBootstrapping();
+%AddNamedProperty($Uint8Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Uint8Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Uint8Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Uint8Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Int8Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Int8Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Int8Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Int8Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Uint16Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Uint16Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Uint16Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Uint16Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Int16Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Int16Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Int16Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Int16Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Uint32Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Uint32Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Uint32Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Uint32Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Int32Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Int32Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Int32Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Int32Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Float32Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Float32Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Float32Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Float32Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Float64Array.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Float64Array.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Float64Array.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Float64Array.prototype,symbolIterator,ArrayValues,2);
+
+%AddNamedProperty($Uint8ClampedArray.prototype,'entries',ArrayEntries,2);
+%AddNamedProperty($Uint8ClampedArray.prototype,'values',ArrayValues,2);
+%AddNamedProperty($Uint8ClampedArray.prototype,'keys',ArrayKeys,2);
+%AddNamedProperty($Uint8ClampedArray.prototype,symbolIterator,ArrayValues,2);
+
+
+}
+ExtendTypedArrayPrototypes();
+
+>>0);
+if(k>=l){
+(j[d]=(void 0));
+return CreateIteratorResultObject((void 0),true);
+}
+var m=%_StringCharCodeAt(i,k);
+var o=%_StringCharFromCode(m);
+k++;
+if(m>=0xD800&&m<=0xDBFF&&k=0xDC00&&q<=0xDFFF){
+o+=%_StringCharFromCode(q);
+k++;
+}
+}
+(j[g]=k);
+return CreateIteratorResultObject(o,false);
+}
+function StringPrototypeIterator(){
+return CreateStringIterator(this);
+}
+%FunctionSetPrototype(StringIterator,new b());
+%FunctionSetInstanceClassName(StringIterator,'String Iterator');
+InstallFunctions(StringIterator.prototype,2,a(
+'next',StringIteratorNext
+));
+%FunctionSetName(StringIteratorIterator,'[Symbol.iterator]');
+%AddNamedProperty(StringIterator.prototype,symbolIterator,
+StringIteratorIterator,2);
+%AddNamedProperty(StringIterator.prototype,symbolToStringTag,
+"String Iterator",1|2);
+%FunctionSetName(StringPrototypeIterator,'[Symbol.iterator]');
+%AddNamedProperty(c.prototype,symbolIterator,
+StringPrototypeIterator,2);
+})();
+
+$templatesõ
+"use strict";
+var callSiteCache=new $Map;
+function SameCallSiteElements(a,b){
+var c=a.length;
+var b=b.raw;
+if(c!==b.length)return false;
+for(var d=0;d0){
+return I(L,%_Arguments(0));
+}else{
+return I(L);
+}
+}
+}
+%FunctionSetName(M,K);
+%FunctionRemovePrototype(M);
+%SetNativeFlag(M);
+this[K]=M;
+}
+return this[K];
+}
+%FunctionSetName(getter,H);
+%FunctionRemovePrototype(getter);
+%SetNativeFlag(getter);
+ObjectDefineProperty(G.prototype,H,{
+get:getter,
+enumerable:false,
+configurable:true
+});
+}
+function supportedLocalesOf(Q,R,S){
+if((Q.match(GetServiceRE())===null)){
+throw new $Error('Internal error, wrong service type: '+Q);
+}
+if(S===d){
+S={};
+}else{
+S=ToObject(S);
+}
+var T=S.localeMatcher;
+if(T!==d){
+T=c(T);
+if(T!=='lookup'&&T!=='best fit'){
+throw new $RangeError('Illegal value for localeMatcher:'+T);
+}
+}else{
+T='best fit';
+}
+var U=initializeLocaleList(R);
+if(j[Q]===d){
+j[Q]=getAvailableLocalesOf(Q);
+}
+if(T==='best fit'){
+return initializeLocaleList(bestFitSupportedLocalesOf(
+U,j[Q]));
+}
+return initializeLocaleList(lookupSupportedLocalesOf(
+U,j[Q]));
+}
+function lookupSupportedLocalesOf(U,W){
+var X=[];
+for(var Y=0;Y=3&&J<=8&&an!==d){
+am[an]=ao;
+an=d;
+}else{
+return{};
+}
+}
+return am;
+}
+function setOptions(ap,am,aq,ac,ar){
+var ak='';
+var as=function updateExtension(at,ah){
+return'-'+at+'-'+c(ah);
+}
+var au=function updateProperty(ad,ae,ah){
+if(ae==='boolean'&&(typeof ah==='string')){
+ah=(ah==='true')?true:false;
+}
+if(ad!==d){
+defineWEProperty(ar,ad,ah);
+}
+}
+for(var at in aq){
+if(aq.hasOwnProperty(at)){
+var ah=d;
+var av=aq[at];
+if(av.property!==d){
+ah=ac(av.property,av.type,av.values);
+}
+if(ah!==d){
+au(av.property,av.type,ah);
+ak+=as(at,ah);
+continue;
+}
+if(am.hasOwnProperty(at)){
+ah=am[at];
+if(ah!==d){
+au(av.property,av.type,ah);
+ak+=as(at,ah);
+}else if(av.type==='boolean'){
+au(av.property,av.type,true);
+ak+=as(at,true);
+}
+}
+}
+}
+return ak===''?'':'-u'+ak;
+}
+function freezeArray(aw){
+aw.forEach(function(ao,ax){
+ObjectDefineProperty(aw,ax,{value:ao,
+configurable:false,
+writable:false,
+enumerable:true});
+});
+ObjectDefineProperty(aw,'length',{value:aw.length,
+writable:false});
+return aw;
+}
+function getOptimalLanguageTag(ay,ai){
+if(ay===ai){
+return ay;
+}
+var R=%GetLanguageTagVariants([ay,ai]);
+if(R[0].maximized!==R[1].maximized){
+return ai;
+}
+var az=new b('^'+R[1].base);
+return ai.replace(az,R[0].base);
+}
+function getAvailableLocalesOf(Q){
+var aA=%AvailableLocalesOf(Q);
+for(var Y in aA){
+if(aA.hasOwnProperty(Y)){
+var aB=Y.match(/^([a-z]{2,3})-([A-Z][a-z]{3})-([A-Z]{2})$/);
+if(aB!==null){
+aA[aB[1]+'-'+aB[3]]=null;
+}
+}
+}
+return aA;
+}
+function defineWEProperty(aC,ad,ah){
+ObjectDefineProperty(aC,ad,
+{value:ah,writable:true,enumerable:true});
+}
+function addWEPropertyIfDefined(aC,ad,ah){
+if(ah!==d){
+defineWEProperty(aC,ad,ah);
+}
+}
+function defineWECProperty(aC,ad,ah){
+ObjectDefineProperty(aC,ad,
+{value:ah,
+writable:true,
+enumerable:true,
+configurable:true});
+}
+function addWECPropertyIfDefined(aC,ad,ah){
+if(ah!==d){
+defineWECProperty(aC,ad,ah);
+}
+}
+function toTitleCaseWord(aD){
+return aD.substr(0,1).toUpperCase()+aD.substr(1).toLowerCase();
+}
+function canonicalizeLanguageTag(aE){
+if(typeof aE!=='string'&&typeof aE!=='object'||
+(aE===null)){
+throw new $TypeError('Language ID should be string or object.');
+}
+var aF=c(aE);
+if(isValidLanguageTag(aF)===false){
+throw new $RangeError('Invalid language tag: '+aF);
+}
+var aG=%CanonicalizeLanguageTag(aF);
+if(aG==='invalid-tag'){
+throw new $RangeError('Invalid language tag: '+aF);
+}
+return aG;
+}
+function initializeLocaleList(R){
+var aH=[];
+if(R===d){
+aH=[];
+}else{
+if(typeof R==='string'){
+aH.push(canonicalizeLanguageTag(R));
+return freezeArray(aH);
+}
+var aI=ToObject(R);
+var aJ=aI.length>>>0;
+for(var aK=0;aKbl){
+throw new $RangeError(ad+' value is out of range.');
+}
+return $floor(ah);
+}
+return bm;
+}
+function initializeNumberFormat(bn,R,S){
+if(%IsInitializedIntlObject(bn)){
+throw new $TypeError('Trying to re-initialize NumberFormat object.');
+}
+if(S===d){
+S={};
+}
+var ac=getGetOption(S,'numberformat');
+var Z=resolveLocale('numberformat',R,S);
+var bd={};
+defineWEProperty(bd,'style',ac(
+'style','string',['decimal','percent','currency'],'decimal'));
+var bj=ac('currency','string');
+if(bj!==d&&!isWellFormedCurrencyCode(bj)){
+throw new $RangeError('Invalid currency code: '+bj);
+}
+if(bd.style==='currency'&&bj===d){
+throw new $TypeError('Currency code is required with currency style.');
+}
+var bo=ac(
+'currencyDisplay','string',['code','symbol','name'],'symbol');
+if(bd.style==='currency'){
+defineWEProperty(bd,'currency',bj.toUpperCase());
+defineWEProperty(bd,'currencyDisplay',bo);
+}
+var bp=getNumberOption(S,'minimumIntegerDigits',1,21,1);
+defineWEProperty(bd,'minimumIntegerDigits',bp);
+var bq=getNumberOption(S,'minimumFractionDigits',0,20,0);
+defineWEProperty(bd,'minimumFractionDigits',bq);
+var br=getNumberOption(S,'maximumFractionDigits',bq,20,3);
+defineWEProperty(bd,'maximumFractionDigits',br);
+var bs=S['minimumSignificantDigits'];
+var bt=S['maximumSignificantDigits'];
+if(bs!==d||bt!==d){
+bs=getNumberOption(S,'minimumSignificantDigits',1,21,0);
+defineWEProperty(bd,'minimumSignificantDigits',bs);
+bt=getNumberOption(S,'maximumSignificantDigits',bs,21,21);
+defineWEProperty(bd,'maximumSignificantDigits',bt);
+}
+defineWEProperty(bd,'useGrouping',ac(
+'useGrouping','boolean',d,true));
+var am=parseExtension(Z.extension);
+var ak=setOptions(S,am,B,
+ac,bd);
+var bg=Z.locale+ak;
+var ai=ObjectDefineProperties({},{
+currency:{writable:true},
+currencyDisplay:{writable:true},
+locale:{writable:true},
+maximumFractionDigits:{writable:true},
+minimumFractionDigits:{writable:true},
+minimumIntegerDigits:{writable:true},
+numberingSystem:{writable:true},
+requestedLocale:{value:bg,writable:true},
+style:{value:bd.style,writable:true},
+useGrouping:{writable:true}
+});
+if(bd.hasOwnProperty('minimumSignificantDigits')){
+defineWEProperty(ai,'minimumSignificantDigits',d);
+}
+if(bd.hasOwnProperty('maximumSignificantDigits')){
+defineWEProperty(ai,'maximumSignificantDigits',d);
+}
+var bu=%CreateNumberFormat(bg,
+bd,
+ai);
+if(bd.style==='currency'){
+ObjectDefineProperty(ai,'currencyDisplay',{value:bo,
+writable:true});
+}
+%MarkAsInitializedIntlObjectOfType(bn,'numberformat',bu);
+ObjectDefineProperty(bn,'resolved',{value:ai});
+return bn;
+}
+%AddNamedProperty(g,'NumberFormat',function(){
+var R=%_Arguments(0);
+var S=%_Arguments(1);
+if(!this||this===g){
+return new g.NumberFormat(R,S);
+}
+return initializeNumberFormat(ToObject(this),R,S);
+},
+2
+);
+%AddNamedProperty(g.NumberFormat.prototype,'resolvedOptions',function(){
+if(%_IsConstructCall()){
+throw new $TypeError(E);
+}
+if(!%IsInitializedIntlObjectOfType(this,'numberformat')){
+throw new $TypeError('resolvedOptions method called on a non-object'+
+' or on a object that is not Intl.NumberFormat.');
+}
+var bv=this;
+var Z=getOptimalLanguageTag(bv.resolved.requestedLocale,
+bv.resolved.locale);
+var bw={
+locale:Z,
+numberingSystem:bv.resolved.numberingSystem,
+style:bv.resolved.style,
+useGrouping:bv.resolved.useGrouping,
+minimumIntegerDigits:bv.resolved.minimumIntegerDigits,
+minimumFractionDigits:bv.resolved.minimumFractionDigits,
+maximumFractionDigits:bv.resolved.maximumFractionDigits,
+};
+if(bw.style==='currency'){
+defineWECProperty(bw,'currency',bv.resolved.currency);
+defineWECProperty(bw,'currencyDisplay',
+bv.resolved.currencyDisplay);
+}
+if(bv.resolved.hasOwnProperty('minimumSignificantDigits')){
+defineWECProperty(bw,'minimumSignificantDigits',
+bv.resolved.minimumSignificantDigits);
+}
+if(bv.resolved.hasOwnProperty('maximumSignificantDigits')){
+defineWECProperty(bw,'maximumSignificantDigits',
+bv.resolved.maximumSignificantDigits);
+}
+return bw;
+},
+2
+);
+%FunctionSetName(g.NumberFormat.prototype.resolvedOptions,
+'resolvedOptions');
+%FunctionRemovePrototype(g.NumberFormat.prototype.resolvedOptions);
+%SetNativeFlag(g.NumberFormat.prototype.resolvedOptions);
+%AddNamedProperty(g.NumberFormat,'supportedLocalesOf',function(R){
+if(%_IsConstructCall()){
+throw new $TypeError(E);
+}
+return supportedLocalesOf('numberformat',R,%_Arguments(1));
+},
+2
+);
+%FunctionSetName(g.NumberFormat.supportedLocalesOf,'supportedLocalesOf');
+%FunctionRemovePrototype(g.NumberFormat.supportedLocalesOf);
+%SetNativeFlag(g.NumberFormat.supportedLocalesOf);
+function formatNumber(bu,ah){
+var bx=$Number(ah)+0;
+return %InternalNumberFormat(%GetImplFromInitializedIntlObject(bu),
+bx);
+}
+function parseNumber(bu,ah){
+return %InternalNumberParse(%GetImplFromInitializedIntlObject(bu),
+c(ah));
+}
+addBoundMethod(g.NumberFormat,'format',formatNumber,1);
+addBoundMethod(g.NumberFormat,'v8Parse',parseNumber,1);
+function toLDMLString(S){
+var ac=getGetOption(S,'dateformat');
+var by='';
+var bz=ac('weekday','string',['narrow','short','long']);
+by+=appendToLDMLString(
+bz,{narrow:'EEEEE',short:'EEE',long:'EEEE'});
+bz=ac('era','string',['narrow','short','long']);
+by+=appendToLDMLString(
+bz,{narrow:'GGGGG',short:'GGG',long:'GGGG'});
+bz=ac('year','string',['2-digit','numeric']);
+by+=appendToLDMLString(bz,{'2-digit':'yy','numeric':'y'});
+bz=ac('month','string',
+['2-digit','numeric','narrow','short','long']);
+by+=appendToLDMLString(bz,{'2-digit':'MM','numeric':'M',
+'narrow':'MMMMM','short':'MMM','long':'MMMM'});
+bz=ac('day','string',['2-digit','numeric']);
+by+=appendToLDMLString(
+bz,{'2-digit':'dd','numeric':'d'});
+var bA=ac('hour12','boolean');
+bz=ac('hour','string',['2-digit','numeric']);
+if(bA===d){
+by+=appendToLDMLString(bz,{'2-digit':'jj','numeric':'j'});
+}else if(bA===true){
+by+=appendToLDMLString(bz,{'2-digit':'hh','numeric':'h'});
+}else{
+by+=appendToLDMLString(bz,{'2-digit':'HH','numeric':'H'});
+}
+bz=ac('minute','string',['2-digit','numeric']);
+by+=appendToLDMLString(bz,{'2-digit':'mm','numeric':'m'});
+bz=ac('second','string',['2-digit','numeric']);
+by+=appendToLDMLString(bz,{'2-digit':'ss','numeric':'s'});
+bz=ac('timeZoneName','string',['short','long']);
+by+=appendToLDMLString(bz,{short:'z',long:'zzzz'});
+return by;
+}
+function appendToLDMLString(bz,bB){
+if(bz!==d){
+return bB[bz];
+}else{
+return'';
+}
+}
+function fromLDMLString(by){
+by=by.replace(GetQuotedStringRE(),'');
+var S={};
+var bC=by.match(/E{3,5}/g);
+S=appendToDateTimeObject(
+S,'weekday',bC,{EEEEE:'narrow',EEE:'short',EEEE:'long'});
+bC=by.match(/G{3,5}/g);
+S=appendToDateTimeObject(
+S,'era',bC,{GGGGG:'narrow',GGG:'short',GGGG:'long'});
+bC=by.match(/y{1,2}/g);
+S=appendToDateTimeObject(
+S,'year',bC,{y:'numeric',yy:'2-digit'});
+bC=by.match(/M{1,5}/g);
+S=appendToDateTimeObject(S,'month',bC,{MM:'2-digit',
+M:'numeric',MMMMM:'narrow',MMM:'short',MMMM:'long'});
+bC=by.match(/L{1,5}/g);
+S=appendToDateTimeObject(S,'month',bC,{LL:'2-digit',
+L:'numeric',LLLLL:'narrow',LLL:'short',LLLL:'long'});
+bC=by.match(/d{1,2}/g);
+S=appendToDateTimeObject(
+S,'day',bC,{d:'numeric',dd:'2-digit'});
+bC=by.match(/h{1,2}/g);
+if(bC!==null){
+S['hour12']=true;
+}
+S=appendToDateTimeObject(
+S,'hour',bC,{h:'numeric',hh:'2-digit'});
+bC=by.match(/H{1,2}/g);
+if(bC!==null){
+S['hour12']=false;
+}
+S=appendToDateTimeObject(
+S,'hour',bC,{H:'numeric',HH:'2-digit'});
+bC=by.match(/m{1,2}/g);
+S=appendToDateTimeObject(
+S,'minute',bC,{m:'numeric',mm:'2-digit'});
+bC=by.match(/s{1,2}/g);
+S=appendToDateTimeObject(
+S,'second',bC,{s:'numeric',ss:'2-digit'});
+bC=by.match(/z|zzzz/g);
+S=appendToDateTimeObject(
+S,'timeZoneName',bC,{z:'short',zzzz:'long'});
+return S;
+}
+function appendToDateTimeObject(S,bz,bC,bB){
+if((bC===null)){
+if(!S.hasOwnProperty(bz)){
+defineWEProperty(S,bz,d);
+}
+return S;
+}
+var ad=bC[0];
+defineWEProperty(S,bz,bB[ad]);
+return S;
+}
+function toDateTimeOptions(S,bD,bE){
+if(S===d){
+S={};
+}else{
+S=((%_IsSpecObject(%IS_VAR(S)))?S:ToObject(S));
+}
+var bF=true;
+if((bD==='date'||bD==='any')&&
+(S.weekday!==d||S.year!==d||
+S.month!==d||S.day!==d)){
+bF=false;
+}
+if((bD==='time'||bD==='any')&&
+(S.hour!==d||S.minute!==d||
+S.second!==d)){
+bF=false;
+}
+if(bF&&(bE==='date'||bE==='all')){
+ObjectDefineProperty(S,'year',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+ObjectDefineProperty(S,'month',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+ObjectDefineProperty(S,'day',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+}
+if(bF&&(bE==='time'||bE==='all')){
+ObjectDefineProperty(S,'hour',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+ObjectDefineProperty(S,'minute',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+ObjectDefineProperty(S,'second',{value:'numeric',
+writable:true,
+enumerable:true,
+configurable:true});
+}
+return S;
+}
+function initializeDateTimeFormat(bG,R,S){
+if(%IsInitializedIntlObject(bG)){
+throw new $TypeError('Trying to re-initialize DateTimeFormat object.');
+}
+if(S===d){
+S={};
+}
+var Z=resolveLocale('dateformat',R,S);
+S=toDateTimeOptions(S,'any','date');
+var ac=getGetOption(S,'dateformat');
+var T=ac('formatMatcher','string',
+['basic','best fit'],'best fit');
+var by=toLDMLString(S);
+var bH=canonicalizeTimeZoneID(S.timeZone);
+var bd={};
+var am=parseExtension(Z.extension);
+var ak=setOptions(S,am,C,
+ac,bd);
+var bg=Z.locale+ak;
+var ai=ObjectDefineProperties({},{
+calendar:{writable:true},
+day:{writable:true},
+era:{writable:true},
+hour12:{writable:true},
+hour:{writable:true},
+locale:{writable:true},
+minute:{writable:true},
+month:{writable:true},
+numberingSystem:{writable:true},
+pattern:{writable:true},
+requestedLocale:{value:bg,writable:true},
+second:{writable:true},
+timeZone:{writable:true},
+timeZoneName:{writable:true},
+tz:{value:bH,writable:true},
+weekday:{writable:true},
+year:{writable:true}
+});
+var bu=%CreateDateTimeFormat(
+bg,{skeleton:by,timeZone:bH},ai);
+if(bH!==d&&bH!==ai.timeZone){
+throw new $RangeError('Unsupported time zone specified '+bH);
+}
+%MarkAsInitializedIntlObjectOfType(bG,'dateformat',bu);
+ObjectDefineProperty(bG,'resolved',{value:ai});
+return bG;
+}
+%AddNamedProperty(g,'DateTimeFormat',function(){
+var R=%_Arguments(0);
+var S=%_Arguments(1);
+if(!this||this===g){
+return new g.DateTimeFormat(R,S);
+}
+return initializeDateTimeFormat(ToObject(this),R,S);
+},
+2
+);
+%AddNamedProperty(g.DateTimeFormat.prototype,'resolvedOptions',function(){
+if(%_IsConstructCall()){
+throw new $TypeError(E);
+}
+if(!%IsInitializedIntlObjectOfType(this,'dateformat')){
+throw new $TypeError('resolvedOptions method called on a non-object or '+
+'on a object that is not Intl.DateTimeFormat.');
+}
+var bv=this;
+var bI=fromLDMLString(bv.resolved.pattern);
+var bJ=z[bv.resolved.calendar];
+if(bJ===d){
+bJ=bv.resolved.calendar;
+}
+var Z=getOptimalLanguageTag(bv.resolved.requestedLocale,
+bv.resolved.locale);
+var bw={
+locale:Z,
+numberingSystem:bv.resolved.numberingSystem,
+calendar:bJ,
+timeZone:bv.resolved.timeZone
+};
+addWECPropertyIfDefined(bw,'timeZoneName',bI.timeZoneName);
+addWECPropertyIfDefined(bw,'era',bI.era);
+addWECPropertyIfDefined(bw,'year',bI.year);
+addWECPropertyIfDefined(bw,'month',bI.month);
+addWECPropertyIfDefined(bw,'day',bI.day);
+addWECPropertyIfDefined(bw,'weekday',bI.weekday);
+addWECPropertyIfDefined(bw,'hour12',bI.hour12);
+addWECPropertyIfDefined(bw,'hour',bI.hour);
+addWECPropertyIfDefined(bw,'minute',bI.minute);
+addWECPropertyIfDefined(bw,'second',bI.second);
+return bw;
+},
+2
+);
+%FunctionSetName(g.DateTimeFormat.prototype.resolvedOptions,
+'resolvedOptions');
+%FunctionRemovePrototype(g.DateTimeFormat.prototype.resolvedOptions);
+%SetNativeFlag(g.DateTimeFormat.prototype.resolvedOptions);
+%AddNamedProperty(g.DateTimeFormat,'supportedLocalesOf',function(R){
+if(%_IsConstructCall()){
+throw new $TypeError(E);
+}
+return supportedLocalesOf('dateformat',R,%_Arguments(1));
+},
+2
+);
+%FunctionSetName(g.DateTimeFormat.supportedLocalesOf,'supportedLocalesOf');
+%FunctionRemovePrototype(g.DateTimeFormat.supportedLocalesOf);
+%SetNativeFlag(g.DateTimeFormat.supportedLocalesOf);
+function formatDate(bu,bK){
+var bL;
+if(bK===d){
+bL=a.now();
+}else{
+bL=$Number(bK);
+}
+if(!$isFinite(bL)){
+throw new $RangeError('Provided date is not in valid range.');
+}
+return %InternalDateFormat(%GetImplFromInitializedIntlObject(bu),
+new a(bL));
+}
+function parseDate(bu,ah){
+return %InternalDateParse(%GetImplFromInitializedIntlObject(bu),
+c(ah));
+}
+addBoundMethod(g.DateTimeFormat,'format',formatDate,0);
+addBoundMethod(g.DateTimeFormat,'v8Parse',parseDate,1);
+function canonicalizeTimeZoneID(bM){
+if(bM===d){
+return bM;
+}
+var bN=bM.toUpperCase();
+if(bN==='UTC'||bN==='GMT'||
+bN==='ETC/UTC'||bN==='ETC/GMT'){
+return'UTC';
+}
+var bC=GetTimezoneNameCheckRE().exec(bM);
+if((bC===null)){
+throw new $RangeError('Expected Area/Location for time zone, got '+bM);
+}
+var bw=toTitleCaseWord(bC[1])+'/'+toTitleCaseWord(bC[2]);
+var Y=3;
+while(bC[Y]!==d&&Y