]> git.sesse.net Git - casparcg/blob - dependencies64/cef/bin/win32/natives_blob.bin
* Merged html producer and updated to latest CEF version (does not have satisfactory...
[casparcg] / dependencies64 / cef / bin / win32 / natives_blob.bin
1 \f\14debug֖\ 2
2 "use strict";
3 var kDefaultBacktraceLength=10;
4 var Debug={};
5 var sourceLineBeginningSkip=/^(?:\s*(?:\/\*.*?\*\/)*)*/;
6 Debug.DebugEvent={Break:1,
7 Exception:2,
8 NewFunction:3,
9 BeforeCompile:4,
10 AfterCompile:5,
11 CompileError:6,
12 PromiseEvent:7,
13 AsyncTaskEvent:8,
14 BreakForCommand:9};
15 Debug.ExceptionBreak={Caught:0,
16 Uncaught:1};
17 Debug.StepAction={StepOut:0,
18 StepNext:1,
19 StepIn:2,
20 StepMin:3,
21 StepInMin:4,
22 StepFrame:5};
23 Debug.ScriptType={Native:0,
24 Extension:1,
25 Normal:2};
26 Debug.ScriptCompilationType={Host:0,
27 Eval:1,
28 JSON:2};
29 Debug.ScriptBreakPointType={ScriptId:0,
30 ScriptName:1,
31 ScriptRegExp:2};
32 Debug.BreakPositionAlignment={
33 Statement:0,
34 BreakPosition:1
35 };
36 function ScriptTypeFlag(a){
37 return(1<<a);
38 }
39 var next_response_seq=0;
40 var next_break_point_number=1;
41 var break_points=[];
42 var script_break_points=[];
43 var debugger_flags={
44 breakPointsActive:{
45 value:true,
46 getValue:function(){return this.value;},
47 setValue:function(a){
48 this.value=!!a;
49 %SetDisableBreak(!this.value);
50 }
51 },
52 breakOnCaughtException:{
53 getValue:function(){return Debug.isBreakOnException();},
54 setValue:function(a){
55 if(a){
56 Debug.setBreakOnException();
57 }else{
58 Debug.clearBreakOnException();
59 }
60 }
61 },
62 breakOnUncaughtException:{
63 getValue:function(){return Debug.isBreakOnUncaughtException();},
64 setValue:function(a){
65 if(a){
66 Debug.setBreakOnUncaughtException();
67 }else{
68 Debug.clearBreakOnUncaughtException();
69 }
70 }
71 },
72 };
73 function MakeBreakPoint(a,b){
74 var c=new BreakPoint(a,b);
75 break_points.push(c);
76 return c;
77 }
78 function BreakPoint(a,b){
79 this.source_position_=a;
80 if(b){
81 this.script_break_point_=b;
82 }else{
83 this.number_=next_break_point_number++;
84 }
85 this.hit_count_=0;
86 this.active_=true;
87 this.condition_=null;
88 this.ignoreCount_=0;
89 }
90 BreakPoint.prototype.number=function(){
91 return this.number_;
92 };
93 BreakPoint.prototype.func=function(){
94 return this.func_;
95 };
96 BreakPoint.prototype.source_position=function(){
97 return this.source_position_;
98 };
99 BreakPoint.prototype.hit_count=function(){
100 return this.hit_count_;
101 };
102 BreakPoint.prototype.active=function(){
103 if(this.script_break_point()){
104 return this.script_break_point().active();
105 }
106 return this.active_;
107 };
108 BreakPoint.prototype.condition=function(){
109 if(this.script_break_point()&&this.script_break_point().condition()){
110 return this.script_break_point().condition();
111 }
112 return this.condition_;
113 };
114 BreakPoint.prototype.ignoreCount=function(){
115 return this.ignoreCount_;
116 };
117 BreakPoint.prototype.script_break_point=function(){
118 return this.script_break_point_;
119 };
120 BreakPoint.prototype.enable=function(){
121 this.active_=true;
122 };
123 BreakPoint.prototype.disable=function(){
124 this.active_=false;
125 };
126 BreakPoint.prototype.setCondition=function(a){
127 this.condition_=a;
128 };
129 BreakPoint.prototype.setIgnoreCount=function(a){
130 this.ignoreCount_=a;
131 };
132 BreakPoint.prototype.isTriggered=function(a){
133 if(!this.active())return false;
134 if(this.condition()){
135 try{
136 var b=a.frame(0).evaluate(this.condition());
137 if(!(b instanceof ValueMirror)||!%ToBoolean(b.value_)){
138 return false;
139 }
140 }catch(e){
141 return false;
142 }
143 }
144 this.hit_count_++;
145 if(this.script_break_point_){
146 this.script_break_point_.hit_count_++;
147 }
148 if(this.ignoreCount_>0){
149 this.ignoreCount_--;
150 return false;
151 }
152 return true;
153 };
154 function IsBreakPointTriggered(a,b){
155 return b.isTriggered(MakeExecutionState(a));
156 }
157 function ScriptBreakPoint(type,script_id_or_name,opt_line,opt_column,
158 opt_groupId,opt_position_alignment){
159 this.type_=type;
160 if(type==Debug.ScriptBreakPointType.ScriptId){
161 this.script_id_=script_id_or_name;
162 }else if(type==Debug.ScriptBreakPointType.ScriptName){
163 this.script_name_=script_id_or_name;
164 }else if(type==Debug.ScriptBreakPointType.ScriptRegExp){
165 this.script_regexp_object_=new RegExp(script_id_or_name);
166 }else{
167 throw new Error("Unexpected breakpoint type "+type);
168 }
169 this.line_=opt_line||0;
170 this.column_=opt_column;
171 this.groupId_=opt_groupId;
172 this.position_alignment_=(opt_position_alignment===(void 0))
173 ?Debug.BreakPositionAlignment.Statement:opt_position_alignment;
174 this.hit_count_=0;
175 this.active_=true;
176 this.condition_=null;
177 this.ignoreCount_=0;
178 this.break_points_=[];
179 }
180 ScriptBreakPoint.prototype.cloneForOtherScript=function(a){
181 var b=new ScriptBreakPoint(Debug.ScriptBreakPointType.ScriptId,
182 a.id,this.line_,this.column_,this.groupId_,
183 this.position_alignment_);
184 b.number_=next_break_point_number++;
185 script_break_points.push(b);
186 b.hit_count_=this.hit_count_;
187 b.active_=this.active_;
188 b.condition_=this.condition_;
189 b.ignoreCount_=this.ignoreCount_;
190 return b;
191 };
192 ScriptBreakPoint.prototype.number=function(){
193 return this.number_;
194 };
195 ScriptBreakPoint.prototype.groupId=function(){
196 return this.groupId_;
197 };
198 ScriptBreakPoint.prototype.type=function(){
199 return this.type_;
200 };
201 ScriptBreakPoint.prototype.script_id=function(){
202 return this.script_id_;
203 };
204 ScriptBreakPoint.prototype.script_name=function(){
205 return this.script_name_;
206 };
207 ScriptBreakPoint.prototype.script_regexp_object=function(){
208 return this.script_regexp_object_;
209 };
210 ScriptBreakPoint.prototype.line=function(){
211 return this.line_;
212 };
213 ScriptBreakPoint.prototype.column=function(){
214 return this.column_;
215 };
216 ScriptBreakPoint.prototype.actual_locations=function(){
217 var a=[];
218 for(var b=0;b<this.break_points_.length;b++){
219 a.push(this.break_points_[b].actual_location);
220 }
221 return a;
222 };
223 ScriptBreakPoint.prototype.update_positions=function(a,b){
224 this.line_=a;
225 this.column_=b;
226 };
227 ScriptBreakPoint.prototype.hit_count=function(){
228 return this.hit_count_;
229 };
230 ScriptBreakPoint.prototype.active=function(){
231 return this.active_;
232 };
233 ScriptBreakPoint.prototype.condition=function(){
234 return this.condition_;
235 };
236 ScriptBreakPoint.prototype.ignoreCount=function(){
237 return this.ignoreCount_;
238 };
239 ScriptBreakPoint.prototype.enable=function(){
240 this.active_=true;
241 };
242 ScriptBreakPoint.prototype.disable=function(){
243 this.active_=false;
244 };
245 ScriptBreakPoint.prototype.setCondition=function(a){
246 this.condition_=a;
247 };
248 ScriptBreakPoint.prototype.setIgnoreCount=function(a){
249 this.ignoreCount_=a;
250 for(var b=0;b<this.break_points_.length;b++){
251 this.break_points_[b].setIgnoreCount(a);
252 }
253 };
254 ScriptBreakPoint.prototype.matchesScript=function(a){
255 if(this.type_==Debug.ScriptBreakPointType.ScriptId){
256 return this.script_id_==a.id;
257 }else{
258 if(!(a.line_offset<=this.line_&&
259 this.line_<a.line_offset+a.lineCount())){
260 return false;
261 }
262 if(this.type_==Debug.ScriptBreakPointType.ScriptName){
263 return this.script_name_==a.nameOrSourceURL();
264 }else if(this.type_==Debug.ScriptBreakPointType.ScriptRegExp){
265 return this.script_regexp_object_.test(a.nameOrSourceURL());
266 }else{
267 throw new Error("Unexpected breakpoint type "+this.type_);
268 }
269 }
270 };
271 ScriptBreakPoint.prototype.set=function(a){
272 var b=this.column();
273 var c=this.line();
274 if((b===(void 0))){
275 var d=a.sourceLine(this.line());
276 if(!a.sourceColumnStart_){
277 a.sourceColumnStart_=new Array(a.lineCount());
278 }
279 if((a.sourceColumnStart_[c]===(void 0))){
280 a.sourceColumnStart_[c]=
281 d.match(sourceLineBeginningSkip)[0].length;
282 }
283 b=a.sourceColumnStart_[c];
284 }
285 var e=Debug.findScriptSourcePosition(a,this.line(),b);
286 if((e===null))return;
287 var f=MakeBreakPoint(e,this);
288 f.setIgnoreCount(this.ignoreCount());
289 var g=%SetScriptBreakPoint(a,e,
290 this.position_alignment_,
291 f);
292 if((g===(void 0))){
293 g=e;
294 }
295 var h=a.locationFromPosition(g,true);
296 f.actual_location={line:h.line,
297 column:h.column,
298 script_id:a.id};
299 this.break_points_.push(f);
300 return f;
301 };
302 ScriptBreakPoint.prototype.clear=function(){
303 var a=[];
304 for(var b=0;b<break_points.length;b++){
305 if(break_points[b].script_break_point()&&
306 break_points[b].script_break_point()===this){
307 %ClearBreakPoint(break_points[b]);
308 }else{
309 a.push(break_points[b]);
310 }
311 }
312 break_points=a;
313 this.break_points_=[];
314 };
315 function UpdateScriptBreakPoints(a){
316 for(var b=0;b<script_break_points.length;b++){
317 var c=script_break_points[b];
318 if((c.type()==Debug.ScriptBreakPointType.ScriptName||
319 c.type()==Debug.ScriptBreakPointType.ScriptRegExp)&&
320 c.matchesScript(a)){
321 c.set(a);
322 }
323 }
324 }
325 function GetScriptBreakPoints(a){
326 var b=[];
327 for(var c=0;c<script_break_points.length;c++){
328 if(script_break_points[c].matchesScript(a)){
329 b.push(script_break_points[c]);
330 }
331 }
332 return b;
333 }
334 Debug.setListener=function(a,b){
335 if(!(%_IsFunction(a))&&!(a===(void 0))&&!(a===null)){
336 throw new Error('Parameters have wrong types.');
337 }
338 %SetDebugEventListener(a,b);
339 };
340 Debug.breakLocations=function(a,b){
341 if(!(%_IsFunction(a)))throw new Error('Parameters have wrong types.');
342 var c=(b===(void 0))
343 ?Debug.BreakPositionAlignment.Statement:b;
344 return %GetBreakLocations(a,c);
345 };
346 Debug.findScript=function(a){
347 if((%_IsFunction(a))){
348 return %FunctionGetScript(a);
349 }else if((%_IsRegExp(a))){
350 var b=Debug.scripts();
351 var c=null;
352 var d=0;
353 for(var e in b){
354 var g=b[e];
355 if(a.test(g.name)){
356 c=g;
357 d++;
358 }
359 }
360 if(d==1){
361 return c;
362 }else{
363 return undefined;
364 }
365 }else{
366 return %GetScript(a);
367 }
368 };
369 Debug.scriptSource=function(a){
370 return this.findScript(a).source;
371 };
372 Debug.source=function(a){
373 if(!(%_IsFunction(a)))throw new Error('Parameters have wrong types.');
374 return %FunctionGetSourceCode(a);
375 };
376 Debug.sourcePosition=function(a){
377 if(!(%_IsFunction(a)))throw new Error('Parameters have wrong types.');
378 return %FunctionGetScriptSourcePosition(a);
379 };
380 Debug.findFunctionSourceLocation=function(a,b,c){
381 var d=%FunctionGetScript(a);
382 var e=%FunctionGetScriptSourcePosition(a);
383 return d.locationFromLine(b,c,e);
384 };
385 Debug.findScriptSourcePosition=function(a,b,c){
386 var d=a.locationFromLine(b,c);
387 return d?d.position:null;
388 };
389 Debug.findBreakPoint=function(a,b){
390 var c;
391 for(var d=0;d<break_points.length;d++){
392 if(break_points[d].number()==a){
393 c=break_points[d];
394 if(b){
395 break_points.splice(d,1);
396 }
397 break;
398 }
399 }
400 if(c){
401 return c;
402 }else{
403 return this.findScriptBreakPoint(a,b);
404 }
405 };
406 Debug.findBreakPointActualLocations=function(a){
407 for(var b=0;b<script_break_points.length;b++){
408 if(script_break_points[b].number()==a){
409 return script_break_points[b].actual_locations();
410 }
411 }
412 for(var b=0;b<break_points.length;b++){
413 if(break_points[b].number()==a){
414 return[break_points[b].actual_location];
415 }
416 }
417 return[];
418 };
419 Debug.setBreakPoint=function(a,b,c,d){
420 if(!(%_IsFunction(a)))throw new Error('Parameters have wrong types.');
421 if(%FunctionIsAPIFunction(a)){
422 throw new Error('Cannot set break point in native code.');
423 }
424 var e=
425 this.findFunctionSourceLocation(a,b,c).position;
426 var g=e-this.sourcePosition(a);
427 var h=%FunctionGetScript(a);
428 if(h.type==Debug.ScriptType.Native){
429 throw new Error('Cannot set break point in native code.');
430 }
431 if(h&&h.id){
432 g+=%FunctionGetScriptSourcePosition(a);
433 var i=h.locationFromPosition(g,false);
434 return this.setScriptBreakPointById(h.id,
435 i.line,i.column,
436 d);
437 }else{
438 var j=MakeBreakPoint(g);
439 var k=
440 %SetFunctionBreakPoint(a,g,j);
441 k+=this.sourcePosition(a);
442 var l=h.locationFromPosition(k,true);
443 j.actual_location={line:l.line,
444 column:l.column,
445 script_id:h.id};
446 j.setCondition(d);
447 return j.number();
448 }
449 };
450 Debug.setBreakPointByScriptIdAndPosition=function(script_id,position,
451 condition,enabled,
452 opt_position_alignment)
453 {
454 var a=MakeBreakPoint(position);
455 a.setCondition(condition);
456 if(!enabled){
457 a.disable();
458 }
459 var b=this.scripts();
460 var c=(opt_position_alignment===(void 0))
461 ?Debug.BreakPositionAlignment.Statement:opt_position_alignment;
462 for(var d=0;d<b.length;d++){
463 if(script_id==b[d].id){
464 a.actual_position=%SetScriptBreakPoint(b[d],position,
465 c,a);
466 break;
467 }
468 }
469 return a;
470 };
471 Debug.enableBreakPoint=function(a){
472 var b=this.findBreakPoint(a,false);
473 if(b){
474 b.enable();
475 }
476 };
477 Debug.disableBreakPoint=function(a){
478 var b=this.findBreakPoint(a,false);
479 if(b){
480 b.disable();
481 }
482 };
483 Debug.changeBreakPointCondition=function(a,b){
484 var c=this.findBreakPoint(a,false);
485 c.setCondition(b);
486 };
487 Debug.changeBreakPointIgnoreCount=function(a,b){
488 if(b<0){
489 throw new Error('Invalid argument');
490 }
491 var c=this.findBreakPoint(a,false);
492 c.setIgnoreCount(b);
493 };
494 Debug.clearBreakPoint=function(a){
495 var b=this.findBreakPoint(a,true);
496 if(b){
497 return %ClearBreakPoint(b);
498 }else{
499 b=this.findScriptBreakPoint(a,true);
500 if(!b){
501 throw new Error('Invalid breakpoint');
502 }
503 }
504 };
505 Debug.clearAllBreakPoints=function(){
506 for(var a=0;a<break_points.length;a++){
507 var b=break_points[a];
508 %ClearBreakPoint(b);
509 }
510 break_points=[];
511 };
512 Debug.disableAllBreakPoints=function(){
513 for(var a=1;a<next_break_point_number;a++){
514 Debug.disableBreakPoint(a);
515 }
516 %ChangeBreakOnException(Debug.ExceptionBreak.Caught,false);
517 %ChangeBreakOnException(Debug.ExceptionBreak.Uncaught,false);
518 };
519 Debug.findScriptBreakPoint=function(a,b){
520 var c;
521 for(var d=0;d<script_break_points.length;d++){
522 if(script_break_points[d].number()==a){
523 c=script_break_points[d];
524 if(b){
525 c.clear();
526 script_break_points.splice(d,1);
527 }
528 break;
529 }
530 }
531 return c;
532 };
533 Debug.setScriptBreakPoint=function(type,script_id_or_name,
534 opt_line,opt_column,opt_condition,
535 opt_groupId,opt_position_alignment){
536 var a=
537 new ScriptBreakPoint(type,script_id_or_name,opt_line,opt_column,
538 opt_groupId,opt_position_alignment);
539 a.number_=next_break_point_number++;
540 a.setCondition(opt_condition);
541 script_break_points.push(a);
542 var b=this.scripts();
543 for(var c=0;c<b.length;c++){
544 if(a.matchesScript(b[c])){
545 a.set(b[c]);
546 }
547 }
548 return a.number();
549 };
550 Debug.setScriptBreakPointById=function(script_id,
551 opt_line,opt_column,
552 opt_condition,opt_groupId,
553 opt_position_alignment){
554 return this.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptId,
555 script_id,opt_line,opt_column,
556 opt_condition,opt_groupId,
557 opt_position_alignment);
558 };
559 Debug.setScriptBreakPointByName=function(script_name,
560 opt_line,opt_column,
561 opt_condition,opt_groupId){
562 return this.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptName,
563 script_name,opt_line,opt_column,
564 opt_condition,opt_groupId);
565 };
566 Debug.setScriptBreakPointByRegExp=function(script_regexp,
567 opt_line,opt_column,
568 opt_condition,opt_groupId){
569 return this.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptRegExp,
570 script_regexp,opt_line,opt_column,
571 opt_condition,opt_groupId);
572 };
573 Debug.enableScriptBreakPoint=function(a){
574 var b=this.findScriptBreakPoint(a,false);
575 b.enable();
576 };
577 Debug.disableScriptBreakPoint=function(a){
578 var b=this.findScriptBreakPoint(a,false);
579 b.disable();
580 };
581 Debug.changeScriptBreakPointCondition=function(
582 break_point_number,condition){
583 var a=this.findScriptBreakPoint(break_point_number,false);
584 a.setCondition(condition);
585 };
586 Debug.changeScriptBreakPointIgnoreCount=function(
587 break_point_number,ignoreCount){
588 if(ignoreCount<0){
589 throw new Error('Invalid argument');
590 }
591 var a=this.findScriptBreakPoint(break_point_number,false);
592 a.setIgnoreCount(ignoreCount);
593 };
594 Debug.scriptBreakPoints=function(){
595 return script_break_points;
596 };
597 Debug.clearStepping=function(){
598 %ClearStepping();
599 };
600 Debug.setBreakOnException=function(){
601 return %ChangeBreakOnException(Debug.ExceptionBreak.Caught,true);
602 };
603 Debug.clearBreakOnException=function(){
604 return %ChangeBreakOnException(Debug.ExceptionBreak.Caught,false);
605 };
606 Debug.isBreakOnException=function(){
607 return!!%IsBreakOnException(Debug.ExceptionBreak.Caught);
608 };
609 Debug.setBreakOnUncaughtException=function(){
610 return %ChangeBreakOnException(Debug.ExceptionBreak.Uncaught,true);
611 };
612 Debug.clearBreakOnUncaughtException=function(){
613 return %ChangeBreakOnException(Debug.ExceptionBreak.Uncaught,false);
614 };
615 Debug.isBreakOnUncaughtException=function(){
616 return!!%IsBreakOnException(Debug.ExceptionBreak.Uncaught);
617 };
618 Debug.showBreakPoints=function(a,b,c){
619 if(!(%_IsFunction(a)))throw new Error('Parameters have wrong types.');
620 var d=b?this.scriptSource(a):this.source(a);
621 var e=b?this.sourcePosition(a):0;
622 var g=this.breakLocations(a,c);
623 if(!g)return d;
624 g.sort(function(h,i){return h-i;});
625 var j="";
626 var k=0;
627 var l;
628 for(var m=0;m<g.length;m++){
629 l=g[m]-e;
630 j+=d.slice(k,l);
631 j+="[B"+m+"]";
632 k=l;
633 }
634 l=d.length;
635 j+=d.substring(k,l);
636 return j;
637 };
638 Debug.scripts=function(){
639 return %DebugGetLoadedScripts();
640 };
641 Debug.debuggerFlags=function(){
642 return debugger_flags;
643 };
644 Debug.MakeMirror=MakeMirror;
645 function MakeExecutionState(a){
646 return new ExecutionState(a);
647 }
648 function ExecutionState(a){
649 this.break_id=a;
650 this.selected_frame=0;
651 }
652 ExecutionState.prototype.prepareStep=function(opt_action,opt_count,
653 opt_callframe){
654 var a=Debug.StepAction.StepIn;
655 if(!(opt_action===(void 0)))a=%ToNumber(opt_action);
656 var b=opt_count?%ToNumber(opt_count):1;
657 var c=0;
658 if(!(opt_callframe===(void 0))){
659 c=opt_callframe.details_.frameId();
660 }
661 return %PrepareStep(this.break_id,a,b,c);
662 };
663 ExecutionState.prototype.evaluateGlobal=function(source,disable_break,
664 opt_additional_context){
665 return MakeMirror(%DebugEvaluateGlobal(this.break_id,source,
666 Boolean(disable_break),
667 opt_additional_context));
668 };
669 ExecutionState.prototype.frameCount=function(){
670 return %GetFrameCount(this.break_id);
671 };
672 ExecutionState.prototype.threadCount=function(){
673 return %GetThreadCount(this.break_id);
674 };
675 ExecutionState.prototype.frame=function(a){
676 if(a==null)a=this.selected_frame;
677 if(a<0||a>=this.frameCount()){
678 throw new Error('Illegal frame index.');
679 }
680 return new FrameMirror(this.break_id,a);
681 };
682 ExecutionState.prototype.setSelectedFrame=function(a){
683 var b=%ToNumber(a);
684 if(b<0||b>=this.frameCount())throw new Error('Illegal frame index.');
685 this.selected_frame=b;
686 };
687 ExecutionState.prototype.selectedFrame=function(){
688 return this.selected_frame;
689 };
690 ExecutionState.prototype.debugCommandProcessor=function(a){
691 return new DebugCommandProcessor(this,a);
692 };
693 function MakeBreakEvent(a,b){
694 return new BreakEvent(a,b);
695 }
696 function BreakEvent(a,b){
697 this.frame_=new FrameMirror(a,0);
698 this.break_points_hit_=b;
699 }
700 BreakEvent.prototype.eventType=function(){
701 return Debug.DebugEvent.Break;
702 };
703 BreakEvent.prototype.func=function(){
704 return this.frame_.func();
705 };
706 BreakEvent.prototype.sourceLine=function(){
707 return this.frame_.sourceLine();
708 };
709 BreakEvent.prototype.sourceColumn=function(){
710 return this.frame_.sourceColumn();
711 };
712 BreakEvent.prototype.sourceLineText=function(){
713 return this.frame_.sourceLineText();
714 };
715 BreakEvent.prototype.breakPointsHit=function(){
716 return this.break_points_hit_;
717 };
718 BreakEvent.prototype.toJSONProtocol=function(){
719 var a={seq:next_response_seq++,
720 type:"event",
721 event:"break",
722 body:{invocationText:this.frame_.invocationText()}
723 };
724 var b=this.func().script();
725 if(b){
726 a.body.sourceLine=this.sourceLine(),
727 a.body.sourceColumn=this.sourceColumn(),
728 a.body.sourceLineText=this.sourceLineText(),
729 a.body.script=MakeScriptObject_(b,false);
730 }
731 if(this.breakPointsHit()){
732 a.body.breakpoints=[];
733 for(var c=0;c<this.breakPointsHit().length;c++){
734 var d=this.breakPointsHit()[c];
735 var e=d.script_break_point();
736 var g;
737 if(e){
738 g=e.number();
739 }else{
740 g=d.number();
741 }
742 a.body.breakpoints.push(g);
743 }
744 }
745 return JSON.stringify(ObjectToProtocolObject_(a));
746 };
747 function MakeExceptionEvent(a,b,c,d){
748 return new ExceptionEvent(a,b,c,d);
749 }
750 function ExceptionEvent(a,b,c,d){
751 this.exec_state_=new ExecutionState(a);
752 this.exception_=b;
753 this.uncaught_=c;
754 this.promise_=d;
755 }
756 ExceptionEvent.prototype.eventType=function(){
757 return Debug.DebugEvent.Exception;
758 };
759 ExceptionEvent.prototype.exception=function(){
760 return this.exception_;
761 };
762 ExceptionEvent.prototype.uncaught=function(){
763 return this.uncaught_;
764 };
765 ExceptionEvent.prototype.promise=function(){
766 return this.promise_;
767 };
768 ExceptionEvent.prototype.func=function(){
769 return this.exec_state_.frame(0).func();
770 };
771 ExceptionEvent.prototype.sourceLine=function(){
772 return this.exec_state_.frame(0).sourceLine();
773 };
774 ExceptionEvent.prototype.sourceColumn=function(){
775 return this.exec_state_.frame(0).sourceColumn();
776 };
777 ExceptionEvent.prototype.sourceLineText=function(){
778 return this.exec_state_.frame(0).sourceLineText();
779 };
780 ExceptionEvent.prototype.toJSONProtocol=function(){
781 var a=new ProtocolMessage();
782 a.event="exception";
783 a.body={uncaught:this.uncaught_,
784 exception:MakeMirror(this.exception_)
785 };
786 if(this.exec_state_.frameCount()>0){
787 a.body.sourceLine=this.sourceLine();
788 a.body.sourceColumn=this.sourceColumn();
789 a.body.sourceLineText=this.sourceLineText();
790 var b=this.func().script();
791 if(b){
792 a.body.script=MakeScriptObject_(b,false);
793 }
794 }else{
795 a.body.sourceLine=-1;
796 }
797 return a.toJSONProtocol();
798 };
799 function MakeCompileEvent(a,b){
800 return new CompileEvent(a,b);
801 }
802 function CompileEvent(a,b){
803 this.script_=MakeMirror(a);
804 this.type_=b;
805 }
806 CompileEvent.prototype.eventType=function(){
807 return this.type_;
808 };
809 CompileEvent.prototype.script=function(){
810 return this.script_;
811 };
812 CompileEvent.prototype.toJSONProtocol=function(){
813 var a=new ProtocolMessage();
814 a.running=true;
815 switch(this.type_){
816 case Debug.DebugEvent.BeforeCompile:
817 a.event="beforeCompile";
818 break;
819 case Debug.DebugEvent.AfterCompile:
820 a.event="afterCompile";
821 break;
822 case Debug.DebugEvent.CompileError:
823 a.event="compileError";
824 break;
825 }
826 a.body={};
827 a.body.script=this.script_;
828 return a.toJSONProtocol();
829 };
830 function MakeScriptObject_(a,b){
831 var c={id:a.id(),
832 name:a.name(),
833 lineOffset:a.lineOffset(),
834 columnOffset:a.columnOffset(),
835 lineCount:a.lineCount(),
836 };
837 if(!(a.data()===(void 0))){
838 c.data=a.data();
839 }
840 if(b){
841 c.source=a.source();
842 }
843 return c;
844 }
845 function MakePromiseEvent(a){
846 return new PromiseEvent(a);
847 }
848 function PromiseEvent(a){
849 this.promise_=a.promise;
850 this.parentPromise_=a.parentPromise;
851 this.status_=a.status;
852 this.value_=a.value;
853 }
854 PromiseEvent.prototype.promise=function(){
855 return MakeMirror(this.promise_);
856 }
857 PromiseEvent.prototype.parentPromise=function(){
858 return MakeMirror(this.parentPromise_);
859 }
860 PromiseEvent.prototype.status=function(){
861 return this.status_;
862 }
863 PromiseEvent.prototype.value=function(){
864 return MakeMirror(this.value_);
865 }
866 function MakeAsyncTaskEvent(a){
867 return new AsyncTaskEvent(a);
868 }
869 function AsyncTaskEvent(a){
870 this.type_=a.type;
871 this.name_=a.name;
872 this.id_=a.id;
873 }
874 AsyncTaskEvent.prototype.type=function(){
875 return this.type_;
876 }
877 AsyncTaskEvent.prototype.name=function(){
878 return this.name_;
879 }
880 AsyncTaskEvent.prototype.id=function(){
881 return this.id_;
882 }
883 function DebugCommandProcessor(a,b){
884 this.exec_state_=a;
885 this.running_=b||false;
886 }
887 DebugCommandProcessor.prototype.processDebugRequest=function(a){
888 return this.processDebugJSONRequest(a);
889 };
890 function ProtocolMessage(a){
891 this.seq=next_response_seq++;
892 if(a){
893 this.type='response';
894 this.request_seq=a.seq;
895 this.command=a.command;
896 }else{
897 this.type='event';
898 }
899 this.success=true;
900 this.running=undefined;
901 }
902 ProtocolMessage.prototype.setOption=function(a,b){
903 if(!this.options_){
904 this.options_={};
905 }
906 this.options_[a]=b;
907 };
908 ProtocolMessage.prototype.failed=function(a,b){
909 this.success=false;
910 this.message=a;
911 if((%_IsObject(b))){
912 this.error_details=b;
913 }
914 };
915 ProtocolMessage.prototype.toJSONProtocol=function(){
916 var a={};
917 a.seq=this.seq;
918 if(this.request_seq){
919 a.request_seq=this.request_seq;
920 }
921 a.type=this.type;
922 if(this.event){
923 a.event=this.event;
924 }
925 if(this.command){
926 a.command=this.command;
927 }
928 if(this.success){
929 a.success=this.success;
930 }else{
931 a.success=false;
932 }
933 if(this.body){
934 var b;
935 var c=MakeMirrorSerializer(true,this.options_);
936 if(this.body instanceof Mirror){
937 b=c.serializeValue(this.body);
938 }else if(this.body instanceof Array){
939 b=[];
940 for(var d=0;d<this.body.length;d++){
941 if(this.body[d]instanceof Mirror){
942 b.push(c.serializeValue(this.body[d]));
943 }else{
944 b.push(ObjectToProtocolObject_(this.body[d],c));
945 }
946 }
947 }else{
948 b=ObjectToProtocolObject_(this.body,c);
949 }
950 a.body=b;
951 a.refs=c.serializeReferencedObjects();
952 }
953 if(this.message){
954 a.message=this.message;
955 }
956 if(this.error_details){
957 a.error_details=this.error_details;
958 }
959 a.running=this.running;
960 return JSON.stringify(a);
961 };
962 DebugCommandProcessor.prototype.createResponse=function(a){
963 return new ProtocolMessage(a);
964 };
965 DebugCommandProcessor.prototype.processDebugJSONRequest=function(
966 json_request){
967 var a;
968 var b;
969 try{
970 try{
971 a=JSON.parse(json_request);
972 b=this.createResponse(a);
973 if(!a.type){
974 throw new Error('Type not specified');
975 }
976 if(a.type!='request'){
977 throw new Error("Illegal type '"+a.type+"' in request");
978 }
979 if(!a.command){
980 throw new Error('Command not specified');
981 }
982 if(a.arguments){
983 var c=a.arguments;
984 if(c.inlineRefs||c.compactFormat){
985 b.setOption('inlineRefs',true);
986 }
987 if(!(c.maxStringLength===(void 0))){
988 b.setOption('maxStringLength',c.maxStringLength);
989 }
990 }
991 var d=a.command.toLowerCase();
992 var e=DebugCommandProcessor.prototype.dispatch_[d];
993 if((%_IsFunction(e))){
994 %_CallFunction(this,a,b,e);
995 }else{
996 throw new Error('Unknown command "'+a.command+'" in request');
997 }
998 }catch(e){
999 if(!b){
1000 b=this.createResponse();
1001 }
1002 b.success=false;
1003 b.message=%ToString(e);
1004 }
1005 try{
1006 if(!(b.running===(void 0))){
1007 this.running_=b.running;
1008 }
1009 b.running=this.running_;
1010 return b.toJSONProtocol();
1011 }catch(e){
1012 return'{"seq":'+b.seq+','+
1013 '"request_seq":'+a.seq+','+
1014 '"type":"response",'+
1015 '"success":false,'+
1016 '"message":"Internal error: '+%ToString(e)+'"}';
1017 }
1018 }catch(e){
1019 return'{"seq":0,"type":"response","success":false,"message":"Internal error"}';
1020 }
1021 };
1022 DebugCommandProcessor.prototype.continueRequest_=function(a,b){
1023 if(a.arguments){
1024 var c=1;
1025 var d=Debug.StepAction.StepIn;
1026 var e=a.arguments.stepaction;
1027 var g=a.arguments.stepcount;
1028 if(g){
1029 c=%ToNumber(g);
1030 if(c<0){
1031 throw new Error('Invalid stepcount argument "'+g+'".');
1032 }
1033 }
1034 if(e){
1035 if(e=='in'){
1036 d=Debug.StepAction.StepIn;
1037 }else if(e=='min'){
1038 d=Debug.StepAction.StepMin;
1039 }else if(e=='next'){
1040 d=Debug.StepAction.StepNext;
1041 }else if(e=='out'){
1042 d=Debug.StepAction.StepOut;
1043 }else{
1044 throw new Error('Invalid stepaction argument "'+e+'".');
1045 }
1046 }
1047 this.exec_state_.prepareStep(d,c);
1048 }
1049 b.running=true;
1050 };
1051 DebugCommandProcessor.prototype.breakRequest_=function(a,b){
1052 };
1053 DebugCommandProcessor.prototype.setBreakPointRequest_=
1054 function(a,b){
1055 if(!a.arguments){
1056 b.failed('Missing arguments');
1057 return;
1058 }
1059 var c=a.arguments.type;
1060 var d=a.arguments.target;
1061 var e=a.arguments.line;
1062 var g=a.arguments.column;
1063 var h=(a.arguments.enabled===(void 0))?
1064 true:a.arguments.enabled;
1065 var i=a.arguments.condition;
1066 var j=a.arguments.ignoreCount;
1067 var k=a.arguments.groupId;
1068 if(!c||(d===(void 0))){
1069 b.failed('Missing argument "type" or "target"');
1070 return;
1071 }
1072 var l;
1073 if(c=='function'){
1074 if(!(typeof(d)==='string')){
1075 b.failed('Argument "target" is not a string value');
1076 return;
1077 }
1078 var m;
1079 try{
1080 m=this.exec_state_.evaluateGlobal(d).value();
1081 }catch(e){
1082 b.failed('Error: "'+%ToString(e)+
1083 '" evaluating "'+d+'"');
1084 return;
1085 }
1086 if(!(%_IsFunction(m))){
1087 b.failed('"'+d+'" does not evaluate to a function');
1088 return;
1089 }
1090 l=Debug.setBreakPoint(m,e,g,i);
1091 }else if(c=='handle'){
1092 var n=parseInt(d,10);
1093 var o=LookupMirror(n);
1094 if(!o){
1095 return b.failed('Object #'+n+'# not found');
1096 }
1097 if(!o.isFunction()){
1098 return b.failed('Object #'+n+'# is not a function');
1099 }
1100 l=Debug.setBreakPoint(o.value(),
1101 e,g,i);
1102 }else if(c=='script'){
1103 l=
1104 Debug.setScriptBreakPointByName(d,e,g,i,
1105 k);
1106 }else if(c=='scriptId'){
1107 l=
1108 Debug.setScriptBreakPointById(d,e,g,i,k);
1109 }else if(c=='scriptRegExp'){
1110 l=
1111 Debug.setScriptBreakPointByRegExp(d,e,g,i,
1112 k);
1113 }else{
1114 b.failed('Illegal type "'+c+'"');
1115 return;
1116 }
1117 var p=Debug.findBreakPoint(l);
1118 if(j){
1119 Debug.changeBreakPointIgnoreCount(l,j);
1120 }
1121 if(!h){
1122 Debug.disableBreakPoint(l);
1123 }
1124 b.body={type:c,
1125 breakpoint:l};
1126 if(p instanceof ScriptBreakPoint){
1127 if(p.type()==Debug.ScriptBreakPointType.ScriptId){
1128 b.body.type='scriptId';
1129 b.body.script_id=p.script_id();
1130 }else if(p.type()==Debug.ScriptBreakPointType.ScriptName){
1131 b.body.type='scriptName';
1132 b.body.script_name=p.script_name();
1133 }else if(p.type()==Debug.ScriptBreakPointType.ScriptRegExp){
1134 b.body.type='scriptRegExp';
1135 b.body.script_regexp=p.script_regexp_object().source;
1136 }else{
1137 throw new Error("Internal error: Unexpected breakpoint type: "+
1138 p.type());
1139 }
1140 b.body.line=p.line();
1141 b.body.column=p.column();
1142 b.body.actual_locations=p.actual_locations();
1143 }else{
1144 b.body.type='function';
1145 b.body.actual_locations=[p.actual_location];
1146 }
1147 };
1148 DebugCommandProcessor.prototype.changeBreakPointRequest_=function(
1149 request,response){
1150 if(!request.arguments){
1151 response.failed('Missing arguments');
1152 return;
1153 }
1154 var a=%ToNumber(request.arguments.breakpoint);
1155 var b=request.arguments.enabled;
1156 var c=request.arguments.condition;
1157 var d=request.arguments.ignoreCount;
1158 if(!a){
1159 response.failed('Missing argument "breakpoint"');
1160 return;
1161 }
1162 if(!(b===(void 0))){
1163 if(b){
1164 Debug.enableBreakPoint(a);
1165 }else{
1166 Debug.disableBreakPoint(a);
1167 }
1168 }
1169 if(!(c===(void 0))){
1170 Debug.changeBreakPointCondition(a,c);
1171 }
1172 if(!(d===(void 0))){
1173 Debug.changeBreakPointIgnoreCount(a,d);
1174 }
1175 };
1176 DebugCommandProcessor.prototype.clearBreakPointGroupRequest_=function(
1177 request,response){
1178 if(!request.arguments){
1179 response.failed('Missing arguments');
1180 return;
1181 }
1182 var a=request.arguments.groupId;
1183 if(!a){
1184 response.failed('Missing argument "groupId"');
1185 return;
1186 }
1187 var b=[];
1188 var c=[];
1189 for(var d=0;d<script_break_points.length;d++){
1190 var e=script_break_points[d];
1191 if(e.groupId()==a){
1192 b.push(e.number());
1193 e.clear();
1194 }else{
1195 c.push(e);
1196 }
1197 }
1198 script_break_points=c;
1199 response.body={breakpoints:b};
1200 };
1201 DebugCommandProcessor.prototype.clearBreakPointRequest_=function(
1202 request,response){
1203 if(!request.arguments){
1204 response.failed('Missing arguments');
1205 return;
1206 }
1207 var a=%ToNumber(request.arguments.breakpoint);
1208 if(!a){
1209 response.failed('Missing argument "breakpoint"');
1210 return;
1211 }
1212 Debug.clearBreakPoint(a);
1213 response.body={breakpoint:a};
1214 };
1215 DebugCommandProcessor.prototype.listBreakpointsRequest_=function(
1216 request,response){
1217 var a=[];
1218 for(var b=0;b<script_break_points.length;b++){
1219 var c=script_break_points[b];
1220 var d={
1221 number:c.number(),
1222 line:c.line(),
1223 column:c.column(),
1224 groupId:c.groupId(),
1225 hit_count:c.hit_count(),
1226 active:c.active(),
1227 condition:c.condition(),
1228 ignoreCount:c.ignoreCount(),
1229 actual_locations:c.actual_locations()
1230 };
1231 if(c.type()==Debug.ScriptBreakPointType.ScriptId){
1232 d.type='scriptId';
1233 d.script_id=c.script_id();
1234 }else if(c.type()==Debug.ScriptBreakPointType.ScriptName){
1235 d.type='scriptName';
1236 d.script_name=c.script_name();
1237 }else if(c.type()==Debug.ScriptBreakPointType.ScriptRegExp){
1238 d.type='scriptRegExp';
1239 d.script_regexp=c.script_regexp_object().source;
1240 }else{
1241 throw new Error("Internal error: Unexpected breakpoint type: "+
1242 c.type());
1243 }
1244 a.push(d);
1245 }
1246 response.body={
1247 breakpoints:a,
1248 breakOnExceptions:Debug.isBreakOnException(),
1249 breakOnUncaughtExceptions:Debug.isBreakOnUncaughtException()
1250 };
1251 };
1252 DebugCommandProcessor.prototype.disconnectRequest_=
1253 function(a,b){
1254 Debug.disableAllBreakPoints();
1255 this.continueRequest_(a,b);
1256 };
1257 DebugCommandProcessor.prototype.setExceptionBreakRequest_=
1258 function(a,b){
1259 if(!a.arguments){
1260 b.failed('Missing arguments');
1261 return;
1262 }
1263 var c=a.arguments.type;
1264 if(!c){
1265 b.failed('Missing argument "type"');
1266 return;
1267 }
1268 var d;
1269 if(c=='all'){
1270 d=!Debug.isBreakOnException();
1271 }else if(c=='uncaught'){
1272 d=!Debug.isBreakOnUncaughtException();
1273 }
1274 if(!(a.arguments.enabled===(void 0))){
1275 d=a.arguments.enabled;
1276 if((d!=true)&&(d!=false)){
1277 b.failed('Illegal value for "enabled":"'+d+'"');
1278 }
1279 }
1280 if(c=='all'){
1281 %ChangeBreakOnException(Debug.ExceptionBreak.Caught,d);
1282 }else if(c=='uncaught'){
1283 %ChangeBreakOnException(Debug.ExceptionBreak.Uncaught,d);
1284 }else{
1285 b.failed('Unknown "type":"'+c+'"');
1286 }
1287 b.body={'type':c,'enabled':d};
1288 };
1289 DebugCommandProcessor.prototype.backtraceRequest_=function(
1290 request,response){
1291 var a=this.exec_state_.frameCount();
1292 if(a==0){
1293 response.body={
1294 totalFrames:a
1295 };
1296 return;
1297 }
1298 var b=0;
1299 var c=kDefaultBacktraceLength;
1300 if(request.arguments){
1301 if(request.arguments.fromFrame){
1302 b=request.arguments.fromFrame;
1303 }
1304 if(request.arguments.toFrame){
1305 c=request.arguments.toFrame;
1306 }
1307 if(request.arguments.bottom){
1308 var d=a-b;
1309 b=a-c;
1310 c=d;
1311 }
1312 if(b<0||c<0){
1313 return response.failed('Invalid frame number');
1314 }
1315 }
1316 c=Math.min(a,c);
1317 if(c<=b){
1318 var e='Invalid frame range';
1319 return response.failed(e);
1320 }
1321 var g=[];
1322 for(var h=b;h<c;h++){
1323 g.push(this.exec_state_.frame(h));
1324 }
1325 response.body={
1326 fromFrame:b,
1327 toFrame:c,
1328 totalFrames:a,
1329 frames:g
1330 };
1331 };
1332 DebugCommandProcessor.prototype.frameRequest_=function(a,b){
1333 if(this.exec_state_.frameCount()==0){
1334 return b.failed('No frames');
1335 }
1336 if(a.arguments){
1337 var c=a.arguments.number;
1338 if(c<0||this.exec_state_.frameCount()<=c){
1339 return b.failed('Invalid frame number');
1340 }
1341 this.exec_state_.setSelectedFrame(a.arguments.number);
1342 }
1343 b.body=this.exec_state_.frame();
1344 };
1345 DebugCommandProcessor.prototype.resolveFrameFromScopeDescription_=
1346 function(a){
1347 if(a&&!(a.frameNumber===(void 0))){
1348 var b=a.frameNumber;
1349 if(b<0||this.exec_state_.frameCount()<=b){
1350 throw new Error('Invalid frame number');
1351 }
1352 return this.exec_state_.frame(b);
1353 }else{
1354 return this.exec_state_.frame();
1355 }
1356 };
1357 DebugCommandProcessor.prototype.resolveScopeHolder_=
1358 function(a){
1359 if(a&&"functionHandle"in a){
1360 if(!(typeof(a.functionHandle)==='number')){
1361 throw new Error('Function handle must be a number');
1362 }
1363 var b=LookupMirror(a.functionHandle);
1364 if(!b){
1365 throw new Error('Failed to find function object by handle');
1366 }
1367 if(!b.isFunction()){
1368 throw new Error('Value of non-function type is found by handle');
1369 }
1370 return b;
1371 }else{
1372 if(this.exec_state_.frameCount()==0){
1373 throw new Error('No scopes');
1374 }
1375 var c=this.resolveFrameFromScopeDescription_(a);
1376 return c;
1377 }
1378 }
1379 DebugCommandProcessor.prototype.scopesRequest_=function(a,b){
1380 var c=this.resolveScopeHolder_(a.arguments);
1381 var d=c.scopeCount();
1382 var e=[];
1383 for(var g=0;g<d;g++){
1384 e.push(c.scope(g));
1385 }
1386 b.body={
1387 fromScope:0,
1388 toScope:d,
1389 totalScopes:d,
1390 scopes:e
1391 };
1392 };
1393 DebugCommandProcessor.prototype.scopeRequest_=function(a,b){
1394 var c=this.resolveScopeHolder_(a.arguments);
1395 var d=0;
1396 if(a.arguments&&!(a.arguments.number===(void 0))){
1397 d=%ToNumber(a.arguments.number);
1398 if(d<0||c.scopeCount()<=d){
1399 return b.failed('Invalid scope number');
1400 }
1401 }
1402 b.body=c.scope(d);
1403 };
1404 DebugCommandProcessor.resolveValue_=function(a){
1405 if("handle"in a){
1406 var b=LookupMirror(a.handle);
1407 if(!b){
1408 throw new Error("Failed to resolve value by handle, ' #"+
1409 a.handle+"# not found");
1410 }
1411 return b.value();
1412 }else if("stringDescription"in a){
1413 if(a.type==BOOLEAN_TYPE){
1414 return Boolean(a.stringDescription);
1415 }else if(a.type==NUMBER_TYPE){
1416 return Number(a.stringDescription);
1417 }if(a.type==STRING_TYPE){
1418 return String(a.stringDescription);
1419 }else{
1420 throw new Error("Unknown type");
1421 }
1422 }else if("value"in a){
1423 return a.value;
1424 }else if(a.type==UNDEFINED_TYPE){
1425 return(void 0);
1426 }else if(a.type==NULL_TYPE){
1427 return null;
1428 }else{
1429 throw new Error("Failed to parse value description");
1430 }
1431 };
1432 DebugCommandProcessor.prototype.setVariableValueRequest_=
1433 function(a,b){
1434 if(!a.arguments){
1435 b.failed('Missing arguments');
1436 return;
1437 }
1438 if((a.arguments.name===(void 0))){
1439 b.failed('Missing variable name');
1440 }
1441 var c=a.arguments.name;
1442 var d=a.arguments.scope;
1443 var e=this.resolveScopeHolder_(d);
1444 if((d.number===(void 0))){
1445 b.failed('Missing scope number');
1446 }
1447 var g=%ToNumber(d.number);
1448 var h=e.scope(g);
1449 var i=
1450 DebugCommandProcessor.resolveValue_(a.arguments.newValue);
1451 h.setVariableValue(c,i);
1452 var j=MakeMirror(i);
1453 b.body={
1454 newValue:j
1455 };
1456 };
1457 DebugCommandProcessor.prototype.evaluateRequest_=function(a,b){
1458 if(!a.arguments){
1459 return b.failed('Missing arguments');
1460 }
1461 var c=a.arguments.expression;
1462 var d=a.arguments.frame;
1463 var e=a.arguments.global;
1464 var g=a.arguments.disable_break;
1465 var h=a.arguments.additional_context;
1466 try{
1467 c=String(c);
1468 }catch(e){
1469 return b.failed('Failed to convert expression argument to string');
1470 }
1471 if(!(d===(void 0))&&e){
1472 return b.failed('Arguments "frame" and "global" are exclusive');
1473 }
1474 var i;
1475 if(h){
1476 i={};
1477 for(var j=0;j<h.length;j++){
1478 var k=h[j];
1479 if(!(typeof(k.name)==='string')){
1480 return b.failed("Context element #"+j+
1481 " doesn't contain name:string property");
1482 }
1483 var l=DebugCommandProcessor.resolveValue_(k);
1484 i[k.name]=l;
1485 }
1486 }
1487 if(e){
1488 b.body=this.exec_state_.evaluateGlobal(
1489 c,Boolean(g),i);
1490 return;
1491 }
1492 if((g===(void 0))){
1493 g=true;
1494 }
1495 if(this.exec_state_.frameCount()==0){
1496 return b.failed('No frames');
1497 }
1498 if(!(d===(void 0))){
1499 var m=%ToNumber(d);
1500 if(m<0||m>=this.exec_state_.frameCount()){
1501 return b.failed('Invalid frame "'+d+'"');
1502 }
1503 b.body=this.exec_state_.frame(m).evaluate(
1504 c,Boolean(g),i);
1505 return;
1506 }else{
1507 b.body=this.exec_state_.frame().evaluate(
1508 c,Boolean(g),i);
1509 return;
1510 }
1511 };
1512 DebugCommandProcessor.prototype.lookupRequest_=function(a,b){
1513 if(!a.arguments){
1514 return b.failed('Missing arguments');
1515 }
1516 var c=a.arguments.handles;
1517 if((c===(void 0))){
1518 return b.failed('Argument "handles" missing');
1519 }
1520 if(!(a.arguments.includeSource===(void 0))){
1521 var d=%ToBoolean(a.arguments.includeSource);
1522 b.setOption('includeSource',d);
1523 }
1524 var e={};
1525 for(var g=0;g<c.length;g++){
1526 var h=c[g];
1527 var i=LookupMirror(h);
1528 if(!i){
1529 return b.failed('Object #'+h+'# not found');
1530 }
1531 e[h]=i;
1532 }
1533 b.body=e;
1534 };
1535 DebugCommandProcessor.prototype.referencesRequest_=
1536 function(a,b){
1537 if(!a.arguments){
1538 return b.failed('Missing arguments');
1539 }
1540 var c=a.arguments.type;
1541 var d=a.arguments.handle;
1542 if((c===(void 0))){
1543 return b.failed('Argument "type" missing');
1544 }
1545 if((d===(void 0))){
1546 return b.failed('Argument "handle" missing');
1547 }
1548 if(c!='referencedBy'&&c!='constructedBy'){
1549 return b.failed('Invalid type "'+c+'"');
1550 }
1551 var e=LookupMirror(d);
1552 if(e){
1553 if(c=='referencedBy'){
1554 b.body=e.referencedBy();
1555 }else{
1556 b.body=e.constructedBy();
1557 }
1558 }else{
1559 return b.failed('Object #'+d+'# not found');
1560 }
1561 };
1562 DebugCommandProcessor.prototype.sourceRequest_=function(a,b){
1563 if(this.exec_state_.frameCount()==0){
1564 return b.failed('No source');
1565 }
1566 var c;
1567 var d;
1568 var e=this.exec_state_.frame();
1569 if(a.arguments){
1570 c=a.arguments.fromLine;
1571 d=a.arguments.toLine;
1572 if(!(a.arguments.frame===(void 0))){
1573 var g=%ToNumber(a.arguments.frame);
1574 if(g<0||g>=this.exec_state_.frameCount()){
1575 return b.failed('Invalid frame "'+e+'"');
1576 }
1577 e=this.exec_state_.frame(g);
1578 }
1579 }
1580 var h=e.func().script();
1581 if(!h){
1582 return b.failed('No source');
1583 }
1584 var i=h.sourceSlice(c,d);
1585 if(!i){
1586 return b.failed('Invalid line interval');
1587 }
1588 b.body={};
1589 b.body.source=i.sourceText();
1590 b.body.fromLine=i.from_line;
1591 b.body.toLine=i.to_line;
1592 b.body.fromPosition=i.from_position;
1593 b.body.toPosition=i.to_position;
1594 b.body.totalLines=h.lineCount();
1595 };
1596 DebugCommandProcessor.prototype.scriptsRequest_=function(a,b){
1597 var c=ScriptTypeFlag(Debug.ScriptType.Normal);
1598 var d=false;
1599 var e=null;
1600 if(a.arguments){
1601 if(!(a.arguments.types===(void 0))){
1602 c=%ToNumber(a.arguments.types);
1603 if(isNaN(c)||c<0){
1604 return b.failed('Invalid types "'+
1605 a.arguments.types+'"');
1606 }
1607 }
1608 if(!(a.arguments.includeSource===(void 0))){
1609 d=%ToBoolean(a.arguments.includeSource);
1610 b.setOption('includeSource',d);
1611 }
1612 if((%_IsArray(a.arguments.ids))){
1613 e={};
1614 var g=a.arguments.ids;
1615 for(var h=0;h<g.length;h++){
1616 e[g[h]]=true;
1617 }
1618 }
1619 var i=null;
1620 var j=null;
1621 if(!(a.arguments.filter===(void 0))){
1622 var k=%ToNumber(a.arguments.filter);
1623 if(!isNaN(k)){
1624 j=k;
1625 }
1626 i=a.arguments.filter;
1627 }
1628 }
1629 var l=%DebugGetLoadedScripts();
1630 b.body=[];
1631 for(var h=0;h<l.length;h++){
1632 if(e&&!e[l[h].id]){
1633 continue;
1634 }
1635 if(i||j){
1636 var m=l[h];
1637 var n=false;
1638 if(j&&!n){
1639 if(m.id&&m.id===j){
1640 n=true;
1641 }
1642 }
1643 if(i&&!n){
1644 if(m.name&&m.name.indexOf(i)>=0){
1645 n=true;
1646 }
1647 }
1648 if(!n)continue;
1649 }
1650 if(c&ScriptTypeFlag(l[h].type)){
1651 b.body.push(MakeMirror(l[h]));
1652 }
1653 }
1654 };
1655 DebugCommandProcessor.prototype.threadsRequest_=function(a,b){
1656 var c=this.exec_state_.threadCount();
1657 var d=[];
1658 for(var e=0;e<c;e++){
1659 var g=%GetThreadDetails(this.exec_state_.break_id,e);
1660 var h={current:g[0],
1661 id:g[1]
1662 };
1663 d.push(h);
1664 }
1665 b.body={
1666 totalThreads:c,
1667 threads:d
1668 };
1669 };
1670 DebugCommandProcessor.prototype.suspendRequest_=function(a,b){
1671 b.running=false;
1672 };
1673 DebugCommandProcessor.prototype.versionRequest_=function(a,b){
1674 b.body={
1675 V8Version:%GetV8Version()
1676 };
1677 };
1678 DebugCommandProcessor.prototype.changeLiveRequest_=function(
1679 request,response){
1680 if(!request.arguments){
1681 return response.failed('Missing arguments');
1682 }
1683 var a=request.arguments.script_id;
1684 var b=!!request.arguments.preview_only;
1685 var c=%DebugGetLoadedScripts();
1686 var d=null;
1687 for(var e=0;e<c.length;e++){
1688 if(c[e].id==a){
1689 d=c[e];
1690 }
1691 }
1692 if(!d){
1693 response.failed('Script not found');
1694 return;
1695 }
1696 var g=new Array();
1697 if(!(typeof(request.arguments.new_source)==='string')){
1698 throw"new_source argument expected";
1699 }
1700 var h=request.arguments.new_source;
1701 var i;
1702 try{
1703 i=Debug.LiveEdit.SetScriptSource(d,
1704 h,b,g);
1705 }catch(e){
1706 if(e instanceof Debug.LiveEdit.Failure&&"details"in e){
1707 response.failed(e.message,e.details);
1708 return;
1709 }
1710 throw e;
1711 }
1712 response.body={change_log:g,result:i};
1713 if(!b&&!this.running_&&i.stack_modified){
1714 response.body.stepin_recommended=true;
1715 }
1716 };
1717 DebugCommandProcessor.prototype.restartFrameRequest_=function(
1718 request,response){
1719 if(!request.arguments){
1720 return response.failed('Missing arguments');
1721 }
1722 var a=request.arguments.frame;
1723 if(this.exec_state_.frameCount()==0){
1724 return response.failed('No frames');
1725 }
1726 var b;
1727 if(!(a===(void 0))){
1728 var c=%ToNumber(a);
1729 if(c<0||c>=this.exec_state_.frameCount()){
1730 return response.failed('Invalid frame "'+a+'"');
1731 }
1732 b=this.exec_state_.frame(c);
1733 }else{
1734 b=this.exec_state_.frame();
1735 }
1736 var d=Debug.LiveEdit.RestartFrame(b);
1737 response.body={result:d};
1738 };
1739 DebugCommandProcessor.prototype.debuggerFlagsRequest_=function(request,
1740 response){
1741 if(!request.arguments){
1742 response.failed('Missing arguments');
1743 return;
1744 }
1745 var a=request.arguments.flags;
1746 response.body={flags:[]};
1747 if(!(a===(void 0))){
1748 for(var b=0;b<a.length;b++){
1749 var c=a[b].name;
1750 var d=debugger_flags[c];
1751 if(!d){
1752 continue;
1753 }
1754 if('value'in a[b]){
1755 d.setValue(a[b].value);
1756 }
1757 response.body.flags.push({name:c,value:d.getValue()});
1758 }
1759 }else{
1760 for(var c in debugger_flags){
1761 var e=debugger_flags[c].getValue();
1762 response.body.flags.push({name:c,value:e});
1763 }
1764 }
1765 };
1766 DebugCommandProcessor.prototype.v8FlagsRequest_=function(a,b){
1767 var c=a.arguments.flags;
1768 if(!c)c='';
1769 %SetFlags(c);
1770 };
1771 DebugCommandProcessor.prototype.gcRequest_=function(a,b){
1772 var c=a.arguments.type;
1773 if(!c)c='all';
1774 var d=%GetHeapUsage();
1775 %CollectGarbage(c);
1776 var e=%GetHeapUsage();
1777 b.body={"before":d,"after":e};
1778 };
1779 DebugCommandProcessor.prototype.dispatch_=(function(){
1780 var a=DebugCommandProcessor.prototype;
1781 return{
1782 "continue":a.continueRequest_,
1783 "break":a.breakRequest_,
1784 "setbreakpoint":a.setBreakPointRequest_,
1785 "changebreakpoint":a.changeBreakPointRequest_,
1786 "clearbreakpoint":a.clearBreakPointRequest_,
1787 "clearbreakpointgroup":a.clearBreakPointGroupRequest_,
1788 "disconnect":a.disconnectRequest_,
1789 "setexceptionbreak":a.setExceptionBreakRequest_,
1790 "listbreakpoints":a.listBreakpointsRequest_,
1791 "backtrace":a.backtraceRequest_,
1792 "frame":a.frameRequest_,
1793 "scopes":a.scopesRequest_,
1794 "scope":a.scopeRequest_,
1795 "setvariablevalue":a.setVariableValueRequest_,
1796 "evaluate":a.evaluateRequest_,
1797 "lookup":a.lookupRequest_,
1798 "references":a.referencesRequest_,
1799 "source":a.sourceRequest_,
1800 "scripts":a.scriptsRequest_,
1801 "threads":a.threadsRequest_,
1802 "suspend":a.suspendRequest_,
1803 "version":a.versionRequest_,
1804 "changelive":a.changeLiveRequest_,
1805 "restartframe":a.restartFrameRequest_,
1806 "flags":a.debuggerFlagsRequest_,
1807 "v8flag":a.v8FlagsRequest_,
1808 "gc":a.gcRequest_,
1809 };
1810 })();
1811 DebugCommandProcessor.prototype.isRunning=function(){
1812 return this.running_;
1813 };
1814 DebugCommandProcessor.prototype.systemBreak=function(a,b){
1815 return %SystemBreak();
1816 };
1817 function ObjectToProtocolObject_(a,b){
1818 var c={};
1819 for(var d in a){
1820 if(typeof d=='string'){
1821 var e=ValueToProtocolValue_(a[d],
1822 b);
1823 if(!(e===(void 0))){
1824 c[d]=e;
1825 }
1826 }
1827 }
1828 return c;
1829 }
1830 function ArrayToProtocolArray_(a,b){
1831 var c=[];
1832 for(var d=0;d<a.length;d++){
1833 c.push(ValueToProtocolValue_(a[d],b));
1834 }
1835 return c;
1836 }
1837 function ValueToProtocolValue_(a,b){
1838 var c;
1839 switch(typeof a){
1840 case'object':
1841 if(a instanceof Mirror){
1842 c=b.serializeValue(a);
1843 }else if((%_IsArray(a))){
1844 c=ArrayToProtocolArray_(a,b);
1845 }else{
1846 c=ObjectToProtocolObject_(a,b);
1847 }
1848 break;
1849 case'boolean':
1850 case'string':
1851 case'number':
1852 c=a;
1853 break;
1854 default:
1855 c=null;
1856 }
1857 return c;
1858 }
1859
1860 \18mirrorz¥\ 2
1861 "use strict";
1862 var next_handle_=0;
1863 var next_transient_handle_=-1;
1864 var mirror_cache_=[];
1865 var mirror_cache_enabled_=true;
1866 function ToggleMirrorCache(a){
1867 mirror_cache_enabled_=a;
1868 next_handle_=0;
1869 mirror_cache_=[];
1870 }
1871 function ObjectIsPromise(a){
1872 try{
1873 return(%_IsSpecObject(a))&&
1874 !(%DebugGetProperty(a,builtins.$promiseStatus)===(void 0));
1875 }catch(e){
1876 return false;
1877 }
1878 }
1879 function MakeMirror(a,b){
1880 var c;
1881 if(!b&&mirror_cache_enabled_){
1882 for(var d in mirror_cache_){
1883 c=mirror_cache_[d];
1884 if(c.value()===a){
1885 return c;
1886 }
1887 if(c.isNumber()&&isNaN(c.value())&&
1888 typeof a=='number'&&isNaN(a)){
1889 return c;
1890 }
1891 }
1892 }
1893 if((a===(void 0))){
1894 c=new UndefinedMirror();
1895 }else if((a===null)){
1896 c=new NullMirror();
1897 }else if((typeof(a)==='boolean')){
1898 c=new BooleanMirror(a);
1899 }else if((typeof(a)==='number')){
1900 c=new NumberMirror(a);
1901 }else if((typeof(a)==='string')){
1902 c=new StringMirror(a);
1903 }else if((typeof(a)==='symbol')){
1904 c=new SymbolMirror(a);
1905 }else if((%_IsArray(a))){
1906 c=new ArrayMirror(a);
1907 }else if((%_ClassOf(a)==='Date')){
1908 c=new DateMirror(a);
1909 }else if((%_IsFunction(a))){
1910 c=new FunctionMirror(a);
1911 }else if((%_IsRegExp(a))){
1912 c=new RegExpMirror(a);
1913 }else if((%_ClassOf(a)==='Error')){
1914 c=new ErrorMirror(a);
1915 }else if((%_ClassOf(a)==='Script')){
1916 c=new ScriptMirror(a);
1917 }else if((%_ClassOf(a)==='Map')||(%_ClassOf(a)==='WeakMap')){
1918 c=new MapMirror(a);
1919 }else if((%_ClassOf(a)==='Set')||(%_ClassOf(a)==='WeakSet')){
1920 c=new SetMirror(a);
1921 }else if((%_ClassOf(a)==='Map Iterator')||(%_ClassOf(a)==='Set Iterator')){
1922 c=new IteratorMirror(a);
1923 }else if(ObjectIsPromise(a)){
1924 c=new PromiseMirror(a);
1925 }else if((%_ClassOf(a)==='Generator')){
1926 c=new GeneratorMirror(a);
1927 }else{
1928 c=new ObjectMirror(a,OBJECT_TYPE,b);
1929 }
1930 if(mirror_cache_enabled_)mirror_cache_[c.handle()]=c;
1931 return c;
1932 }
1933 function LookupMirror(a){
1934 if(!mirror_cache_enabled_)throw new Error("Mirror cache is disabled");
1935 return mirror_cache_[a];
1936 }
1937 function GetUndefinedMirror(){
1938 return MakeMirror((void 0));
1939 }
1940 function inherits(a,b){
1941 var c=function(){};
1942 c.prototype=b.prototype;
1943 a.super_=b.prototype;
1944 a.prototype=new c();
1945 a.prototype.constructor=a;
1946 }
1947 var UNDEFINED_TYPE='undefined';
1948 var NULL_TYPE='null';
1949 var BOOLEAN_TYPE='boolean';
1950 var NUMBER_TYPE='number';
1951 var STRING_TYPE='string';
1952 var SYMBOL_TYPE='symbol';
1953 var OBJECT_TYPE='object';
1954 var FUNCTION_TYPE='function';
1955 var REGEXP_TYPE='regexp';
1956 var ERROR_TYPE='error';
1957 var PROPERTY_TYPE='property';
1958 var INTERNAL_PROPERTY_TYPE='internalProperty';
1959 var FRAME_TYPE='frame';
1960 var SCRIPT_TYPE='script';
1961 var CONTEXT_TYPE='context';
1962 var SCOPE_TYPE='scope';
1963 var PROMISE_TYPE='promise';
1964 var MAP_TYPE='map';
1965 var SET_TYPE='set';
1966 var ITERATOR_TYPE='iterator';
1967 var GENERATOR_TYPE='generator';
1968 var kMaxProtocolStringLength=80;
1969 var PropertyKind={};
1970 PropertyKind.Named=1;
1971 PropertyKind.Indexed=2;
1972 var PropertyType={};
1973 PropertyType.Data=0;
1974 PropertyType.DataConstant=2;
1975 PropertyType.AccessorConstant=3;
1976 var PropertyAttribute={};
1977 PropertyAttribute.None=0;
1978 PropertyAttribute.ReadOnly=1;
1979 PropertyAttribute.DontEnum=2;
1980 PropertyAttribute.DontDelete=4;
1981 var ScopeType={Global:0,
1982 Local:1,
1983 With:2,
1984 Closure:3,
1985 Catch:4,
1986 Block:5,
1987 Script:6};
1988 function Mirror(a){
1989 this.type_=a;
1990 }
1991 Mirror.prototype.type=function(){
1992 return this.type_;
1993 };
1994 Mirror.prototype.isValue=function(){
1995 return this instanceof ValueMirror;
1996 };
1997 Mirror.prototype.isUndefined=function(){
1998 return this instanceof UndefinedMirror;
1999 };
2000 Mirror.prototype.isNull=function(){
2001 return this instanceof NullMirror;
2002 };
2003 Mirror.prototype.isBoolean=function(){
2004 return this instanceof BooleanMirror;
2005 };
2006 Mirror.prototype.isNumber=function(){
2007 return this instanceof NumberMirror;
2008 };
2009 Mirror.prototype.isString=function(){
2010 return this instanceof StringMirror;
2011 };
2012 Mirror.prototype.isSymbol=function(){
2013 return this instanceof SymbolMirror;
2014 };
2015 Mirror.prototype.isObject=function(){
2016 return this instanceof ObjectMirror;
2017 };
2018 Mirror.prototype.isFunction=function(){
2019 return this instanceof FunctionMirror;
2020 };
2021 Mirror.prototype.isUnresolvedFunction=function(){
2022 return this instanceof UnresolvedFunctionMirror;
2023 };
2024 Mirror.prototype.isArray=function(){
2025 return this instanceof ArrayMirror;
2026 };
2027 Mirror.prototype.isDate=function(){
2028 return this instanceof DateMirror;
2029 };
2030 Mirror.prototype.isRegExp=function(){
2031 return this instanceof RegExpMirror;
2032 };
2033 Mirror.prototype.isError=function(){
2034 return this instanceof ErrorMirror;
2035 };
2036 Mirror.prototype.isPromise=function(){
2037 return this instanceof PromiseMirror;
2038 };
2039 Mirror.prototype.isGenerator=function(){
2040 return this instanceof GeneratorMirror;
2041 };
2042 Mirror.prototype.isProperty=function(){
2043 return this instanceof PropertyMirror;
2044 };
2045 Mirror.prototype.isInternalProperty=function(){
2046 return this instanceof InternalPropertyMirror;
2047 };
2048 Mirror.prototype.isFrame=function(){
2049 return this instanceof FrameMirror;
2050 };
2051 Mirror.prototype.isScript=function(){
2052 return this instanceof ScriptMirror;
2053 };
2054 Mirror.prototype.isContext=function(){
2055 return this instanceof ContextMirror;
2056 };
2057 Mirror.prototype.isScope=function(){
2058 return this instanceof ScopeMirror;
2059 };
2060 Mirror.prototype.isMap=function(){
2061 return this instanceof MapMirror;
2062 };
2063 Mirror.prototype.isSet=function(){
2064 return this instanceof SetMirror;
2065 };
2066 Mirror.prototype.isIterator=function(){
2067 return this instanceof IteratorMirror;
2068 };
2069 Mirror.prototype.allocateHandle_=function(){
2070 if(mirror_cache_enabled_)this.handle_=next_handle_++;
2071 };
2072 Mirror.prototype.allocateTransientHandle_=function(){
2073 this.handle_=next_transient_handle_--;
2074 };
2075 Mirror.prototype.toText=function(){
2076 return"#<"+this.constructor.name+">";
2077 };
2078 function ValueMirror(a,b,c){
2079 %_CallFunction(this,a,Mirror);
2080 this.value_=b;
2081 if(!c){
2082 this.allocateHandle_();
2083 }else{
2084 this.allocateTransientHandle_();
2085 }
2086 }
2087 inherits(ValueMirror,Mirror);
2088 Mirror.prototype.handle=function(){
2089 return this.handle_;
2090 };
2091 ValueMirror.prototype.isPrimitive=function(){
2092 var a=this.type();
2093 return a==='undefined'||
2094 a==='null'||
2095 a==='boolean'||
2096 a==='number'||
2097 a==='string'||
2098 a==='symbol';
2099 };
2100 ValueMirror.prototype.value=function(){
2101 return this.value_;
2102 };
2103 function UndefinedMirror(){
2104 %_CallFunction(this,UNDEFINED_TYPE,(void 0),ValueMirror);
2105 }
2106 inherits(UndefinedMirror,ValueMirror);
2107 UndefinedMirror.prototype.toText=function(){
2108 return'undefined';
2109 };
2110 function NullMirror(){
2111 %_CallFunction(this,NULL_TYPE,null,ValueMirror);
2112 }
2113 inherits(NullMirror,ValueMirror);
2114 NullMirror.prototype.toText=function(){
2115 return'null';
2116 };
2117 function BooleanMirror(a){
2118 %_CallFunction(this,BOOLEAN_TYPE,a,ValueMirror);
2119 }
2120 inherits(BooleanMirror,ValueMirror);
2121 BooleanMirror.prototype.toText=function(){
2122 return this.value_?'true':'false';
2123 };
2124 function NumberMirror(a){
2125 %_CallFunction(this,NUMBER_TYPE,a,ValueMirror);
2126 }
2127 inherits(NumberMirror,ValueMirror);
2128 NumberMirror.prototype.toText=function(){
2129 return %_NumberToString(this.value_);
2130 };
2131 function StringMirror(a){
2132 %_CallFunction(this,STRING_TYPE,a,ValueMirror);
2133 }
2134 inherits(StringMirror,ValueMirror);
2135 StringMirror.prototype.length=function(){
2136 return this.value_.length;
2137 };
2138 StringMirror.prototype.getTruncatedValue=function(a){
2139 if(a!=-1&&this.length()>a){
2140 return this.value_.substring(0,a)+
2141 '... (length: '+this.length()+')';
2142 }
2143 return this.value_;
2144 };
2145 StringMirror.prototype.toText=function(){
2146 return this.getTruncatedValue(kMaxProtocolStringLength);
2147 };
2148 function SymbolMirror(a){
2149 %_CallFunction(this,SYMBOL_TYPE,a,ValueMirror);
2150 }
2151 inherits(SymbolMirror,ValueMirror);
2152 SymbolMirror.prototype.description=function(){
2153 return %SymbolDescription(%_ValueOf(this.value_));
2154 }
2155 SymbolMirror.prototype.toText=function(){
2156 return %_CallFunction(this.value_,builtins.$symbolToString);
2157 }
2158 function ObjectMirror(a,b,c){
2159 %_CallFunction(this,b||OBJECT_TYPE,a,c,ValueMirror);
2160 }
2161 inherits(ObjectMirror,ValueMirror);
2162 ObjectMirror.prototype.className=function(){
2163 return %_ClassOf(this.value_);
2164 };
2165 ObjectMirror.prototype.constructorFunction=function(){
2166 return MakeMirror(%DebugGetProperty(this.value_,'constructor'));
2167 };
2168 ObjectMirror.prototype.prototypeObject=function(){
2169 return MakeMirror(%DebugGetProperty(this.value_,'prototype'));
2170 };
2171 ObjectMirror.prototype.protoObject=function(){
2172 return MakeMirror(%DebugGetPrototype(this.value_));
2173 };
2174 ObjectMirror.prototype.hasNamedInterceptor=function(){
2175 var a=%GetInterceptorInfo(this.value_);
2176 return(a&2)!=0;
2177 };
2178 ObjectMirror.prototype.hasIndexedInterceptor=function(){
2179 var a=%GetInterceptorInfo(this.value_);
2180 return(a&1)!=0;
2181 };
2182 function TryGetPropertyNames(a){
2183 try{
2184 return %GetOwnPropertyNames(a,32);
2185 }catch(e){
2186 return[];
2187 }
2188 }
2189 ObjectMirror.prototype.propertyNames=function(a,b){
2190 a=a||PropertyKind.Named|PropertyKind.Indexed;
2191 var c;
2192 var d;
2193 var e=0;
2194 if(a&PropertyKind.Named){
2195 c=TryGetPropertyNames(this.value_);
2196 e+=c.length;
2197 if(this.hasNamedInterceptor()&&(a&PropertyKind.Named)){
2198 var g=
2199 %GetNamedInterceptorPropertyNames(this.value_);
2200 if(g){
2201 c=c.concat(g);
2202 e+=g.length;
2203 }
2204 }
2205 }
2206 if(a&PropertyKind.Indexed){
2207 d=%GetOwnElementNames(this.value_);
2208 e+=d.length;
2209 if(this.hasIndexedInterceptor()&&(a&PropertyKind.Indexed)){
2210 var h=
2211 %GetIndexedInterceptorElementNames(this.value_);
2212 if(h){
2213 d=d.concat(h);
2214 e+=h.length;
2215 }
2216 }
2217 }
2218 b=Math.min(b||e,e);
2219 var i=new Array(b);
2220 var j=0;
2221 if(a&PropertyKind.Named){
2222 for(var k=0;j<b&&k<c.length;k++){
2223 i[j++]=c[k];
2224 }
2225 }
2226 if(a&PropertyKind.Indexed){
2227 for(var k=0;j<b&&k<d.length;k++){
2228 i[j++]=d[k];
2229 }
2230 }
2231 return i;
2232 };
2233 ObjectMirror.prototype.properties=function(a,b){
2234 var c=this.propertyNames(a,b);
2235 var d=new Array(c.length);
2236 for(var e=0;e<c.length;e++){
2237 d[e]=this.property(c[e]);
2238 }
2239 return d;
2240 };
2241 ObjectMirror.prototype.internalProperties=function(){
2242 return ObjectMirror.GetInternalProperties(this.value_);
2243 }
2244 ObjectMirror.prototype.property=function(a){
2245 var b=%DebugGetPropertyDetails(this.value_,%ToName(a));
2246 if(b){
2247 return new PropertyMirror(this,a,b);
2248 }
2249 return GetUndefinedMirror();
2250 };
2251 ObjectMirror.prototype.lookupProperty=function(a){
2252 var b=this.properties();
2253 for(var c=0;c<b.length;c++){
2254 var d=b[c];
2255 if(d.propertyType()!=PropertyType.AccessorConstant){
2256 if(%_ObjectEquals(d.value_,a.value_)){
2257 return d;
2258 }
2259 }
2260 }
2261 return GetUndefinedMirror();
2262 };
2263 ObjectMirror.prototype.referencedBy=function(a){
2264 var b=%DebugReferencedBy(this.value_,
2265 Mirror.prototype,a||0);
2266 for(var c=0;c<b.length;c++){
2267 b[c]=MakeMirror(b[c]);
2268 }
2269 return b;
2270 };
2271 ObjectMirror.prototype.toText=function(){
2272 var a;
2273 var b=this.constructorFunction();
2274 if(!b.isFunction()){
2275 a=this.className();
2276 }else{
2277 a=b.name();
2278 if(!a){
2279 a=this.className();
2280 }
2281 }
2282 return'#<'+a+'>';
2283 };
2284 ObjectMirror.GetInternalProperties=function(a){
2285 if((%_ClassOf(a)==='String')||(%_ClassOf(a)==='Number')||
2286 (%_ClassOf(a)==='Boolean')){
2287 var b=%_ValueOf(a);
2288 return[new InternalPropertyMirror("[[PrimitiveValue]]",b)];
2289 }else if((%_IsFunction(a))){
2290 var c=%BoundFunctionGetBindings(a);
2291 var d=[];
2292 if(c&&(%_IsArray(c))){
2293 d.push(new InternalPropertyMirror("[[TargetFunction]]",
2294 c[0]));
2295 d.push(new InternalPropertyMirror("[[BoundThis]]",c[1]));
2296 var e=[];
2297 for(var g=2;g<c.length;g++){
2298 e.push(c[g]);
2299 }
2300 d.push(new InternalPropertyMirror("[[BoundArgs]]",e));
2301 }
2302 return d;
2303 }else if((%_ClassOf(a)==='Map Iterator')||(%_ClassOf(a)==='Set Iterator')){
2304 var h=(%_ClassOf(a)==='Map Iterator')?%MapIteratorDetails(a)
2305 :%SetIteratorDetails(a);
2306 var i;
2307 switch(h[2]){
2308 case 1:i="keys";break;
2309 case 2:i="values";break;
2310 case 3:i="entries";break;
2311 }
2312 var d=[
2313 new InternalPropertyMirror("[[IteratorHasMore]]",h[0]),
2314 new InternalPropertyMirror("[[IteratorIndex]]",h[1])
2315 ];
2316 if(i){
2317 d.push(new InternalPropertyMirror("[[IteratorKind]]",i));
2318 }
2319 return d;
2320 }else if((%_ClassOf(a)==='Generator')){
2321 return[
2322 new InternalPropertyMirror("[[GeneratorStatus]]",
2323 GeneratorGetStatus_(a)),
2324 new InternalPropertyMirror("[[GeneratorFunction]]",
2325 %GeneratorGetFunction(a)),
2326 new InternalPropertyMirror("[[GeneratorReceiver]]",
2327 %GeneratorGetReceiver(a))
2328 ];
2329 }else if(ObjectIsPromise(a)){
2330 return[
2331 new InternalPropertyMirror("[[PromiseStatus]]",PromiseGetStatus_(a)),
2332 new InternalPropertyMirror("[[PromiseValue]]",PromiseGetValue_(a))
2333 ];
2334 }
2335 return[];
2336 }
2337 function FunctionMirror(a){
2338 %_CallFunction(this,a,FUNCTION_TYPE,ObjectMirror);
2339 this.resolved_=true;
2340 }
2341 inherits(FunctionMirror,ObjectMirror);
2342 FunctionMirror.prototype.resolved=function(){
2343 return this.resolved_;
2344 };
2345 FunctionMirror.prototype.name=function(){
2346 return %FunctionGetName(this.value_);
2347 };
2348 FunctionMirror.prototype.inferredName=function(){
2349 return %FunctionGetInferredName(this.value_);
2350 };
2351 FunctionMirror.prototype.source=function(){
2352 if(this.resolved()){
2353 return builtins.FunctionSourceString(this.value_);
2354 }
2355 };
2356 FunctionMirror.prototype.script=function(){
2357 if(this.resolved()){
2358 if(this.script_){
2359 return this.script_;
2360 }
2361 var a=%FunctionGetScript(this.value_);
2362 if(a){
2363 return this.script_=MakeMirror(a);
2364 }
2365 }
2366 };
2367 FunctionMirror.prototype.sourcePosition_=function(){
2368 if(this.resolved()){
2369 return %FunctionGetScriptSourcePosition(this.value_);
2370 }
2371 };
2372 FunctionMirror.prototype.sourceLocation=function(){
2373 if(this.resolved()){
2374 var a=this.script();
2375 if(a){
2376 return a.locationFromPosition(this.sourcePosition_(),true);
2377 }
2378 }
2379 };
2380 FunctionMirror.prototype.constructedBy=function(a){
2381 if(this.resolved()){
2382 var b=%DebugConstructedBy(this.value_,a||0);
2383 for(var c=0;c<b.length;c++){
2384 b[c]=MakeMirror(b[c]);
2385 }
2386 return b;
2387 }else{
2388 return[];
2389 }
2390 };
2391 FunctionMirror.prototype.scopeCount=function(){
2392 if(this.resolved()){
2393 if((this.scopeCount_===(void 0))){
2394 this.scopeCount_=%GetFunctionScopeCount(this.value());
2395 }
2396 return this.scopeCount_;
2397 }else{
2398 return 0;
2399 }
2400 };
2401 FunctionMirror.prototype.scope=function(a){
2402 if(this.resolved()){
2403 return new ScopeMirror((void 0),this,a);
2404 }
2405 };
2406 FunctionMirror.prototype.toText=function(){
2407 return this.source();
2408 };
2409 function UnresolvedFunctionMirror(a){
2410 %_CallFunction(this,FUNCTION_TYPE,a,ValueMirror);
2411 this.propertyCount_=0;
2412 this.elementCount_=0;
2413 this.resolved_=false;
2414 }
2415 inherits(UnresolvedFunctionMirror,FunctionMirror);
2416 UnresolvedFunctionMirror.prototype.className=function(){
2417 return'Function';
2418 };
2419 UnresolvedFunctionMirror.prototype.constructorFunction=function(){
2420 return GetUndefinedMirror();
2421 };
2422 UnresolvedFunctionMirror.prototype.prototypeObject=function(){
2423 return GetUndefinedMirror();
2424 };
2425 UnresolvedFunctionMirror.prototype.protoObject=function(){
2426 return GetUndefinedMirror();
2427 };
2428 UnresolvedFunctionMirror.prototype.name=function(){
2429 return this.value_;
2430 };
2431 UnresolvedFunctionMirror.prototype.inferredName=function(){
2432 return undefined;
2433 };
2434 UnresolvedFunctionMirror.prototype.propertyNames=function(a,b){
2435 return[];
2436 };
2437 function ArrayMirror(a){
2438 %_CallFunction(this,a,ObjectMirror);
2439 }
2440 inherits(ArrayMirror,ObjectMirror);
2441 ArrayMirror.prototype.length=function(){
2442 return this.value_.length;
2443 };
2444 ArrayMirror.prototype.indexedPropertiesFromRange=function(opt_from_index,
2445 opt_to_index){
2446 var a=opt_from_index||0;
2447 var b=opt_to_index||this.length()-1;
2448 if(a>b)return new Array();
2449 var c=new Array(b-a+1);
2450 for(var d=a;d<=b;d++){
2451 var e=%DebugGetPropertyDetails(this.value_,%ToString(d));
2452 var g;
2453 if(e){
2454 g=new PropertyMirror(this,d,e);
2455 }else{
2456 g=GetUndefinedMirror();
2457 }
2458 c[d-a]=g;
2459 }
2460 return c;
2461 };
2462 function DateMirror(a){
2463 %_CallFunction(this,a,ObjectMirror);
2464 }
2465 inherits(DateMirror,ObjectMirror);
2466 DateMirror.prototype.toText=function(){
2467 var a=JSON.stringify(this.value_);
2468 return a.substring(1,a.length-1);
2469 };
2470 function RegExpMirror(a){
2471 %_CallFunction(this,a,REGEXP_TYPE,ObjectMirror);
2472 }
2473 inherits(RegExpMirror,ObjectMirror);
2474 RegExpMirror.prototype.source=function(){
2475 return this.value_.source;
2476 };
2477 RegExpMirror.prototype.global=function(){
2478 return this.value_.global;
2479 };
2480 RegExpMirror.prototype.ignoreCase=function(){
2481 return this.value_.ignoreCase;
2482 };
2483 RegExpMirror.prototype.multiline=function(){
2484 return this.value_.multiline;
2485 };
2486 RegExpMirror.prototype.sticky=function(){
2487 return this.value_.sticky;
2488 };
2489 RegExpMirror.prototype.unicode=function(){
2490 return this.value_.unicode;
2491 };
2492 RegExpMirror.prototype.toText=function(){
2493 return"/"+this.source()+"/";
2494 };
2495 function ErrorMirror(a){
2496 %_CallFunction(this,a,ERROR_TYPE,ObjectMirror);
2497 }
2498 inherits(ErrorMirror,ObjectMirror);
2499 ErrorMirror.prototype.message=function(){
2500 return this.value_.message;
2501 };
2502 ErrorMirror.prototype.toText=function(){
2503 var a;
2504 try{
2505 a=%_CallFunction(this.value_,builtins.ErrorToString);
2506 }catch(e){
2507 a='#<Error>';
2508 }
2509 return a;
2510 };
2511 function PromiseMirror(a){
2512 %_CallFunction(this,a,PROMISE_TYPE,ObjectMirror);
2513 }
2514 inherits(PromiseMirror,ObjectMirror);
2515 function PromiseGetStatus_(a){
2516 var b=%DebugGetProperty(a,builtins.$promiseStatus);
2517 if(b==0)return"pending";
2518 if(b==1)return"resolved";
2519 return"rejected";
2520 }
2521 function PromiseGetValue_(a){
2522 return %DebugGetProperty(a,builtins.$promiseValue);
2523 }
2524 PromiseMirror.prototype.status=function(){
2525 return PromiseGetStatus_(this.value_);
2526 };
2527 PromiseMirror.prototype.promiseValue=function(){
2528 return MakeMirror(PromiseGetValue_(this.value_));
2529 };
2530 function MapMirror(a){
2531 %_CallFunction(this,a,MAP_TYPE,ObjectMirror);
2532 }
2533 inherits(MapMirror,ObjectMirror);
2534 MapMirror.prototype.entries=function(a){
2535 var b=[];
2536 if((%_ClassOf(this.value_)==='WeakMap')){
2537 var c=%GetWeakMapEntries(this.value_,a||0);
2538 for(var d=0;d<c.length;d+=2){
2539 b.push({
2540 key:c[d],
2541 value:c[d+1]
2542 });
2543 }
2544 return b;
2545 }
2546 var e=%_CallFunction(this.value_,builtins.$mapEntries);
2547 var g;
2548 while((!a||b.length<a)&&
2549 !(g=e.next()).done){
2550 b.push({
2551 key:g.value[0],
2552 value:g.value[1]
2553 });
2554 }
2555 return b;
2556 };
2557 function SetMirror(a){
2558 %_CallFunction(this,a,SET_TYPE,ObjectMirror);
2559 }
2560 inherits(SetMirror,ObjectMirror);
2561 function IteratorGetValues_(a,b,c){
2562 var d=[];
2563 var e;
2564 while((!c||d.length<c)&&
2565 !(e=%_CallFunction(a,b)).done){
2566 d.push(e.value);
2567 }
2568 return d;
2569 }
2570 SetMirror.prototype.values=function(a){
2571 if((%_ClassOf(this.value_)==='WeakSet')){
2572 return %GetWeakSetValues(this.value_,a||0);
2573 }
2574 var b=%_CallFunction(this.value_,builtins.$setValues);
2575 return IteratorGetValues_(b,builtins.$setIteratorNext,a);
2576 };
2577 function IteratorMirror(a){
2578 %_CallFunction(this,a,ITERATOR_TYPE,ObjectMirror);
2579 }
2580 inherits(IteratorMirror,ObjectMirror);
2581 IteratorMirror.prototype.preview=function(a){
2582 if((%_ClassOf(this.value_)==='Map Iterator')){
2583 return IteratorGetValues_(%MapIteratorClone(this.value_),
2584 builtins.$mapIteratorNext,
2585 a);
2586 }else if((%_ClassOf(this.value_)==='Set Iterator')){
2587 return IteratorGetValues_(%SetIteratorClone(this.value_),
2588 builtins.$setIteratorNext,
2589 a);
2590 }
2591 };
2592 function GeneratorMirror(a){
2593 %_CallFunction(this,a,GENERATOR_TYPE,ObjectMirror);
2594 }
2595 inherits(GeneratorMirror,ObjectMirror);
2596 function GeneratorGetStatus_(a){
2597 var b=%GeneratorGetContinuation(a);
2598 if(b<0)return"running";
2599 if(b==0)return"closed";
2600 return"suspended";
2601 }
2602 GeneratorMirror.prototype.status=function(){
2603 return GeneratorGetStatus_(this.value_);
2604 };
2605 GeneratorMirror.prototype.sourcePosition_=function(){
2606 return %GeneratorGetSourcePosition(this.value_);
2607 };
2608 GeneratorMirror.prototype.sourceLocation=function(){
2609 var a=this.sourcePosition_();
2610 if(!(a===(void 0))){
2611 var b=this.func().script();
2612 if(b){
2613 return b.locationFromPosition(a,true);
2614 }
2615 }
2616 };
2617 GeneratorMirror.prototype.func=function(){
2618 if(!this.func_){
2619 this.func_=MakeMirror(%GeneratorGetFunction(this.value_));
2620 }
2621 return this.func_;
2622 };
2623 GeneratorMirror.prototype.context=function(){
2624 if(!this.context_){
2625 this.context_=new ContextMirror(%GeneratorGetContext(this.value_));
2626 }
2627 return this.context_;
2628 };
2629 GeneratorMirror.prototype.receiver=function(){
2630 if(!this.receiver_){
2631 this.receiver_=MakeMirror(%GeneratorGetReceiver(this.value_));
2632 }
2633 return this.receiver_;
2634 };
2635 function PropertyMirror(a,b,c){
2636 %_CallFunction(this,PROPERTY_TYPE,Mirror);
2637 this.mirror_=a;
2638 this.name_=b;
2639 this.value_=c[0];
2640 this.details_=c[1];
2641 this.is_interceptor_=c[2];
2642 if(c.length>3){
2643 this.exception_=c[3];
2644 this.getter_=c[4];
2645 this.setter_=c[5];
2646 }
2647 }
2648 inherits(PropertyMirror,Mirror);
2649 PropertyMirror.prototype.isReadOnly=function(){
2650 return(this.attributes()&PropertyAttribute.ReadOnly)!=0;
2651 };
2652 PropertyMirror.prototype.isEnum=function(){
2653 return(this.attributes()&PropertyAttribute.DontEnum)==0;
2654 };
2655 PropertyMirror.prototype.canDelete=function(){
2656 return(this.attributes()&PropertyAttribute.DontDelete)==0;
2657 };
2658 PropertyMirror.prototype.name=function(){
2659 return this.name_;
2660 };
2661 PropertyMirror.prototype.isIndexed=function(){
2662 for(var a=0;a<this.name_.length;a++){
2663 if(this.name_[a]<'0'||'9'<this.name_[a]){
2664 return false;
2665 }
2666 }
2667 return true;
2668 };
2669 PropertyMirror.prototype.value=function(){
2670 return MakeMirror(this.value_,false);
2671 };
2672 PropertyMirror.prototype.isException=function(){
2673 return this.exception_?true:false;
2674 };
2675 PropertyMirror.prototype.attributes=function(){
2676 return %DebugPropertyAttributesFromDetails(this.details_);
2677 };
2678 PropertyMirror.prototype.propertyType=function(){
2679 return %DebugPropertyTypeFromDetails(this.details_);
2680 };
2681 PropertyMirror.prototype.insertionIndex=function(){
2682 return %DebugPropertyIndexFromDetails(this.details_);
2683 };
2684 PropertyMirror.prototype.hasGetter=function(){
2685 return this.getter_?true:false;
2686 };
2687 PropertyMirror.prototype.hasSetter=function(){
2688 return this.setter_?true:false;
2689 };
2690 PropertyMirror.prototype.getter=function(){
2691 if(this.hasGetter()){
2692 return MakeMirror(this.getter_);
2693 }else{
2694 return GetUndefinedMirror();
2695 }
2696 };
2697 PropertyMirror.prototype.setter=function(){
2698 if(this.hasSetter()){
2699 return MakeMirror(this.setter_);
2700 }else{
2701 return GetUndefinedMirror();
2702 }
2703 };
2704 PropertyMirror.prototype.isNative=function(){
2705 return this.is_interceptor_||
2706 ((this.propertyType()==PropertyType.AccessorConstant)&&
2707 !this.hasGetter()&&!this.hasSetter());
2708 };
2709 function InternalPropertyMirror(a,b){
2710 %_CallFunction(this,INTERNAL_PROPERTY_TYPE,Mirror);
2711 this.name_=a;
2712 this.value_=b;
2713 }
2714 inherits(InternalPropertyMirror,Mirror);
2715 InternalPropertyMirror.prototype.name=function(){
2716 return this.name_;
2717 };
2718 InternalPropertyMirror.prototype.value=function(){
2719 return MakeMirror(this.value_,false);
2720 };
2721 var kFrameDetailsFrameIdIndex=0;
2722 var kFrameDetailsReceiverIndex=1;
2723 var kFrameDetailsFunctionIndex=2;
2724 var kFrameDetailsArgumentCountIndex=3;
2725 var kFrameDetailsLocalCountIndex=4;
2726 var kFrameDetailsSourcePositionIndex=5;
2727 var kFrameDetailsConstructCallIndex=6;
2728 var kFrameDetailsAtReturnIndex=7;
2729 var kFrameDetailsFlagsIndex=8;
2730 var kFrameDetailsFirstDynamicIndex=9;
2731 var kFrameDetailsNameIndex=0;
2732 var kFrameDetailsValueIndex=1;
2733 var kFrameDetailsNameValueSize=2;
2734 var kFrameDetailsFlagDebuggerFrameMask=1<<0;
2735 var kFrameDetailsFlagOptimizedFrameMask=1<<1;
2736 var kFrameDetailsFlagInlinedFrameIndexMask=7<<2;
2737 function FrameDetails(a,b){
2738 this.break_id_=a;
2739 this.details_=%GetFrameDetails(a,b);
2740 }
2741 FrameDetails.prototype.frameId=function(){
2742 %CheckExecutionState(this.break_id_);
2743 return this.details_[kFrameDetailsFrameIdIndex];
2744 };
2745 FrameDetails.prototype.receiver=function(){
2746 %CheckExecutionState(this.break_id_);
2747 return this.details_[kFrameDetailsReceiverIndex];
2748 };
2749 FrameDetails.prototype.func=function(){
2750 %CheckExecutionState(this.break_id_);
2751 return this.details_[kFrameDetailsFunctionIndex];
2752 };
2753 FrameDetails.prototype.isConstructCall=function(){
2754 %CheckExecutionState(this.break_id_);
2755 return this.details_[kFrameDetailsConstructCallIndex];
2756 };
2757 FrameDetails.prototype.isAtReturn=function(){
2758 %CheckExecutionState(this.break_id_);
2759 return this.details_[kFrameDetailsAtReturnIndex];
2760 };
2761 FrameDetails.prototype.isDebuggerFrame=function(){
2762 %CheckExecutionState(this.break_id_);
2763 var a=kFrameDetailsFlagDebuggerFrameMask;
2764 return(this.details_[kFrameDetailsFlagsIndex]&a)==a;
2765 };
2766 FrameDetails.prototype.isOptimizedFrame=function(){
2767 %CheckExecutionState(this.break_id_);
2768 var a=kFrameDetailsFlagOptimizedFrameMask;
2769 return(this.details_[kFrameDetailsFlagsIndex]&a)==a;
2770 };
2771 FrameDetails.prototype.isInlinedFrame=function(){
2772 return this.inlinedFrameIndex()>0;
2773 };
2774 FrameDetails.prototype.inlinedFrameIndex=function(){
2775 %CheckExecutionState(this.break_id_);
2776 var a=kFrameDetailsFlagInlinedFrameIndexMask;
2777 return(this.details_[kFrameDetailsFlagsIndex]&a)>>2;
2778 };
2779 FrameDetails.prototype.argumentCount=function(){
2780 %CheckExecutionState(this.break_id_);
2781 return this.details_[kFrameDetailsArgumentCountIndex];
2782 };
2783 FrameDetails.prototype.argumentName=function(a){
2784 %CheckExecutionState(this.break_id_);
2785 if(a>=0&&a<this.argumentCount()){
2786 return this.details_[kFrameDetailsFirstDynamicIndex+
2787 a*kFrameDetailsNameValueSize+
2788 kFrameDetailsNameIndex];
2789 }
2790 };
2791 FrameDetails.prototype.argumentValue=function(a){
2792 %CheckExecutionState(this.break_id_);
2793 if(a>=0&&a<this.argumentCount()){
2794 return this.details_[kFrameDetailsFirstDynamicIndex+
2795 a*kFrameDetailsNameValueSize+
2796 kFrameDetailsValueIndex];
2797 }
2798 };
2799 FrameDetails.prototype.localCount=function(){
2800 %CheckExecutionState(this.break_id_);
2801 return this.details_[kFrameDetailsLocalCountIndex];
2802 };
2803 FrameDetails.prototype.sourcePosition=function(){
2804 %CheckExecutionState(this.break_id_);
2805 return this.details_[kFrameDetailsSourcePositionIndex];
2806 };
2807 FrameDetails.prototype.localName=function(a){
2808 %CheckExecutionState(this.break_id_);
2809 if(a>=0&&a<this.localCount()){
2810 var b=kFrameDetailsFirstDynamicIndex+
2811 this.argumentCount()*kFrameDetailsNameValueSize;
2812 return this.details_[b+
2813 a*kFrameDetailsNameValueSize+
2814 kFrameDetailsNameIndex];
2815 }
2816 };
2817 FrameDetails.prototype.localValue=function(a){
2818 %CheckExecutionState(this.break_id_);
2819 if(a>=0&&a<this.localCount()){
2820 var b=kFrameDetailsFirstDynamicIndex+
2821 this.argumentCount()*kFrameDetailsNameValueSize;
2822 return this.details_[b+
2823 a*kFrameDetailsNameValueSize+
2824 kFrameDetailsValueIndex];
2825 }
2826 };
2827 FrameDetails.prototype.returnValue=function(){
2828 %CheckExecutionState(this.break_id_);
2829 var a=
2830 kFrameDetailsFirstDynamicIndex+
2831 (this.argumentCount()+this.localCount())*kFrameDetailsNameValueSize;
2832 if(this.details_[kFrameDetailsAtReturnIndex]){
2833 return this.details_[a];
2834 }
2835 };
2836 FrameDetails.prototype.scopeCount=function(){
2837 if((this.scopeCount_===(void 0))){
2838 this.scopeCount_=%GetScopeCount(this.break_id_,this.frameId());
2839 }
2840 return this.scopeCount_;
2841 };
2842 FrameDetails.prototype.stepInPositionsImpl=function(){
2843 return %GetStepInPositions(this.break_id_,this.frameId());
2844 };
2845 function FrameMirror(a,b){
2846 %_CallFunction(this,FRAME_TYPE,Mirror);
2847 this.break_id_=a;
2848 this.index_=b;
2849 this.details_=new FrameDetails(a,b);
2850 }
2851 inherits(FrameMirror,Mirror);
2852 FrameMirror.prototype.details=function(){
2853 return this.details_;
2854 };
2855 FrameMirror.prototype.index=function(){
2856 return this.index_;
2857 };
2858 FrameMirror.prototype.func=function(){
2859 if(this.func_){
2860 return this.func_;
2861 }
2862 var a=this.details_.func();
2863 if((%_IsFunction(a))){
2864 return this.func_=MakeMirror(a);
2865 }else{
2866 return new UnresolvedFunctionMirror(a);
2867 }
2868 };
2869 FrameMirror.prototype.receiver=function(){
2870 return MakeMirror(this.details_.receiver());
2871 };
2872 FrameMirror.prototype.isConstructCall=function(){
2873 return this.details_.isConstructCall();
2874 };
2875 FrameMirror.prototype.isAtReturn=function(){
2876 return this.details_.isAtReturn();
2877 };
2878 FrameMirror.prototype.isDebuggerFrame=function(){
2879 return this.details_.isDebuggerFrame();
2880 };
2881 FrameMirror.prototype.isOptimizedFrame=function(){
2882 return this.details_.isOptimizedFrame();
2883 };
2884 FrameMirror.prototype.isInlinedFrame=function(){
2885 return this.details_.isInlinedFrame();
2886 };
2887 FrameMirror.prototype.inlinedFrameIndex=function(){
2888 return this.details_.inlinedFrameIndex();
2889 };
2890 FrameMirror.prototype.argumentCount=function(){
2891 return this.details_.argumentCount();
2892 };
2893 FrameMirror.prototype.argumentName=function(a){
2894 return this.details_.argumentName(a);
2895 };
2896 FrameMirror.prototype.argumentValue=function(a){
2897 return MakeMirror(this.details_.argumentValue(a));
2898 };
2899 FrameMirror.prototype.localCount=function(){
2900 return this.details_.localCount();
2901 };
2902 FrameMirror.prototype.localName=function(a){
2903 return this.details_.localName(a);
2904 };
2905 FrameMirror.prototype.localValue=function(a){
2906 return MakeMirror(this.details_.localValue(a));
2907 };
2908 FrameMirror.prototype.returnValue=function(){
2909 return MakeMirror(this.details_.returnValue());
2910 };
2911 FrameMirror.prototype.sourcePosition=function(){
2912 return this.details_.sourcePosition();
2913 };
2914 FrameMirror.prototype.sourceLocation=function(){
2915 var a=this.func();
2916 if(a.resolved()){
2917 var b=a.script();
2918 if(b){
2919 return b.locationFromPosition(this.sourcePosition(),true);
2920 }
2921 }
2922 };
2923 FrameMirror.prototype.sourceLine=function(){
2924 var a=this.sourceLocation();
2925 if(a){
2926 return a.line;
2927 }
2928 };
2929 FrameMirror.prototype.sourceColumn=function(){
2930 var a=this.sourceLocation();
2931 if(a){
2932 return a.column;
2933 }
2934 };
2935 FrameMirror.prototype.sourceLineText=function(){
2936 var a=this.sourceLocation();
2937 if(a){
2938 return a.sourceText();
2939 }
2940 };
2941 FrameMirror.prototype.scopeCount=function(){
2942 return this.details_.scopeCount();
2943 };
2944 FrameMirror.prototype.scope=function(a){
2945 return new ScopeMirror(this,(void 0),a);
2946 };
2947 FrameMirror.prototype.allScopes=function(a){
2948 var b=%GetAllScopesDetails(this.break_id_,
2949 this.details_.frameId(),
2950 this.details_.inlinedFrameIndex(),
2951 !!a);
2952 var c=[];
2953 for(var d=0;d<b.length;++d){
2954 c.push(new ScopeMirror(this,(void 0),d,b[d]));
2955 }
2956 return c;
2957 };
2958 FrameMirror.prototype.stepInPositions=function(){
2959 var a=this.func().script();
2960 var b=this.func().sourcePosition_();
2961 var c=this.details_.stepInPositionsImpl();
2962 var d=[];
2963 if(c){
2964 for(var e=0;e<c.length;e++){
2965 var g={};
2966 var h=a.locationFromPosition(b+c[e],
2967 true);
2968 serializeLocationFields(h,g);
2969 var i={
2970 position:g
2971 };
2972 d.push(i);
2973 }
2974 }
2975 return d;
2976 };
2977 FrameMirror.prototype.evaluate=function(source,disable_break,
2978 opt_context_object){
2979 return MakeMirror(%DebugEvaluate(this.break_id_,
2980 this.details_.frameId(),
2981 this.details_.inlinedFrameIndex(),
2982 source,
2983 Boolean(disable_break),
2984 opt_context_object));
2985 };
2986 FrameMirror.prototype.invocationText=function(){
2987 var a='';
2988 var b=this.func();
2989 var c=this.receiver();
2990 if(this.isConstructCall()){
2991 a+='new ';
2992 a+=b.name()?b.name():'[anonymous]';
2993 }else if(this.isDebuggerFrame()){
2994 a+='[debugger]';
2995 }else{
2996 var d=
2997 !c.className||(c.className()!='global');
2998 if(d){
2999 a+=c.toText();
3000 }
3001 var e=GetUndefinedMirror();
3002 if(c.isObject()){
3003 for(var g=c;
3004 !g.isNull()&&e.isUndefined();
3005 g=g.protoObject()){
3006 e=g.lookupProperty(b);
3007 }
3008 }
3009 if(!e.isUndefined()){
3010 if(!e.isIndexed()){
3011 if(d){
3012 a+='.';
3013 }
3014 a+=e.name();
3015 }else{
3016 a+='[';
3017 a+=e.name();
3018 a+=']';
3019 }
3020 if(b.name()&&b.name()!=e.name()){
3021 a+='(aka '+b.name()+')';
3022 }
3023 }else{
3024 if(d){
3025 a+='.';
3026 }
3027 a+=b.name()?b.name():'[anonymous]';
3028 }
3029 }
3030 if(!this.isDebuggerFrame()){
3031 a+='(';
3032 for(var h=0;h<this.argumentCount();h++){
3033 if(h!=0)a+=', ';
3034 if(this.argumentName(h)){
3035 a+=this.argumentName(h);
3036 a+='=';
3037 }
3038 a+=this.argumentValue(h).toText();
3039 }
3040 a+=')';
3041 }
3042 if(this.isAtReturn()){
3043 a+=' returning ';
3044 a+=this.returnValue().toText();
3045 }
3046 return a;
3047 };
3048 FrameMirror.prototype.sourceAndPositionText=function(){
3049 var a='';
3050 var b=this.func();
3051 if(b.resolved()){
3052 var c=b.script();
3053 if(c){
3054 if(c.name()){
3055 a+=c.name();
3056 }else{
3057 a+='[unnamed]';
3058 }
3059 if(!this.isDebuggerFrame()){
3060 var d=this.sourceLocation();
3061 a+=' line ';
3062 a+=!(d===(void 0))?(d.line+1):'?';
3063 a+=' column ';
3064 a+=!(d===(void 0))?(d.column+1):'?';
3065 if(!(this.sourcePosition()===(void 0))){
3066 a+=' (position '+(this.sourcePosition()+1)+')';
3067 }
3068 }
3069 }else{
3070 a+='[no source]';
3071 }
3072 }else{
3073 a+='[unresolved]';
3074 }
3075 return a;
3076 };
3077 FrameMirror.prototype.localsText=function(){
3078 var a='';
3079 var b=this.localCount();
3080 if(b>0){
3081 for(var c=0;c<b;++c){
3082 a+='      var ';
3083 a+=this.localName(c);
3084 a+=' = ';
3085 a+=this.localValue(c).toText();
3086 if(c<b-1)a+='\n';
3087 }
3088 }
3089 return a;
3090 };
3091 FrameMirror.prototype.restart=function(){
3092 var a=%LiveEditRestartFrame(this.break_id_,this.index_);
3093 if((a===(void 0))){
3094 a="Failed to find requested frame";
3095 }
3096 return a;
3097 };
3098 FrameMirror.prototype.toText=function(a){
3099 var b='';
3100 b+='#'+(this.index()<=9?'0':'')+this.index();
3101 b+=' ';
3102 b+=this.invocationText();
3103 b+=' ';
3104 b+=this.sourceAndPositionText();
3105 if(a){
3106 b+='\n';
3107 b+=this.localsText();
3108 }
3109 return b;
3110 };
3111 var kScopeDetailsTypeIndex=0;
3112 var kScopeDetailsObjectIndex=1;
3113 function ScopeDetails(a,b,c,d){
3114 if(a){
3115 this.break_id_=a.break_id_;
3116 this.details_=d||
3117 %GetScopeDetails(a.break_id_,
3118 a.details_.frameId(),
3119 a.details_.inlinedFrameIndex(),
3120 c);
3121 this.frame_id_=a.details_.frameId();
3122 this.inlined_frame_id_=a.details_.inlinedFrameIndex();
3123 }else{
3124 this.details_=d||%GetFunctionScopeDetails(b.value(),c);
3125 this.fun_value_=b.value();
3126 this.break_id_=undefined;
3127 }
3128 this.index_=c;
3129 }
3130 ScopeDetails.prototype.type=function(){
3131 if(!(this.break_id_===(void 0))){
3132 %CheckExecutionState(this.break_id_);
3133 }
3134 return this.details_[kScopeDetailsTypeIndex];
3135 };
3136 ScopeDetails.prototype.object=function(){
3137 if(!(this.break_id_===(void 0))){
3138 %CheckExecutionState(this.break_id_);
3139 }
3140 return this.details_[kScopeDetailsObjectIndex];
3141 };
3142 ScopeDetails.prototype.setVariableValueImpl=function(a,b){
3143 var c;
3144 if(!(this.break_id_===(void 0))){
3145 %CheckExecutionState(this.break_id_);
3146 c=%SetScopeVariableValue(this.break_id_,this.frame_id_,
3147 this.inlined_frame_id_,this.index_,a,b);
3148 }else{
3149 c=%SetScopeVariableValue(this.fun_value_,null,null,this.index_,
3150 a,b);
3151 }
3152 if(!c){
3153 throw new Error("Failed to set variable value");
3154 }
3155 };
3156 function ScopeMirror(a,b,c,d){
3157 %_CallFunction(this,SCOPE_TYPE,Mirror);
3158 if(a){
3159 this.frame_index_=a.index_;
3160 }else{
3161 this.frame_index_=undefined;
3162 }
3163 this.scope_index_=c;
3164 this.details_=new ScopeDetails(a,b,c,d);
3165 }
3166 inherits(ScopeMirror,Mirror);
3167 ScopeMirror.prototype.details=function(){
3168 return this.details_;
3169 };
3170 ScopeMirror.prototype.frameIndex=function(){
3171 return this.frame_index_;
3172 };
3173 ScopeMirror.prototype.scopeIndex=function(){
3174 return this.scope_index_;
3175 };
3176 ScopeMirror.prototype.scopeType=function(){
3177 return this.details_.type();
3178 };
3179 ScopeMirror.prototype.scopeObject=function(){
3180 var a=this.scopeType()==ScopeType.Local||
3181 this.scopeType()==ScopeType.Closure||
3182 this.scopeType()==ScopeType.Script;
3183 return MakeMirror(this.details_.object(),a);
3184 };
3185 ScopeMirror.prototype.setVariableValue=function(a,b){
3186 this.details_.setVariableValueImpl(a,b);
3187 };
3188 function ScriptMirror(a){
3189 %_CallFunction(this,SCRIPT_TYPE,Mirror);
3190 this.script_=a;
3191 this.context_=new ContextMirror(a.context_data);
3192 this.allocateHandle_();
3193 }
3194 inherits(ScriptMirror,Mirror);
3195 ScriptMirror.prototype.value=function(){
3196 return this.script_;
3197 };
3198 ScriptMirror.prototype.name=function(){
3199 return this.script_.name||this.script_.nameOrSourceURL();
3200 };
3201 ScriptMirror.prototype.id=function(){
3202 return this.script_.id;
3203 };
3204 ScriptMirror.prototype.source=function(){
3205 return this.script_.source;
3206 };
3207 ScriptMirror.prototype.setSource=function(a){
3208 %DebugSetScriptSource(this.script_,a);
3209 };
3210 ScriptMirror.prototype.lineOffset=function(){
3211 return this.script_.line_offset;
3212 };
3213 ScriptMirror.prototype.columnOffset=function(){
3214 return this.script_.column_offset;
3215 };
3216 ScriptMirror.prototype.data=function(){
3217 return this.script_.data;
3218 };
3219 ScriptMirror.prototype.scriptType=function(){
3220 return this.script_.type;
3221 };
3222 ScriptMirror.prototype.compilationType=function(){
3223 return this.script_.compilation_type;
3224 };
3225 ScriptMirror.prototype.lineCount=function(){
3226 return this.script_.lineCount();
3227 };
3228 ScriptMirror.prototype.locationFromPosition=function(
3229 position,include_resource_offset){
3230 return this.script_.locationFromPosition(position,include_resource_offset);
3231 };
3232 ScriptMirror.prototype.sourceSlice=function(a,b){
3233 return this.script_.sourceSlice(a,b);
3234 };
3235 ScriptMirror.prototype.context=function(){
3236 return this.context_;
3237 };
3238 ScriptMirror.prototype.evalFromScript=function(){
3239 return MakeMirror(this.script_.eval_from_script);
3240 };
3241 ScriptMirror.prototype.evalFromFunctionName=function(){
3242 return MakeMirror(this.script_.eval_from_function_name);
3243 };
3244 ScriptMirror.prototype.evalFromLocation=function(){
3245 var a=this.evalFromScript();
3246 if(!a.isUndefined()){
3247 var b=this.script_.eval_from_script_position;
3248 return a.locationFromPosition(b,true);
3249 }
3250 };
3251 ScriptMirror.prototype.toText=function(){
3252 var a='';
3253 a+=this.name();
3254 a+=' (lines: ';
3255 if(this.lineOffset()>0){
3256 a+=this.lineOffset();
3257 a+='-';
3258 a+=this.lineOffset()+this.lineCount()-1;
3259 }else{
3260 a+=this.lineCount();
3261 }
3262 a+=')';
3263 return a;
3264 };
3265 function ContextMirror(a){
3266 %_CallFunction(this,CONTEXT_TYPE,Mirror);
3267 this.data_=a;
3268 this.allocateHandle_();
3269 }
3270 inherits(ContextMirror,Mirror);
3271 ContextMirror.prototype.data=function(){
3272 return this.data_;
3273 };
3274 function MakeMirrorSerializer(a,b){
3275 return new JSONProtocolSerializer(a,b);
3276 }
3277 function JSONProtocolSerializer(a,b){
3278 this.details_=a;
3279 this.options_=b;
3280 this.mirrors_=[];
3281 }
3282 JSONProtocolSerializer.prototype.serializeReference=function(a){
3283 return this.serialize_(a,true,true);
3284 };
3285 JSONProtocolSerializer.prototype.serializeValue=function(a){
3286 var b=this.serialize_(a,false,true);
3287 return b;
3288 };
3289 JSONProtocolSerializer.prototype.serializeReferencedObjects=function(){
3290 var a=[];
3291 var b=this.mirrors_.length;
3292 for(var c=0;c<b;c++){
3293 a.push(this.serialize_(this.mirrors_[c],false,false));
3294 }
3295 return a;
3296 };
3297 JSONProtocolSerializer.prototype.includeSource_=function(){
3298 return this.options_&&this.options_.includeSource;
3299 };
3300 JSONProtocolSerializer.prototype.inlineRefs_=function(){
3301 return this.options_&&this.options_.inlineRefs;
3302 };
3303 JSONProtocolSerializer.prototype.maxStringLength_=function(){
3304 if((this.options_===(void 0))||
3305 (this.options_.maxStringLength===(void 0))){
3306 return kMaxProtocolStringLength;
3307 }
3308 return this.options_.maxStringLength;
3309 };
3310 JSONProtocolSerializer.prototype.add_=function(a){
3311 for(var b=0;b<this.mirrors_.length;b++){
3312 if(this.mirrors_[b]===a){
3313 return;
3314 }
3315 }
3316 this.mirrors_.push(a);
3317 };
3318 JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_=
3319 function(a){
3320 var b={};
3321 b.ref=a.handle();
3322 b.type=a.type();
3323 switch(a.type()){
3324 case UNDEFINED_TYPE:
3325 case NULL_TYPE:
3326 case BOOLEAN_TYPE:
3327 case NUMBER_TYPE:
3328 b.value=a.value();
3329 break;
3330 case STRING_TYPE:
3331 b.value=a.getTruncatedValue(this.maxStringLength_());
3332 break;
3333 case SYMBOL_TYPE:
3334 b.description=a.description();
3335 break;
3336 case FUNCTION_TYPE:
3337 b.name=a.name();
3338 b.inferredName=a.inferredName();
3339 if(a.script()){
3340 b.scriptId=a.script().id();
3341 }
3342 break;
3343 case ERROR_TYPE:
3344 case REGEXP_TYPE:
3345 b.value=a.toText();
3346 break;
3347 case OBJECT_TYPE:
3348 b.className=a.className();
3349 break;
3350 }
3351 return b;
3352 };
3353 JSONProtocolSerializer.prototype.serialize_=function(mirror,reference,
3354 details){
3355 if(reference&&
3356 (mirror.isValue()||mirror.isScript()||mirror.isContext())){
3357 if(this.inlineRefs_()&&mirror.isValue()){
3358 return this.serializeReferenceWithDisplayData_(mirror);
3359 }else{
3360 this.add_(mirror);
3361 return{'ref':mirror.handle()};
3362 }
3363 }
3364 var a={};
3365 if(mirror.isValue()||mirror.isScript()||mirror.isContext()){
3366 a.handle=mirror.handle();
3367 }
3368 a.type=mirror.type();
3369 switch(mirror.type()){
3370 case UNDEFINED_TYPE:
3371 case NULL_TYPE:
3372 break;
3373 case BOOLEAN_TYPE:
3374 a.value=mirror.value();
3375 break;
3376 case NUMBER_TYPE:
3377 a.value=NumberToJSON_(mirror.value());
3378 break;
3379 case STRING_TYPE:
3380 if(this.maxStringLength_()!=-1&&
3381 mirror.length()>this.maxStringLength_()){
3382 var b=mirror.getTruncatedValue(this.maxStringLength_());
3383 a.value=b;
3384 a.fromIndex=0;
3385 a.toIndex=this.maxStringLength_();
3386 }else{
3387 a.value=mirror.value();
3388 }
3389 a.length=mirror.length();
3390 break;
3391 case SYMBOL_TYPE:
3392 a.description=mirror.description();
3393 break;
3394 case OBJECT_TYPE:
3395 case FUNCTION_TYPE:
3396 case ERROR_TYPE:
3397 case REGEXP_TYPE:
3398 case PROMISE_TYPE:
3399 case GENERATOR_TYPE:
3400 this.serializeObject_(mirror,a,details);
3401 break;
3402 case PROPERTY_TYPE:
3403 case INTERNAL_PROPERTY_TYPE:
3404 throw new Error('PropertyMirror cannot be serialized independently');
3405 break;
3406 case FRAME_TYPE:
3407 this.serializeFrame_(mirror,a);
3408 break;
3409 case SCOPE_TYPE:
3410 this.serializeScope_(mirror,a);
3411 break;
3412 case SCRIPT_TYPE:
3413 if(mirror.name()){
3414 a.name=mirror.name();
3415 }
3416 a.id=mirror.id();
3417 a.lineOffset=mirror.lineOffset();
3418 a.columnOffset=mirror.columnOffset();
3419 a.lineCount=mirror.lineCount();
3420 if(mirror.data()){
3421 a.data=mirror.data();
3422 }
3423 if(this.includeSource_()){
3424 a.source=mirror.source();
3425 }else{
3426 var c=mirror.source().substring(0,80);
3427 a.sourceStart=c;
3428 }
3429 a.sourceLength=mirror.source().length;
3430 a.scriptType=mirror.scriptType();
3431 a.compilationType=mirror.compilationType();
3432 if(mirror.compilationType()==1&&
3433 mirror.evalFromScript()){
3434 a.evalFromScript=
3435 this.serializeReference(mirror.evalFromScript());
3436 var d=mirror.evalFromLocation();
3437 if(d){
3438 a.evalFromLocation={line:d.line,
3439 column:d.column};
3440 }
3441 if(mirror.evalFromFunctionName()){
3442 a.evalFromFunctionName=mirror.evalFromFunctionName();
3443 }
3444 }
3445 if(mirror.context()){
3446 a.context=this.serializeReference(mirror.context());
3447 }
3448 break;
3449 case CONTEXT_TYPE:
3450 a.data=mirror.data();
3451 break;
3452 }
3453 a.text=mirror.toText();
3454 return a;
3455 };
3456 JSONProtocolSerializer.prototype.serializeObject_=function(mirror,content,
3457 details){
3458 content.className=mirror.className();
3459 content.constructorFunction=
3460 this.serializeReference(mirror.constructorFunction());
3461 content.protoObject=this.serializeReference(mirror.protoObject());
3462 content.prototypeObject=this.serializeReference(mirror.prototypeObject());
3463 if(mirror.hasNamedInterceptor()){
3464 content.namedInterceptor=true;
3465 }
3466 if(mirror.hasIndexedInterceptor()){
3467 content.indexedInterceptor=true;
3468 }
3469 if(mirror.isFunction()){
3470 content.name=mirror.name();
3471 if(!(mirror.inferredName()===(void 0))){
3472 content.inferredName=mirror.inferredName();
3473 }
3474 content.resolved=mirror.resolved();
3475 if(mirror.resolved()){
3476 content.source=mirror.source();
3477 }
3478 if(mirror.script()){
3479 content.script=this.serializeReference(mirror.script());
3480 content.scriptId=mirror.script().id();
3481 serializeLocationFields(mirror.sourceLocation(),content);
3482 }
3483 content.scopes=[];
3484 for(var a=0;a<mirror.scopeCount();a++){
3485 var b=mirror.scope(a);
3486 content.scopes.push({
3487 type:b.scopeType(),
3488 index:a
3489 });
3490 }
3491 }
3492 if(mirror.isGenerator()){
3493 content.status=mirror.status();
3494 content.func=this.serializeReference(mirror.func())
3495 content.receiver=this.serializeReference(mirror.receiver())
3496 serializeLocationFields(mirror.sourceLocation(),content);
3497 }
3498 if(mirror.isDate()){
3499 content.value=mirror.value();
3500 }
3501 if(mirror.isPromise()){
3502 content.status=mirror.status();
3503 content.promiseValue=this.serializeReference(mirror.promiseValue());
3504 }
3505 var c=mirror.propertyNames(PropertyKind.Named);
3506 var d=mirror.propertyNames(PropertyKind.Indexed);
3507 var e=new Array(c.length+d.length);
3508 for(var a=0;a<c.length;a++){
3509 var g=mirror.property(c[a]);
3510 e[a]=this.serializeProperty_(g);
3511 if(details){
3512 this.add_(g.value());
3513 }
3514 }
3515 for(var a=0;a<d.length;a++){
3516 var g=mirror.property(d[a]);
3517 e[c.length+a]=this.serializeProperty_(g);
3518 if(details){
3519 this.add_(g.value());
3520 }
3521 }
3522 content.properties=e;
3523 var h=mirror.internalProperties();
3524 if(h.length>0){
3525 var i=[];
3526 for(var a=0;a<h.length;a++){
3527 i.push(this.serializeInternalProperty_(h[a]));
3528 }
3529 content.internalProperties=i;
3530 }
3531 };
3532 function serializeLocationFields(a,b){
3533 if(!a){
3534 return;
3535 }
3536 b.position=a.position;
3537 var c=a.line;
3538 if(!(c===(void 0))){
3539 b.line=c;
3540 }
3541 var d=a.column;
3542 if(!(d===(void 0))){
3543 b.column=d;
3544 }
3545 }
3546 JSONProtocolSerializer.prototype.serializeProperty_=function(a){
3547 var b={};
3548 b.name=a.name();
3549 var c=a.value();
3550 if(this.inlineRefs_()&&c.isValue()){
3551 b.value=this.serializeReferenceWithDisplayData_(c);
3552 }else{
3553 if(a.attributes()!=PropertyAttribute.None){
3554 b.attributes=a.attributes();
3555 }
3556 b.propertyType=a.propertyType();
3557 b.ref=c.handle();
3558 }
3559 return b;
3560 };
3561 JSONProtocolSerializer.prototype.serializeInternalProperty_=
3562 function(a){
3563 var b={};
3564 b.name=a.name();
3565 var c=a.value();
3566 if(this.inlineRefs_()&&c.isValue()){
3567 b.value=this.serializeReferenceWithDisplayData_(c);
3568 }else{
3569 b.ref=c.handle();
3570 }
3571 return b;
3572 };
3573 JSONProtocolSerializer.prototype.serializeFrame_=function(a,b){
3574 b.index=a.index();
3575 b.receiver=this.serializeReference(a.receiver());
3576 var c=a.func();
3577 b.func=this.serializeReference(c);
3578 var d=c.script();
3579 if(d){
3580 b.script=this.serializeReference(d);
3581 }
3582 b.constructCall=a.isConstructCall();
3583 b.atReturn=a.isAtReturn();
3584 if(a.isAtReturn()){
3585 b.returnValue=this.serializeReference(a.returnValue());
3586 }
3587 b.debuggerFrame=a.isDebuggerFrame();
3588 var e=new Array(a.argumentCount());
3589 for(var g=0;g<a.argumentCount();g++){
3590 var h={};
3591 var i=a.argumentName(g);
3592 if(i){
3593 h.name=i;
3594 }
3595 h.value=this.serializeReference(a.argumentValue(g));
3596 e[g]=h;
3597 }
3598 b.arguments=e;
3599 var e=new Array(a.localCount());
3600 for(var g=0;g<a.localCount();g++){
3601 var j={};
3602 j.name=a.localName(g);
3603 j.value=this.serializeReference(a.localValue(g));
3604 e[g]=j;
3605 }
3606 b.locals=e;
3607 serializeLocationFields(a.sourceLocation(),b);
3608 var k=a.sourceLineText();
3609 if(!(k===(void 0))){
3610 b.sourceLineText=k;
3611 }
3612 b.scopes=[];
3613 for(var g=0;g<a.scopeCount();g++){
3614 var l=a.scope(g);
3615 b.scopes.push({
3616 type:l.scopeType(),
3617 index:g
3618 });
3619 }
3620 };
3621 JSONProtocolSerializer.prototype.serializeScope_=function(a,b){
3622 b.index=a.scopeIndex();
3623 b.frameIndex=a.frameIndex();
3624 b.type=a.scopeType();
3625 b.object=this.inlineRefs_()?
3626 this.serializeValue(a.scopeObject()):
3627 this.serializeReference(a.scopeObject());
3628 };
3629 function NumberToJSON_(a){
3630 if(isNaN(a)){
3631 return'NaN';
3632 }
3633 if(!(%_IsSmi(%IS_VAR(a))||((a==a)&&(a!=1/0)&&(a!=-1/0)))){
3634 if(a>0){
3635 return'Infinity';
3636 }else{
3637 return'-Infinity';
3638 }
3639 }
3640 return a;
3641 }
3642
3643  liveeditÁø
3644 "use strict";
3645 Debug.LiveEdit=new function(){
3646 var a;
3647 var b="stack_update_needs_step_in";
3648 function ApplyPatchMultiChunk(script,diff_array,new_source,preview_only,
3649 change_log){
3650 var c=script.source;
3651 var d=GatherCompileInfo(c,script);
3652 var e=BuildCodeInfoTree(d);
3653 var g=new PosTranslator(diff_array);
3654 MarkChangedFunctions(e,g.GetChunks());
3655 FindLiveSharedInfos(e,script);
3656 var h;
3657 try{
3658 h=GatherCompileInfo(new_source,script);
3659 }catch(e){
3660 var i=
3661 new Failure("Failed to compile new version of script: "+e);
3662 if(e instanceof SyntaxError){
3663 var j={
3664 type:"liveedit_compile_error",
3665 syntaxErrorMessage:e.message
3666 };
3667 CopyErrorPositionToDetails(e,j);
3668 i.details=j;
3669 }
3670 throw i;
3671 }
3672 var k=BuildCodeInfoTree(h);
3673 FindCorrespondingFunctions(e,k);
3674 var l=new Array();
3675 var m=new Array();
3676 var n=new Array();
3677 var o=new Array();
3678 function HarvestTodo(p){
3679 function CollectDamaged(q){
3680 m.push(q);
3681 for(var r=0;r<q.children.length;r++){
3682 CollectDamaged(q.children[r]);
3683 }
3684 }
3685 function CollectNew(t){
3686 for(var r=0;r<t.length;r++){
3687 n.push(t[r]);
3688 CollectNew(t[r].children);
3689 }
3690 }
3691 if(p.status==a.DAMAGED){
3692 CollectDamaged(p);
3693 return;
3694 }
3695 if(p.status==a.UNCHANGED){
3696 o.push(p);
3697 }else if(p.status==a.SOURCE_CHANGED){
3698 o.push(p);
3699 }else if(p.status==a.CHANGED){
3700 l.push(p);
3701 CollectNew(p.unmatched_new_nodes);
3702 }
3703 for(var r=0;r<p.children.length;r++){
3704 HarvestTodo(p.children[r]);
3705 }
3706 }
3707 var u={
3708 change_tree:DescribeChangeTree(e),
3709 textual_diff:{
3710 old_len:c.length,
3711 new_len:new_source.length,
3712 chunks:diff_array
3713 },
3714 updated:false
3715 };
3716 if(preview_only){
3717 return u;
3718 }
3719 HarvestTodo(e);
3720 var v=new Array();
3721 for(var r=0;r<l.length;r++){
3722 var w=
3723 l[r].live_shared_function_infos;
3724 if(w){
3725 for(var x=0;x<w.length;x++){
3726 v.push(w[x]);
3727 }
3728 }
3729 }
3730 var y=
3731 CheckStackActivations(v,change_log);
3732 u.stack_modified=y!=0;
3733 u[b]=
3734 u.stack_modified;
3735 var z=TemporaryRemoveBreakPoints(script,change_log);
3736 var A;
3737 if(m.length==0){
3738 %LiveEditReplaceScript(script,new_source,null);
3739 A=(void 0);
3740 }else{
3741 var B=CreateNameForOldScript(script);
3742 A=%LiveEditReplaceScript(script,new_source,
3743 B);
3744 var C=new Array();
3745 change_log.push({linked_to_old_script:C});
3746 for(var r=0;r<m.length;r++){
3747 LinkToOldScript(m[r],A,
3748 C);
3749 }
3750 u.created_script_name=B;
3751 }
3752 for(var r=0;r<n.length;r++){
3753 %LiveEditFunctionSetScript(
3754 n[r].info.shared_function_info,script);
3755 }
3756 for(var r=0;r<l.length;r++){
3757 PatchFunctionCode(l[r],change_log);
3758 }
3759 var D=new Array();
3760 change_log.push({position_patched:D});
3761 for(var r=0;r<o.length;r++){
3762 PatchPositions(o[r],diff_array,
3763 D);
3764 if(o[r].live_shared_function_infos){
3765 o[r].live_shared_function_infos.
3766 forEach(function(E){
3767 %LiveEditFunctionSourceUpdated(E.raw_array);
3768 });
3769 }
3770 }
3771 z(g,A);
3772 u.updated=true;
3773 return u;
3774 }
3775 this.ApplyPatchMultiChunk=ApplyPatchMultiChunk;
3776 function GatherCompileInfo(F,G){
3777 var H=%LiveEditGatherCompileInfo(G,F);
3778 var I=new Array();
3779 var J=new Array();
3780 for(var r=0;r<H.length;r++){
3781 var E=new FunctionCompileInfo(H[r]);
3782 %LiveEditFunctionSetScript(E.shared_function_info,(void 0));
3783 I.push(E);
3784 J.push(r);
3785 }
3786 for(var r=0;r<I.length;r++){
3787 var K=r;
3788 for(var x=r+1;x<I.length;x++){
3789 if(I[K].start_position>I[x].start_position){
3790 K=x;
3791 }
3792 }
3793 if(K!=r){
3794 var L=I[K];
3795 var M=J[K];
3796 I[K]=I[r];
3797 J[K]=J[r];
3798 I[r]=L;
3799 J[r]=M;
3800 }
3801 }
3802 var N=0;
3803 function ResetIndexes(O,P){
3804 var Q=-1;
3805 while(N<I.length&&
3806 I[N].outer_index==P){
3807 var R=N;
3808 I[R].outer_index=O;
3809 if(Q!=-1){
3810 I[Q].next_sibling_index=R;
3811 }
3812 Q=R;
3813 N++;
3814 ResetIndexes(R,J[R]);
3815 }
3816 if(Q!=-1){
3817 I[Q].next_sibling_index=-1;
3818 }
3819 }
3820 ResetIndexes(-1,-1);
3821 Assert(N==I.length);
3822 return I;
3823 }
3824 function PatchFunctionCode(p,S){
3825 var T=p.corresponding_node.info;
3826 if(p.live_shared_function_infos){
3827 p.live_shared_function_infos.forEach(function(U){
3828 %LiveEditReplaceFunctionCode(T.raw_array,
3829 U.raw_array);
3830 for(var r=0;r<p.children.length;r++){
3831 if(p.children[r].corresponding_node){
3832 var V=
3833 p.children[r].corresponding_node.info.
3834 shared_function_info;
3835 if(p.children[r].live_shared_function_infos){
3836 p.children[r].live_shared_function_infos.
3837 forEach(function(W){
3838 %LiveEditReplaceRefToNestedFunction(
3839 U.info,
3840 V,
3841 W.info);
3842 });
3843 }
3844 }
3845 }
3846 });
3847 S.push({function_patched:T.function_name});
3848 }else{
3849 S.push({function_patched:T.function_name,
3850 function_info_not_found:true});
3851 }
3852 }
3853 function LinkToOldScript(X,A,Y){
3854 if(X.live_shared_function_infos){
3855 X.live_shared_function_infos.
3856 forEach(function(E){
3857 %LiveEditFunctionSetScript(E.info,A);
3858 });
3859 Y.push({name:X.info.function_name});
3860 }else{
3861 Y.push(
3862 {name:X.info.function_name,not_found:true});
3863 }
3864 }
3865 function TemporaryRemoveBreakPoints(Z,S){
3866 var aa=GetScriptBreakPoints(Z);
3867 var ab=[];
3868 S.push({break_points_update:ab});
3869 var ac=[];
3870 for(var r=0;r<aa.length;r++){
3871 var ad=aa[r];
3872 ad.clear();
3873 var ae=Debug.findScriptSourcePosition(Z,
3874 ad.line(),ad.column());
3875 var af={
3876 position:ae,
3877 line:ad.line(),
3878 column:ad.column()
3879 };
3880 ac.push(af);
3881 }
3882 return function(g,ag){
3883 for(var r=0;r<aa.length;r++){
3884 var ad=aa[r];
3885 if(ag){
3886 var ah=ad.cloneForOtherScript(ag);
3887 ah.set(ag);
3888 ab.push({
3889 type:"copied_to_old",
3890 id:ad.number(),
3891 new_id:ah.number(),
3892 positions:ac[r]
3893 });
3894 }
3895 var ai=g.Translate(
3896 ac[r].position,
3897 PosTranslator.ShiftWithTopInsideChunkHandler);
3898 var aj=
3899 Z.locationFromPosition(ai,false);
3900 ad.update_positions(aj.line,aj.column);
3901 var ak={
3902 position:ai,
3903 line:aj.line,
3904 column:aj.column
3905 };
3906 ad.set(Z);
3907 ab.push({type:"position_changed",
3908 id:ad.number(),
3909 old_positions:ac[r],
3910 new_positions:ak
3911 });
3912 }
3913 };
3914 }
3915 function Assert(al,am){
3916 if(!al){
3917 if(am){
3918 throw"Assert "+am;
3919 }else{
3920 throw"Assert";
3921 }
3922 }
3923 }
3924 function DiffChunk(an,ao,ap,aq){
3925 this.pos1=an;
3926 this.pos2=ao;
3927 this.len1=ap;
3928 this.len2=aq;
3929 }
3930 function PosTranslator(ar){
3931 var as=new Array();
3932 var at=0;
3933 for(var r=0;r<ar.length;r+=3){
3934 var au=ar[r];
3935 var av=au+at;
3936 var aw=ar[r+1];
3937 var ax=ar[r+2];
3938 as.push(new DiffChunk(au,av,aw-au,
3939 ax-av));
3940 at=ax-aw;
3941 }
3942 this.chunks=as;
3943 }
3944 PosTranslator.prototype.GetChunks=function(){
3945 return this.chunks;
3946 };
3947 PosTranslator.prototype.Translate=function(ay,az){
3948 var aA=this.chunks;
3949 if(aA.length==0||ay<aA[0].pos1){
3950 return ay;
3951 }
3952 var aB=0;
3953 var aC=aA.length-1;
3954 while(aB<aC){
3955 var aD=Math.floor((aB+aC)/2);
3956 if(ay<aA[aD+1].pos1){
3957 aC=aD;
3958 }else{
3959 aB=aD+1;
3960 }
3961 }
3962 var aE=aA[aB];
3963 if(ay>=aE.pos1+aE.len1){
3964 return ay+aE.pos2+aE.len2-aE.pos1-aE.len1;
3965 }
3966 if(!az){
3967 az=PosTranslator.DefaultInsideChunkHandler;
3968 }
3969 return az(ay,aE);
3970 };
3971 PosTranslator.DefaultInsideChunkHandler=function(ay,aF){
3972 Assert(false,"Cannot translate position in changed area");
3973 };
3974 PosTranslator.ShiftWithTopInsideChunkHandler=
3975 function(ay,aF){
3976 return ay-aF.pos1+aF.pos2;
3977 };
3978 var a={
3979 UNCHANGED:"unchanged",
3980 SOURCE_CHANGED:"source changed",
3981 CHANGED:"changed",
3982 DAMAGED:"damaged"
3983 };
3984 function CodeInfoTreeNode(aG,aH,aI){
3985 this.info=aG;
3986 this.children=aH;
3987 this.array_index=aI;
3988 this.parent=(void 0);
3989 this.status=a.UNCHANGED;
3990 this.status_explanation=(void 0);
3991 this.new_start_pos=(void 0);
3992 this.new_end_pos=(void 0);
3993 this.corresponding_node=(void 0);
3994 this.unmatched_new_nodes=(void 0);
3995 this.textual_corresponding_node=(void 0);
3996 this.textually_unmatched_new_nodes=(void 0);
3997 this.live_shared_function_infos=(void 0);
3998 }
3999 function BuildCodeInfoTree(aJ){
4000 var aK=0;
4001 function BuildNode(){
4002 var aL=aK;
4003 aK++;
4004 var aM=new Array();
4005 while(aK<aJ.length&&
4006 aJ[aK].outer_index==aL){
4007 aM.push(BuildNode());
4008 }
4009 var q=new CodeInfoTreeNode(aJ[aL],aM,
4010 aL);
4011 for(var r=0;r<aM.length;r++){
4012 aM[r].parent=q;
4013 }
4014 return q;
4015 }
4016 var aN=BuildNode();
4017 Assert(aK==aJ.length);
4018 return aN;
4019 }
4020 function MarkChangedFunctions(aO,as){
4021 var aP=new function(){
4022 var aQ=0;
4023 var aR=0;
4024 this.current=function(){return as[aQ];};
4025 this.next=function(){
4026 var aE=as[aQ];
4027 aR=aE.pos2+aE.len2-(aE.pos1+aE.len1);
4028 aQ++;
4029 };
4030 this.done=function(){return aQ>=as.length;};
4031 this.TranslatePos=function(ay){return ay+aR;};
4032 };
4033 function ProcessInternals(aS){
4034 aS.new_start_pos=aP.TranslatePos(
4035 aS.info.start_position);
4036 var aT=0;
4037 var aU=false;
4038 var aV=false;
4039 while(!aP.done()&&
4040 aP.current().pos1<aS.info.end_position){
4041 if(aT<aS.children.length){
4042 var aW=aS.children[aT];
4043 if(aW.info.end_position<=aP.current().pos1){
4044 ProcessUnchangedChild(aW);
4045 aT++;
4046 continue;
4047 }else if(aW.info.start_position>=
4048 aP.current().pos1+aP.current().len1){
4049 aU=true;
4050 aP.next();
4051 continue;
4052 }else if(aW.info.start_position<=aP.current().pos1&&
4053 aW.info.end_position>=aP.current().pos1+
4054 aP.current().len1){
4055 ProcessInternals(aW);
4056 aV=aV||
4057 (aW.status!=a.UNCHANGED);
4058 aU=aU||
4059 (aW.status==a.DAMAGED);
4060 aT++;
4061 continue;
4062 }else{
4063 aU=true;
4064 aW.status=a.DAMAGED;
4065 aW.status_explanation=
4066 "Text diff overlaps with function boundary";
4067 aT++;
4068 continue;
4069 }
4070 }else{
4071 if(aP.current().pos1+aP.current().len1<=
4072 aS.info.end_position){
4073 aS.status=a.CHANGED;
4074 aP.next();
4075 continue;
4076 }else{
4077 aS.status=a.DAMAGED;
4078 aS.status_explanation=
4079 "Text diff overlaps with function boundary";
4080 return;
4081 }
4082 }
4083 Assert("Unreachable",false);
4084 }
4085 while(aT<aS.children.length){
4086 var aW=aS.children[aT];
4087 ProcessUnchangedChild(aW);
4088 aT++;
4089 }
4090 if(aU){
4091 aS.status=a.CHANGED;
4092 }else if(aV){
4093 aS.status=a.SOURCE_CHANGED;
4094 }
4095 aS.new_end_pos=
4096 aP.TranslatePos(aS.info.end_position);
4097 }
4098 function ProcessUnchangedChild(q){
4099 q.new_start_pos=aP.TranslatePos(q.info.start_position);
4100 q.new_end_pos=aP.TranslatePos(q.info.end_position);
4101 }
4102 ProcessInternals(aO);
4103 }
4104 function FindCorrespondingFunctions(aX,aY){
4105 function ProcessNode(p,aZ){
4106 var ba=
4107 IsFunctionContextLocalsChanged(p.info,aZ.info);
4108 if(ba){
4109 p.status=a.CHANGED;
4110 }
4111 var bb=p.children;
4112 var bc=aZ.children;
4113 var bd=[];
4114 var be=[];
4115 var bf=0;
4116 var bg=0;
4117 while(bf<bb.length){
4118 if(bb[bf].status==a.DAMAGED){
4119 bf++;
4120 }else if(bg<bc.length){
4121 if(bc[bg].info.start_position<
4122 bb[bf].new_start_pos){
4123 bd.push(bc[bg]);
4124 be.push(bc[bg]);
4125 bg++;
4126 }else if(bc[bg].info.start_position==
4127 bb[bf].new_start_pos){
4128 if(bc[bg].info.end_position==
4129 bb[bf].new_end_pos){
4130 bb[bf].corresponding_node=
4131 bc[bg];
4132 bb[bf].textual_corresponding_node=
4133 bc[bg];
4134 if(ba){
4135 bb[bf].status=a.DAMAGED;
4136 bb[bf].status_explanation=
4137 "Enclosing function is now incompatible. "+
4138 ba;
4139 bb[bf].corresponding_node=(void 0);
4140 }else if(bb[bf].status!=
4141 a.UNCHANGED){
4142 ProcessNode(bb[bf],
4143 bc[bg]);
4144 if(bb[bf].status==a.DAMAGED){
4145 bd.push(
4146 bb[bf].corresponding_node);
4147 bb[bf].corresponding_node=(void 0);
4148 p.status=a.CHANGED;
4149 }
4150 }
4151 }else{
4152 bb[bf].status=a.DAMAGED;
4153 bb[bf].status_explanation=
4154 "No corresponding function in new script found";
4155 p.status=a.CHANGED;
4156 bd.push(bc[bg]);
4157 be.push(bc[bg]);
4158 }
4159 bg++;
4160 bf++;
4161 }else{
4162 bb[bf].status=a.DAMAGED;
4163 bb[bf].status_explanation=
4164 "No corresponding function in new script found";
4165 p.status=a.CHANGED;
4166 bf++;
4167 }
4168 }else{
4169 bb[bf].status=a.DAMAGED;
4170 bb[bf].status_explanation=
4171 "No corresponding function in new script found";
4172 p.status=a.CHANGED;
4173 bf++;
4174 }
4175 }
4176 while(bg<bc.length){
4177 bd.push(bc[bg]);
4178 be.push(bc[bg]);
4179 bg++;
4180 }
4181 if(p.status==a.CHANGED){
4182 if(p.info.param_num!=aZ.info.param_num){
4183 p.status=a.DAMAGED;
4184 p.status_explanation="Changed parameter number: "+
4185 p.info.param_num+" and "+aZ.info.param_num;
4186 }
4187 }
4188 p.unmatched_new_nodes=bd;
4189 p.textually_unmatched_new_nodes=
4190 be;
4191 }
4192 ProcessNode(aX,aY);
4193 aX.corresponding_node=aY;
4194 aX.textual_corresponding_node=aY;
4195 Assert(aX.status!=a.DAMAGED,
4196 "Script became damaged");
4197 }
4198 function FindLiveSharedInfos(aX,G){
4199 var bh=%LiveEditFindSharedFunctionInfosForScript(G);
4200 var bi=new Array();
4201 for(var r=0;r<bh.length;r++){
4202 bi.push(new SharedInfoWrapper(bh[r]));
4203 }
4204 function FindFunctionInfos(I){
4205 var bj=[];
4206 for(var r=0;r<bi.length;r++){
4207 var bk=bi[r];
4208 if(bk.start_position==I.start_position&&
4209 bk.end_position==I.end_position){
4210 bj.push(bk);
4211 }
4212 }
4213 if(bj.length>0){
4214 return bj;
4215 }
4216 }
4217 function TraverseTree(q){
4218 q.live_shared_function_infos=FindFunctionInfos(q.info);
4219 for(var r=0;r<q.children.length;r++){
4220 TraverseTree(q.children[r]);
4221 }
4222 }
4223 TraverseTree(aX);
4224 }
4225 function FunctionCompileInfo(bl){
4226 this.function_name=bl[0];
4227 this.start_position=bl[1];
4228 this.end_position=bl[2];
4229 this.param_num=bl[3];
4230 this.code=bl[4];
4231 this.code_scope_info=bl[5];
4232 this.scope_info=bl[6];
4233 this.outer_index=bl[7];
4234 this.shared_function_info=bl[8];
4235 this.next_sibling_index=null;
4236 this.raw_array=bl;
4237 }
4238 function SharedInfoWrapper(bl){
4239 this.function_name=bl[0];
4240 this.start_position=bl[1];
4241 this.end_position=bl[2];
4242 this.info=bl[3];
4243 this.raw_array=bl;
4244 }
4245 function PatchPositions(X,ar,Y){
4246 if(X.live_shared_function_infos){
4247 X.live_shared_function_infos.forEach(function(E){
4248 %LiveEditPatchFunctionPositions(E.raw_array,
4249 ar);
4250 });
4251 Y.push({name:X.info.function_name});
4252 }else{
4253 Y.push(
4254 {name:X.info.function_name,info_not_found:true});
4255 }
4256 }
4257 function CreateNameForOldScript(G){
4258 return G.name+" (old)";
4259 }
4260 function IsFunctionContextLocalsChanged(bm,bn){
4261 var bo=bm.scope_info;
4262 var bp=bn.scope_info;
4263 var bq;
4264 var br;
4265 if(bo){
4266 bq=bo.toString();
4267 }else{
4268 bq="";
4269 }
4270 if(bp){
4271 br=bp.toString();
4272 }else{
4273 br="";
4274 }
4275 if(bq!=br){
4276 return"Variable map changed: ["+bq+
4277 "] => ["+br+"]";
4278 }
4279 return;
4280 }
4281 var bs;
4282 function CheckStackActivations(bt,S){
4283 var bu=new Array();
4284 for(var r=0;r<bt.length;r++){
4285 bu[r]=bt[r].info;
4286 }
4287 var bv=%LiveEditCheckAndDropActivations(bu,true);
4288 if(bv[bu.length]){
4289 throw new Failure(bv[bu.length]);
4290 }
4291 var bw=new Array();
4292 var bx=new Array();
4293 for(var r=0;r<bu.length;r++){
4294 var by=bt[r];
4295 if(bv[r]==bs.REPLACED_ON_ACTIVE_STACK){
4296 bx.push({name:by.function_name});
4297 }else if(bv[r]!=bs.AVAILABLE_FOR_PATCH){
4298 var bz={
4299 name:by.function_name,
4300 start_pos:by.start_position,
4301 end_pos:by.end_position,
4302 replace_problem:
4303 bs.SymbolName(bv[r])
4304 };
4305 bw.push(bz);
4306 }
4307 }
4308 if(bx.length>0){
4309 S.push({dropped_from_stack:bx});
4310 }
4311 if(bw.length>0){
4312 S.push({functions_on_stack:bw});
4313 throw new Failure("Blocked by functions on stack");
4314 }
4315 return bx.length;
4316 }
4317 var bs={
4318 AVAILABLE_FOR_PATCH:1,
4319 BLOCKED_ON_ACTIVE_STACK:2,
4320 BLOCKED_ON_OTHER_STACK:3,
4321 BLOCKED_UNDER_NATIVE_CODE:4,
4322 REPLACED_ON_ACTIVE_STACK:5,
4323 BLOCKED_UNDER_GENERATOR:6,
4324 BLOCKED_ACTIVE_GENERATOR:7
4325 };
4326 bs.SymbolName=function(bA){
4327 var bB=bs;
4328 for(var bC in bB){
4329 if(bB[bC]==bA){
4330 return bC;
4331 }
4332 }
4333 };
4334 function Failure(am){
4335 this.message=am;
4336 }
4337 this.Failure=Failure;
4338 Failure.prototype.toString=function(){
4339 return"LiveEdit Failure: "+this.message;
4340 };
4341 function CopyErrorPositionToDetails(bD,j){
4342 function createPositionStruct(G,bE){
4343 if(bE==-1)return;
4344 var bF=G.locationFromPosition(bE,true);
4345 if(bF==null)return;
4346 return{
4347 line:bF.line+1,
4348 column:bF.column+1,
4349 position:bE
4350 };
4351 }
4352 if(!("scriptObject"in bD)||!("startPosition"in bD)){
4353 return;
4354 }
4355 var G=bD.scriptObject;
4356 var bG={
4357 start:createPositionStruct(G,bD.startPosition),
4358 end:createPositionStruct(G,bD.endPosition)
4359 };
4360 j.position=bG;
4361 }
4362 function GetPcFromSourcePos(bH,bI){
4363 return %GetFunctionCodePositionFromSource(bH,bI);
4364 }
4365 this.GetPcFromSourcePos=GetPcFromSourcePos;
4366 function SetScriptSource(G,bJ,bK,S){
4367 var c=G.source;
4368 var bL=CompareStrings(c,bJ);
4369 return ApplyPatchMultiChunk(G,bL,bJ,bK,
4370 S);
4371 }
4372 this.SetScriptSource=SetScriptSource;
4373 function CompareStrings(bM,bN){
4374 return %LiveEditCompareStrings(bM,bN);
4375 }
4376 function ApplySingleChunkPatch(G,change_pos,change_len,new_str,
4377 S){
4378 var c=G.source;
4379 var bJ=c.substring(0,change_pos)+
4380 new_str+c.substring(change_pos+change_len);
4381 return ApplyPatchMultiChunk(G,
4382 [change_pos,change_pos+change_len,change_pos+new_str.length],
4383 bJ,false,S);
4384 }
4385 function DescribeChangeTree(aX){
4386 function ProcessOldNode(q){
4387 var bO=[];
4388 for(var r=0;r<q.children.length;r++){
4389 var aW=q.children[r];
4390 if(aW.status!=a.UNCHANGED){
4391 bO.push(ProcessOldNode(aW));
4392 }
4393 }
4394 var bP=[];
4395 if(q.textually_unmatched_new_nodes){
4396 for(var r=0;r<q.textually_unmatched_new_nodes.length;r++){
4397 var aW=q.textually_unmatched_new_nodes[r];
4398 bP.push(ProcessNewNode(aW));
4399 }
4400 }
4401 var bQ={
4402 name:q.info.function_name,
4403 positions:DescribePositions(q),
4404 status:q.status,
4405 children:bO,
4406 new_children:bP
4407 };
4408 if(q.status_explanation){
4409 bQ.status_explanation=q.status_explanation;
4410 }
4411 if(q.textual_corresponding_node){
4412 bQ.new_positions=DescribePositions(q.textual_corresponding_node);
4413 }
4414 return bQ;
4415 }
4416 function ProcessNewNode(q){
4417 var bO=[];
4418 if(false){
4419 for(var r=0;r<q.children.length;r++){
4420 bO.push(ProcessNewNode(q.children[r]));
4421 }
4422 }
4423 var bQ={
4424 name:q.info.function_name,
4425 positions:DescribePositions(q),
4426 children:bO,
4427 };
4428 return bQ;
4429 }
4430 function DescribePositions(q){
4431 return{
4432 start_position:q.info.start_position,
4433 end_position:q.info.end_position
4434 };
4435 }
4436 return ProcessOldNode(aX);
4437 }
4438 function RestartFrame(bR){
4439 var bv=bR.restart();
4440 if((typeof(bv)==='string')){
4441 throw new Failure("Failed to restart frame: "+bv);
4442 }
4443 var bv={};
4444 bv[b]=true;
4445 return bv;
4446 }
4447 this.RestartFrame=RestartFrame;
4448 this.TestApi={
4449 PosTranslator:PosTranslator,
4450 CompareStrings:CompareStrings,
4451 ApplySingleChunkPatch:ApplySingleChunkPatch
4452 };
4453 };
4454
4455 `\1cruntimeyÄ
4456 var $Object=global.Object;
4457 var $Array=global.Array;
4458 var $String=global.String;
4459 var $Number=global.Number;
4460 var $Function=global.Function;
4461 var $Boolean=global.Boolean;
4462 var $NaN=%GetRootNaN();
4463 function EQUALS(a){
4464 if((typeof(this)==='string')&&(typeof(a)==='string'))return %StringEquals(this,a);
4465 var b=this;
4466 while(true){
4467 if((typeof(b)==='number')){
4468 while(true){
4469 if((typeof(a)==='number'))return %NumberEquals(b,a);
4470 if((a==null))return 1;
4471 if((typeof(a)==='symbol'))return 1;
4472 if(!(%_IsSpecObject(a))){
4473 return %NumberEquals(b,%ToNumber(a));
4474 }
4475 a=%ToPrimitive(a,0);
4476 }
4477 }else if((typeof(b)==='string')){
4478 while(true){
4479 if((typeof(a)==='string'))return %StringEquals(b,a);
4480 if((typeof(a)==='symbol'))return 1;
4481 if((typeof(a)==='number'))return %NumberEquals(%ToNumber(b),a);
4482 if((typeof(a)==='boolean'))return %NumberEquals(%ToNumber(b),%ToNumber(a));
4483 if((a==null))return 1;
4484 a=%ToPrimitive(a,0);
4485 }
4486 }else if((typeof(b)==='symbol')){
4487 if((typeof(a)==='symbol'))return %_ObjectEquals(b,a)?0:1;
4488 return 1;
4489 }else if((typeof(b)==='boolean')){
4490 if((typeof(a)==='boolean'))return %_ObjectEquals(b,a)?0:1;
4491 if((a==null))return 1;
4492 if((typeof(a)==='number'))return %NumberEquals(%ToNumber(b),a);
4493 if((typeof(a)==='string'))return %NumberEquals(%ToNumber(b),%ToNumber(a));
4494 if((typeof(a)==='symbol'))return 1;
4495 b=%ToNumber(b);
4496 a=%ToPrimitive(a,0);
4497 }else if((b==null)){
4498 return(a==null)?0:1;
4499 }else{
4500 if((%_IsSpecObject(a))){
4501 return %_ObjectEquals(b,a)?0:1;
4502 }
4503 if((a==null))return 1;
4504 if((typeof(a)==='symbol'))return 1;
4505 if((typeof(a)==='boolean'))a=%ToNumber(a);
4506 b=%ToPrimitive(b,0);
4507 }
4508 }
4509 }
4510 function STRICT_EQUALS(a){
4511 if((typeof(this)==='string')){
4512 if(!(typeof(a)==='string'))return 1;
4513 return %StringEquals(this,a);
4514 }
4515 if((typeof(this)==='number')){
4516 if(!(typeof(a)==='number'))return 1;
4517 return %NumberEquals(this,a);
4518 }
4519 return %_ObjectEquals(this,a)?0:1;
4520 }
4521 function COMPARE(a,b){
4522 var c;
4523 var d;
4524 if((typeof(this)==='string')){
4525 if((typeof(a)==='string'))return %_StringCompare(this,a);
4526 if((a===(void 0)))return b;
4527 c=this;
4528 }else if((typeof(this)==='number')){
4529 if((typeof(a)==='number'))return %NumberCompare(this,a,b);
4530 if((a===(void 0)))return b;
4531 c=this;
4532 }else if((this===(void 0))){
4533 if(!(a===(void 0))){
4534 %ToPrimitive(a,1);
4535 }
4536 return b;
4537 }else if((a===(void 0))){
4538 %ToPrimitive(this,1);
4539 return b;
4540 }else{
4541 c=%ToPrimitive(this,1);
4542 }
4543 d=%ToPrimitive(a,1);
4544 if((typeof(c)==='string')&&(typeof(d)==='string')){
4545 return %_StringCompare(c,d);
4546 }else{
4547 var e=%ToNumber(c);
4548 var g=%ToNumber(d);
4549 if((!%_IsSmi(%IS_VAR(e))&&!(e==e))||(!%_IsSmi(%IS_VAR(g))&&!(g==g)))return b;
4550 return %NumberCompare(e,g,b);
4551 }
4552 }
4553 function ADD(a){
4554 if((typeof(this)==='number')&&(typeof(a)==='number'))return %NumberAdd(this,a);
4555 if((typeof(this)==='string')&&(typeof(a)==='string'))return %_StringAdd(this,a);
4556 var b=%ToPrimitive(this,0);
4557 var c=%ToPrimitive(a,0);
4558 if((typeof(b)==='string')){
4559 return %_StringAdd(b,%ToString(c));
4560 }else if((typeof(c)==='string')){
4561 return %_StringAdd(%NonStringToString(b),c);
4562 }else{
4563 return %NumberAdd(%ToNumber(b),%ToNumber(c));
4564 }
4565 }
4566 function STRING_ADD_LEFT(a){
4567 if(!(typeof(a)==='string')){
4568 if((%_ClassOf(a)==='String')&&%_IsStringWrapperSafeForDefaultValueOf(a)){
4569 a=%_ValueOf(a);
4570 }else{
4571 a=(typeof(a)==='number')
4572 ?%_NumberToString(a)
4573 :%ToString(%ToPrimitive(a,0));
4574 }
4575 }
4576 return %_StringAdd(this,a);
4577 }
4578 function STRING_ADD_RIGHT(a){
4579 var b=this;
4580 if(!(typeof(b)==='string')){
4581 if((%_ClassOf(b)==='String')&&%_IsStringWrapperSafeForDefaultValueOf(b)){
4582 b=%_ValueOf(b);
4583 }else{
4584 b=(typeof(b)==='number')
4585 ?%_NumberToString(b)
4586 :%ToString(%ToPrimitive(b,0));
4587 }
4588 }
4589 return %_StringAdd(b,a);
4590 }
4591 function SUB(a){
4592 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4593 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4594 return %NumberSub(b,a);
4595 }
4596 function MUL(a){
4597 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4598 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4599 return %NumberMul(b,a);
4600 }
4601 function DIV(a){
4602 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4603 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4604 return %NumberDiv(b,a);
4605 }
4606 function MOD(a){
4607 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4608 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4609 return %NumberMod(b,a);
4610 }
4611 function BIT_OR(a){
4612 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4613 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4614 return %NumberOr(b,a);
4615 }
4616 function BIT_AND(a){
4617 var b;
4618 if((typeof(this)==='number')){
4619 b=this;
4620 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4621 }else{
4622 b=%NonNumberToNumber(this);
4623 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4624 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return 0;
4625 }
4626 return %NumberAnd(b,a);
4627 }
4628 function BIT_XOR(a){
4629 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4630 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4631 return %NumberXor(b,a);
4632 }
4633 function SHL(a){
4634 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4635 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4636 return %NumberShl(b,a);
4637 }
4638 function SAR(a){
4639 var b;
4640 if((typeof(this)==='number')){
4641 b=this;
4642 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4643 }else{
4644 b=%NonNumberToNumber(this);
4645 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4646 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return 0;
4647 }
4648 return %NumberSar(b,a);
4649 }
4650 function SHR(a){
4651 var b=(typeof(this)==='number')?this:%NonNumberToNumber(this);
4652 if(!(typeof(a)==='number'))a=%NonNumberToNumber(a);
4653 return %NumberShr(b,a);
4654 }
4655 function DELETE(a,b){
4656 return %DeleteProperty(%ToObject(this),%ToName(a),b);
4657 }
4658 function IN(a){
4659 if(!(%_IsSpecObject(a))){
4660 throw %MakeTypeError(11,this,a);
4661 }
4662 if(%_IsNonNegativeSmi(this)){
4663 if((%_IsArray(a))&&%_HasFastPackedElements(a)){
4664 return this<a.length;
4665 }
4666 return %HasElement(a,this);
4667 }
4668 return %HasProperty(a,%ToName(this));
4669 }
4670 function INSTANCE_OF(a){
4671 var b=this;
4672 if(!(%_ClassOf(a)==='Function')){
4673 throw %MakeTypeError(9,a);
4674 }
4675 if(!(%_IsSpecObject(b))){
4676 return 1;
4677 }
4678 var c=%BoundFunctionGetBindings(a);
4679 if(c){
4680 a=c[0];
4681 }
4682 var d=a.prototype;
4683 if(!(%_IsSpecObject(d))){
4684 throw %MakeTypeError(10,d);
4685 }
4686 return %IsInPrototypeChain(d,b)?0:1;
4687 }
4688 function FILTER_KEY(a){
4689 var b=%ToName(a);
4690 if(%HasProperty(this,b))return b;
4691 return 0;
4692 }
4693 function CALL_NON_FUNCTION(){
4694 var a=%GetFunctionDelegate(this);
4695 if(!(%_IsFunction(a))){
4696 var b=%RenderCallSite();
4697 if(b=="")b=typeof this;
4698 throw %MakeTypeError(2,b);
4699 }
4700 return %Apply(a,this,arguments,0,%_ArgumentsLength());
4701 }
4702 function CALL_NON_FUNCTION_AS_CONSTRUCTOR(){
4703 var a=%GetConstructorDelegate(this);
4704 if(!(%_IsFunction(a))){
4705 var b=%RenderCallSite();
4706 if(b=="")b=typeof this;
4707 throw %MakeTypeError(2,b);
4708 }
4709 return %Apply(a,this,arguments,0,%_ArgumentsLength());
4710 }
4711 function CALL_FUNCTION_PROXY(){
4712 var a=%_ArgumentsLength()-1;
4713 var b=%_Arguments(a);
4714 var c=%GetCallTrap(b);
4715 return %Apply(c,this,arguments,0,a);
4716 }
4717 function CALL_FUNCTION_PROXY_AS_CONSTRUCTOR(){
4718 var a=this;
4719 var b=%GetConstructTrap(a);
4720 return %Apply(b,this,arguments,0,%_ArgumentsLength());
4721 }
4722 function APPLY_PREPARE(a){
4723 var b;
4724 if((%_IsArray(a))){
4725 b=a.length;
4726 if(%_IsSmi(b)&&b>=0&&b<0x800000&&
4727 (%_ClassOf(this)==='Function')){
4728 return b;
4729 }
4730 }
4731 b=(a==null)?0:%ToUint32(a.length);
4732 if(b>0x800000)throw %MakeRangeError(39);
4733 if(!(%_ClassOf(this)==='Function')){
4734 throw %MakeTypeError(1,%ToString(this),typeof this);
4735 }
4736 if(a!=null&&!(%_IsSpecObject(a))){
4737 throw %MakeTypeError(36,"Function.prototype.apply");
4738 }
4739 return b;
4740 }
4741 function REFLECT_APPLY_PREPARE(a){
4742 var b;
4743 if((%_IsArray(a))){
4744 b=a.length;
4745 if(%_IsSmi(b)&&b>=0&&b<0x800000&&
4746 (%_ClassOf(this)==='Function')){
4747 return b;
4748 }
4749 }
4750 if(!(%_ClassOf(this)==='Function')){
4751 throw %MakeTypeError(2,%ToString(this));
4752 }
4753 if(!(%_IsSpecObject(a))){
4754 throw %MakeTypeError(36,"Reflect.apply");
4755 }
4756 b=%ToLength(a.length);
4757 if(b>0x800000)throw %MakeRangeError(39);
4758 return b;
4759 }
4760 function REFLECT_CONSTRUCT_PREPARE(a,b){
4761 var c;
4762 var d=(%_ClassOf(this)==='Function')&&%IsConstructor(this);
4763 var e=(%_ClassOf(b)==='Function')&&%IsConstructor(b);
4764 if((%_IsArray(a))){
4765 c=a.length;
4766 if(%_IsSmi(c)&&c>=0&&c<0x800000&&
4767 d&&e){
4768 return c;
4769 }
4770 }
4771 if(!d){
4772 if(!(%_ClassOf(this)==='Function')){
4773 throw %MakeTypeError(2,%ToString(this));
4774 }else{
4775 throw %MakeTypeError(13,%ToString(this));
4776 }
4777 }
4778 if(!e){
4779 if(!(%_ClassOf(b)==='Function')){
4780 throw %MakeTypeError(2,%ToString(b));
4781 }else{
4782 throw %MakeTypeError(13,%ToString(b));
4783 }
4784 }
4785 if(!(%_IsSpecObject(a))){
4786 throw %MakeTypeError(36,"Reflect.construct");
4787 }
4788 c=%ToLength(a.length);
4789 if(c>0x800000)throw %MakeRangeError(39);
4790 return c;
4791 }
4792 function STACK_OVERFLOW(a){
4793 throw %MakeRangeError(39);
4794 }
4795 function TO_OBJECT(){
4796 return %ToObject(this);
4797 }
4798 function TO_NUMBER(){
4799 return %ToNumber(this);
4800 }
4801 function TO_STRING(){
4802 return %ToString(this);
4803 }
4804 function TO_NAME(){
4805 return %ToName(this);
4806 }
4807 function ToPrimitive(a,b){
4808 if((typeof(a)==='string'))return a;
4809 if(!(%_IsSpecObject(a)))return a;
4810 if((%_ClassOf(a)==='Symbol'))throw MakeTypeError(30);
4811 if(b==0)b=((%_ClassOf(a)==='Date'))?2:1;
4812 return(b==1)?%DefaultNumber(a):%DefaultString(a);
4813 }
4814 function ToBoolean(a){
4815 if((typeof(a)==='boolean'))return a;
4816 if((typeof(a)==='string'))return a.length!=0;
4817 if(a==null)return false;
4818 if((typeof(a)==='number'))return!((a==0)||(!%_IsSmi(%IS_VAR(a))&&!(a==a)));
4819 return true;
4820 }
4821 function ToNumber(a){
4822 if((typeof(a)==='number'))return a;
4823 if((typeof(a)==='string')){
4824 return %_HasCachedArrayIndex(a)?%_GetCachedArrayIndex(a)
4825 :%StringToNumber(a);
4826 }
4827 if((typeof(a)==='boolean'))return a?1:0;
4828 if((a===(void 0)))return $NaN;
4829 if((typeof(a)==='symbol'))throw MakeTypeError(31);
4830 return((a===null))?0:ToNumber(%DefaultNumber(a));
4831 }
4832 function NonNumberToNumber(a){
4833 if((typeof(a)==='string')){
4834 return %_HasCachedArrayIndex(a)?%_GetCachedArrayIndex(a)
4835 :%StringToNumber(a);
4836 }
4837 if((typeof(a)==='boolean'))return a?1:0;
4838 if((a===(void 0)))return $NaN;
4839 if((typeof(a)==='symbol'))throw MakeTypeError(31);
4840 return((a===null))?0:ToNumber(%DefaultNumber(a));
4841 }
4842 function ToString(a){
4843 if((typeof(a)==='string'))return a;
4844 if((typeof(a)==='number'))return %_NumberToString(a);
4845 if((typeof(a)==='boolean'))return a?'true':'false';
4846 if((a===(void 0)))return'undefined';
4847 if((typeof(a)==='symbol'))throw %MakeTypeError(32);
4848 return((a===null))?'null':%ToString(%DefaultString(a));
4849 }
4850 function NonStringToString(a){
4851 if((typeof(a)==='number'))return %_NumberToString(a);
4852 if((typeof(a)==='boolean'))return a?'true':'false';
4853 if((a===(void 0)))return'undefined';
4854 if((typeof(a)==='symbol'))throw %MakeTypeError(32);
4855 return((a===null))?'null':%ToString(%DefaultString(a));
4856 }
4857 function ToName(a){
4858 return(typeof(a)==='symbol')?a:%ToString(a);
4859 }
4860 function ToObject(a){
4861 if((typeof(a)==='string'))return new $String(a);
4862 if((typeof(a)==='number'))return new $Number(a);
4863 if((typeof(a)==='boolean'))return new $Boolean(a);
4864 if((typeof(a)==='symbol'))return %NewSymbolWrapper(a);
4865 if((a==null)&&!(%_IsUndetectableObject(a))){
4866 throw %MakeTypeError(33);
4867 }
4868 return a;
4869 }
4870 function ToInteger(a){
4871 if(%_IsSmi(a))return a;
4872 return %NumberToInteger(ToNumber(a));
4873 }
4874 function ToLength(a){
4875 a=ToInteger(a);
4876 if(a<0)return 0;
4877 return a<$Number.MAX_SAFE_INTEGER?a:$Number.MAX_SAFE_INTEGER;
4878 }
4879 function ToUint32(a){
4880 if(%_IsSmi(a)&&a>=0)return a;
4881 return %NumberToJSUint32(ToNumber(a));
4882 }
4883 function ToInt32(a){
4884 if(%_IsSmi(a))return a;
4885 return %NumberToJSInt32(ToNumber(a));
4886 }
4887 function SameValue(a,b){
4888 if(typeof a!=typeof b)return false;
4889 if((typeof(a)==='number')){
4890 if((!%_IsSmi(%IS_VAR(a))&&!(a==a))&&(!%_IsSmi(%IS_VAR(b))&&!(b==b)))return true;
4891 if(a===0&&b===0&&%_IsMinusZero(a)!=%_IsMinusZero(b)){
4892 return false;
4893 }
4894 }
4895 return a===b;
4896 }
4897 function SameValueZero(a,b){
4898 if(typeof a!=typeof b)return false;
4899 if((typeof(a)==='number')){
4900 if((!%_IsSmi(%IS_VAR(a))&&!(a==a))&&(!%_IsSmi(%IS_VAR(b))&&!(b==b)))return true;
4901 }
4902 return a===b;
4903 }
4904 function IsPrimitive(a){
4905 return!(%_IsSpecObject(a));
4906 }
4907 function IsConcatSpreadable(a){
4908 if(!(%_IsSpecObject(a)))return false;
4909 var b=a[symbolIsConcatSpreadable];
4910 if((b===(void 0)))return(%_IsArray(a));
4911 return ToBoolean(b);
4912 }
4913 function DefaultNumber(a){
4914 if(!(%_ClassOf(a)==='Symbol')){
4915 var b=a.valueOf;
4916 if((%_ClassOf(b)==='Function')){
4917 var c=%_CallFunction(a,b);
4918 if(%IsPrimitive(c))return c;
4919 }
4920 var d=a.toString;
4921 if((%_ClassOf(d)==='Function')){
4922 var e=%_CallFunction(a,d);
4923 if(%IsPrimitive(e))return e;
4924 }
4925 }
4926 throw %MakeTypeError(4);
4927 }
4928 function DefaultString(a){
4929 if(!(%_ClassOf(a)==='Symbol')){
4930 var b=a.toString;
4931 if((%_ClassOf(b)==='Function')){
4932 var c=%_CallFunction(a,b);
4933 if(%IsPrimitive(c))return c;
4934 }
4935 var d=a.valueOf;
4936 if((%_ClassOf(d)==='Function')){
4937 var e=%_CallFunction(a,d);
4938 if(%IsPrimitive(e))return e;
4939 }
4940 }
4941 throw %MakeTypeError(4);
4942 }
4943 function ToPositiveInteger(a,b){
4944 var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToIntegerMapMinusZero(ToNumber(a)));
4945 if(c<0)throw MakeRangeError(b);
4946 return c;
4947 }
4948 %FunctionSetPrototype($Array,new $Array(0));
4949 function STRING_LENGTH_STUB(a){
4950 var b=this;
4951 return %_StringGetLength(%_JSValueGetValue(b));
4952 }
4953
4954 $v8nativesbè\ 1
4955 var $isNaN=GlobalIsNaN;
4956 var $isFinite=GlobalIsFinite;
4957 function InstallFunctions(a,b,c){
4958 if(c.length>=8){
4959 %OptimizeObjectForAddingMultipleProperties(a,c.length>>1);
4960 }
4961 for(var d=0;d<c.length;d+=2){
4962 var e=c[d];
4963 var g=c[d+1];
4964 %FunctionSetName(g,e);
4965 %FunctionRemovePrototype(g);
4966 %AddNamedProperty(a,e,g,b);
4967 %SetNativeFlag(g);
4968 }
4969 %ToFastProperties(a);
4970 }
4971 function OverrideFunction(a,b,c){
4972 ObjectDefineProperty(a,b,{value:c,
4973 writeable:true,
4974 configurable:true,
4975 enumerable:false});
4976 %FunctionSetName(c,b);
4977 %FunctionRemovePrototype(c);
4978 %SetNativeFlag(c);
4979 }
4980 function InstallGetter(a,b,c,d){
4981 if(typeof d=="undefined"){
4982 d=2;
4983 }
4984 %FunctionSetName(c,b);
4985 %FunctionRemovePrototype(c);
4986 %DefineAccessorPropertyUnchecked(a,b,c,null,d);
4987 %SetNativeFlag(c);
4988 }
4989 function InstallGetterSetter(a,b,c,d){
4990 %FunctionSetName(c,b);
4991 %FunctionSetName(d,b);
4992 %FunctionRemovePrototype(c);
4993 %FunctionRemovePrototype(d);
4994 %DefineAccessorPropertyUnchecked(a,b,c,d,2);
4995 %SetNativeFlag(c);
4996 %SetNativeFlag(d);
4997 }
4998 function InstallConstants(a,b){
4999 if(b.length>=4){
5000 %OptimizeObjectForAddingMultipleProperties(a,b.length>>1);
5001 }
5002 var c=2|4|1;
5003 for(var d=0;d<b.length;d+=2){
5004 var e=b[d];
5005 var g=b[d+1];
5006 %AddNamedProperty(a,e,g,c);
5007 }
5008 %ToFastProperties(a);
5009 }
5010 function SetUpLockedPrototype(a,b,c){
5011 %CheckIsBootstrapping();
5012 var d=a.prototype;
5013 var e=(c.length>>1)+(b?b.length:0);
5014 if(e>=4){
5015 %OptimizeObjectForAddingMultipleProperties(d,e);
5016 }
5017 if(b){
5018 for(var g=0;g<b.length;g++){
5019 %AddNamedProperty(d,b[g],
5020 (void 0),2|4);
5021 }
5022 }
5023 for(var g=0;g<c.length;g+=2){
5024 var h=c[g];
5025 var i=c[g+1];
5026 %AddNamedProperty(d,h,i,2|4|1);
5027 %SetNativeFlag(i);
5028 }
5029 %InternalSetPrototype(d,null);
5030 %ToFastProperties(d);
5031 }
5032 function GlobalIsNaN(a){
5033 if(!(typeof(a)==='number'))a=NonNumberToNumber(a);
5034 return(!%_IsSmi(%IS_VAR(a))&&!(a==a));
5035 }
5036 function GlobalIsFinite(a){
5037 if(!(typeof(a)==='number'))a=NonNumberToNumber(a);
5038 return(%_IsSmi(%IS_VAR(a))||((a==a)&&(a!=1/0)&&(a!=-1/0)));
5039 }
5040 function GlobalParseInt(a,b){
5041 if((b===(void 0))||b===10||b===0){
5042 if(%_IsSmi(a))return a;
5043 if((typeof(a)==='number')&&
5044 ((0.01<a&&a<1e9)||
5045 (-1e9<a&&a<-0.01))){
5046 return a|0;
5047 }
5048 a=((typeof(%IS_VAR(a))==='string')?a:NonStringToString(a));
5049 b=b|0;
5050 }else{
5051 a=((typeof(%IS_VAR(a))==='string')?a:NonStringToString(a));
5052 b=(%_IsSmi(%IS_VAR(b))?b:(b>>0));
5053 if(!(b==0||(2<=b&&b<=36))){
5054 return $NaN;
5055 }
5056 }
5057 if(%_HasCachedArrayIndex(a)&&
5058 (b==0||b==10)){
5059 return %_GetCachedArrayIndex(a);
5060 }
5061 return %StringParseInt(a,b);
5062 }
5063 function GlobalParseFloat(a){
5064 a=((typeof(%IS_VAR(a))==='string')?a:NonStringToString(a));
5065 if(%_HasCachedArrayIndex(a))return %_GetCachedArrayIndex(a);
5066 return %StringParseFloat(a);
5067 }
5068 function GlobalEval(a){
5069 if(!(typeof(a)==='string'))return a;
5070 var b=%GlobalProxy(global);
5071 var c=%CompileString(a,false);
5072 if(!(%_IsFunction(c)))return c;
5073 return %_CallFunction(b,c);
5074 }
5075 function SetUpGlobal(){
5076 %CheckIsBootstrapping();
5077 var a=2|4|1;
5078 %AddNamedProperty(global,"NaN",$NaN,a);
5079 %AddNamedProperty(global,"Infinity",(1/0),a);
5080 %AddNamedProperty(global,"undefined",(void 0),a);
5081 InstallFunctions(global,2,[
5082 "isNaN",GlobalIsNaN,
5083 "isFinite",GlobalIsFinite,
5084 "parseInt",GlobalParseInt,
5085 "parseFloat",GlobalParseFloat,
5086 "eval",GlobalEval
5087 ]);
5088 }
5089 SetUpGlobal();
5090 function NoSideEffectsObjectToString(){
5091 if((this===(void 0))&&!(%_IsUndetectableObject(this)))return"[object Undefined]";
5092 if((this===null))return"[object Null]";
5093 return"[object "+%_ClassOf(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)))+"]";
5094 }
5095 function ObjectToString(){
5096 if((this===(void 0))&&!(%_IsUndetectableObject(this)))return"[object Undefined]";
5097 if((this===null))return"[object Null]";
5098 var a=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
5099 var b=%_ClassOf(a);
5100 var c;
5101 if(harmony_tostring){
5102 var c=a[symbolToStringTag];
5103 if(!(typeof(c)==='string')){
5104 c=b;
5105 }
5106 }else{
5107 c=b;
5108 }
5109 return`[object ${c}]`;
5110 }
5111 function ObjectToLocaleString(){
5112 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Object.prototype.toLocaleString"]);
5113 return this.toString();
5114 }
5115 function ObjectValueOf(){
5116 return((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
5117 }
5118 function ObjectHasOwnProperty(a){
5119 if(%_IsJSProxy(this)){
5120 if((typeof(a)==='symbol'))return false;
5121 var b=%GetHandler(this);
5122 return CallTrap1(b,"hasOwn",$proxyDerivedHasOwnTrap,ToName(a));
5123 }
5124 return %HasOwnProperty(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)),ToName(a));
5125 }
5126 function ObjectIsPrototypeOf(a){
5127 if(!(%_IsSpecObject(a)))return false;
5128 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Object.prototype.isPrototypeOf"]);
5129 return %IsInPrototypeChain(this,a);
5130 }
5131 function ObjectPropertyIsEnumerable(a){
5132 var b=ToName(a);
5133 if(%_IsJSProxy(this)){
5134 if((typeof(a)==='symbol'))return false;
5135 var c=GetOwnPropertyJS(this,b);
5136 return(c===(void 0))?false:c.isEnumerable();
5137 }
5138 return %IsPropertyEnumerable(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)),b);
5139 }
5140 function ObjectDefineGetter(a,b){
5141 var c=this;
5142 if(c==null&&!(%_IsUndetectableObject(c))){
5143 c=%GlobalProxy(global);
5144 }
5145 if(!(%_ClassOf(b)==='Function')){
5146 throw MakeTypeError(16);
5147 }
5148 var d=new PropertyDescriptor();
5149 d.setGet(b);
5150 d.setEnumerable(true);
5151 d.setConfigurable(true);
5152 DefineOwnProperty(((%_IsSpecObject(%IS_VAR(c)))?c:ToObject(c)),ToName(a),d,false);
5153 }
5154 function ObjectLookupGetter(a){
5155 var b=this;
5156 if(b==null&&!(%_IsUndetectableObject(b))){
5157 b=%GlobalProxy(global);
5158 }
5159 return %LookupAccessor(((%_IsSpecObject(%IS_VAR(b)))?b:ToObject(b)),ToName(a),0);
5160 }
5161 function ObjectDefineSetter(a,b){
5162 var c=this;
5163 if(c==null&&!(%_IsUndetectableObject(c))){
5164 c=%GlobalProxy(global);
5165 }
5166 if(!(%_ClassOf(b)==='Function')){
5167 throw MakeTypeError(18);
5168 }
5169 var d=new PropertyDescriptor();
5170 d.setSet(b);
5171 d.setEnumerable(true);
5172 d.setConfigurable(true);
5173 DefineOwnProperty(((%_IsSpecObject(%IS_VAR(c)))?c:ToObject(c)),ToName(a),d,false);
5174 }
5175 function ObjectLookupSetter(a){
5176 var b=this;
5177 if(b==null&&!(%_IsUndetectableObject(b))){
5178 b=%GlobalProxy(global);
5179 }
5180 return %LookupAccessor(((%_IsSpecObject(%IS_VAR(b)))?b:ToObject(b)),ToName(a),1);
5181 }
5182 function ObjectKeys(a){
5183 a=((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a));
5184 if(%_IsJSProxy(a)){
5185 var b=%GetHandler(a);
5186 var c=CallTrap0(b,"keys",$proxyDerivedKeysTrap);
5187 return ToNameArray(c,"keys",false);
5188 }
5189 return %OwnKeys(a);
5190 }
5191 function IsAccessorDescriptor(a){
5192 if((a===(void 0)))return false;
5193 return a.hasGetter()||a.hasSetter();
5194 }
5195 function IsDataDescriptor(a){
5196 if((a===(void 0)))return false;
5197 return a.hasValue()||a.hasWritable();
5198 }
5199 function IsGenericDescriptor(a){
5200 if((a===(void 0)))return false;
5201 return!(IsAccessorDescriptor(a)||IsDataDescriptor(a));
5202 }
5203 function IsInconsistentDescriptor(a){
5204 return IsAccessorDescriptor(a)&&IsDataDescriptor(a);
5205 }
5206 function FromPropertyDescriptor(a){
5207 if((a===(void 0)))return a;
5208 if(IsDataDescriptor(a)){
5209 return{value:a.getValue(),
5210 writable:a.isWritable(),
5211 enumerable:a.isEnumerable(),
5212 configurable:a.isConfigurable()};
5213 }
5214 return{get:a.getGet(),
5215 set:a.getSet(),
5216 enumerable:a.isEnumerable(),
5217 configurable:a.isConfigurable()};
5218 }
5219 function FromGenericPropertyDescriptor(a){
5220 if((a===(void 0)))return a;
5221 var b=new $Object();
5222 if(a.hasValue()){
5223 %AddNamedProperty(b,"value",a.getValue(),0);
5224 }
5225 if(a.hasWritable()){
5226 %AddNamedProperty(b,"writable",a.isWritable(),0);
5227 }
5228 if(a.hasGetter()){
5229 %AddNamedProperty(b,"get",a.getGet(),0);
5230 }
5231 if(a.hasSetter()){
5232 %AddNamedProperty(b,"set",a.getSet(),0);
5233 }
5234 if(a.hasEnumerable()){
5235 %AddNamedProperty(b,"enumerable",a.isEnumerable(),0);
5236 }
5237 if(a.hasConfigurable()){
5238 %AddNamedProperty(b,"configurable",a.isConfigurable(),0);
5239 }
5240 return b;
5241 }
5242 function ToPropertyDescriptor(a){
5243 if(!(%_IsSpecObject(a)))throw MakeTypeError(20,a);
5244 var b=new PropertyDescriptor();
5245 if("enumerable"in a){
5246 b.setEnumerable(ToBoolean(a.enumerable));
5247 }
5248 if("configurable"in a){
5249 b.setConfigurable(ToBoolean(a.configurable));
5250 }
5251 if("value"in a){
5252 b.setValue(a.value);
5253 }
5254 if("writable"in a){
5255 b.setWritable(ToBoolean(a.writable));
5256 }
5257 if("get"in a){
5258 var c=a.get;
5259 if(!(c===(void 0))&&!(%_ClassOf(c)==='Function')){
5260 throw MakeTypeError(17,c);
5261 }
5262 b.setGet(c);
5263 }
5264 if("set"in a){
5265 var d=a.set;
5266 if(!(d===(void 0))&&!(%_ClassOf(d)==='Function')){
5267 throw MakeTypeError(19,d);
5268 }
5269 b.setSet(d);
5270 }
5271 if(IsInconsistentDescriptor(b)){
5272 throw MakeTypeError(34,a);
5273 }
5274 return b;
5275 }
5276 function ToCompletePropertyDescriptor(a){
5277 var b=ToPropertyDescriptor(a);
5278 if(IsGenericDescriptor(b)||IsDataDescriptor(b)){
5279 if(!b.hasValue())b.setValue((void 0));
5280 if(!b.hasWritable())b.setWritable(false);
5281 }else{
5282 if(!b.hasGetter())b.setGet((void 0));
5283 if(!b.hasSetter())b.setSet((void 0));
5284 }
5285 if(!b.hasEnumerable())b.setEnumerable(false);
5286 if(!b.hasConfigurable())b.setConfigurable(false);
5287 return b;
5288 }
5289 function PropertyDescriptor(){
5290 this.value_=(void 0);
5291 this.hasValue_=false;
5292 this.writable_=false;
5293 this.hasWritable_=false;
5294 this.enumerable_=false;
5295 this.hasEnumerable_=false;
5296 this.configurable_=false;
5297 this.hasConfigurable_=false;
5298 this.get_=(void 0);
5299 this.hasGetter_=false;
5300 this.set_=(void 0);
5301 this.hasSetter_=false;
5302 }
5303 SetUpLockedPrototype(PropertyDescriptor,[
5304 "value_",
5305 "hasValue_",
5306 "writable_",
5307 "hasWritable_",
5308 "enumerable_",
5309 "hasEnumerable_",
5310 "configurable_",
5311 "hasConfigurable_",
5312 "get_",
5313 "hasGetter_",
5314 "set_",
5315 "hasSetter_"
5316 ],[
5317 "toString",function PropertyDescriptor_ToString(){
5318 return"[object PropertyDescriptor]";
5319 },
5320 "setValue",function PropertyDescriptor_SetValue(a){
5321 this.value_=a;
5322 this.hasValue_=true;
5323 },
5324 "getValue",function PropertyDescriptor_GetValue(){
5325 return this.value_;
5326 },
5327 "hasValue",function PropertyDescriptor_HasValue(){
5328 return this.hasValue_;
5329 },
5330 "setEnumerable",function PropertyDescriptor_SetEnumerable(a){
5331 this.enumerable_=a;
5332 this.hasEnumerable_=true;
5333 },
5334 "isEnumerable",function PropertyDescriptor_IsEnumerable(){
5335 return this.enumerable_;
5336 },
5337 "hasEnumerable",function PropertyDescriptor_HasEnumerable(){
5338 return this.hasEnumerable_;
5339 },
5340 "setWritable",function PropertyDescriptor_SetWritable(a){
5341 this.writable_=a;
5342 this.hasWritable_=true;
5343 },
5344 "isWritable",function PropertyDescriptor_IsWritable(){
5345 return this.writable_;
5346 },
5347 "hasWritable",function PropertyDescriptor_HasWritable(){
5348 return this.hasWritable_;
5349 },
5350 "setConfigurable",
5351 function PropertyDescriptor_SetConfigurable(a){
5352 this.configurable_=a;
5353 this.hasConfigurable_=true;
5354 },
5355 "hasConfigurable",function PropertyDescriptor_HasConfigurable(){
5356 return this.hasConfigurable_;
5357 },
5358 "isConfigurable",function PropertyDescriptor_IsConfigurable(){
5359 return this.configurable_;
5360 },
5361 "setGet",function PropertyDescriptor_SetGetter(a){
5362 this.get_=a;
5363 this.hasGetter_=true;
5364 },
5365 "getGet",function PropertyDescriptor_GetGetter(){
5366 return this.get_;
5367 },
5368 "hasGetter",function PropertyDescriptor_HasGetter(){
5369 return this.hasGetter_;
5370 },
5371 "setSet",function PropertyDescriptor_SetSetter(a){
5372 this.set_=a;
5373 this.hasSetter_=true;
5374 },
5375 "getSet",function PropertyDescriptor_GetSetter(){
5376 return this.set_;
5377 },
5378 "hasSetter",function PropertyDescriptor_HasSetter(){
5379 return this.hasSetter_;
5380 }
5381 ]);
5382 function ConvertDescriptorArrayToDescriptor(a){
5383 if((a===(void 0))){
5384 return(void 0);
5385 }
5386 var b=new PropertyDescriptor();
5387 if(a[0]){
5388 b.setGet(a[2]);
5389 b.setSet(a[3]);
5390 }else{
5391 b.setValue(a[1]);
5392 b.setWritable(a[4]);
5393 }
5394 b.setEnumerable(a[5]);
5395 b.setConfigurable(a[6]);
5396 return b;
5397 }
5398 function GetTrap(a,b,c){
5399 var d=a[b];
5400 if((d===(void 0))){
5401 if((c===(void 0))){
5402 throw MakeTypeError(24,a,b);
5403 }
5404 d=c;
5405 }else if(!(%_ClassOf(d)==='Function')){
5406 throw MakeTypeError(25,a,b);
5407 }
5408 return d;
5409 }
5410 function CallTrap0(a,b,c){
5411 return %_CallFunction(a,GetTrap(a,b,c));
5412 }
5413 function CallTrap1(a,b,c,d){
5414 return %_CallFunction(a,d,GetTrap(a,b,c));
5415 }
5416 function CallTrap2(a,b,c,d,e){
5417 return %_CallFunction(a,d,e,GetTrap(a,b,c));
5418 }
5419 function GetOwnPropertyJS(a,b){
5420 var c=ToName(b);
5421 if(%_IsJSProxy(a)){
5422 if((typeof(b)==='symbol'))return(void 0);
5423 var d=%GetHandler(a);
5424 var e=CallTrap1(
5425 d,"getOwnPropertyDescriptor",(void 0),c);
5426 if((e===(void 0)))return e;
5427 var g=ToCompletePropertyDescriptor(e);
5428 if(!g.isConfigurable()){
5429 throw MakeTypeError(28,
5430 d,c,"getOwnPropertyDescriptor");
5431 }
5432 return g;
5433 }
5434 var h=%GetOwnProperty(((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a)),c);
5435 return ConvertDescriptorArrayToDescriptor(h);
5436 }
5437 function Delete(a,b,c){
5438 var d=GetOwnPropertyJS(a,b);
5439 if((d===(void 0)))return true;
5440 if(d.isConfigurable()){
5441 %DeleteProperty(a,b,0);
5442 return true;
5443 }else if(c){
5444 throw MakeTypeError(5,b);
5445 }else{
5446 return;
5447 }
5448 }
5449 function GetMethod(a,b){
5450 var c=a[b];
5451 if((c==null))return(void 0);
5452 if((%_ClassOf(c)==='Function'))return c;
5453 throw MakeTypeError(2,typeof c);
5454 }
5455 function DefineProxyProperty(a,b,c,d){
5456 if((typeof(b)==='symbol'))return false;
5457 var e=%GetHandler(a);
5458 var g=CallTrap2(e,"defineProperty",(void 0),b,c);
5459 if(!ToBoolean(g)){
5460 if(d){
5461 throw MakeTypeError(23,
5462 e,"false","defineProperty");
5463 }else{
5464 return false;
5465 }
5466 }
5467 return true;
5468 }
5469 function DefineObjectProperty(a,b,c,d){
5470 var e=%GetOwnProperty(a,ToName(b));
5471 var g=ConvertDescriptorArrayToDescriptor(e);
5472 var h=%IsExtensible(a);
5473 if((g===(void 0))&&!h){
5474 if(d){
5475 throw MakeTypeError(5,b);
5476 }else{
5477 return false;
5478 }
5479 }
5480 if(!(g===(void 0))){
5481 if((IsGenericDescriptor(c)||
5482 IsDataDescriptor(c)==IsDataDescriptor(g))&&
5483 (!c.hasEnumerable()||
5484 SameValue(c.isEnumerable(),g.isEnumerable()))&&
5485 (!c.hasConfigurable()||
5486 SameValue(c.isConfigurable(),g.isConfigurable()))&&
5487 (!c.hasWritable()||
5488 SameValue(c.isWritable(),g.isWritable()))&&
5489 (!c.hasValue()||
5490 SameValue(c.getValue(),g.getValue()))&&
5491 (!c.hasGetter()||
5492 SameValue(c.getGet(),g.getGet()))&&
5493 (!c.hasSetter()||
5494 SameValue(c.getSet(),g.getSet()))){
5495 return true;
5496 }
5497 if(!g.isConfigurable()){
5498 if(c.isConfigurable()||
5499 (c.hasEnumerable()&&
5500 c.isEnumerable()!=g.isEnumerable())){
5501 if(d){
5502 throw MakeTypeError(29,b);
5503 }else{
5504 return false;
5505 }
5506 }
5507 if(!IsGenericDescriptor(c)){
5508 if(IsDataDescriptor(g)!=IsDataDescriptor(c)){
5509 if(d){
5510 throw MakeTypeError(29,b);
5511 }else{
5512 return false;
5513 }
5514 }
5515 if(IsDataDescriptor(g)&&IsDataDescriptor(c)){
5516 if(!g.isWritable()&&c.isWritable()){
5517 if(d){
5518 throw MakeTypeError(29,b);
5519 }else{
5520 return false;
5521 }
5522 }
5523 if(!g.isWritable()&&c.hasValue()&&
5524 !SameValue(c.getValue(),g.getValue())){
5525 if(d){
5526 throw MakeTypeError(29,b);
5527 }else{
5528 return false;
5529 }
5530 }
5531 }
5532 if(IsAccessorDescriptor(c)&&IsAccessorDescriptor(g)){
5533 if(c.hasSetter()&&!SameValue(c.getSet(),g.getSet())){
5534 if(d){
5535 throw MakeTypeError(29,b);
5536 }else{
5537 return false;
5538 }
5539 }
5540 if(c.hasGetter()&&!SameValue(c.getGet(),g.getGet())){
5541 if(d){
5542 throw MakeTypeError(29,b);
5543 }else{
5544 return false;
5545 }
5546 }
5547 }
5548 }
5549 }
5550 }
5551 var i=0;
5552 if(c.hasEnumerable()){
5553 i|=c.isEnumerable()?0:2;
5554 }else if(!(g===(void 0))){
5555 i|=g.isEnumerable()?0:2;
5556 }else{
5557 i|=2;
5558 }
5559 if(c.hasConfigurable()){
5560 i|=c.isConfigurable()?0:4;
5561 }else if(!(g===(void 0))){
5562 i|=g.isConfigurable()?0:4;
5563 }else
5564 i|=4;
5565 if(IsDataDescriptor(c)||
5566 (IsGenericDescriptor(c)&&
5567 ((g===(void 0))||IsDataDescriptor(g)))){
5568 if(c.hasWritable()){
5569 i|=c.isWritable()?0:1;
5570 }else if(!(g===(void 0))){
5571 i|=g.isWritable()?0:1;
5572 }else{
5573 i|=1;
5574 }
5575 var j=(void 0);
5576 if(c.hasValue()){
5577 j=c.getValue();
5578 }else if(!(g===(void 0))&&IsDataDescriptor(g)){
5579 j=g.getValue();
5580 }
5581 %DefineDataPropertyUnchecked(a,b,j,i);
5582 }else{
5583 var k=null;
5584 if(c.hasGetter()){
5585 k=c.getGet();
5586 }else if(IsAccessorDescriptor(g)&&g.hasGetter()){
5587 k=g.getGet();
5588 }
5589 var l=null;
5590 if(c.hasSetter()){
5591 l=c.getSet();
5592 }else if(IsAccessorDescriptor(g)&&g.hasSetter()){
5593 l=g.getSet();
5594 }
5595 %DefineAccessorPropertyUnchecked(a,b,k,l,i);
5596 }
5597 return true;
5598 }
5599 function DefineArrayProperty(a,b,c,d){
5600 if(b==="length"){
5601 var e=a.length;
5602 var g=e;
5603 if(!c.hasValue()){
5604 return DefineObjectProperty(a,"length",c,d);
5605 }
5606 var h=ToUint32(c.getValue());
5607 if(h!=ToNumber(c.getValue())){
5608 throw MakeRangeError(37);
5609 }
5610 var i=GetOwnPropertyJS(a,"length");
5611 if(h!=e&&!i.isWritable()){
5612 if(d){
5613 throw MakeTypeError(29,b);
5614 }else{
5615 return false;
5616 }
5617 }
5618 var j=false;
5619 var k=%IsObserved(a)&&h!==g;
5620 var l;
5621 if(k){
5622 $observeBeginPerformSplice(a);
5623 l=[];
5624 if(h<g)
5625 l.length=g-h;
5626 }
5627 while(h<e--){
5628 var m=ToString(e);
5629 if(k){
5630 var n=GetOwnPropertyJS(a,m);
5631 if(n&&n.hasValue())
5632 l[e-h]=n.getValue();
5633 }
5634 if(!Delete(a,m,false)){
5635 h=e+1;
5636 j=true;
5637 break;
5638 }
5639 }
5640 j=!DefineObjectProperty(a,"length",c,d)||j;
5641 if(k){
5642 $observeEndPerformSplice(a);
5643 $observeEnqueueSpliceRecord(a,
5644 h<g?h:g,
5645 l,
5646 h>g?h-g:0);
5647 }
5648 if(j){
5649 if(d){
5650 throw MakeTypeError(29,b);
5651 }else{
5652 return false;
5653 }
5654 }
5655 return true;
5656 }
5657 if(!(typeof(b)==='symbol')){
5658 var m=ToUint32(b);
5659 var k=false;
5660 if(ToString(m)==b&&m!=4294967295){
5661 var e=a.length;
5662 if(m>=e&&%IsObserved(a)){
5663 k=true;
5664 $observeBeginPerformSplice(a);
5665 }
5666 var i=GetOwnPropertyJS(a,"length");
5667 if((m>=e&&!i.isWritable())||
5668 !DefineObjectProperty(a,b,c,true)){
5669 if(k)
5670 $observeEndPerformSplice(a);
5671 if(d){
5672 throw MakeTypeError(5,b);
5673 }else{
5674 return false;
5675 }
5676 }
5677 if(m>=e){
5678 a.length=m+1;
5679 }
5680 if(k){
5681 $observeEndPerformSplice(a);
5682 $observeEnqueueSpliceRecord(a,e,[],m+1-e);
5683 }
5684 return true;
5685 }
5686 }
5687 return DefineObjectProperty(a,b,c,d);
5688 }
5689 function DefineOwnProperty(a,b,c,d){
5690 if(%_IsJSProxy(a)){
5691 if((typeof(b)==='symbol'))return false;
5692 var e=FromGenericPropertyDescriptor(c);
5693 return DefineProxyProperty(a,b,e,d);
5694 }else if((%_IsArray(a))){
5695 return DefineArrayProperty(a,b,c,d);
5696 }else{
5697 return DefineObjectProperty(a,b,c,d);
5698 }
5699 }
5700 function ObjectGetPrototypeOf(a){
5701 return %_GetPrototype(((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a)));
5702 }
5703 function ObjectSetPrototypeOf(a,b){
5704 if((a==null)&&!(%_IsUndetectableObject(a)))throw MakeTypeError('called_on_null_or_undefined',["Object.setPrototypeOf"]);
5705 if(b!==null&&!(%_IsSpecObject(b))){
5706 throw MakeTypeError(22,b);
5707 }
5708 if((%_IsSpecObject(a))){
5709 %SetPrototype(a,b);
5710 }
5711 return a;
5712 }
5713 function ObjectGetOwnPropertyDescriptor(a,b){
5714 var c=GetOwnPropertyJS(((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a)),b);
5715 return FromPropertyDescriptor(c);
5716 }
5717 function ToNameArray(a,b,c){
5718 if(!(%_IsSpecObject(a))){
5719 throw MakeTypeError(26,b,a);
5720 }
5721 var d=ToUint32(a.length);
5722 var e=new $Array(d);
5723 var g=0;
5724 var h={__proto__:null};
5725 for(var i=0;i<d;i++){
5726 var j=ToName(a[i]);
5727 if((typeof(j)==='symbol')&&!c)continue;
5728 if(%HasOwnProperty(h,j)){
5729 throw MakeTypeError(27,b,j);
5730 }
5731 e[i]=j;
5732 ++g;
5733 h[j]=0;
5734 }
5735 e.length=g;
5736 return e;
5737 }
5738 function ObjectGetOwnPropertyKeys(a,b){
5739 var c=new InternalArray();
5740 b|=32;
5741 var d=%GetInterceptorInfo(a);
5742 if((b&8)===0){
5743 var e=%GetOwnElementNames(a);
5744 for(var g=0;g<e.length;++g){
5745 e[g]=%_NumberToString(e[g]);
5746 }
5747 c.push(e);
5748 if((d&1)!=0){
5749 var h=%GetIndexedInterceptorElementNames(a);
5750 if(!(h===(void 0))){
5751 c.push(h);
5752 }
5753 }
5754 }
5755 c.push(%GetOwnPropertyNames(a,b));
5756 if((d&2)!=0){
5757 var i=
5758 %GetNamedInterceptorPropertyNames(a);
5759 if(!(i===(void 0))){
5760 c.push(i);
5761 }
5762 }
5763 var j=
5764 %Apply(InternalArray.prototype.concat,
5765 c[0],c,1,c.length-1);
5766 if(d!=0){
5767 var k={__proto__:null};
5768 var l=0;
5769 for(var g=0;g<j.length;++g){
5770 var m=j[g];
5771 if((typeof(m)==='symbol')){
5772 if((b&16)||(%SymbolIsPrivate(m))){
5773 continue;
5774 }
5775 }else{
5776 if(b&8)continue;
5777 m=ToString(m);
5778 }
5779 if(k[m])continue;
5780 k[m]=true;
5781 j[l++]=m;
5782 }
5783 j.length=l;
5784 }
5785 return j;
5786 }
5787 function ObjectGetOwnPropertyNames(a){
5788 a=((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a));
5789 if(%_IsJSProxy(a)){
5790 var b=%GetHandler(a);
5791 var c=CallTrap0(b,"getOwnPropertyNames",(void 0));
5792 return ToNameArray(c,"getOwnPropertyNames",false);
5793 }
5794 return ObjectGetOwnPropertyKeys(a,16);
5795 }
5796 function ObjectCreate(a,b){
5797 if(!(%_IsSpecObject(a))&&a!==null){
5798 throw MakeTypeError(22,a);
5799 }
5800 var c={};
5801 %InternalSetPrototype(c,a);
5802 if(!(b===(void 0)))ObjectDefineProperties(c,b);
5803 return c;
5804 }
5805 function ObjectDefineProperty(a,b,c){
5806 if(!(%_IsSpecObject(a))){
5807 throw MakeTypeError(3,"Object.defineProperty");
5808 }
5809 var d=ToName(b);
5810 if(%_IsJSProxy(a)){
5811 var e={__proto__:null};
5812 for(var g in c){
5813 e[g]=c[g];
5814 }
5815 DefineProxyProperty(a,d,e,true);
5816 }else{
5817 var h=ToPropertyDescriptor(c);
5818 DefineOwnProperty(a,d,h,true);
5819 }
5820 return a;
5821 }
5822 function GetOwnEnumerablePropertyNames(a){
5823 var b=new InternalArray();
5824 for(var c in a){
5825 if(%HasOwnProperty(a,c)){
5826 b.push(c);
5827 }
5828 }
5829 var d=8|32;
5830 var e=%GetOwnPropertyNames(a,d);
5831 for(var g=0;g<e.length;++g){
5832 var h=e[g];
5833 if((typeof(h)==='symbol')){
5834 var i=ObjectGetOwnPropertyDescriptor(a,h);
5835 if(i.enumerable)b.push(h);
5836 }
5837 }
5838 return b;
5839 }
5840 function ObjectDefineProperties(a,b){
5841 if(!(%_IsSpecObject(a))){
5842 throw MakeTypeError(3,"Object.defineProperties");
5843 }
5844 var c=((%_IsSpecObject(%IS_VAR(b)))?b:ToObject(b));
5845 var d=GetOwnEnumerablePropertyNames(c);
5846 var e=new InternalArray();
5847 for(var g=0;g<d.length;g++){
5848 e.push(ToPropertyDescriptor(c[d[g]]));
5849 }
5850 for(var g=0;g<d.length;g++){
5851 DefineOwnProperty(a,d[g],e[g],true);
5852 }
5853 return a;
5854 }
5855 function ProxyFix(a){
5856 var b=%GetHandler(a);
5857 var c=CallTrap0(b,"fix",(void 0));
5858 if((c===(void 0))){
5859 throw MakeTypeError(23,b,"undefined","fix");
5860 }
5861 if(%IsJSFunctionProxy(a)){
5862 var d=%GetCallTrap(a);
5863 var e=%GetConstructTrap(a);
5864 var g=$proxyDelegateCallAndConstruct(d,e);
5865 %Fix(a);
5866 %SetCode(a,g);
5867 var h=new $Object();
5868 $Object.defineProperty(h,"constructor",
5869 {value:a,writable:true,enumerable:false,configurable:true});
5870 %FunctionSetPrototype(a,h);
5871 a.length=0;
5872 }else{
5873 %Fix(a);
5874 }
5875 ObjectDefineProperties(a,c);
5876 }
5877 function ObjectSealJS(a){
5878 if(!(%_IsSpecObject(a))){
5879 throw MakeTypeError(3,"Object.seal");
5880 }
5881 var b=%_IsJSProxy(a);
5882 if(b||%HasSloppyArgumentsElements(a)||%IsObserved(a)){
5883 if(b){
5884 ProxyFix(a);
5885 }
5886 var c=ObjectGetOwnPropertyNames(a);
5887 for(var d=0;d<c.length;d++){
5888 var e=c[d];
5889 var g=GetOwnPropertyJS(a,e);
5890 if(g.isConfigurable()){
5891 g.setConfigurable(false);
5892 DefineOwnProperty(a,e,g,true);
5893 }
5894 }
5895 %PreventExtensions(a);
5896 }else{
5897 %ObjectSeal(a);
5898 }
5899 return a;
5900 }
5901 function ObjectFreezeJS(a){
5902 if(!(%_IsSpecObject(a))){
5903 throw MakeTypeError(3,"Object.freeze");
5904 }
5905 var b=%_IsJSProxy(a);
5906 if(b||%HasSloppyArgumentsElements(a)||%IsObserved(a)){
5907 if(b){
5908 ProxyFix(a);
5909 }
5910 var c=ObjectGetOwnPropertyNames(a);
5911 for(var d=0;d<c.length;d++){
5912 var e=c[d];
5913 var g=GetOwnPropertyJS(a,e);
5914 if(g.isWritable()||g.isConfigurable()){
5915 if(IsDataDescriptor(g))g.setWritable(false);
5916 g.setConfigurable(false);
5917 DefineOwnProperty(a,e,g,true);
5918 }
5919 }
5920 %PreventExtensions(a);
5921 }else{
5922 %ObjectFreeze(a);
5923 }
5924 return a;
5925 }
5926 function ObjectPreventExtension(a){
5927 if(!(%_IsSpecObject(a))){
5928 throw MakeTypeError(3,"Object.preventExtension");
5929 }
5930 if(%_IsJSProxy(a)){
5931 ProxyFix(a);
5932 }
5933 %PreventExtensions(a);
5934 return a;
5935 }
5936 function ObjectIsSealed(a){
5937 if(!(%_IsSpecObject(a))){
5938 throw MakeTypeError(3,"Object.isSealed");
5939 }
5940 if(%_IsJSProxy(a)){
5941 return false;
5942 }
5943 if(%IsExtensible(a)){
5944 return false;
5945 }
5946 var b=ObjectGetOwnPropertyNames(a);
5947 for(var c=0;c<b.length;c++){
5948 var d=b[c];
5949 var e=GetOwnPropertyJS(a,d);
5950 if(e.isConfigurable()){
5951 return false;
5952 }
5953 }
5954 return true;
5955 }
5956 function ObjectIsFrozen(a){
5957 if(!(%_IsSpecObject(a))){
5958 throw MakeTypeError(3,"Object.isFrozen");
5959 }
5960 if(%_IsJSProxy(a)){
5961 return false;
5962 }
5963 if(%IsExtensible(a)){
5964 return false;
5965 }
5966 var b=ObjectGetOwnPropertyNames(a);
5967 for(var c=0;c<b.length;c++){
5968 var d=b[c];
5969 var e=GetOwnPropertyJS(a,d);
5970 if(IsDataDescriptor(e)&&e.isWritable())return false;
5971 if(e.isConfigurable())return false;
5972 }
5973 return true;
5974 }
5975 function ObjectIsExtensible(a){
5976 if(!(%_IsSpecObject(a))){
5977 throw MakeTypeError(3,"Object.isExtensible");
5978 }
5979 if(%_IsJSProxy(a)){
5980 return true;
5981 }
5982 return %IsExtensible(a);
5983 }
5984 function ObjectIs(a,b){
5985 return SameValue(a,b);
5986 }
5987 function ObjectGetProto(){
5988 return %_GetPrototype(((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this)));
5989 }
5990 function ObjectSetProto(a){
5991 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Object.prototype.__proto__"]);
5992 if(((%_IsSpecObject(a))||(a===null))&&(%_IsSpecObject(this))){
5993 %SetPrototype(this,a);
5994 }
5995 }
5996 function ObjectConstructor(a){
5997 if(%_IsConstructCall()){
5998 if(a==null)return this;
5999 return((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a));
6000 }else{
6001 if(a==null)return{};
6002 return((%_IsSpecObject(%IS_VAR(a)))?a:ToObject(a));
6003 }
6004 }
6005 function SetUpObject(){
6006 %CheckIsBootstrapping();
6007 %SetNativeFlag($Object);
6008 %SetCode($Object,ObjectConstructor);
6009 %AddNamedProperty($Object.prototype,"constructor",$Object,2);
6010 InstallFunctions($Object.prototype,2,[
6011 "toString",ObjectToString,
6012 "toLocaleString",ObjectToLocaleString,
6013 "valueOf",ObjectValueOf,
6014 "hasOwnProperty",ObjectHasOwnProperty,
6015 "isPrototypeOf",ObjectIsPrototypeOf,
6016 "propertyIsEnumerable",ObjectPropertyIsEnumerable,
6017 "__defineGetter__",ObjectDefineGetter,
6018 "__lookupGetter__",ObjectLookupGetter,
6019 "__defineSetter__",ObjectDefineSetter,
6020 "__lookupSetter__",ObjectLookupSetter
6021 ]);
6022 InstallGetterSetter($Object.prototype,"__proto__",
6023 ObjectGetProto,ObjectSetProto);
6024 InstallFunctions($Object,2,[
6025 "keys",ObjectKeys,
6026 "create",ObjectCreate,
6027 "defineProperty",ObjectDefineProperty,
6028 "defineProperties",ObjectDefineProperties,
6029 "freeze",ObjectFreezeJS,
6030 "getPrototypeOf",ObjectGetPrototypeOf,
6031 "setPrototypeOf",ObjectSetPrototypeOf,
6032 "getOwnPropertyDescriptor",ObjectGetOwnPropertyDescriptor,
6033 "getOwnPropertyNames",ObjectGetOwnPropertyNames,
6034 "is",ObjectIs,
6035 "isExtensible",ObjectIsExtensible,
6036 "isFrozen",ObjectIsFrozen,
6037 "isSealed",ObjectIsSealed,
6038 "preventExtensions",ObjectPreventExtension,
6039 "seal",ObjectSealJS
6040 ]);
6041 }
6042 SetUpObject();
6043 function BooleanConstructor(a){
6044 if(%_IsConstructCall()){
6045 %_SetValueOf(this,ToBoolean(a));
6046 }else{
6047 return ToBoolean(a);
6048 }
6049 }
6050 function BooleanToString(){
6051 var a=this;
6052 if(!(typeof(a)==='boolean')){
6053 if(!(%_ClassOf(a)==='Boolean')){
6054 throw MakeTypeError(14,'Boolean.prototype.toString');
6055 }
6056 a=%_ValueOf(a);
6057 }
6058 return a?'true':'false';
6059 }
6060 function BooleanValueOf(){
6061 if(!(typeof(this)==='boolean')&&!(%_ClassOf(this)==='Boolean')){
6062 throw MakeTypeError(14,'Boolean.prototype.valueOf');
6063 }
6064 return %_ValueOf(this);
6065 }
6066 function SetUpBoolean(){
6067 %CheckIsBootstrapping();
6068 %SetCode($Boolean,BooleanConstructor);
6069 %FunctionSetPrototype($Boolean,new $Boolean(false));
6070 %AddNamedProperty($Boolean.prototype,"constructor",$Boolean,2);
6071 InstallFunctions($Boolean.prototype,2,[
6072 "toString",BooleanToString,
6073 "valueOf",BooleanValueOf
6074 ]);
6075 }
6076 SetUpBoolean();
6077 function NumberConstructor(a){
6078 var b=%_ArgumentsLength()==0?0:ToNumber(a);
6079 if(%_IsConstructCall()){
6080 %_SetValueOf(this,b);
6081 }else{
6082 return b;
6083 }
6084 }
6085 function NumberToStringJS(a){
6086 var b=this;
6087 if(!(typeof(this)==='number')){
6088 if(!(%_ClassOf(this)==='Number')){
6089 throw MakeTypeError(14,'Number.prototype.toString');
6090 }
6091 b=%_ValueOf(this);
6092 }
6093 if((a===(void 0))||a===10){
6094 return %_NumberToString(b);
6095 }
6096 a=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
6097 if(a<2||a>36){
6098 throw new $RangeError('toString() radix argument must be between 2 and 36');
6099 }
6100 return %NumberToRadixString(b,a);
6101 }
6102 function NumberToLocaleString(){
6103 return %_CallFunction(this,NumberToStringJS);
6104 }
6105 function NumberValueOf(){
6106 if(!(typeof(this)==='number')&&!(%_ClassOf(this)==='Number')){
6107 throw MakeTypeError(14,'Number.prototype.valueOf');
6108 }
6109 return %_ValueOf(this);
6110 }
6111 function NumberToFixedJS(a){
6112 var b=this;
6113 if(!(typeof(this)==='number')){
6114 if(!(%_ClassOf(this)==='Number')){
6115 throw MakeTypeError(8,
6116 "Number.prototype.toFixed",this);
6117 }
6118 b=%_ValueOf(this);
6119 }
6120 var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
6121 if(c<0||c>20){
6122 throw MakeRangeError(38,"toFixed() digits");
6123 }
6124 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
6125 if(b==(1/0))return"Infinity";
6126 if(b==-(1/0))return"-Infinity";
6127 return %NumberToFixed(b,c);
6128 }
6129 function NumberToExponentialJS(a){
6130 var b=this;
6131 if(!(typeof(this)==='number')){
6132 if(!(%_ClassOf(this)==='Number')){
6133 throw MakeTypeError(8,
6134 "Number.prototype.toExponential",this);
6135 }
6136 b=%_ValueOf(this);
6137 }
6138 var c=(a===(void 0))?(void 0):(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
6139 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
6140 if(b==(1/0))return"Infinity";
6141 if(b==-(1/0))return"-Infinity";
6142 if((c===(void 0))){
6143 c=-1;
6144 }else if(c<0||c>20){
6145 throw MakeRangeError(38,"toExponential()");
6146 }
6147 return %NumberToExponential(b,c);
6148 }
6149 function NumberToPrecisionJS(a){
6150 var b=this;
6151 if(!(typeof(this)==='number')){
6152 if(!(%_ClassOf(this)==='Number')){
6153 throw MakeTypeError(8,
6154 "Number.prototype.toPrecision",this);
6155 }
6156 b=%_ValueOf(this);
6157 }
6158 if((a===(void 0)))return ToString(%_ValueOf(this));
6159 var c=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
6160 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return"NaN";
6161 if(b==(1/0))return"Infinity";
6162 if(b==-(1/0))return"-Infinity";
6163 if(c<1||c>21){
6164 throw MakeRangeError(40);
6165 }
6166 return %NumberToPrecision(b,c);
6167 }
6168 function NumberIsFinite(a){
6169 return(typeof(a)==='number')&&(%_IsSmi(%IS_VAR(a))||((a==a)&&(a!=1/0)&&(a!=-1/0)));
6170 }
6171 function NumberIsInteger(a){
6172 return NumberIsFinite(a)&&(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)))==a;
6173 }
6174 function NumberIsNaN(a){
6175 return(typeof(a)==='number')&&(!%_IsSmi(%IS_VAR(a))&&!(a==a));
6176 }
6177 function NumberIsSafeInteger(a){
6178 if(NumberIsFinite(a)){
6179 var b=(%_IsSmi(%IS_VAR(a))?a:%NumberToInteger(ToNumber(a)));
6180 if(b==a)return $abs(b)<=$Number.MAX_SAFE_INTEGER;
6181 }
6182 return false;
6183 }
6184 function SetUpNumber(){
6185 %CheckIsBootstrapping();
6186 %SetCode($Number,NumberConstructor);
6187 %FunctionSetPrototype($Number,new $Number(0));
6188 %OptimizeObjectForAddingMultipleProperties($Number.prototype,8);
6189 %AddNamedProperty($Number.prototype,"constructor",$Number,2);
6190 InstallConstants($Number,[
6191 "MAX_VALUE",1.7976931348623157e+308,
6192 "MIN_VALUE",5e-324,
6193 "NaN",$NaN,
6194 "NEGATIVE_INFINITY",-(1/0),
6195 "POSITIVE_INFINITY",(1/0),
6196 "MAX_SAFE_INTEGER",%_MathPow(2,53)-1,
6197 "MIN_SAFE_INTEGER",-%_MathPow(2,53)+1,
6198 "EPSILON",%_MathPow(2,-52)
6199 ]);
6200 InstallFunctions($Number.prototype,2,[
6201 "toString",NumberToStringJS,
6202 "toLocaleString",NumberToLocaleString,
6203 "valueOf",NumberValueOf,
6204 "toFixed",NumberToFixedJS,
6205 "toExponential",NumberToExponentialJS,
6206 "toPrecision",NumberToPrecisionJS
6207 ]);
6208 InstallFunctions($Number,2,[
6209 "isFinite",NumberIsFinite,
6210 "isInteger",NumberIsInteger,
6211 "isNaN",NumberIsNaN,
6212 "isSafeInteger",NumberIsSafeInteger,
6213 "parseInt",GlobalParseInt,
6214 "parseFloat",GlobalParseFloat
6215 ]);
6216 %SetInlineBuiltinFlag(NumberIsNaN);
6217 }
6218 SetUpNumber();
6219 function FunctionSourceString(a){
6220 while(%IsJSFunctionProxy(a)){
6221 a=%GetCallTrap(a);
6222 }
6223 if(!(%_IsFunction(a))){
6224 throw MakeTypeError(14,'Function.prototype.toString');
6225 }
6226 var b=%ClassGetSourceCode(a);
6227 if((typeof(b)==='string')){
6228 return b;
6229 }
6230 var c=%FunctionGetSourceCode(a);
6231 if(!(typeof(c)==='string')||%FunctionIsBuiltin(a)){
6232 var d=%FunctionGetName(a);
6233 if(d){
6234 return'function '+d+'() { [native code] }';
6235 }else{
6236 return'function () { [native code] }';
6237 }
6238 }
6239 if(%FunctionIsArrow(a)){
6240 return c;
6241 }
6242 var d=%FunctionNameShouldPrintAsAnonymous(a)
6243 ?'anonymous'
6244 :%FunctionGetName(a);
6245 var e=%FunctionIsGenerator(a);
6246 var g=%FunctionIsConciseMethod(a)
6247 ?(e?'*':'')
6248 :(e?'function* ':'function ');
6249 return g+d+c;
6250 }
6251 function FunctionToString(){
6252 return FunctionSourceString(this);
6253 }
6254 function FunctionBind(a){
6255 if(!(%_ClassOf(this)==='Function'))throw MakeTypeError(7);
6256 var b=function(){
6257 "use strict";
6258 if(%_IsConstructCall()){
6259 return %NewObjectFromBound(b);
6260 }
6261 var c=%BoundFunctionGetBindings(b);
6262 var d=%_ArgumentsLength();
6263 if(d==0){
6264 return %Apply(c[0],c[1],c,2,c.length-2);
6265 }
6266 if(c.length===2){
6267 return %Apply(c[0],c[1],arguments,0,d);
6268 }
6269 var e=c.length-2;
6270 var g=new InternalArray(e+d);
6271 for(var h=0;h<e;h++){
6272 g[h]=c[h+2];
6273 }
6274 for(var i=0;i<d;i++){
6275 g[h++]=%_Arguments(i);
6276 }
6277 return %Apply(c[0],c[1],g,0,e+d);
6278 };
6279 var j=0;
6280 var k=this.length;
6281 if((typeof k==="number")&&
6282 ((k>>>0)===k)){
6283 var d=%_ArgumentsLength();
6284 if(d>0)d--;
6285 j=k-d;
6286 if(j<0)j=0;
6287 }
6288 var l=%FunctionBindArguments(b,this,
6289 a,j);
6290 return l;
6291 }
6292 function NewFunctionString(a,b){
6293 var c=a.length;
6294 var d='';
6295 if(c>1){
6296 d=ToString(a[0]);
6297 for(var e=1;e<c-1;e++){
6298 d+=','+ToString(a[e]);
6299 }
6300 if(%_CallFunction(d,')',$stringIndexOf)!=-1){
6301 throw MakeSyntaxError(41);
6302 }
6303 d+='\n/'+'**/';
6304 }
6305 var g=(c>0)?ToString(a[c-1]):'';
6306 return'('+b+'('+d+') {\n'+g+'\n})';
6307 }
6308 function FunctionConstructor(a){
6309 var b=NewFunctionString(arguments,'function');
6310 var c=%GlobalProxy(global);
6311 var d=%_CallFunction(c,%CompileString(b,true));
6312 %FunctionMarkNameShouldPrintAsAnonymous(d);
6313 return d;
6314 }
6315 function SetUpFunction(){
6316 %CheckIsBootstrapping();
6317 %SetCode($Function,FunctionConstructor);
6318 %AddNamedProperty($Function.prototype,"constructor",$Function,2);
6319 InstallFunctions($Function.prototype,2,[
6320 "bind",FunctionBind,
6321 "toString",FunctionToString
6322 ]);
6323 }
6324 SetUpFunction();
6325 function GetIterator(a,b){
6326 if((b===(void 0))){
6327 b=a[symbolIterator];
6328 }
6329 if(!(%_ClassOf(b)==='Function')){
6330 throw MakeTypeError(15,a);
6331 }
6332 var c=%_CallFunction(a,b);
6333 if(!(%_IsSpecObject(c))){
6334 throw MakeTypeError(12,c);
6335 }
6336 return c;
6337 }
6338
6339 \18symbol­\19
6340 var $symbolToString;
6341 (function(){
6342 "use strict";
6343 %CheckIsBootstrapping();
6344 var a=global.Object;
6345 var b=global.Symbol;
6346 function SymbolConstructor(c){
6347 if(%_IsConstructCall())throw MakeTypeError(13,"Symbol");
6348 return %CreateSymbol((c===(void 0))?c:ToString(c));
6349 }
6350 function SymbolToString(){
6351 if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
6352 throw MakeTypeError(8,
6353 "Symbol.prototype.toString",this);
6354 }
6355 var d=%SymbolDescription(%_ValueOf(this));
6356 return"Symbol("+((d===(void 0))?"":d)+")";
6357 }
6358 function SymbolValueOf(){
6359 if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
6360 throw MakeTypeError(8,
6361 "Symbol.prototype.valueOf",this);
6362 }
6363 return %_ValueOf(this);
6364 }
6365 function SymbolFor(e){
6366 e=((typeof(%IS_VAR(e))==='string')?e:NonStringToString(e));
6367 var g=%SymbolRegistry();
6368 if((g.for[e]===(void 0))){
6369 var h=%CreateSymbol(e);
6370 g.for[e]=h;
6371 g.keyFor[h]=e;
6372 }
6373 return g.for[e];
6374 }
6375 function SymbolKeyFor(h){
6376 if(!(typeof(h)==='symbol'))throw MakeTypeError("not_a_symbol",[h]);
6377 return %SymbolRegistry().keyFor[h];
6378 }
6379 function ObjectGetOwnPropertySymbols(i){
6380 i=ToObject(i);
6381 return ObjectGetOwnPropertyKeys(i,8);
6382 }
6383 %SetCode(b,SymbolConstructor);
6384 %FunctionSetPrototype(b,new a());
6385 InstallConstants(b,[
6386 "iterator",symbolIterator,
6387 "unscopables",symbolUnscopables
6388 ]);
6389 InstallFunctions(b,2,[
6390 "for",SymbolFor,
6391 "keyFor",SymbolKeyFor
6392 ]);
6393 %AddNamedProperty(
6394 b.prototype,"constructor",b,2);
6395 %AddNamedProperty(
6396 b.prototype,symbolToStringTag,"Symbol",2|1);
6397 InstallFunctions(b.prototype,2,[
6398 "toString",SymbolToString,
6399 "valueOf",SymbolValueOf
6400 ]);
6401 InstallFunctions(a,2,[
6402 "getOwnPropertySymbols",ObjectGetOwnPropertySymbols
6403 ]);
6404 $symbolToString=SymbolToString;
6405 })();
6406
6407 \14array¾\85\ 1
6408 var $arrayConcat;
6409 var $arrayJoin;
6410 var $arrayPush;
6411 var $arrayPop;
6412 var $arrayShift;
6413 var $arraySlice;
6414 var $arraySplice;
6415 var $arrayUnshift;
6416 (function(){
6417 "use strict";
6418 %CheckIsBootstrapping();
6419 var a=global.Array;
6420 var b=new InternalArray();
6421 function GetSortedArrayKeys(c,d){
6422 var e=new InternalArray();
6423 if((typeof(d)==='number')){
6424 var g=d;
6425 for(var h=0;h<g;++h){
6426 var i=c[h];
6427 if(!(i===(void 0))||h in c){
6428 e.push(h);
6429 }
6430 }
6431 }else{
6432 var j=d.length;
6433 for(var k=0;k<j;++k){
6434 var l=d[k];
6435 if(!(l===(void 0))){
6436 var i=c[l];
6437 if(!(i===(void 0))||l in c){
6438 e.push(l);
6439 }
6440 }
6441 }
6442 %_CallFunction(e,function(m,n){return m-n;},ArraySort);
6443 }
6444 return e;
6445 }
6446 function SparseJoinWithSeparatorJS(c,o,q,r){
6447 var e=GetSortedArrayKeys(c,%GetArrayKeys(c,o));
6448 var t=0;
6449 var u=new InternalArray(e.length*2);
6450 var w=-1;
6451 for(var h=0;h<e.length;h++){
6452 var l=e[h];
6453 if(l!=w){
6454 var i=c[l];
6455 if(!(typeof(i)==='string'))i=q(i);
6456 u[h*2]=l;
6457 u[h*2+1]=i;
6458 w=l;
6459 }
6460 }
6461 return %SparseJoinWithSeparator(u,o,r);
6462 }
6463 function SparseJoin(c,o,q){
6464 var e=GetSortedArrayKeys(c,%GetArrayKeys(c,o));
6465 var z=-1;
6466 var A=e.length;
6467 var u=new InternalArray(A);
6468 var B=0;
6469 for(var h=0;h<A;h++){
6470 var l=e[h];
6471 if(l!=z){
6472 var i=c[l];
6473 if(!(typeof(i)==='string'))i=q(i);
6474 u[B++]=i;
6475 z=l;
6476 }
6477 }
6478 return %StringBuilderConcat(u,B,'');
6479 }
6480 function UseSparseVariant(c,j,C,D){
6481 if(!C||j<1000||%IsObserved(c)||
6482 %HasComplexElements(c)){
6483 return false;
6484 }
6485 if(!%_IsSmi(j)){
6486 return true;
6487 }
6488 var E=j>>2;
6489 var G=%EstimateNumberOfElements(c);
6490 return(G<E)&&
6491 (D>G*4);
6492 }
6493 function Join(c,j,r,q){
6494 if(j==0)return'';
6495 var C=(%_IsArray(c));
6496 if(C){
6497 if(!%PushIfAbsent(b,c))return'';
6498 }
6499 try{
6500 if(UseSparseVariant(c,j,C,j)){
6501 %NormalizeElements(c);
6502 if(r.length==0){
6503 return SparseJoin(c,j,q);
6504 }else{
6505 return SparseJoinWithSeparatorJS(c,j,q,r);
6506 }
6507 }
6508 if(j==1){
6509 var i=c[0];
6510 if((typeof(i)==='string'))return i;
6511 return q(i);
6512 }
6513 var u=new InternalArray(j);
6514 if(r.length==0){
6515 var B=0;
6516 for(var h=0;h<j;h++){
6517 var i=c[h];
6518 if(!(typeof(i)==='string'))i=q(i);
6519 u[B++]=i;
6520 }
6521 u.length=B;
6522 var H=%_FastOneByteArrayJoin(u,'');
6523 if(!(H===(void 0)))return H;
6524 return %StringBuilderConcat(u,B,'');
6525 }
6526 if(!(typeof(c[0])==='number')){
6527 for(var h=0;h<j;h++){
6528 var i=c[h];
6529 if(!(typeof(i)==='string'))i=q(i);
6530 u[h]=i;
6531 }
6532 }else{
6533 for(var h=0;h<j;h++){
6534 var i=c[h];
6535 if((typeof(i)==='number')){
6536 i=%_NumberToString(i);
6537 }else if(!(typeof(i)==='string')){
6538 i=q(i);
6539 }
6540 u[h]=i;
6541 }
6542 }
6543 var H=%_FastOneByteArrayJoin(u,r);
6544 if(!(H===(void 0)))return H;
6545 return %StringBuilderJoin(u,j,r);
6546 }finally{
6547 if(C)b.length=b.length-1;
6548 }
6549 }
6550 function ConvertToString(I){
6551 if((typeof(I)==='number'))return %_NumberToString(I);
6552 if((typeof(I)==='boolean'))return I?'true':'false';
6553 return((I==null))?'':%ToString(%DefaultString(I));
6554 }
6555 function ConvertToLocaleString(i){
6556 if((i==null)){
6557 return'';
6558 }else{
6559 var J=ToObject(i);
6560 return %ToString(J.toLocaleString());
6561 }
6562 }
6563 function SparseSlice(c,K,L,o,M){
6564 var d=%GetArrayKeys(c,K+L);
6565 if((typeof(d)==='number')){
6566 var g=d;
6567 for(var h=K;h<g;++h){
6568 var N=c[h];
6569 if(!(N===(void 0))||h in c){
6570 %AddElement(M,h-K,N,0);
6571 }
6572 }
6573 }else{
6574 var j=d.length;
6575 for(var k=0;k<j;++k){
6576 var l=d[k];
6577 if(!(l===(void 0))){
6578 if(l>=K){
6579 var N=c[l];
6580 if(!(N===(void 0))||l in c){
6581 %AddElement(M,l-K,N,0);
6582 }
6583 }
6584 }
6585 }
6586 }
6587 }
6588 function SparseMove(c,K,L,o,P){
6589 if(P===L)return;
6590 var Q=new InternalArray(
6591 $min(o-L+P,0xffffffff));
6592 var R;
6593 var d=%GetArrayKeys(c,o);
6594 if((typeof(d)==='number')){
6595 var g=d;
6596 for(var h=0;h<K&&h<g;++h){
6597 var N=c[h];
6598 if(!(N===(void 0))||h in c){
6599 Q[h]=N;
6600 }
6601 }
6602 for(var h=K+L;h<g;++h){
6603 var N=c[h];
6604 if(!(N===(void 0))||h in c){
6605 Q[h-L+P]=N;
6606 }
6607 }
6608 }else{
6609 var j=d.length;
6610 for(var k=0;k<j;++k){
6611 var l=d[k];
6612 if(!(l===(void 0))){
6613 if(l<K){
6614 var N=c[l];
6615 if(!(N===(void 0))||l in c){
6616 Q[l]=N;
6617 }
6618 }else if(l>=K+L){
6619 var N=c[l];
6620 if(!(N===(void 0))||l in c){
6621 var S=l-L+P;
6622 Q[S]=N;
6623 if(S>0xffffffff){
6624 R=R||new InternalArray();
6625 R.push(S);
6626 }
6627 }
6628 }
6629 }
6630 }
6631 }
6632 %MoveArrayContents(Q,c);
6633 if(!(R===(void 0))){
6634 var j=R.length;
6635 for(var h=0;h<j;++h){
6636 var l=R[h];
6637 c[l]=Q[l];
6638 }
6639 }
6640 }
6641 function SimpleSlice(c,K,L,o,M){
6642 var C=(%_IsArray(c));
6643 for(var h=0;h<L;h++){
6644 var T=K+h;
6645 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(T<c.length):(T in c))){
6646 var N=c[T];
6647 %AddElement(M,h,N,0);
6648 }
6649 }
6650 }
6651 function SimpleMove(c,K,L,o,P){
6652 var C=(%_IsArray(c));
6653 if(P!==L){
6654 if(P>L){
6655 for(var h=o-L;h>K;h--){
6656 var U=h+L-1;
6657 var W=h+P-1;
6658 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(U<c.length):(U in c))){
6659 c[W]=c[U];
6660 }else{
6661 delete c[W];
6662 }
6663 }
6664 }else{
6665 for(var h=K;h<o-L;h++){
6666 var U=h+L;
6667 var W=h+P;
6668 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(U<c.length):(U in c))){
6669 c[W]=c[U];
6670 }else{
6671 delete c[W];
6672 }
6673 }
6674 for(var h=o;h>o-L+P;h--){
6675 delete c[h-1];
6676 }
6677 }
6678 }
6679 }
6680 function ArrayToString(){
6681 var c;
6682 var X;
6683 if((%_IsArray(this))){
6684 X=this.join;
6685 if(X===ArrayJoin){
6686 return Join(this,this.length,',',ConvertToString);
6687 }
6688 c=this;
6689 }else{
6690 c=ToObject(this);
6691 X=c.join;
6692 }
6693 if(!(%_ClassOf(X)==='Function')){
6694 return %_CallFunction(c,ObjectToString);
6695 }
6696 return %_CallFunction(c,X);
6697 }
6698 function ArrayToLocaleString(){
6699 var c=ToObject(this);
6700 var Y=c.length;
6701 var o=(Y>>>0);
6702 if(o===0)return"";
6703 return Join(c,o,',',ConvertToLocaleString);
6704 }
6705 function ArrayJoin(r){
6706 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.join"]);
6707 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6708 var j=(c.length>>>0);
6709 if((r===(void 0))){
6710 r=',';
6711 }else if(!(typeof(r)==='string')){
6712 r=NonStringToString(r);
6713 }
6714 var H=%_FastOneByteArrayJoin(c,r);
6715 if(!(H===(void 0)))return H;
6716 if(j===1){
6717 var i=c[0];
6718 if((typeof(i)==='string'))return i;
6719 if((i==null))return'';
6720 return NonStringToString(i);
6721 }
6722 return Join(c,j,r,ConvertToString);
6723 }
6724 function ObservedArrayPop(Z){
6725 Z--;
6726 var aa=this[Z];
6727 try{
6728 $observeBeginPerformSplice(this);
6729 delete this[Z];
6730 this.length=Z;
6731 }finally{
6732 $observeEndPerformSplice(this);
6733 $observeEnqueueSpliceRecord(this,Z,[aa],0);
6734 }
6735 return aa;
6736 }
6737 function ArrayPop(){
6738 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.pop"]);
6739 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6740 var Z=(c.length>>>0);
6741 if(Z==0){
6742 c.length=Z;
6743 return;
6744 }
6745 if(%IsObserved(c))
6746 return ObservedArrayPop.call(c,Z);
6747 Z--;
6748 var aa=c[Z];
6749 Delete(c,ToName(Z),true);
6750 c.length=Z;
6751 return aa;
6752 }
6753 function ObservedArrayPush(){
6754 var Z=(this.length>>>0);
6755 var ab=%_ArgumentsLength();
6756 try{
6757 $observeBeginPerformSplice(this);
6758 for(var h=0;h<ab;h++){
6759 this[h+Z]=%_Arguments(h);
6760 }
6761 var ac=Z+ab;
6762 this.length=ac;
6763 }finally{
6764 $observeEndPerformSplice(this);
6765 $observeEnqueueSpliceRecord(this,Z,[],ab);
6766 }
6767 return ac;
6768 }
6769 function ArrayPush(){
6770 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.push"]);
6771 if(%IsObserved(this))
6772 return ObservedArrayPush.apply(this,arguments);
6773 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6774 var Z=(c.length>>>0);
6775 var ab=%_ArgumentsLength();
6776 for(var h=0;h<ab;h++){
6777 c[h+Z]=%_Arguments(h);
6778 }
6779 var ac=Z+ab;
6780 c.length=ac;
6781 return ac;
6782 }
6783 function ArrayConcatJS(ad){
6784 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.concat"]);
6785 var c=ToObject(this);
6786 var ae=%_ArgumentsLength();
6787 var af=new InternalArray(1+ae);
6788 af[0]=c;
6789 for(var h=0;h<ae;h++){
6790 af[h+1]=%_Arguments(h);
6791 }
6792 return %ArrayConcat(af);
6793 }
6794 function SparseReverse(c,o){
6795 var e=GetSortedArrayKeys(c,%GetArrayKeys(c,o));
6796 var ag=e.length-1;
6797 var ah=0;
6798 while(ah<=ag){
6799 var h=e[ah];
6800 var ai=e[ag];
6801 var aj=o-ai-1;
6802 var ak,al;
6803 if(aj<=h){
6804 al=ai;
6805 while(e[--ag]==ai){}
6806 ak=aj;
6807 }
6808 if(aj>=h){
6809 ak=h;
6810 while(e[++ah]==h){}
6811 al=o-h-1;
6812 }
6813 var am=c[ak];
6814 if(!(am===(void 0))||ak in c){
6815 var an=c[al];
6816 if(!(an===(void 0))||al in c){
6817 c[ak]=an;
6818 c[al]=am;
6819 }else{
6820 c[al]=am;
6821 delete c[ak];
6822 }
6823 }else{
6824 var an=c[al];
6825 if(!(an===(void 0))||al in c){
6826 c[ak]=an;
6827 delete c[al];
6828 }
6829 }
6830 }
6831 }
6832 function ArrayReverse(){
6833 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.reverse"]);
6834 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6835 var o=(c.length>>>0);
6836 if(UseSparseVariant(c,o,(%_IsArray(c)),o)){
6837 %NormalizeElements(c);
6838 SparseReverse(c,o);
6839 return c;
6840 }
6841 var ai=o-1;
6842 for(var h=0;h<ai;h++,ai--){
6843 var am=c[h];
6844 if(!(am===(void 0))||h in c){
6845 var an=c[ai];
6846 if(!(an===(void 0))||ai in c){
6847 c[h]=an;
6848 c[ai]=am;
6849 }else{
6850 c[ai]=am;
6851 delete c[h];
6852 }
6853 }else{
6854 var an=c[ai];
6855 if(!(an===(void 0))||ai in c){
6856 c[h]=an;
6857 delete c[ai];
6858 }
6859 }
6860 }
6861 return c;
6862 }
6863 function ObservedArrayShift(o){
6864 var ao=this[0];
6865 try{
6866 $observeBeginPerformSplice(this);
6867 SimpleMove(this,0,1,o,0);
6868 this.length=o-1;
6869 }finally{
6870 $observeEndPerformSplice(this);
6871 $observeEnqueueSpliceRecord(this,0,[ao],0);
6872 }
6873 return ao;
6874 }
6875 function ArrayShift(){
6876 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.shift"]);
6877 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6878 var o=(c.length>>>0);
6879 if(o===0){
6880 c.length=0;
6881 return;
6882 }
6883 if(ObjectIsSealed(c)){
6884 throw MakeTypeError("array_functions_change_sealed",
6885 ["Array.prototype.shift"]);
6886 }
6887 if(%IsObserved(c))
6888 return ObservedArrayShift.call(c,o);
6889 var ao=c[0];
6890 if(UseSparseVariant(c,o,(%_IsArray(c)),o)){
6891 SparseMove(c,0,1,o,0);
6892 }else{
6893 SimpleMove(c,0,1,o,0);
6894 }
6895 c.length=o-1;
6896 return ao;
6897 }
6898 function ObservedArrayUnshift(){
6899 var o=(this.length>>>0);
6900 var ap=%_ArgumentsLength();
6901 try{
6902 $observeBeginPerformSplice(this);
6903 SimpleMove(this,0,0,o,ap);
6904 for(var h=0;h<ap;h++){
6905 this[h]=%_Arguments(h);
6906 }
6907 var ac=o+ap;
6908 this.length=ac;
6909 }finally{
6910 $observeEndPerformSplice(this);
6911 $observeEnqueueSpliceRecord(this,0,[],ap);
6912 }
6913 return ac;
6914 }
6915 function ArrayUnshift(ad){
6916 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.unshift"]);
6917 if(%IsObserved(this))
6918 return ObservedArrayUnshift.apply(this,arguments);
6919 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6920 var o=(c.length>>>0);
6921 var ap=%_ArgumentsLength();
6922 if(o>0&&UseSparseVariant(c,o,(%_IsArray(c)),o)&&
6923 !ObjectIsSealed(c)){
6924 SparseMove(c,0,0,o,ap);
6925 }else{
6926 SimpleMove(c,0,0,o,ap);
6927 }
6928 for(var h=0;h<ap;h++){
6929 c[h]=%_Arguments(h);
6930 }
6931 var ac=o+ap;
6932 c.length=ac;
6933 return ac;
6934 }
6935 function ArraySlice(aq,ar){
6936 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.slice"]);
6937 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
6938 var o=(c.length>>>0);
6939 var K=(%_IsSmi(%IS_VAR(aq))?aq:%NumberToInteger(ToNumber(aq)));
6940 var as=o;
6941 if(!(ar===(void 0)))as=(%_IsSmi(%IS_VAR(ar))?ar:%NumberToInteger(ToNumber(ar)));
6942 if(K<0){
6943 K+=o;
6944 if(K<0)K=0;
6945 }else{
6946 if(K>o)K=o;
6947 }
6948 if(as<0){
6949 as+=o;
6950 if(as<0)as=0;
6951 }else{
6952 if(as>o)as=o;
6953 }
6954 var H=[];
6955 if(as<K)return H;
6956 if(UseSparseVariant(c,o,(%_IsArray(c)),as-K)){
6957 %NormalizeElements(c);
6958 %NormalizeElements(H);
6959 SparseSlice(c,K,as-K,o,H);
6960 }else{
6961 SimpleSlice(c,K,as-K,o,H);
6962 }
6963 H.length=as-K;
6964 return H;
6965 }
6966 function ComputeSpliceStartIndex(K,o){
6967 if(K<0){
6968 K+=o;
6969 return K<0?0:K;
6970 }
6971 return K>o?o:K;
6972 }
6973 function ComputeSpliceDeleteCount(at,ap,o,K){
6974 var L=0;
6975 if(ap==1)
6976 return o-K;
6977 L=(%_IsSmi(%IS_VAR(at))?at:%NumberToInteger(ToNumber(at)));
6978 if(L<0)
6979 return 0;
6980 if(L>o-K)
6981 return o-K;
6982 return L;
6983 }
6984 function ObservedArraySplice(aq,at){
6985 var ap=%_ArgumentsLength();
6986 var o=(this.length>>>0);
6987 var K=ComputeSpliceStartIndex((%_IsSmi(%IS_VAR(aq))?aq:%NumberToInteger(ToNumber(aq))),o);
6988 var L=ComputeSpliceDeleteCount(at,ap,o,
6989 K);
6990 var M=[];
6991 M.length=L;
6992 var au=ap>2?ap-2:0;
6993 try{
6994 $observeBeginPerformSplice(this);
6995 SimpleSlice(this,K,L,o,M);
6996 SimpleMove(this,K,L,o,au);
6997 var h=K;
6998 var av=2;
6999 var aw=%_ArgumentsLength();
7000 while(av<aw){
7001 this[h++]=%_Arguments(av++);
7002 }
7003 this.length=o-L+au;
7004 }finally{
7005 $observeEndPerformSplice(this);
7006 if(M.length||au){
7007 $observeEnqueueSpliceRecord(this,
7008 K,
7009 M.slice(),
7010 au);
7011 }
7012 }
7013 return M;
7014 }
7015 function ArraySplice(aq,at){
7016 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.splice"]);
7017 if(%IsObserved(this))
7018 return ObservedArraySplice.apply(this,arguments);
7019 var ap=%_ArgumentsLength();
7020 var c=((%_IsSpecObject(%IS_VAR(this)))?this:ToObject(this));
7021 var o=(c.length>>>0);
7022 var K=ComputeSpliceStartIndex((%_IsSmi(%IS_VAR(aq))?aq:%NumberToInteger(ToNumber(aq))),o);
7023 var L=ComputeSpliceDeleteCount(at,ap,o,
7024 K);
7025 var M=[];
7026 M.length=L;
7027 var au=ap>2?ap-2:0;
7028 if(L!=au&&ObjectIsSealed(c)){
7029 throw MakeTypeError("array_functions_change_sealed",
7030 ["Array.prototype.splice"]);
7031 }else if(L>0&&ObjectIsFrozen(c)){
7032 throw MakeTypeError("array_functions_on_frozen",
7033 ["Array.prototype.splice"]);
7034 }
7035 var ax=L;
7036 if(au!=L){
7037 ax+=o-K-L;
7038 }
7039 if(UseSparseVariant(c,o,(%_IsArray(c)),ax)){
7040 %NormalizeElements(c);
7041 %NormalizeElements(M);
7042 SparseSlice(c,K,L,o,M);
7043 SparseMove(c,K,L,o,au);
7044 }else{
7045 SimpleSlice(c,K,L,o,M);
7046 SimpleMove(c,K,L,o,au);
7047 }
7048 var h=K;
7049 var av=2;
7050 var aw=%_ArgumentsLength();
7051 while(av<aw){
7052 c[h++]=%_Arguments(av++);
7053 }
7054 c.length=o-L+au;
7055 return M;
7056 }
7057 function ArraySort(ay){
7058 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.sort"]);
7059 if(!(%_ClassOf(ay)==='Function')){
7060 ay=function(I,az){
7061 if(I===az)return 0;
7062 if(%_IsSmi(I)&&%_IsSmi(az)){
7063 return %SmiLexicographicCompare(I,az);
7064 }
7065 I=ToString(I);
7066 az=ToString(az);
7067 if(I==az)return 0;
7068 else return I<az?-1:1;
7069 };
7070 }
7071 var aA=%GetDefaultReceiver(ay);
7072 var aB=function InsertionSort(m,aC,aD){
7073 for(var h=aC+1;h<aD;h++){
7074 var aE=m[h];
7075 for(var ai=h-1;ai>=aC;ai--){
7076 var aF=m[ai];
7077 var aG=%_CallFunction(aA,aF,aE,ay);
7078 if(aG>0){
7079 m[ai+1]=aF;
7080 }else{
7081 break;
7082 }
7083 }
7084 m[ai+1]=aE;
7085 }
7086 };
7087 var aH=function(m,aC,aD){
7088 var aI=[];
7089 var aJ=200+((aD-aC)&15);
7090 for(var h=aC+1,ai=0;h<aD-1;h+=aJ,ai++){
7091 aI[ai]=[h,m[h]];
7092 }
7093 %_CallFunction(aI,function(m,n){
7094 return %_CallFunction(aA,m[1],n[1],ay);
7095 },ArraySort);
7096 var aK=aI[aI.length>>1][0];
7097 return aK;
7098 }
7099 var aL=function QuickSort(m,aC,aD){
7100 var aK=0;
7101 while(true){
7102 if(aD-aC<=10){
7103 aB(m,aC,aD);
7104 return;
7105 }
7106 if(aD-aC>1000){
7107 aK=aH(m,aC,aD);
7108 }else{
7109 aK=aC+((aD-aC)>>1);
7110 }
7111 var aM=m[aC];
7112 var aN=m[aD-1];
7113 var aO=m[aK];
7114 var aP=%_CallFunction(aA,aM,aN,ay);
7115 if(aP>0){
7116 var aF=aM;
7117 aM=aN;
7118 aN=aF;
7119 }
7120 var aQ=%_CallFunction(aA,aM,aO,ay);
7121 if(aQ>=0){
7122 var aF=aM;
7123 aM=aO;
7124 aO=aN;
7125 aN=aF;
7126 }else{
7127 var aR=%_CallFunction(aA,aN,aO,ay);
7128 if(aR>0){
7129 var aF=aN;
7130 aN=aO;
7131 aO=aF;
7132 }
7133 }
7134 m[aC]=aM;
7135 m[aD-1]=aO;
7136 var aS=aN;
7137 var aT=aC+1;
7138 var aU=aD-1;
7139 m[aK]=m[aT];
7140 m[aT]=aS;
7141 partition:for(var h=aT+1;h<aU;h++){
7142 var aE=m[h];
7143 var aG=%_CallFunction(aA,aE,aS,ay);
7144 if(aG<0){
7145 m[h]=m[aT];
7146 m[aT]=aE;
7147 aT++;
7148 }else if(aG>0){
7149 do{
7150 aU--;
7151 if(aU==h)break partition;
7152 var aV=m[aU];
7153 aG=%_CallFunction(aA,aV,aS,ay);
7154 }while(aG>0);
7155 m[h]=m[aU];
7156 m[aU]=aE;
7157 if(aG<0){
7158 aE=m[h];
7159 m[h]=m[aT];
7160 m[aT]=aE;
7161 aT++;
7162 }
7163 }
7164 }
7165 if(aD-aU<aT-aC){
7166 aL(m,aU,aD);
7167 aD=aT;
7168 }else{
7169 aL(m,aC,aT);
7170 aC=aU;
7171 }
7172 }
7173 };
7174 var aW=function CopyFromPrototype(aX,j){
7175 var aY=0;
7176 for(var aZ=%_GetPrototype(aX);aZ;aZ=%_GetPrototype(aZ)){
7177 var d=%GetArrayKeys(aZ,j);
7178 if((typeof(d)==='number')){
7179 var ba=d;
7180 for(var h=0;h<ba;h++){
7181 if(!(%_CallFunction(aX,h,ObjectHasOwnProperty))&&(%_CallFunction(aZ,h,ObjectHasOwnProperty))){
7182 aX[h]=aZ[h];
7183 if(h>=aY){aY=h+1;}
7184 }
7185 }
7186 }else{
7187 for(var h=0;h<d.length;h++){
7188 var T=d[h];
7189 if(!(T===(void 0))&&!(%_CallFunction(aX,T,ObjectHasOwnProperty))
7190 &&(%_CallFunction(aZ,T,ObjectHasOwnProperty))){
7191 aX[T]=aZ[T];
7192 if(T>=aY){aY=T+1;}
7193 }
7194 }
7195 }
7196 }
7197 return aY;
7198 };
7199 var bb=function(aX,aC,aD){
7200 for(var aZ=%_GetPrototype(aX);aZ;aZ=%_GetPrototype(aZ)){
7201 var d=%GetArrayKeys(aZ,aD);
7202 if((typeof(d)==='number')){
7203 var ba=d;
7204 for(var h=aC;h<ba;h++){
7205 if((%_CallFunction(aZ,h,ObjectHasOwnProperty))){
7206 aX[h]=(void 0);
7207 }
7208 }
7209 }else{
7210 for(var h=0;h<d.length;h++){
7211 var T=d[h];
7212 if(!(T===(void 0))&&aC<=T&&
7213 (%_CallFunction(aZ,T,ObjectHasOwnProperty))){
7214 aX[T]=(void 0);
7215 }
7216 }
7217 }
7218 }
7219 };
7220 var bc=function SafeRemoveArrayHoles(aX){
7221 var bd=0;
7222 var be=j-1;
7223 var bf=0;
7224 while(bd<be){
7225 while(bd<be&&
7226 !(aX[bd]===(void 0))){
7227 bd++;
7228 }
7229 if(!(%_CallFunction(aX,bd,ObjectHasOwnProperty))){
7230 bf++;
7231 }
7232 while(bd<be&&
7233 (aX[be]===(void 0))){
7234 if(!(%_CallFunction(aX,be,ObjectHasOwnProperty))){
7235 bf++;
7236 }
7237 be--;
7238 }
7239 if(bd<be){
7240 aX[bd]=aX[be];
7241 aX[be]=(void 0);
7242 }
7243 }
7244 if(!(aX[bd]===(void 0)))bd++;
7245 var h;
7246 for(h=bd;h<j-bf;h++){
7247 aX[h]=(void 0);
7248 }
7249 for(h=j-bf;h<j;h++){
7250 if(h in %_GetPrototype(aX)){
7251 aX[h]=(void 0);
7252 }else{
7253 delete aX[h];
7254 }
7255 }
7256 return bd;
7257 };
7258 var j=(this.length>>>0);
7259 if(j<2)return this;
7260 var C=(%_IsArray(this));
7261 var bg;
7262 if(!C){
7263 bg=aW(this,j);
7264 }
7265 var bh=%RemoveArrayHoles(this,j);
7266 if(bh==-1){
7267 bh=bc(this);
7268 }
7269 aL(this,0,bh);
7270 if(!C&&(bh+1<bg)){
7271 bb(this,bh,bg);
7272 }
7273 return this;
7274 }
7275 function ArrayFilter(bi,aA){
7276 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.filter"]);
7277 var c=ToObject(this);
7278 var j=ToUint32(c.length);
7279 if(!(%_ClassOf(bi)==='Function'))throw MakeTypeError(2,bi);
7280 var bj=false;
7281 if((aA==null)){
7282 aA=%GetDefaultReceiver(bi)||aA;
7283 }else{
7284 bj=(!(%_IsSpecObject(aA))&&%IsSloppyModeFunction(bi));
7285 }
7286 var H=new a();
7287 var bk=new InternalArray();
7288 var bl=0;
7289 var C=(%_IsArray(c));
7290 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bi);
7291 for(var h=0;h<j;h++){
7292 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7293 var aE=c[h];
7294 if(bm)%DebugPrepareStepInIfStepping(bi);
7295 var bn=bj?ToObject(aA):aA;
7296 if(%_CallFunction(bn,aE,h,c,bi)){
7297 bk[bl++]=aE;
7298 }
7299 }
7300 }
7301 %MoveArrayContents(bk,H);
7302 return H;
7303 }
7304 function ArrayForEach(bi,aA){
7305 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.forEach"]);
7306 var c=ToObject(this);
7307 var j=(c.length>>>0);
7308 if(!(%_ClassOf(bi)==='Function'))throw MakeTypeError(2,bi);
7309 var bj=false;
7310 if((aA==null)){
7311 aA=%GetDefaultReceiver(bi)||aA;
7312 }else{
7313 bj=(!(%_IsSpecObject(aA))&&%IsSloppyModeFunction(bi));
7314 }
7315 var C=(%_IsArray(c));
7316 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bi);
7317 for(var h=0;h<j;h++){
7318 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7319 var aE=c[h];
7320 if(bm)%DebugPrepareStepInIfStepping(bi);
7321 var bn=bj?ToObject(aA):aA;
7322 %_CallFunction(bn,aE,h,c,bi);
7323 }
7324 }
7325 }
7326 function ArraySome(bi,aA){
7327 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.some"]);
7328 var c=ToObject(this);
7329 var j=(c.length>>>0);
7330 if(!(%_ClassOf(bi)==='Function'))throw MakeTypeError(2,bi);
7331 var bj=false;
7332 if((aA==null)){
7333 aA=%GetDefaultReceiver(bi)||aA;
7334 }else{
7335 bj=(!(%_IsSpecObject(aA))&&%IsSloppyModeFunction(bi));
7336 }
7337 var C=(%_IsArray(c));
7338 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bi);
7339 for(var h=0;h<j;h++){
7340 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7341 var aE=c[h];
7342 if(bm)%DebugPrepareStepInIfStepping(bi);
7343 var bn=bj?ToObject(aA):aA;
7344 if(%_CallFunction(bn,aE,h,c,bi))return true;
7345 }
7346 }
7347 return false;
7348 }
7349 function ArrayEvery(bi,aA){
7350 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.every"]);
7351 var c=ToObject(this);
7352 var j=(c.length>>>0);
7353 if(!(%_ClassOf(bi)==='Function'))throw MakeTypeError(2,bi);
7354 var bj=false;
7355 if((aA==null)){
7356 aA=%GetDefaultReceiver(bi)||aA;
7357 }else{
7358 bj=(!(%_IsSpecObject(aA))&&%IsSloppyModeFunction(bi));
7359 }
7360 var C=(%_IsArray(c));
7361 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bi);
7362 for(var h=0;h<j;h++){
7363 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7364 var aE=c[h];
7365 if(bm)%DebugPrepareStepInIfStepping(bi);
7366 var bn=bj?ToObject(aA):aA;
7367 if(!%_CallFunction(bn,aE,h,c,bi))return false;
7368 }
7369 }
7370 return true;
7371 }
7372 function ArrayMap(bi,aA){
7373 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.map"]);
7374 var c=ToObject(this);
7375 var j=(c.length>>>0);
7376 if(!(%_ClassOf(bi)==='Function'))throw MakeTypeError(2,bi);
7377 var bj=false;
7378 if((aA==null)){
7379 aA=%GetDefaultReceiver(bi)||aA;
7380 }else{
7381 bj=(!(%_IsSpecObject(aA))&&%IsSloppyModeFunction(bi));
7382 }
7383 var H=new a();
7384 var bk=new InternalArray(j);
7385 var C=(%_IsArray(c));
7386 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bi);
7387 for(var h=0;h<j;h++){
7388 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7389 var aE=c[h];
7390 if(bm)%DebugPrepareStepInIfStepping(bi);
7391 var bn=bj?ToObject(aA):aA;
7392 bk[h]=%_CallFunction(bn,aE,h,c,bi);
7393 }
7394 }
7395 %MoveArrayContents(bk,H);
7396 return H;
7397 }
7398 function ArrayIndexOf(aE,T){
7399 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.indexOf"]);
7400 var j=(this.length>>>0);
7401 if(j==0)return-1;
7402 if((T===(void 0))){
7403 T=0;
7404 }else{
7405 T=(%_IsSmi(%IS_VAR(T))?T:%NumberToInteger(ToNumber(T)));
7406 if(T<0){
7407 T=j+T;
7408 if(T<0)T=0;
7409 }
7410 }
7411 var bo=T;
7412 var aY=j;
7413 if(UseSparseVariant(this,j,(%_IsArray(this)),aY-bo)){
7414 %NormalizeElements(this);
7415 var d=%GetArrayKeys(this,j);
7416 if((typeof(d)==='number')){
7417 aY=d;
7418 }else{
7419 if(d.length==0)return-1;
7420 var bp=GetSortedArrayKeys(this,d);
7421 var Z=bp.length;
7422 var h=0;
7423 while(h<Z&&bp[h]<T)h++;
7424 while(h<Z){
7425 var l=bp[h];
7426 if(!(l===(void 0))&&this[l]===aE)return l;
7427 h++;
7428 }
7429 return-1;
7430 }
7431 }
7432 if(!(aE===(void 0))){
7433 for(var h=bo;h<aY;h++){
7434 if(this[h]===aE)return h;
7435 }
7436 return-1;
7437 }
7438 for(var h=bo;h<aY;h++){
7439 if((this[h]===(void 0))&&h in this){
7440 return h;
7441 }
7442 }
7443 return-1;
7444 }
7445 function ArrayLastIndexOf(aE,T){
7446 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.lastIndexOf"]);
7447 var j=(this.length>>>0);
7448 if(j==0)return-1;
7449 if(%_ArgumentsLength()<2){
7450 T=j-1;
7451 }else{
7452 T=(%_IsSmi(%IS_VAR(T))?T:%NumberToInteger(ToNumber(T)));
7453 if(T<0)T+=j;
7454 if(T<0)return-1;
7455 else if(T>=j)T=j-1;
7456 }
7457 var bo=0;
7458 var aY=T;
7459 if(UseSparseVariant(this,j,(%_IsArray(this)),T)){
7460 %NormalizeElements(this);
7461 var d=%GetArrayKeys(this,T+1);
7462 if((typeof(d)==='number')){
7463 aY=d;
7464 }else{
7465 if(d.length==0)return-1;
7466 var bp=GetSortedArrayKeys(this,d);
7467 var h=bp.length-1;
7468 while(h>=0){
7469 var l=bp[h];
7470 if(!(l===(void 0))&&this[l]===aE)return l;
7471 h--;
7472 }
7473 return-1;
7474 }
7475 }
7476 if(!(aE===(void 0))){
7477 for(var h=aY;h>=bo;h--){
7478 if(this[h]===aE)return h;
7479 }
7480 return-1;
7481 }
7482 for(var h=aY;h>=bo;h--){
7483 if((this[h]===(void 0))&&h in this){
7484 return h;
7485 }
7486 }
7487 return-1;
7488 }
7489 function ArrayReduce(bq,N){
7490 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.reduce"]);
7491 var c=ToObject(this);
7492 var j=ToUint32(c.length);
7493 if(!(%_ClassOf(bq)==='Function')){
7494 throw MakeTypeError(2,bq);
7495 }
7496 var C=(%_IsArray(c));
7497 var h=0;
7498 find_initial:if(%_ArgumentsLength()<2){
7499 for(;h<j;h++){
7500 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7501 N=c[h++];
7502 break find_initial;
7503 }
7504 }
7505 throw MakeTypeError('reduce_no_initial',[]);
7506 }
7507 var aA=%GetDefaultReceiver(bq);
7508 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bq);
7509 for(;h<j;h++){
7510 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7511 var aE=c[h];
7512 if(bm)%DebugPrepareStepInIfStepping(bq);
7513 N=%_CallFunction(aA,N,aE,h,c,bq);
7514 }
7515 }
7516 return N;
7517 }
7518 function ArrayReduceRight(bq,N){
7519 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.reduceRight"]);
7520 var c=ToObject(this);
7521 var j=ToUint32(c.length);
7522 if(!(%_ClassOf(bq)==='Function')){
7523 throw MakeTypeError(2,bq);
7524 }
7525 var C=(%_IsArray(c));
7526 var h=j-1;
7527 find_initial:if(%_ArgumentsLength()<2){
7528 for(;h>=0;h--){
7529 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7530 N=c[h--];
7531 break find_initial;
7532 }
7533 }
7534 throw MakeTypeError('reduce_no_initial',[]);
7535 }
7536 var aA=%GetDefaultReceiver(bq);
7537 var bm=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(bq);
7538 for(;h>=0;h--){
7539 if(((C&&%_HasFastPackedElements(%IS_VAR(c)))?(h<c.length):(h in c))){
7540 var aE=c[h];
7541 if(bm)%DebugPrepareStepInIfStepping(bq);
7542 N=%_CallFunction(aA,N,aE,h,c,bq);
7543 }
7544 }
7545 return N;
7546 }
7547 function ArrayIsArray(aX){
7548 return(%_IsArray(aX));
7549 }
7550 %AddNamedProperty(a.prototype,"constructor",a,
7551 2);
7552 var br={
7553 __proto__:null,
7554 copyWithin:true,
7555 entries:true,
7556 fill:true,
7557 find:true,
7558 findIndex:true,
7559 keys:true,
7560 };
7561 %AddNamedProperty(a.prototype,symbolUnscopables,br,
7562 2|1);
7563 InstallFunctions(a,2,[
7564 "isArray",ArrayIsArray
7565 ]);
7566 var bs=%SpecialArrayFunctions();
7567 var bt=function(bu,bv,o){
7568 var bi=bv;
7569 if(bs.hasOwnProperty(bu)){
7570 bi=bs[bu];
7571 }
7572 if(!(o===(void 0))){
7573 %FunctionSetLength(bi,o);
7574 }
7575 return bi;
7576 };
7577 InstallFunctions(a.prototype,2,[
7578 "toString",bt("toString",ArrayToString),
7579 "toLocaleString",bt("toLocaleString",ArrayToLocaleString),
7580 "join",bt("join",ArrayJoin),
7581 "pop",bt("pop",ArrayPop),
7582 "push",bt("push",ArrayPush,1),
7583 "concat",bt("concat",ArrayConcatJS,1),
7584 "reverse",bt("reverse",ArrayReverse),
7585 "shift",bt("shift",ArrayShift),
7586 "unshift",bt("unshift",ArrayUnshift,1),
7587 "slice",bt("slice",ArraySlice,2),
7588 "splice",bt("splice",ArraySplice,2),
7589 "sort",bt("sort",ArraySort),
7590 "filter",bt("filter",ArrayFilter,1),
7591 "forEach",bt("forEach",ArrayForEach,1),
7592 "some",bt("some",ArraySome,1),
7593 "every",bt("every",ArrayEvery,1),
7594 "map",bt("map",ArrayMap,1),
7595 "indexOf",bt("indexOf",ArrayIndexOf,1),
7596 "lastIndexOf",bt("lastIndexOf",ArrayLastIndexOf,1),
7597 "reduce",bt("reduce",ArrayReduce,1),
7598 "reduceRight",bt("reduceRight",ArrayReduceRight,1)
7599 ]);
7600 %FinishArrayPrototypeSetup(a.prototype);
7601 SetUpLockedPrototype(InternalArray,a(),[
7602 "concat",bt("concat",ArrayConcatJS),
7603 "indexOf",bt("indexOf",ArrayIndexOf),
7604 "join",bt("join",ArrayJoin),
7605 "pop",bt("pop",ArrayPop),
7606 "push",bt("push",ArrayPush),
7607 "splice",bt("splice",ArraySplice)
7608 ]);
7609 SetUpLockedPrototype(InternalPackedArray,a(),[
7610 "join",bt("join",ArrayJoin),
7611 "pop",bt("pop",ArrayPop),
7612 "push",bt("push",ArrayPush)
7613 ]);
7614 $arrayConcat=ArrayConcatJS;
7615 $arrayJoin=ArrayJoin;
7616 $arrayPush=ArrayPush;
7617 $arrayPop=ArrayPop;
7618 $arrayShift=ArrayShift;
7619 $arraySlice=ArraySlice;
7620 $arraySplice=ArraySplice;
7621 $arrayUnshift=ArrayUnshift;
7622 })();
7623
7624 \18stringnX\ 1
7625 var $stringCharAt;
7626 var $stringIndexOf;
7627 var $stringSubstring;
7628 (function(){
7629 %CheckIsBootstrapping();
7630 var a=global.RegExp;
7631 var b=global.String;
7632 function StringConstructor(c){
7633 if(%_ArgumentsLength()==0)c='';
7634 if(%_IsConstructCall()){
7635 %_SetValueOf(this,((typeof(%IS_VAR(c))==='string')?c:NonStringToString(c)));
7636 }else{
7637 return(typeof(c)==='symbol')?
7638 %_CallFunction(c,$symbolToString):((typeof(%IS_VAR(c))==='string')?c:NonStringToString(c));
7639 }
7640 }
7641 function StringToString(){
7642 if(!(typeof(this)==='string')&&!(%_ClassOf(this)==='String')){
7643 throw MakeTypeError(14,'String.prototype.toString');
7644 }
7645 return %_ValueOf(this);
7646 }
7647 function StringValueOf(){
7648 if(!(typeof(this)==='string')&&!(%_ClassOf(this)==='String')){
7649 throw MakeTypeError(14,'String.prototype.valueOf');
7650 }
7651 return %_ValueOf(this);
7652 }
7653 function StringCharAtJS(d){
7654 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.charAt"]);
7655 var e=%_StringCharAt(this,d);
7656 if(%_IsSmi(e)){
7657 e=%_StringCharAt(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),(%_IsSmi(%IS_VAR(d))?d:%NumberToInteger(ToNumber(d))));
7658 }
7659 return e;
7660 }
7661 function StringCharCodeAtJS(d){
7662 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.charCodeAt"]);
7663 var e=%_StringCharCodeAt(this,d);
7664 if(!%_IsSmi(e)){
7665 e=%_StringCharCodeAt(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),(%_IsSmi(%IS_VAR(d))?d:%NumberToInteger(ToNumber(d))));
7666 }
7667 return e;
7668 }
7669 function StringConcat(g){
7670 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.concat"]);
7671 var h=%_ArgumentsLength();
7672 var i=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7673 if(h===1){
7674 return i+((typeof(%IS_VAR(g))==='string')?g:NonStringToString(g));
7675 }
7676 var j=new InternalArray(h+1);
7677 j[0]=i;
7678 for(var k=0;k<h;k++){
7679 var l=%_Arguments(k);
7680 j[k+1]=((typeof(%IS_VAR(l))==='string')?l:NonStringToString(l));
7681 }
7682 return %StringBuilderConcat(j,h+1,"");
7683 }
7684 function StringIndexOfJS(m){
7685 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.indexOf"]);
7686 var n=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7687 m=((typeof(%IS_VAR(m))==='string')?m:NonStringToString(m));
7688 var o=0;
7689 if(%_ArgumentsLength()>1){
7690 o=%_Arguments(1);
7691 o=(%_IsSmi(%IS_VAR(o))?o:%NumberToInteger(ToNumber(o)));
7692 if(o<0)o=0;
7693 if(o>n.length)o=n.length;
7694 }
7695 return %StringIndexOf(n,m,o);
7696 }
7697 function StringLastIndexOfJS(q){
7698 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.lastIndexOf"]);
7699 var r=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7700 var t=r.length;
7701 var q=((typeof(%IS_VAR(q))==='string')?q:NonStringToString(q));
7702 var u=q.length;
7703 var o=t-u;
7704 if(%_ArgumentsLength()>1){
7705 var w=ToNumber(%_Arguments(1));
7706 if(!(!%_IsSmi(%IS_VAR(w))&&!(w==w))){
7707 w=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
7708 if(w<0){
7709 w=0;
7710 }
7711 if(w+u<t){
7712 o=w;
7713 }
7714 }
7715 }
7716 if(o<0){
7717 return-1;
7718 }
7719 return %StringLastIndexOf(r,q,o);
7720 }
7721 function StringLocaleCompareJS(g){
7722 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.localeCompare"]);
7723 return %StringLocaleCompare(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),
7724 ((typeof(%IS_VAR(g))==='string')?g:NonStringToString(g)));
7725 }
7726 function StringMatchJS(z){
7727 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.match"]);
7728 var n=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7729 if((%_IsRegExp(z))){
7730 var A=z.lastIndex;
7731 (%_IsSmi(%IS_VAR(A))?A:ToNumber(A));
7732 if(!z.global)return $regexpExecNoTests(z,n,0);
7733 var e=%StringMatch(n,z,$regexpLastMatchInfo);
7734 if(e!==null)$regexpLastMatchInfoOverride=null;
7735 z.lastIndex=0;
7736 return e;
7737 }
7738 z=new a(z);
7739 return $regexpExecNoTests(z,n,0);
7740 }
7741 var B=['NFC','NFD','NFKC','NFKD'];
7742 function StringNormalizeJS(C){
7743 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.normalize"]);
7744 var C=C?((typeof(%IS_VAR(C))==='string')?C:NonStringToString(C)):'NFC';
7745 var D=B.indexOf(C);
7746 if(D===-1){
7747 throw new $RangeError('The normalization form should be one of '
7748 +B.join(', ')+'.');
7749 }
7750 return %_ValueOf(this);
7751 }
7752 var E=[2,"","",-1,-1];
7753 function StringReplace(G,H){
7754 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.replace"]);
7755 var n=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7756 if((%_IsRegExp(G))){
7757 var A=G.lastIndex;
7758 (%_IsSmi(%IS_VAR(A))?A:ToNumber(A));
7759 if(!(%_ClassOf(H)==='Function')){
7760 H=((typeof(%IS_VAR(H))==='string')?H:NonStringToString(H));
7761 if(!G.global){
7762 var I=$regexpExec(G,n,0);
7763 if(I==null){
7764 G.lastIndex=0
7765 return n;
7766 }
7767 if(H.length==0){
7768 return %_SubString(n,0,I[3])+
7769 %_SubString(n,I[4],n.length)
7770 }
7771 return ExpandReplacement(H,n,$regexpLastMatchInfo,
7772 %_SubString(n,0,I[3]))+
7773 %_SubString(n,I[4],n.length);
7774 }
7775 G.lastIndex=0;
7776 if($regexpLastMatchInfoOverride==null){
7777 return %StringReplaceGlobalRegExpWithString(
7778 n,G,H,$regexpLastMatchInfo);
7779 }else{
7780 var J=$regexpLastMatchInfo[1];
7781 $regexpLastMatchInfo[1]=0;
7782 var K=%StringReplaceGlobalRegExpWithString(
7783 n,G,H,$regexpLastMatchInfo);
7784 if(%_IsSmi($regexpLastMatchInfo[1])){
7785 $regexpLastMatchInfo[1]=J;
7786 }else{
7787 $regexpLastMatchInfoOverride=null;
7788 }
7789 return K;
7790 }
7791 }
7792 if(G.global){
7793 return StringReplaceGlobalRegExpWithFunction(n,G,H);
7794 }
7795 return StringReplaceNonGlobalRegExpWithFunction(n,G,H);
7796 }
7797 G=((typeof(%IS_VAR(G))==='string')?G:NonStringToString(G));
7798 if(G.length==1&&
7799 n.length>0xFF&&
7800 (typeof(H)==='string')&&
7801 %StringIndexOf(H,'$',0)<0){
7802 return %StringReplaceOneCharWithString(n,G,H);
7803 }
7804 var L=%StringIndexOf(n,G,0);
7805 if(L<0)return n;
7806 var M=L+G.length;
7807 var e=%_SubString(n,0,L);
7808 if((%_ClassOf(H)==='Function')){
7809 var N=%GetDefaultReceiver(H);
7810 e+=%_CallFunction(N,G,L,n,H);
7811 }else{
7812 E[3]=L;
7813 E[4]=M;
7814 e=ExpandReplacement(((typeof(%IS_VAR(H))==='string')?H:NonStringToString(H)),
7815 n,
7816 E,
7817 e);
7818 }
7819 return e+%_SubString(n,M,n.length);
7820 }
7821 function ExpandReplacement(P,n,Q,e){
7822 var R=P.length;
7823 var S=%StringIndexOf(P,'$',0);
7824 if(S<0){
7825 if(R>0)e+=P;
7826 return e;
7827 }
7828 if(S>0)e+=%_SubString(P,0,S);
7829 while(true){
7830 var T='$';
7831 var w=S+1;
7832 if(w<R){
7833 var U=%_StringCharCodeAt(P,w);
7834 if(U==36){
7835 ++w;
7836 e+='$';
7837 }else if(U==38){
7838 ++w;
7839 e+=
7840 %_SubString(n,Q[3],Q[4]);
7841 }else if(U==96){
7842 ++w;
7843 e+=%_SubString(n,0,Q[3]);
7844 }else if(U==39){
7845 ++w;
7846 e+=%_SubString(n,Q[4],n.length);
7847 }else if(U>=48&&U<=57){
7848 var W=(U-48)<<1;
7849 var X=1;
7850 var Y=((Q)[0]);
7851 if(w+1<P.length){
7852 var S=%_StringCharCodeAt(P,w+1);
7853 if(S>=48&&S<=57){
7854 var Z=W*10+((S-48)<<1);
7855 if(Z<Y){
7856 W=Z;
7857 X=2;
7858 }
7859 }
7860 }
7861 if(W!=0&&W<Y){
7862 var L=Q[(3+(W))];
7863 if(L>=0){
7864 e+=
7865 %_SubString(n,L,Q[(3+(W+1))]);
7866 }
7867 w+=X;
7868 }else{
7869 e+='$';
7870 }
7871 }else{
7872 e+='$';
7873 }
7874 }else{
7875 e+='$';
7876 }
7877 S=%StringIndexOf(P,'$',w);
7878 if(S<0){
7879 if(w<R){
7880 e+=%_SubString(P,w,R);
7881 }
7882 return e;
7883 }
7884 if(S>w){
7885 e+=%_SubString(P,w,S);
7886 }
7887 }
7888 return e;
7889 }
7890 function CaptureString(P,aa,o){
7891 var ab=o<<1;
7892 var L=aa[(3+(ab))];
7893 if(L<0)return;
7894 var M=aa[(3+(ab+1))];
7895 return %_SubString(P,L,M);
7896 }
7897 var ac=new InternalArray(16);
7898 function StringReplaceGlobalRegExpWithFunction(n,z,H){
7899 var ad=ac;
7900 if(ad){
7901 ac=null;
7902 }else{
7903 ad=new InternalArray(16);
7904 }
7905 var ae=%RegExpExecMultiple(z,
7906 n,
7907 $regexpLastMatchInfo,
7908 ad);
7909 z.lastIndex=0;
7910 if((ae===null)){
7911 ac=ad;
7912 return n;
7913 }
7914 var h=ae.length;
7915 if((($regexpLastMatchInfo)[0])==2){
7916 var af=0;
7917 var ag=new InternalPackedArray(null,0,n);
7918 var N=%GetDefaultReceiver(H);
7919 for(var k=0;k<h;k++){
7920 var ah=ae[k];
7921 if(%_IsSmi(ah)){
7922 if(ah>0){
7923 af=(ah>>11)+(ah&0x7ff);
7924 }else{
7925 af=ae[++k]-ah;
7926 }
7927 }else{
7928 ag[0]=ah;
7929 ag[1]=af;
7930 $regexpLastMatchInfoOverride=ag;
7931 var ai=
7932 %_CallFunction(N,ah,af,n,H);
7933 ae[k]=((typeof(%IS_VAR(ai))==='string')?ai:NonStringToString(ai));
7934 af+=ah.length;
7935 }
7936 }
7937 }else{
7938 var N=%GetDefaultReceiver(H);
7939 for(var k=0;k<h;k++){
7940 var ah=ae[k];
7941 if(!%_IsSmi(ah)){
7942 $regexpLastMatchInfoOverride=ah;
7943 var ai=%Apply(H,N,ah,0,ah.length);
7944 ae[k]=((typeof(%IS_VAR(ai))==='string')?ai:NonStringToString(ai));
7945 }
7946 }
7947 }
7948 var e=%StringBuilderConcat(ae,ae.length,n);
7949 ad.length=0;
7950 ac=ad;
7951 return e;
7952 }
7953 function StringReplaceNonGlobalRegExpWithFunction(n,z,H){
7954 var Q=$regexpExec(z,n,0);
7955 if((Q===null)){
7956 z.lastIndex=0;
7957 return n;
7958 }
7959 var o=Q[3];
7960 var e=%_SubString(n,0,o);
7961 var aj=Q[4];
7962 var ak=((Q)[0])>>1;
7963 var al;
7964 var N=%GetDefaultReceiver(H);
7965 if(ak==1){
7966 var am=%_SubString(n,o,aj);
7967 al=%_CallFunction(N,am,o,n,H);
7968 }else{
7969 var an=new InternalArray(ak+2);
7970 for(var ao=0;ao<ak;ao++){
7971 an[ao]=CaptureString(n,Q,ao);
7972 }
7973 an[ao]=o;
7974 an[ao+1]=n;
7975 al=%Apply(H,N,an,0,ao+2);
7976 }
7977 e+=al;
7978 return e+%_SubString(n,aj,n.length);
7979 }
7980 function StringSearch(ap){
7981 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.search"]);
7982 var z;
7983 if((typeof(ap)==='string')){
7984 z=%_GetFromCache(0,ap);
7985 }else if((%_IsRegExp(ap))){
7986 z=ap;
7987 }else{
7988 z=new a(ap);
7989 }
7990 var I=$regexpExec(z,((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),0);
7991 if(I){
7992 return I[3];
7993 }
7994 return-1;
7995 }
7996 function StringSlice(L,M){
7997 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.slice"]);
7998 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
7999 var aq=am.length;
8000 var ar=(%_IsSmi(%IS_VAR(L))?L:%NumberToInteger(ToNumber(L)));
8001 var as=aq;
8002 if(!(M===(void 0))){
8003 as=(%_IsSmi(%IS_VAR(M))?M:%NumberToInteger(ToNumber(M)));
8004 }
8005 if(ar<0){
8006 ar+=aq;
8007 if(ar<0){
8008 ar=0;
8009 }
8010 }else{
8011 if(ar>aq){
8012 return'';
8013 }
8014 }
8015 if(as<0){
8016 as+=aq;
8017 if(as<0){
8018 return'';
8019 }
8020 }else{
8021 if(as>aq){
8022 as=aq;
8023 }
8024 }
8025 if(as<=ar){
8026 return'';
8027 }
8028 return %_SubString(am,ar,as);
8029 }
8030 function StringSplitJS(at,au){
8031 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.split"]);
8032 var n=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8033 au=((au===(void 0)))?0xffffffff:(au>>>0);
8034 var R=n.length;
8035 if(!(%_IsRegExp(at))){
8036 var av=((typeof(%IS_VAR(at))==='string')?at:NonStringToString(at));
8037 if(au===0)return[];
8038 if((at===(void 0)))return[n];
8039 var aw=av.length;
8040 if(aw===0)return %StringToArray(n,au);
8041 var e=%StringSplit(n,av,au);
8042 return e;
8043 }
8044 if(au===0)return[];
8045 return StringSplitOnRegExp(n,at,au,R);
8046 }
8047 function StringSplitOnRegExp(n,at,au,R){
8048 if(R===0){
8049 if($regexpExec(at,n,0,0)!=null){
8050 return[];
8051 }
8052 return[n];
8053 }
8054 var ax=0;
8055 var ay=0;
8056 var az=0;
8057 var e=new InternalArray();
8058 outer_loop:
8059 while(true){
8060 if(ay===R){
8061 e[e.length]=%_SubString(n,ax,R);
8062 break;
8063 }
8064 var Q=$regexpExec(at,n,ay);
8065 if(Q==null||R===(az=Q[3])){
8066 e[e.length]=%_SubString(n,ax,R);
8067 break;
8068 }
8069 var aA=Q[4];
8070 if(ay===aA&&aA===ax){
8071 ay++;
8072 continue;
8073 }
8074 e[e.length]=%_SubString(n,ax,az);
8075 if(e.length===au)break;
8076 var aB=((Q)[0])+3;
8077 for(var k=3+2;k<aB;){
8078 var L=Q[k++];
8079 var M=Q[k++];
8080 if(M!=-1){
8081 e[e.length]=%_SubString(n,L,M);
8082 }else{
8083 e[e.length]=(void 0);
8084 }
8085 if(e.length===au)break outer_loop;
8086 }
8087 ay=ax=aA;
8088 }
8089 var aC=[];
8090 %MoveArrayContents(e,aC);
8091 return aC;
8092 }
8093 function StringSubstring(L,M){
8094 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.subString"]);
8095 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8096 var aq=am.length;
8097 var ar=(%_IsSmi(%IS_VAR(L))?L:%NumberToInteger(ToNumber(L)));
8098 if(ar<0){
8099 ar=0;
8100 }else if(ar>aq){
8101 ar=aq;
8102 }
8103 var as=aq;
8104 if(!(M===(void 0))){
8105 as=(%_IsSmi(%IS_VAR(M))?M:%NumberToInteger(ToNumber(M)));
8106 if(as>aq){
8107 as=aq;
8108 }else{
8109 if(as<0)as=0;
8110 if(ar>as){
8111 var aD=as;
8112 as=ar;
8113 ar=aD;
8114 }
8115 }
8116 }
8117 return %_SubString(am,ar,as);
8118 }
8119 function StringSubstr(L,aE){
8120 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.substr"]);
8121 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8122 var h;
8123 if((aE===(void 0))){
8124 h=am.length;
8125 }else{
8126 h=(%_IsSmi(%IS_VAR(aE))?aE:%NumberToInteger(ToNumber(aE)));
8127 if(h<=0)return'';
8128 }
8129 if((L===(void 0))){
8130 L=0;
8131 }else{
8132 L=(%_IsSmi(%IS_VAR(L))?L:%NumberToInteger(ToNumber(L)));
8133 if(L>=am.length)return'';
8134 if(L<0){
8135 L+=am.length;
8136 if(L<0)L=0;
8137 }
8138 }
8139 var M=L+h;
8140 if(M>am.length)M=am.length;
8141 return %_SubString(am,L,M);
8142 }
8143 function StringToLowerCaseJS(){
8144 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLowerCase"]);
8145 return %StringToLowerCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
8146 }
8147 function StringToLocaleLowerCase(){
8148 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLocaleLowerCase"]);
8149 return %StringToLowerCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
8150 }
8151 function StringToUpperCaseJS(){
8152 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toUpperCase"]);
8153 return %StringToUpperCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
8154 }
8155 function StringToLocaleUpperCase(){
8156 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.toLocaleUpperCase"]);
8157 return %StringToUpperCase(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)));
8158 }
8159 function StringTrimJS(){
8160 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trim"]);
8161 return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),true,true);
8162 }
8163 function StringTrimLeft(){
8164 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trimLeft"]);
8165 return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),true,false);
8166 }
8167 function StringTrimRight(){
8168 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.trimRight"]);
8169 return %StringTrim(((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this)),false,true);
8170 }
8171 function StringFromCharCode(aF){
8172 var aE=%_ArgumentsLength();
8173 if(aE==1){
8174 if(!%_IsSmi(aF))aF=ToNumber(aF);
8175 return %_StringCharFromCode(aF&0xffff);
8176 }
8177 var aG=%NewString(aE,true);
8178 var k;
8179 for(k=0;k<aE;k++){
8180 var aF=%_Arguments(k);
8181 if(!%_IsSmi(aF))aF=ToNumber(aF)&0xffff;
8182 if(aF<0)aF=aF&0xffff;
8183 if(aF>0xff)break;
8184 %_OneByteSeqStringSetChar(k,aF,aG);
8185 }
8186 if(k==aE)return aG;
8187 aG=%TruncateString(aG,k);
8188 var aH=%NewString(aE-k,false);
8189 for(var ao=0;k<aE;k++,ao++){
8190 var aF=%_Arguments(k);
8191 if(!%_IsSmi(aF))aF=ToNumber(aF)&0xffff;
8192 %_TwoByteSeqStringSetChar(ao,aF,aH);
8193 }
8194 return aG+aH;
8195 }
8196 function HtmlEscape(aI){
8197 return((typeof(%IS_VAR(aI))==='string')?aI:NonStringToString(aI)).replace(/"/g,"&quot;");
8198 }
8199 function StringAnchor(aJ){
8200 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.anchor"]);
8201 return"<a name=\""+HtmlEscape(aJ)+"\">"+this+"</a>";
8202 }
8203 function StringBig(){
8204 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.big"]);
8205 return"<big>"+this+"</big>";
8206 }
8207 function StringBlink(){
8208 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.blink"]);
8209 return"<blink>"+this+"</blink>";
8210 }
8211 function StringBold(){
8212 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.bold"]);
8213 return"<b>"+this+"</b>";
8214 }
8215 function StringFixed(){
8216 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fixed"]);
8217 return"<tt>"+this+"</tt>";
8218 }
8219 function StringFontcolor(aK){
8220 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fontcolor"]);
8221 return"<font color=\""+HtmlEscape(aK)+"\">"+this+"</font>";
8222 }
8223 function StringFontsize(aL){
8224 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.fontsize"]);
8225 return"<font size=\""+HtmlEscape(aL)+"\">"+this+"</font>";
8226 }
8227 function StringItalics(){
8228 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.italics"]);
8229 return"<i>"+this+"</i>";
8230 }
8231 function StringLink(am){
8232 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.link"]);
8233 return"<a href=\""+HtmlEscape(am)+"\">"+this+"</a>";
8234 }
8235 function StringSmall(){
8236 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.small"]);
8237 return"<small>"+this+"</small>";
8238 }
8239 function StringStrike(){
8240 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.strike"]);
8241 return"<strike>"+this+"</strike>";
8242 }
8243 function StringSub(){
8244 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.sub"]);
8245 return"<sub>"+this+"</sub>";
8246 }
8247 function StringSup(){
8248 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.sup"]);
8249 return"<sup>"+this+"</sup>";
8250 }
8251 function StringRepeat(aM){
8252 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.repeat"]);
8253 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8254 var aE=ToInteger(aM);
8255 if(aE<0||aE>%_MaxSmi()){
8256 throw MakeRangeError("invalid_count_value",[]);
8257 }
8258 var aN="";
8259 while(true){
8260 if(aE&1)aN+=am;
8261 aE>>=1;
8262 if(aE===0)return aN;
8263 am+=am;
8264 }
8265 }
8266 function StringStartsWith(aO){
8267 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.startsWith"]);
8268 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8269 if((%_IsRegExp(aO))){
8270 throw MakeTypeError("first_argument_not_regexp",
8271 ["String.prototype.startsWith"]);
8272 }
8273 var aP=((typeof(%IS_VAR(aO))==='string')?aO:NonStringToString(aO));
8274 var d=0;
8275 if(%_ArgumentsLength()>1){
8276 d=%_Arguments(1);
8277 d=ToInteger(d);
8278 }
8279 var aq=am.length;
8280 var L=$min($max(d,0),aq);
8281 var aQ=aP.length;
8282 if(aQ+L>aq){
8283 return false;
8284 }
8285 return %StringIndexOf(am,aP,L)===L;
8286 }
8287 function StringEndsWith(aO){
8288 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.endsWith"]);
8289 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8290 if((%_IsRegExp(aO))){
8291 throw MakeTypeError("first_argument_not_regexp",
8292 ["String.prototype.endsWith"]);
8293 }
8294 var aP=((typeof(%IS_VAR(aO))==='string')?aO:NonStringToString(aO));
8295 var aq=am.length;
8296 var d=aq;
8297 if(%_ArgumentsLength()>1){
8298 var aR=%_Arguments(1);
8299 if(!(aR===(void 0))){
8300 d=ToInteger(aR);
8301 }
8302 }
8303 var M=$min($max(d,0),aq);
8304 var aQ=aP.length;
8305 var L=M-aQ;
8306 if(L<0){
8307 return false;
8308 }
8309 return %StringLastIndexOf(am,aP,L)===L;
8310 }
8311 function StringIncludes(aO){
8312 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.includes"]);
8313 var am=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8314 if((%_IsRegExp(aO))){
8315 throw MakeTypeError("first_argument_not_regexp",
8316 ["String.prototype.includes"]);
8317 }
8318 var aP=((typeof(%IS_VAR(aO))==='string')?aO:NonStringToString(aO));
8319 var d=0;
8320 if(%_ArgumentsLength()>1){
8321 d=%_Arguments(1);
8322 d=ToInteger(d);
8323 }
8324 var aq=am.length;
8325 var L=$min($max(d,0),aq);
8326 var aQ=aP.length;
8327 if(aQ+L>aq){
8328 return false;
8329 }
8330 return %StringIndexOf(am,aP,L)!==-1;
8331 }
8332 function StringCodePointAt(d){
8333 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.codePointAt"]);
8334 var P=((typeof(%IS_VAR(this))==='string')?this:NonStringToString(this));
8335 var aL=P.length;
8336 d=(%_IsSmi(%IS_VAR(d))?d:%NumberToInteger(ToNumber(d)));
8337 if(d<0||d>=aL){
8338 return(void 0);
8339 }
8340 var aS=%_StringCharCodeAt(P,d);
8341 if(aS<0xD800||aS>0xDBFF||d+1==aL){
8342 return aS;
8343 }
8344 var aT=%_StringCharCodeAt(P,d+1);
8345 if(aT<0xDC00||aT>0xDFFF){
8346 return aS;
8347 }
8348 return(aS-0xD800)*0x400+aT+0x2400;
8349 }
8350 function StringFromCodePoint(aU){
8351 var aF;
8352 var R=%_ArgumentsLength();
8353 var o;
8354 var e="";
8355 for(o=0;o<R;o++){
8356 aF=%_Arguments(o);
8357 if(!%_IsSmi(aF)){
8358 aF=ToNumber(aF);
8359 }
8360 if(aF<0||aF>0x10FFFF||aF!==(%_IsSmi(%IS_VAR(aF))?aF:%NumberToInteger(ToNumber(aF)))){
8361 throw MakeRangeError("invalid_code_point",[aF]);
8362 }
8363 if(aF<=0xFFFF){
8364 e+=%_StringCharFromCode(aF);
8365 }else{
8366 aF-=0x10000;
8367 e+=%_StringCharFromCode((aF>>>10)&0x3FF|0xD800);
8368 e+=%_StringCharFromCode(aF&0x3FF|0xDC00);
8369 }
8370 }
8371 return e;
8372 }
8373 function StringRaw(aV){
8374 var aW=%_ArgumentsLength();
8375 var aX=ToObject(aV);
8376 var aY=ToObject(aX.raw);
8377 var aZ=ToLength(aY.length);
8378 if(aZ<=0)return"";
8379 var e=ToString(aY[0]);
8380 for(var k=1;k<aZ;++k){
8381 if(k<aW){
8382 e+=ToString(%_Arguments(k));
8383 }
8384 e+=ToString(aY[k]);
8385 }
8386 return e;
8387 }
8388 %SetCode(b,StringConstructor);
8389 %FunctionSetPrototype(b,new b());
8390 %AddNamedProperty(
8391 b.prototype,"constructor",b,2);
8392 InstallFunctions(b,2,[
8393 "fromCharCode",StringFromCharCode,
8394 "fromCodePoint",StringFromCodePoint,
8395 "raw",StringRaw
8396 ]);
8397 InstallFunctions(b.prototype,2,[
8398 "valueOf",StringValueOf,
8399 "toString",StringToString,
8400 "charAt",StringCharAtJS,
8401 "charCodeAt",StringCharCodeAtJS,
8402 "codePointAt",StringCodePointAt,
8403 "concat",StringConcat,
8404 "endsWith",StringEndsWith,
8405 "includes",StringIncludes,
8406 "indexOf",StringIndexOfJS,
8407 "lastIndexOf",StringLastIndexOfJS,
8408 "localeCompare",StringLocaleCompareJS,
8409 "match",StringMatchJS,
8410 "normalize",StringNormalizeJS,
8411 "repeat",StringRepeat,
8412 "replace",StringReplace,
8413 "search",StringSearch,
8414 "slice",StringSlice,
8415 "split",StringSplitJS,
8416 "substring",StringSubstring,
8417 "substr",StringSubstr,
8418 "startsWith",StringStartsWith,
8419 "toLowerCase",StringToLowerCaseJS,
8420 "toLocaleLowerCase",StringToLocaleLowerCase,
8421 "toUpperCase",StringToUpperCaseJS,
8422 "toLocaleUpperCase",StringToLocaleUpperCase,
8423 "trim",StringTrimJS,
8424 "trimLeft",StringTrimLeft,
8425 "trimRight",StringTrimRight,
8426 "link",StringLink,
8427 "anchor",StringAnchor,
8428 "fontcolor",StringFontcolor,
8429 "fontsize",StringFontsize,
8430 "big",StringBig,
8431 "blink",StringBlink,
8432 "bold",StringBold,
8433 "fixed",StringFixed,
8434 "italics",StringItalics,
8435 "small",StringSmall,
8436 "strike",StringStrike,
8437 "sub",StringSub,
8438 "sup",StringSup
8439 ]);
8440 $stringCharAt=StringCharAtJS;
8441 $stringIndexOf=StringIndexOfJS;
8442 $stringSubstring=StringSubstring;
8443 })();
8444
8445 \furi}]
8446 (function(){
8447 "use strict";
8448 %CheckIsBootstrapping();
8449 var a=global.Object;
8450 var b=global.Array;
8451 function HexValueOf(c){
8452 if(c>=48&&c<=57)return c-48;
8453 if(c>=65&&c<=70)return c-55;
8454 if(c>=97&&c<=102)return c-87;
8455 return-1;
8456 }
8457 function isAlphaNumeric(d){
8458 if(97<=d&&d<=122)return true;
8459 if(65<=d&&d<=90)return true;
8460 if(48<=d&&d<=57)return true;
8461 return false;
8462 }
8463 var e=0;
8464 function URIAddEncodedOctetToBuffer(g,h,i){
8465 h[i++]=37;
8466 h[i++]=e[g>>4];
8467 h[i++]=e[g&0x0F];
8468 return i;
8469 }
8470 function URIEncodeOctets(j,h,i){
8471 if(e===0){
8472 e=[48,49,50,51,52,53,54,55,56,57,
8473 65,66,67,68,69,70];
8474 }
8475 i=URIAddEncodedOctetToBuffer(j[0],h,i);
8476 if(j[1])i=URIAddEncodedOctetToBuffer(j[1],h,i);
8477 if(j[2])i=URIAddEncodedOctetToBuffer(j[2],h,i);
8478 if(j[3])i=URIAddEncodedOctetToBuffer(j[3],h,i);
8479 return i;
8480 }
8481 function URIEncodeSingle(d,h,i){
8482 var k=(d>>12)&0xF;
8483 var l=(d>>6)&63;
8484 var m=d&63;
8485 var j=new b(3);
8486 if(d<=0x007F){
8487 j[0]=d;
8488 }else if(d<=0x07FF){
8489 j[0]=l+192;
8490 j[1]=m+128;
8491 }else{
8492 j[0]=k+224;
8493 j[1]=l+128;
8494 j[2]=m+128;
8495 }
8496 return URIEncodeOctets(j,h,i);
8497 }
8498 function URIEncodePair(n,o,h,i){
8499 var q=((n>>6)&0xF)+1;
8500 var r=(n>>2)&0xF;
8501 var k=n&3;
8502 var l=(o>>6)&0xF;
8503 var m=o&63;
8504 var j=new b(4);
8505 j[0]=(q>>2)+240;
8506 j[1]=(((q&3)<<4)|r)+128;
8507 j[2]=((k<<4)|l)+128;
8508 j[3]=m+128;
8509 return URIEncodeOctets(j,h,i);
8510 }
8511 function URIHexCharsToCharCode(t,u){
8512 var w=HexValueOf(t);
8513 var z=HexValueOf(u);
8514 if(w==-1||z==-1){
8515 throw new $URIError("URI malformed");
8516 }
8517 return(w<<4)|z;
8518 }
8519 function URIDecodeOctets(j,h,i){
8520 var A;
8521 var B=j[0];
8522 if(B<0x80){
8523 A=B;
8524 }else if(B<0xc2){
8525 throw new $URIError("URI malformed");
8526 }else{
8527 var C=j[1];
8528 if(B<0xe0){
8529 var D=B&0x1f;
8530 if((C<0x80)||(C>0xbf)){
8531 throw new $URIError("URI malformed");
8532 }
8533 var E=C&0x3f;
8534 A=(D<<6)+E;
8535 if(A<0x80||A>0x7ff){
8536 throw new $URIError("URI malformed");
8537 }
8538 }else{
8539 var G=j[2];
8540 if(B<0xf0){
8541 var D=B&0x0f;
8542 if((C<0x80)||(C>0xbf)){
8543 throw new $URIError("URI malformed");
8544 }
8545 var E=C&0x3f;
8546 if((G<0x80)||(G>0xbf)){
8547 throw new $URIError("URI malformed");
8548 }
8549 var H=G&0x3f;
8550 A=(D<<12)+(E<<6)+H;
8551 if((A<0x800)||(A>0xffff)){
8552 throw new $URIError("URI malformed");
8553 }
8554 }else{
8555 var I=j[3];
8556 if(B<0xf8){
8557 var D=(B&0x07);
8558 if((C<0x80)||(C>0xbf)){
8559 throw new $URIError("URI malformed");
8560 }
8561 var E=(C&0x3f);
8562 if((G<0x80)||(G>0xbf)){
8563 throw new $URIError("URI malformed");
8564 }
8565 var H=(G&0x3f);
8566 if((I<0x80)||(I>0xbf)){
8567 throw new $URIError("URI malformed");
8568 }
8569 var J=(I&0x3f);
8570 A=(D<<18)+(E<<12)+(H<<6)+J;
8571 if((A<0x10000)||(A>0x10ffff)){
8572 throw new $URIError("URI malformed");
8573 }
8574 }else{
8575 throw new $URIError("URI malformed");
8576 }
8577 }
8578 }
8579 }
8580 if(0xD800<=A&&A<=0xDFFF){
8581 throw new $URIError("URI malformed");
8582 }
8583 if(A<0x10000){
8584 %_TwoByteSeqStringSetChar(i++,A,h);
8585 }else{
8586 %_TwoByteSeqStringSetChar(i++,(A>>10)+0xd7c0,h);
8587 %_TwoByteSeqStringSetChar(i++,(A&0x3ff)+0xdc00,h);
8588 }
8589 return i;
8590 }
8591 function Encode(K,L){
8592 var M=K.length;
8593 var N=new InternalArray(M);
8594 var i=0;
8595 for(var P=0;P<M;P++){
8596 var n=K.charCodeAt(P);
8597 if(L(n)){
8598 N[i++]=n;
8599 }else{
8600 if(n>=0xDC00&&n<=0xDFFF)throw new $URIError("URI malformed");
8601 if(n<0xD800||n>0xDBFF){
8602 i=URIEncodeSingle(n,N,i);
8603 }else{
8604 P++;
8605 if(P==M)throw new $URIError("URI malformed");
8606 var o=K.charCodeAt(P);
8607 if(o<0xDC00||o>0xDFFF)throw new $URIError("URI malformed");
8608 i=URIEncodePair(n,o,N,i);
8609 }
8610 }
8611 }
8612 var h=%NewString(N.length,true);
8613 for(var Q=0;Q<N.length;Q++){
8614 %_OneByteSeqStringSetChar(Q,N[Q],h);
8615 }
8616 return h;
8617 }
8618 function Decode(K,R){
8619 var M=K.length;
8620 var S=%NewString(M,true);
8621 var i=0;
8622 var P=0;
8623 for(;P<M;P++){
8624 var c=K.charCodeAt(P);
8625 if(c==37){
8626 if(P+2>=M)throw new $URIError("URI malformed");
8627 var d=URIHexCharsToCharCode(K.charCodeAt(P+1),K.charCodeAt(P+2));
8628 if(d>>7)break;
8629 if(R(d)){
8630 %_OneByteSeqStringSetChar(i++,37,S);
8631 %_OneByteSeqStringSetChar(i++,K.charCodeAt(P+1),S);
8632 %_OneByteSeqStringSetChar(i++,K.charCodeAt(P+2),S);
8633 }else{
8634 %_OneByteSeqStringSetChar(i++,d,S);
8635 }
8636 P+=2;
8637 }else{
8638 if(c>0x7f)break;
8639 %_OneByteSeqStringSetChar(i++,c,S);
8640 }
8641 }
8642 S=%TruncateString(S,i);
8643 if(P==M)return S;
8644 var T=%NewString(M-P,false);
8645 i=0;
8646 for(;P<M;P++){
8647 var c=K.charCodeAt(P);
8648 if(c==37){
8649 if(P+2>=M)throw new $URIError("URI malformed");
8650 var d=URIHexCharsToCharCode(K.charCodeAt(++P),K.charCodeAt(++P));
8651 if(d>>7){
8652 var U=0;
8653 while(((d<<++U)&0x80)!=0){}
8654 if(U==1||U>4)throw new $URIError("URI malformed");
8655 var j=new b(U);
8656 j[0]=d;
8657 if(P+3*(U-1)>=M)throw new $URIError("URI malformed");
8658 for(var Q=1;Q<U;Q++){
8659 if(K.charAt(++P)!='%')throw new $URIError("URI malformed");
8660 j[Q]=URIHexCharsToCharCode(K.charCodeAt(++P),
8661 K.charCodeAt(++P));
8662 }
8663 i=URIDecodeOctets(j,T,i);
8664 }else if(R(d)){
8665 %_TwoByteSeqStringSetChar(i++,37,T);
8666 %_TwoByteSeqStringSetChar(i++,K.charCodeAt(P-1),T);
8667 %_TwoByteSeqStringSetChar(i++,K.charCodeAt(P),T);
8668 }else{
8669 %_TwoByteSeqStringSetChar(i++,d,T);
8670 }
8671 }else{
8672 %_TwoByteSeqStringSetChar(i++,c,T);
8673 }
8674 }
8675 T=%TruncateString(T,i);
8676 return S+T;
8677 }
8678 function URIEscapeJS(W){
8679 var X=ToString(W);
8680 return %URIEscape(X);
8681 }
8682 function URIUnescapeJS(W){
8683 var X=ToString(W);
8684 return %URIUnescape(X);
8685 }
8686 function URIDecode(K){
8687 var Y=function(d){
8688 if(35<=d&&d<=36)return true;
8689 if(d==38)return true;
8690 if(43<=d&&d<=44)return true;
8691 if(d==47)return true;
8692 if(58<=d&&d<=59)return true;
8693 if(d==61)return true;
8694 if(63<=d&&d<=64)return true;
8695 return false;
8696 };
8697 var Z=ToString(K);
8698 return Decode(Z,Y);
8699 }
8700 function URIDecodeComponent(aa){
8701 var Y=function(d){return false;};
8702 var Z=ToString(aa);
8703 return Decode(Z,Y);
8704 }
8705 function URIEncode(K){
8706 var ab=function(d){
8707 if(isAlphaNumeric(d))return true;
8708 if(d==33)return true;
8709 if(35<=d&&d<=36)return true;
8710 if(38<=d&&d<=47)return true;
8711 if(58<=d&&d<=59)return true;
8712 if(d==61)return true;
8713 if(63<=d&&d<=64)return true;
8714 if(d==95)return true;
8715 if(d==126)return true;
8716 return false;
8717 };
8718 var Z=ToString(K);
8719 return Encode(Z,ab);
8720 }
8721 function URIEncodeComponent(aa){
8722 var ab=function(d){
8723 if(isAlphaNumeric(d))return true;
8724 if(d==33)return true;
8725 if(39<=d&&d<=42)return true;
8726 if(45<=d&&d<=46)return true;
8727 if(d==95)return true;
8728 if(d==126)return true;
8729 return false;
8730 };
8731 var Z=ToString(aa);
8732 return Encode(Z,ab);
8733 }
8734 InstallFunctions(global,2,[
8735 "escape",URIEscapeJS,
8736 "unescape",URIUnescapeJS,
8737 "decodeURI",URIDecode,
8738 "decodeURIComponent",URIDecodeComponent,
8739 "encodeURI",URIEncode,
8740 "encodeURIComponent",URIEncodeComponent
8741 ]);
8742 })();
8743
8744 \10mathM\
8745 var rngstate;
8746 var $abs;
8747 var $exp;
8748 var $floor;
8749 var $max;
8750 var $min;
8751 (function(){
8752 "use strict";
8753 %CheckIsBootstrapping();
8754 var a=global.Object;
8755 function MathAbs(b){
8756 b=+b;
8757 return(b>0)?b:0-b;
8758 }
8759 function MathAcosJS(b){
8760 return %_MathAcos(+b);
8761 }
8762 function MathAsinJS(b){
8763 return %_MathAsin(+b);
8764 }
8765 function MathAtanJS(b){
8766 return %_MathAtan(+b);
8767 }
8768 function MathAtan2JS(c,b){
8769 c=+c;
8770 b=+b;
8771 return %_MathAtan2(c,b);
8772 }
8773 function MathCeil(b){
8774 return-%_MathFloor(-b);
8775 }
8776 function MathExp(b){
8777 return %MathExpRT(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)));
8778 }
8779 function MathFloorJS(b){
8780 return %_MathFloor(+b);
8781 }
8782 function MathLog(b){
8783 return %_MathLogRT(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)));
8784 }
8785 function MathMax(d,e){
8786 var g=%_ArgumentsLength();
8787 if(g==2){
8788 d=((typeof(%IS_VAR(d))==='number')?d:NonNumberToNumber(d));
8789 e=((typeof(%IS_VAR(e))==='number')?e:NonNumberToNumber(e));
8790 if(e>d)return e;
8791 if(d>e)return d;
8792 if(d==e){
8793 return(d===0&&%_IsMinusZero(d))?e:d;
8794 }
8795 return $NaN;
8796 }
8797 var h=-(1/0);
8798 for(var i=0;i<g;i++){
8799 var j=%_Arguments(i);
8800 if(!(typeof(j)==='number'))j=NonNumberToNumber(j);
8801 if((!%_IsSmi(%IS_VAR(j))&&!(j==j))||j>h||(h===0&&j===0&&%_IsMinusZero(h))){
8802 h=j;
8803 }
8804 }
8805 return h;
8806 }
8807 function MathMin(d,e){
8808 var g=%_ArgumentsLength();
8809 if(g==2){
8810 d=((typeof(%IS_VAR(d))==='number')?d:NonNumberToNumber(d));
8811 e=((typeof(%IS_VAR(e))==='number')?e:NonNumberToNumber(e));
8812 if(e>d)return d;
8813 if(d>e)return e;
8814 if(d==e){
8815 return(d===0&&%_IsMinusZero(d))?d:e;
8816 }
8817 return $NaN;
8818 }
8819 var h=(1/0);
8820 for(var i=0;i<g;i++){
8821 var j=%_Arguments(i);
8822 if(!(typeof(j)==='number'))j=NonNumberToNumber(j);
8823 if((!%_IsSmi(%IS_VAR(j))&&!(j==j))||j<h||(h===0&&j===0&&%_IsMinusZero(j))){
8824 h=j;
8825 }
8826 }
8827 return h;
8828 }
8829 function MathPowJS(b,c){
8830 return %_MathPow(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)));
8831 }
8832 function MathRandom(){
8833 var k=(MathImul(18030,rngstate[0]&0xFFFF)+(rngstate[0]>>>16))|0;
8834 rngstate[0]=k;
8835 var l=(MathImul(36969,rngstate[1]&0xFFFF)+(rngstate[1]>>>16))|0;
8836 rngstate[1]=l;
8837 var b=((k<<16)+(l&0xFFFF))|0;
8838 return(b<0?(b+0x100000000):b)*2.3283064365386962890625e-10;
8839 }
8840 function MathRound(b){
8841 return %RoundNumber(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)));
8842 }
8843 function MathSqrtJS(b){
8844 return %_MathSqrt(+b);
8845 }
8846 function MathImul(b,c){
8847 return %NumberImul(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)),((typeof(%IS_VAR(c))==='number')?c:NonNumberToNumber(c)));
8848 }
8849 function MathSign(b){
8850 b=+b;
8851 if(b>0)return 1;
8852 if(b<0)return-1;
8853 return b;
8854 }
8855 function MathTrunc(b){
8856 b=+b;
8857 if(b>0)return %_MathFloor(b);
8858 if(b<0)return-%_MathFloor(-b);
8859 return b;
8860 }
8861 function MathTanh(b){
8862 if(!(typeof(b)==='number'))b=NonNumberToNumber(b);
8863 if(b===0)return b;
8864 if(!(%_IsSmi(%IS_VAR(b))||((b==b)&&(b!=1/0)&&(b!=-1/0))))return MathSign(b);
8865 var m=MathExp(b);
8866 var n=MathExp(-b);
8867 return(m-n)/(m+n);
8868 }
8869 function MathAsinh(b){
8870 if(!(typeof(b)==='number'))b=NonNumberToNumber(b);
8871 if(b===0||!(%_IsSmi(%IS_VAR(b))||((b==b)&&(b!=1/0)&&(b!=-1/0))))return b;
8872 if(b>0)return MathLog(b+%_MathSqrt(b*b+1));
8873 return-MathLog(-b+%_MathSqrt(b*b+1));
8874 }
8875 function MathAcosh(b){
8876 if(!(typeof(b)==='number'))b=NonNumberToNumber(b);
8877 if(b<1)return $NaN;
8878 if(!(%_IsSmi(%IS_VAR(b))||((b==b)&&(b!=1/0)&&(b!=-1/0))))return b;
8879 return MathLog(b+%_MathSqrt(b+1)*%_MathSqrt(b-1));
8880 }
8881 function MathAtanh(b){
8882 if(!(typeof(b)==='number'))b=NonNumberToNumber(b);
8883 if(b===0)return b;
8884 if(!(%_IsSmi(%IS_VAR(b))||((b==b)&&(b!=1/0)&&(b!=-1/0))))return $NaN;
8885 return 0.5*MathLog((1+b)/(1-b));
8886 }
8887 function MathHypot(b,c){
8888 var g=%_ArgumentsLength();
8889 var o=new InternalArray(g);
8890 var q=0;
8891 for(var i=0;i<g;i++){
8892 var j=%_Arguments(i);
8893 if(!(typeof(j)==='number'))j=NonNumberToNumber(j);
8894 if(j===(1/0)||j===-(1/0))return(1/0);
8895 j=MathAbs(j);
8896 if(j>q)q=j;
8897 o[i]=j;
8898 }
8899 if(q===0)q=1;
8900 var r=0;
8901 var t=0;
8902 for(var i=0;i<g;i++){
8903 var j=o[i]/q;
8904 var u=j*j-t;
8905 var w=r+u;
8906 t=(w-r)-u;
8907 r=w;
8908 }
8909 return %_MathSqrt(r)*q;
8910 }
8911 function MathFroundJS(b){
8912 return %MathFround(((typeof(%IS_VAR(b))==='number')?b:NonNumberToNumber(b)));
8913 }
8914 function MathClz32JS(b){
8915 return %_MathClz32(b>>>0);
8916 }
8917 function MathCbrt(b){
8918 if(!(typeof(b)==='number'))b=NonNumberToNumber(b);
8919 if(b==0||!(%_IsSmi(%IS_VAR(b))||((b==b)&&(b!=1/0)&&(b!=-1/0))))return b;
8920 return b>=0?CubeRoot(b):-CubeRoot(-b);
8921 }
8922 function CubeRoot(b){
8923 var z=MathFloorJS(%_DoubleHi(b)/3)+0x2A9F7893;
8924 var A=%_ConstructDouble(z,0);
8925 A=(1.0/3.0)*(b/(A*A)+2*A);
8926 ;
8927 A=(1.0/3.0)*(b/(A*A)+2*A);
8928 ;
8929 A=(1.0/3.0)*(b/(A*A)+2*A);
8930 ;
8931 return(1.0/3.0)*(b/(A*A)+2*A);
8932 ;
8933 }
8934 function MathConstructor(){}
8935 var B=new MathConstructor();
8936 %InternalSetPrototype(B,a.prototype);
8937 %AddNamedProperty(global,"Math",B,2);
8938 %FunctionSetInstanceClassName(MathConstructor,'Math');
8939 %AddNamedProperty(B,symbolToStringTag,"Math",1|2);
8940 InstallConstants(B,[
8941 "E",2.7182818284590452354,
8942 "LN10",2.302585092994046,
8943 "LN2",0.6931471805599453,
8944 "LOG2E",1.4426950408889634,
8945 "LOG10E",0.4342944819032518,
8946 "PI",3.1415926535897932,
8947 "SQRT1_2",0.7071067811865476,
8948 "SQRT2",1.4142135623730951
8949 ]);
8950 InstallFunctions(B,2,[
8951 "random",MathRandom,
8952 "abs",MathAbs,
8953 "acos",MathAcosJS,
8954 "asin",MathAsinJS,
8955 "atan",MathAtanJS,
8956 "ceil",MathCeil,
8957 "exp",MathExp,
8958 "floor",MathFloorJS,
8959 "log",MathLog,
8960 "round",MathRound,
8961 "sqrt",MathSqrtJS,
8962 "atan2",MathAtan2JS,
8963 "pow",MathPowJS,
8964 "max",MathMax,
8965 "min",MathMin,
8966 "imul",MathImul,
8967 "sign",MathSign,
8968 "trunc",MathTrunc,
8969 "tanh",MathTanh,
8970 "asinh",MathAsinh,
8971 "acosh",MathAcosh,
8972 "atanh",MathAtanh,
8973 "hypot",MathHypot,
8974 "fround",MathFroundJS,
8975 "clz32",MathClz32JS,
8976 "cbrt",MathCbrt
8977 ]);
8978 %SetInlineBuiltinFlag(MathAbs);
8979 %SetInlineBuiltinFlag(MathAcosJS);
8980 %SetInlineBuiltinFlag(MathAsinJS);
8981 %SetInlineBuiltinFlag(MathAtanJS);
8982 %SetInlineBuiltinFlag(MathAtan2JS);
8983 %SetInlineBuiltinFlag(MathCeil);
8984 %SetInlineBuiltinFlag(MathClz32JS);
8985 %SetInlineBuiltinFlag(MathFloorJS);
8986 %SetInlineBuiltinFlag(MathRandom);
8987 %SetInlineBuiltinFlag(MathSign);
8988 %SetInlineBuiltinFlag(MathSqrtJS);
8989 %SetInlineBuiltinFlag(MathTrunc);
8990 $abs=MathAbs;
8991 $exp=MathExp;
8992 $floor=MathFloorJS;
8993 $max=MathMax;
8994 $min=MathMin;
8995 })();
8996
8997 \18fdlibme¨
8998 var kMath;
8999 var rempio2result;
9000 (function(){
9001 "use strict";
9002 %CheckIsBootstrapping();
9003 var a=global.Math;
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025 function KernelTan(b,c,d){
9026 var e;
9027 var g;
9028 var h=%_DoubleHi(b);
9029 var i=h&0x7fffffff;
9030 if(i<0x3e300000){
9031 if(((i|%_DoubleLo(b))|(d+1))==0){
9032 return 1/$abs(b);
9033 }else{
9034 if(d==1){
9035 return b;
9036 }else{
9037 var g=b+c;
9038 var e=%_ConstructDouble(%_DoubleHi(g),0);
9039 var j=c-(e-b);
9040 var k=-1/g;
9041 var l=%_ConstructDouble(%_DoubleHi(k),0);
9042 var m=1+l*e;
9043 return l+k*(m+l*j);
9044 }
9045 }
9046 }
9047 if(i>=0x3fe59428){
9048 if(b<0){
9049 b=-b;
9050 c=-c;
9051 }
9052 e=kMath[32]-b;
9053 g=kMath[33]-c;
9054 b=e+g;
9055 c=0;
9056 }
9057 e=b*b;
9058 g=e*e;
9059 var n=kMath[19+1]
9060 +g*(kMath[19+3]
9061 +g*(kMath[19+5]
9062 +
9063 g*(kMath[19+7]
9064 +g*(kMath[19+9]
9065 +g*kMath[19+11]
9066 ))));
9067 var j=e*(kMath[19+2]
9068 +g*(kMath[19+4]
9069 +g*(kMath[19+6]
9070 +
9071 g*(kMath[19+8]
9072 +g*(kMath[19+10]
9073 +g*kMath[19+12]
9074 )))));
9075 var m=e*b;
9076 n=c+e*(m*(n+j)+c);
9077 n=n+kMath[19+0]
9078 *m;
9079 g=b+n;
9080 if(i>=0x3fe59428){
9081 return(1-((h>>30)&2))*
9082 (d-2.0*(b-(g*g/(g+d)-n)));
9083 }
9084 if(d==1){
9085 return g;
9086 }else{
9087 e=%_ConstructDouble(%_DoubleHi(g),0);
9088 j=n-(e-b);
9089 var k=-1/g;
9090 var l=%_ConstructDouble(%_DoubleHi(k),0);
9091 m=1+l*e;
9092 return l+k*(m+l*j);
9093 }
9094 }
9095 function MathSinSlow(b){
9096 var o,q,r;
9097 var h=%_DoubleHi(b);
9098 var i=h&0x7fffffff;
9099 if(i<0x4002d97c){
9100 if(h>0){
9101 var e=b-kMath[1];
9102 if(i!=0x3ff921fb){
9103 q=e-kMath[2];
9104 r=(e-q)-kMath[2];
9105 }else{
9106 e-=kMath[3];
9107 q=e-kMath[4];
9108 r=(e-q)-kMath[4];
9109 }
9110 o=1;
9111 }else{
9112 var e=b+kMath[1];
9113 if(i!=0x3ff921fb){
9114 q=e+kMath[2];
9115 r=(e-q)+kMath[2];
9116 }else{
9117 e+=kMath[3];
9118 q=e+kMath[4];
9119 r=(e-q)+kMath[4];
9120 }
9121 o=-1;
9122 }
9123 }else if(i<=0x413921fb){
9124 var l=$abs(b);
9125 o=(l*kMath[0]+0.5)|0;
9126 var n=l-o*kMath[1];
9127 var g=o*kMath[2];
9128 q=n-g;
9129 if(i-(%_DoubleHi(q)&0x7ff00000)>0x1000000){
9130 l=n;
9131 g=o*kMath[3];
9132 n=l-g;
9133 g=o*kMath[4]-((l-n)-g);
9134 q=n-g;
9135 if(i-(%_DoubleHi(q)&0x7ff00000)>0x3100000){
9136 l=n;
9137 g=o*kMath[5];
9138 n=l-g;
9139 g=o*kMath[6]-((l-n)-g);
9140 q=n-g;
9141 }
9142 }
9143 r=(n-q)-g;
9144 if(h<0){
9145 o=-o;
9146 q=-q;
9147 r=-r;
9148 }
9149 }else{
9150 o=%RemPiO2(b,rempio2result);
9151 q=rempio2result[0];
9152 r=rempio2result[1];
9153 }
9154 ;
9155 var t=1-(o&2);
9156 if(o&1){
9157 var i=%_DoubleHi(q)&0x7fffffff;
9158 var e=q*q;
9159 var n=e*(4.16666666666666019037e-02+e*(-1.38888888888741095749e-03+e*(2.48015872894767294178e-05+e*(-2.75573143513906633035e-07+e*(2.08757232129817482790e-09+e*-1.13596475577881948265e-11)))));
9160 if(i<0x3fd33333){
9161 return(1-(0.5*e-(e*n-q*r)))*t;
9162 }else{
9163 var u;
9164 if(i>0x3fe90000){
9165 u=0.28125;
9166 }else{
9167 u=%_ConstructDouble(%_DoubleHi(0.25*q),0);
9168 }
9169 var w=0.5*e-u;
9170 return(1-u-(w-(e*n-q*r)))*t;
9171 }
9172 ;
9173 }else{
9174 var e=q*q;
9175 var j=e*q;
9176 var n=8.33333333332248946124e-03+e*(-1.98412698298579493134e-04+e*(2.75573137070700676789e-06+e*(-2.50507602534068634195e-08+e*1.58969099521155010221e-10)));
9177 return(q-((e*(0.5*r-j*n)-r)-j*-1.66666666666666324348e-01))*t;
9178 ;
9179 }
9180 }
9181 function MathCosSlow(b){
9182 var o,q,r;
9183 var h=%_DoubleHi(b);
9184 var i=h&0x7fffffff;
9185 if(i<0x4002d97c){
9186 if(h>0){
9187 var e=b-kMath[1];
9188 if(i!=0x3ff921fb){
9189 q=e-kMath[2];
9190 r=(e-q)-kMath[2];
9191 }else{
9192 e-=kMath[3];
9193 q=e-kMath[4];
9194 r=(e-q)-kMath[4];
9195 }
9196 o=1;
9197 }else{
9198 var e=b+kMath[1];
9199 if(i!=0x3ff921fb){
9200 q=e+kMath[2];
9201 r=(e-q)+kMath[2];
9202 }else{
9203 e+=kMath[3];
9204 q=e+kMath[4];
9205 r=(e-q)+kMath[4];
9206 }
9207 o=-1;
9208 }
9209 }else if(i<=0x413921fb){
9210 var l=$abs(b);
9211 o=(l*kMath[0]+0.5)|0;
9212 var n=l-o*kMath[1];
9213 var g=o*kMath[2];
9214 q=n-g;
9215 if(i-(%_DoubleHi(q)&0x7ff00000)>0x1000000){
9216 l=n;
9217 g=o*kMath[3];
9218 n=l-g;
9219 g=o*kMath[4]-((l-n)-g);
9220 q=n-g;
9221 if(i-(%_DoubleHi(q)&0x7ff00000)>0x3100000){
9222 l=n;
9223 g=o*kMath[5];
9224 n=l-g;
9225 g=o*kMath[6]-((l-n)-g);
9226 q=n-g;
9227 }
9228 }
9229 r=(n-q)-g;
9230 if(h<0){
9231 o=-o;
9232 q=-q;
9233 r=-r;
9234 }
9235 }else{
9236 o=%RemPiO2(b,rempio2result);
9237 q=rempio2result[0];
9238 r=rempio2result[1];
9239 }
9240 ;
9241 if(o&1){
9242 var t=(o&2)-1;
9243 var e=q*q;
9244 var j=e*q;
9245 var n=8.33333333332248946124e-03+e*(-1.98412698298579493134e-04+e*(2.75573137070700676789e-06+e*(-2.50507602534068634195e-08+e*1.58969099521155010221e-10)));
9246 return(q-((e*(0.5*r-j*n)-r)-j*-1.66666666666666324348e-01))*t;
9247 ;
9248 }else{
9249 var t=1-(o&2);
9250 var i=%_DoubleHi(q)&0x7fffffff;
9251 var e=q*q;
9252 var n=e*(4.16666666666666019037e-02+e*(-1.38888888888741095749e-03+e*(2.48015872894767294178e-05+e*(-2.75573143513906633035e-07+e*(2.08757232129817482790e-09+e*-1.13596475577881948265e-11)))));
9253 if(i<0x3fd33333){
9254 return(1-(0.5*e-(e*n-q*r)))*t;
9255 }else{
9256 var u;
9257 if(i>0x3fe90000){
9258 u=0.28125;
9259 }else{
9260 u=%_ConstructDouble(%_DoubleHi(0.25*q),0);
9261 }
9262 var w=0.5*e-u;
9263 return(1-u-(w-(e*n-q*r)))*t;
9264 }
9265 ;
9266 }
9267 }
9268 function MathSin(b){
9269 b=+b;
9270 if((%_DoubleHi(b)&0x7fffffff)<=0x3fe921fb){
9271 var e=b*b;
9272 var j=e*b;
9273 var n=8.33333333332248946124e-03+e*(-1.98412698298579493134e-04+e*(2.75573137070700676789e-06+e*(-2.50507602534068634195e-08+e*1.58969099521155010221e-10)));
9274 return(b-((e*(0.5*0-j*n)-0)-j*-1.66666666666666324348e-01));
9275 ;
9276 }
9277 return+MathSinSlow(b);
9278 }
9279 function MathCos(b){
9280 b=+b;
9281 if((%_DoubleHi(b)&0x7fffffff)<=0x3fe921fb){
9282 var i=%_DoubleHi(b)&0x7fffffff;
9283 var e=b*b;
9284 var n=e*(4.16666666666666019037e-02+e*(-1.38888888888741095749e-03+e*(2.48015872894767294178e-05+e*(-2.75573143513906633035e-07+e*(2.08757232129817482790e-09+e*-1.13596475577881948265e-11)))));
9285 if(i<0x3fd33333){
9286 return(1-(0.5*e-(e*n-b*0)));
9287 }else{
9288 var u;
9289 if(i>0x3fe90000){
9290 u=0.28125;
9291 }else{
9292 u=%_ConstructDouble(%_DoubleHi(0.25*b),0);
9293 }
9294 var w=0.5*e-u;
9295 return(1-u-(w-(e*n-b*0)));
9296 }
9297 ;
9298 }
9299 return+MathCosSlow(b);
9300 }
9301 function MathTan(b){
9302 b=b*1;
9303 if((%_DoubleHi(b)&0x7fffffff)<=0x3fe921fb){
9304 return KernelTan(b,0,1);
9305 }
9306 var o,q,r;
9307 var h=%_DoubleHi(b);
9308 var i=h&0x7fffffff;
9309 if(i<0x4002d97c){
9310 if(h>0){
9311 var e=b-kMath[1];
9312 if(i!=0x3ff921fb){
9313 q=e-kMath[2];
9314 r=(e-q)-kMath[2];
9315 }else{
9316 e-=kMath[3];
9317 q=e-kMath[4];
9318 r=(e-q)-kMath[4];
9319 }
9320 o=1;
9321 }else{
9322 var e=b+kMath[1];
9323 if(i!=0x3ff921fb){
9324 q=e+kMath[2];
9325 r=(e-q)+kMath[2];
9326 }else{
9327 e+=kMath[3];
9328 q=e+kMath[4];
9329 r=(e-q)+kMath[4];
9330 }
9331 o=-1;
9332 }
9333 }else if(i<=0x413921fb){
9334 var l=$abs(b);
9335 o=(l*kMath[0]+0.5)|0;
9336 var n=l-o*kMath[1];
9337 var g=o*kMath[2];
9338 q=n-g;
9339 if(i-(%_DoubleHi(q)&0x7ff00000)>0x1000000){
9340 l=n;
9341 g=o*kMath[3];
9342 n=l-g;
9343 g=o*kMath[4]-((l-n)-g);
9344 q=n-g;
9345 if(i-(%_DoubleHi(q)&0x7ff00000)>0x3100000){
9346 l=n;
9347 g=o*kMath[5];
9348 n=l-g;
9349 g=o*kMath[6]-((l-n)-g);
9350 q=n-g;
9351 }
9352 }
9353 r=(n-q)-g;
9354 if(h<0){
9355 o=-o;
9356 q=-q;
9357 r=-r;
9358 }
9359 }else{
9360 o=%RemPiO2(b,rempio2result);
9361 q=rempio2result[0];
9362 r=rempio2result[1];
9363 }
9364 ;
9365 return KernelTan(q,r,(o&1)?-1:1);
9366 }
9367
9368
9369
9370
9371 function MathLog1p(b){
9372 b=b*1;
9373 var h=%_DoubleHi(b);
9374 var z=h&0x7fffffff;
9375 var A=1;
9376 var B=b;
9377 var C=1;
9378 var D=0;
9379 var E=b;
9380 if(h<0x3fda827a){
9381 if(z>=0x3ff00000){
9382 if(b===-1){
9383 return-(1/0);
9384 }else{
9385 return $NaN;
9386 }
9387 }else if(z<0x3c900000){
9388 return b;
9389 }else if(z<0x3e200000){
9390 return b-b*b*0.5;
9391 }
9392 if((h>0)||(h<=-0x402D413D)){
9393 A=0;
9394 }
9395 }
9396 if(h>=0x7ff00000)return b;
9397 if(A!==0){
9398 if(h<0x43400000){
9399 E=1+b;
9400 C=%_DoubleHi(E);
9401 A=(C>>20)-1023;
9402 D=(A>0)?1-(E-b):b-(E-1);
9403 D=D/E;
9404 }else{
9405 C=%_DoubleHi(E);
9406 A=(C>>20)-1023;
9407 }
9408 C=C&0xfffff;
9409 if(C<0x6a09e){
9410 E=%_ConstructDouble(C|0x3ff00000,%_DoubleLo(E));
9411 }else{
9412 ++A;
9413 E=%_ConstructDouble(C|0x3fe00000,%_DoubleLo(E));
9414 C=(0x00100000-C)>>2;
9415 }
9416 B=E-1;
9417 }
9418 var G=0.5*B*B;
9419 if(C===0){
9420 if(B===0){
9421 if(A===0){
9422 return 0.0;
9423 }else{
9424 return A*kMath[34]+(D+A*kMath[35]);
9425 }
9426 }
9427 var H=G*(1-kMath[36]*B);
9428 if(A===0){
9429 return B-H;
9430 }else{
9431 return A*kMath[34]-((H-(A*kMath[35]+D))-B);
9432 }
9433 }
9434 var m=B/(2+B);
9435 var e=m*m;
9436 var H=e*((kMath[37+0])
9437 +e*((kMath[37+1])
9438 +e*
9439 ((kMath[37+2])
9440 +e*((kMath[37+3])
9441 +e*
9442 ((kMath[37+4])
9443 +e*((kMath[37+5])
9444 +e*(kMath[37+6])
9445 ))))));
9446 if(A===0){
9447 return B-(G-m*(G+H));
9448 }else{
9449 return A*kMath[34]-((G-(m*(G+H)+(A*kMath[35]+D)))-B);
9450 }
9451 }
9452
9453
9454 function MathExpm1(b){
9455 b=b*1;
9456 var c;
9457 var I;
9458 var J;
9459 var A;
9460 var l;
9461 var D;
9462 var h=%_DoubleHi(b);
9463 var K=h&0x80000000;
9464 var c=(K===0)?b:-b;
9465 h&=0x7fffffff;
9466 if(h>=0x4043687a){
9467 if(h>=0x40862e42){
9468 if(h>=0x7ff00000){
9469 return(b===-(1/0))?-1:b;
9470 }
9471 if(b>kMath[44])return(1/0);
9472 }
9473 if(K!=0)return-1;
9474 }
9475 if(h>0x3fd62e42){
9476 if(h<0x3ff0a2b2){
9477 if(K===0){
9478 I=b-kMath[34];
9479 J=kMath[35];
9480 A=1;
9481 }else{
9482 I=b+kMath[34];
9483 J=-kMath[35];
9484 A=-1;
9485 }
9486 }else{
9487 A=(kMath[45]*b+((K===0)?0.5:-0.5))|0;
9488 l=A;
9489 I=b-l*kMath[34];
9490 J=l*kMath[35];
9491 }
9492 b=I-J;
9493 D=(I-b)-J;
9494 }else if(h<0x3c900000){
9495 return b;
9496 }else{
9497 A=0;
9498 }
9499 var L=0.5*b;
9500 var M=b*L;
9501 var N=1+M*((kMath[46+0])
9502 +M*((kMath[46+1])
9503 +M*
9504 ((kMath[46+2])
9505 +M*((kMath[46+3])
9506 +M*(kMath[46+4])
9507 ))));
9508 l=3-N*L;
9509 var P=M*((N-l)/(6-b*l));
9510 if(A===0){
9511 return b-(b*P-M);
9512 }else{
9513 P=(b*(P-D)-D);
9514 P-=M;
9515 if(A===-1)return 0.5*(b-P)-0.5;
9516 if(A===1){
9517 if(b<-0.25)return-2*(P-(b+0.5));
9518 return 1+2*(b-P);
9519 }
9520 if(A<=-2||A>56){
9521 c=1-(P-b);
9522 c=%_ConstructDouble(%_DoubleHi(c)+(A<<20),%_DoubleLo(c));
9523 return c-1;
9524 }
9525 if(A<20){
9526 l=%_ConstructDouble(0x3ff00000-(0x200000>>A),0);
9527 c=l-(P-b);
9528 c=%_ConstructDouble(%_DoubleHi(c)+(A<<20),%_DoubleLo(c));
9529 }else{
9530 l=%_ConstructDouble((0x3ff-A)<<20,0);
9531 c=b-(P+l);
9532 c+=1;
9533 c=%_ConstructDouble(%_DoubleHi(c)+(A<<20),%_DoubleLo(c));
9534 }
9535 }
9536 return c;
9537 }
9538
9539
9540
9541 function MathSinh(b){
9542 b=b*1;
9543 var Q=(b<0)?-0.5:0.5;
9544 var z=$abs(b);
9545 if(z<22){
9546 if(z<3.725290298461914e-9)return b;
9547 var l=MathExpm1(z);
9548 if(z<1)return Q*(2*l-l*l/(l+1));
9549 return Q*(l+l/(l+1));
9550 }
9551 if(z<709.7822265625)return Q*$exp(z);
9552 if(z<=kMath[51]){
9553 var g=$exp(0.5*z);
9554 var l=Q*g;
9555 return l*g;
9556 }
9557 return b*(1/0);
9558 }
9559
9560 function MathCosh(b){
9561 b=b*1;
9562 var i=%_DoubleHi(b)&0x7fffffff;
9563 if(i<0x3fd62e43){
9564 var l=MathExpm1($abs(b));
9565 var g=1+l;
9566 if(i<0x3c800000)return g;
9567 return 1+(l*l)/(g+g);
9568 }
9569 if(i<0x40360000){
9570 var l=$exp($abs(b));
9571 return 0.5*l+0.5/l;
9572 }
9573 if(i<0x40862e42)return 0.5*$exp($abs(b));
9574 if($abs(b)<=kMath[51]){
9575 var g=$exp(0.5*$abs(b));
9576 var l=0.5*g;
9577 return l*g;
9578 }
9579 if((!%_IsSmi(%IS_VAR(b))&&!(b==b)))return b;
9580 return(1/0);
9581 }
9582
9583
9584
9585 function MathLog10(b){
9586 b=b*1;
9587 var h=%_DoubleHi(b);
9588 var R=%_DoubleLo(b);
9589 var A=0;
9590 if(h<0x00100000){
9591 if(((h&0x7fffffff)|R)===0)return-(1/0);
9592 if(h<0)return $NaN;
9593 A-=54;
9594 b*=18014398509481984;
9595 h=%_DoubleHi(b);
9596 R=%_DoubleLo(b);
9597 }
9598 if(h>=0x7ff00000)return b;
9599 A+=(h>>20)-1023;
9600 var S=(A&0x80000000)>>>31;
9601 h=(h&0x000fffff)|((0x3ff-S)<<20);
9602 var c=A+S;
9603 b=%_ConstructDouble(h,R);
9604 var e=c*kMath[54]+kMath[52]*%_MathLogRT(b);
9605 return e+c*kMath[53];
9606 }
9607
9608
9609
9610
9611
9612
9613 function MathLog2(b){
9614 b=b*1;
9615 var z=$abs(b);
9616 var h=%_DoubleHi(b);
9617 var R=%_DoubleLo(b);
9618 var i=h&0x7fffffff;
9619 if((i|R)==0)return-(1/0);
9620 if(h<0)return $NaN;
9621 if(i>=0x7ff00000)return b;
9622 var o=0;
9623 if(i<0x00100000){
9624 z*=9007199254740992;
9625 o-=53;
9626 i=%_DoubleHi(z);
9627 }
9628 o+=(i>>20)-0x3ff;
9629 var T=i&0x000fffff;
9630 i=T|0x3ff00000;
9631 var U=1;
9632 var W=0;
9633 var X=0;
9634 if(T>0x3988e){
9635 if(T<0xbb67a){
9636 U=1.5;
9637 W=kMath[64];
9638 X=kMath[65];
9639 }else{
9640 o+=1;
9641 i-=0x00100000;
9642 }
9643 }
9644 z=%_ConstructDouble(i,%_DoubleLo(z));
9645 var E=z-U;
9646 var j=1/(z+U);
9647 var Y=E*j;
9648 var Z=%_ConstructDouble(%_DoubleHi(Y),0);
9649 var aa=%_ConstructDouble(%_DoubleHi(z+U),0)
9650 var ab=z-(aa-U);
9651 var ac=j*((E-Z*aa)-Z*ab);
9652 var ad=Y*Y;
9653 var n=ad*ad*((kMath[55+0])
9654 +ad*((kMath[55+1])
9655 +ad*((kMath[55+2])
9656 +ad*(
9657 (kMath[55+3])
9658 +ad*((kMath[55+4])
9659 +ad*(kMath[55+5])
9660 )))));
9661 n+=ac*(Z+Y);
9662 ad=Z*Z;
9663 aa=%_ConstructDouble(%_DoubleHi(3.0+ad+n),0);
9664 ab=n-((aa-3.0)-ad);
9665 E=Z*aa;
9666 j=ac*aa+ab*Y;
9667 p_h=%_ConstructDouble(%_DoubleHi(E+j),0);
9668 p_l=j-(p_h-E);
9669 z_h=kMath[62]*p_h;
9670 z_l=kMath[63]*p_h+p_l*kMath[61]+X;
9671 var l=o;
9672 var ae=%_ConstructDouble(%_DoubleHi(((z_h+z_l)+W)+l),0);
9673 var af=z_l-(((ae-l)-W)-z_h);
9674 return ae+af;
9675 }
9676 InstallFunctions(a,2,[
9677 "cos",MathCos,
9678 "sin",MathSin,
9679 "tan",MathTan,
9680 "sinh",MathSinh,
9681 "cosh",MathCosh,
9682 "log10",MathLog10,
9683 "log2",MathLog2,
9684 "log1p",MathLog1p,
9685 "expm1",MathExpm1
9686 ]);
9687 %SetInlineBuiltinFlag(MathSin);
9688 %SetInlineBuiltinFlag(MathCos);
9689 })();
9690
9691 \10dateAå
9692 var $createDate;
9693 (function(){
9694 "use strict";
9695 %CheckIsBootstrapping();
9696 var a=global.Date;
9697 function ThrowDateTypeError(){
9698 throw new $TypeError('this is not a Date object.');
9699 }
9700 var b=$NaN;
9701 var c;
9702 function LocalTimezone(d){
9703 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return"";
9704 CheckDateCacheCurrent();
9705 if(d==b){
9706 return c;
9707 }
9708 var e=%DateLocalTimezone(d);
9709 b=d;
9710 c=e;
9711 return e;
9712 }
9713 function UTC(g){
9714 if((!%_IsSmi(%IS_VAR(g))&&!(g==g)))return g;
9715 return %DateToUTC(g);
9716 }
9717 function MakeTime(h,i,j,k){
9718 if(!$isFinite(h))return $NaN;
9719 if(!$isFinite(i))return $NaN;
9720 if(!$isFinite(j))return $NaN;
9721 if(!$isFinite(k))return $NaN;
9722 return(%_IsSmi(%IS_VAR(h))?h:%NumberToInteger(ToNumber(h)))*3600000
9723 +(%_IsSmi(%IS_VAR(i))?i:%NumberToInteger(ToNumber(i)))*60000
9724 +(%_IsSmi(%IS_VAR(j))?j:%NumberToInteger(ToNumber(j)))*1000
9725 +(%_IsSmi(%IS_VAR(k))?k:%NumberToInteger(ToNumber(k)));
9726 }
9727 function TimeInYear(l){
9728 return DaysInYear(l)*86400000;
9729 }
9730 function MakeDay(l,m,n){
9731 if(!$isFinite(l)||!$isFinite(m)||!$isFinite(n))return $NaN;
9732 l=(%_IsSmi(%IS_VAR(l))?l:%NumberToIntegerMapMinusZero(ToNumber(l)));
9733 m=(%_IsSmi(%IS_VAR(m))?m:%NumberToIntegerMapMinusZero(ToNumber(m)));
9734 n=(%_IsSmi(%IS_VAR(n))?n:%NumberToIntegerMapMinusZero(ToNumber(n)));
9735 if(l<-1000000||l>1000000||
9736 m<-10000000||m>10000000){
9737 return $NaN;
9738 }
9739 return %DateMakeDay(l|0,m|0)+n-1;
9740 }
9741 function MakeDate(o,g){
9742 var g=o*86400000+g;
9743 if($abs(g)>8640002592000000)return $NaN;
9744 return g;
9745 }
9746 function TimeClip(g){
9747 if(!$isFinite(g))return $NaN;
9748 if($abs(g)>8640000000000000)return $NaN;
9749 return(%_IsSmi(%IS_VAR(g))?g:%NumberToInteger(ToNumber(g)));
9750 }
9751 var q={
9752 time:0,
9753 string:null
9754 };
9755 function DateConstructor(l,m,n,r,t,u,k){
9756 if(!%_IsConstructCall()){
9757 return(new a()).toString();
9758 }
9759 var w=%_ArgumentsLength();
9760 var z;
9761 if(w==0){
9762 z=%DateCurrentTime();
9763 (%DateSetValue(this,z,1));
9764 }else if(w==1){
9765 if((typeof(l)==='number')){
9766 z=l;
9767 }else if((typeof(l)==='string')){
9768 CheckDateCacheCurrent();
9769 var A=q;
9770 if(A.string===l){
9771 z=A.time;
9772 }else{
9773 z=DateParse(l);
9774 if(!(!%_IsSmi(%IS_VAR(z))&&!(z==z))){
9775 A.time=z;
9776 A.string=l;
9777 }
9778 }
9779 }else{
9780 var g=ToPrimitive(l,1);
9781 z=(typeof(g)==='string')?DateParse(g):ToNumber(g);
9782 }
9783 (%DateSetValue(this,z,1));
9784 }else{
9785 l=ToNumber(l);
9786 m=ToNumber(m);
9787 n=w>2?ToNumber(n):1;
9788 r=w>3?ToNumber(r):0;
9789 t=w>4?ToNumber(t):0;
9790 u=w>5?ToNumber(u):0;
9791 k=w>6?ToNumber(k):0;
9792 l=(!(!%_IsSmi(%IS_VAR(l))&&!(l==l))&&
9793 0<=(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))&&
9794 (%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))<=99)?1900+(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l))):l;
9795 var o=MakeDay(l,m,n);
9796 var g=MakeTime(r,t,u,k);
9797 z=MakeDate(o,g);
9798 (%DateSetValue(this,z,0));
9799 }
9800 }
9801 var B=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
9802 var C=['Jan','Feb','Mar','Apr','May','Jun',
9803 'Jul','Aug','Sep','Oct','Nov','Dec'];
9804 function TwoDigitString(z){
9805 return z<10?"0"+z:""+z;
9806 }
9807 function DateString(n){
9808 return B[(%_DateField(n,4))]+' '
9809 +C[(%_DateField(n,2))]+' '
9810 +TwoDigitString((%_DateField(n,3)))+' '
9811 +(%_DateField(n,1));
9812 }
9813 var D=['Sunday','Monday','Tuesday','Wednesday',
9814 'Thursday','Friday','Saturday'];
9815 var E=['January','February','March','April','May','June',
9816 'July','August','September','October','November','December'];
9817 function LongDateString(n){
9818 return D[(%_DateField(n,4))]+', '
9819 +E[(%_DateField(n,2))]+' '
9820 +TwoDigitString((%_DateField(n,3)))+', '
9821 +(%_DateField(n,1));
9822 }
9823 function TimeString(n){
9824 return TwoDigitString((%_DateField(n,5)))+':'
9825 +TwoDigitString((%_DateField(n,6)))+':'
9826 +TwoDigitString((%_DateField(n,7)));
9827 }
9828 function TimeStringUTC(n){
9829 return TwoDigitString((%_DateField(n,15)))+':'
9830 +TwoDigitString((%_DateField(n,16)))+':'
9831 +TwoDigitString((%_DateField(n,17)));
9832 }
9833 function LocalTimezoneString(n){
9834 var e=LocalTimezone((%_DateField(n,0)));
9835 var G=-(%_DateField(n,21));
9836 var H=(G>=0)?1:-1;
9837 var r=$floor((H*G)/60);
9838 var i=$floor((H*G)%60);
9839 var I=' GMT'+((H==1)?'+':'-')+
9840 TwoDigitString(r)+TwoDigitString(i);
9841 return I+' ('+e+')';
9842 }
9843 function DatePrintString(n){
9844 return DateString(n)+' '+TimeString(n);
9845 }
9846 var J=new InternalArray(8);
9847 function DateParse(K){
9848 var L=%DateParseString(ToString(K),J);
9849 if((L===null))return $NaN;
9850 var o=MakeDay(L[0],L[1],L[2]);
9851 var g=MakeTime(L[3],L[4],L[5],L[6]);
9852 var n=MakeDate(o,g);
9853 if((L[7]===null)){
9854 return TimeClip(UTC(n));
9855 }else{
9856 return TimeClip(n-L[7]*1000);
9857 }
9858 }
9859 function DateUTC(l,m,n,r,t,u,k){
9860 l=ToNumber(l);
9861 m=ToNumber(m);
9862 var w=%_ArgumentsLength();
9863 n=w>2?ToNumber(n):1;
9864 r=w>3?ToNumber(r):0;
9865 t=w>4?ToNumber(t):0;
9866 u=w>5?ToNumber(u):0;
9867 k=w>6?ToNumber(k):0;
9868 l=(!(!%_IsSmi(%IS_VAR(l))&&!(l==l))&&
9869 0<=(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))&&
9870 (%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))<=99)?1900+(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l))):l;
9871 var o=MakeDay(l,m,n);
9872 var g=MakeTime(r,t,u,k);
9873 return TimeClip(MakeDate(o,g));
9874 }
9875 function DateNow(){
9876 return %DateCurrentTime();
9877 }
9878 function DateToString(){
9879 var d=(%_DateField(this,0))
9880 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
9881 var M=LocalTimezoneString(this)
9882 return DatePrintString(this)+M;
9883 }
9884 function DateToDateString(){
9885 var d=(%_DateField(this,0));
9886 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
9887 return DateString(this);
9888 }
9889 function DateToTimeString(){
9890 var d=(%_DateField(this,0));
9891 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
9892 var M=LocalTimezoneString(this);
9893 return TimeString(this)+M;
9894 }
9895 function DateToLocaleString(){
9896 return %_CallFunction(this,DateToString);
9897 }
9898 function DateToLocaleDateString(){
9899 var d=(%_DateField(this,0));
9900 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
9901 return LongDateString(this);
9902 }
9903 function DateToLocaleTimeString(){
9904 var d=(%_DateField(this,0));
9905 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
9906 return TimeString(this);
9907 }
9908 function DateValueOf(){
9909 return(%_DateField(this,0));
9910 }
9911 function DateGetTime(){
9912 return(%_DateField(this,0));
9913 }
9914 function DateGetFullYear(){
9915 return(%_DateField(this,1));
9916 }
9917 function DateGetUTCFullYear(){
9918 return(%_DateField(this,11));
9919 }
9920 function DateGetMonth(){
9921 return(%_DateField(this,2));
9922 }
9923 function DateGetUTCMonth(){
9924 return(%_DateField(this,12));
9925 }
9926 function DateGetDate(){
9927 return(%_DateField(this,3));
9928 }
9929 function DateGetUTCDate(){
9930 return(%_DateField(this,13));
9931 }
9932 function DateGetDay(){
9933 return(%_DateField(this,4));
9934 }
9935 function DateGetUTCDay(){
9936 return(%_DateField(this,14));
9937 }
9938 function DateGetHours(){
9939 return(%_DateField(this,5));
9940 }
9941 function DateGetUTCHours(){
9942 return(%_DateField(this,15));
9943 }
9944 function DateGetMinutes(){
9945 return(%_DateField(this,6));
9946 }
9947 function DateGetUTCMinutes(){
9948 return(%_DateField(this,16));
9949 }
9950 function DateGetSeconds(){
9951 return(%_DateField(this,7));
9952 }
9953 function DateGetUTCSeconds(){
9954 return(%_DateField(this,17))
9955 }
9956 function DateGetMilliseconds(){
9957 return(%_DateField(this,8));
9958 }
9959 function DateGetUTCMilliseconds(){
9960 return(%_DateField(this,18));
9961 }
9962 function DateGetTimezoneOffset(){
9963 return(%_DateField(this,21));
9964 }
9965 function DateSetTime(k){
9966 if(%_ClassOf(this)!=='Date')ThrowDateTypeError();
9967 (%DateSetValue(this,ToNumber(k),1));
9968 return(%_DateField(this,0));
9969 }
9970 function DateSetMilliseconds(k){
9971 var d=(%_DateField(this,0)+%_DateField(this,21));
9972 k=ToNumber(k);
9973 var g=MakeTime((%_DateField(this,5)),(%_DateField(this,6)),(%_DateField(this,7)),k);
9974 return(%DateSetValue(this,MakeDate((%_DateField(this,9)),g),0));
9975 }
9976 function DateSetUTCMilliseconds(k){
9977 var d=(%_DateField(this,0));
9978 k=ToNumber(k);
9979 var g=MakeTime((%_DateField(this,15)),
9980 (%_DateField(this,16)),
9981 (%_DateField(this,17)),
9982 k);
9983 return(%DateSetValue(this,MakeDate((%_DateField(this,19)),g),1));
9984 }
9985 function DateSetSeconds(j,k){
9986 var d=(%_DateField(this,0)+%_DateField(this,21));
9987 j=ToNumber(j);
9988 k=%_ArgumentsLength()<2?(%_DateField(this,8)):ToNumber(k);
9989 var g=MakeTime((%_DateField(this,5)),(%_DateField(this,6)),j,k);
9990 return(%DateSetValue(this,MakeDate((%_DateField(this,9)),g),0));
9991 }
9992 function DateSetUTCSeconds(j,k){
9993 var d=(%_DateField(this,0));
9994 j=ToNumber(j);
9995 k=%_ArgumentsLength()<2?(%_DateField(this,18)):ToNumber(k);
9996 var g=MakeTime((%_DateField(this,15)),(%_DateField(this,16)),j,k);
9997 return(%DateSetValue(this,MakeDate((%_DateField(this,19)),g),1));
9998 }
9999 function DateSetMinutes(i,j,k){
10000 var d=(%_DateField(this,0)+%_DateField(this,21));
10001 i=ToNumber(i);
10002 var w=%_ArgumentsLength();
10003 j=w<2?(%_DateField(this,7)):ToNumber(j);
10004 k=w<3?(%_DateField(this,8)):ToNumber(k);
10005 var g=MakeTime((%_DateField(this,5)),i,j,k);
10006 return(%DateSetValue(this,MakeDate((%_DateField(this,9)),g),0));
10007 }
10008 function DateSetUTCMinutes(i,j,k){
10009 var d=(%_DateField(this,0));
10010 i=ToNumber(i);
10011 var w=%_ArgumentsLength();
10012 j=w<2?(%_DateField(this,17)):ToNumber(j);
10013 k=w<3?(%_DateField(this,18)):ToNumber(k);
10014 var g=MakeTime((%_DateField(this,15)),i,j,k);
10015 return(%DateSetValue(this,MakeDate((%_DateField(this,19)),g),1));
10016 }
10017 function DateSetHours(h,i,j,k){
10018 var d=(%_DateField(this,0)+%_DateField(this,21));
10019 h=ToNumber(h);
10020 var w=%_ArgumentsLength();
10021 i=w<2?(%_DateField(this,6)):ToNumber(i);
10022 j=w<3?(%_DateField(this,7)):ToNumber(j);
10023 k=w<4?(%_DateField(this,8)):ToNumber(k);
10024 var g=MakeTime(h,i,j,k);
10025 return(%DateSetValue(this,MakeDate((%_DateField(this,9)),g),0));
10026 }
10027 function DateSetUTCHours(h,i,j,k){
10028 var d=(%_DateField(this,0));
10029 h=ToNumber(h);
10030 var w=%_ArgumentsLength();
10031 i=w<2?(%_DateField(this,16)):ToNumber(i);
10032 j=w<3?(%_DateField(this,17)):ToNumber(j);
10033 k=w<4?(%_DateField(this,18)):ToNumber(k);
10034 var g=MakeTime(h,i,j,k);
10035 return(%DateSetValue(this,MakeDate((%_DateField(this,19)),g),1));
10036 }
10037 function DateSetDate(n){
10038 var d=(%_DateField(this,0)+%_DateField(this,21));
10039 n=ToNumber(n);
10040 var o=MakeDay((%_DateField(this,1)),(%_DateField(this,2)),n);
10041 return(%DateSetValue(this,MakeDate(o,(%_DateField(this,10))),0));
10042 }
10043 function DateSetUTCDate(n){
10044 var d=(%_DateField(this,0));
10045 n=ToNumber(n);
10046 var o=MakeDay((%_DateField(this,11)),(%_DateField(this,12)),n);
10047 return(%DateSetValue(this,MakeDate(o,(%_DateField(this,20))),1));
10048 }
10049 function DateSetMonth(m,n){
10050 var d=(%_DateField(this,0)+%_DateField(this,21));
10051 m=ToNumber(m);
10052 n=%_ArgumentsLength()<2?(%_DateField(this,3)):ToNumber(n);
10053 var o=MakeDay((%_DateField(this,1)),m,n);
10054 return(%DateSetValue(this,MakeDate(o,(%_DateField(this,10))),0));
10055 }
10056 function DateSetUTCMonth(m,n){
10057 var d=(%_DateField(this,0));
10058 m=ToNumber(m);
10059 n=%_ArgumentsLength()<2?(%_DateField(this,13)):ToNumber(n);
10060 var o=MakeDay((%_DateField(this,11)),m,n);
10061 return(%DateSetValue(this,MakeDate(o,(%_DateField(this,20))),1));
10062 }
10063 function DateSetFullYear(l,m,n){
10064 var d=(%_DateField(this,0)+%_DateField(this,21));
10065 l=ToNumber(l);
10066 var w=%_ArgumentsLength();
10067 var g;
10068 if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
10069 m=w<2?0:ToNumber(m);
10070 n=w<3?1:ToNumber(n);
10071 g=0;
10072 }else{
10073 m=w<2?(%_DateField(this,2)):ToNumber(m);
10074 n=w<3?(%_DateField(this,3)):ToNumber(n);
10075 g=(%_DateField(this,10));
10076 }
10077 var o=MakeDay(l,m,n);
10078 return(%DateSetValue(this,MakeDate(o,g),0));
10079 }
10080 function DateSetUTCFullYear(l,m,n){
10081 var d=(%_DateField(this,0));
10082 l=ToNumber(l);
10083 var w=%_ArgumentsLength();
10084 var g;
10085 if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
10086 m=w<2?0:ToNumber(m);
10087 n=w<3?1:ToNumber(n);
10088 g=0;
10089 }else{
10090 m=w<2?(%_DateField(this,12)):ToNumber(m);
10091 n=w<3?(%_DateField(this,13)):ToNumber(n);
10092 g=(%_DateField(this,20));
10093 }
10094 var o=MakeDay(l,m,n);
10095 return(%DateSetValue(this,MakeDate(o,g),1));
10096 }
10097 function DateToUTCString(){
10098 var d=(%_DateField(this,0));
10099 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))return'Invalid Date';
10100 return B[(%_DateField(this,14))]+', '
10101 +TwoDigitString((%_DateField(this,13)))+' '
10102 +C[(%_DateField(this,12))]+' '
10103 +(%_DateField(this,11))+' '
10104 +TimeStringUTC(this)+' GMT';
10105 }
10106 function DateGetYear(){
10107 return(%_DateField(this,1))-1900;
10108 }
10109 function DateSetYear(l){
10110 if(%_ClassOf(this)!=='Date')ThrowDateTypeError();
10111 l=ToNumber(l);
10112 if((!%_IsSmi(%IS_VAR(l))&&!(l==l)))return(%DateSetValue(this,$NaN,1));
10113 l=(0<=(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))&&(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)))<=99)
10114 ?1900+(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l))):l;
10115 var d=(%_DateField(this,0)+%_DateField(this,21));
10116 var m,n,g;
10117 if((!%_IsSmi(%IS_VAR(d))&&!(d==d))){
10118 m=0;
10119 n=1;
10120 g=0;
10121 }else{
10122 m=(%_DateField(this,2));
10123 n=(%_DateField(this,3));
10124 g=(%_DateField(this,10));
10125 }
10126 var o=MakeDay(l,m,n);
10127 return(%DateSetValue(this,MakeDate(o,g),0));
10128 }
10129 function DateToGMTString(){
10130 return %_CallFunction(this,DateToUTCString);
10131 }
10132 function PadInt(N,P){
10133 if(P==1)return N;
10134 return N<%_MathPow(10,P-1)?'0'+PadInt(N,P-1):N;
10135 }
10136 function DateToISOString(){
10137 var d=(%_DateField(this,0));
10138 if((!%_IsSmi(%IS_VAR(d))&&!(d==d)))throw MakeRangeError("invalid_time_value",[]);
10139 var l=this.getUTCFullYear();
10140 var Q;
10141 if(l>=0&&l<=9999){
10142 Q=PadInt(l,4);
10143 }else{
10144 if(l<0){
10145 Q="-"+PadInt(-l,6);
10146 }else{
10147 Q="+"+PadInt(l,6);
10148 }
10149 }
10150 return Q+
10151 '-'+PadInt(this.getUTCMonth()+1,2)+
10152 '-'+PadInt(this.getUTCDate(),2)+
10153 'T'+PadInt(this.getUTCHours(),2)+
10154 ':'+PadInt(this.getUTCMinutes(),2)+
10155 ':'+PadInt(this.getUTCSeconds(),2)+
10156 '.'+PadInt(this.getUTCMilliseconds(),3)+
10157 'Z';
10158 }
10159 function DateToJSON(R){
10160 var S=ToObject(this);
10161 var T=DefaultNumber(S);
10162 if((typeof(T)==='number')&&!(%_IsSmi(%IS_VAR(T))||((T==T)&&(T!=1/0)&&(T!=-1/0)))){
10163 return null;
10164 }
10165 return S.toISOString();
10166 }
10167 var U;
10168 var W=$NaN;
10169 function CheckDateCacheCurrent(){
10170 if(!U){
10171 U=%DateCacheVersion();
10172 if(!U)return;
10173 }
10174 if(U[0]==W){
10175 return;
10176 }
10177 W=U[0];
10178 b=$NaN;
10179 c=(void 0);
10180 q.time=$NaN;
10181 q.string=null;
10182 }
10183 function CreateDate(g){
10184 var n=new a();
10185 n.setTime(g);
10186 return n;
10187 }
10188 %SetCode(a,DateConstructor);
10189 %FunctionSetPrototype(a,new a($NaN));
10190 InstallFunctions(a,2,[
10191 "UTC",DateUTC,
10192 "parse",DateParse,
10193 "now",DateNow
10194 ]);
10195 %AddNamedProperty(a.prototype,"constructor",a,2);
10196 InstallFunctions(a.prototype,2,[
10197 "toString",DateToString,
10198 "toDateString",DateToDateString,
10199 "toTimeString",DateToTimeString,
10200 "toLocaleString",DateToLocaleString,
10201 "toLocaleDateString",DateToLocaleDateString,
10202 "toLocaleTimeString",DateToLocaleTimeString,
10203 "valueOf",DateValueOf,
10204 "getTime",DateGetTime,
10205 "getFullYear",DateGetFullYear,
10206 "getUTCFullYear",DateGetUTCFullYear,
10207 "getMonth",DateGetMonth,
10208 "getUTCMonth",DateGetUTCMonth,
10209 "getDate",DateGetDate,
10210 "getUTCDate",DateGetUTCDate,
10211 "getDay",DateGetDay,
10212 "getUTCDay",DateGetUTCDay,
10213 "getHours",DateGetHours,
10214 "getUTCHours",DateGetUTCHours,
10215 "getMinutes",DateGetMinutes,
10216 "getUTCMinutes",DateGetUTCMinutes,
10217 "getSeconds",DateGetSeconds,
10218 "getUTCSeconds",DateGetUTCSeconds,
10219 "getMilliseconds",DateGetMilliseconds,
10220 "getUTCMilliseconds",DateGetUTCMilliseconds,
10221 "getTimezoneOffset",DateGetTimezoneOffset,
10222 "setTime",DateSetTime,
10223 "setMilliseconds",DateSetMilliseconds,
10224 "setUTCMilliseconds",DateSetUTCMilliseconds,
10225 "setSeconds",DateSetSeconds,
10226 "setUTCSeconds",DateSetUTCSeconds,
10227 "setMinutes",DateSetMinutes,
10228 "setUTCMinutes",DateSetUTCMinutes,
10229 "setHours",DateSetHours,
10230 "setUTCHours",DateSetUTCHours,
10231 "setDate",DateSetDate,
10232 "setUTCDate",DateSetUTCDate,
10233 "setMonth",DateSetMonth,
10234 "setUTCMonth",DateSetUTCMonth,
10235 "setFullYear",DateSetFullYear,
10236 "setUTCFullYear",DateSetUTCFullYear,
10237 "toGMTString",DateToGMTString,
10238 "toUTCString",DateToUTCString,
10239 "getYear",DateGetYear,
10240 "setYear",DateSetYear,
10241 "toISOString",DateToISOString,
10242 "toJSON",DateToJSON
10243 ]);
10244 $createDate=CreateDate;
10245 })();
10246
10247 \18regexp9m
10248 var $regexpExec;
10249 var $regexpExecNoTests;
10250 var $regexpLastMatchInfo;
10251 var $regexpLastMatchInfoOverride;
10252 var harmony_regexps=false;
10253 var harmony_unicode_regexps=false;
10254 (function(){
10255 %CheckIsBootstrapping();
10256 var a=global.RegExp;
10257 $regexpLastMatchInfo=new InternalPackedArray(
10258 2,
10259 "",
10260 (void 0),
10261 0,
10262 0
10263 );
10264 $regexpLastMatchInfoOverride=null;
10265 function DoConstructRegExp(b,c,d){
10266 if((%_IsRegExp(c))){
10267 if(!(d===(void 0))){
10268 throw MakeTypeError('regexp_flags',[]);
10269 }
10270 d=(c.global?'g':'')
10271 +(c.ignoreCase?'i':'')
10272 +(c.multiline?'m':'');
10273 if(harmony_unicode_regexps)
10274 d+=(c.unicode?'u':'');
10275 if(harmony_regexps)
10276 d+=(c.sticky?'y':'');
10277 c=c.source;
10278 }
10279 c=(c===(void 0))?'':ToString(c);
10280 d=(d===(void 0))?'':ToString(d);
10281 %RegExpInitializeAndCompile(b,c,d);
10282 }
10283 function RegExpConstructor(c,d){
10284 if(%_IsConstructCall()){
10285 DoConstructRegExp(this,c,d);
10286 }else{
10287 if((%_IsRegExp(c))&&(d===(void 0))){
10288 return c;
10289 }
10290 return new a(c,d);
10291 }
10292 }
10293 function RegExpCompileJS(c,d){
10294 if(this==a.prototype){
10295 throw MakeTypeError(8,
10296 'RegExp.prototype.compile',this);
10297 }
10298 if((c===(void 0))&&%_ArgumentsLength()!=0){
10299 DoConstructRegExp(this,'undefined',d);
10300 }else{
10301 DoConstructRegExp(this,c,d);
10302 }
10303 }
10304 function DoRegExpExec(e,g,h){
10305 var i=%_RegExpExec(e,g,h,$regexpLastMatchInfo);
10306 if(i!==null)$regexpLastMatchInfoOverride=null;
10307 return i;
10308 }
10309 function RegExpExecNoTests(e,g,j){
10310 var k=%_RegExpExec(e,g,j,$regexpLastMatchInfo);
10311 if(k!==null){
10312 $regexpLastMatchInfoOverride=null;
10313 var l=((k)[0])>>1;
10314 var j=k[3];
10315 var m=k[4];
10316 var n=%_SubString(g,j,m);
10317 var i=%_RegExpConstructResult(l,j,g);
10318 i[0]=n;
10319 if(l==1)return i;
10320 var o=3+2;
10321 for(var q=1;q<l;q++){
10322 j=k[o++];
10323 if(j!=-1){
10324 m=k[o];
10325 i[q]=%_SubString(g,j,m);
10326 }
10327 o++;
10328 }
10329 return i;
10330 ;
10331 }
10332 e.lastIndex=0;
10333 return null;
10334 }
10335 function RegExpExecJS(g){
10336 if(!(%_IsRegExp(this))){
10337 throw MakeTypeError(8,
10338 'RegExp.prototype.exec',this);
10339 }
10340 g=((typeof(%IS_VAR(g))==='string')?g:NonStringToString(g));
10341 var r=this.lastIndex;
10342 var q=(%_IsSmi(%IS_VAR(r))?r:%NumberToInteger(ToNumber(r)));
10343 var t=this.global||(harmony_regexps&&this.sticky);
10344 if(t){
10345 if(q<0||q>g.length){
10346 this.lastIndex=0;
10347 return null;
10348 }
10349 }else{
10350 q=0;
10351 }
10352 var u=%_RegExpExec(this,g,q,$regexpLastMatchInfo);
10353 if((u===null)){
10354 this.lastIndex=0;
10355 return null;
10356 }
10357 $regexpLastMatchInfoOverride=null;
10358 if(t){
10359 this.lastIndex=$regexpLastMatchInfo[4];
10360 }
10361 var l=((u)[0])>>1;
10362 var j=u[3];
10363 var m=u[4];
10364 var n=%_SubString(g,j,m);
10365 var i=%_RegExpConstructResult(l,j,g);
10366 i[0]=n;
10367 if(l==1)return i;
10368 var o=3+2;
10369 for(var q=1;q<l;q++){
10370 j=u[o++];
10371 if(j!=-1){
10372 m=u[o];
10373 i[q]=%_SubString(g,j,m);
10374 }
10375 o++;
10376 }
10377 return i;
10378 ;
10379 }
10380 var w;
10381 var z;
10382 function RegExpTest(g){
10383 if(!(%_IsRegExp(this))){
10384 throw MakeTypeError(8,
10385 'RegExp.prototype.test',this);
10386 }
10387 g=((typeof(%IS_VAR(g))==='string')?g:NonStringToString(g));
10388 var r=this.lastIndex;
10389 var q=(%_IsSmi(%IS_VAR(r))?r:%NumberToInteger(ToNumber(r)));
10390 if(this.global||(harmony_regexps&&this.sticky)){
10391 if(q<0||q>g.length){
10392 this.lastIndex=0;
10393 return false;
10394 }
10395 var u=%_RegExpExec(this,g,q,$regexpLastMatchInfo);
10396 if((u===null)){
10397 this.lastIndex=0;
10398 return false;
10399 }
10400 $regexpLastMatchInfoOverride=null;
10401 this.lastIndex=$regexpLastMatchInfo[4];
10402 return true;
10403 }else{
10404 var e=this;
10405 if(e.source.length>=3&&
10406 %_StringCharCodeAt(e.source,0)==46&&
10407 %_StringCharCodeAt(e.source,1)==42&&
10408 %_StringCharCodeAt(e.source,2)!=63){
10409 e=TrimRegExp(e);
10410 }
10411 var u=%_RegExpExec(e,g,0,$regexpLastMatchInfo);
10412 if((u===null)){
10413 this.lastIndex=0;
10414 return false;
10415 }
10416 $regexpLastMatchInfoOverride=null;
10417 return true;
10418 }
10419 }
10420 function TrimRegExp(e){
10421 if(!%_ObjectEquals(w,e)){
10422 w=e;
10423 z=
10424 new a(%_SubString(e.source,2,e.source.length),
10425 (e.ignoreCase?e.multiline?"im":"i"
10426 :e.multiline?"m":""));
10427 }
10428 return z;
10429 }
10430 function RegExpToString(){
10431 if(!(%_IsRegExp(this))){
10432 throw MakeTypeError(8,
10433 'RegExp.prototype.toString',this);
10434 }
10435 var i='/'+this.source+'/';
10436 if(this.global)i+='g';
10437 if(this.ignoreCase)i+='i';
10438 if(this.multiline)i+='m';
10439 if(harmony_unicode_regexps&&this.unicode)i+='u';
10440 if(harmony_regexps&&this.sticky)i+='y';
10441 return i;
10442 }
10443 function RegExpGetLastMatch(){
10444 if($regexpLastMatchInfoOverride!==null){
10445 return(($regexpLastMatchInfoOverride)[0]);
10446 }
10447 var A=(($regexpLastMatchInfo)[1]);
10448 return %_SubString(A,
10449 $regexpLastMatchInfo[3],
10450 $regexpLastMatchInfo[4]);
10451 }
10452 function RegExpGetLastParen(){
10453 if($regexpLastMatchInfoOverride){
10454 var B=$regexpLastMatchInfoOverride;
10455 if(B.length<=3)return'';
10456 return B[B.length-3];
10457 }
10458 var C=(($regexpLastMatchInfo)[0]);
10459 if(C<=2)return'';
10460 var A=(($regexpLastMatchInfo)[1]);
10461 var j=$regexpLastMatchInfo[(3+(C-2))];
10462 var m=$regexpLastMatchInfo[(3+(C-1))];
10463 if(j!=-1&&m!=-1){
10464 return %_SubString(A,j,m);
10465 }
10466 return"";
10467 }
10468 function RegExpGetLeftContext(){
10469 var D;
10470 var E;
10471 if(!$regexpLastMatchInfoOverride){
10472 D=$regexpLastMatchInfo[3];
10473 E=(($regexpLastMatchInfo)[1]);
10474 }else{
10475 var B=$regexpLastMatchInfoOverride;
10476 D=((B)[(B).length-2]);
10477 E=((B)[(B).length-1]);
10478 }
10479 return %_SubString(E,0,D);
10480 }
10481 function RegExpGetRightContext(){
10482 var D;
10483 var E;
10484 if(!$regexpLastMatchInfoOverride){
10485 D=$regexpLastMatchInfo[4];
10486 E=(($regexpLastMatchInfo)[1]);
10487 }else{
10488 var B=$regexpLastMatchInfoOverride;
10489 E=((B)[(B).length-1]);
10490 var G=((B)[0]);
10491 D=((B)[(B).length-2])+G.length;
10492 }
10493 return %_SubString(E,D,E.length);
10494 }
10495 function RegExpMakeCaptureGetter(H){
10496 return function foo(){
10497 if($regexpLastMatchInfoOverride){
10498 if(H<$regexpLastMatchInfoOverride.length-2){
10499 return(($regexpLastMatchInfoOverride)[(H)]);
10500 }
10501 return'';
10502 }
10503 var h=H*2;
10504 if(h>=(($regexpLastMatchInfo)[0]))return'';
10505 var I=$regexpLastMatchInfo[(3+(h))];
10506 var J=$regexpLastMatchInfo[(3+(h+1))];
10507 if(I==-1||J==-1)return'';
10508 return %_SubString((($regexpLastMatchInfo)[1]),I,J);
10509 };
10510 }
10511 %FunctionSetInstanceClassName(a,'RegExp');
10512 %AddNamedProperty(
10513 a.prototype,'constructor',a,2);
10514 %SetCode(a,RegExpConstructor);
10515 InstallFunctions(a.prototype,2,[
10516 "exec",RegExpExecJS,
10517 "test",RegExpTest,
10518 "toString",RegExpToString,
10519 "compile",RegExpCompileJS
10520 ]);
10521 %FunctionSetLength(a.prototype.compile,1);
10522 var K=function(){
10523 var L=(($regexpLastMatchInfo)[2]);
10524 return(L===(void 0))?"":L;
10525 };
10526 var M=function(g){
10527 (($regexpLastMatchInfo)[2])=ToString(g);
10528 };
10529 %OptimizeObjectForAddingMultipleProperties(a,22);
10530 %DefineAccessorPropertyUnchecked(a,'input',K,
10531 M,4);
10532 %DefineAccessorPropertyUnchecked(a,'$_',K,
10533 M,2|4);
10534 var N=false;
10535 var P=function(){return N;};
10536 var Q=function(R){N=R?true:false;};
10537 %DefineAccessorPropertyUnchecked(a,'multiline',P,
10538 Q,4);
10539 %DefineAccessorPropertyUnchecked(a,'$*',P,
10540 Q,
10541 2|4);
10542 var S=function(T){};
10543 %DefineAccessorPropertyUnchecked(a,'lastMatch',RegExpGetLastMatch,
10544 S,4);
10545 %DefineAccessorPropertyUnchecked(a,'$&',RegExpGetLastMatch,
10546 S,2|4);
10547 %DefineAccessorPropertyUnchecked(a,'lastParen',RegExpGetLastParen,
10548 S,4);
10549 %DefineAccessorPropertyUnchecked(a,'$+',RegExpGetLastParen,
10550 S,2|4);
10551 %DefineAccessorPropertyUnchecked(a,'leftContext',
10552 RegExpGetLeftContext,S,
10553 4);
10554 %DefineAccessorPropertyUnchecked(a,'$`',RegExpGetLeftContext,
10555 S,2|4);
10556 %DefineAccessorPropertyUnchecked(a,'rightContext',
10557 RegExpGetRightContext,S,
10558 4);
10559 %DefineAccessorPropertyUnchecked(a,"$'",RegExpGetRightContext,
10560 S,2|4);
10561 for(var q=1;q<10;++q){
10562 %DefineAccessorPropertyUnchecked(a,'$'+q,
10563 RegExpMakeCaptureGetter(q),S,
10564 4);
10565 }
10566 %ToFastProperties(a);
10567 $regexpExecNoTests=RegExpExecNoTests;
10568 $regexpExec=DoRegExpExec;
10569 })();
10570
10571 ,arraybufferE\17
10572 (function(){
10573 "use strict";
10574 %CheckIsBootstrapping();
10575 var a=global.ArrayBuffer;
10576 var b=global.Object;
10577 function ArrayBufferConstructor(c){
10578 if(%_IsConstructCall()){
10579 var d=ToPositiveInteger(c,'invalid_array_buffer_length');
10580 %ArrayBufferInitialize(this,d);
10581 }else{
10582 throw MakeTypeError('constructor_not_function',["ArrayBuffer"]);
10583 }
10584 }
10585 function ArrayBufferGetByteLen(){
10586 if(!(%_ClassOf(this)==='ArrayBuffer')){
10587 throw MakeTypeError(8,
10588 'ArrayBuffer.prototype.byteLength',this);
10589 }
10590 return %_ArrayBufferGetByteLength(this);
10591 }
10592 function ArrayBufferSlice(e,g){
10593 if(!(%_ClassOf(this)==='ArrayBuffer')){
10594 throw MakeTypeError(8,
10595 'ArrayBuffer.prototype.slice',this);
10596 }
10597 var h=(%_IsSmi(%IS_VAR(e))?e:%NumberToInteger(ToNumber(e)));
10598 if(!(g===(void 0))){
10599 g=(%_IsSmi(%IS_VAR(g))?g:%NumberToInteger(ToNumber(g)));
10600 }
10601 var i;
10602 var j=%_ArrayBufferGetByteLength(this);
10603 if(h<0){
10604 i=$max(j+h,0);
10605 }else{
10606 i=$min(h,j);
10607 }
10608 var k=(g===(void 0))?j:g;
10609 var l;
10610 if(k<0){
10611 l=$max(j+k,0);
10612 }else{
10613 l=$min(k,j);
10614 }
10615 if(l<i){
10616 l=i;
10617 }
10618 var m=l-i;
10619 var n=new a(m);
10620 %ArrayBufferSliceImpl(this,n,i);
10621 return n;
10622 }
10623 function ArrayBufferIsViewJS(o){
10624 return %ArrayBufferIsView(o);
10625 }
10626 %SetCode(a,ArrayBufferConstructor);
10627 %FunctionSetPrototype(a,new b());
10628 %AddNamedProperty(
10629 a.prototype,"constructor",a,2);
10630 %AddNamedProperty(a.prototype,
10631 symbolToStringTag,"ArrayBuffer",2|1);
10632 InstallGetter(a.prototype,"byteLength",ArrayBufferGetByteLen);
10633 InstallFunctions(a,2,[
10634 "isView",ArrayBufferIsViewJS
10635 ]);
10636 InstallFunctions(a.prototype,2,[
10637 "slice",ArrayBufferSlice
10638 ]);
10639 })();
10640
10641 (typedarray:¯\ 2
10642 (function(){
10643 "use strict";
10644 %CheckIsBootstrapping();
10645 var a=global.Array;
10646 var b=global.ArrayBuffer;
10647 function Uint8ArrayConstructByArrayBuffer(c,d,e,g){
10648 if(!(e===(void 0))){
10649 e=
10650 ToPositiveInteger(e,"invalid_typed_array_length");
10651 }
10652 if(!(g===(void 0))){
10653 g=ToPositiveInteger(g,"invalid_typed_array_length");
10654 }
10655 var h=%_ArrayBufferGetByteLength(d);
10656 var i;
10657 if((e===(void 0))){
10658 i=0;
10659 }else{
10660 i=e;
10661 if(i % 1!==0){
10662 throw MakeRangeError("invalid_typed_array_alignment",
10663 ["start offset","Uint8Array",1]);
10664 }
10665 if(i>h){
10666 throw MakeRangeError("invalid_typed_array_offset");
10667 }
10668 }
10669 var j;
10670 var k;
10671 if((g===(void 0))){
10672 if(h % 1!==0){
10673 throw MakeRangeError("invalid_typed_array_alignment",
10674 ["byte length","Uint8Array",1]);
10675 }
10676 j=h-i;
10677 k=j/1;
10678 }else{
10679 var k=g;
10680 j=k*1;
10681 }
10682 if((i+j>h)
10683 ||(k>%_MaxSmi())){
10684 throw MakeRangeError("invalid_typed_array_length");
10685 }
10686 %_TypedArrayInitialize(c,1,d,i,j);
10687 }
10688 function Uint8ArrayConstructByLength(c,g){
10689 var l=(g===(void 0))?
10690 0:ToPositiveInteger(g,"invalid_typed_array_length");
10691 if(l>%_MaxSmi()){
10692 throw MakeRangeError("invalid_typed_array_length");
10693 }
10694 var m=l*1;
10695 if(m>%_TypedArrayMaxSizeInHeap()){
10696 var d=new b(m);
10697 %_TypedArrayInitialize(c,1,d,0,m);
10698 }else{
10699 %_TypedArrayInitialize(c,1,null,0,m);
10700 }
10701 }
10702 function Uint8ArrayConstructByArrayLike(c,n){
10703 var g=n.length;
10704 var l=ToPositiveInteger(g,"invalid_typed_array_length");
10705 if(l>%_MaxSmi()){
10706 throw MakeRangeError("invalid_typed_array_length");
10707 }
10708 if(!%TypedArrayInitializeFromArrayLike(c,1,n,l)){
10709 for(var o=0;o<l;o++){
10710 c[o]=n[o];
10711 }
10712 }
10713 }
10714 function Uint8ArrayConstructor(q,r,t){
10715 if(%_IsConstructCall()){
10716 if((%_ClassOf(q)==='ArrayBuffer')){
10717 Uint8ArrayConstructByArrayBuffer(this,q,r,t);
10718 }else if((typeof(q)==='number')||(typeof(q)==='string')||
10719 (typeof(q)==='boolean')||(q===(void 0))){
10720 Uint8ArrayConstructByLength(this,q);
10721 }else{
10722 Uint8ArrayConstructByArrayLike(this,q);
10723 }
10724 }else{
10725 throw MakeTypeError("constructor_not_function",["Uint8Array"])
10726 }
10727 }
10728 function Uint8Array_GetBuffer(){
10729 if(!(%_ClassOf(this)==='Uint8Array')){
10730 throw MakeTypeError(8,"Uint8Array.buffer",this);
10731 }
10732 return %TypedArrayGetBuffer(this);
10733 }
10734 function Uint8Array_GetByteLength(){
10735 if(!(%_ClassOf(this)==='Uint8Array')){
10736 throw MakeTypeError(8,"Uint8Array.byteLength",this);
10737 }
10738 return %_ArrayBufferViewGetByteLength(this);
10739 }
10740 function Uint8Array_GetByteOffset(){
10741 if(!(%_ClassOf(this)==='Uint8Array')){
10742 throw MakeTypeError(8,"Uint8Array.byteOffset",this);
10743 }
10744 return %_ArrayBufferViewGetByteOffset(this);
10745 }
10746 function Uint8Array_GetLength(){
10747 if(!(%_ClassOf(this)==='Uint8Array')){
10748 throw MakeTypeError(8,"Uint8Array.length",this);
10749 }
10750 return %_TypedArrayGetLength(this);
10751 }
10752 var u=global.Uint8Array;
10753 function Uint8ArraySubArray(w,z){
10754 if(!(%_ClassOf(this)==='Uint8Array')){
10755 throw MakeTypeError(8,"Uint8Array.subarray",this);
10756 }
10757 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
10758 if(!(z===(void 0))){
10759 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
10760 }
10761 var B=%_TypedArrayGetLength(this);
10762 if(A<0){
10763 A=$max(0,B+A);
10764 }else{
10765 A=$min(B,A);
10766 }
10767 var C=(z===(void 0))?B:z;
10768 if(C<0){
10769 C=$max(0,B+C);
10770 }else{
10771 C=$min(C,B);
10772 }
10773 if(C<A){
10774 C=A;
10775 }
10776 var k=C-A;
10777 var D=
10778 %_ArrayBufferViewGetByteOffset(this)+A*1;
10779 return new u(%TypedArrayGetBuffer(this),
10780 D,k);
10781 }
10782
10783 function Int8ArrayConstructByArrayBuffer(c,d,e,g){
10784 if(!(e===(void 0))){
10785 e=
10786 ToPositiveInteger(e,"invalid_typed_array_length");
10787 }
10788 if(!(g===(void 0))){
10789 g=ToPositiveInteger(g,"invalid_typed_array_length");
10790 }
10791 var h=%_ArrayBufferGetByteLength(d);
10792 var i;
10793 if((e===(void 0))){
10794 i=0;
10795 }else{
10796 i=e;
10797 if(i % 1!==0){
10798 throw MakeRangeError("invalid_typed_array_alignment",
10799 ["start offset","Int8Array",1]);
10800 }
10801 if(i>h){
10802 throw MakeRangeError("invalid_typed_array_offset");
10803 }
10804 }
10805 var j;
10806 var k;
10807 if((g===(void 0))){
10808 if(h % 1!==0){
10809 throw MakeRangeError("invalid_typed_array_alignment",
10810 ["byte length","Int8Array",1]);
10811 }
10812 j=h-i;
10813 k=j/1;
10814 }else{
10815 var k=g;
10816 j=k*1;
10817 }
10818 if((i+j>h)
10819 ||(k>%_MaxSmi())){
10820 throw MakeRangeError("invalid_typed_array_length");
10821 }
10822 %_TypedArrayInitialize(c,2,d,i,j);
10823 }
10824 function Int8ArrayConstructByLength(c,g){
10825 var l=(g===(void 0))?
10826 0:ToPositiveInteger(g,"invalid_typed_array_length");
10827 if(l>%_MaxSmi()){
10828 throw MakeRangeError("invalid_typed_array_length");
10829 }
10830 var m=l*1;
10831 if(m>%_TypedArrayMaxSizeInHeap()){
10832 var d=new b(m);
10833 %_TypedArrayInitialize(c,2,d,0,m);
10834 }else{
10835 %_TypedArrayInitialize(c,2,null,0,m);
10836 }
10837 }
10838 function Int8ArrayConstructByArrayLike(c,n){
10839 var g=n.length;
10840 var l=ToPositiveInteger(g,"invalid_typed_array_length");
10841 if(l>%_MaxSmi()){
10842 throw MakeRangeError("invalid_typed_array_length");
10843 }
10844 if(!%TypedArrayInitializeFromArrayLike(c,2,n,l)){
10845 for(var o=0;o<l;o++){
10846 c[o]=n[o];
10847 }
10848 }
10849 }
10850 function Int8ArrayConstructor(q,r,t){
10851 if(%_IsConstructCall()){
10852 if((%_ClassOf(q)==='ArrayBuffer')){
10853 Int8ArrayConstructByArrayBuffer(this,q,r,t);
10854 }else if((typeof(q)==='number')||(typeof(q)==='string')||
10855 (typeof(q)==='boolean')||(q===(void 0))){
10856 Int8ArrayConstructByLength(this,q);
10857 }else{
10858 Int8ArrayConstructByArrayLike(this,q);
10859 }
10860 }else{
10861 throw MakeTypeError("constructor_not_function",["Int8Array"])
10862 }
10863 }
10864 function Int8Array_GetBuffer(){
10865 if(!(%_ClassOf(this)==='Int8Array')){
10866 throw MakeTypeError(8,"Int8Array.buffer",this);
10867 }
10868 return %TypedArrayGetBuffer(this);
10869 }
10870 function Int8Array_GetByteLength(){
10871 if(!(%_ClassOf(this)==='Int8Array')){
10872 throw MakeTypeError(8,"Int8Array.byteLength",this);
10873 }
10874 return %_ArrayBufferViewGetByteLength(this);
10875 }
10876 function Int8Array_GetByteOffset(){
10877 if(!(%_ClassOf(this)==='Int8Array')){
10878 throw MakeTypeError(8,"Int8Array.byteOffset",this);
10879 }
10880 return %_ArrayBufferViewGetByteOffset(this);
10881 }
10882 function Int8Array_GetLength(){
10883 if(!(%_ClassOf(this)==='Int8Array')){
10884 throw MakeTypeError(8,"Int8Array.length",this);
10885 }
10886 return %_TypedArrayGetLength(this);
10887 }
10888 var E=global.Int8Array;
10889 function Int8ArraySubArray(w,z){
10890 if(!(%_ClassOf(this)==='Int8Array')){
10891 throw MakeTypeError(8,"Int8Array.subarray",this);
10892 }
10893 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
10894 if(!(z===(void 0))){
10895 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
10896 }
10897 var B=%_TypedArrayGetLength(this);
10898 if(A<0){
10899 A=$max(0,B+A);
10900 }else{
10901 A=$min(B,A);
10902 }
10903 var C=(z===(void 0))?B:z;
10904 if(C<0){
10905 C=$max(0,B+C);
10906 }else{
10907 C=$min(C,B);
10908 }
10909 if(C<A){
10910 C=A;
10911 }
10912 var k=C-A;
10913 var D=
10914 %_ArrayBufferViewGetByteOffset(this)+A*1;
10915 return new E(%TypedArrayGetBuffer(this),
10916 D,k);
10917 }
10918
10919 function Uint16ArrayConstructByArrayBuffer(c,d,e,g){
10920 if(!(e===(void 0))){
10921 e=
10922 ToPositiveInteger(e,"invalid_typed_array_length");
10923 }
10924 if(!(g===(void 0))){
10925 g=ToPositiveInteger(g,"invalid_typed_array_length");
10926 }
10927 var h=%_ArrayBufferGetByteLength(d);
10928 var i;
10929 if((e===(void 0))){
10930 i=0;
10931 }else{
10932 i=e;
10933 if(i % 2!==0){
10934 throw MakeRangeError("invalid_typed_array_alignment",
10935 ["start offset","Uint16Array",2]);
10936 }
10937 if(i>h){
10938 throw MakeRangeError("invalid_typed_array_offset");
10939 }
10940 }
10941 var j;
10942 var k;
10943 if((g===(void 0))){
10944 if(h % 2!==0){
10945 throw MakeRangeError("invalid_typed_array_alignment",
10946 ["byte length","Uint16Array",2]);
10947 }
10948 j=h-i;
10949 k=j/2;
10950 }else{
10951 var k=g;
10952 j=k*2;
10953 }
10954 if((i+j>h)
10955 ||(k>%_MaxSmi())){
10956 throw MakeRangeError("invalid_typed_array_length");
10957 }
10958 %_TypedArrayInitialize(c,3,d,i,j);
10959 }
10960 function Uint16ArrayConstructByLength(c,g){
10961 var l=(g===(void 0))?
10962 0:ToPositiveInteger(g,"invalid_typed_array_length");
10963 if(l>%_MaxSmi()){
10964 throw MakeRangeError("invalid_typed_array_length");
10965 }
10966 var m=l*2;
10967 if(m>%_TypedArrayMaxSizeInHeap()){
10968 var d=new b(m);
10969 %_TypedArrayInitialize(c,3,d,0,m);
10970 }else{
10971 %_TypedArrayInitialize(c,3,null,0,m);
10972 }
10973 }
10974 function Uint16ArrayConstructByArrayLike(c,n){
10975 var g=n.length;
10976 var l=ToPositiveInteger(g,"invalid_typed_array_length");
10977 if(l>%_MaxSmi()){
10978 throw MakeRangeError("invalid_typed_array_length");
10979 }
10980 if(!%TypedArrayInitializeFromArrayLike(c,3,n,l)){
10981 for(var o=0;o<l;o++){
10982 c[o]=n[o];
10983 }
10984 }
10985 }
10986 function Uint16ArrayConstructor(q,r,t){
10987 if(%_IsConstructCall()){
10988 if((%_ClassOf(q)==='ArrayBuffer')){
10989 Uint16ArrayConstructByArrayBuffer(this,q,r,t);
10990 }else if((typeof(q)==='number')||(typeof(q)==='string')||
10991 (typeof(q)==='boolean')||(q===(void 0))){
10992 Uint16ArrayConstructByLength(this,q);
10993 }else{
10994 Uint16ArrayConstructByArrayLike(this,q);
10995 }
10996 }else{
10997 throw MakeTypeError("constructor_not_function",["Uint16Array"])
10998 }
10999 }
11000 function Uint16Array_GetBuffer(){
11001 if(!(%_ClassOf(this)==='Uint16Array')){
11002 throw MakeTypeError(8,"Uint16Array.buffer",this);
11003 }
11004 return %TypedArrayGetBuffer(this);
11005 }
11006 function Uint16Array_GetByteLength(){
11007 if(!(%_ClassOf(this)==='Uint16Array')){
11008 throw MakeTypeError(8,"Uint16Array.byteLength",this);
11009 }
11010 return %_ArrayBufferViewGetByteLength(this);
11011 }
11012 function Uint16Array_GetByteOffset(){
11013 if(!(%_ClassOf(this)==='Uint16Array')){
11014 throw MakeTypeError(8,"Uint16Array.byteOffset",this);
11015 }
11016 return %_ArrayBufferViewGetByteOffset(this);
11017 }
11018 function Uint16Array_GetLength(){
11019 if(!(%_ClassOf(this)==='Uint16Array')){
11020 throw MakeTypeError(8,"Uint16Array.length",this);
11021 }
11022 return %_TypedArrayGetLength(this);
11023 }
11024 var G=global.Uint16Array;
11025 function Uint16ArraySubArray(w,z){
11026 if(!(%_ClassOf(this)==='Uint16Array')){
11027 throw MakeTypeError(8,"Uint16Array.subarray",this);
11028 }
11029 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11030 if(!(z===(void 0))){
11031 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11032 }
11033 var B=%_TypedArrayGetLength(this);
11034 if(A<0){
11035 A=$max(0,B+A);
11036 }else{
11037 A=$min(B,A);
11038 }
11039 var C=(z===(void 0))?B:z;
11040 if(C<0){
11041 C=$max(0,B+C);
11042 }else{
11043 C=$min(C,B);
11044 }
11045 if(C<A){
11046 C=A;
11047 }
11048 var k=C-A;
11049 var D=
11050 %_ArrayBufferViewGetByteOffset(this)+A*2;
11051 return new G(%TypedArrayGetBuffer(this),
11052 D,k);
11053 }
11054
11055 function Int16ArrayConstructByArrayBuffer(c,d,e,g){
11056 if(!(e===(void 0))){
11057 e=
11058 ToPositiveInteger(e,"invalid_typed_array_length");
11059 }
11060 if(!(g===(void 0))){
11061 g=ToPositiveInteger(g,"invalid_typed_array_length");
11062 }
11063 var h=%_ArrayBufferGetByteLength(d);
11064 var i;
11065 if((e===(void 0))){
11066 i=0;
11067 }else{
11068 i=e;
11069 if(i % 2!==0){
11070 throw MakeRangeError("invalid_typed_array_alignment",
11071 ["start offset","Int16Array",2]);
11072 }
11073 if(i>h){
11074 throw MakeRangeError("invalid_typed_array_offset");
11075 }
11076 }
11077 var j;
11078 var k;
11079 if((g===(void 0))){
11080 if(h % 2!==0){
11081 throw MakeRangeError("invalid_typed_array_alignment",
11082 ["byte length","Int16Array",2]);
11083 }
11084 j=h-i;
11085 k=j/2;
11086 }else{
11087 var k=g;
11088 j=k*2;
11089 }
11090 if((i+j>h)
11091 ||(k>%_MaxSmi())){
11092 throw MakeRangeError("invalid_typed_array_length");
11093 }
11094 %_TypedArrayInitialize(c,4,d,i,j);
11095 }
11096 function Int16ArrayConstructByLength(c,g){
11097 var l=(g===(void 0))?
11098 0:ToPositiveInteger(g,"invalid_typed_array_length");
11099 if(l>%_MaxSmi()){
11100 throw MakeRangeError("invalid_typed_array_length");
11101 }
11102 var m=l*2;
11103 if(m>%_TypedArrayMaxSizeInHeap()){
11104 var d=new b(m);
11105 %_TypedArrayInitialize(c,4,d,0,m);
11106 }else{
11107 %_TypedArrayInitialize(c,4,null,0,m);
11108 }
11109 }
11110 function Int16ArrayConstructByArrayLike(c,n){
11111 var g=n.length;
11112 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11113 if(l>%_MaxSmi()){
11114 throw MakeRangeError("invalid_typed_array_length");
11115 }
11116 if(!%TypedArrayInitializeFromArrayLike(c,4,n,l)){
11117 for(var o=0;o<l;o++){
11118 c[o]=n[o];
11119 }
11120 }
11121 }
11122 function Int16ArrayConstructor(q,r,t){
11123 if(%_IsConstructCall()){
11124 if((%_ClassOf(q)==='ArrayBuffer')){
11125 Int16ArrayConstructByArrayBuffer(this,q,r,t);
11126 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11127 (typeof(q)==='boolean')||(q===(void 0))){
11128 Int16ArrayConstructByLength(this,q);
11129 }else{
11130 Int16ArrayConstructByArrayLike(this,q);
11131 }
11132 }else{
11133 throw MakeTypeError("constructor_not_function",["Int16Array"])
11134 }
11135 }
11136 function Int16Array_GetBuffer(){
11137 if(!(%_ClassOf(this)==='Int16Array')){
11138 throw MakeTypeError(8,"Int16Array.buffer",this);
11139 }
11140 return %TypedArrayGetBuffer(this);
11141 }
11142 function Int16Array_GetByteLength(){
11143 if(!(%_ClassOf(this)==='Int16Array')){
11144 throw MakeTypeError(8,"Int16Array.byteLength",this);
11145 }
11146 return %_ArrayBufferViewGetByteLength(this);
11147 }
11148 function Int16Array_GetByteOffset(){
11149 if(!(%_ClassOf(this)==='Int16Array')){
11150 throw MakeTypeError(8,"Int16Array.byteOffset",this);
11151 }
11152 return %_ArrayBufferViewGetByteOffset(this);
11153 }
11154 function Int16Array_GetLength(){
11155 if(!(%_ClassOf(this)==='Int16Array')){
11156 throw MakeTypeError(8,"Int16Array.length",this);
11157 }
11158 return %_TypedArrayGetLength(this);
11159 }
11160 var H=global.Int16Array;
11161 function Int16ArraySubArray(w,z){
11162 if(!(%_ClassOf(this)==='Int16Array')){
11163 throw MakeTypeError(8,"Int16Array.subarray",this);
11164 }
11165 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11166 if(!(z===(void 0))){
11167 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11168 }
11169 var B=%_TypedArrayGetLength(this);
11170 if(A<0){
11171 A=$max(0,B+A);
11172 }else{
11173 A=$min(B,A);
11174 }
11175 var C=(z===(void 0))?B:z;
11176 if(C<0){
11177 C=$max(0,B+C);
11178 }else{
11179 C=$min(C,B);
11180 }
11181 if(C<A){
11182 C=A;
11183 }
11184 var k=C-A;
11185 var D=
11186 %_ArrayBufferViewGetByteOffset(this)+A*2;
11187 return new H(%TypedArrayGetBuffer(this),
11188 D,k);
11189 }
11190
11191 function Uint32ArrayConstructByArrayBuffer(c,d,e,g){
11192 if(!(e===(void 0))){
11193 e=
11194 ToPositiveInteger(e,"invalid_typed_array_length");
11195 }
11196 if(!(g===(void 0))){
11197 g=ToPositiveInteger(g,"invalid_typed_array_length");
11198 }
11199 var h=%_ArrayBufferGetByteLength(d);
11200 var i;
11201 if((e===(void 0))){
11202 i=0;
11203 }else{
11204 i=e;
11205 if(i % 4!==0){
11206 throw MakeRangeError("invalid_typed_array_alignment",
11207 ["start offset","Uint32Array",4]);
11208 }
11209 if(i>h){
11210 throw MakeRangeError("invalid_typed_array_offset");
11211 }
11212 }
11213 var j;
11214 var k;
11215 if((g===(void 0))){
11216 if(h % 4!==0){
11217 throw MakeRangeError("invalid_typed_array_alignment",
11218 ["byte length","Uint32Array",4]);
11219 }
11220 j=h-i;
11221 k=j/4;
11222 }else{
11223 var k=g;
11224 j=k*4;
11225 }
11226 if((i+j>h)
11227 ||(k>%_MaxSmi())){
11228 throw MakeRangeError("invalid_typed_array_length");
11229 }
11230 %_TypedArrayInitialize(c,5,d,i,j);
11231 }
11232 function Uint32ArrayConstructByLength(c,g){
11233 var l=(g===(void 0))?
11234 0:ToPositiveInteger(g,"invalid_typed_array_length");
11235 if(l>%_MaxSmi()){
11236 throw MakeRangeError("invalid_typed_array_length");
11237 }
11238 var m=l*4;
11239 if(m>%_TypedArrayMaxSizeInHeap()){
11240 var d=new b(m);
11241 %_TypedArrayInitialize(c,5,d,0,m);
11242 }else{
11243 %_TypedArrayInitialize(c,5,null,0,m);
11244 }
11245 }
11246 function Uint32ArrayConstructByArrayLike(c,n){
11247 var g=n.length;
11248 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11249 if(l>%_MaxSmi()){
11250 throw MakeRangeError("invalid_typed_array_length");
11251 }
11252 if(!%TypedArrayInitializeFromArrayLike(c,5,n,l)){
11253 for(var o=0;o<l;o++){
11254 c[o]=n[o];
11255 }
11256 }
11257 }
11258 function Uint32ArrayConstructor(q,r,t){
11259 if(%_IsConstructCall()){
11260 if((%_ClassOf(q)==='ArrayBuffer')){
11261 Uint32ArrayConstructByArrayBuffer(this,q,r,t);
11262 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11263 (typeof(q)==='boolean')||(q===(void 0))){
11264 Uint32ArrayConstructByLength(this,q);
11265 }else{
11266 Uint32ArrayConstructByArrayLike(this,q);
11267 }
11268 }else{
11269 throw MakeTypeError("constructor_not_function",["Uint32Array"])
11270 }
11271 }
11272 function Uint32Array_GetBuffer(){
11273 if(!(%_ClassOf(this)==='Uint32Array')){
11274 throw MakeTypeError(8,"Uint32Array.buffer",this);
11275 }
11276 return %TypedArrayGetBuffer(this);
11277 }
11278 function Uint32Array_GetByteLength(){
11279 if(!(%_ClassOf(this)==='Uint32Array')){
11280 throw MakeTypeError(8,"Uint32Array.byteLength",this);
11281 }
11282 return %_ArrayBufferViewGetByteLength(this);
11283 }
11284 function Uint32Array_GetByteOffset(){
11285 if(!(%_ClassOf(this)==='Uint32Array')){
11286 throw MakeTypeError(8,"Uint32Array.byteOffset",this);
11287 }
11288 return %_ArrayBufferViewGetByteOffset(this);
11289 }
11290 function Uint32Array_GetLength(){
11291 if(!(%_ClassOf(this)==='Uint32Array')){
11292 throw MakeTypeError(8,"Uint32Array.length",this);
11293 }
11294 return %_TypedArrayGetLength(this);
11295 }
11296 var I=global.Uint32Array;
11297 function Uint32ArraySubArray(w,z){
11298 if(!(%_ClassOf(this)==='Uint32Array')){
11299 throw MakeTypeError(8,"Uint32Array.subarray",this);
11300 }
11301 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11302 if(!(z===(void 0))){
11303 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11304 }
11305 var B=%_TypedArrayGetLength(this);
11306 if(A<0){
11307 A=$max(0,B+A);
11308 }else{
11309 A=$min(B,A);
11310 }
11311 var C=(z===(void 0))?B:z;
11312 if(C<0){
11313 C=$max(0,B+C);
11314 }else{
11315 C=$min(C,B);
11316 }
11317 if(C<A){
11318 C=A;
11319 }
11320 var k=C-A;
11321 var D=
11322 %_ArrayBufferViewGetByteOffset(this)+A*4;
11323 return new I(%TypedArrayGetBuffer(this),
11324 D,k);
11325 }
11326
11327 function Int32ArrayConstructByArrayBuffer(c,d,e,g){
11328 if(!(e===(void 0))){
11329 e=
11330 ToPositiveInteger(e,"invalid_typed_array_length");
11331 }
11332 if(!(g===(void 0))){
11333 g=ToPositiveInteger(g,"invalid_typed_array_length");
11334 }
11335 var h=%_ArrayBufferGetByteLength(d);
11336 var i;
11337 if((e===(void 0))){
11338 i=0;
11339 }else{
11340 i=e;
11341 if(i % 4!==0){
11342 throw MakeRangeError("invalid_typed_array_alignment",
11343 ["start offset","Int32Array",4]);
11344 }
11345 if(i>h){
11346 throw MakeRangeError("invalid_typed_array_offset");
11347 }
11348 }
11349 var j;
11350 var k;
11351 if((g===(void 0))){
11352 if(h % 4!==0){
11353 throw MakeRangeError("invalid_typed_array_alignment",
11354 ["byte length","Int32Array",4]);
11355 }
11356 j=h-i;
11357 k=j/4;
11358 }else{
11359 var k=g;
11360 j=k*4;
11361 }
11362 if((i+j>h)
11363 ||(k>%_MaxSmi())){
11364 throw MakeRangeError("invalid_typed_array_length");
11365 }
11366 %_TypedArrayInitialize(c,6,d,i,j);
11367 }
11368 function Int32ArrayConstructByLength(c,g){
11369 var l=(g===(void 0))?
11370 0:ToPositiveInteger(g,"invalid_typed_array_length");
11371 if(l>%_MaxSmi()){
11372 throw MakeRangeError("invalid_typed_array_length");
11373 }
11374 var m=l*4;
11375 if(m>%_TypedArrayMaxSizeInHeap()){
11376 var d=new b(m);
11377 %_TypedArrayInitialize(c,6,d,0,m);
11378 }else{
11379 %_TypedArrayInitialize(c,6,null,0,m);
11380 }
11381 }
11382 function Int32ArrayConstructByArrayLike(c,n){
11383 var g=n.length;
11384 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11385 if(l>%_MaxSmi()){
11386 throw MakeRangeError("invalid_typed_array_length");
11387 }
11388 if(!%TypedArrayInitializeFromArrayLike(c,6,n,l)){
11389 for(var o=0;o<l;o++){
11390 c[o]=n[o];
11391 }
11392 }
11393 }
11394 function Int32ArrayConstructor(q,r,t){
11395 if(%_IsConstructCall()){
11396 if((%_ClassOf(q)==='ArrayBuffer')){
11397 Int32ArrayConstructByArrayBuffer(this,q,r,t);
11398 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11399 (typeof(q)==='boolean')||(q===(void 0))){
11400 Int32ArrayConstructByLength(this,q);
11401 }else{
11402 Int32ArrayConstructByArrayLike(this,q);
11403 }
11404 }else{
11405 throw MakeTypeError("constructor_not_function",["Int32Array"])
11406 }
11407 }
11408 function Int32Array_GetBuffer(){
11409 if(!(%_ClassOf(this)==='Int32Array')){
11410 throw MakeTypeError(8,"Int32Array.buffer",this);
11411 }
11412 return %TypedArrayGetBuffer(this);
11413 }
11414 function Int32Array_GetByteLength(){
11415 if(!(%_ClassOf(this)==='Int32Array')){
11416 throw MakeTypeError(8,"Int32Array.byteLength",this);
11417 }
11418 return %_ArrayBufferViewGetByteLength(this);
11419 }
11420 function Int32Array_GetByteOffset(){
11421 if(!(%_ClassOf(this)==='Int32Array')){
11422 throw MakeTypeError(8,"Int32Array.byteOffset",this);
11423 }
11424 return %_ArrayBufferViewGetByteOffset(this);
11425 }
11426 function Int32Array_GetLength(){
11427 if(!(%_ClassOf(this)==='Int32Array')){
11428 throw MakeTypeError(8,"Int32Array.length",this);
11429 }
11430 return %_TypedArrayGetLength(this);
11431 }
11432 var J=global.Int32Array;
11433 function Int32ArraySubArray(w,z){
11434 if(!(%_ClassOf(this)==='Int32Array')){
11435 throw MakeTypeError(8,"Int32Array.subarray",this);
11436 }
11437 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11438 if(!(z===(void 0))){
11439 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11440 }
11441 var B=%_TypedArrayGetLength(this);
11442 if(A<0){
11443 A=$max(0,B+A);
11444 }else{
11445 A=$min(B,A);
11446 }
11447 var C=(z===(void 0))?B:z;
11448 if(C<0){
11449 C=$max(0,B+C);
11450 }else{
11451 C=$min(C,B);
11452 }
11453 if(C<A){
11454 C=A;
11455 }
11456 var k=C-A;
11457 var D=
11458 %_ArrayBufferViewGetByteOffset(this)+A*4;
11459 return new J(%TypedArrayGetBuffer(this),
11460 D,k);
11461 }
11462
11463 function Float32ArrayConstructByArrayBuffer(c,d,e,g){
11464 if(!(e===(void 0))){
11465 e=
11466 ToPositiveInteger(e,"invalid_typed_array_length");
11467 }
11468 if(!(g===(void 0))){
11469 g=ToPositiveInteger(g,"invalid_typed_array_length");
11470 }
11471 var h=%_ArrayBufferGetByteLength(d);
11472 var i;
11473 if((e===(void 0))){
11474 i=0;
11475 }else{
11476 i=e;
11477 if(i % 4!==0){
11478 throw MakeRangeError("invalid_typed_array_alignment",
11479 ["start offset","Float32Array",4]);
11480 }
11481 if(i>h){
11482 throw MakeRangeError("invalid_typed_array_offset");
11483 }
11484 }
11485 var j;
11486 var k;
11487 if((g===(void 0))){
11488 if(h % 4!==0){
11489 throw MakeRangeError("invalid_typed_array_alignment",
11490 ["byte length","Float32Array",4]);
11491 }
11492 j=h-i;
11493 k=j/4;
11494 }else{
11495 var k=g;
11496 j=k*4;
11497 }
11498 if((i+j>h)
11499 ||(k>%_MaxSmi())){
11500 throw MakeRangeError("invalid_typed_array_length");
11501 }
11502 %_TypedArrayInitialize(c,7,d,i,j);
11503 }
11504 function Float32ArrayConstructByLength(c,g){
11505 var l=(g===(void 0))?
11506 0:ToPositiveInteger(g,"invalid_typed_array_length");
11507 if(l>%_MaxSmi()){
11508 throw MakeRangeError("invalid_typed_array_length");
11509 }
11510 var m=l*4;
11511 if(m>%_TypedArrayMaxSizeInHeap()){
11512 var d=new b(m);
11513 %_TypedArrayInitialize(c,7,d,0,m);
11514 }else{
11515 %_TypedArrayInitialize(c,7,null,0,m);
11516 }
11517 }
11518 function Float32ArrayConstructByArrayLike(c,n){
11519 var g=n.length;
11520 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11521 if(l>%_MaxSmi()){
11522 throw MakeRangeError("invalid_typed_array_length");
11523 }
11524 if(!%TypedArrayInitializeFromArrayLike(c,7,n,l)){
11525 for(var o=0;o<l;o++){
11526 c[o]=n[o];
11527 }
11528 }
11529 }
11530 function Float32ArrayConstructor(q,r,t){
11531 if(%_IsConstructCall()){
11532 if((%_ClassOf(q)==='ArrayBuffer')){
11533 Float32ArrayConstructByArrayBuffer(this,q,r,t);
11534 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11535 (typeof(q)==='boolean')||(q===(void 0))){
11536 Float32ArrayConstructByLength(this,q);
11537 }else{
11538 Float32ArrayConstructByArrayLike(this,q);
11539 }
11540 }else{
11541 throw MakeTypeError("constructor_not_function",["Float32Array"])
11542 }
11543 }
11544 function Float32Array_GetBuffer(){
11545 if(!(%_ClassOf(this)==='Float32Array')){
11546 throw MakeTypeError(8,"Float32Array.buffer",this);
11547 }
11548 return %TypedArrayGetBuffer(this);
11549 }
11550 function Float32Array_GetByteLength(){
11551 if(!(%_ClassOf(this)==='Float32Array')){
11552 throw MakeTypeError(8,"Float32Array.byteLength",this);
11553 }
11554 return %_ArrayBufferViewGetByteLength(this);
11555 }
11556 function Float32Array_GetByteOffset(){
11557 if(!(%_ClassOf(this)==='Float32Array')){
11558 throw MakeTypeError(8,"Float32Array.byteOffset",this);
11559 }
11560 return %_ArrayBufferViewGetByteOffset(this);
11561 }
11562 function Float32Array_GetLength(){
11563 if(!(%_ClassOf(this)==='Float32Array')){
11564 throw MakeTypeError(8,"Float32Array.length",this);
11565 }
11566 return %_TypedArrayGetLength(this);
11567 }
11568 var K=global.Float32Array;
11569 function Float32ArraySubArray(w,z){
11570 if(!(%_ClassOf(this)==='Float32Array')){
11571 throw MakeTypeError(8,"Float32Array.subarray",this);
11572 }
11573 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11574 if(!(z===(void 0))){
11575 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11576 }
11577 var B=%_TypedArrayGetLength(this);
11578 if(A<0){
11579 A=$max(0,B+A);
11580 }else{
11581 A=$min(B,A);
11582 }
11583 var C=(z===(void 0))?B:z;
11584 if(C<0){
11585 C=$max(0,B+C);
11586 }else{
11587 C=$min(C,B);
11588 }
11589 if(C<A){
11590 C=A;
11591 }
11592 var k=C-A;
11593 var D=
11594 %_ArrayBufferViewGetByteOffset(this)+A*4;
11595 return new K(%TypedArrayGetBuffer(this),
11596 D,k);
11597 }
11598
11599 function Float64ArrayConstructByArrayBuffer(c,d,e,g){
11600 if(!(e===(void 0))){
11601 e=
11602 ToPositiveInteger(e,"invalid_typed_array_length");
11603 }
11604 if(!(g===(void 0))){
11605 g=ToPositiveInteger(g,"invalid_typed_array_length");
11606 }
11607 var h=%_ArrayBufferGetByteLength(d);
11608 var i;
11609 if((e===(void 0))){
11610 i=0;
11611 }else{
11612 i=e;
11613 if(i % 8!==0){
11614 throw MakeRangeError("invalid_typed_array_alignment",
11615 ["start offset","Float64Array",8]);
11616 }
11617 if(i>h){
11618 throw MakeRangeError("invalid_typed_array_offset");
11619 }
11620 }
11621 var j;
11622 var k;
11623 if((g===(void 0))){
11624 if(h % 8!==0){
11625 throw MakeRangeError("invalid_typed_array_alignment",
11626 ["byte length","Float64Array",8]);
11627 }
11628 j=h-i;
11629 k=j/8;
11630 }else{
11631 var k=g;
11632 j=k*8;
11633 }
11634 if((i+j>h)
11635 ||(k>%_MaxSmi())){
11636 throw MakeRangeError("invalid_typed_array_length");
11637 }
11638 %_TypedArrayInitialize(c,8,d,i,j);
11639 }
11640 function Float64ArrayConstructByLength(c,g){
11641 var l=(g===(void 0))?
11642 0:ToPositiveInteger(g,"invalid_typed_array_length");
11643 if(l>%_MaxSmi()){
11644 throw MakeRangeError("invalid_typed_array_length");
11645 }
11646 var m=l*8;
11647 if(m>%_TypedArrayMaxSizeInHeap()){
11648 var d=new b(m);
11649 %_TypedArrayInitialize(c,8,d,0,m);
11650 }else{
11651 %_TypedArrayInitialize(c,8,null,0,m);
11652 }
11653 }
11654 function Float64ArrayConstructByArrayLike(c,n){
11655 var g=n.length;
11656 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11657 if(l>%_MaxSmi()){
11658 throw MakeRangeError("invalid_typed_array_length");
11659 }
11660 if(!%TypedArrayInitializeFromArrayLike(c,8,n,l)){
11661 for(var o=0;o<l;o++){
11662 c[o]=n[o];
11663 }
11664 }
11665 }
11666 function Float64ArrayConstructor(q,r,t){
11667 if(%_IsConstructCall()){
11668 if((%_ClassOf(q)==='ArrayBuffer')){
11669 Float64ArrayConstructByArrayBuffer(this,q,r,t);
11670 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11671 (typeof(q)==='boolean')||(q===(void 0))){
11672 Float64ArrayConstructByLength(this,q);
11673 }else{
11674 Float64ArrayConstructByArrayLike(this,q);
11675 }
11676 }else{
11677 throw MakeTypeError("constructor_not_function",["Float64Array"])
11678 }
11679 }
11680 function Float64Array_GetBuffer(){
11681 if(!(%_ClassOf(this)==='Float64Array')){
11682 throw MakeTypeError(8,"Float64Array.buffer",this);
11683 }
11684 return %TypedArrayGetBuffer(this);
11685 }
11686 function Float64Array_GetByteLength(){
11687 if(!(%_ClassOf(this)==='Float64Array')){
11688 throw MakeTypeError(8,"Float64Array.byteLength",this);
11689 }
11690 return %_ArrayBufferViewGetByteLength(this);
11691 }
11692 function Float64Array_GetByteOffset(){
11693 if(!(%_ClassOf(this)==='Float64Array')){
11694 throw MakeTypeError(8,"Float64Array.byteOffset",this);
11695 }
11696 return %_ArrayBufferViewGetByteOffset(this);
11697 }
11698 function Float64Array_GetLength(){
11699 if(!(%_ClassOf(this)==='Float64Array')){
11700 throw MakeTypeError(8,"Float64Array.length",this);
11701 }
11702 return %_TypedArrayGetLength(this);
11703 }
11704 var L=global.Float64Array;
11705 function Float64ArraySubArray(w,z){
11706 if(!(%_ClassOf(this)==='Float64Array')){
11707 throw MakeTypeError(8,"Float64Array.subarray",this);
11708 }
11709 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11710 if(!(z===(void 0))){
11711 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11712 }
11713 var B=%_TypedArrayGetLength(this);
11714 if(A<0){
11715 A=$max(0,B+A);
11716 }else{
11717 A=$min(B,A);
11718 }
11719 var C=(z===(void 0))?B:z;
11720 if(C<0){
11721 C=$max(0,B+C);
11722 }else{
11723 C=$min(C,B);
11724 }
11725 if(C<A){
11726 C=A;
11727 }
11728 var k=C-A;
11729 var D=
11730 %_ArrayBufferViewGetByteOffset(this)+A*8;
11731 return new L(%TypedArrayGetBuffer(this),
11732 D,k);
11733 }
11734
11735 function Uint8ClampedArrayConstructByArrayBuffer(c,d,e,g){
11736 if(!(e===(void 0))){
11737 e=
11738 ToPositiveInteger(e,"invalid_typed_array_length");
11739 }
11740 if(!(g===(void 0))){
11741 g=ToPositiveInteger(g,"invalid_typed_array_length");
11742 }
11743 var h=%_ArrayBufferGetByteLength(d);
11744 var i;
11745 if((e===(void 0))){
11746 i=0;
11747 }else{
11748 i=e;
11749 if(i % 1!==0){
11750 throw MakeRangeError("invalid_typed_array_alignment",
11751 ["start offset","Uint8ClampedArray",1]);
11752 }
11753 if(i>h){
11754 throw MakeRangeError("invalid_typed_array_offset");
11755 }
11756 }
11757 var j;
11758 var k;
11759 if((g===(void 0))){
11760 if(h % 1!==0){
11761 throw MakeRangeError("invalid_typed_array_alignment",
11762 ["byte length","Uint8ClampedArray",1]);
11763 }
11764 j=h-i;
11765 k=j/1;
11766 }else{
11767 var k=g;
11768 j=k*1;
11769 }
11770 if((i+j>h)
11771 ||(k>%_MaxSmi())){
11772 throw MakeRangeError("invalid_typed_array_length");
11773 }
11774 %_TypedArrayInitialize(c,9,d,i,j);
11775 }
11776 function Uint8ClampedArrayConstructByLength(c,g){
11777 var l=(g===(void 0))?
11778 0:ToPositiveInteger(g,"invalid_typed_array_length");
11779 if(l>%_MaxSmi()){
11780 throw MakeRangeError("invalid_typed_array_length");
11781 }
11782 var m=l*1;
11783 if(m>%_TypedArrayMaxSizeInHeap()){
11784 var d=new b(m);
11785 %_TypedArrayInitialize(c,9,d,0,m);
11786 }else{
11787 %_TypedArrayInitialize(c,9,null,0,m);
11788 }
11789 }
11790 function Uint8ClampedArrayConstructByArrayLike(c,n){
11791 var g=n.length;
11792 var l=ToPositiveInteger(g,"invalid_typed_array_length");
11793 if(l>%_MaxSmi()){
11794 throw MakeRangeError("invalid_typed_array_length");
11795 }
11796 if(!%TypedArrayInitializeFromArrayLike(c,9,n,l)){
11797 for(var o=0;o<l;o++){
11798 c[o]=n[o];
11799 }
11800 }
11801 }
11802 function Uint8ClampedArrayConstructor(q,r,t){
11803 if(%_IsConstructCall()){
11804 if((%_ClassOf(q)==='ArrayBuffer')){
11805 Uint8ClampedArrayConstructByArrayBuffer(this,q,r,t);
11806 }else if((typeof(q)==='number')||(typeof(q)==='string')||
11807 (typeof(q)==='boolean')||(q===(void 0))){
11808 Uint8ClampedArrayConstructByLength(this,q);
11809 }else{
11810 Uint8ClampedArrayConstructByArrayLike(this,q);
11811 }
11812 }else{
11813 throw MakeTypeError("constructor_not_function",["Uint8ClampedArray"])
11814 }
11815 }
11816 function Uint8ClampedArray_GetBuffer(){
11817 if(!(%_ClassOf(this)==='Uint8ClampedArray')){
11818 throw MakeTypeError(8,"Uint8ClampedArray.buffer",this);
11819 }
11820 return %TypedArrayGetBuffer(this);
11821 }
11822 function Uint8ClampedArray_GetByteLength(){
11823 if(!(%_ClassOf(this)==='Uint8ClampedArray')){
11824 throw MakeTypeError(8,"Uint8ClampedArray.byteLength",this);
11825 }
11826 return %_ArrayBufferViewGetByteLength(this);
11827 }
11828 function Uint8ClampedArray_GetByteOffset(){
11829 if(!(%_ClassOf(this)==='Uint8ClampedArray')){
11830 throw MakeTypeError(8,"Uint8ClampedArray.byteOffset",this);
11831 }
11832 return %_ArrayBufferViewGetByteOffset(this);
11833 }
11834 function Uint8ClampedArray_GetLength(){
11835 if(!(%_ClassOf(this)==='Uint8ClampedArray')){
11836 throw MakeTypeError(8,"Uint8ClampedArray.length",this);
11837 }
11838 return %_TypedArrayGetLength(this);
11839 }
11840 var M=global.Uint8ClampedArray;
11841 function Uint8ClampedArraySubArray(w,z){
11842 if(!(%_ClassOf(this)==='Uint8ClampedArray')){
11843 throw MakeTypeError(8,"Uint8ClampedArray.subarray",this);
11844 }
11845 var A=(%_IsSmi(%IS_VAR(w))?w:%NumberToInteger(ToNumber(w)));
11846 if(!(z===(void 0))){
11847 z=(%_IsSmi(%IS_VAR(z))?z:%NumberToInteger(ToNumber(z)));
11848 }
11849 var B=%_TypedArrayGetLength(this);
11850 if(A<0){
11851 A=$max(0,B+A);
11852 }else{
11853 A=$min(B,A);
11854 }
11855 var C=(z===(void 0))?B:z;
11856 if(C<0){
11857 C=$max(0,B+C);
11858 }else{
11859 C=$min(C,B);
11860 }
11861 if(C<A){
11862 C=A;
11863 }
11864 var k=C-A;
11865 var D=
11866 %_ArrayBufferViewGetByteOffset(this)+A*1;
11867 return new M(%TypedArrayGetBuffer(this),
11868 D,k);
11869 }
11870
11871
11872 function TypedArraySetFromArrayLike(N,P,Q,i){
11873 if(i>0){
11874 for(var o=0;o<Q;o++){
11875 N[i+o]=P[o];
11876 }
11877 }
11878 else{
11879 for(var o=0;o<Q;o++){
11880 N[o]=P[o];
11881 }
11882 }
11883 }
11884 function TypedArraySetFromOverlappingTypedArray(N,P,i){
11885 var R=P.BYTES_PER_ELEMENT;
11886 var S=N.BYTES_PER_ELEMENT;
11887 var Q=P.length;
11888 function CopyLeftPart(){
11889 var T=N.byteOffset+(i+1)*S;
11890 var U=P.byteOffset;
11891 for(var W=0;
11892 W<Q&&T<=U;
11893 W++){
11894 N[i+W]=P[W];
11895 T+=S;
11896 U+=R;
11897 }
11898 return W;
11899 }
11900 var W=CopyLeftPart();
11901 function CopyRightPart(){
11902 var T=
11903 N.byteOffset+(i+Q-1)*S;
11904 var U=
11905 P.byteOffset+Q*R;
11906 for(var X=Q-1;
11907 X>=W&&T>=U;
11908 X--){
11909 N[i+X]=P[X];
11910 T-=S;
11911 U-=R;
11912 }
11913 return X;
11914 }
11915 var X=CopyRightPart();
11916 var Y=new a(X+1-W);
11917 for(var o=W;o<=X;o++){
11918 Y[o-W]=P[o];
11919 }
11920 for(o=W;o<=X;o++){
11921 N[i+o]=Y[o-W];
11922 }
11923 }
11924 function TypedArraySet(c,i){
11925 var Z=(i===(void 0))?0:(%_IsSmi(%IS_VAR(i))?i:%NumberToInteger(ToNumber(i)));
11926 if(Z<0){
11927 throw MakeTypeError("typed_array_set_negative_offset");
11928 }
11929 if(Z>%_MaxSmi()){
11930 throw MakeRangeError("typed_array_set_source_too_large");
11931 }
11932 switch(%TypedArraySetFastCases(this,c,Z)){
11933 case 0:
11934 return;
11935 case 1:
11936 TypedArraySetFromOverlappingTypedArray(this,c,Z);
11937 return;
11938 case 2:
11939 TypedArraySetFromArrayLike(this,c,c.length,Z);
11940 return;
11941 case 3:
11942 var l=c.length;
11943 if((l===(void 0))){
11944 if((typeof(c)==='number')){
11945 throw MakeTypeError("invalid_argument");
11946 }
11947 return;
11948 }
11949 if(Z+l>this.length){
11950 throw MakeRangeError("typed_array_set_source_too_large");
11951 }
11952 TypedArraySetFromArrayLike(this,c,l,Z);
11953 return;
11954 }
11955 }
11956 function TypedArrayGetToStringTag(){
11957 if(!%IsTypedArray(this))return;
11958 var aa=%_ClassOf(this);
11959 if((aa===(void 0)))return;
11960 return aa;
11961 }
11962 %SetCode(global.Uint8Array,Uint8ArrayConstructor);
11963 %FunctionSetPrototype(global.Uint8Array,new $Object());
11964 %AddNamedProperty(global.Uint8Array,"BYTES_PER_ELEMENT",1,
11965 1|2|4);
11966 %AddNamedProperty(global.Uint8Array.prototype,
11967 "constructor",global.Uint8Array,2);
11968 %AddNamedProperty(global.Uint8Array.prototype,
11969 "BYTES_PER_ELEMENT",1,
11970 1|2|4);
11971 InstallGetter(global.Uint8Array.prototype,"buffer",Uint8Array_GetBuffer);
11972 InstallGetter(global.Uint8Array.prototype,"byteOffset",Uint8Array_GetByteOffset,
11973 2|4);
11974 InstallGetter(global.Uint8Array.prototype,"byteLength",Uint8Array_GetByteLength,
11975 2|4);
11976 InstallGetter(global.Uint8Array.prototype,"length",Uint8Array_GetLength,
11977 2|4);
11978 InstallGetter(global.Uint8Array.prototype,symbolToStringTag,
11979 TypedArrayGetToStringTag);
11980 InstallFunctions(global.Uint8Array.prototype,2,[
11981 "subarray",Uint8ArraySubArray,
11982 "set",TypedArraySet
11983 ]);
11984
11985 %SetCode(global.Int8Array,Int8ArrayConstructor);
11986 %FunctionSetPrototype(global.Int8Array,new $Object());
11987 %AddNamedProperty(global.Int8Array,"BYTES_PER_ELEMENT",1,
11988 1|2|4);
11989 %AddNamedProperty(global.Int8Array.prototype,
11990 "constructor",global.Int8Array,2);
11991 %AddNamedProperty(global.Int8Array.prototype,
11992 "BYTES_PER_ELEMENT",1,
11993 1|2|4);
11994 InstallGetter(global.Int8Array.prototype,"buffer",Int8Array_GetBuffer);
11995 InstallGetter(global.Int8Array.prototype,"byteOffset",Int8Array_GetByteOffset,
11996 2|4);
11997 InstallGetter(global.Int8Array.prototype,"byteLength",Int8Array_GetByteLength,
11998 2|4);
11999 InstallGetter(global.Int8Array.prototype,"length",Int8Array_GetLength,
12000 2|4);
12001 InstallGetter(global.Int8Array.prototype,symbolToStringTag,
12002 TypedArrayGetToStringTag);
12003 InstallFunctions(global.Int8Array.prototype,2,[
12004 "subarray",Int8ArraySubArray,
12005 "set",TypedArraySet
12006 ]);
12007
12008 %SetCode(global.Uint16Array,Uint16ArrayConstructor);
12009 %FunctionSetPrototype(global.Uint16Array,new $Object());
12010 %AddNamedProperty(global.Uint16Array,"BYTES_PER_ELEMENT",2,
12011 1|2|4);
12012 %AddNamedProperty(global.Uint16Array.prototype,
12013 "constructor",global.Uint16Array,2);
12014 %AddNamedProperty(global.Uint16Array.prototype,
12015 "BYTES_PER_ELEMENT",2,
12016 1|2|4);
12017 InstallGetter(global.Uint16Array.prototype,"buffer",Uint16Array_GetBuffer);
12018 InstallGetter(global.Uint16Array.prototype,"byteOffset",Uint16Array_GetByteOffset,
12019 2|4);
12020 InstallGetter(global.Uint16Array.prototype,"byteLength",Uint16Array_GetByteLength,
12021 2|4);
12022 InstallGetter(global.Uint16Array.prototype,"length",Uint16Array_GetLength,
12023 2|4);
12024 InstallGetter(global.Uint16Array.prototype,symbolToStringTag,
12025 TypedArrayGetToStringTag);
12026 InstallFunctions(global.Uint16Array.prototype,2,[
12027 "subarray",Uint16ArraySubArray,
12028 "set",TypedArraySet
12029 ]);
12030
12031 %SetCode(global.Int16Array,Int16ArrayConstructor);
12032 %FunctionSetPrototype(global.Int16Array,new $Object());
12033 %AddNamedProperty(global.Int16Array,"BYTES_PER_ELEMENT",2,
12034 1|2|4);
12035 %AddNamedProperty(global.Int16Array.prototype,
12036 "constructor",global.Int16Array,2);
12037 %AddNamedProperty(global.Int16Array.prototype,
12038 "BYTES_PER_ELEMENT",2,
12039 1|2|4);
12040 InstallGetter(global.Int16Array.prototype,"buffer",Int16Array_GetBuffer);
12041 InstallGetter(global.Int16Array.prototype,"byteOffset",Int16Array_GetByteOffset,
12042 2|4);
12043 InstallGetter(global.Int16Array.prototype,"byteLength",Int16Array_GetByteLength,
12044 2|4);
12045 InstallGetter(global.Int16Array.prototype,"length",Int16Array_GetLength,
12046 2|4);
12047 InstallGetter(global.Int16Array.prototype,symbolToStringTag,
12048 TypedArrayGetToStringTag);
12049 InstallFunctions(global.Int16Array.prototype,2,[
12050 "subarray",Int16ArraySubArray,
12051 "set",TypedArraySet
12052 ]);
12053
12054 %SetCode(global.Uint32Array,Uint32ArrayConstructor);
12055 %FunctionSetPrototype(global.Uint32Array,new $Object());
12056 %AddNamedProperty(global.Uint32Array,"BYTES_PER_ELEMENT",4,
12057 1|2|4);
12058 %AddNamedProperty(global.Uint32Array.prototype,
12059 "constructor",global.Uint32Array,2);
12060 %AddNamedProperty(global.Uint32Array.prototype,
12061 "BYTES_PER_ELEMENT",4,
12062 1|2|4);
12063 InstallGetter(global.Uint32Array.prototype,"buffer",Uint32Array_GetBuffer);
12064 InstallGetter(global.Uint32Array.prototype,"byteOffset",Uint32Array_GetByteOffset,
12065 2|4);
12066 InstallGetter(global.Uint32Array.prototype,"byteLength",Uint32Array_GetByteLength,
12067 2|4);
12068 InstallGetter(global.Uint32Array.prototype,"length",Uint32Array_GetLength,
12069 2|4);
12070 InstallGetter(global.Uint32Array.prototype,symbolToStringTag,
12071 TypedArrayGetToStringTag);
12072 InstallFunctions(global.Uint32Array.prototype,2,[
12073 "subarray",Uint32ArraySubArray,
12074 "set",TypedArraySet
12075 ]);
12076
12077 %SetCode(global.Int32Array,Int32ArrayConstructor);
12078 %FunctionSetPrototype(global.Int32Array,new $Object());
12079 %AddNamedProperty(global.Int32Array,"BYTES_PER_ELEMENT",4,
12080 1|2|4);
12081 %AddNamedProperty(global.Int32Array.prototype,
12082 "constructor",global.Int32Array,2);
12083 %AddNamedProperty(global.Int32Array.prototype,
12084 "BYTES_PER_ELEMENT",4,
12085 1|2|4);
12086 InstallGetter(global.Int32Array.prototype,"buffer",Int32Array_GetBuffer);
12087 InstallGetter(global.Int32Array.prototype,"byteOffset",Int32Array_GetByteOffset,
12088 2|4);
12089 InstallGetter(global.Int32Array.prototype,"byteLength",Int32Array_GetByteLength,
12090 2|4);
12091 InstallGetter(global.Int32Array.prototype,"length",Int32Array_GetLength,
12092 2|4);
12093 InstallGetter(global.Int32Array.prototype,symbolToStringTag,
12094 TypedArrayGetToStringTag);
12095 InstallFunctions(global.Int32Array.prototype,2,[
12096 "subarray",Int32ArraySubArray,
12097 "set",TypedArraySet
12098 ]);
12099
12100 %SetCode(global.Float32Array,Float32ArrayConstructor);
12101 %FunctionSetPrototype(global.Float32Array,new $Object());
12102 %AddNamedProperty(global.Float32Array,"BYTES_PER_ELEMENT",4,
12103 1|2|4);
12104 %AddNamedProperty(global.Float32Array.prototype,
12105 "constructor",global.Float32Array,2);
12106 %AddNamedProperty(global.Float32Array.prototype,
12107 "BYTES_PER_ELEMENT",4,
12108 1|2|4);
12109 InstallGetter(global.Float32Array.prototype,"buffer",Float32Array_GetBuffer);
12110 InstallGetter(global.Float32Array.prototype,"byteOffset",Float32Array_GetByteOffset,
12111 2|4);
12112 InstallGetter(global.Float32Array.prototype,"byteLength",Float32Array_GetByteLength,
12113 2|4);
12114 InstallGetter(global.Float32Array.prototype,"length",Float32Array_GetLength,
12115 2|4);
12116 InstallGetter(global.Float32Array.prototype,symbolToStringTag,
12117 TypedArrayGetToStringTag);
12118 InstallFunctions(global.Float32Array.prototype,2,[
12119 "subarray",Float32ArraySubArray,
12120 "set",TypedArraySet
12121 ]);
12122
12123 %SetCode(global.Float64Array,Float64ArrayConstructor);
12124 %FunctionSetPrototype(global.Float64Array,new $Object());
12125 %AddNamedProperty(global.Float64Array,"BYTES_PER_ELEMENT",8,
12126 1|2|4);
12127 %AddNamedProperty(global.Float64Array.prototype,
12128 "constructor",global.Float64Array,2);
12129 %AddNamedProperty(global.Float64Array.prototype,
12130 "BYTES_PER_ELEMENT",8,
12131 1|2|4);
12132 InstallGetter(global.Float64Array.prototype,"buffer",Float64Array_GetBuffer);
12133 InstallGetter(global.Float64Array.prototype,"byteOffset",Float64Array_GetByteOffset,
12134 2|4);
12135 InstallGetter(global.Float64Array.prototype,"byteLength",Float64Array_GetByteLength,
12136 2|4);
12137 InstallGetter(global.Float64Array.prototype,"length",Float64Array_GetLength,
12138 2|4);
12139 InstallGetter(global.Float64Array.prototype,symbolToStringTag,
12140 TypedArrayGetToStringTag);
12141 InstallFunctions(global.Float64Array.prototype,2,[
12142 "subarray",Float64ArraySubArray,
12143 "set",TypedArraySet
12144 ]);
12145
12146 %SetCode(global.Uint8ClampedArray,Uint8ClampedArrayConstructor);
12147 %FunctionSetPrototype(global.Uint8ClampedArray,new $Object());
12148 %AddNamedProperty(global.Uint8ClampedArray,"BYTES_PER_ELEMENT",1,
12149 1|2|4);
12150 %AddNamedProperty(global.Uint8ClampedArray.prototype,
12151 "constructor",global.Uint8ClampedArray,2);
12152 %AddNamedProperty(global.Uint8ClampedArray.prototype,
12153 "BYTES_PER_ELEMENT",1,
12154 1|2|4);
12155 InstallGetter(global.Uint8ClampedArray.prototype,"buffer",Uint8ClampedArray_GetBuffer);
12156 InstallGetter(global.Uint8ClampedArray.prototype,"byteOffset",Uint8ClampedArray_GetByteOffset,
12157 2|4);
12158 InstallGetter(global.Uint8ClampedArray.prototype,"byteLength",Uint8ClampedArray_GetByteLength,
12159 2|4);
12160 InstallGetter(global.Uint8ClampedArray.prototype,"length",Uint8ClampedArray_GetLength,
12161 2|4);
12162 InstallGetter(global.Uint8ClampedArray.prototype,symbolToStringTag,
12163 TypedArrayGetToStringTag);
12164 InstallFunctions(global.Uint8ClampedArray.prototype,2,[
12165 "subarray",Uint8ClampedArraySubArray,
12166 "set",TypedArraySet
12167 ]);
12168
12169
12170 var ab=global.DataView;
12171 function DataViewConstructor(d,e,m){
12172 if(%_IsConstructCall()){
12173 if(!(%_ClassOf(d)==='ArrayBuffer')){
12174 throw MakeTypeError('data_view_not_array_buffer',[]);
12175 }
12176 if(!(e===(void 0))){
12177 e=ToPositiveInteger(e,'invalid_data_view_offset');
12178 }
12179 if(!(m===(void 0))){
12180 m=(%_IsSmi(%IS_VAR(m))?m:%NumberToInteger(ToNumber(m)));
12181 }
12182 var h=%_ArrayBufferGetByteLength(d);
12183 var i=(e===(void 0))?0:e;
12184 if(i>h){
12185 throw MakeRangeError('invalid_data_view_offset');
12186 }
12187 var g=(m===(void 0))
12188 ?h-i
12189 :m;
12190 if(g<0||i+g>h){
12191 throw new MakeRangeError('invalid_data_view_length');
12192 }
12193 %_DataViewInitialize(this,d,i,g);
12194 }else{
12195 throw MakeTypeError('constructor_not_function',["DataView"]);
12196 }
12197 }
12198 function DataViewGetBufferJS(){
12199 if(!(%_ClassOf(this)==='DataView')){
12200 throw MakeTypeError(8,'DataView.buffer',this);
12201 }
12202 return %DataViewGetBuffer(this);
12203 }
12204 function DataViewGetByteOffset(){
12205 if(!(%_ClassOf(this)==='DataView')){
12206 throw MakeTypeError(8,
12207 'DataView.byteOffset',this);
12208 }
12209 return %_ArrayBufferViewGetByteOffset(this);
12210 }
12211 function DataViewGetByteLength(){
12212 if(!(%_ClassOf(this)==='DataView')){
12213 throw MakeTypeError(8,
12214 'DataView.byteLength',this);
12215 }
12216 return %_ArrayBufferViewGetByteLength(this);
12217 }
12218 function ToPositiveDataViewOffset(i){
12219 return ToPositiveInteger(i,'invalid_data_view_accessor_offset');
12220 }
12221 function DataViewGetInt8JS(i,ac){
12222 if(!(%_ClassOf(this)==='DataView')){
12223 throw MakeTypeError(8,
12224 'DataView.getInt8',this);
12225 }
12226 if(%_ArgumentsLength()<1){
12227 throw MakeTypeError('invalid_argument');
12228 }
12229 return %DataViewGetInt8(this,
12230 ToPositiveDataViewOffset(i),
12231 !!ac);
12232 }
12233 function DataViewSetInt8JS(i,ad,ac){
12234 if(!(%_ClassOf(this)==='DataView')){
12235 throw MakeTypeError(8,
12236 'DataView.setInt8',this);
12237 }
12238 if(%_ArgumentsLength()<2){
12239 throw MakeTypeError('invalid_argument');
12240 }
12241 %DataViewSetInt8(this,
12242 ToPositiveDataViewOffset(i),
12243 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12244 !!ac);
12245 }
12246
12247 function DataViewGetUint8JS(i,ac){
12248 if(!(%_ClassOf(this)==='DataView')){
12249 throw MakeTypeError(8,
12250 'DataView.getUint8',this);
12251 }
12252 if(%_ArgumentsLength()<1){
12253 throw MakeTypeError('invalid_argument');
12254 }
12255 return %DataViewGetUint8(this,
12256 ToPositiveDataViewOffset(i),
12257 !!ac);
12258 }
12259 function DataViewSetUint8JS(i,ad,ac){
12260 if(!(%_ClassOf(this)==='DataView')){
12261 throw MakeTypeError(8,
12262 'DataView.setUint8',this);
12263 }
12264 if(%_ArgumentsLength()<2){
12265 throw MakeTypeError('invalid_argument');
12266 }
12267 %DataViewSetUint8(this,
12268 ToPositiveDataViewOffset(i),
12269 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12270 !!ac);
12271 }
12272
12273 function DataViewGetInt16JS(i,ac){
12274 if(!(%_ClassOf(this)==='DataView')){
12275 throw MakeTypeError(8,
12276 'DataView.getInt16',this);
12277 }
12278 if(%_ArgumentsLength()<1){
12279 throw MakeTypeError('invalid_argument');
12280 }
12281 return %DataViewGetInt16(this,
12282 ToPositiveDataViewOffset(i),
12283 !!ac);
12284 }
12285 function DataViewSetInt16JS(i,ad,ac){
12286 if(!(%_ClassOf(this)==='DataView')){
12287 throw MakeTypeError(8,
12288 'DataView.setInt16',this);
12289 }
12290 if(%_ArgumentsLength()<2){
12291 throw MakeTypeError('invalid_argument');
12292 }
12293 %DataViewSetInt16(this,
12294 ToPositiveDataViewOffset(i),
12295 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12296 !!ac);
12297 }
12298
12299 function DataViewGetUint16JS(i,ac){
12300 if(!(%_ClassOf(this)==='DataView')){
12301 throw MakeTypeError(8,
12302 'DataView.getUint16',this);
12303 }
12304 if(%_ArgumentsLength()<1){
12305 throw MakeTypeError('invalid_argument');
12306 }
12307 return %DataViewGetUint16(this,
12308 ToPositiveDataViewOffset(i),
12309 !!ac);
12310 }
12311 function DataViewSetUint16JS(i,ad,ac){
12312 if(!(%_ClassOf(this)==='DataView')){
12313 throw MakeTypeError(8,
12314 'DataView.setUint16',this);
12315 }
12316 if(%_ArgumentsLength()<2){
12317 throw MakeTypeError('invalid_argument');
12318 }
12319 %DataViewSetUint16(this,
12320 ToPositiveDataViewOffset(i),
12321 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12322 !!ac);
12323 }
12324
12325 function DataViewGetInt32JS(i,ac){
12326 if(!(%_ClassOf(this)==='DataView')){
12327 throw MakeTypeError(8,
12328 'DataView.getInt32',this);
12329 }
12330 if(%_ArgumentsLength()<1){
12331 throw MakeTypeError('invalid_argument');
12332 }
12333 return %DataViewGetInt32(this,
12334 ToPositiveDataViewOffset(i),
12335 !!ac);
12336 }
12337 function DataViewSetInt32JS(i,ad,ac){
12338 if(!(%_ClassOf(this)==='DataView')){
12339 throw MakeTypeError(8,
12340 'DataView.setInt32',this);
12341 }
12342 if(%_ArgumentsLength()<2){
12343 throw MakeTypeError('invalid_argument');
12344 }
12345 %DataViewSetInt32(this,
12346 ToPositiveDataViewOffset(i),
12347 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12348 !!ac);
12349 }
12350
12351 function DataViewGetUint32JS(i,ac){
12352 if(!(%_ClassOf(this)==='DataView')){
12353 throw MakeTypeError(8,
12354 'DataView.getUint32',this);
12355 }
12356 if(%_ArgumentsLength()<1){
12357 throw MakeTypeError('invalid_argument');
12358 }
12359 return %DataViewGetUint32(this,
12360 ToPositiveDataViewOffset(i),
12361 !!ac);
12362 }
12363 function DataViewSetUint32JS(i,ad,ac){
12364 if(!(%_ClassOf(this)==='DataView')){
12365 throw MakeTypeError(8,
12366 'DataView.setUint32',this);
12367 }
12368 if(%_ArgumentsLength()<2){
12369 throw MakeTypeError('invalid_argument');
12370 }
12371 %DataViewSetUint32(this,
12372 ToPositiveDataViewOffset(i),
12373 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12374 !!ac);
12375 }
12376
12377 function DataViewGetFloat32JS(i,ac){
12378 if(!(%_ClassOf(this)==='DataView')){
12379 throw MakeTypeError(8,
12380 'DataView.getFloat32',this);
12381 }
12382 if(%_ArgumentsLength()<1){
12383 throw MakeTypeError('invalid_argument');
12384 }
12385 return %DataViewGetFloat32(this,
12386 ToPositiveDataViewOffset(i),
12387 !!ac);
12388 }
12389 function DataViewSetFloat32JS(i,ad,ac){
12390 if(!(%_ClassOf(this)==='DataView')){
12391 throw MakeTypeError(8,
12392 'DataView.setFloat32',this);
12393 }
12394 if(%_ArgumentsLength()<2){
12395 throw MakeTypeError('invalid_argument');
12396 }
12397 %DataViewSetFloat32(this,
12398 ToPositiveDataViewOffset(i),
12399 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12400 !!ac);
12401 }
12402
12403 function DataViewGetFloat64JS(i,ac){
12404 if(!(%_ClassOf(this)==='DataView')){
12405 throw MakeTypeError(8,
12406 'DataView.getFloat64',this);
12407 }
12408 if(%_ArgumentsLength()<1){
12409 throw MakeTypeError('invalid_argument');
12410 }
12411 return %DataViewGetFloat64(this,
12412 ToPositiveDataViewOffset(i),
12413 !!ac);
12414 }
12415 function DataViewSetFloat64JS(i,ad,ac){
12416 if(!(%_ClassOf(this)==='DataView')){
12417 throw MakeTypeError(8,
12418 'DataView.setFloat64',this);
12419 }
12420 if(%_ArgumentsLength()<2){
12421 throw MakeTypeError('invalid_argument');
12422 }
12423 %DataViewSetFloat64(this,
12424 ToPositiveDataViewOffset(i),
12425 ((typeof(%IS_VAR(ad))==='number')?ad:NonNumberToNumber(ad)),
12426 !!ac);
12427 }
12428
12429
12430 %SetCode(ab,DataViewConstructor);
12431 %FunctionSetPrototype(ab,new $Object);
12432 %AddNamedProperty(ab.prototype,"constructor",ab,2);
12433 %AddNamedProperty(
12434 ab.prototype,symbolToStringTag,"DataView",1|2);
12435 InstallGetter(ab.prototype,"buffer",DataViewGetBufferJS);
12436 InstallGetter(ab.prototype,"byteOffset",DataViewGetByteOffset);
12437 InstallGetter(ab.prototype,"byteLength",DataViewGetByteLength);
12438 InstallFunctions(ab.prototype,2,[
12439 "getInt8",DataViewGetInt8JS,
12440 "setInt8",DataViewSetInt8JS,
12441 "getUint8",DataViewGetUint8JS,
12442 "setUint8",DataViewSetUint8JS,
12443 "getInt16",DataViewGetInt16JS,
12444 "setInt16",DataViewSetInt16JS,
12445 "getUint16",DataViewGetUint16JS,
12446 "setUint16",DataViewSetUint16JS,
12447 "getInt32",DataViewGetInt32JS,
12448 "setInt32",DataViewSetInt32JS,
12449 "getUint32",DataViewGetUint32JS,
12450 "setUint32",DataViewSetUint32JS,
12451 "getFloat32",DataViewGetFloat32JS,
12452 "setFloat32",DataViewSetFloat32JS,
12453 "getFloat64",DataViewGetFloat64JS,
12454 "setFloat64",DataViewSetFloat64JS
12455 ]);
12456 })();
12457
12458 $generator½\1d
12459 (function(){
12460 "use strict";
12461 %CheckIsBootstrapping();
12462 var a=global.Function;
12463 function GeneratorObjectNext(b){
12464 if(!(%_ClassOf(this)==='Generator')){
12465 throw MakeTypeError(8,
12466 '[Generator].prototype.next',this);
12467 }
12468 var c=%GeneratorGetContinuation(this);
12469 if(c>0){
12470 if((%_DebugIsActive()!=0))%DebugPrepareStepInIfStepping(this);
12471 try{
12472 return %_GeneratorNext(this,b);
12473 }catch(e){
12474 %GeneratorClose(this);
12475 throw e;
12476 }
12477 }else if(c==0){
12478 return{value:void 0,done:true};
12479 }else{
12480 throw MakeTypeError(6);
12481 }
12482 }
12483 function GeneratorObjectThrow(d){
12484 if(!(%_ClassOf(this)==='Generator')){
12485 throw MakeTypeError(8,
12486 '[Generator].prototype.throw',this);
12487 }
12488 var c=%GeneratorGetContinuation(this);
12489 if(c>0){
12490 try{
12491 return %_GeneratorThrow(this,d);
12492 }catch(e){
12493 %GeneratorClose(this);
12494 throw e;
12495 }
12496 }else if(c==0){
12497 throw d;
12498 }else{
12499 throw MakeTypeError(6);
12500 }
12501 }
12502 function GeneratorObjectIterator(){
12503 return this;
12504 }
12505 function GeneratorFunctionConstructor(e){
12506 var g=NewFunctionString(arguments,'function*');
12507 var h=%GlobalProxy(global);
12508 var i=%_CallFunction(h,%CompileString(g,true));
12509 %FunctionMarkNameShouldPrintAsAnonymous(i);
12510 return i;
12511 }
12512 %NeverOptimizeFunction(GeneratorObjectNext);
12513 %NeverOptimizeFunction(GeneratorObjectThrow);
12514 var j=GeneratorFunctionPrototype.prototype;
12515 InstallFunctions(j,
12516 2,
12517 ["next",GeneratorObjectNext,
12518 "throw",GeneratorObjectThrow]);
12519 %FunctionSetName(GeneratorObjectIterator,'[Symbol.iterator]');
12520 %AddNamedProperty(j,symbolIterator,
12521 GeneratorObjectIterator,2|4|1);
12522 %AddNamedProperty(j,"constructor",
12523 GeneratorFunctionPrototype,2|1);
12524 %AddNamedProperty(j,
12525 symbolToStringTag,"Generator",2|1);
12526 %InternalSetPrototype(GeneratorFunctionPrototype,a.prototype);
12527 %AddNamedProperty(GeneratorFunctionPrototype,
12528 symbolToStringTag,"GeneratorFunction",2|1);
12529 %AddNamedProperty(GeneratorFunctionPrototype,"constructor",
12530 GeneratorFunction,2|1);
12531 %InternalSetPrototype(GeneratorFunction,a);
12532 %SetCode(GeneratorFunction,GeneratorFunctionConstructor);
12533 })();
12534
12535 8object-observeM²
12536 var $observeNotifyChange;
12537 var $observeEnqueueSpliceRecord;
12538 var $observeBeginPerformSplice;
12539 var $observeEndPerformSplice;
12540 var $observeNativeObjectObserve;
12541 var $observeNativeObjectGetNotifier;
12542 var $observeNativeObjectNotifierPerformChange;
12543 (function(){
12544 "use strict";
12545 %CheckIsBootstrapping();
12546 var a=global.Array;
12547 var b=global.Object;
12548 var c;
12549 var d={};
12550 function GetObservationStateJS(){
12551 if((c===(void 0))){
12552 c=%GetObservationState();
12553 }
12554 if((c.callbackInfoMap===(void 0))){
12555 c.callbackInfoMap=%ObservationWeakMapCreate();
12556 c.objectInfoMap=%ObservationWeakMapCreate();
12557 c.notifierObjectInfoMap=%ObservationWeakMapCreate();
12558 c.pendingObservers=null;
12559 c.nextCallbackPriority=0;
12560 c.lastMicrotaskId=0;
12561 }
12562 return c;
12563 }
12564 function GetPendingObservers(){
12565 return GetObservationStateJS().pendingObservers;
12566 }
12567 function SetPendingObservers(e){
12568 GetObservationStateJS().pendingObservers=e;
12569 }
12570 function GetNextCallbackPriority(){
12571 return GetObservationStateJS().nextCallbackPriority++;
12572 }
12573 function nullProtoObject(){
12574 return{__proto__:null};
12575 }
12576 function TypeMapCreate(){
12577 return nullProtoObject();
12578 }
12579 function TypeMapAddType(g,h,i){
12580 g[h]=i?1:(g[h]||0)+1;
12581 }
12582 function TypeMapRemoveType(g,h){
12583 g[h]--;
12584 }
12585 function TypeMapCreateFromList(j,k){
12586 var g=TypeMapCreate();
12587 for(var l=0;l<k;l++){
12588 TypeMapAddType(g,j[l],true);
12589 }
12590 return g;
12591 }
12592 function TypeMapHasType(g,h){
12593 return!!g[h];
12594 }
12595 function TypeMapIsDisjointFrom(m,n){
12596 if(!m||!n)
12597 return true;
12598 for(var h in m){
12599 if(TypeMapHasType(m,h)&&TypeMapHasType(n,h))
12600 return false;
12601 }
12602 return true;
12603 }
12604 var o=(function(){
12605 var q=[
12606 'add',
12607 'update',
12608 'delete',
12609 'setPrototype',
12610 'reconfigure',
12611 'preventExtensions'
12612 ];
12613 return TypeMapCreateFromList(q,q.length);
12614 })();
12615 function ObserverCreate(r,t){
12616 if((t===(void 0)))
12617 return r;
12618 var u=nullProtoObject();
12619 u.callback=r;
12620 u.accept=t;
12621 return u;
12622 }
12623 function ObserverGetCallback(u){
12624 return(%_ClassOf(u)==='Function')?u:u.callback;
12625 }
12626 function ObserverGetAcceptTypes(u){
12627 return(%_ClassOf(u)==='Function')?o:u.accept;
12628 }
12629 function ObserverIsActive(u,w){
12630 return TypeMapIsDisjointFrom(ObjectInfoGetPerformingTypes(w),
12631 ObserverGetAcceptTypes(u));
12632 }
12633 function ObjectInfoGetOrCreate(z){
12634 var w=ObjectInfoGet(z);
12635 if((w===(void 0))){
12636 if(!%_IsJSProxy(z)){
12637 %SetIsObserved(z);
12638 }
12639 w={
12640 object:z,
12641 changeObservers:null,
12642 notifier:null,
12643 performing:null,
12644 performingCount:0,
12645 };
12646 %WeakCollectionSet(GetObservationStateJS().objectInfoMap,
12647 z,w);
12648 }
12649 return w;
12650 }
12651 function ObjectInfoGet(z){
12652 return %WeakCollectionGet(GetObservationStateJS().objectInfoMap,z);
12653 }
12654 function ObjectInfoGetFromNotifier(A){
12655 return %WeakCollectionGet(GetObservationStateJS().notifierObjectInfoMap,
12656 A);
12657 }
12658 function ObjectInfoGetNotifier(w){
12659 if((w.notifier===null)){
12660 w.notifier={__proto__:d};
12661 %WeakCollectionSet(GetObservationStateJS().notifierObjectInfoMap,
12662 w.notifier,w);
12663 }
12664 return w.notifier;
12665 }
12666 function ChangeObserversIsOptimized(B){
12667 return(%_ClassOf(B)==='Function')||
12668 (%_ClassOf(B.callback)==='Function');
12669 }
12670 function ObjectInfoNormalizeChangeObservers(w){
12671 if(ChangeObserversIsOptimized(w.changeObservers)){
12672 var u=w.changeObservers;
12673 var r=ObserverGetCallback(u);
12674 var C=CallbackInfoGet(r);
12675 var D=CallbackInfoGetPriority(C);
12676 w.changeObservers=nullProtoObject();
12677 w.changeObservers[D]=u;
12678 }
12679 }
12680 function ObjectInfoAddObserver(w,r,t){
12681 var C=CallbackInfoGetOrCreate(r);
12682 var u=ObserverCreate(r,t);
12683 if(!w.changeObservers){
12684 w.changeObservers=u;
12685 return;
12686 }
12687 ObjectInfoNormalizeChangeObservers(w);
12688 var D=CallbackInfoGetPriority(C);
12689 w.changeObservers[D]=u;
12690 }
12691 function ObjectInfoRemoveObserver(w,r){
12692 if(!w.changeObservers)
12693 return;
12694 if(ChangeObserversIsOptimized(w.changeObservers)){
12695 if(r===ObserverGetCallback(w.changeObservers))
12696 w.changeObservers=null;
12697 return;
12698 }
12699 var C=CallbackInfoGet(r);
12700 var D=CallbackInfoGetPriority(C);
12701 w.changeObservers[D]=null;
12702 }
12703 function ObjectInfoHasActiveObservers(w){
12704 if((w===(void 0))||!w.changeObservers)
12705 return false;
12706 if(ChangeObserversIsOptimized(w.changeObservers))
12707 return ObserverIsActive(w.changeObservers,w);
12708 for(var D in w.changeObservers){
12709 var u=w.changeObservers[D];
12710 if(!(u===null)&&ObserverIsActive(u,w))
12711 return true;
12712 }
12713 return false;
12714 }
12715 function ObjectInfoAddPerformingType(w,h){
12716 w.performing=w.performing||TypeMapCreate();
12717 TypeMapAddType(w.performing,h);
12718 w.performingCount++;
12719 }
12720 function ObjectInfoRemovePerformingType(w,h){
12721 w.performingCount--;
12722 TypeMapRemoveType(w.performing,h);
12723 }
12724 function ObjectInfoGetPerformingTypes(w){
12725 return w.performingCount>0?w.performing:null;
12726 }
12727 function ConvertAcceptListToTypeMap(E){
12728 if((E===(void 0)))
12729 return E;
12730 if(!(%_IsSpecObject(E)))
12731 throw MakeTypeError("observe_invalid_accept");
12732 var G=ToInteger(E.length);
12733 if(G<0)G=0;
12734 return TypeMapCreateFromList(E,G);
12735 }
12736 function CallbackInfoGet(r){
12737 return %WeakCollectionGet(GetObservationStateJS().callbackInfoMap,r);
12738 }
12739 function CallbackInfoSet(r,C){
12740 %WeakCollectionSet(GetObservationStateJS().callbackInfoMap,
12741 r,C);
12742 }
12743 function CallbackInfoGetOrCreate(r){
12744 var C=CallbackInfoGet(r);
12745 if(!(C===(void 0)))
12746 return C;
12747 var D=GetNextCallbackPriority();
12748 CallbackInfoSet(r,D);
12749 return D;
12750 }
12751 function CallbackInfoGetPriority(C){
12752 if((typeof(C)==='number'))
12753 return C;
12754 else
12755 return C.priority;
12756 }
12757 function CallbackInfoNormalize(r){
12758 var C=CallbackInfoGet(r);
12759 if((typeof(C)==='number')){
12760 var D=C;
12761 C=new InternalArray;
12762 C.priority=D;
12763 CallbackInfoSet(r,C);
12764 }
12765 return C;
12766 }
12767 function ObjectObserve(z,r,t){
12768 if(!(%_IsSpecObject(z)))
12769 throw MakeTypeError("observe_non_object",["observe"]);
12770 if(%IsJSGlobalProxy(z))
12771 throw MakeTypeError("observe_global_proxy",["observe"]);
12772 if(!(%_ClassOf(r)==='Function'))
12773 throw MakeTypeError("observe_non_function",["observe"]);
12774 if(ObjectIsFrozen(r))
12775 throw MakeTypeError("observe_callback_frozen");
12776 var H=%GetObjectContextObjectObserve(z);
12777 return H(z,r,t);
12778 }
12779 function NativeObjectObserve(z,r,t){
12780 var w=ObjectInfoGetOrCreate(z);
12781 var j=ConvertAcceptListToTypeMap(t);
12782 ObjectInfoAddObserver(w,r,j);
12783 return z;
12784 }
12785 function ObjectUnobserve(z,r){
12786 if(!(%_IsSpecObject(z)))
12787 throw MakeTypeError("observe_non_object",["unobserve"]);
12788 if(%IsJSGlobalProxy(z))
12789 throw MakeTypeError("observe_global_proxy",["unobserve"]);
12790 if(!(%_ClassOf(r)==='Function'))
12791 throw MakeTypeError("observe_non_function",["unobserve"]);
12792 var w=ObjectInfoGet(z);
12793 if((w===(void 0)))
12794 return z;
12795 ObjectInfoRemoveObserver(w,r);
12796 return z;
12797 }
12798 function ArrayObserve(z,r){
12799 return ObjectObserve(z,r,['add',
12800 'update',
12801 'delete',
12802 'splice']);
12803 }
12804 function ArrayUnobserve(z,r){
12805 return ObjectUnobserve(z,r);
12806 }
12807 function ObserverEnqueueIfActive(u,w,I){
12808 if(!ObserverIsActive(u,w)||
12809 !TypeMapHasType(ObserverGetAcceptTypes(u),I.type)){
12810 return;
12811 }
12812 var r=ObserverGetCallback(u);
12813 if(!%ObserverObjectAndRecordHaveSameOrigin(r,I.object,
12814 I)){
12815 return;
12816 }
12817 var C=CallbackInfoNormalize(r);
12818 if((GetPendingObservers()===null)){
12819 SetPendingObservers(nullProtoObject());
12820 if((%_DebugIsActive()!=0)){
12821 var J=++GetObservationStateJS().lastMicrotaskId;
12822 var K="Object.observe";
12823 %EnqueueMicrotask(function(){
12824 %DebugAsyncTaskEvent({type:"willHandle",id:J,name:K});
12825 ObserveMicrotaskRunner();
12826 %DebugAsyncTaskEvent({type:"didHandle",id:J,name:K});
12827 });
12828 %DebugAsyncTaskEvent({type:"enqueue",id:J,name:K});
12829 }else{
12830 %EnqueueMicrotask(ObserveMicrotaskRunner);
12831 }
12832 }
12833 GetPendingObservers()[C.priority]=r;
12834 C.push(I);
12835 }
12836 function ObjectInfoEnqueueExternalChangeRecord(w,I,h){
12837 if(!ObjectInfoHasActiveObservers(w))
12838 return;
12839 var L=!(h===(void 0));
12840 var M=L?
12841 {object:w.object,type:h}:
12842 {object:w.object};
12843 for(var N in I){
12844 if(N==='object'||(L&&N==='type'))continue;
12845 %DefineDataPropertyUnchecked(
12846 M,N,I[N],1+4);
12847 }
12848 ObjectFreezeJS(M);
12849 ObjectInfoEnqueueInternalChangeRecord(w,M);
12850 }
12851 function ObjectInfoEnqueueInternalChangeRecord(w,I){
12852 if((typeof(I.name)==='symbol'))return;
12853 if(ChangeObserversIsOptimized(w.changeObservers)){
12854 var u=w.changeObservers;
12855 ObserverEnqueueIfActive(u,w,I);
12856 return;
12857 }
12858 for(var D in w.changeObservers){
12859 var u=w.changeObservers[D];
12860 if((u===null))
12861 continue;
12862 ObserverEnqueueIfActive(u,w,I);
12863 }
12864 }
12865 function BeginPerformSplice(P){
12866 var w=ObjectInfoGet(P);
12867 if(!(w===(void 0)))
12868 ObjectInfoAddPerformingType(w,'splice');
12869 }
12870 function EndPerformSplice(P){
12871 var w=ObjectInfoGet(P);
12872 if(!(w===(void 0)))
12873 ObjectInfoRemovePerformingType(w,'splice');
12874 }
12875 function EnqueueSpliceRecord(P,Q,R,S){
12876 var w=ObjectInfoGet(P);
12877 if(!ObjectInfoHasActiveObservers(w))
12878 return;
12879 var I={
12880 type:'splice',
12881 object:P,
12882 index:Q,
12883 removed:R,
12884 addedCount:S
12885 };
12886 ObjectFreezeJS(I);
12887 ObjectFreezeJS(I.removed);
12888 ObjectInfoEnqueueInternalChangeRecord(w,I);
12889 }
12890 function NotifyChange(h,z,K,T){
12891 var w=ObjectInfoGet(z);
12892 if(!ObjectInfoHasActiveObservers(w))
12893 return;
12894 var I;
12895 if(arguments.length==2){
12896 I={type:h,object:z};
12897 }else if(arguments.length==3){
12898 I={type:h,object:z,name:K};
12899 }else{
12900 I={
12901 type:h,
12902 object:z,
12903 name:K,
12904 oldValue:T
12905 };
12906 }
12907 ObjectFreezeJS(I);
12908 ObjectInfoEnqueueInternalChangeRecord(w,I);
12909 }
12910 function ObjectNotifierNotify(I){
12911 if(!(%_IsSpecObject(this)))
12912 throw MakeTypeError(3,"notify");
12913 var w=ObjectInfoGetFromNotifier(this);
12914 if((w===(void 0)))
12915 throw MakeTypeError("observe_notify_non_notifier");
12916 if(!(typeof(I.type)==='string'))
12917 throw MakeTypeError("observe_type_non_string");
12918 ObjectInfoEnqueueExternalChangeRecord(w,I);
12919 }
12920 function ObjectNotifierPerformChange(U,W){
12921 if(!(%_IsSpecObject(this)))
12922 throw MakeTypeError(3,"performChange");
12923 var w=ObjectInfoGetFromNotifier(this);
12924 if((w===(void 0)))
12925 throw MakeTypeError("observe_notify_non_notifier");
12926 if(!(typeof(U)==='string'))
12927 throw MakeTypeError("observe_perform_non_string");
12928 if(!(%_ClassOf(W)==='Function'))
12929 throw MakeTypeError("observe_perform_non_function");
12930 var X=%GetObjectContextNotifierPerformChange(w);
12931 X(w,U,W);
12932 }
12933 function NativeObjectNotifierPerformChange(w,U,W){
12934 ObjectInfoAddPerformingType(w,U);
12935 var I;
12936 try{
12937 I=%_CallFunction((void 0),W);
12938 }finally{
12939 ObjectInfoRemovePerformingType(w,U);
12940 }
12941 if((%_IsSpecObject(I)))
12942 ObjectInfoEnqueueExternalChangeRecord(w,I,U);
12943 }
12944 function ObjectGetNotifier(z){
12945 if(!(%_IsSpecObject(z)))
12946 throw MakeTypeError("observe_non_object",["getNotifier"]);
12947 if(%IsJSGlobalProxy(z))
12948 throw MakeTypeError("observe_global_proxy",["getNotifier"]);
12949 if(ObjectIsFrozen(z))return null;
12950 if(!%ObjectWasCreatedInCurrentOrigin(z))return null;
12951 var Y=%GetObjectContextObjectGetNotifier(z);
12952 return Y(z);
12953 }
12954 function NativeObjectGetNotifier(z){
12955 var w=ObjectInfoGetOrCreate(z);
12956 return ObjectInfoGetNotifier(w);
12957 }
12958 function CallbackDeliverPending(r){
12959 var C=CallbackInfoGet(r);
12960 if((C===(void 0))||(typeof(C)==='number'))
12961 return false;
12962 var D=C.priority;
12963 CallbackInfoSet(r,D);
12964 var e=GetPendingObservers();
12965 if(!(e===null))
12966 delete e[D];
12967 var Z=[];
12968 %MoveArrayContents(C,Z);
12969 %DeliverObservationChangeRecords(r,Z);
12970 return true;
12971 }
12972 function ObjectDeliverChangeRecords(r){
12973 if(!(%_ClassOf(r)==='Function'))
12974 throw MakeTypeError("observe_non_function",["deliverChangeRecords"]);
12975 while(CallbackDeliverPending(r)){}
12976 }
12977 function ObserveMicrotaskRunner(){
12978 var e=GetPendingObservers();
12979 if(!(e===null)){
12980 SetPendingObservers(null);
12981 for(var l in e){
12982 CallbackDeliverPending(e[l]);
12983 }
12984 }
12985 }
12986 InstallFunctions(b,2,[
12987 "deliverChangeRecords",ObjectDeliverChangeRecords,
12988 "getNotifier",ObjectGetNotifier,
12989 "observe",ObjectObserve,
12990 "unobserve",ObjectUnobserve
12991 ]);
12992 InstallFunctions(a,2,[
12993 "observe",ArrayObserve,
12994 "unobserve",ArrayUnobserve
12995 ]);
12996 InstallFunctions(d,2,[
12997 "notify",ObjectNotifierNotify,
12998 "performChange",ObjectNotifierPerformChange
12999 ]);
13000 $observeNotifyChange=NotifyChange;
13001 $observeEnqueueSpliceRecord=EnqueueSpliceRecord;
13002 $observeBeginPerformSplice=BeginPerformSplice;
13003 $observeEndPerformSplice=EndPerformSplice;
13004 $observeNativeObjectObserve=NativeObjectObserve;
13005 $observeNativeObjectGetNotifier=NativeObjectGetNotifier;
13006 $observeNativeObjectNotifierPerformChange=NativeObjectNotifierPerformChange;
13007 })();
13008
13009 (collectionE{
13010 (function(){
13011 "use strict";
13012 %CheckIsBootstrapping();
13013 var a=global.Map;
13014 var b=global.Object;
13015 var c=global.Set;
13016 function HashToEntry(d,e,g){
13017 var h=(e&((g)-1));
13018 return((%_FixedArrayGet(d,(3+(h))|0)));
13019 }
13020 %SetInlineBuiltinFlag(HashToEntry);
13021 function SetFindEntry(d,g,i,e){
13022 var j=NumberIsNaN(i);
13023 for(var k=HashToEntry(d,e,g);
13024 k!==-1;
13025 k=((%_FixedArrayGet(d,((3+(g)+((k)<<1))+1)|0)))){
13026 var l=((%_FixedArrayGet(d,((3+(g)+((k)<<1)))|0)));
13027 if(i===l){
13028 return k;
13029 }
13030 if(j&&NumberIsNaN(l)){
13031 return k;
13032 }
13033 }
13034 return-1;
13035 }
13036 %SetInlineBuiltinFlag(SetFindEntry);
13037 function MapFindEntry(d,g,i,e){
13038 var j=NumberIsNaN(i);
13039 for(var k=HashToEntry(d,e,g);
13040 k!==-1;
13041 k=((%_FixedArrayGet(d,((3+(g)+((k)*3))+2)|0)))){
13042 var l=((%_FixedArrayGet(d,((3+(g)+((k)*3)))|0)));
13043 if(i===l){
13044 return k;
13045 }
13046 if(j&&NumberIsNaN(l)){
13047 return k;
13048 }
13049 }
13050 return-1;
13051 }
13052 %SetInlineBuiltinFlag(MapFindEntry);
13053 function ComputeIntegerHash(i,m){
13054 var e=i;
13055 e=e^m;
13056 e=~e+(e<<15);
13057 e=e^(e>>>12);
13058 e=e+(e<<2);
13059 e=e^(e>>>4);
13060 e=(e*2057)|0;
13061 e=e^(e>>>16);
13062 return e;
13063 }
13064 %SetInlineBuiltinFlag(ComputeIntegerHash);
13065 function GetHash(i){
13066 if(%_IsSmi(i)){
13067 return ComputeIntegerHash(i,0);
13068 }
13069 if((typeof(i)==='string')){
13070 var n=%_StringGetRawHashField(i);
13071 if((n&1)===0){
13072 return n>>>2;
13073 }
13074 }
13075 return %GenericHash(i);
13076 }
13077 %SetInlineBuiltinFlag(GetHash);
13078 function SetConstructor(o){
13079 if(!%_IsConstructCall()){
13080 throw MakeTypeError('constructor_not_function',['Set']);
13081 }
13082 %_SetInitialize(this);
13083 if(!(o==null)){
13084 var q=this.add;
13085 if(!(%_ClassOf(q)==='Function')){
13086 throw MakeTypeError(21,'add',this);
13087 }
13088 for(var r of o){
13089 %_CallFunction(this,r,q);
13090 }
13091 }
13092 }
13093 function SetAdd(i){
13094 if(!(%_ClassOf(this)==='Set')){
13095 throw MakeTypeError(8,'Set.prototype.add',this);
13096 }
13097 if(i===0){
13098 i=0;
13099 }
13100 var d=%_JSCollectionGetTable(this);
13101 var g=((%_FixedArrayGet(d,(0)|0)));
13102 var e=GetHash(i);
13103 if(SetFindEntry(d,g,i,e)!==-1)return this;
13104 var t=((%_FixedArrayGet(d,(1)|0)));
13105 var u=((%_FixedArrayGet(d,(2)|0)));
13106 var w=g<<1;
13107 if((t+u)>=w){
13108 %SetGrow(this);
13109 d=%_JSCollectionGetTable(this);
13110 g=((%_FixedArrayGet(d,(0)|0)));
13111 t=((%_FixedArrayGet(d,(1)|0)));
13112 u=((%_FixedArrayGet(d,(2)|0)));
13113 }
13114 var k=t+u;
13115 var z=(3+(g)+((k)<<1));
13116 var h=(e&((g)-1));
13117 var A=((%_FixedArrayGet(d,(3+(h))|0)));
13118 ((%_FixedArraySet(d,(3+(h))|0,k)));
13119 (((%_FixedArraySet(d,(1)|0,(t+1)|0))));
13120 (%_FixedArraySet(d,(z)|0,i));
13121 ((%_FixedArraySet(d,(z+1)|0,(A)|0)));
13122 return this;
13123 }
13124 function SetHas(i){
13125 if(!(%_ClassOf(this)==='Set')){
13126 throw MakeTypeError(8,'Set.prototype.has',this);
13127 }
13128 var d=%_JSCollectionGetTable(this);
13129 var g=((%_FixedArrayGet(d,(0)|0)));
13130 var e=GetHash(i);
13131 return SetFindEntry(d,g,i,e)!==-1;
13132 }
13133 function SetDelete(i){
13134 if(!(%_ClassOf(this)==='Set')){
13135 throw MakeTypeError(8,
13136 'Set.prototype.delete',this);
13137 }
13138 var d=%_JSCollectionGetTable(this);
13139 var g=((%_FixedArrayGet(d,(0)|0)));
13140 var e=GetHash(i);
13141 var k=SetFindEntry(d,g,i,e);
13142 if(k===-1)return false;
13143 var t=((%_FixedArrayGet(d,(1)|0)))-1;
13144 var u=((%_FixedArrayGet(d,(2)|0)))+1;
13145 var z=(3+(g)+((k)<<1));
13146 (%_FixedArraySet(d,(z)|0,%_TheHole()));
13147 (((%_FixedArraySet(d,(1)|0,(t)|0))));
13148 (((%_FixedArraySet(d,(2)|0,(u)|0))));
13149 if(t<(g>>>1))%SetShrink(this);
13150 return true;
13151 }
13152 function SetGetSize(){
13153 if(!(%_ClassOf(this)==='Set')){
13154 throw MakeTypeError(8,
13155 'Set.prototype.size',this);
13156 }
13157 var d=%_JSCollectionGetTable(this);
13158 return((%_FixedArrayGet(d,(1)|0)));
13159 }
13160 function SetClearJS(){
13161 if(!(%_ClassOf(this)==='Set')){
13162 throw MakeTypeError(8,
13163 'Set.prototype.clear',this);
13164 }
13165 %_SetClear(this);
13166 }
13167 function SetForEach(B,C){
13168 if(!(%_ClassOf(this)==='Set')){
13169 throw MakeTypeError(8,
13170 'Set.prototype.forEach',this);
13171 }
13172 if(!(%_ClassOf(B)==='Function'))throw MakeTypeError(2,B);
13173 var D=false;
13174 if((C==null)){
13175 C=%GetDefaultReceiver(B)||C;
13176 }else{
13177 D=(!(%_IsSpecObject(C))&&%IsSloppyModeFunction(B));
13178 }
13179 var E=new SetIterator(this,2);
13180 var i;
13181 var G=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(B);
13182 var H=[(void 0)];
13183 while(%SetIteratorNext(E,H)){
13184 if(G)%DebugPrepareStepInIfStepping(B);
13185 i=H[0];
13186 var I=D?ToObject(C):C;
13187 %_CallFunction(I,i,i,this,B);
13188 }
13189 }
13190 %SetCode(c,SetConstructor);
13191 %FunctionSetLength(c,0);
13192 %FunctionSetPrototype(c,new b());
13193 %AddNamedProperty(c.prototype,"constructor",c,2);
13194 %AddNamedProperty(c.prototype,symbolToStringTag,"Set",
13195 2|1);
13196 %FunctionSetLength(SetForEach,1);
13197 InstallGetter(c.prototype,"size",SetGetSize);
13198 InstallFunctions(c.prototype,2,[
13199 "add",SetAdd,
13200 "has",SetHas,
13201 "delete",SetDelete,
13202 "clear",SetClearJS,
13203 "forEach",SetForEach
13204 ]);
13205 function MapConstructor(o){
13206 if(!%_IsConstructCall()){
13207 throw MakeTypeError('constructor_not_function',['Map']);
13208 }
13209 %_MapInitialize(this);
13210 if(!(o==null)){
13211 var q=this.set;
13212 if(!(%_ClassOf(q)==='Function')){
13213 throw MakeTypeError(21,'set',this);
13214 }
13215 for(var J of o){
13216 if(!(%_IsSpecObject(J))){
13217 throw MakeTypeError('iterator_value_not_an_object',[J]);
13218 }
13219 %_CallFunction(this,J[0],J[1],q);
13220 }
13221 }
13222 }
13223 function MapGet(i){
13224 if(!(%_ClassOf(this)==='Map')){
13225 throw MakeTypeError(8,
13226 'Map.prototype.get',this);
13227 }
13228 var d=%_JSCollectionGetTable(this);
13229 var g=((%_FixedArrayGet(d,(0)|0)));
13230 var e=GetHash(i);
13231 var k=MapFindEntry(d,g,i,e);
13232 if(k===-1)return(void 0);
13233 return((%_FixedArrayGet(d,((3+(g)+((k)*3))+1)|0)));
13234 }
13235 function MapSet(i,r){
13236 if(!(%_ClassOf(this)==='Map')){
13237 throw MakeTypeError(8,
13238 'Map.prototype.set',this);
13239 }
13240 if(i===0){
13241 i=0;
13242 }
13243 var d=%_JSCollectionGetTable(this);
13244 var g=((%_FixedArrayGet(d,(0)|0)));
13245 var e=GetHash(i);
13246 var k=MapFindEntry(d,g,i,e);
13247 if(k!==-1){
13248 var K=(3+(g)+((k)*3));
13249 (%_FixedArraySet(d,(K+1)|0,r));
13250 return this;
13251 }
13252 var t=((%_FixedArrayGet(d,(1)|0)));
13253 var u=((%_FixedArrayGet(d,(2)|0)));
13254 var w=g<<1;
13255 if((t+u)>=w){
13256 %MapGrow(this);
13257 d=%_JSCollectionGetTable(this);
13258 g=((%_FixedArrayGet(d,(0)|0)));
13259 t=((%_FixedArrayGet(d,(1)|0)));
13260 u=((%_FixedArrayGet(d,(2)|0)));
13261 }
13262 k=t+u;
13263 var z=(3+(g)+((k)*3));
13264 var h=(e&((g)-1));
13265 var A=((%_FixedArrayGet(d,(3+(h))|0)));
13266 ((%_FixedArraySet(d,(3+(h))|0,k)));
13267 (((%_FixedArraySet(d,(1)|0,(t+1)|0))));
13268 (%_FixedArraySet(d,(z)|0,i));
13269 (%_FixedArraySet(d,(z+1)|0,r));
13270 (%_FixedArraySet(d,(z+2)|0,A));
13271 return this;
13272 }
13273 function MapHas(i){
13274 if(!(%_ClassOf(this)==='Map')){
13275 throw MakeTypeError(8,
13276 'Map.prototype.has',this);
13277 }
13278 var d=%_JSCollectionGetTable(this);
13279 var g=((%_FixedArrayGet(d,(0)|0)));
13280 var e=GetHash(i);
13281 return MapFindEntry(d,g,i,e)!==-1;
13282 }
13283 function MapDelete(i){
13284 if(!(%_ClassOf(this)==='Map')){
13285 throw MakeTypeError(8,
13286 'Map.prototype.delete',this);
13287 }
13288 var d=%_JSCollectionGetTable(this);
13289 var g=((%_FixedArrayGet(d,(0)|0)));
13290 var e=GetHash(i);
13291 var k=MapFindEntry(d,g,i,e);
13292 if(k===-1)return false;
13293 var t=((%_FixedArrayGet(d,(1)|0)))-1;
13294 var u=((%_FixedArrayGet(d,(2)|0)))+1;
13295 var z=(3+(g)+((k)*3));
13296 (%_FixedArraySet(d,(z)|0,%_TheHole()));
13297 (%_FixedArraySet(d,(z+1)|0,%_TheHole()));
13298 (((%_FixedArraySet(d,(1)|0,(t)|0))));
13299 (((%_FixedArraySet(d,(2)|0,(u)|0))));
13300 if(t<(g>>>1))%MapShrink(this);
13301 return true;
13302 }
13303 function MapGetSize(){
13304 if(!(%_ClassOf(this)==='Map')){
13305 throw MakeTypeError(8,
13306 'Map.prototype.size',this);
13307 }
13308 var d=%_JSCollectionGetTable(this);
13309 return((%_FixedArrayGet(d,(1)|0)));
13310 }
13311 function MapClearJS(){
13312 if(!(%_ClassOf(this)==='Map')){
13313 throw MakeTypeError(8,
13314 'Map.prototype.clear',this);
13315 }
13316 %_MapClear(this);
13317 }
13318 function MapForEach(B,C){
13319 if(!(%_ClassOf(this)==='Map')){
13320 throw MakeTypeError(8,
13321 'Map.prototype.forEach',this);
13322 }
13323 if(!(%_ClassOf(B)==='Function'))throw MakeTypeError(2,B);
13324 var D=false;
13325 if((C==null)){
13326 C=%GetDefaultReceiver(B)||C;
13327 }else{
13328 D=(!(%_IsSpecObject(C))&&%IsSloppyModeFunction(B));
13329 }
13330 var E=new MapIterator(this,3);
13331 var G=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(B);
13332 var H=[(void 0),(void 0)];
13333 while(%MapIteratorNext(E,H)){
13334 if(G)%DebugPrepareStepInIfStepping(B);
13335 var I=D?ToObject(C):C;
13336 %_CallFunction(I,H[1],H[0],this,B);
13337 }
13338 }
13339 %SetCode(a,MapConstructor);
13340 %FunctionSetLength(a,0);
13341 %FunctionSetPrototype(a,new b());
13342 %AddNamedProperty(a.prototype,"constructor",a,2);
13343 %AddNamedProperty(
13344 a.prototype,symbolToStringTag,"Map",2|1);
13345 %FunctionSetLength(MapForEach,1);
13346 InstallGetter(a.prototype,"size",MapGetSize);
13347 InstallFunctions(a.prototype,2,[
13348 "get",MapGet,
13349 "set",MapSet,
13350 "has",MapHas,
13351 "delete",MapDelete,
13352 "clear",MapClearJS,
13353 "forEach",MapForEach
13354 ]);
13355 })();
13356
13357 <weak-collection\81-
13358 (function(){
13359 "use strict";
13360 %CheckIsBootstrapping();
13361 var a=global.Object;
13362 var b=global.WeakMap;
13363 var c=global.WeakSet;
13364 function WeakMapConstructor(d){
13365 if(!%_IsConstructCall()){
13366 throw MakeTypeError('constructor_not_function',['WeakMap']);
13367 }
13368 %WeakCollectionInitialize(this);
13369 if(!(d==null)){
13370 var e=this.set;
13371 if(!(%_ClassOf(e)==='Function')){
13372 throw MakeTypeError(21,'set',this);
13373 }
13374 for(var g of d){
13375 if(!(%_IsSpecObject(g))){
13376 throw MakeTypeError('iterator_value_not_an_object',[g]);
13377 }
13378 %_CallFunction(this,g[0],g[1],e);
13379 }
13380 }
13381 }
13382 function WeakMapGet(h){
13383 if(!(%_ClassOf(this)==='WeakMap')){
13384 throw MakeTypeError(8,
13385 'WeakMap.prototype.get',this);
13386 }
13387 if(!(%_IsSpecObject(h)))return(void 0);
13388 return %WeakCollectionGet(this,h);
13389 }
13390 function WeakMapSet(h,i){
13391 if(!(%_ClassOf(this)==='WeakMap')){
13392 throw MakeTypeError(8,
13393 'WeakMap.prototype.set',this);
13394 }
13395 if(!(%_IsSpecObject(h))){
13396 throw %MakeTypeError('invalid_weakmap_key',[this,h]);
13397 }
13398 return %WeakCollectionSet(this,h,i);
13399 }
13400 function WeakMapHas(h){
13401 if(!(%_ClassOf(this)==='WeakMap')){
13402 throw MakeTypeError(8,
13403 'WeakMap.prototype.has',this);
13404 }
13405 if(!(%_IsSpecObject(h)))return false;
13406 return %WeakCollectionHas(this,h);
13407 }
13408 function WeakMapDelete(h){
13409 if(!(%_ClassOf(this)==='WeakMap')){
13410 throw MakeTypeError(8,
13411 'WeakMap.prototype.delete',this);
13412 }
13413 if(!(%_IsSpecObject(h)))return false;
13414 return %WeakCollectionDelete(this,h);
13415 }
13416 %SetCode(b,WeakMapConstructor);
13417 %FunctionSetLength(b,0);
13418 %FunctionSetPrototype(b,new a());
13419 %AddNamedProperty(b.prototype,"constructor",b,
13420 2);
13421 %AddNamedProperty(b.prototype,symbolToStringTag,"WeakMap",
13422 2|1);
13423 InstallFunctions(b.prototype,2,[
13424 "get",WeakMapGet,
13425 "set",WeakMapSet,
13426 "has",WeakMapHas,
13427 "delete",WeakMapDelete
13428 ]);
13429 function WeakSetConstructor(d){
13430 if(!%_IsConstructCall()){
13431 throw MakeTypeError('constructor_not_function',['WeakSet']);
13432 }
13433 %WeakCollectionInitialize(this);
13434 if(!(d==null)){
13435 var e=this.add;
13436 if(!(%_ClassOf(e)==='Function')){
13437 throw MakeTypeError(21,'add',this);
13438 }
13439 for(var i of d){
13440 %_CallFunction(this,i,e);
13441 }
13442 }
13443 }
13444 function WeakSetAdd(i){
13445 if(!(%_ClassOf(this)==='WeakSet')){
13446 throw MakeTypeError(8,
13447 'WeakSet.prototype.add',this);
13448 }
13449 if(!(%_IsSpecObject(i))){
13450 throw %MakeTypeError('invalid_weakset_value',[this,i]);
13451 }
13452 return %WeakCollectionSet(this,i,true);
13453 }
13454 function WeakSetHas(i){
13455 if(!(%_ClassOf(this)==='WeakSet')){
13456 throw MakeTypeError(8,
13457 'WeakSet.prototype.has',this);
13458 }
13459 if(!(%_IsSpecObject(i)))return false;
13460 return %WeakCollectionHas(this,i);
13461 }
13462 function WeakSetDelete(i){
13463 if(!(%_ClassOf(this)==='WeakSet')){
13464 throw MakeTypeError(8,
13465 'WeakSet.prototype.delete',this);
13466 }
13467 if(!(%_IsSpecObject(i)))return false;
13468 return %WeakCollectionDelete(this,i);
13469 }
13470 %SetCode(c,WeakSetConstructor);
13471 %FunctionSetLength(c,0);
13472 %FunctionSetPrototype(c,new a());
13473 %AddNamedProperty(c.prototype,"constructor",c,
13474 2);
13475 %AddNamedProperty(c.prototype,symbolToStringTag,"WeakSet",
13476 2|1);
13477 InstallFunctions(c.prototype,2,[
13478 "add",WeakSetAdd,
13479 "has",WeakSetHas,
13480 "delete",WeakSetDelete
13481 ]);
13482 })();
13483
13484 Lcollection-iterator\8d1
13485 var $mapEntries;
13486 var $mapIteratorNext;
13487 var $setIteratorNext;
13488 var $setValues;
13489 (function(){
13490 "use strict";
13491 %CheckIsBootstrapping();
13492 var a=global.Map;
13493 var b=global.Object;
13494 var c=global.Set;
13495 function SetIteratorConstructor(d,e){
13496 %SetIteratorInitialize(this,d,e);
13497 }
13498 function SetIteratorNextJS(){
13499 if(!(%_ClassOf(this)==='Set Iterator')){
13500 throw MakeTypeError(8,
13501 'Set Iterator.prototype.next',this);
13502 }
13503 var g=[(void 0),(void 0)];
13504 var h={value:g,done:false};
13505 switch(%SetIteratorNext(this,g)){
13506 case 0:
13507 h.value=(void 0);
13508 h.done=true;
13509 break;
13510 case 2:
13511 h.value=g[0];
13512 break;
13513 case 3:
13514 g[1]=g[0];
13515 break;
13516 }
13517 return h;
13518 }
13519 function SetIteratorSymbolIterator(){
13520 return this;
13521 }
13522 function SetEntries(){
13523 if(!(%_ClassOf(this)==='Set')){
13524 throw MakeTypeError(8,
13525 'Set.prototype.entries',this);
13526 }
13527 return new SetIterator(this,3);
13528 }
13529 function SetValues(){
13530 if(!(%_ClassOf(this)==='Set')){
13531 throw MakeTypeError(8,
13532 'Set.prototype.values',this);
13533 }
13534 return new SetIterator(this,2);
13535 }
13536 %SetCode(SetIterator,SetIteratorConstructor);
13537 %FunctionSetPrototype(SetIterator,new b());
13538 %FunctionSetInstanceClassName(SetIterator,'Set Iterator');
13539 InstallFunctions(SetIterator.prototype,2,[
13540 'next',SetIteratorNextJS
13541 ]);
13542 %FunctionSetName(SetIteratorSymbolIterator,'[Symbol.iterator]');
13543 %AddNamedProperty(SetIterator.prototype,symbolIterator,
13544 SetIteratorSymbolIterator,2);
13545 %AddNamedProperty(SetIterator.prototype,symbolToStringTag,
13546 "Set Iterator",1|2);
13547 InstallFunctions(c.prototype,2,[
13548 'entries',SetEntries,
13549 'keys',SetValues,
13550 'values',SetValues
13551 ]);
13552 %AddNamedProperty(c.prototype,symbolIterator,SetValues,2);
13553 $setIteratorNext=SetIteratorNextJS;
13554 $setValues=SetValues;
13555 function MapIteratorConstructor(i,e){
13556 %MapIteratorInitialize(this,i,e);
13557 }
13558 function MapIteratorSymbolIterator(){
13559 return this;
13560 }
13561 function MapIteratorNextJS(){
13562 if(!(%_ClassOf(this)==='Map Iterator')){
13563 throw MakeTypeError(8,
13564 'Map Iterator.prototype.next',this);
13565 }
13566 var g=[(void 0),(void 0)];
13567 var h={value:g,done:false};
13568 switch(%MapIteratorNext(this,g)){
13569 case 0:
13570 h.value=(void 0);
13571 h.done=true;
13572 break;
13573 case 1:
13574 h.value=g[0];
13575 break;
13576 case 2:
13577 h.value=g[1];
13578 break;
13579 }
13580 return h;
13581 }
13582 function MapEntries(){
13583 if(!(%_ClassOf(this)==='Map')){
13584 throw MakeTypeError(8,
13585 'Map.prototype.entries',this);
13586 }
13587 return new MapIterator(this,3);
13588 }
13589 function MapKeys(){
13590 if(!(%_ClassOf(this)==='Map')){
13591 throw MakeTypeError(8,
13592 'Map.prototype.keys',this);
13593 }
13594 return new MapIterator(this,1);
13595 }
13596 function MapValues(){
13597 if(!(%_ClassOf(this)==='Map')){
13598 throw MakeTypeError(8,
13599 'Map.prototype.values',this);
13600 }
13601 return new MapIterator(this,2);
13602 }
13603 %SetCode(MapIterator,MapIteratorConstructor);
13604 %FunctionSetPrototype(MapIterator,new b());
13605 %FunctionSetInstanceClassName(MapIterator,'Map Iterator');
13606 InstallFunctions(MapIterator.prototype,2,[
13607 'next',MapIteratorNextJS
13608 ]);
13609 %FunctionSetName(MapIteratorSymbolIterator,'[Symbol.iterator]');
13610 %AddNamedProperty(MapIterator.prototype,symbolIterator,
13611 MapIteratorSymbolIterator,2);
13612 %AddNamedProperty(MapIterator.prototype,symbolToStringTag,
13613 "Map Iterator",1|2);
13614 InstallFunctions(a.prototype,2,[
13615 'entries',MapEntries,
13616 'keys',MapKeys,
13617 'values',MapValues
13618 ]);
13619 %AddNamedProperty(a.prototype,symbolIterator,MapEntries,2);
13620 $mapEntries=MapEntries;
13621 $mapIteratorNext=MapIteratorNextJS;
13622 })();
13623
13624 \1cpromise\9df
13625 var $promiseCreate;
13626 var $promiseResolve;
13627 var $promiseReject;
13628 var $promiseChain;
13629 var $promiseCatch;
13630 var $promiseThen;
13631 var $promiseHasUserDefinedRejectHandler;
13632 var $promiseStatus;
13633 var $promiseValue;
13634 (function(){
13635 "use strict";
13636 %CheckIsBootstrapping();
13637 var a=(%CreateGlobalPrivateOwnSymbol("Promise#status"));
13638 var b=(%CreateGlobalPrivateOwnSymbol("Promise#value"));
13639 var c=(%CreateGlobalPrivateOwnSymbol("Promise#onResolve"));
13640 var d=(%CreateGlobalPrivateOwnSymbol("Promise#onReject"));
13641 var e=(%CreateGlobalPrivateOwnSymbol("Promise#raw"));
13642 var g=%PromiseHasHandlerSymbol();
13643 var h=0;
13644 var i=function Promise(j){
13645 if(j===e)return;
13646 if(!%_IsConstructCall())throw MakeTypeError('not_a_promise',[this]);
13647 if(!(%_ClassOf(j)==='Function'))
13648 throw MakeTypeError('resolver_not_a_function',[j]);
13649 var k=PromiseInit(this);
13650 try{
13651 %DebugPushPromise(k,Promise);
13652 j(function(l){PromiseResolve(k,l)},
13653 function(m){PromiseReject(k,m)});
13654 }catch(e){
13655 PromiseReject(k,e);
13656 }finally{
13657 %DebugPopPromise();
13658 }
13659 }
13660 function PromiseSet(k,n,o,q,r){
13661 (k[a]=n);
13662 (k[b]=o);
13663 (k[c]=q);
13664 (k[d]=r);
13665 if((%_DebugIsActive()!=0)){
13666 %DebugPromiseEvent({promise:k,status:n,value:o});
13667 }
13668 return k;
13669 }
13670 function PromiseCreateAndSet(n,o){
13671 var k=new i(e);
13672 if((%_DebugIsActive()!=0))PromiseSet(k,0,(void 0));
13673 return PromiseSet(k,n,o);
13674 }
13675 function PromiseInit(k){
13676 return PromiseSet(
13677 k,0,(void 0),new InternalArray,new InternalArray)
13678 }
13679 function PromiseDone(k,n,o,t){
13680 if((k[a])===0){
13681 var u=(k[t]);
13682 if(u.length)PromiseEnqueue(o,u,n);
13683 PromiseSet(k,n,o);
13684 }
13685 }
13686 function PromiseCoerce(w,l){
13687 if(!IsPromise(l)&&(%_IsSpecObject(l))){
13688 var z;
13689 try{
13690 z=l.then;
13691 }catch(m){
13692 return %_CallFunction(w,m,PromiseRejected);
13693 }
13694 if((%_ClassOf(z)==='Function')){
13695 var A=%_CallFunction(w,PromiseDeferred);
13696 try{
13697 %_CallFunction(l,A.resolve,A.reject,z);
13698 }catch(m){
13699 A.reject(m);
13700 }
13701 return A.promise;
13702 }
13703 }
13704 return l;
13705 }
13706 function PromiseHandle(o,B,A){
13707 try{
13708 %DebugPushPromise(A.promise,PromiseHandle);
13709 if((%_DebugIsActive()!=0&&%DebugCallbackSupportsStepping(B)))%DebugPrepareStepInIfStepping(B);
13710 var C=B(o);
13711 if(C===A.promise)
13712 throw MakeTypeError('promise_cyclic',[C]);
13713 else if(IsPromise(C))
13714 %_CallFunction(C,A.resolve,A.reject,PromiseChain);
13715 else
13716 A.resolve(C);
13717 }catch(exception){
13718 try{A.reject(exception);}catch(e){}
13719 }finally{
13720 %DebugPopPromise();
13721 }
13722 }
13723 function PromiseEnqueue(o,u,n){
13724 var D,E,G=(%_DebugIsActive()!=0);
13725 %EnqueueMicrotask(function(){
13726 if(G){
13727 %DebugAsyncTaskEvent({type:"willHandle",id:D,name:E});
13728 }
13729 for(var H=0;H<u.length;H+=2){
13730 PromiseHandle(o,u[H],u[H+1])
13731 }
13732 if(G){
13733 %DebugAsyncTaskEvent({type:"didHandle",id:D,name:E});
13734 }
13735 });
13736 if(G){
13737 D=++h;
13738 E=n>0?"Promise.resolve":"Promise.reject";
13739 %DebugAsyncTaskEvent({type:"enqueue",id:D,name:E});
13740 }
13741 }
13742 function PromiseIdResolveHandler(l){return l}
13743 function PromiseIdRejectHandler(m){throw m}
13744 function PromiseNopResolver(){}
13745 function IsPromise(l){
13746 return(%_IsSpecObject(l))&&(!(l[a]===(void 0)));
13747 }
13748 function PromiseCreate(){
13749 return new i(PromiseNopResolver)
13750 }
13751 function PromiseResolve(k,l){
13752 PromiseDone(k,+1,l,c)
13753 }
13754 function PromiseReject(k,m){
13755 if((k[a])==0){
13756 var I=(%_DebugIsActive()!=0);
13757 if(I||!(!(k[g]===(void 0)))){
13758 %PromiseRejectEvent(k,m,I);
13759 }
13760 }
13761 PromiseDone(k,-1,m,d)
13762 }
13763 function PromiseDeferred(){
13764 if(this===i){
13765 var k=PromiseInit(new i(e));
13766 return{
13767 promise:k,
13768 resolve:function(l){PromiseResolve(k,l)},
13769 reject:function(m){PromiseReject(k,m)}
13770 };
13771 }else{
13772 var C={};
13773 C.promise=new this(function(J,K){
13774 C.resolve=J;
13775 C.reject=K;
13776 })
13777 return C;
13778 }
13779 }
13780 function PromiseResolved(l){
13781 if(this===i){
13782 return PromiseCreateAndSet(+1,l);
13783 }else{
13784 return new this(function(J,K){J(l)});
13785 }
13786 }
13787 function PromiseRejected(m){
13788 var k;
13789 if(this===i){
13790 k=PromiseCreateAndSet(-1,m);
13791 %PromiseRejectEvent(k,m,false);
13792 }else{
13793 k=new this(function(J,K){K(m)});
13794 }
13795 return k;
13796 }
13797 function PromiseChain(q,r){
13798 q=(q===(void 0))?PromiseIdResolveHandler:q;
13799 r=(r===(void 0))?PromiseIdRejectHandler:r;
13800 var A=%_CallFunction(this.constructor,PromiseDeferred);
13801 switch((this[a])){
13802 case(void 0):
13803 throw MakeTypeError('not_a_promise',[this]);
13804 case 0:
13805 (this[c]).push(q,A);
13806 (this[d]).push(r,A);
13807 break;
13808 case+1:
13809 PromiseEnqueue((this[b]),
13810 [q,A],
13811 +1);
13812 break;
13813 case-1:
13814 if(!(!(this[g]===(void 0)))){
13815 %PromiseRevokeReject(this);
13816 }
13817 PromiseEnqueue((this[b]),
13818 [r,A],
13819 -1);
13820 break;
13821 }
13822 (this[g]=true);
13823 if((%_DebugIsActive()!=0)){
13824 %DebugPromiseEvent({promise:A.promise,parentPromise:this});
13825 }
13826 return A.promise;
13827 }
13828 function PromiseCatch(r){
13829 return this.then((void 0),r);
13830 }
13831 function PromiseThen(q,r){
13832 q=(%_ClassOf(q)==='Function')?q
13833 :PromiseIdResolveHandler;
13834 r=(%_ClassOf(r)==='Function')?r
13835 :PromiseIdRejectHandler;
13836 var L=this;
13837 var w=this.constructor;
13838 return %_CallFunction(
13839 this,
13840 function(l){
13841 l=PromiseCoerce(w,l);
13842 if(l===L){
13843 if((%_DebugIsActive()!=0&&%DebugCallbackSupportsStepping(r)))%DebugPrepareStepInIfStepping(r);
13844 return r(MakeTypeError('promise_cyclic',[l]));
13845 }else if(IsPromise(l)){
13846 return l.then(q,r);
13847 }else{
13848 if((%_DebugIsActive()!=0&&%DebugCallbackSupportsStepping(q)))%DebugPrepareStepInIfStepping(q);
13849 return q(l);
13850 }
13851 },
13852 r,
13853 PromiseChain
13854 );
13855 }
13856 function PromiseCast(l){
13857 return IsPromise(l)?l:new this(function(J){J(l)});
13858 }
13859 function PromiseAll(M){
13860 var A=%_CallFunction(this,PromiseDeferred);
13861 var N=[];
13862 try{
13863 var P=0;
13864 var H=0;
13865 for(var o of M){
13866 this.resolve(o).then(
13867 (function(H){
13868 return function(l){
13869 N[H]=l;
13870 if(--P===0)A.resolve(N);
13871 }
13872 })(H),
13873 function(m){A.reject(m);});
13874 ++H;
13875 ++P;
13876 }
13877 if(P===0){
13878 A.resolve(N);
13879 }
13880 }catch(e){
13881 A.reject(e)
13882 }
13883 return A.promise;
13884 }
13885 function PromiseRace(M){
13886 var A=%_CallFunction(this,PromiseDeferred);
13887 try{
13888 for(var o of M){
13889 this.resolve(o).then(
13890 function(l){A.resolve(l)},
13891 function(m){A.reject(m)});
13892 }
13893 }catch(e){
13894 A.reject(e)
13895 }
13896 return A.promise;
13897 }
13898 function PromiseHasUserDefinedRejectHandlerRecursive(k){
13899 var Q=(k[d]);
13900 if((Q===(void 0)))return false;
13901 for(var H=0;H<Q.length;H+=2){
13902 if(Q[H]!=PromiseIdRejectHandler)return true;
13903 if(PromiseHasUserDefinedRejectHandlerRecursive(Q[H+1].promise)){
13904 return true;
13905 }
13906 }
13907 return false;
13908 }
13909 function PromiseHasUserDefinedRejectHandler(){
13910 return PromiseHasUserDefinedRejectHandlerRecursive(this);
13911 };
13912 %AddNamedProperty(global,'Promise',i,2);
13913 %AddNamedProperty(i.prototype,symbolToStringTag,"Promise",
13914 2|1);
13915 InstallFunctions(i,2,[
13916 "defer",PromiseDeferred,
13917 "accept",PromiseResolved,
13918 "reject",PromiseRejected,
13919 "all",PromiseAll,
13920 "race",PromiseRace,
13921 "resolve",PromiseCast
13922 ]);
13923 InstallFunctions(i.prototype,2,[
13924 "chain",PromiseChain,
13925 "then",PromiseThen,
13926 "catch",PromiseCatch
13927 ]);
13928 $promiseCreate=PromiseCreate;
13929 $promiseResolve=PromiseResolve;
13930 $promiseReject=PromiseReject;
13931 $promiseChain=PromiseChain;
13932 $promiseCatch=PromiseCatch;
13933 $promiseThen=PromiseThen;
13934 $promiseHasUserDefinedRejectHandler=PromiseHasUserDefinedRejectHandler;
13935 $promiseStatus=a;
13936 $promiseValue=b;
13937 })();
13938
13939  messagesN¼\ 1
13940 var kMessages={
13941 constructor_is_generator:["Class constructor may not be a generator"],
13942 constructor_is_accessor:["Class constructor may not be an accessor"],
13943 unexpected_token:["Unexpected token ","%0"],
13944 unexpected_token_number:["Unexpected number"],
13945 unexpected_token_string:["Unexpected string"],
13946 unexpected_token_identifier:["Unexpected identifier"],
13947 unexpected_reserved:["Unexpected reserved word"],
13948 unexpected_strict_reserved:["Unexpected strict mode reserved word"],
13949 unexpected_eos:["Unexpected end of input"],
13950 unexpected_template_string:["Unexpected template string"],
13951 malformed_regexp:["Invalid regular expression: /","%0","/: ","%1"],
13952 malformed_regexp_flags:["Invalid regular expression flags"],
13953 unterminated_regexp:["Invalid regular expression: missing /"],
13954 unterminated_template:["Unterminated template literal"],
13955 unterminated_template_expr:["Missing } in template expression"],
13956 unterminated_arg_list:["missing ) after argument list"],
13957 regexp_flags:["Cannot supply flags when constructing one RegExp from another"],
13958 multiple_defaults_in_switch:["More than one default clause in switch statement"],
13959 newline_after_throw:["Illegal newline after throw"],
13960 label_redeclaration:["Label '","%0","' has already been declared"],
13961 var_redeclaration:["Identifier '","%0","' has already been declared"],
13962 duplicate_template_property:["Object template has duplicate property '","%0","'"],
13963 no_catch_or_finally:["Missing catch or finally after try"],
13964 unknown_label:["Undefined label '","%0","'"],
13965 uncaught_exception:["Uncaught ","%0"],
13966 undefined_method:["Object ","%1"," has no method '","%0","'"],
13967 not_defined:["%0"," is not defined"],
13968 non_method:["'super' is referenced from non-method"],
13969 unsupported_super:["Unsupported reference to 'super'"],
13970 non_object_property_load:["Cannot read property '","%0","' of ","%1"],
13971 non_object_property_store:["Cannot set property '","%0","' of ","%1"],
13972 illegal_invocation:["Illegal invocation"],
13973 no_setter_in_callback:["Cannot set property ","%0"," of ","%1"," which has only a getter"],
13974 flags_getter_non_object:["RegExp.prototype.flags getter called on non-object ","%0"],
13975 reduce_no_initial:["Reduce of empty array with no initial value"],
13976 value_and_accessor:["Invalid property.  A property cannot both have accessors and be writable or have a value, ","%0"],
13977 proto_object_or_null:["Object prototype may only be an Object or null: ","%0"],
13978 non_extensible_proto:["%0"," is not extensible"],
13979 handler_non_object:["Proxy.","%0"," called with non-object as handler"],
13980 proto_non_object:["Proxy.","%0"," called with non-object as prototype"],
13981 trap_function_expected:["Proxy.","%0"," called with non-function for '","%1","' trap"],
13982 proxy_repeated_prop_name:["Trap '","%1","' returned repeated property name '","%2","'"],
13983 invalid_weakmap_key:["Invalid value used as weak map key"],
13984 invalid_weakset_value:["Invalid value used in weak set"],
13985 not_date_object:["this is not a Date object."],
13986 observe_non_object:["Object.","%0"," cannot ","%0"," non-object"],
13987 observe_non_function:["Object.","%0"," cannot deliver to non-function"],
13988 observe_callback_frozen:["Object.observe cannot deliver to a frozen function object"],
13989 observe_invalid_accept:["Third argument to Object.observe must be an array of strings."],
13990 observe_type_non_string:["Invalid changeRecord with non-string 'type' property"],
13991 observe_perform_non_string:["Invalid non-string changeType"],
13992 observe_perform_non_function:["Cannot perform non-function"],
13993 observe_notify_non_notifier:["notify called on non-notifier object"],
13994 observe_global_proxy:["%0"," cannot be called on the global proxy object"],
13995 not_typed_array:["this is not a typed array."],
13996 invalid_argument:["invalid_argument"],
13997 data_view_not_array_buffer:["First argument to DataView constructor must be an ArrayBuffer"],
13998 constructor_not_function:["Constructor ","%0"," requires 'new'"],
13999 not_a_symbol:["%0"," is not a symbol"],
14000 not_a_promise:["%0"," is not a promise"],
14001 resolver_not_a_function:["Promise resolver ","%0"," is not a function"],
14002 promise_cyclic:["Chaining cycle detected for promise ","%0"],
14003 array_functions_on_frozen:["Cannot modify frozen array elements"],
14004 array_functions_change_sealed:["Cannot add/remove sealed array elements"],
14005 first_argument_not_regexp:["First argument to ","%0"," must not be a regular expression"],
14006 iterator_result_not_an_object:["Iterator result ","%0"," is not an object"],
14007 iterator_value_not_an_object:["Iterator value ","%0"," is not an entry object"],
14008 invalid_array_length:["Invalid array length"],
14009 invalid_array_buffer_length:["Invalid array buffer length"],
14010 invalid_string_length:["Invalid string length"],
14011 invalid_typed_array_offset:["Start offset is too large:"],
14012 invalid_typed_array_length:["Invalid typed array length"],
14013 invalid_typed_array_alignment:["%0"," of ","%1"," should be a multiple of ","%2"],
14014 typed_array_set_source_too_large:
14015 ["Source is too large"],
14016 typed_array_set_negative_offset:
14017 ["Start offset is negative"],
14018 invalid_data_view_offset:["Start offset is outside the bounds of the buffer"],
14019 invalid_data_view_length:["Invalid data view length"],
14020 invalid_data_view_accessor_offset:
14021 ["Offset is outside the bounds of the DataView"],
14022 invalid_time_value:["Invalid time value"],
14023 invalid_count_value:["Invalid count value"],
14024 invalid_code_point:["Invalid code point ","%0"],
14025 invalid_lhs_in_assignment:["Invalid left-hand side in assignment"],
14026 invalid_lhs_in_for:["Invalid left-hand side in for-loop"],
14027 invalid_lhs_in_postfix_op:["Invalid left-hand side expression in postfix operation"],
14028 invalid_lhs_in_prefix_op:["Invalid left-hand side expression in prefix operation"],
14029 not_isvar:["builtin %IS_VAR: not a variable"],
14030 single_function_literal:["Single function literal required"],
14031 invalid_regexp_flags:["Invalid flags supplied to RegExp constructor '","%0","'"],
14032 invalid_regexp:["Invalid RegExp pattern /","%0","/"],
14033 illegal_break:["Illegal break statement"],
14034 illegal_continue:["Illegal continue statement"],
14035 illegal_return:["Illegal return statement"],
14036 error_loading_debugger:["Error loading debugger"],
14037 circular_structure:["Converting circular structure to JSON"],
14038 called_on_null_or_undefined:["%0"," called on null or undefined"],
14039 array_indexof_not_defined:["Array.getIndexOf: Argument undefined"],
14040 object_not_extensible:["Can't add property ","%0",", object is not extensible"],
14041 illegal_access:["Illegal access"],
14042 static_prototype:["Classes may not have static property named prototype"],
14043 strict_mode_with:["Strict mode code may not include a with statement"],
14044 strict_eval_arguments:["Unexpected eval or arguments in strict mode"],
14045 too_many_arguments:["Too many arguments in function call (only 65535 allowed)"],
14046 too_many_parameters:["Too many parameters in function definition (only 65535 allowed)"],
14047 too_many_variables:["Too many variables declared (only 4194303 allowed)"],
14048 strict_param_dupe:["Strict mode function may not have duplicate parameter names"],
14049 strict_octal_literal:["Octal literals are not allowed in strict mode."],
14050 template_octal_literal:["Octal literals are not allowed in template strings."],
14051 strict_delete:["Delete of an unqualified identifier in strict mode."],
14052 strict_delete_property:["Cannot delete property '","%0","' of ","%1"],
14053 strict_function:["In strict mode code, functions can only be declared at top level or immediately within another function."],
14054 strict_read_only_property:["Cannot assign to read only property '","%0","' of ","%1"],
14055 strict_cannot_assign:["Cannot assign to read only '","%0","' in strict mode"],
14056 restricted_function_properties:["'caller' and 'arguments' are restricted function properties and cannot be accessed in this context."],
14057 strict_poison_pill:["'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them"],
14058 strict_caller:["Illegal access to a strict mode caller function."],
14059 strong_ellision:["In strong mode, arrays with holes are deprecated, use maps instead"],
14060 strong_arguments:["In strong mode, 'arguments' is deprecated, use '...args' instead"],
14061 strong_undefined:["In strong mode, binding or assigning to 'undefined' is deprecated"],
14062 strong_direct_eval:["In strong mode, direct calls to eval are deprecated"],
14063 strong_switch_fallthrough:["In strong mode, switch fall-through is deprecated, terminate each case with 'break', 'continue', 'return' or 'throw'"],
14064 strong_equal:["In strong mode, '==' and '!=' are deprecated, use '===' and '!==' instead"],
14065 strong_delete:["In strong mode, 'delete' is deprecated, use maps or sets instead"],
14066 strong_var:["In strong mode, 'var' is deprecated, use 'let' or 'const' instead"],
14067 strong_for_in:["In strong mode, 'for'-'in' loops are deprecated, use 'for'-'of' instead"],
14068 strong_empty:["In strong mode, empty sub-statements are deprecated, make them explicit with '{}' instead"],
14069 strong_use_before_declaration:["In strong mode, declaring variable '","%0","' before its use is required"],
14070 strong_unbound_global:["In strong mode, using an undeclared global variable '","%0","' is not allowed"],
14071 strong_super_call_missing:["In strong mode, invoking the super constructor in a subclass is required"],
14072 strong_super_call_duplicate:["In strong mode, invoking the super constructor multiple times is deprecated"],
14073 strong_super_call_misplaced:["In strong mode, the super constructor must be invoked before any assignment to 'this'"],
14074 strong_constructor_super:["In strong mode, 'super' can only be used to invoke the super constructor, and cannot be nested inside another statement or expression"],
14075 strong_constructor_this:["In strong mode, 'this' can only be used to initialize properties, and cannot be nested inside another statement or expression"],
14076 strong_constructor_return_value:["In strong mode, returning a value from a constructor is deprecated"],
14077 strong_constructor_return_misplaced:["In strong mode, returning from a constructor before its super constructor invocation or all assignments to 'this' is deprecated"],
14078 sloppy_lexical:["Block-scoped declarations (let, const, function, class) not yet supported outside strict mode"],
14079 malformed_arrow_function_parameter_list:["Malformed arrow function parameter list"],
14080 cant_prevent_ext_external_array_elements:["Cannot prevent extension of an object with external array elements"],
14081 redef_external_array_element:["Cannot redefine a property of an object with external array elements"],
14082 const_assign:["Assignment to constant variable."],
14083 module_export_undefined:["Export '","%0","' is not defined in module"],
14084 duplicate_export:["Duplicate export of '","%0","'"],
14085 unexpected_super:["'super' keyword unexpected here"],
14086 extends_value_not_a_function:["Class extends value ","%0"," is not a function or null"],
14087 prototype_parent_not_an_object:["Class extends value does not have valid prototype property ","%0"],
14088 duplicate_constructor:["A class may only have one constructor"],
14089 super_constructor_call:["A 'super' constructor call may only appear as the first statement of a function, and its arguments may not access 'this'. Other forms are not yet supported."],
14090 duplicate_proto:["Duplicate __proto__ fields are not allowed in object literals"],
14091 param_after_rest:["Rest parameter must be last formal parameter"],
14092 constructor_noncallable:["Class constructors cannot be invoked without 'new'"],
14093 array_not_subclassable:["Subclassing Arrays is not currently supported."],
14094 for_in_loop_initializer:["for-in loop variable declaration may not have an initializer."],
14095 for_of_loop_initializer:["for-of loop variable declaration may not have an initializer."],
14096 for_inof_loop_multi_bindings:["Invalid left-hand side in ","%0"," loop: Must have a single binding."],
14097 bad_getter_arity:["Getter must not have any formal parameters."],
14098 bad_setter_arity:["Setter must have exactly one formal parameter."],
14099 this_formal_parameter:["'this' is not a valid formal parameter name"],
14100 duplicate_arrow_function_formal_parameter:["Arrow function may not have duplicate parameter names"]
14101 };
14102 function FormatString(a,b){
14103 var c="";
14104 var d=0;
14105 for(var e=0;e<a.length;e++){
14106 var g=a[e];
14107 if(g.length==2&&%_StringCharCodeAt(g,0)==0x25){
14108 var d=(%_StringCharCodeAt(g,1)-0x30)>>>0;
14109 if(d<4){
14110 try{
14111 g=NoSideEffectToString(b[d]);
14112 }catch(e){
14113 if(%IsJSModule(b[d]))
14114 g="module";
14115 else if((%_IsSpecObject(b[d])))
14116 g="object";
14117 else
14118 g="#<error>";
14119 }
14120 }
14121 }
14122 c+=g;
14123 }
14124 return c;
14125 }
14126 function NoSideEffectToString(a){
14127 if((typeof(a)==='string'))return a;
14128 if((typeof(a)==='number'))return %_NumberToString(a);
14129 if((typeof(a)==='boolean'))return a?'true':'false';
14130 if((a===(void 0)))return'undefined';
14131 if((a===null))return'null';
14132 if((%_IsFunction(a))){
14133 var b=%_CallFunction(a,FunctionToString);
14134 if(b.length>128){
14135 b=%_SubString(b,0,111)+"...<omitted>..."+
14136 %_SubString(b,b.length-2,b.length);
14137 }
14138 return b;
14139 }
14140 if((typeof(a)==='symbol'))return %_CallFunction(a,$symbolToString);
14141 if((%_IsObject(a))
14142 &&%GetDataProperty(a,"toString")===ObjectToString){
14143 var c=%GetDataProperty(a,"constructor");
14144 if(typeof c=="function"){
14145 var d=c.name;
14146 if((typeof(d)==='string')&&d!==""){
14147 return"#<"+d+">";
14148 }
14149 }
14150 }
14151 if(CanBeSafelyTreatedAsAnErrorObject(a)){
14152 return %_CallFunction(a,ErrorToString);
14153 }
14154 return %_CallFunction(a,NoSideEffectsObjectToString);
14155 }
14156 function CanBeSafelyTreatedAsAnErrorObject(a){
14157 switch(%_ClassOf(a)){
14158 case'Error':
14159 case'EvalError':
14160 case'RangeError':
14161 case'ReferenceError':
14162 case'SyntaxError':
14163 case'TypeError':
14164 case'URIError':
14165 return true;
14166 }
14167 var b=%GetDataProperty(a,"toString");
14168 return a instanceof $Error&&b===ErrorToString;
14169 }
14170 function ToStringCheckErrorObject(a){
14171 if(CanBeSafelyTreatedAsAnErrorObject(a)){
14172 return %_CallFunction(a,ErrorToString);
14173 }else{
14174 return ToString(a);
14175 }
14176 }
14177 function ToDetailString(a){
14178 if(a!=null&&(%_IsObject(a))&&a.toString===ObjectToString){
14179 var b=a.constructor;
14180 if(typeof b=="function"){
14181 var c=b.name;
14182 if((typeof(c)==='string')&&c!==""){
14183 return"#<"+c+">";
14184 }
14185 }
14186 }
14187 return ToStringCheckErrorObject(a);
14188 }
14189 function MakeGenericError(a,b,c,d,e){
14190 if((c===(void 0))&&(typeof(b)==='string'))c=[];
14191 return new a(FormatMessage(b,c,d,e));
14192 }
14193 %FunctionSetInstanceClassName(Script,'Script');
14194 %AddNamedProperty(Script.prototype,'constructor',Script,
14195 2|4|1);
14196 %SetCode(Script,function(a){
14197 throw new $Error("Not supported");
14198 });
14199 function FormatMessage(a,b,c,d){
14200 if((typeof(a)==='number')){
14201 var b=NoSideEffectToString(b);
14202 var c=NoSideEffectToString(c);
14203 var d=NoSideEffectToString(d);
14204 try{
14205 return %FormatMessageString(a,b,c,d);
14206 }catch(e){
14207 return"";
14208 }
14209 }
14210 var e=kMessages[a];
14211 if(!e)return"<unknown message "+a+">";
14212 return FormatString(e,b);
14213 }
14214 function GetLineNumber(a){
14215 var b=%MessageGetStartPosition(a);
14216 if(b==-1)return 0;
14217 var c=%MessageGetScript(a);
14218 var d=c.locationFromPosition(b,true);
14219 if(d==null)return 0;
14220 return d.line+1;
14221 }
14222 function GetSourceLine(a){
14223 var b=%MessageGetScript(a);
14224 var c=%MessageGetStartPosition(a);
14225 var d=b.locationFromPosition(c,true);
14226 if(d==null)return"";
14227 return d.sourceText();
14228 }
14229 function MakeError(a,b,c,d){
14230 return MakeGenericError($Error,a,b,c,d);
14231 }
14232 function MakeTypeError(a,b,c,d){
14233 return MakeGenericError($TypeError,a,b,c,d);
14234 }
14235 function MakeRangeError(a,b,c,d){
14236 return MakeGenericError($RangeError,a,b,c,d);
14237 }
14238 function MakeSyntaxError(a,b,c,d){
14239 return MakeGenericError($SyntaxError,a,b,c,d);
14240 }
14241 function MakeReferenceError(a,b,c,d){
14242 return MakeGenericError($ReferenceError,a,b,c,d);
14243 }
14244 function MakeEvalError(a,b,c,d){
14245 return MakeGenericError($EvalError,a,b,c,d);
14246 }
14247 function MakeTypeErrorEmbedded(a,b){
14248 return MakeGenericError($TypeError,a,[b]);
14249 }
14250 function MakeSyntaxErrorEmbedded(a,b){
14251 return MakeGenericError($SyntaxError,a,[b]);
14252 }
14253 function MakeReferenceErrorEmbedded(a,b){
14254 return MakeGenericError($ReferenceError,a,[b]);
14255 }
14256 function ScriptLineFromPosition(a){
14257 var b=0;
14258 var c=this.lineCount()-1;
14259 var d=this.line_ends;
14260 if(a>d[c]){
14261 return-1;
14262 }
14263 if(a<=d[0]){
14264 return 0;
14265 }
14266 while(c>=1){
14267 var e=(b+c)>>1;
14268 if(a>d[e]){
14269 b=e+1;
14270 }else if(a<=d[e-1]){
14271 c=e-1;
14272 }else{
14273 return e;
14274 }
14275 }
14276 return-1;
14277 }
14278 function ScriptLocationFromPosition(position,
14279 include_resource_offset){
14280 var a=this.lineFromPosition(position);
14281 if(a==-1)return null;
14282 var b=this.line_ends;
14283 var c=a==0?0:b[a-1]+1;
14284 var d=b[a];
14285 if(d>0&&%_CallFunction(this.source,d-1,$stringCharAt)=='\r'){
14286 d--;
14287 }
14288 var e=position-c;
14289 if(include_resource_offset){
14290 a+=this.line_offset;
14291 if(a==this.line_offset){
14292 e+=this.column_offset;
14293 }
14294 }
14295 return new SourceLocation(this,position,a,e,c,d);
14296 }
14297 function ScriptLocationFromLine(a,b,c){
14298 var d=0;
14299 if(!(a===(void 0))){
14300 d=a-this.line_offset;
14301 }
14302 var e=b||0;
14303 if(d==0){
14304 e-=this.column_offset;
14305 }
14306 var g=c||0;
14307 if(d<0||e<0||g<0)return null;
14308 if(d==0){
14309 return this.locationFromPosition(g+e,false);
14310 }else{
14311 var h=this.lineFromPosition(g);
14312 if(h==-1||h+d>=this.lineCount()){
14313 return null;
14314 }
14315 return this.locationFromPosition(
14316 this.line_ends[h+d-1]+1+e);
14317 }
14318 }
14319 function ScriptSourceSlice(a,b){
14320 var c=(a===(void 0))?this.line_offset
14321 :a;
14322 var d=(b===(void 0))?this.line_offset+this.lineCount()
14323 :b;
14324 c-=this.line_offset;
14325 d-=this.line_offset;
14326 if(c<0)c=0;
14327 if(d>this.lineCount())d=this.lineCount();
14328 if(c>=this.lineCount()||
14329 d<0||
14330 c>d){
14331 return null;
14332 }
14333 var e=this.line_ends;
14334 var g=c==0?0:e[c-1]+1;
14335 var h=d==0?0:e[d-1]+1;
14336 return new SourceSlice(this,
14337 c+this.line_offset,
14338 d+this.line_offset,
14339 g,h);
14340 }
14341 function ScriptSourceLine(a){
14342 var b=0;
14343 if(!(a===(void 0))){
14344 b=a-this.line_offset;
14345 }
14346 if(b<0||this.lineCount()<=b){
14347 return null;
14348 }
14349 var c=this.line_ends;
14350 var d=b==0?0:c[b-1]+1;
14351 var e=c[b];
14352 return %_CallFunction(this.source,d,e,$stringSubstring);
14353 }
14354 function ScriptLineCount(){
14355 return this.line_ends.length;
14356 }
14357 function ScriptNameOrSourceURL(){
14358 if(this.source_url)return this.source_url;
14359 return this.name;
14360 }
14361 SetUpLockedPrototype(Script,[
14362 "source",
14363 "name",
14364 "source_url",
14365 "source_mapping_url",
14366 "line_ends",
14367 "line_offset",
14368 "column_offset"
14369 ],[
14370 "lineFromPosition",ScriptLineFromPosition,
14371 "locationFromPosition",ScriptLocationFromPosition,
14372 "locationFromLine",ScriptLocationFromLine,
14373 "sourceSlice",ScriptSourceSlice,
14374 "sourceLine",ScriptSourceLine,
14375 "lineCount",ScriptLineCount,
14376 "nameOrSourceURL",ScriptNameOrSourceURL
14377 ]
14378 );
14379 function SourceLocation(a,b,c,d,e,g){
14380 this.script=a;
14381 this.position=b;
14382 this.line=c;
14383 this.column=d;
14384 this.start=e;
14385 this.end=g;
14386 }
14387 function SourceLocationSourceText(){
14388 return %_CallFunction(this.script.source,
14389 this.start,
14390 this.end,
14391 $stringSubstring);
14392 }
14393 SetUpLockedPrototype(SourceLocation,
14394 ["script","position","line","column","start","end"],
14395 ["sourceText",SourceLocationSourceText]
14396 );
14397 function SourceSlice(a,b,c,d,e){
14398 this.script=a;
14399 this.from_line=b;
14400 this.to_line=c;
14401 this.from_position=d;
14402 this.to_position=e;
14403 }
14404 function SourceSliceSourceText(){
14405 return %_CallFunction(this.script.source,
14406 this.from_position,
14407 this.to_position,
14408 $stringSubstring);
14409 }
14410 SetUpLockedPrototype(SourceSlice,
14411 ["script","from_line","to_line","from_position","to_position"],
14412 ["sourceText",SourceSliceSourceText]
14413 );
14414 function GetPositionInLine(a){
14415 var b=%MessageGetScript(a);
14416 var c=%MessageGetStartPosition(a);
14417 var d=b.locationFromPosition(c,false);
14418 if(d==null)return-1;
14419 return c-d.start;
14420 }
14421 function GetStackTraceLine(a,b,c,d){
14422 return new CallSite(a,b,c,false).toString();
14423 }
14424 var CallSiteReceiverKey=(%CreatePrivateOwnSymbol("CallSite#receiver"));
14425 var CallSiteFunctionKey=(%CreatePrivateOwnSymbol("CallSite#function"));
14426 var CallSitePositionKey=(%CreatePrivateOwnSymbol("CallSite#position"));
14427 var CallSiteStrictModeKey=(%CreatePrivateOwnSymbol("CallSite#strict_mode"));
14428 function CallSite(a,b,c,d){
14429 (this[CallSiteReceiverKey]=a);
14430 (this[CallSiteFunctionKey]=b);
14431 (this[CallSitePositionKey]=c);
14432 (this[CallSiteStrictModeKey]=d);
14433 }
14434 function CallSiteGetThis(){
14435 return(this[CallSiteStrictModeKey])
14436 ?(void 0):(this[CallSiteReceiverKey]);
14437 }
14438 function CallSiteGetTypeName(){
14439 return GetTypeName((this[CallSiteReceiverKey]),false);
14440 }
14441 function CallSiteIsToplevel(){
14442 if((this[CallSiteReceiverKey])==null){
14443 return true;
14444 }
14445 return(%_ClassOf((this[CallSiteReceiverKey]))==='global');
14446 }
14447 function CallSiteIsEval(){
14448 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14449 return a&&a.compilation_type==1;
14450 }
14451 function CallSiteGetEvalOrigin(){
14452 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14453 return FormatEvalOrigin(a);
14454 }
14455 function CallSiteGetScriptNameOrSourceURL(){
14456 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14457 return a?a.nameOrSourceURL():null;
14458 }
14459 function CallSiteGetFunction(){
14460 return(this[CallSiteStrictModeKey])
14461 ?(void 0):(this[CallSiteFunctionKey]);
14462 }
14463 function CallSiteGetFunctionName(){
14464 var a=(this[CallSiteFunctionKey]);
14465 var b=%FunctionGetDebugName(a);
14466 if(b){
14467 return b;
14468 }
14469 var c=%FunctionGetScript(a);
14470 if(c&&c.compilation_type==1){
14471 return"eval";
14472 }
14473 return null;
14474 }
14475 function CallSiteGetMethodName(){
14476 var a=(this[CallSiteReceiverKey]);
14477 var b=(this[CallSiteFunctionKey]);
14478 var c=b.name;
14479 if(c&&a&&
14480 (%_CallFunction(a,c,ObjectLookupGetter)===b||
14481 %_CallFunction(a,c,ObjectLookupSetter)===b||
14482 ((%_IsObject(a))&&%GetDataProperty(a,c)===b))){
14483 return c;
14484 }
14485 var d=null;
14486 for(var e in a){
14487 if(%_CallFunction(a,e,ObjectLookupGetter)===b||
14488 %_CallFunction(a,e,ObjectLookupSetter)===b||
14489 ((%_IsObject(a))&&%GetDataProperty(a,e)===b)){
14490 if(d){
14491 return null;
14492 }
14493 d=e;
14494 }
14495 }
14496 if(d){
14497 return d;
14498 }
14499 return null;
14500 }
14501 function CallSiteGetFileName(){
14502 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14503 return a?a.name:null;
14504 }
14505 function CallSiteGetLineNumber(){
14506 if((this[CallSitePositionKey])==-1){
14507 return null;
14508 }
14509 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14510 var b=null;
14511 if(a){
14512 b=a.locationFromPosition(
14513 (this[CallSitePositionKey]),true);
14514 }
14515 return b?b.line+1:null;
14516 }
14517 function CallSiteGetColumnNumber(){
14518 if((this[CallSitePositionKey])==-1){
14519 return null;
14520 }
14521 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14522 var b=null;
14523 if(a){
14524 b=a.locationFromPosition(
14525 (this[CallSitePositionKey]),true);
14526 }
14527 return b?b.column+1:null;
14528 }
14529 function CallSiteIsNative(){
14530 var a=%FunctionGetScript((this[CallSiteFunctionKey]));
14531 return a?(a.type==0):false;
14532 }
14533 function CallSiteGetPosition(){
14534 return(this[CallSitePositionKey]);
14535 }
14536 function CallSiteIsConstructor(){
14537 var a=(this[CallSiteReceiverKey]);
14538 var b=(a!=null&&(%_IsObject(a)))
14539 ?%GetDataProperty(a,"constructor"):null;
14540 if(!b)return false;
14541 return(this[CallSiteFunctionKey])===b;
14542 }
14543 function CallSiteToString(){
14544 var a;
14545 var b="";
14546 if(this.isNative()){
14547 b="native";
14548 }else{
14549 a=this.getScriptNameOrSourceURL();
14550 if(!a&&this.isEval()){
14551 b=this.getEvalOrigin();
14552 b+=", ";
14553 }
14554 if(a){
14555 b+=a;
14556 }else{
14557 b+="<anonymous>";
14558 }
14559 var c=this.getLineNumber();
14560 if(c!=null){
14561 b+=":"+c;
14562 var d=this.getColumnNumber();
14563 if(d){
14564 b+=":"+d;
14565 }
14566 }
14567 }
14568 var e="";
14569 var g=this.getFunctionName();
14570 var h=true;
14571 var i=this.isConstructor();
14572 var j=!(this.isToplevel()||i);
14573 if(j){
14574 var k=GetTypeName((this[CallSiteReceiverKey]),true);
14575 var l=this.getMethodName();
14576 if(g){
14577 if(k&&
14578 %_CallFunction(g,k,$stringIndexOf)!=0){
14579 e+=k+".";
14580 }
14581 e+=g;
14582 if(l&&
14583 (%_CallFunction(g,"."+l,$stringIndexOf)!=
14584 g.length-l.length-1)){
14585 e+=" [as "+l+"]";
14586 }
14587 }else{
14588 e+=k+"."+(l||"<anonymous>");
14589 }
14590 }else if(i){
14591 e+="new "+(g||"<anonymous>");
14592 }else if(g){
14593 e+=g;
14594 }else{
14595 e+=b;
14596 h=false;
14597 }
14598 if(h){
14599 e+=" ("+b+")";
14600 }
14601 return e;
14602 }
14603 SetUpLockedPrototype(CallSite,["receiver","fun","pos"],[
14604 "getThis",CallSiteGetThis,
14605 "getTypeName",CallSiteGetTypeName,
14606 "isToplevel",CallSiteIsToplevel,
14607 "isEval",CallSiteIsEval,
14608 "getEvalOrigin",CallSiteGetEvalOrigin,
14609 "getScriptNameOrSourceURL",CallSiteGetScriptNameOrSourceURL,
14610 "getFunction",CallSiteGetFunction,
14611 "getFunctionName",CallSiteGetFunctionName,
14612 "getMethodName",CallSiteGetMethodName,
14613 "getFileName",CallSiteGetFileName,
14614 "getLineNumber",CallSiteGetLineNumber,
14615 "getColumnNumber",CallSiteGetColumnNumber,
14616 "isNative",CallSiteIsNative,
14617 "getPosition",CallSiteGetPosition,
14618 "isConstructor",CallSiteIsConstructor,
14619 "toString",CallSiteToString
14620 ]);
14621 function FormatEvalOrigin(a){
14622 var b=a.nameOrSourceURL();
14623 if(b){
14624 return b;
14625 }
14626 var c="eval at ";
14627 if(a.eval_from_function_name){
14628 c+=a.eval_from_function_name;
14629 }else{
14630 c+="<anonymous>";
14631 }
14632 var d=a.eval_from_script;
14633 if(d){
14634 if(d.compilation_type==1){
14635 c+=" ("+FormatEvalOrigin(d)+")";
14636 }else{
14637 if(d.name){
14638 c+=" ("+d.name;
14639 var e=d.locationFromPosition(
14640 a.eval_from_script_position,true);
14641 if(e){
14642 c+=":"+(e.line+1);
14643 c+=":"+(e.column+1);
14644 }
14645 c+=")";
14646 }else{
14647 c+=" (unknown source)";
14648 }
14649 }
14650 }
14651 return c;
14652 }
14653 function FormatErrorString(a){
14654 try{
14655 return %_CallFunction(a,ErrorToString);
14656 }catch(e){
14657 try{
14658 return"<error: "+e+">";
14659 }catch(ee){
14660 return"<error>";
14661 }
14662 }
14663 }
14664 function GetStackFrames(a){
14665 var b=new InternalArray();
14666 var c=a[0];
14667 for(var d=1;d<a.length;d+=4){
14668 var e=a[d];
14669 var g=a[d+1];
14670 var h=a[d+2];
14671 var i=a[d+3];
14672 var j=%FunctionGetPositionForOffset(h,i);
14673 c--;
14674 b.push(new CallSite(e,g,j,(c<0)));
14675 }
14676 return b;
14677 }
14678 var formatting_custom_stack_trace=false;
14679 function FormatStackTrace(a,b){
14680 var c=GetStackFrames(b);
14681 if((%_IsFunction($Error.prepareStackTrace))&&!formatting_custom_stack_trace){
14682 var d=[];
14683 %MoveArrayContents(c,d);
14684 formatting_custom_stack_trace=true;
14685 var e=(void 0);
14686 try{
14687 e=$Error.prepareStackTrace(a,d);
14688 }catch(e){
14689 throw e;
14690 }finally{
14691 formatting_custom_stack_trace=false;
14692 }
14693 return e;
14694 }
14695 var g=new InternalArray();
14696 g.push(FormatErrorString(a));
14697 for(var h=0;h<c.length;h++){
14698 var i=c[h];
14699 var j;
14700 try{
14701 j=i.toString();
14702 }catch(e){
14703 try{
14704 j="<error: "+e+">";
14705 }catch(ee){
14706 j="<error>";
14707 }
14708 }
14709 g.push("    at "+j);
14710 }
14711 return %_CallFunction(g,"\n",$arrayJoin);
14712 }
14713 function GetTypeName(a,b){
14714 var c=a.constructor;
14715 if(!c){
14716 return b?null:
14717 %_CallFunction(a,NoSideEffectsObjectToString);
14718 }
14719 var d=c.name;
14720 if(!d){
14721 return b?null:
14722 %_CallFunction(a,NoSideEffectsObjectToString);
14723 }
14724 return d;
14725 }
14726 var stack_trace_symbol;
14727 var formatted_stack_trace_symbol=(%CreatePrivateOwnSymbol("formatted stack trace"));
14728 var StackTraceGetter=function(){
14729 var a=(void 0);
14730 var b=this;
14731 while(b){
14732 var a=
14733 (b[formatted_stack_trace_symbol]);
14734 if((a===(void 0))){
14735 var c=(b[stack_trace_symbol]);
14736 if((c===(void 0))){
14737 b=%_GetPrototype(b);
14738 continue;
14739 }
14740 a=FormatStackTrace(b,c);
14741 (b[stack_trace_symbol]=(void 0));
14742 (b[formatted_stack_trace_symbol]=a);
14743 }
14744 return a;
14745 }
14746 return(void 0);
14747 };
14748 var StackTraceSetter=function(a){
14749 if((%HasOwnProperty(this,stack_trace_symbol))){
14750 (this[stack_trace_symbol]=(void 0));
14751 (this[formatted_stack_trace_symbol]=a);
14752 }
14753 };
14754 var captureStackTrace=function captureStackTrace(a,b){
14755 ObjectDefineProperty(a,'stack',{get:StackTraceGetter,
14756 set:StackTraceSetter,
14757 configurable:true});
14758 %CollectStackTrace(a,b?b:captureStackTrace);
14759 }
14760 function SetUpError(){
14761 var a=function(b){
14762 var c=b.name;
14763 %AddNamedProperty(global,c,b,2);
14764 %AddNamedProperty(builtins,'$'+c,b,
14765 2|4|1);
14766 if(c=='Error'){
14767 var d=function(){};
14768 %FunctionSetPrototype(d,$Object.prototype);
14769 %FunctionSetInstanceClassName(d,'Error');
14770 %FunctionSetPrototype(b,new d());
14771 }else{
14772 %FunctionSetPrototype(b,new $Error());
14773 %InternalSetPrototype(b,$Error);
14774 }
14775 %FunctionSetInstanceClassName(b,'Error');
14776 %AddNamedProperty(b.prototype,'constructor',b,2);
14777 %AddNamedProperty(b.prototype,'name',c,2);
14778 %SetCode(b,function(e){
14779 if(%_IsConstructCall()){
14780 try{captureStackTrace(this,b);}catch(e){}
14781 if(!(e===(void 0))){
14782 %AddNamedProperty(this,'message',ToString(e),2);
14783 }
14784 }else{
14785 return new b(e);
14786 }
14787 });
14788 %SetNativeFlag(b);
14789 };
14790 a(function Error(){});
14791 a(function TypeError(){});
14792 a(function RangeError(){});
14793 a(function SyntaxError(){});
14794 a(function ReferenceError(){});
14795 a(function EvalError(){});
14796 a(function URIError(){});
14797 }
14798 SetUpError();
14799 $Error.captureStackTrace=captureStackTrace;
14800 %AddNamedProperty($Error.prototype,'message','',2);
14801 var visited_errors=new InternalArray();
14802 var cyclic_error_marker=new $Object();
14803 function GetPropertyWithoutInvokingMonkeyGetters(a,b){
14804 var c=a;
14805 while(c&&!%HasOwnProperty(c,b)){
14806 c=%_GetPrototype(c);
14807 }
14808 if((c===null))return(void 0);
14809 if(!(%_IsObject(c)))return a[b];
14810 var d=%GetOwnProperty(c,b);
14811 if(d&&d[0]){
14812 var e=b==="name";
14813 if(c===$ReferenceError.prototype)
14814 return e?"ReferenceError":(void 0);
14815 if(c===$SyntaxError.prototype)
14816 return e?"SyntaxError":(void 0);
14817 if(c===$TypeError.prototype)
14818 return e?"TypeError":(void 0);
14819 }
14820 return a[b];
14821 }
14822 function ErrorToStringDetectCycle(a){
14823 if(!%PushIfAbsent(visited_errors,a))throw cyclic_error_marker;
14824 try{
14825 var b=GetPropertyWithoutInvokingMonkeyGetters(a,"name");
14826 b=(b===(void 0))?"Error":((typeof(%IS_VAR(b))==='string')?b:NonStringToString(b));
14827 var c=GetPropertyWithoutInvokingMonkeyGetters(a,"message");
14828 c=(c===(void 0))?"":((typeof(%IS_VAR(c))==='string')?c:NonStringToString(c));
14829 if(b==="")return c;
14830 if(c==="")return b;
14831 return b+": "+c;
14832 }finally{
14833 visited_errors.length=visited_errors.length-1;
14834 }
14835 }
14836 function ErrorToString(){
14837 if(!(%_IsSpecObject(this))){
14838 throw MakeTypeError(3,"Error.prototype.toString");
14839 }
14840 try{
14841 return ErrorToStringDetectCycle(this);
14842 }catch(e){
14843 if(e===cyclic_error_marker){
14844 return'';
14845 }
14846 throw e;
14847 }
14848 }
14849 InstallFunctions($Error.prototype,2,['toString',ErrorToString]);
14850 function SetUpStackOverflowBoilerplate(){
14851 var a=MakeRangeError(39);
14852 %DefineAccessorPropertyUnchecked(
14853 a,'stack',StackTraceGetter,StackTraceSetter,2);
14854 return a;
14855 }
14856 var kStackOverflowBoilerplate=SetUpStackOverflowBoilerplate();
14857
14858 \10json5;
14859 var $jsonSerializeAdapter;
14860 (function(){
14861 "use strict";
14862 %CheckIsBootstrapping();
14863 var a=global.JSON;
14864 function Revive(b,c,d){
14865 var e=b[c];
14866 if((%_IsObject(e))){
14867 if((%_IsArray(e))){
14868 var g=e.length;
14869 for(var h=0;h<g;h++){
14870 var i=Revive(e,%_NumberToString(h),d);
14871 e[h]=i;
14872 }
14873 }else{
14874 for(var j in e){
14875 if(%_CallFunction(e,j,ObjectHasOwnProperty)){
14876 var i=Revive(e,j,d);
14877 if((i===(void 0))){
14878 delete e[j];
14879 }else{
14880 e[j]=i;
14881 }
14882 }
14883 }
14884 }
14885 }
14886 return %_CallFunction(b,c,e,d);
14887 }
14888 function JSONParse(k,d){
14889 var l=%ParseJson(((typeof(%IS_VAR(k))==='string')?k:NonStringToString(k)));
14890 if((%_ClassOf(d)==='Function')){
14891 return Revive({'':l},'',d);
14892 }else{
14893 return l;
14894 }
14895 }
14896 function SerializeArray(m,n,o,q,r){
14897 if(!%PushIfAbsent(o,m)){
14898 throw MakeTypeError('circular_structure',[]);
14899 }
14900 var t=q;
14901 q+=r;
14902 var u=new InternalArray();
14903 var w=m.length;
14904 for(var h=0;h<w;h++){
14905 var z=JSONSerialize(%_NumberToString(h),m,n,o,
14906 q,r);
14907 if((z===(void 0))){
14908 z="null";
14909 }
14910 u.push(z);
14911 }
14912 var A;
14913 if(r==""){
14914 A="["+u.join(",")+"]";
14915 }else if(u.length>0){
14916 var B=",\n"+q;
14917 A="[\n"+q+u.join(B)+"\n"+
14918 t+"]";
14919 }else{
14920 A="[]";
14921 }
14922 o.pop();
14923 return A;
14924 }
14925 function SerializeObject(m,n,o,q,r){
14926 if(!%PushIfAbsent(o,m)){
14927 throw MakeTypeError('circular_structure',[]);
14928 }
14929 var t=q;
14930 q+=r;
14931 var u=new InternalArray();
14932 if((%_IsArray(n))){
14933 var g=n.length;
14934 for(var h=0;h<g;h++){
14935 if(%_CallFunction(n,h,ObjectHasOwnProperty)){
14936 var j=n[h];
14937 var z=JSONSerialize(j,m,n,o,q,r);
14938 if(!(z===(void 0))){
14939 var C=%QuoteJSONString(j)+":";
14940 if(r!="")C+=" ";
14941 C+=z;
14942 u.push(C);
14943 }
14944 }
14945 }
14946 }else{
14947 for(var j in m){
14948 if(%_CallFunction(m,j,ObjectHasOwnProperty)){
14949 var z=JSONSerialize(j,m,n,o,q,r);
14950 if(!(z===(void 0))){
14951 var C=%QuoteJSONString(j)+":";
14952 if(r!="")C+=" ";
14953 C+=z;
14954 u.push(C);
14955 }
14956 }
14957 }
14958 }
14959 var A;
14960 if(r==""){
14961 A="{"+u.join(",")+"}";
14962 }else if(u.length>0){
14963 var B=",\n"+q;
14964 A="{\n"+q+u.join(B)+"\n"+
14965 t+"}";
14966 }else{
14967 A="{}";
14968 }
14969 o.pop();
14970 return A;
14971 }
14972 function JSONSerialize(D,b,n,o,q,r){
14973 var m=b[D];
14974 if((%_IsSpecObject(m))){
14975 var E=m.toJSON;
14976 if((%_ClassOf(E)==='Function')){
14977 m=%_CallFunction(m,D,E);
14978 }
14979 }
14980 if((%_ClassOf(n)==='Function')){
14981 m=%_CallFunction(b,D,m,n);
14982 }
14983 if((typeof(m)==='string')){
14984 return %QuoteJSONString(m);
14985 }else if((typeof(m)==='number')){
14986 return((%_IsSmi(%IS_VAR(m))||m-m==0)?%_NumberToString(m):"null");
14987 }else if((typeof(m)==='boolean')){
14988 return m?"true":"false";
14989 }else if((m===null)){
14990 return"null";
14991 }else if((%_IsSpecObject(m))&&!(typeof m=="function")){
14992 if((%_IsArray(m))){
14993 return SerializeArray(m,n,o,q,r);
14994 }else if((%_ClassOf(m)==='Number')){
14995 m=ToNumber(m);
14996 return((%_IsSmi(%IS_VAR(m))||m-m==0)?%_NumberToString(m):"null");
14997 }else if((%_ClassOf(m)==='String')){
14998 return %QuoteJSONString(ToString(m));
14999 }else if((%_ClassOf(m)==='Boolean')){
15000 return %_ValueOf(m)?"true":"false";
15001 }else{
15002 return SerializeObject(m,n,o,q,r);
15003 }
15004 }
15005 return(void 0);
15006 }
15007 function JSONStringify(m,n,G){
15008 if(%_ArgumentsLength()==1){
15009 return %BasicJSONStringify(m);
15010 }
15011 if((%_IsObject(G))){
15012 if((%_ClassOf(G)==='Number')){
15013 G=ToNumber(G);
15014 }else if((%_ClassOf(G)==='String')){
15015 G=ToString(G);
15016 }
15017 }
15018 var r;
15019 if((typeof(G)==='number')){
15020 G=$max(0,$min(ToInteger(G),10));
15021 r=%_SubString("          ",0,G);
15022 }else if((typeof(G)==='string')){
15023 if(G.length>10){
15024 r=%_SubString(G,0,10);
15025 }else{
15026 r=G;
15027 }
15028 }else{
15029 r="";
15030 }
15031 if((%_IsArray(n))){
15032 var H=new InternalArray();
15033 var I={__proto__:null};
15034 var J={};
15035 var g=n.length;
15036 for(var h=0;h<g;h++){
15037 var K=n[h];
15038 if((%_ClassOf(K)==='String')){
15039 K=ToString(K);
15040 }else{
15041 if((%_ClassOf(K)==='Number'))K=ToNumber(K);
15042 if((typeof(K)==='number'))K=%_NumberToString(K);
15043 }
15044 if((typeof(K)==='string')&&I[K]!=J){
15045 H.push(K);
15046 I[K]=J;
15047 }
15048 }
15049 n=H;
15050 }
15051 return JSONSerialize('',{'':m},n,new InternalArray(),"",r);
15052 }
15053 %AddNamedProperty(a,symbolToStringTag,"JSON",1|2);
15054 InstallFunctions(a,2,[
15055 "parse",JSONParse,
15056 "stringify",JSONStringify
15057 ]);
15058 $jsonSerializeAdapter=function(D,L){
15059 var b={};
15060 b[D]=L;
15061 return JSONSerialize(D,b,(void 0),new InternalArray(),"","");
15062 }
15063 })();
15064
15065 8array-iteratorEB
15066 var $iteratorCreateResultObject;
15067 var $arrayValues;
15068 (function(){
15069 "use strict";
15070 %CheckIsBootstrapping();
15071 var a=global.Array;
15072 var b=global.Object;
15073 var c=global.Uint8Array;
15074
15075 var d=global.Int8Array;
15076
15077 var e=global.Uint16Array;
15078
15079 var g=global.Int16Array;
15080
15081 var h=global.Uint32Array;
15082
15083 var i=global.Int32Array;
15084
15085 var j=global.Float32Array;
15086
15087 var k=global.Float64Array;
15088
15089 var l=global.Uint8ClampedArray;
15090
15091
15092 var m=(%CreateGlobalPrivateOwnSymbol("ArrayIterator#object"));
15093 var n=(%CreateGlobalPrivateOwnSymbol("ArrayIterator#next"));
15094 var o=(%CreateGlobalPrivateOwnSymbol("ArrayIterator#kind"));
15095 function ArrayIterator(){}
15096 function CreateArrayIterator(q,r){
15097 var t=ToObject(q);
15098 var u=new ArrayIterator;
15099 (u[m]=t);
15100 (u[n]=0);
15101 (u[o]=r);
15102 return u;
15103 }
15104 function CreateIteratorResultObject(w,z){
15105 return{value:w,done:z};
15106 }
15107 function ArrayIteratorIterator(){
15108 return this;
15109 }
15110 function ArrayIteratorNext(){
15111 var u=ToObject(this);
15112 if(!(!(u[n]===(void 0)))){
15113 throw MakeTypeError(8,
15114 'Array Iterator.prototype.next',this);
15115 }
15116 var q=(u[m]);
15117 if((q===(void 0))){
15118 return CreateIteratorResultObject((void 0),true);
15119 }
15120 var A=(u[n]);
15121 var B=(u[o]);
15122 var C=(q.length>>>0);
15123 if(A>=C){
15124 (u[m]=(void 0));
15125 return CreateIteratorResultObject((void 0),true);
15126 }
15127 (u[n]=A+1);
15128 if(B==2){
15129 return CreateIteratorResultObject(q[A],false);
15130 }
15131 if(B==3){
15132 return CreateIteratorResultObject([A,q[A]],false);
15133 }
15134 return CreateIteratorResultObject(A,false);
15135 }
15136 function ArrayEntries(){
15137 return CreateArrayIterator(this,3);
15138 }
15139 function ArrayValues(){
15140 return CreateArrayIterator(this,2);
15141 }
15142 function ArrayKeys(){
15143 return CreateArrayIterator(this,1);
15144 }
15145 %FunctionSetPrototype(ArrayIterator,new b());
15146 %FunctionSetInstanceClassName(ArrayIterator,'Array Iterator');
15147 InstallFunctions(ArrayIterator.prototype,2,[
15148 'next',ArrayIteratorNext
15149 ]);
15150 %FunctionSetName(ArrayIteratorIterator,'[Symbol.iterator]');
15151 %AddNamedProperty(ArrayIterator.prototype,symbolIterator,
15152 ArrayIteratorIterator,2);
15153 %AddNamedProperty(ArrayIterator.prototype,symbolToStringTag,
15154 "Array Iterator",1|2);
15155 InstallFunctions(a.prototype,2,[
15156 'entries',ArrayEntries,
15157 'keys',ArrayKeys
15158 ]);
15159 %AddNamedProperty(a.prototype,symbolIterator,ArrayValues,
15160 2);
15161 %AddNamedProperty(c.prototype,'entries',ArrayEntries,2);
15162 %AddNamedProperty(c.prototype,'values',ArrayValues,2);
15163 %AddNamedProperty(c.prototype,'keys',ArrayKeys,2);
15164 %AddNamedProperty(c.prototype,symbolIterator,ArrayValues,
15165 2);
15166
15167 %AddNamedProperty(d.prototype,'entries',ArrayEntries,2);
15168 %AddNamedProperty(d.prototype,'values',ArrayValues,2);
15169 %AddNamedProperty(d.prototype,'keys',ArrayKeys,2);
15170 %AddNamedProperty(d.prototype,symbolIterator,ArrayValues,
15171 2);
15172
15173 %AddNamedProperty(e.prototype,'entries',ArrayEntries,2);
15174 %AddNamedProperty(e.prototype,'values',ArrayValues,2);
15175 %AddNamedProperty(e.prototype,'keys',ArrayKeys,2);
15176 %AddNamedProperty(e.prototype,symbolIterator,ArrayValues,
15177 2);
15178
15179 %AddNamedProperty(g.prototype,'entries',ArrayEntries,2);
15180 %AddNamedProperty(g.prototype,'values',ArrayValues,2);
15181 %AddNamedProperty(g.prototype,'keys',ArrayKeys,2);
15182 %AddNamedProperty(g.prototype,symbolIterator,ArrayValues,
15183 2);
15184
15185 %AddNamedProperty(h.prototype,'entries',ArrayEntries,2);
15186 %AddNamedProperty(h.prototype,'values',ArrayValues,2);
15187 %AddNamedProperty(h.prototype,'keys',ArrayKeys,2);
15188 %AddNamedProperty(h.prototype,symbolIterator,ArrayValues,
15189 2);
15190
15191 %AddNamedProperty(i.prototype,'entries',ArrayEntries,2);
15192 %AddNamedProperty(i.prototype,'values',ArrayValues,2);
15193 %AddNamedProperty(i.prototype,'keys',ArrayKeys,2);
15194 %AddNamedProperty(i.prototype,symbolIterator,ArrayValues,
15195 2);
15196
15197 %AddNamedProperty(j.prototype,'entries',ArrayEntries,2);
15198 %AddNamedProperty(j.prototype,'values',ArrayValues,2);
15199 %AddNamedProperty(j.prototype,'keys',ArrayKeys,2);
15200 %AddNamedProperty(j.prototype,symbolIterator,ArrayValues,
15201 2);
15202
15203 %AddNamedProperty(k.prototype,'entries',ArrayEntries,2);
15204 %AddNamedProperty(k.prototype,'values',ArrayValues,2);
15205 %AddNamedProperty(k.prototype,'keys',ArrayKeys,2);
15206 %AddNamedProperty(k.prototype,symbolIterator,ArrayValues,
15207 2);
15208
15209 %AddNamedProperty(l.prototype,'entries',ArrayEntries,2);
15210 %AddNamedProperty(l.prototype,'values',ArrayValues,2);
15211 %AddNamedProperty(l.prototype,'keys',ArrayKeys,2);
15212 %AddNamedProperty(l.prototype,symbolIterator,ArrayValues,
15213 2);
15214
15215
15216 $iteratorCreateResultObject=CreateIteratorResultObject;
15217 $arrayValues=ArrayValues;
15218 })();
15219
15220 <string-iterator}\1a
15221 (function(){
15222 "use strict";
15223 %CheckIsBootstrapping();
15224 var a=global.Object;
15225 var b=global.String;
15226 var c=
15227 (%CreateGlobalPrivateOwnSymbol("StringIterator#iteratedString"));
15228 var d=(%CreateGlobalPrivateOwnSymbol("StringIterator#next"));
15229 function StringIterator(){}
15230 function CreateStringIterator(e){
15231 var g=((typeof(%IS_VAR(e))==='string')?e:NonStringToString(e));
15232 var h=new StringIterator;
15233 (h[c]=g);
15234 (h[d]=0);
15235 return h;
15236 }
15237 function StringIteratorIterator(){
15238 return this;
15239 }
15240 function StringIteratorNext(){
15241 var h=ToObject(this);
15242 if(!(!(h[d]===(void 0)))){
15243 throw MakeTypeError(8,
15244 'String Iterator.prototype.next');
15245 }
15246 var g=(h[c]);
15247 if((g===(void 0))){
15248 return $iteratorCreateResultObject((void 0),true);
15249 }
15250 var i=(h[d]);
15251 var j=(g.length>>>0);
15252 if(i>=j){
15253 (h[c]=(void 0));
15254 return $iteratorCreateResultObject((void 0),true);
15255 }
15256 var k=%_StringCharCodeAt(g,i);
15257 var l=%_StringCharFromCode(k);
15258 i++;
15259 if(k>=0xD800&&k<=0xDBFF&&i<j){
15260 var m=%_StringCharCodeAt(g,i);
15261 if(m>=0xDC00&&m<=0xDFFF){
15262 l+=%_StringCharFromCode(m);
15263 i++;
15264 }
15265 }
15266 (h[d]=i);
15267 return $iteratorCreateResultObject(l,false);
15268 }
15269 function StringPrototypeIterator(){
15270 return CreateStringIterator(this);
15271 }
15272 %FunctionSetPrototype(StringIterator,new a());
15273 %FunctionSetInstanceClassName(StringIterator,'String Iterator');
15274 InstallFunctions(StringIterator.prototype,2,[
15275 'next',StringIteratorNext
15276 ]);
15277 %FunctionSetName(StringIteratorIterator,'[Symbol.iterator]');
15278 %AddNamedProperty(StringIterator.prototype,symbolIterator,
15279 StringIteratorIterator,2);
15280 %AddNamedProperty(StringIterator.prototype,symbolToStringTag,
15281 "String Iterator",1|2);
15282 %FunctionSetName(StringPrototypeIterator,'[Symbol.iterator]');
15283 %AddNamedProperty(b.prototype,symbolIterator,
15284 StringPrototypeIterator,2);
15285 })();
15286
15287 $templatesÕ\r
15288 var $getTemplateCallSite;
15289 (function(){
15290 "use strict";
15291 %CheckIsBootstrapping();
15292 var a=new global.Map;
15293 var b=global.Map.prototype.get;
15294 var c=global.Map.prototype.set;
15295 function SameCallSiteElements(d,e){
15296 var g=d.length;
15297 var e=e.raw;
15298 if(g!==e.length)return false;
15299 for(var h=0;h<g;++h){
15300 if(d[h]!==e[h])return false;
15301 }
15302 return true;
15303 }
15304 function GetCachedCallSite(i,j){
15305 var k=%_CallFunction(a,j,b);
15306 if((k===(void 0)))return;
15307 var g=k.length;
15308 for(var h=0;h<g;++h){
15309 if(SameCallSiteElements(i,k[h]))return k[h];
15310 }
15311 }
15312 function SetCachedCallSite(i,j){
15313 var k=%_CallFunction(a,j,b);
15314 var l;
15315 if((k===(void 0))){
15316 l=new InternalArray(1);
15317 l[0]=i;
15318 %_CallFunction(a,j,l,c);
15319 }else{
15320 k.push(i);
15321 }
15322 return i;
15323 }
15324 $getTemplateCallSite=function(i,d,j){
15325 var m=GetCachedCallSite(d,j);
15326 if(!(m===(void 0)))return m;
15327 %AddNamedProperty(i,"raw",%ObjectFreeze(d),
15328 1|2|4);
15329 return SetCachedCallSite(%ObjectFreeze(i),j);
15330 }
15331 })();
15332
15333 \10i18n\12Ý\ 1
15334 (function(){
15335 "use strict";
15336 %CheckIsBootstrapping();
15337 var a=global.Boolean;
15338 var b=global.Date;
15339 var c=global.Number;
15340 var d=global.RegExp;
15341 var e=global.String;
15342 var g=global.undefined;
15343 var h={};
15344 %AddNamedProperty(global,"Intl",h,2);
15345 var i=['collator',
15346 'numberformat',
15347 'dateformat',
15348 'breakiterator'];
15349 var j=['NFC',
15350 'NFD',
15351 'NFKC',
15352 'NFKD'];
15353 var k={
15354 'collator':g,
15355 'numberformat':g,
15356 'dateformat':g,
15357 'breakiterator':g
15358 };
15359 var l=g;
15360 var m=g;
15361 function GetUnicodeExtensionRE(){
15362 if(m===g){
15363 m=new d('-u(-[a-z0-9]{2,8})+','g');
15364 }
15365 return m;
15366 }
15367 var n=g;
15368 function GetAnyExtensionRE(){
15369 if(n===g){
15370 n=new d('-[a-z0-9]{1}-.*','g');
15371 }
15372 return n;
15373 }
15374 var o=g;
15375 function GetQuotedStringRE(){
15376 if(o===g){
15377 o=new d("'[^']+'",'g');
15378 }
15379 return o;
15380 }
15381 var q=g;
15382 function GetServiceRE(){
15383 if(q===g){
15384 q=
15385 new d('^(collator|numberformat|dateformat|breakiterator)$');
15386 }
15387 return q;
15388 }
15389 var r=g;
15390 function GetLanguageTagRE(){
15391 if(r===g){
15392 BuildLanguageTagREs();
15393 }
15394 return r;
15395 }
15396 var t=g;
15397 function GetLanguageVariantRE(){
15398 if(t===g){
15399 BuildLanguageTagREs();
15400 }
15401 return t;
15402 }
15403 var u=g;
15404 function GetLanguageSingletonRE(){
15405 if(u===g){
15406 BuildLanguageTagREs();
15407 }
15408 return u;
15409 }
15410 var w=g;
15411 function GetTimezoneNameCheckRE(){
15412 if(w===g){
15413 w=
15414 new d('^([A-Za-z]+)/([A-Za-z]+)(?:_([A-Za-z]+))*$');
15415 }
15416 return w;
15417 }
15418 var z={
15419 'gregorian':'gregory',
15420 'japanese':'japanese',
15421 'buddhist':'buddhist',
15422 'roc':'roc',
15423 'persian':'persian',
15424 'islamic-civil':'islamicc',
15425 'islamic':'islamic',
15426 'hebrew':'hebrew',
15427 'chinese':'chinese',
15428 'indian':'indian',
15429 'coptic':'coptic',
15430 'ethiopic':'ethiopic',
15431 'ethiopic-amete-alem':'ethioaa'
15432 };
15433 var A={
15434 'kn':{'property':'numeric','type':'boolean'},
15435 'kf':{'property':'caseFirst','type':'string',
15436 'values':['false','lower','upper']}
15437 };
15438 var B={
15439 'nu':{'property':g,'type':'string'}
15440 };
15441 var C={
15442 'ca':{'property':g,'type':'string'},
15443 'nu':{'property':g,'type':'string'}
15444 };
15445 var D=[
15446 'big5han','dict','direct','ducet','gb2312','phonebk','phonetic',
15447 'pinyin','reformed','searchjl','stroke','trad','unihan','zhuyin'
15448 ];
15449 var E=
15450 'Function object that\'s not a constructor was created with new';
15451 function addBoundMethod(G,H,I,J){
15452 function getter(){
15453 if(!%IsInitializedIntlObject(this)){
15454 throw new $TypeError('Method '+H+' called on a '+
15455 'non-object or on a wrong type of object.');
15456 }
15457 var K='__bound'+H+'__';
15458 if(this[K]===g){
15459 var L=this;
15460 var M;
15461 if(J===g||J===2){
15462 M=function(N,P){
15463 if(%_IsConstructCall()){
15464 throw new $TypeError(E);
15465 }
15466 return I(L,N,P);
15467 }
15468 }else if(J===1){
15469 M=function(N){
15470 if(%_IsConstructCall()){
15471 throw new $TypeError(E);
15472 }
15473 return I(L,N);
15474 }
15475 }else{
15476 M=function(){
15477 if(%_IsConstructCall()){
15478 throw new $TypeError(E);
15479 }
15480 if(%_ArgumentsLength()>0){
15481 return I(L,%_Arguments(0));
15482 }else{
15483 return I(L);
15484 }
15485 }
15486 }
15487 %FunctionSetName(M,K);
15488 %FunctionRemovePrototype(M);
15489 %SetNativeFlag(M);
15490 this[K]=M;
15491 }
15492 return this[K];
15493 }
15494 %FunctionSetName(getter,H);
15495 %FunctionRemovePrototype(getter);
15496 %SetNativeFlag(getter);
15497 ObjectDefineProperty(G.prototype,H,{
15498 get:getter,
15499 enumerable:false,
15500 configurable:true
15501 });
15502 }
15503 function supportedLocalesOf(Q,R,S){
15504 if((Q.match(GetServiceRE())===null)){
15505 throw new $Error('Internal error, wrong service type: '+Q);
15506 }
15507 if(S===g){
15508 S={};
15509 }else{
15510 S=ToObject(S);
15511 }
15512 var T=S.localeMatcher;
15513 if(T!==g){
15514 T=e(T);
15515 if(T!=='lookup'&&T!=='best fit'){
15516 throw new $RangeError('Illegal value for localeMatcher:'+T);
15517 }
15518 }else{
15519 T='best fit';
15520 }
15521 var U=initializeLocaleList(R);
15522 if(k[Q]===g){
15523 k[Q]=getAvailableLocalesOf(Q);
15524 }
15525 if(T==='best fit'){
15526 return initializeLocaleList(bestFitSupportedLocalesOf(
15527 U,k[Q]));
15528 }
15529 return initializeLocaleList(lookupSupportedLocalesOf(
15530 U,k[Q]));
15531 }
15532 function lookupSupportedLocalesOf(U,W){
15533 var X=[];
15534 for(var Y=0;Y<U.length;++Y){
15535 var Z=U[Y].replace(GetUnicodeExtensionRE(),'');
15536 do{
15537 if(W[Z]!==g){
15538 X.push(U[Y]);
15539 break;
15540 }
15541 var aa=Z.lastIndexOf('-');
15542 if(aa===-1){
15543 break;
15544 }
15545 Z=Z.substring(0,aa);
15546 }while(true);
15547 }
15548 return X;
15549 }
15550 function bestFitSupportedLocalesOf(U,W){
15551 return lookupSupportedLocalesOf(U,W);
15552 }
15553 function getGetOption(S,ab){
15554 if(S===g){
15555 throw new $Error('Internal '+ab+' error. '+
15556 'Default options are missing.');
15557 }
15558 var ac=function getOption(ad,ae,af,ag){
15559 if(S[ad]!==g){
15560 var ah=S[ad];
15561 switch(ae){
15562 case'boolean':
15563 ah=a(ah);
15564 break;
15565 case'string':
15566 ah=e(ah);
15567 break;
15568 case'number':
15569 ah=c(ah);
15570 break;
15571 default:
15572 throw new $Error('Internal error. Wrong value type.');
15573 }
15574 if(af!==g&&af.indexOf(ah)===-1){
15575 throw new $RangeError('Value '+ah+' out of range for '+ab+
15576 ' options property '+ad);
15577 }
15578 return ah;
15579 }
15580 return ag;
15581 }
15582 return ac;
15583 }
15584 function resolveLocale(Q,U,S){
15585 U=initializeLocaleList(U);
15586 var ac=getGetOption(S,Q);
15587 var T=ac('localeMatcher','string',
15588 ['lookup','best fit'],'best fit');
15589 var ai;
15590 if(T==='lookup'){
15591 ai=lookupMatcher(Q,U);
15592 }else{
15593 ai=bestFitMatcher(Q,U);
15594 }
15595 return ai;
15596 }
15597 function lookupMatcher(Q,U){
15598 if((Q.match(GetServiceRE())===null)){
15599 throw new $Error('Internal error, wrong service type: '+Q);
15600 }
15601 if(k[Q]===g){
15602 k[Q]=getAvailableLocalesOf(Q);
15603 }
15604 for(var Y=0;Y<U.length;++Y){
15605 var Z=U[Y].replace(GetAnyExtensionRE(),'');
15606 do{
15607 if(k[Q][Z]!==g){
15608 var aj=U[Y].match(GetUnicodeExtensionRE());
15609 var ak=(aj===null)?'':aj[0];
15610 return{'locale':Z,'extension':ak,'position':Y};
15611 }
15612 var aa=Z.lastIndexOf('-');
15613 if(aa===-1){
15614 break;
15615 }
15616 Z=Z.substring(0,aa);
15617 }while(true);
15618 }
15619 if(l===g){
15620 l=%GetDefaultICULocale();
15621 }
15622 return{'locale':l,'extension':'','position':-1};
15623 }
15624 function bestFitMatcher(Q,U){
15625 return lookupMatcher(Q,U);
15626 }
15627 function parseExtension(ak){
15628 var al=ak.split('-');
15629 if(al.length<=2||
15630 (al[0]!==''&&al[1]!=='u')){
15631 return{};
15632 }
15633 var am={};
15634 var an=g;
15635 for(var Y=2;Y<al.length;++Y){
15636 var J=al[Y].length;
15637 var ao=al[Y];
15638 if(J===2){
15639 am[ao]=g;
15640 an=ao;
15641 }else if(J>=3&&J<=8&&an!==g){
15642 am[an]=ao;
15643 an=g;
15644 }else{
15645 return{};
15646 }
15647 }
15648 return am;
15649 }
15650 function setOptions(ap,am,aq,ac,ar){
15651 var ak='';
15652 var as=function updateExtension(at,ah){
15653 return'-'+at+'-'+e(ah);
15654 }
15655 var au=function updateProperty(ad,ae,ah){
15656 if(ae==='boolean'&&(typeof ah==='string')){
15657 ah=(ah==='true')?true:false;
15658 }
15659 if(ad!==g){
15660 defineWEProperty(ar,ad,ah);
15661 }
15662 }
15663 for(var at in aq){
15664 if(aq.hasOwnProperty(at)){
15665 var ah=g;
15666 var av=aq[at];
15667 if(av.property!==g){
15668 ah=ac(av.property,av.type,av.values);
15669 }
15670 if(ah!==g){
15671 au(av.property,av.type,ah);
15672 ak+=as(at,ah);
15673 continue;
15674 }
15675 if(am.hasOwnProperty(at)){
15676 ah=am[at];
15677 if(ah!==g){
15678 au(av.property,av.type,ah);
15679 ak+=as(at,ah);
15680 }else if(av.type==='boolean'){
15681 au(av.property,av.type,true);
15682 ak+=as(at,true);
15683 }
15684 }
15685 }
15686 }
15687 return ak===''?'':'-u'+ak;
15688 }
15689 function freezeArray(aw){
15690 aw.forEach(function(ao,ax){
15691 ObjectDefineProperty(aw,ax,{value:ao,
15692 configurable:false,
15693 writable:false,
15694 enumerable:true});
15695 });
15696 ObjectDefineProperty(aw,'length',{value:aw.length,
15697 writable:false});
15698 return aw;
15699 }
15700 function getOptimalLanguageTag(ay,ai){
15701 if(ay===ai){
15702 return ay;
15703 }
15704 var R=%GetLanguageTagVariants([ay,ai]);
15705 if(R[0].maximized!==R[1].maximized){
15706 return ai;
15707 }
15708 var az=new d('^'+R[1].base);
15709 return ai.replace(az,R[0].base);
15710 }
15711 function getAvailableLocalesOf(Q){
15712 var aA=%AvailableLocalesOf(Q);
15713 for(var Y in aA){
15714 if(aA.hasOwnProperty(Y)){
15715 var aB=Y.match(/^([a-z]{2,3})-([A-Z][a-z]{3})-([A-Z]{2})$/);
15716 if(aB!==null){
15717 aA[aB[1]+'-'+aB[3]]=null;
15718 }
15719 }
15720 }
15721 return aA;
15722 }
15723 function defineWEProperty(aC,ad,ah){
15724 ObjectDefineProperty(aC,ad,
15725 {value:ah,writable:true,enumerable:true});
15726 }
15727 function addWEPropertyIfDefined(aC,ad,ah){
15728 if(ah!==g){
15729 defineWEProperty(aC,ad,ah);
15730 }
15731 }
15732 function defineWECProperty(aC,ad,ah){
15733 ObjectDefineProperty(aC,ad,
15734 {value:ah,
15735 writable:true,
15736 enumerable:true,
15737 configurable:true});
15738 }
15739 function addWECPropertyIfDefined(aC,ad,ah){
15740 if(ah!==g){
15741 defineWECProperty(aC,ad,ah);
15742 }
15743 }
15744 function toTitleCaseWord(aD){
15745 return aD.substr(0,1).toUpperCase()+aD.substr(1).toLowerCase();
15746 }
15747 function canonicalizeLanguageTag(aE){
15748 if(typeof aE!=='string'&&typeof aE!=='object'||
15749 (aE===null)){
15750 throw new $TypeError('Language ID should be string or object.');
15751 }
15752 var aF=e(aE);
15753 if(isValidLanguageTag(aF)===false){
15754 throw new $RangeError('Invalid language tag: '+aF);
15755 }
15756 var aG=%CanonicalizeLanguageTag(aF);
15757 if(aG==='invalid-tag'){
15758 throw new $RangeError('Invalid language tag: '+aF);
15759 }
15760 return aG;
15761 }
15762 function initializeLocaleList(R){
15763 var aH=[];
15764 if(R===g){
15765 aH=[];
15766 }else{
15767 if(typeof R==='string'){
15768 aH.push(canonicalizeLanguageTag(R));
15769 return freezeArray(aH);
15770 }
15771 var aI=ToObject(R);
15772 var aJ=aI.length>>>0;
15773 for(var aK=0;aK<aJ;aK++){
15774 if(aK in aI){
15775 var ah=aI[aK];
15776 var aG=canonicalizeLanguageTag(ah);
15777 if(aH.indexOf(aG)===-1){
15778 aH.push(aG);
15779 }
15780 }
15781 }
15782 }
15783 return freezeArray(aH);
15784 }
15785 function isValidLanguageTag(Z){
15786 if(GetLanguageTagRE().test(Z)===false){
15787 return false;
15788 }
15789 if(Z.indexOf('x-')===0){
15790 return true;
15791 }
15792 Z=Z.split(/-x-/)[0];
15793 var aL=[];
15794 var aM=[];
15795 var aB=Z.split(/-/);
15796 for(var Y=1;Y<aB.length;Y++){
15797 var ah=aB[Y];
15798 if(GetLanguageVariantRE().test(ah)===true&&aM.length===0){
15799 if(aL.indexOf(ah)===-1){
15800 aL.push(ah);
15801 }else{
15802 return false;
15803 }
15804 }
15805 if(GetLanguageSingletonRE().test(ah)===true){
15806 if(aM.indexOf(ah)===-1){
15807 aM.push(ah);
15808 }else{
15809 return false;
15810 }
15811 }
15812 }
15813 return true;
15814 }
15815 function BuildLanguageTagREs(){
15816 var aN='[a-zA-Z]';
15817 var aO='[0-9]';
15818 var aP='('+aN+'|'+aO+')';
15819 var aQ='(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|'+
15820 'zh-min|zh-min-nan|zh-xiang)';
15821 var aR='(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|'+
15822 'i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|'+
15823 'i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)';
15824 var aS='('+aR+'|'+aQ+')';
15825 var aT='(x(-'+aP+'{1,8})+)';
15826 var aU='('+aO+'|[A-WY-Za-wy-z])';
15827 u=new d('^'+aU+'$','i');
15828 var ak='('+aU+'(-'+aP+'{2,8})+)';
15829 var aV='('+aP+'{5,8}|('+aO+aP+'{3}))';
15830 t=new d('^'+aV+'$','i');
15831 var aW='('+aN+'{2}|'+aO+'{3})';
15832 var aX='('+aN+'{4})';
15833 var aY='('+aN+'{3}(-'+aN+'{3}){0,2})';
15834 var aZ='('+aN+'{2,3}(-'+aY+')?|'+aN+'{4}|'+
15835 aN+'{5,8})';
15836 var ba=aZ+'(-'+aX+')?(-'+aW+')?(-'+
15837 aV+')*(-'+ak+')*(-'+aT+')?';
15838 var bb=
15839 '^('+ba+'|'+aT+'|'+aS+')$';
15840 r=new d(bb,'i');
15841 }
15842 function initializeCollator(bc,R,S){
15843 if(%IsInitializedIntlObject(bc)){
15844 throw new $TypeError('Trying to re-initialize Collator object.');
15845 }
15846 if(S===g){
15847 S={};
15848 }
15849 var ac=getGetOption(S,'collator');
15850 var bd={};
15851 defineWEProperty(bd,'usage',ac(
15852 'usage','string',['sort','search'],'sort'));
15853 var be=ac('sensitivity','string',
15854 ['base','accent','case','variant']);
15855 if(be===g&&bd.usage==='sort'){
15856 be='variant';
15857 }
15858 defineWEProperty(bd,'sensitivity',be);
15859 defineWEProperty(bd,'ignorePunctuation',ac(
15860 'ignorePunctuation','boolean',g,false));
15861 var Z=resolveLocale('collator',R,S);
15862 var am=parseExtension(Z.extension);
15863 setOptions(
15864 S,am,A,ac,bd);
15865 var bf='default';
15866 var ak='';
15867 if(am.hasOwnProperty('co')&&bd.usage==='sort'){
15868 if(D.indexOf(am.co)!==-1){
15869 ak='-u-co-'+am.co;
15870 bf=am.co;
15871 }
15872 }else if(bd.usage==='search'){
15873 ak='-u-co-search';
15874 }
15875 defineWEProperty(bd,'collation',bf);
15876 var bg=Z.locale+ak;
15877 var ai=ObjectDefineProperties({},{
15878 caseFirst:{writable:true},
15879 collation:{value:bd.collation,writable:true},
15880 ignorePunctuation:{writable:true},
15881 locale:{writable:true},
15882 numeric:{writable:true},
15883 requestedLocale:{value:bg,writable:true},
15884 sensitivity:{writable:true},
15885 strength:{writable:true},
15886 usage:{value:bd.usage,writable:true}
15887 });
15888 var bh=%CreateCollator(bg,
15889 bd,
15890 ai);
15891 %MarkAsInitializedIntlObjectOfType(bc,'collator',bh);
15892 ObjectDefineProperty(bc,'resolved',{value:ai});
15893 return bc;
15894 }
15895 %AddNamedProperty(h,'Collator',function(){
15896 var R=%_Arguments(0);
15897 var S=%_Arguments(1);
15898 if(!this||this===h){
15899 return new h.Collator(R,S);
15900 }
15901 return initializeCollator(ToObject(this),R,S);
15902 },
15903 2
15904 );
15905 %AddNamedProperty(h.Collator.prototype,'resolvedOptions',function(){
15906 if(%_IsConstructCall()){
15907 throw new $TypeError(E);
15908 }
15909 if(!%IsInitializedIntlObjectOfType(this,'collator')){
15910 throw new $TypeError('resolvedOptions method called on a non-object '+
15911 'or on a object that is not Intl.Collator.');
15912 }
15913 var bi=this;
15914 var Z=getOptimalLanguageTag(bi.resolved.requestedLocale,
15915 bi.resolved.locale);
15916 return{
15917 locale:Z,
15918 usage:bi.resolved.usage,
15919 sensitivity:bi.resolved.sensitivity,
15920 ignorePunctuation:bi.resolved.ignorePunctuation,
15921 numeric:bi.resolved.numeric,
15922 caseFirst:bi.resolved.caseFirst,
15923 collation:bi.resolved.collation
15924 };
15925 },
15926 2
15927 );
15928 %FunctionSetName(h.Collator.prototype.resolvedOptions,'resolvedOptions');
15929 %FunctionRemovePrototype(h.Collator.prototype.resolvedOptions);
15930 %SetNativeFlag(h.Collator.prototype.resolvedOptions);
15931 %AddNamedProperty(h.Collator,'supportedLocalesOf',function(R){
15932 if(%_IsConstructCall()){
15933 throw new $TypeError(E);
15934 }
15935 return supportedLocalesOf('collator',R,%_Arguments(1));
15936 },
15937 2
15938 );
15939 %FunctionSetName(h.Collator.supportedLocalesOf,'supportedLocalesOf');
15940 %FunctionRemovePrototype(h.Collator.supportedLocalesOf);
15941 %SetNativeFlag(h.Collator.supportedLocalesOf);
15942 function compare(bc,N,P){
15943 return %InternalCompare(%GetImplFromInitializedIntlObject(bc),
15944 e(N),e(P));
15945 };
15946 addBoundMethod(h.Collator,'compare',compare,2);
15947 function isWellFormedCurrencyCode(bj){
15948 return typeof bj=="string"&&
15949 bj.length==3&&
15950 bj.match(/[^A-Za-z]/)==null;
15951 }
15952 function getNumberOption(S,ad,bk,bl,bm){
15953 var ah=S[ad];
15954 if(ah!==g){
15955 ah=c(ah);
15956 if($isNaN(ah)||ah<bk||ah>bl){
15957 throw new $RangeError(ad+' value is out of range.');
15958 }
15959 return $floor(ah);
15960 }
15961 return bm;
15962 }
15963 function initializeNumberFormat(bn,R,S){
15964 if(%IsInitializedIntlObject(bn)){
15965 throw new $TypeError('Trying to re-initialize NumberFormat object.');
15966 }
15967 if(S===g){
15968 S={};
15969 }
15970 var ac=getGetOption(S,'numberformat');
15971 var Z=resolveLocale('numberformat',R,S);
15972 var bd={};
15973 defineWEProperty(bd,'style',ac(
15974 'style','string',['decimal','percent','currency'],'decimal'));
15975 var bj=ac('currency','string');
15976 if(bj!==g&&!isWellFormedCurrencyCode(bj)){
15977 throw new $RangeError('Invalid currency code: '+bj);
15978 }
15979 if(bd.style==='currency'&&bj===g){
15980 throw new $TypeError('Currency code is required with currency style.');
15981 }
15982 var bo=ac(
15983 'currencyDisplay','string',['code','symbol','name'],'symbol');
15984 if(bd.style==='currency'){
15985 defineWEProperty(bd,'currency',bj.toUpperCase());
15986 defineWEProperty(bd,'currencyDisplay',bo);
15987 }
15988 var bp=getNumberOption(S,'minimumIntegerDigits',1,21,1);
15989 defineWEProperty(bd,'minimumIntegerDigits',bp);
15990 var bq=getNumberOption(S,'minimumFractionDigits',0,20,0);
15991 defineWEProperty(bd,'minimumFractionDigits',bq);
15992 var br=getNumberOption(S,'maximumFractionDigits',bq,20,3);
15993 defineWEProperty(bd,'maximumFractionDigits',br);
15994 var bs=S['minimumSignificantDigits'];
15995 var bt=S['maximumSignificantDigits'];
15996 if(bs!==g||bt!==g){
15997 bs=getNumberOption(S,'minimumSignificantDigits',1,21,0);
15998 defineWEProperty(bd,'minimumSignificantDigits',bs);
15999 bt=getNumberOption(S,'maximumSignificantDigits',bs,21,21);
16000 defineWEProperty(bd,'maximumSignificantDigits',bt);
16001 }
16002 defineWEProperty(bd,'useGrouping',ac(
16003 'useGrouping','boolean',g,true));
16004 var am=parseExtension(Z.extension);
16005 var ak=setOptions(S,am,B,
16006 ac,bd);
16007 var bg=Z.locale+ak;
16008 var ai=ObjectDefineProperties({},{
16009 currency:{writable:true},
16010 currencyDisplay:{writable:true},
16011 locale:{writable:true},
16012 maximumFractionDigits:{writable:true},
16013 minimumFractionDigits:{writable:true},
16014 minimumIntegerDigits:{writable:true},
16015 numberingSystem:{writable:true},
16016 requestedLocale:{value:bg,writable:true},
16017 style:{value:bd.style,writable:true},
16018 useGrouping:{writable:true}
16019 });
16020 if(bd.hasOwnProperty('minimumSignificantDigits')){
16021 defineWEProperty(ai,'minimumSignificantDigits',g);
16022 }
16023 if(bd.hasOwnProperty('maximumSignificantDigits')){
16024 defineWEProperty(ai,'maximumSignificantDigits',g);
16025 }
16026 var bu=%CreateNumberFormat(bg,
16027 bd,
16028 ai);
16029 if(bd.style==='currency'){
16030 ObjectDefineProperty(ai,'currencyDisplay',{value:bo,
16031 writable:true});
16032 }
16033 %MarkAsInitializedIntlObjectOfType(bn,'numberformat',bu);
16034 ObjectDefineProperty(bn,'resolved',{value:ai});
16035 return bn;
16036 }
16037 %AddNamedProperty(h,'NumberFormat',function(){
16038 var R=%_Arguments(0);
16039 var S=%_Arguments(1);
16040 if(!this||this===h){
16041 return new h.NumberFormat(R,S);
16042 }
16043 return initializeNumberFormat(ToObject(this),R,S);
16044 },
16045 2
16046 );
16047 %AddNamedProperty(h.NumberFormat.prototype,'resolvedOptions',function(){
16048 if(%_IsConstructCall()){
16049 throw new $TypeError(E);
16050 }
16051 if(!%IsInitializedIntlObjectOfType(this,'numberformat')){
16052 throw new $TypeError('resolvedOptions method called on a non-object'+
16053 ' or on a object that is not Intl.NumberFormat.');
16054 }
16055 var bv=this;
16056 var Z=getOptimalLanguageTag(bv.resolved.requestedLocale,
16057 bv.resolved.locale);
16058 var bw={
16059 locale:Z,
16060 numberingSystem:bv.resolved.numberingSystem,
16061 style:bv.resolved.style,
16062 useGrouping:bv.resolved.useGrouping,
16063 minimumIntegerDigits:bv.resolved.minimumIntegerDigits,
16064 minimumFractionDigits:bv.resolved.minimumFractionDigits,
16065 maximumFractionDigits:bv.resolved.maximumFractionDigits,
16066 };
16067 if(bw.style==='currency'){
16068 defineWECProperty(bw,'currency',bv.resolved.currency);
16069 defineWECProperty(bw,'currencyDisplay',
16070 bv.resolved.currencyDisplay);
16071 }
16072 if(bv.resolved.hasOwnProperty('minimumSignificantDigits')){
16073 defineWECProperty(bw,'minimumSignificantDigits',
16074 bv.resolved.minimumSignificantDigits);
16075 }
16076 if(bv.resolved.hasOwnProperty('maximumSignificantDigits')){
16077 defineWECProperty(bw,'maximumSignificantDigits',
16078 bv.resolved.maximumSignificantDigits);
16079 }
16080 return bw;
16081 },
16082 2
16083 );
16084 %FunctionSetName(h.NumberFormat.prototype.resolvedOptions,
16085 'resolvedOptions');
16086 %FunctionRemovePrototype(h.NumberFormat.prototype.resolvedOptions);
16087 %SetNativeFlag(h.NumberFormat.prototype.resolvedOptions);
16088 %AddNamedProperty(h.NumberFormat,'supportedLocalesOf',function(R){
16089 if(%_IsConstructCall()){
16090 throw new $TypeError(E);
16091 }
16092 return supportedLocalesOf('numberformat',R,%_Arguments(1));
16093 },
16094 2
16095 );
16096 %FunctionSetName(h.NumberFormat.supportedLocalesOf,'supportedLocalesOf');
16097 %FunctionRemovePrototype(h.NumberFormat.supportedLocalesOf);
16098 %SetNativeFlag(h.NumberFormat.supportedLocalesOf);
16099 function formatNumber(bu,ah){
16100 var bx=c(ah)+0;
16101 return %InternalNumberFormat(%GetImplFromInitializedIntlObject(bu),
16102 bx);
16103 }
16104 function parseNumber(bu,ah){
16105 return %InternalNumberParse(%GetImplFromInitializedIntlObject(bu),
16106 e(ah));
16107 }
16108 addBoundMethod(h.NumberFormat,'format',formatNumber,1);
16109 addBoundMethod(h.NumberFormat,'v8Parse',parseNumber,1);
16110 function toLDMLString(S){
16111 var ac=getGetOption(S,'dateformat');
16112 var by='';
16113 var bz=ac('weekday','string',['narrow','short','long']);
16114 by+=appendToLDMLString(
16115 bz,{narrow:'EEEEE',short:'EEE',long:'EEEE'});
16116 bz=ac('era','string',['narrow','short','long']);
16117 by+=appendToLDMLString(
16118 bz,{narrow:'GGGGG',short:'GGG',long:'GGGG'});
16119 bz=ac('year','string',['2-digit','numeric']);
16120 by+=appendToLDMLString(bz,{'2-digit':'yy','numeric':'y'});
16121 bz=ac('month','string',
16122 ['2-digit','numeric','narrow','short','long']);
16123 by+=appendToLDMLString(bz,{'2-digit':'MM','numeric':'M',
16124 'narrow':'MMMMM','short':'MMM','long':'MMMM'});
16125 bz=ac('day','string',['2-digit','numeric']);
16126 by+=appendToLDMLString(
16127 bz,{'2-digit':'dd','numeric':'d'});
16128 var bA=ac('hour12','boolean');
16129 bz=ac('hour','string',['2-digit','numeric']);
16130 if(bA===g){
16131 by+=appendToLDMLString(bz,{'2-digit':'jj','numeric':'j'});
16132 }else if(bA===true){
16133 by+=appendToLDMLString(bz,{'2-digit':'hh','numeric':'h'});
16134 }else{
16135 by+=appendToLDMLString(bz,{'2-digit':'HH','numeric':'H'});
16136 }
16137 bz=ac('minute','string',['2-digit','numeric']);
16138 by+=appendToLDMLString(bz,{'2-digit':'mm','numeric':'m'});
16139 bz=ac('second','string',['2-digit','numeric']);
16140 by+=appendToLDMLString(bz,{'2-digit':'ss','numeric':'s'});
16141 bz=ac('timeZoneName','string',['short','long']);
16142 by+=appendToLDMLString(bz,{short:'z',long:'zzzz'});
16143 return by;
16144 }
16145 function appendToLDMLString(bz,bB){
16146 if(bz!==g){
16147 return bB[bz];
16148 }else{
16149 return'';
16150 }
16151 }
16152 function fromLDMLString(by){
16153 by=by.replace(GetQuotedStringRE(),'');
16154 var S={};
16155 var bC=by.match(/E{3,5}/g);
16156 S=appendToDateTimeObject(
16157 S,'weekday',bC,{EEEEE:'narrow',EEE:'short',EEEE:'long'});
16158 bC=by.match(/G{3,5}/g);
16159 S=appendToDateTimeObject(
16160 S,'era',bC,{GGGGG:'narrow',GGG:'short',GGGG:'long'});
16161 bC=by.match(/y{1,2}/g);
16162 S=appendToDateTimeObject(
16163 S,'year',bC,{y:'numeric',yy:'2-digit'});
16164 bC=by.match(/M{1,5}/g);
16165 S=appendToDateTimeObject(S,'month',bC,{MM:'2-digit',
16166 M:'numeric',MMMMM:'narrow',MMM:'short',MMMM:'long'});
16167 bC=by.match(/L{1,5}/g);
16168 S=appendToDateTimeObject(S,'month',bC,{LL:'2-digit',
16169 L:'numeric',LLLLL:'narrow',LLL:'short',LLLL:'long'});
16170 bC=by.match(/d{1,2}/g);
16171 S=appendToDateTimeObject(
16172 S,'day',bC,{d:'numeric',dd:'2-digit'});
16173 bC=by.match(/h{1,2}/g);
16174 if(bC!==null){
16175 S['hour12']=true;
16176 }
16177 S=appendToDateTimeObject(
16178 S,'hour',bC,{h:'numeric',hh:'2-digit'});
16179 bC=by.match(/H{1,2}/g);
16180 if(bC!==null){
16181 S['hour12']=false;
16182 }
16183 S=appendToDateTimeObject(
16184 S,'hour',bC,{H:'numeric',HH:'2-digit'});
16185 bC=by.match(/m{1,2}/g);
16186 S=appendToDateTimeObject(
16187 S,'minute',bC,{m:'numeric',mm:'2-digit'});
16188 bC=by.match(/s{1,2}/g);
16189 S=appendToDateTimeObject(
16190 S,'second',bC,{s:'numeric',ss:'2-digit'});
16191 bC=by.match(/z|zzzz/g);
16192 S=appendToDateTimeObject(
16193 S,'timeZoneName',bC,{z:'short',zzzz:'long'});
16194 return S;
16195 }
16196 function appendToDateTimeObject(S,bz,bC,bB){
16197 if((bC===null)){
16198 if(!S.hasOwnProperty(bz)){
16199 defineWEProperty(S,bz,g);
16200 }
16201 return S;
16202 }
16203 var ad=bC[0];
16204 defineWEProperty(S,bz,bB[ad]);
16205 return S;
16206 }
16207 function toDateTimeOptions(S,bD,bE){
16208 if(S===g){
16209 S={};
16210 }else{
16211 S=((%_IsSpecObject(%IS_VAR(S)))?S:ToObject(S));
16212 }
16213 var bF=true;
16214 if((bD==='date'||bD==='any')&&
16215 (S.weekday!==g||S.year!==g||
16216 S.month!==g||S.day!==g)){
16217 bF=false;
16218 }
16219 if((bD==='time'||bD==='any')&&
16220 (S.hour!==g||S.minute!==g||
16221 S.second!==g)){
16222 bF=false;
16223 }
16224 if(bF&&(bE==='date'||bE==='all')){
16225 ObjectDefineProperty(S,'year',{value:'numeric',
16226 writable:true,
16227 enumerable:true,
16228 configurable:true});
16229 ObjectDefineProperty(S,'month',{value:'numeric',
16230 writable:true,
16231 enumerable:true,
16232 configurable:true});
16233 ObjectDefineProperty(S,'day',{value:'numeric',
16234 writable:true,
16235 enumerable:true,
16236 configurable:true});
16237 }
16238 if(bF&&(bE==='time'||bE==='all')){
16239 ObjectDefineProperty(S,'hour',{value:'numeric',
16240 writable:true,
16241 enumerable:true,
16242 configurable:true});
16243 ObjectDefineProperty(S,'minute',{value:'numeric',
16244 writable:true,
16245 enumerable:true,
16246 configurable:true});
16247 ObjectDefineProperty(S,'second',{value:'numeric',
16248 writable:true,
16249 enumerable:true,
16250 configurable:true});
16251 }
16252 return S;
16253 }
16254 function initializeDateTimeFormat(bG,R,S){
16255 if(%IsInitializedIntlObject(bG)){
16256 throw new $TypeError('Trying to re-initialize DateTimeFormat object.');
16257 }
16258 if(S===g){
16259 S={};
16260 }
16261 var Z=resolveLocale('dateformat',R,S);
16262 S=toDateTimeOptions(S,'any','date');
16263 var ac=getGetOption(S,'dateformat');
16264 var T=ac('formatMatcher','string',
16265 ['basic','best fit'],'best fit');
16266 var by=toLDMLString(S);
16267 var bH=canonicalizeTimeZoneID(S.timeZone);
16268 var bd={};
16269 var am=parseExtension(Z.extension);
16270 var ak=setOptions(S,am,C,
16271 ac,bd);
16272 var bg=Z.locale+ak;
16273 var ai=ObjectDefineProperties({},{
16274 calendar:{writable:true},
16275 day:{writable:true},
16276 era:{writable:true},
16277 hour12:{writable:true},
16278 hour:{writable:true},
16279 locale:{writable:true},
16280 minute:{writable:true},
16281 month:{writable:true},
16282 numberingSystem:{writable:true},
16283 pattern:{writable:true},
16284 requestedLocale:{value:bg,writable:true},
16285 second:{writable:true},
16286 timeZone:{writable:true},
16287 timeZoneName:{writable:true},
16288 tz:{value:bH,writable:true},
16289 weekday:{writable:true},
16290 year:{writable:true}
16291 });
16292 var bu=%CreateDateTimeFormat(
16293 bg,{skeleton:by,timeZone:bH},ai);
16294 if(bH!==g&&bH!==ai.timeZone){
16295 throw new $RangeError('Unsupported time zone specified '+bH);
16296 }
16297 %MarkAsInitializedIntlObjectOfType(bG,'dateformat',bu);
16298 ObjectDefineProperty(bG,'resolved',{value:ai});
16299 return bG;
16300 }
16301 %AddNamedProperty(h,'DateTimeFormat',function(){
16302 var R=%_Arguments(0);
16303 var S=%_Arguments(1);
16304 if(!this||this===h){
16305 return new h.DateTimeFormat(R,S);
16306 }
16307 return initializeDateTimeFormat(ToObject(this),R,S);
16308 },
16309 2
16310 );
16311 %AddNamedProperty(h.DateTimeFormat.prototype,'resolvedOptions',function(){
16312 if(%_IsConstructCall()){
16313 throw new $TypeError(E);
16314 }
16315 if(!%IsInitializedIntlObjectOfType(this,'dateformat')){
16316 throw new $TypeError('resolvedOptions method called on a non-object or '+
16317 'on a object that is not Intl.DateTimeFormat.');
16318 }
16319 var bv=this;
16320 var bI=fromLDMLString(bv.resolved.pattern);
16321 var bJ=z[bv.resolved.calendar];
16322 if(bJ===g){
16323 bJ=bv.resolved.calendar;
16324 }
16325 var Z=getOptimalLanguageTag(bv.resolved.requestedLocale,
16326 bv.resolved.locale);
16327 var bw={
16328 locale:Z,
16329 numberingSystem:bv.resolved.numberingSystem,
16330 calendar:bJ,
16331 timeZone:bv.resolved.timeZone
16332 };
16333 addWECPropertyIfDefined(bw,'timeZoneName',bI.timeZoneName);
16334 addWECPropertyIfDefined(bw,'era',bI.era);
16335 addWECPropertyIfDefined(bw,'year',bI.year);
16336 addWECPropertyIfDefined(bw,'month',bI.month);
16337 addWECPropertyIfDefined(bw,'day',bI.day);
16338 addWECPropertyIfDefined(bw,'weekday',bI.weekday);
16339 addWECPropertyIfDefined(bw,'hour12',bI.hour12);
16340 addWECPropertyIfDefined(bw,'hour',bI.hour);
16341 addWECPropertyIfDefined(bw,'minute',bI.minute);
16342 addWECPropertyIfDefined(bw,'second',bI.second);
16343 return bw;
16344 },
16345 2
16346 );
16347 %FunctionSetName(h.DateTimeFormat.prototype.resolvedOptions,
16348 'resolvedOptions');
16349 %FunctionRemovePrototype(h.DateTimeFormat.prototype.resolvedOptions);
16350 %SetNativeFlag(h.DateTimeFormat.prototype.resolvedOptions);
16351 %AddNamedProperty(h.DateTimeFormat,'supportedLocalesOf',function(R){
16352 if(%_IsConstructCall()){
16353 throw new $TypeError(E);
16354 }
16355 return supportedLocalesOf('dateformat',R,%_Arguments(1));
16356 },
16357 2
16358 );
16359 %FunctionSetName(h.DateTimeFormat.supportedLocalesOf,'supportedLocalesOf');
16360 %FunctionRemovePrototype(h.DateTimeFormat.supportedLocalesOf);
16361 %SetNativeFlag(h.DateTimeFormat.supportedLocalesOf);
16362 function formatDate(bu,bK){
16363 var bL;
16364 if(bK===g){
16365 bL=b.now();
16366 }else{
16367 bL=c(bK);
16368 }
16369 if(!$isFinite(bL)){
16370 throw new $RangeError('Provided date is not in valid range.');
16371 }
16372 return %InternalDateFormat(%GetImplFromInitializedIntlObject(bu),
16373 new b(bL));
16374 }
16375 function parseDate(bu,ah){
16376 return %InternalDateParse(%GetImplFromInitializedIntlObject(bu),
16377 e(ah));
16378 }
16379 addBoundMethod(h.DateTimeFormat,'format',formatDate,0);
16380 addBoundMethod(h.DateTimeFormat,'v8Parse',parseDate,1);
16381 function canonicalizeTimeZoneID(bM){
16382 if(bM===g){
16383 return bM;
16384 }
16385 var bN=bM.toUpperCase();
16386 if(bN==='UTC'||bN==='GMT'||
16387 bN==='ETC/UTC'||bN==='ETC/GMT'){
16388 return'UTC';
16389 }
16390 var bC=GetTimezoneNameCheckRE().exec(bM);
16391 if((bC===null)){
16392 throw new $RangeError('Expected Area/Location for time zone, got '+bM);
16393 }
16394 var bw=toTitleCaseWord(bC[1])+'/'+toTitleCaseWord(bC[2]);
16395 var Y=3;
16396 while(bC[Y]!==g&&Y<bC.length){
16397 bw=bw+'_'+toTitleCaseWord(bC[Y]);
16398 Y++;
16399 }
16400 return bw;
16401 }
16402 function initializeBreakIterator(bO,R,S){
16403 if(%IsInitializedIntlObject(bO)){
16404 throw new $TypeError('Trying to re-initialize v8BreakIterator object.');
16405 }
16406 if(S===g){
16407 S={};
16408 }
16409 var ac=getGetOption(S,'breakiterator');
16410 var bd={};
16411 defineWEProperty(bd,'type',ac(
16412 'type','string',['character','word','sentence','line'],'word'));
16413 var Z=resolveLocale('breakiterator',R,S);
16414 var ai=ObjectDefineProperties({},{
16415 requestedLocale:{value:Z.locale,writable:true},
16416 type:{value:bd.type,writable:true},
16417 locale:{writable:true}
16418 });
16419 var bP=%CreateBreakIterator(Z.locale,
16420 bd,
16421 ai);
16422 %MarkAsInitializedIntlObjectOfType(bO,'breakiterator',
16423 bP);
16424 ObjectDefineProperty(bO,'resolved',{value:ai});
16425 return bO;
16426 }
16427 %AddNamedProperty(h,'v8BreakIterator',function(){
16428 var R=%_Arguments(0);
16429 var S=%_Arguments(1);
16430 if(!this||this===h){
16431 return new h.v8BreakIterator(R,S);
16432 }
16433 return initializeBreakIterator(ToObject(this),R,S);
16434 },
16435 2
16436 );
16437 %AddNamedProperty(h.v8BreakIterator.prototype,'resolvedOptions',
16438 function(){
16439 if(%_IsConstructCall()){
16440 throw new $TypeError(E);
16441 }
16442 if(!%IsInitializedIntlObjectOfType(this,'breakiterator')){
16443 throw new $TypeError('resolvedOptions method called on a non-object or '+
16444 'on a object that is not Intl.v8BreakIterator.');
16445 }
16446 var bQ=this;
16447 var Z=getOptimalLanguageTag(bQ.resolved.requestedLocale,
16448 bQ.resolved.locale);
16449 return{
16450 locale:Z,
16451 type:bQ.resolved.type
16452 };
16453 },
16454 2
16455 );
16456 %FunctionSetName(h.v8BreakIterator.prototype.resolvedOptions,
16457 'resolvedOptions');
16458 %FunctionRemovePrototype(h.v8BreakIterator.prototype.resolvedOptions);
16459 %SetNativeFlag(h.v8BreakIterator.prototype.resolvedOptions);
16460 %AddNamedProperty(h.v8BreakIterator,'supportedLocalesOf',
16461 function(R){
16462 if(%_IsConstructCall()){
16463 throw new $TypeError(E);
16464 }
16465 return supportedLocalesOf('breakiterator',R,%_Arguments(1));
16466 },
16467 2
16468 );
16469 %FunctionSetName(h.v8BreakIterator.supportedLocalesOf,'supportedLocalesOf');
16470 %FunctionRemovePrototype(h.v8BreakIterator.supportedLocalesOf);
16471 %SetNativeFlag(h.v8BreakIterator.supportedLocalesOf);
16472 function adoptText(bO,bR){
16473 %BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(bO),
16474 e(bR));
16475 }
16476 function first(bO){
16477 return %BreakIteratorFirst(%GetImplFromInitializedIntlObject(bO));
16478 }
16479 function next(bO){
16480 return %BreakIteratorNext(%GetImplFromInitializedIntlObject(bO));
16481 }
16482 function current(bO){
16483 return %BreakIteratorCurrent(%GetImplFromInitializedIntlObject(bO));
16484 }
16485 function breakType(bO){
16486 return %BreakIteratorBreakType(%GetImplFromInitializedIntlObject(bO));
16487 }
16488 addBoundMethod(h.v8BreakIterator,'adoptText',adoptText,1);
16489 addBoundMethod(h.v8BreakIterator,'first',first,0);
16490 addBoundMethod(h.v8BreakIterator,'next',next,0);
16491 addBoundMethod(h.v8BreakIterator,'current',current,0);
16492 addBoundMethod(h.v8BreakIterator,'breakType',breakType,0);
16493 var bS={
16494 'collator':h.Collator,
16495 'numberformat':h.NumberFormat,
16496 'dateformatall':h.DateTimeFormat,
16497 'dateformatdate':h.DateTimeFormat,
16498 'dateformattime':h.DateTimeFormat
16499 };
16500 var bT={
16501 'collator':g,
16502 'numberformat':g,
16503 'dateformatall':g,
16504 'dateformatdate':g,
16505 'dateformattime':g,
16506 };
16507 function cachedOrNewService(Q,R,S,bE){
16508 var bU=(bE===g)?S:bE;
16509 if(R===g&&S===g){
16510 if(bT[Q]===g){
16511 bT[Q]=new bS[Q](R,bU);
16512 }
16513 return bT[Q];
16514 }
16515 return new bS[Q](R,bU);
16516 }
16517 OverrideFunction(e.prototype,'localeCompare',function(L){
16518 if(%_IsConstructCall()){
16519 throw new $TypeError(E);
16520 }
16521 if((this==null)){
16522 throw new $TypeError('Method invoked on undefined or null value.');
16523 }
16524 var R=%_Arguments(1);
16525 var S=%_Arguments(2);
16526 var bc=cachedOrNewService('collator',R,S);
16527 return compare(bc,this,L);
16528 }
16529 );
16530 OverrideFunction(e.prototype,'normalize',function(L){
16531 if(%_IsConstructCall()){
16532 throw new $TypeError(E);
16533 }
16534 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["String.prototype.normalize"]);
16535 var bV=e(%_Arguments(0)||'NFC');
16536 var bW=j.indexOf(bV);
16537 if(bW===-1){
16538 throw new $RangeError('The normalization form should be one of '
16539 +j.join(', ')+'.');
16540 }
16541 return %StringNormalize(this,bW);
16542 }
16543 );
16544 OverrideFunction(c.prototype,'toLocaleString',function(){
16545 if(%_IsConstructCall()){
16546 throw new $TypeError(E);
16547 }
16548 if(!(this instanceof c)&&typeof(this)!=='number'){
16549 throw new $TypeError('Method invoked on an object that is not Number.');
16550 }
16551 var R=%_Arguments(0);
16552 var S=%_Arguments(1);
16553 var bn=cachedOrNewService('numberformat',R,S);
16554 return formatNumber(bn,this);
16555 }
16556 );
16557 function toLocaleDateTime(bX,R,S,bD,bE,Q){
16558 if(!(bX instanceof b)){
16559 throw new $TypeError('Method invoked on an object that is not Date.');
16560 }
16561 if($isNaN(bX)){
16562 return'Invalid Date';
16563 }
16564 var bd=toDateTimeOptions(S,bD,bE);
16565 var bG=
16566 cachedOrNewService(Q,R,S,bd);
16567 return formatDate(bG,bX);
16568 }
16569 OverrideFunction(b.prototype,'toLocaleString',function(){
16570 if(%_IsConstructCall()){
16571 throw new $TypeError(E);
16572 }
16573 var R=%_Arguments(0);
16574 var S=%_Arguments(1);
16575 return toLocaleDateTime(
16576 this,R,S,'any','all','dateformatall');
16577 }
16578 );
16579 OverrideFunction(b.prototype,'toLocaleDateString',function(){
16580 if(%_IsConstructCall()){
16581 throw new $TypeError(E);
16582 }
16583 var R=%_Arguments(0);
16584 var S=%_Arguments(1);
16585 return toLocaleDateTime(
16586 this,R,S,'date','date','dateformatdate');
16587 }
16588 );
16589 OverrideFunction(b.prototype,'toLocaleTimeString',function(){
16590 if(%_IsConstructCall()){
16591 throw new $TypeError(E);
16592 }
16593 var R=%_Arguments(0);
16594 var S=%_Arguments(1);
16595 return toLocaleDateTime(
16596 this,R,S,'time','time','dateformattime');
16597 }
16598 );
16599 })();
16600
16601 \0$\14proxyé8
16602 var $proxyDelegateCallAndConstruct;
16603 var $proxyDerivedGetTrap;
16604 var $proxyDerivedHasTrap;
16605 var $proxyDerivedHasOwnTrap;
16606 var $proxyDerivedKeysTrap;
16607 var $proxyDerivedSetTrap;
16608 var $proxyEnumerate;
16609 (function(){
16610 "use strict";
16611 %CheckIsBootstrapping();
16612 var a=global.Function;
16613 var b=global.Object;
16614 function ProxyCreate(c,d){
16615 if(!(%_IsSpecObject(c)))
16616 throw MakeTypeError("handler_non_object",["create"])
16617 if((d===(void 0)))
16618 d=null
16619 else if(!((%_IsSpecObject(d))||(d===null)))
16620 throw MakeTypeError("proto_non_object",["create"])
16621 return %CreateJSProxy(c,d)
16622 }
16623 function ProxyCreateFunction(c,e,f){
16624 if(!(%_IsSpecObject(c)))
16625 throw MakeTypeError("handler_non_object",["create"])
16626 if(!(%_ClassOf(e)==='Function'))
16627 throw MakeTypeError("trap_function_expected",["createFunction","call"])
16628 if((f===(void 0))){
16629 f=DerivedConstructTrap(e)
16630 }else if((%_ClassOf(f)==='Function')){
16631 var g=f
16632 f=function(){
16633 return %Apply(g,(void 0),arguments,0,%_ArgumentsLength());
16634 }
16635 }else{
16636 throw MakeTypeError("trap_function_expected",
16637 ["createFunction","construct"])
16638 }
16639 return %CreateJSFunctionProxy(
16640 c,e,f,a.prototype)
16641 }
16642 function DerivedConstructTrap(e){
16643 return function(){
16644 var d=this.prototype
16645 if(!(%_IsSpecObject(d)))d=b.prototype
16646 var h={__proto__:d};
16647 var i=%Apply(e,h,arguments,0,%_ArgumentsLength());
16648 return(%_IsSpecObject(i))?i:h
16649 }
16650 }
16651 function DelegateCallAndConstruct(e,f){
16652 return function(){
16653 return %Apply(%_IsConstructCall()?f:e,
16654 this,arguments,0,%_ArgumentsLength())
16655 }
16656 }
16657 function DerivedGetTrap(j,k){
16658 var l=this.getPropertyDescriptor(k)
16659 if((l===(void 0))){return l}
16660 if('value'in l){
16661 return l.value
16662 }else{
16663 if((l.get===(void 0))){return l.get}
16664 return %_CallFunction(j,l.get)
16665 }
16666 }
16667 function DerivedSetTrap(j,k,m){
16668 var l=this.getOwnPropertyDescriptor(k)
16669 if(l){
16670 if('writable'in l){
16671 if(l.writable){
16672 l.value=m
16673 this.defineProperty(k,l)
16674 return true
16675 }else{
16676 return false
16677 }
16678 }else{
16679 if(l.set){
16680 %_CallFunction(j,m,l.set)
16681 return true
16682 }else{
16683 return false
16684 }
16685 }
16686 }
16687 l=this.getPropertyDescriptor(k)
16688 if(l){
16689 if('writable'in l){
16690 if(l.writable){
16691 }else{
16692 return false
16693 }
16694 }else{
16695 if(l.set){
16696 %_CallFunction(j,m,l.set)
16697 return true
16698 }else{
16699 return false
16700 }
16701 }
16702 }
16703 this.defineProperty(k,{
16704 value:m,
16705 writable:true,
16706 enumerable:true,
16707 configurable:true});
16708 return true;
16709 }
16710 function DerivedHasTrap(k){
16711 return!!this.getPropertyDescriptor(k)
16712 }
16713 function DerivedHasOwnTrap(k){
16714 return!!this.getOwnPropertyDescriptor(k)
16715 }
16716 function DerivedKeysTrap(){
16717 var n=this.getOwnPropertyNames()
16718 var o=[]
16719 for(var p=0,count=0;p<n.length;++p){
16720 var k=n[p]
16721 if((typeof(k)==='symbol'))continue
16722 var l=this.getOwnPropertyDescriptor(((typeof(%IS_VAR(k))==='string')?k:NonStringToString(k)))
16723 if(!(l===(void 0))&&l.enumerable){
16724 o[count++]=n[p]
16725 }
16726 }
16727 return o
16728 }
16729 function DerivedEnumerateTrap(){
16730 var n=this.getPropertyNames()
16731 var o=[]
16732 for(var p=0,count=0;p<n.length;++p){
16733 var k=n[p]
16734 if((typeof(k)==='symbol'))continue
16735 var l=this.getPropertyDescriptor(((typeof(%IS_VAR(k))==='string')?k:NonStringToString(k)))
16736 if(!(l===(void 0))){
16737 if(!l.configurable){
16738 throw MakeTypeError(28,
16739 this,k,"getPropertyDescriptor")
16740 }
16741 if(l.enumerable)o[count++]=n[p]
16742 }
16743 }
16744 return o
16745 }
16746 function ProxyEnumerate(q){
16747 var c=%GetHandler(q)
16748 if((c.enumerate===(void 0))){
16749 return %Apply(DerivedEnumerateTrap,c,[],0,0)
16750 }else{
16751 return ToNameArray(c.enumerate(),"enumerate",false)
16752 }
16753 }
16754 var r=new b();
16755 %AddNamedProperty(global,"Proxy",r,2);
16756 InstallFunctions(r,2,[
16757 "create",ProxyCreate,
16758 "createFunction",ProxyCreateFunction
16759 ])
16760 $proxyDelegateCallAndConstruct=DelegateCallAndConstruct;
16761 $proxyDerivedGetTrap=DerivedGetTrap;
16762 $proxyDerivedHasTrap=DerivedHasTrap;
16763 $proxyDerivedHasOwnTrap=DerivedHasOwnTrap;
16764 $proxyDerivedKeysTrap=DerivedKeysTrap;
16765 $proxyDerivedSetTrap=DerivedSetTrap;
16766 $proxyEnumerate=ProxyEnumerate;
16767 })();
16768
16769 $generator½\1d
16770 (function(){
16771 "use strict";
16772 %CheckIsBootstrapping();
16773 var a=global.Function;
16774 function GeneratorObjectNext(b){
16775 if(!(%_ClassOf(this)==='Generator')){
16776 throw MakeTypeError(8,
16777 '[Generator].prototype.next',this);
16778 }
16779 var c=%GeneratorGetContinuation(this);
16780 if(c>0){
16781 if((%_DebugIsActive()!=0))%DebugPrepareStepInIfStepping(this);
16782 try{
16783 return %_GeneratorNext(this,b);
16784 }catch(e){
16785 %GeneratorClose(this);
16786 throw e;
16787 }
16788 }else if(c==0){
16789 return{value:void 0,done:true};
16790 }else{
16791 throw MakeTypeError(6);
16792 }
16793 }
16794 function GeneratorObjectThrow(d){
16795 if(!(%_ClassOf(this)==='Generator')){
16796 throw MakeTypeError(8,
16797 '[Generator].prototype.throw',this);
16798 }
16799 var c=%GeneratorGetContinuation(this);
16800 if(c>0){
16801 try{
16802 return %_GeneratorThrow(this,d);
16803 }catch(e){
16804 %GeneratorClose(this);
16805 throw e;
16806 }
16807 }else if(c==0){
16808 throw d;
16809 }else{
16810 throw MakeTypeError(6);
16811 }
16812 }
16813 function GeneratorObjectIterator(){
16814 return this;
16815 }
16816 function GeneratorFunctionConstructor(e){
16817 var f=NewFunctionString(arguments,'function*');
16818 var g=%GlobalProxy(global);
16819 var h=%_CallFunction(g,%CompileString(f,true));
16820 %FunctionMarkNameShouldPrintAsAnonymous(h);
16821 return h;
16822 }
16823 %NeverOptimizeFunction(GeneratorObjectNext);
16824 %NeverOptimizeFunction(GeneratorObjectThrow);
16825 var i=GeneratorFunctionPrototype.prototype;
16826 InstallFunctions(i,
16827 2,
16828 ["next",GeneratorObjectNext,
16829 "throw",GeneratorObjectThrow]);
16830 %FunctionSetName(GeneratorObjectIterator,'[Symbol.iterator]');
16831 %AddNamedProperty(i,symbolIterator,
16832 GeneratorObjectIterator,2|4|1);
16833 %AddNamedProperty(i,"constructor",
16834 GeneratorFunctionPrototype,2|1);
16835 %AddNamedProperty(i,
16836 symbolToStringTag,"Generator",2|1);
16837 %InternalSetPrototype(GeneratorFunctionPrototype,a.prototype);
16838 %AddNamedProperty(GeneratorFunctionPrototype,
16839 symbolToStringTag,"GeneratorFunction",2|1);
16840 %AddNamedProperty(GeneratorFunctionPrototype,"constructor",
16841 GeneratorFunction,2|1);
16842 %InternalSetPrototype(GeneratorFunction,a);
16843 %SetCode(GeneratorFunction,GeneratorFunctionConstructor);
16844 })();
16845
16846 4harmony-arrayA2
16847 (function(){
16848 'use strict';
16849 %CheckIsBootstrapping();
16850 var a=global.Array;
16851 var b=global.Symbol;
16852 function ArrayFind(c){
16853 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.find"]);
16854 var d=ToObject(this);
16855 var e=ToInteger(d.length);
16856 if(!(%_ClassOf(c)==='Function')){
16857 throw MakeTypeError(2,c);
16858 }
16859 var f;
16860 if(%_ArgumentsLength()>1){
16861 f=%_Arguments(1);
16862 }
16863 var g=false;
16864 if((f==null)){
16865 f=%GetDefaultReceiver(c)||f;
16866 }else{
16867 g=(!(%_IsSpecObject(f))&&%IsSloppyModeFunction(c));
16868 }
16869 for(var h=0;h<e;h++){
16870 if(h in d){
16871 var i=d[h];
16872 var j=g?ToObject(f):f;
16873 if(%_CallFunction(j,i,h,d,c)){
16874 return i;
16875 }
16876 }
16877 }
16878 return;
16879 }
16880 function ArrayFindIndex(c){
16881 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.findIndex"]);
16882 var d=ToObject(this);
16883 var e=ToInteger(d.length);
16884 if(!(%_ClassOf(c)==='Function')){
16885 throw MakeTypeError(2,c);
16886 }
16887 var f;
16888 if(%_ArgumentsLength()>1){
16889 f=%_Arguments(1);
16890 }
16891 var g=false;
16892 if((f==null)){
16893 f=%GetDefaultReceiver(c)||f;
16894 }else{
16895 g=(!(%_IsSpecObject(f))&&%IsSloppyModeFunction(c));
16896 }
16897 for(var h=0;h<e;h++){
16898 if(h in d){
16899 var i=d[h];
16900 var j=g?ToObject(f):f;
16901 if(%_CallFunction(j,i,h,d,c)){
16902 return h;
16903 }
16904 }
16905 }
16906 return-1;
16907 }
16908 function ArrayFill(k){
16909 if((this==null)&&!(%_IsUndetectableObject(this)))throw MakeTypeError('called_on_null_or_undefined',["Array.prototype.fill"]);
16910 var d=ToObject(this);
16911 var e=(d.length>>>0);
16912 var h=0;
16913 var l=e;
16914 if(%_ArgumentsLength()>1){
16915 h=%_Arguments(1);
16916 h=(h===(void 0))?0:(%_IsSmi(%IS_VAR(h))?h:%NumberToInteger(ToNumber(h)));
16917 if(%_ArgumentsLength()>2){
16918 l=%_Arguments(2);
16919 l=(l===(void 0))?e:(%_IsSmi(%IS_VAR(l))?l:%NumberToInteger(ToNumber(l)));
16920 }
16921 }
16922 if(h<0){
16923 h+=e;
16924 if(h<0)h=0;
16925 }else{
16926 if(h>e)h=e;
16927 }
16928 if(l<0){
16929 l+=e;
16930 if(l<0)l=0;
16931 }else{
16932 if(l>e)l=e;
16933 }
16934 if((l-h)>0&&ObjectIsFrozen(d)){
16935 throw MakeTypeError("array_functions_on_frozen",
16936 ["Array.prototype.fill"]);
16937 }
16938 for(;h<l;h++)
16939 d[h]=k;
16940 return d;
16941 }
16942 function ArrayFrom(m,n,o){
16943 var p=ToObject(m);
16944 var q=!(n===(void 0));
16945 if(q){
16946 if(!(%_ClassOf(n)==='Function')){
16947 throw MakeTypeError(2,n);
16948 }else if((o==null)){
16949 o=%GetDefaultReceiver(n)||o;
16950 }else if(!(%_IsSpecObject(o))&&%IsSloppyModeFunction(n)){
16951 o=ToObject(o);
16952 }
16953 }
16954 var r=GetMethod(p,symbolIterator);
16955 var s;
16956 var t;
16957 var u;
16958 var v;
16959 if(!(r===(void 0))){
16960 t=%IsConstructor(this)?new this():[];
16961 var w=GetIterator(p,r);
16962 s=0;
16963 while(true){
16964 var x=w.next();
16965 if(!(%_IsObject(x))){
16966 throw MakeTypeError("iterator_result_not_an_object",[x]);
16967 }
16968 if(x.done){
16969 t.length=s;
16970 return t;
16971 }
16972 v=x.value;
16973 if(q){
16974 u=%_CallFunction(o,v,s,n);
16975 }else{
16976 u=v;
16977 }
16978 %AddElement(t,s++,u,0);
16979 }
16980 }else{
16981 var y=ToLength(p.length);
16982 t=%IsConstructor(this)?new this(y):new $Array(y);
16983 for(s=0;s<y;++s){
16984 v=p[s];
16985 if(q){
16986 u=%_CallFunction(o,v,s,n);
16987 }else{
16988 u=v;
16989 }
16990 %AddElement(t,s,u,0);
16991 }
16992 t.length=s;
16993 return t;
16994 }
16995 }
16996 function ArrayOf(){
16997 var e=%_ArgumentsLength();
16998 var z=this;
16999 var d=%IsConstructor(z)?new z(e):[];
17000 for(var h=0;h<e;h++){
17001 %AddElement(d,h,%_Arguments(h),0);
17002 }
17003 d.length=e;
17004 return d;
17005 }
17006 InstallConstants(b,[
17007 "isConcatSpreadable",symbolIsConcatSpreadable
17008 ]);
17009 %FunctionSetLength(ArrayFrom,1);
17010 InstallFunctions(a,2,[
17011 "from",ArrayFrom,
17012 "of",ArrayOf
17013 ]);
17014 InstallFunctions(a.prototype,2,[
17015 "find",ArrayFind,
17016 "findIndex",ArrayFindIndex,
17017 "fill",ArrayFill
17018 ]);
17019 })();
17020
17021 Xharmony-array-includesí\ 6
17022 (function(){
17023 'use strict';
17024 %CheckIsBootstrapping();
17025 var a=global.Array;
17026 function ArrayIncludes(b,c){
17027 var d=ToObject(this);
17028 var e=ToLength(d.length);
17029 if(e===0){
17030 return false;
17031 }
17032 var f=ToInteger(c);
17033 var g;
17034 if(f>=0){
17035 g=f;
17036 }else{
17037 g=e+f;
17038 if(g<0){
17039 g=0;
17040 }
17041 }
17042 while(g<e){
17043 var h=d[g];
17044 if(SameValueZero(b,h)){
17045 return true;
17046 }
17047 ++g;
17048 }
17049 return false;
17050 }
17051 %FunctionSetLength(ArrayIncludes,1);
17052 InstallFunctions(a.prototype,2,[
17053 "includes",ArrayIncludes
17054 ]);
17055 })();
17056
17057 @harmony-tostring)\ 2
17058 (function(){
17059 "use strict";
17060 %CheckIsBootstrapping();
17061 var a=global.Symbol;
17062 InstallConstants(a,[
17063 "toStringTag",symbolToStringTag
17064 ]);
17065 })();
17066
17067 Hharmony-typedarrayi~
17068 (function(){
17069 "use strict";
17070 %CheckIsBootstrapping();
17071 function Uint8ArrayForEach(a){
17072 if(!%IsTypedArray(this)){
17073 throw MakeTypeError('not_typed_array',[]);
17074 }
17075 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17076 var b=%_TypedArrayGetLength(this);
17077 var c;
17078 if(%_ArgumentsLength()>1){
17079 c=%_Arguments(1);
17080 }
17081 var d=false;
17082 if((c==null)){
17083 c=%GetDefaultReceiver(a)||c;
17084 }else{
17085 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17086 }
17087 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17088 for(var f=0;f<b;f++){
17089 var g=this[f];
17090 if(e)%DebugPrepareStepInIfStepping(a);
17091 var h=d?ToObject(c):c;
17092 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17093 }
17094 }
17095 function Uint8ArrayOf(){
17096 var b=%_ArgumentsLength();
17097 var i=new this(b);
17098 for(var f=0;f<b;f++){
17099 i[f]=%_Arguments(f);
17100 }
17101 return i;
17102 }
17103
17104 function Int8ArrayForEach(a){
17105 if(!%IsTypedArray(this)){
17106 throw MakeTypeError('not_typed_array',[]);
17107 }
17108 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17109 var b=%_TypedArrayGetLength(this);
17110 var c;
17111 if(%_ArgumentsLength()>1){
17112 c=%_Arguments(1);
17113 }
17114 var d=false;
17115 if((c==null)){
17116 c=%GetDefaultReceiver(a)||c;
17117 }else{
17118 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17119 }
17120 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17121 for(var f=0;f<b;f++){
17122 var g=this[f];
17123 if(e)%DebugPrepareStepInIfStepping(a);
17124 var h=d?ToObject(c):c;
17125 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17126 }
17127 }
17128 function Int8ArrayOf(){
17129 var b=%_ArgumentsLength();
17130 var i=new this(b);
17131 for(var f=0;f<b;f++){
17132 i[f]=%_Arguments(f);
17133 }
17134 return i;
17135 }
17136
17137 function Uint16ArrayForEach(a){
17138 if(!%IsTypedArray(this)){
17139 throw MakeTypeError('not_typed_array',[]);
17140 }
17141 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17142 var b=%_TypedArrayGetLength(this);
17143 var c;
17144 if(%_ArgumentsLength()>1){
17145 c=%_Arguments(1);
17146 }
17147 var d=false;
17148 if((c==null)){
17149 c=%GetDefaultReceiver(a)||c;
17150 }else{
17151 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17152 }
17153 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17154 for(var f=0;f<b;f++){
17155 var g=this[f];
17156 if(e)%DebugPrepareStepInIfStepping(a);
17157 var h=d?ToObject(c):c;
17158 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17159 }
17160 }
17161 function Uint16ArrayOf(){
17162 var b=%_ArgumentsLength();
17163 var i=new this(b);
17164 for(var f=0;f<b;f++){
17165 i[f]=%_Arguments(f);
17166 }
17167 return i;
17168 }
17169
17170 function Int16ArrayForEach(a){
17171 if(!%IsTypedArray(this)){
17172 throw MakeTypeError('not_typed_array',[]);
17173 }
17174 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17175 var b=%_TypedArrayGetLength(this);
17176 var c;
17177 if(%_ArgumentsLength()>1){
17178 c=%_Arguments(1);
17179 }
17180 var d=false;
17181 if((c==null)){
17182 c=%GetDefaultReceiver(a)||c;
17183 }else{
17184 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17185 }
17186 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17187 for(var f=0;f<b;f++){
17188 var g=this[f];
17189 if(e)%DebugPrepareStepInIfStepping(a);
17190 var h=d?ToObject(c):c;
17191 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17192 }
17193 }
17194 function Int16ArrayOf(){
17195 var b=%_ArgumentsLength();
17196 var i=new this(b);
17197 for(var f=0;f<b;f++){
17198 i[f]=%_Arguments(f);
17199 }
17200 return i;
17201 }
17202
17203 function Uint32ArrayForEach(a){
17204 if(!%IsTypedArray(this)){
17205 throw MakeTypeError('not_typed_array',[]);
17206 }
17207 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17208 var b=%_TypedArrayGetLength(this);
17209 var c;
17210 if(%_ArgumentsLength()>1){
17211 c=%_Arguments(1);
17212 }
17213 var d=false;
17214 if((c==null)){
17215 c=%GetDefaultReceiver(a)||c;
17216 }else{
17217 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17218 }
17219 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17220 for(var f=0;f<b;f++){
17221 var g=this[f];
17222 if(e)%DebugPrepareStepInIfStepping(a);
17223 var h=d?ToObject(c):c;
17224 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17225 }
17226 }
17227 function Uint32ArrayOf(){
17228 var b=%_ArgumentsLength();
17229 var i=new this(b);
17230 for(var f=0;f<b;f++){
17231 i[f]=%_Arguments(f);
17232 }
17233 return i;
17234 }
17235
17236 function Int32ArrayForEach(a){
17237 if(!%IsTypedArray(this)){
17238 throw MakeTypeError('not_typed_array',[]);
17239 }
17240 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17241 var b=%_TypedArrayGetLength(this);
17242 var c;
17243 if(%_ArgumentsLength()>1){
17244 c=%_Arguments(1);
17245 }
17246 var d=false;
17247 if((c==null)){
17248 c=%GetDefaultReceiver(a)||c;
17249 }else{
17250 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17251 }
17252 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17253 for(var f=0;f<b;f++){
17254 var g=this[f];
17255 if(e)%DebugPrepareStepInIfStepping(a);
17256 var h=d?ToObject(c):c;
17257 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17258 }
17259 }
17260 function Int32ArrayOf(){
17261 var b=%_ArgumentsLength();
17262 var i=new this(b);
17263 for(var f=0;f<b;f++){
17264 i[f]=%_Arguments(f);
17265 }
17266 return i;
17267 }
17268
17269 function Float32ArrayForEach(a){
17270 if(!%IsTypedArray(this)){
17271 throw MakeTypeError('not_typed_array',[]);
17272 }
17273 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17274 var b=%_TypedArrayGetLength(this);
17275 var c;
17276 if(%_ArgumentsLength()>1){
17277 c=%_Arguments(1);
17278 }
17279 var d=false;
17280 if((c==null)){
17281 c=%GetDefaultReceiver(a)||c;
17282 }else{
17283 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17284 }
17285 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17286 for(var f=0;f<b;f++){
17287 var g=this[f];
17288 if(e)%DebugPrepareStepInIfStepping(a);
17289 var h=d?ToObject(c):c;
17290 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17291 }
17292 }
17293 function Float32ArrayOf(){
17294 var b=%_ArgumentsLength();
17295 var i=new this(b);
17296 for(var f=0;f<b;f++){
17297 i[f]=%_Arguments(f);
17298 }
17299 return i;
17300 }
17301
17302 function Float64ArrayForEach(a){
17303 if(!%IsTypedArray(this)){
17304 throw MakeTypeError('not_typed_array',[]);
17305 }
17306 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17307 var b=%_TypedArrayGetLength(this);
17308 var c;
17309 if(%_ArgumentsLength()>1){
17310 c=%_Arguments(1);
17311 }
17312 var d=false;
17313 if((c==null)){
17314 c=%GetDefaultReceiver(a)||c;
17315 }else{
17316 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17317 }
17318 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17319 for(var f=0;f<b;f++){
17320 var g=this[f];
17321 if(e)%DebugPrepareStepInIfStepping(a);
17322 var h=d?ToObject(c):c;
17323 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17324 }
17325 }
17326 function Float64ArrayOf(){
17327 var b=%_ArgumentsLength();
17328 var i=new this(b);
17329 for(var f=0;f<b;f++){
17330 i[f]=%_Arguments(f);
17331 }
17332 return i;
17333 }
17334
17335 function Uint8ClampedArrayForEach(a){
17336 if(!%IsTypedArray(this)){
17337 throw MakeTypeError('not_typed_array',[]);
17338 }
17339 if(!(%_ClassOf(a)==='Function'))throw MakeTypeError(2,a);
17340 var b=%_TypedArrayGetLength(this);
17341 var c;
17342 if(%_ArgumentsLength()>1){
17343 c=%_Arguments(1);
17344 }
17345 var d=false;
17346 if((c==null)){
17347 c=%GetDefaultReceiver(a)||c;
17348 }else{
17349 d=(!(%_IsSpecObject(c))&&%IsSloppyModeFunction(a));
17350 }
17351 var e=(%_DebugIsActive()!=0)&&%DebugCallbackSupportsStepping(a);
17352 for(var f=0;f<b;f++){
17353 var g=this[f];
17354 if(e)%DebugPrepareStepInIfStepping(a);
17355 var h=d?ToObject(c):c;
17356 %_CallFunction(h,((%_IsSpecObject(%IS_VAR(g)))?g:ToObject(g)),f,this,a);
17357 }
17358 }
17359 function Uint8ClampedArrayOf(){
17360 var b=%_ArgumentsLength();
17361 var i=new this(b);
17362 for(var f=0;f<b;f++){
17363 i[f]=%_Arguments(f);
17364 }
17365 return i;
17366 }
17367
17368
17369 InstallFunctions(global.Uint8Array,2|4|1,[
17370 "of",Uint8ArrayOf
17371 ]);
17372 InstallFunctions(global.Uint8Array.prototype,2,[
17373 "forEach",Uint8ArrayForEach
17374 ]);
17375
17376 InstallFunctions(global.Int8Array,2|4|1,[
17377 "of",Int8ArrayOf
17378 ]);
17379 InstallFunctions(global.Int8Array.prototype,2,[
17380 "forEach",Int8ArrayForEach
17381 ]);
17382
17383 InstallFunctions(global.Uint16Array,2|4|1,[
17384 "of",Uint16ArrayOf
17385 ]);
17386 InstallFunctions(global.Uint16Array.prototype,2,[
17387 "forEach",Uint16ArrayForEach
17388 ]);
17389
17390 InstallFunctions(global.Int16Array,2|4|1,[
17391 "of",Int16ArrayOf
17392 ]);
17393 InstallFunctions(global.Int16Array.prototype,2,[
17394 "forEach",Int16ArrayForEach
17395 ]);
17396
17397 InstallFunctions(global.Uint32Array,2|4|1,[
17398 "of",Uint32ArrayOf
17399 ]);
17400 InstallFunctions(global.Uint32Array.prototype,2,[
17401 "forEach",Uint32ArrayForEach
17402 ]);
17403
17404 InstallFunctions(global.Int32Array,2|4|1,[
17405 "of",Int32ArrayOf
17406 ]);
17407 InstallFunctions(global.Int32Array.prototype,2,[
17408 "forEach",Int32ArrayForEach
17409 ]);
17410
17411 InstallFunctions(global.Float32Array,2|4|1,[
17412 "of",Float32ArrayOf
17413 ]);
17414 InstallFunctions(global.Float32Array.prototype,2,[
17415 "forEach",Float32ArrayForEach
17416 ]);
17417
17418 InstallFunctions(global.Float64Array,2|4|1,[
17419 "of",Float64ArrayOf
17420 ]);
17421 InstallFunctions(global.Float64Array.prototype,2,[
17422 "forEach",Float64ArrayForEach
17423 ]);
17424
17425 InstallFunctions(global.Uint8ClampedArray,2|4|1,[
17426 "of",Uint8ClampedArrayOf
17427 ]);
17428 InstallFunctions(global.Uint8ClampedArray.prototype,2,[
17429 "forEach",Uint8ClampedArrayForEach
17430 ]);
17431
17432
17433 })();
17434
17435 8harmony-regexp5\a
17436 (function(){
17437 'use strict';
17438 %CheckIsBootstrapping();
17439 var a=global.RegExp;
17440 function RegExpGetFlags(){
17441 if(!(%_IsSpecObject(this))){
17442 throw MakeTypeError('flags_getter_non_object',
17443 [%ToString(this)]);
17444 }
17445 var b='';
17446 if(this.global)b+='g';
17447 if(this.ignoreCase)b+='i';
17448 if(this.multiline)b+='m';
17449 if(this.unicode)b+='u';
17450 if(this.sticky)b+='y';
17451 return b;
17452 }
17453 %DefineAccessorPropertyUnchecked(a.prototype,'flags',
17454 RegExpGetFlags,null,2);
17455 %SetNativeFlag(RegExpGetFlags);
17456 })();
17457
17458 <harmony-reflect\89\ 2
17459 (function(){
17460 'use strict';
17461 %CheckIsBootstrapping();
17462 var a=global.Reflect;
17463 InstallFunctions(a,2,[
17464 "apply",$reflectApply,
17465 "construct",$reflectConstruct
17466 ]);
17467 })();
17468
17469 8harmony-spread}\a
17470 var $spreadArguments;
17471 var $spreadIterable;
17472 (function(){
17473 'use strict';
17474 function SpreadArguments(){
17475 var a=%_ArgumentsLength();
17476 var b=new InternalArray();
17477 for(var c=0;c<a;++c){
17478 var d=%_Arguments(c);
17479 var e=d.length;
17480 for(var f=0;f<e;++f){
17481 b.push(d[f]);
17482 }
17483 }
17484 return b;
17485 }
17486 function SpreadIterable(g){
17487 if((g==null)){
17488 throw MakeTypeError(15,g);
17489 }
17490 var b=new InternalArray();
17491 for(var h of g){
17492 b.push(h);
17493 }
17494 return b;
17495 }
17496 $spreadArguments=SpreadArguments;
17497 $spreadIterable=SpreadIterable;
17498 })();
17499